docxmlater 10.1.4 → 10.1.6

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.
Files changed (372) hide show
  1. package/README.md +759 -754
  2. package/dist/constants/legacyCompatFlags.js +1 -1
  3. package/dist/constants/legacyCompatFlags.js.map +1 -1
  4. package/dist/constants/limits.js.map +1 -1
  5. package/dist/core/Document.d.ts +51 -50
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +486 -471
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +9 -9
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +1 -1
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentGenerator.d.ts +11 -11
  14. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  15. package/dist/core/DocumentGenerator.js +251 -251
  16. package/dist/core/DocumentGenerator.js.map +1 -1
  17. package/dist/core/DocumentIdManager.js.map +1 -1
  18. package/dist/core/DocumentParser.d.ts +15 -15
  19. package/dist/core/DocumentParser.d.ts.map +1 -1
  20. package/dist/core/DocumentParser.js +2123 -2155
  21. package/dist/core/DocumentParser.js.map +1 -1
  22. package/dist/core/DocumentValidator.d.ts.map +1 -1
  23. package/dist/core/DocumentValidator.js +2 -5
  24. package/dist/core/DocumentValidator.js.map +1 -1
  25. package/dist/core/Relationship.js.map +1 -1
  26. package/dist/core/RelationshipManager.d.ts.map +1 -1
  27. package/dist/core/RelationshipManager.js +3 -3
  28. package/dist/core/RelationshipManager.js.map +1 -1
  29. package/dist/elements/AlternateContent.js.map +1 -1
  30. package/dist/elements/Bookmark.d.ts.map +1 -1
  31. package/dist/elements/Bookmark.js +3 -1
  32. package/dist/elements/Bookmark.js.map +1 -1
  33. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  34. package/dist/elements/BookmarkManager.js.map +1 -1
  35. package/dist/elements/Comment.d.ts.map +1 -1
  36. package/dist/elements/Comment.js +9 -6
  37. package/dist/elements/Comment.js.map +1 -1
  38. package/dist/elements/CommentManager.d.ts.map +1 -1
  39. package/dist/elements/CommentManager.js +18 -17
  40. package/dist/elements/CommentManager.js.map +1 -1
  41. package/dist/elements/CommonTypes.d.ts +21 -21
  42. package/dist/elements/CommonTypes.d.ts.map +1 -1
  43. package/dist/elements/CommonTypes.js +56 -56
  44. package/dist/elements/CommonTypes.js.map +1 -1
  45. package/dist/elements/CustomXml.js.map +1 -1
  46. package/dist/elements/Endnote.d.ts.map +1 -1
  47. package/dist/elements/Endnote.js +6 -6
  48. package/dist/elements/Endnote.js.map +1 -1
  49. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  50. package/dist/elements/EndnoteManager.js +6 -7
  51. package/dist/elements/EndnoteManager.js.map +1 -1
  52. package/dist/elements/Field.d.ts.map +1 -1
  53. package/dist/elements/Field.js +82 -25
  54. package/dist/elements/Field.js.map +1 -1
  55. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  56. package/dist/elements/FieldHelpers.js.map +1 -1
  57. package/dist/elements/FontManager.d.ts.map +1 -1
  58. package/dist/elements/FontManager.js +1 -1
  59. package/dist/elements/FontManager.js.map +1 -1
  60. package/dist/elements/Footer.js +2 -2
  61. package/dist/elements/Footer.js.map +1 -1
  62. package/dist/elements/Footnote.d.ts.map +1 -1
  63. package/dist/elements/Footnote.js +6 -6
  64. package/dist/elements/Footnote.js.map +1 -1
  65. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  66. package/dist/elements/FootnoteManager.js +6 -7
  67. package/dist/elements/FootnoteManager.js.map +1 -1
  68. package/dist/elements/Header.js +2 -2
  69. package/dist/elements/Header.js.map +1 -1
  70. package/dist/elements/HeaderFooterManager.js.map +1 -1
  71. package/dist/elements/Hyperlink.d.ts +5 -3
  72. package/dist/elements/Hyperlink.d.ts.map +1 -1
  73. package/dist/elements/Hyperlink.js +134 -76
  74. package/dist/elements/Hyperlink.js.map +1 -1
  75. package/dist/elements/Image.d.ts.map +1 -1
  76. package/dist/elements/Image.js +238 -106
  77. package/dist/elements/Image.js.map +1 -1
  78. package/dist/elements/ImageManager.d.ts.map +1 -1
  79. package/dist/elements/ImageManager.js +1 -1
  80. package/dist/elements/ImageManager.js.map +1 -1
  81. package/dist/elements/ImageRun.js +1 -1
  82. package/dist/elements/ImageRun.js.map +1 -1
  83. package/dist/elements/MathElement.js.map +1 -1
  84. package/dist/elements/Paragraph.d.ts +24 -24
  85. package/dist/elements/Paragraph.d.ts.map +1 -1
  86. package/dist/elements/Paragraph.js +181 -188
  87. package/dist/elements/Paragraph.js.map +1 -1
  88. package/dist/elements/PreservedElement.js.map +1 -1
  89. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  90. package/dist/elements/PropertyChangeTypes.js +6 -6
  91. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  92. package/dist/elements/RangeMarker.d.ts.map +1 -1
  93. package/dist/elements/RangeMarker.js.map +1 -1
  94. package/dist/elements/Revision.d.ts.map +1 -1
  95. package/dist/elements/Revision.js +4 -5
  96. package/dist/elements/Revision.js.map +1 -1
  97. package/dist/elements/RevisionContent.js.map +1 -1
  98. package/dist/elements/RevisionManager.d.ts.map +1 -1
  99. package/dist/elements/RevisionManager.js +40 -48
  100. package/dist/elements/RevisionManager.js.map +1 -1
  101. package/dist/elements/Run.d.ts +16 -16
  102. package/dist/elements/Run.d.ts.map +1 -1
  103. package/dist/elements/Run.js +256 -238
  104. package/dist/elements/Run.js.map +1 -1
  105. package/dist/elements/Section.d.ts.map +1 -1
  106. package/dist/elements/Section.js +36 -11
  107. package/dist/elements/Section.js.map +1 -1
  108. package/dist/elements/Shape.d.ts.map +1 -1
  109. package/dist/elements/Shape.js.map +1 -1
  110. package/dist/elements/StructuredDocumentTag.d.ts +6 -6
  111. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  112. package/dist/elements/StructuredDocumentTag.js +99 -104
  113. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  114. package/dist/elements/Table.d.ts +11 -11
  115. package/dist/elements/Table.d.ts.map +1 -1
  116. package/dist/elements/Table.js +102 -107
  117. package/dist/elements/Table.js.map +1 -1
  118. package/dist/elements/TableCell.d.ts +10 -10
  119. package/dist/elements/TableCell.d.ts.map +1 -1
  120. package/dist/elements/TableCell.js +105 -106
  121. package/dist/elements/TableCell.js.map +1 -1
  122. package/dist/elements/TableGridChange.d.ts.map +1 -1
  123. package/dist/elements/TableGridChange.js.map +1 -1
  124. package/dist/elements/TableOfContents.d.ts.map +1 -1
  125. package/dist/elements/TableOfContents.js +4 -4
  126. package/dist/elements/TableOfContents.js.map +1 -1
  127. package/dist/elements/TableOfContentsElement.js.map +1 -1
  128. package/dist/elements/TableRow.d.ts.map +1 -1
  129. package/dist/elements/TableRow.js +13 -6
  130. package/dist/elements/TableRow.js.map +1 -1
  131. package/dist/elements/TextBox.d.ts.map +1 -1
  132. package/dist/elements/TextBox.js +3 -5
  133. package/dist/elements/TextBox.js.map +1 -1
  134. package/dist/formatting/AbstractNumbering.d.ts +4 -4
  135. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  136. package/dist/formatting/AbstractNumbering.js +54 -49
  137. package/dist/formatting/AbstractNumbering.js.map +1 -1
  138. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  139. package/dist/formatting/NumberingInstance.js +1 -3
  140. package/dist/formatting/NumberingInstance.js.map +1 -1
  141. package/dist/formatting/NumberingLevel.d.ts +5 -5
  142. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  143. package/dist/formatting/NumberingLevel.js +119 -125
  144. package/dist/formatting/NumberingLevel.js.map +1 -1
  145. package/dist/formatting/NumberingManager.d.ts +1 -0
  146. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  147. package/dist/formatting/NumberingManager.js +27 -9
  148. package/dist/formatting/NumberingManager.js.map +1 -1
  149. package/dist/formatting/Style.d.ts +11 -11
  150. package/dist/formatting/Style.d.ts.map +1 -1
  151. package/dist/formatting/Style.js +219 -247
  152. package/dist/formatting/Style.js.map +1 -1
  153. package/dist/formatting/StylesManager.d.ts +2 -2
  154. package/dist/formatting/StylesManager.d.ts.map +1 -1
  155. package/dist/formatting/StylesManager.js +96 -102
  156. package/dist/formatting/StylesManager.js.map +1 -1
  157. package/dist/helpers/CleanupHelper.d.ts +1 -1
  158. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  159. package/dist/helpers/CleanupHelper.js +6 -6
  160. package/dist/helpers/CleanupHelper.js.map +1 -1
  161. package/dist/images/ImageOptimizer.js +7 -7
  162. package/dist/images/ImageOptimizer.js.map +1 -1
  163. package/dist/index.d.ts +9 -9
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js.map +1 -1
  166. package/dist/managers/DrawingManager.js.map +1 -1
  167. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  168. package/dist/tracking/DocumentTrackingContext.js +23 -7
  169. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  170. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  171. package/dist/tracking/TrackingContext.js.map +1 -1
  172. package/dist/types/compatibility-types.js.map +1 -1
  173. package/dist/types/formatting.js.map +1 -1
  174. package/dist/types/list-types.d.ts +6 -6
  175. package/dist/types/list-types.js.map +1 -1
  176. package/dist/types/settings-types.js.map +1 -1
  177. package/dist/types/styleConfig.d.ts +2 -2
  178. package/dist/types/styleConfig.js.map +1 -1
  179. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  180. package/dist/utils/ChangelogGenerator.js +97 -101
  181. package/dist/utils/ChangelogGenerator.js.map +1 -1
  182. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  183. package/dist/utils/CompatibilityUpgrader.js +1 -1
  184. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  185. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  186. package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
  187. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  188. package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
  189. package/dist/utils/MoveOperationHelper.js +1 -1
  190. package/dist/utils/MoveOperationHelper.js.map +1 -1
  191. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
  192. package/dist/utils/RevisionAwareProcessor.js +2 -4
  193. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  194. package/dist/utils/RevisionWalker.d.ts.map +1 -1
  195. package/dist/utils/RevisionWalker.js +4 -12
  196. package/dist/utils/RevisionWalker.js.map +1 -1
  197. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  198. package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
  199. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  200. package/dist/utils/ShadingResolver.d.ts.map +1 -1
  201. package/dist/utils/ShadingResolver.js +1 -1
  202. package/dist/utils/ShadingResolver.js.map +1 -1
  203. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  204. package/dist/utils/acceptRevisions.js +23 -12
  205. package/dist/utils/acceptRevisions.js.map +1 -1
  206. package/dist/utils/cnfStyleDecoder.d.ts +1 -1
  207. package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
  208. package/dist/utils/cnfStyleDecoder.js +40 -40
  209. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  210. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  211. package/dist/utils/corruptionDetection.js.map +1 -1
  212. package/dist/utils/dateFormatting.js.map +1 -1
  213. package/dist/utils/deepClone.js +1 -1
  214. package/dist/utils/deepClone.js.map +1 -1
  215. package/dist/utils/diagnostics.d.ts.map +1 -1
  216. package/dist/utils/diagnostics.js +1 -1
  217. package/dist/utils/diagnostics.js.map +1 -1
  218. package/dist/utils/errorHandling.js.map +1 -1
  219. package/dist/utils/formatting.d.ts.map +1 -1
  220. package/dist/utils/formatting.js +10 -2
  221. package/dist/utils/formatting.js.map +1 -1
  222. package/dist/utils/list-detection.d.ts +2 -2
  223. package/dist/utils/list-detection.d.ts.map +1 -1
  224. package/dist/utils/list-detection.js +21 -23
  225. package/dist/utils/list-detection.js.map +1 -1
  226. package/dist/utils/logger.d.ts.map +1 -1
  227. package/dist/utils/logger.js +12 -7
  228. package/dist/utils/logger.js.map +1 -1
  229. package/dist/utils/parsingHelpers.js.map +1 -1
  230. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  231. package/dist/utils/stripTrackedChanges.js +3 -3
  232. package/dist/utils/stripTrackedChanges.js.map +1 -1
  233. package/dist/utils/textDiff.d.ts +1 -1
  234. package/dist/utils/textDiff.js +8 -8
  235. package/dist/utils/textDiff.js.map +1 -1
  236. package/dist/utils/units.js.map +1 -1
  237. package/dist/utils/validation.d.ts.map +1 -1
  238. package/dist/utils/validation.js +24 -7
  239. package/dist/utils/validation.js.map +1 -1
  240. package/dist/utils/xmlSanitization.d.ts.map +1 -1
  241. package/dist/utils/xmlSanitization.js +3 -3
  242. package/dist/utils/xmlSanitization.js.map +1 -1
  243. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  244. package/dist/validation/RevisionAutoFixer.js +5 -5
  245. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  246. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  247. package/dist/validation/RevisionValidator.js +7 -9
  248. package/dist/validation/RevisionValidator.js.map +1 -1
  249. package/dist/validation/ValidationRules.js +3 -3
  250. package/dist/validation/ValidationRules.js.map +1 -1
  251. package/dist/validation/index.js.map +1 -1
  252. package/dist/xml/XMLBuilder.d.ts +1 -1
  253. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  254. package/dist/xml/XMLBuilder.js +98 -100
  255. package/dist/xml/XMLBuilder.js.map +1 -1
  256. package/dist/xml/XMLParser.d.ts.map +1 -1
  257. package/dist/xml/XMLParser.js +61 -66
  258. package/dist/xml/XMLParser.js.map +1 -1
  259. package/dist/zip/ZipHandler.d.ts.map +1 -1
  260. package/dist/zip/ZipHandler.js.map +1 -1
  261. package/dist/zip/ZipReader.d.ts.map +1 -1
  262. package/dist/zip/ZipReader.js +1 -3
  263. package/dist/zip/ZipReader.js.map +1 -1
  264. package/dist/zip/ZipWriter.d.ts +1 -1
  265. package/dist/zip/ZipWriter.d.ts.map +1 -1
  266. package/dist/zip/ZipWriter.js +28 -36
  267. package/dist/zip/ZipWriter.js.map +1 -1
  268. package/dist/zip/types.js +1 -1
  269. package/dist/zip/types.js.map +1 -1
  270. package/package.json +92 -92
  271. package/src/__tests__/helper-methods.test.ts +512 -512
  272. package/src/constants/legacyCompatFlags.ts +138 -138
  273. package/src/constants/limits.ts +50 -50
  274. package/src/core/Document.ts +1010 -1145
  275. package/src/core/DocumentContent.ts +461 -467
  276. package/src/core/DocumentGenerator.ts +1133 -1104
  277. package/src/core/DocumentIdManager.ts +158 -158
  278. package/src/core/DocumentParser.ts +2347 -2716
  279. package/src/core/DocumentValidator.ts +363 -372
  280. package/src/core/Relationship.ts +367 -367
  281. package/src/core/RelationshipManager.ts +429 -428
  282. package/src/elements/AlternateContent.ts +42 -42
  283. package/src/elements/Bookmark.ts +212 -210
  284. package/src/elements/BookmarkManager.ts +247 -250
  285. package/src/elements/Comment.ts +356 -359
  286. package/src/elements/CommentManager.ts +499 -502
  287. package/src/elements/CommonTypes.ts +524 -549
  288. package/src/elements/CustomXml.ts +36 -36
  289. package/src/elements/Endnote.ts +221 -217
  290. package/src/elements/EndnoteManager.ts +246 -249
  291. package/src/elements/Field.ts +1292 -1233
  292. package/src/elements/FieldHelpers.ts +329 -333
  293. package/src/elements/FontManager.ts +336 -339
  294. package/src/elements/Footer.ts +269 -269
  295. package/src/elements/Footnote.ts +221 -217
  296. package/src/elements/FootnoteManager.ts +246 -249
  297. package/src/elements/Header.ts +269 -269
  298. package/src/elements/HeaderFooterManager.ts +219 -219
  299. package/src/elements/Hyperlink.ts +1288 -1193
  300. package/src/elements/Image.ts +1982 -1756
  301. package/src/elements/ImageManager.ts +437 -432
  302. package/src/elements/ImageRun.ts +59 -59
  303. package/src/elements/MathElement.ts +65 -65
  304. package/src/elements/Paragraph.ts +4347 -4287
  305. package/src/elements/PreservedElement.ts +53 -53
  306. package/src/elements/PropertyChangeTypes.ts +458 -442
  307. package/src/elements/RangeMarker.ts +382 -400
  308. package/src/elements/Revision.ts +1198 -1217
  309. package/src/elements/RevisionContent.ts +73 -73
  310. package/src/elements/RevisionManager.ts +1070 -1070
  311. package/src/elements/Run.ts +3103 -3073
  312. package/src/elements/Section.ts +1521 -1421
  313. package/src/elements/Shape.ts +884 -873
  314. package/src/elements/StructuredDocumentTag.ts +1176 -1207
  315. package/src/elements/Table.ts +2468 -2524
  316. package/src/elements/TableCell.ts +1617 -1621
  317. package/src/elements/TableGridChange.ts +149 -151
  318. package/src/elements/TableOfContents.ts +701 -691
  319. package/src/elements/TableOfContentsElement.ts +89 -89
  320. package/src/elements/TableRow.ts +960 -929
  321. package/src/elements/TextBox.ts +766 -768
  322. package/src/formatting/AbstractNumbering.ts +580 -579
  323. package/src/formatting/NumberingInstance.ts +295 -299
  324. package/src/formatting/NumberingLevel.ts +981 -1040
  325. package/src/formatting/NumberingManager.ts +875 -827
  326. package/src/formatting/Style.ts +1785 -1879
  327. package/src/formatting/StylesManager.ts +1090 -1130
  328. package/src/helpers/CleanupHelper.ts +524 -524
  329. package/src/images/ImageOptimizer.ts +274 -274
  330. package/src/index.ts +559 -554
  331. package/src/managers/DrawingManager.ts +319 -319
  332. package/src/tracking/DocumentTrackingContext.ts +687 -674
  333. package/src/tracking/TrackingContext.ts +175 -173
  334. package/src/types/compatibility-types.ts +49 -49
  335. package/src/types/formatting.ts +210 -210
  336. package/src/types/list-types.ts +14 -14
  337. package/src/types/settings-types.ts +59 -59
  338. package/src/types/styleConfig.ts +189 -189
  339. package/src/utils/ChangelogGenerator.ts +1583 -1581
  340. package/src/utils/CompatibilityUpgrader.ts +235 -237
  341. package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
  342. package/src/utils/MoveOperationHelper.ts +233 -238
  343. package/src/utils/RevisionAwareProcessor.ts +518 -526
  344. package/src/utils/RevisionWalker.ts +427 -457
  345. package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
  346. package/src/utils/ShadingResolver.ts +105 -107
  347. package/src/utils/acceptRevisions.ts +723 -714
  348. package/src/utils/cnfStyleDecoder.ts +212 -217
  349. package/src/utils/corruptionDetection.ts +346 -345
  350. package/src/utils/dateFormatting.ts +20 -20
  351. package/src/utils/deepClone.ts +77 -78
  352. package/src/utils/diagnostics.ts +125 -129
  353. package/src/utils/errorHandling.ts +80 -80
  354. package/src/utils/formatting.ts +220 -213
  355. package/src/utils/list-detection.ts +32 -42
  356. package/src/utils/logger.ts +412 -404
  357. package/src/utils/parsingHelpers.ts +190 -190
  358. package/src/utils/stripTrackedChanges.ts +356 -353
  359. package/src/utils/textDiff.ts +100 -100
  360. package/src/utils/units.ts +421 -421
  361. package/src/utils/validation.ts +553 -542
  362. package/src/utils/xmlSanitization.ts +179 -182
  363. package/src/validation/RevisionAutoFixer.ts +541 -542
  364. package/src/validation/RevisionValidator.ts +470 -460
  365. package/src/validation/ValidationRules.ts +338 -338
  366. package/src/validation/index.ts +30 -30
  367. package/src/xml/XMLBuilder.ts +857 -871
  368. package/src/xml/XMLParser.ts +877 -919
  369. package/src/zip/ZipHandler.ts +629 -637
  370. package/src/zip/ZipReader.ts +295 -299
  371. package/src/zip/ZipWriter.ts +374 -390
  372. package/src/zip/types.ts +116 -116
@@ -1 +1 @@
1
- {"version":3,"file":"Footnote.js","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":";;;AAOA,2CAAwC;AACxC,kDAA2D;AAK3D,IAAY,YASX;AATD,WAAY,YAAY;IAEtB,iCAAiB,CAAA;IAEjB,uCAAuB,CAAA;IAEvB,+DAA+C,CAAA;IAE/C,yDAAyC,CAAA;AAC3C,CAAC,EATW,YAAY,4BAAZ,YAAY,QASvB;AAiBD,MAAa,QAAQ;IACX,EAAE,CAAS;IACX,IAAI,CAAe;IACnB,UAAU,CAAU;IACpB,UAAU,GAAgB,EAAE,CAAC;IAMrC,YAAY,UAA8B;QACxC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAMD,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,YAAY,CAAC,SAAoB;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,eAAe,CAAC,IAAa;QAC3B,MAAM,IAAI,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAKD,KAAK;QACH,MAAM,KAAK,GAAwB;YACjC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAGlC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YAEzC,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;gBACzC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;aAC9D,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,qBAAqB,EAAE,CAAC;YAE5D,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE;gBACzC,uBAAU,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,uBAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;aAC1E,CAAC,CAAC,CAAC;QACN,CAAC;aAAM,CAAC;YAEN,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,uBAAU,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAQD,MAAM,CAAC,QAAQ,CAAC,EAAU,EAAE,IAAY;QACtC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,MAAM,CAAC,eAAe,CAAC,EAAU;QAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,EAAE;YACF,IAAI,EAAE,YAAY,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOD,MAAM,CAAC,2BAA2B,CAAC,EAAU;QAC3C,OAAO,IAAI,QAAQ,CAAC;YAClB,EAAE;YACF,IAAI,EAAE,YAAY,CAAC,qBAAqB;SACzC,CAAC,CAAC;IACL,CAAC;IAQD,MAAM,CAAC,wBAAwB,CAAC,EAAU,EAAE,IAAI,GAAG,cAAc;QAC/D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,EAAE;YACF,IAAI,EAAE,YAAY,CAAC,kBAAkB;SACtC,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAjLD,4BAiLC","sourcesContent":["/**\r\n * Footnote - Represents a footnote in a Word document\r\n *\r\n * Footnotes appear at the bottom of the page and are referenced\r\n * within the document text via footnote references.\r\n */\r\n\r\nimport { Paragraph } from './Paragraph';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Footnote type\r\n */\r\nexport enum FootnoteType {\r\n /** Normal footnote */\r\n Normal = 'normal',\r\n /** Separator between document text and footnotes */\r\n Separator = 'separator',\r\n /** Continuation separator for footnotes that continue to next page */\r\n ContinuationSeparator = 'continuationSeparator',\r\n /** Continuation notice at bottom of page when footnotes continue */\r\n ContinuationNotice = 'continuationNotice',\r\n}\r\n\r\n/**\r\n * Footnote properties\r\n */\r\nexport interface FootnoteProperties {\r\n /** Footnote ID (required, must be unique) */\r\n id: number;\r\n /** Type of footnote */\r\n type?: FootnoteType;\r\n /** Custom mark/symbol (optional, otherwise uses numbering) */\r\n customMark?: string;\r\n}\r\n\r\n/**\r\n * Represents a footnote in a document\r\n */\r\nexport class Footnote {\r\n private id: number;\r\n private type: FootnoteType;\r\n private customMark?: string;\r\n private paragraphs: Paragraph[] = [];\r\n\r\n /**\r\n * Creates a new footnote\r\n * @param properties Footnote properties\r\n */\r\n constructor(properties: FootnoteProperties) {\r\n this.id = properties.id;\r\n this.type = properties.type || FootnoteType.Normal;\r\n this.customMark = properties.customMark;\r\n }\r\n\r\n /**\r\n * Gets the footnote ID\r\n */\r\n getId(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * Gets the footnote type\r\n */\r\n getType(): FootnoteType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Gets the custom mark\r\n */\r\n getCustomMark(): string | undefined {\r\n return this.customMark;\r\n }\r\n\r\n /**\r\n * Sets the custom mark\r\n * @param mark Custom mark/symbol\r\n */\r\n setCustomMark(mark: string): this {\r\n this.customMark = mark;\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the footnote\r\n * @param paragraph Paragraph to add\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.paragraphs.push(paragraph);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph\r\n * @param text Optional text content\r\n * @returns The created paragraph\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.paragraphs.push(para);\r\n return para;\r\n }\r\n\r\n /**\r\n * Gets all paragraphs in the footnote\r\n */\r\n getParagraphs(): Paragraph[] {\r\n return [...this.paragraphs];\r\n }\r\n\r\n /**\r\n * Gets the text content of the footnote\r\n */\r\n getText(): string {\r\n return this.paragraphs.map(p => p.getText()).join('\\n');\r\n }\r\n\r\n /**\r\n * Generates the XML for this footnote\r\n */\r\n toXML(): XMLElement {\r\n const attrs: Record<string, any> = {\r\n 'w:id': this.id.toString(),\r\n };\r\n\r\n if (this.type !== FootnoteType.Normal) {\r\n attrs['w:type'] = this.type;\r\n }\r\n\r\n const children: XMLElement[] = [];\r\n\r\n // Separator types require specific child elements per ECMA-376\r\n if (this.type === FootnoteType.Separator) {\r\n // <w:p><w:r><w:separator/></w:r></w:p>\r\n children.push(XMLBuilder.w('p', undefined, [\r\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')])\r\n ]));\r\n } else if (this.type === FootnoteType.ContinuationSeparator) {\r\n // <w:p><w:r><w:continuationSeparator/></w:r></w:p>\r\n children.push(XMLBuilder.w('p', undefined, [\r\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')])\r\n ]));\r\n } else {\r\n // Add paragraphs\r\n for (const para of this.paragraphs) {\r\n children.push(para.toXML());\r\n }\r\n\r\n // If no paragraphs, add an empty one (required)\r\n if (children.length === 0) {\r\n children.push(XMLBuilder.w('p'));\r\n }\r\n }\r\n\r\n return XMLBuilder.w('footnote', attrs, children);\r\n }\r\n\r\n /**\r\n * Creates a footnote from text\r\n * @param id Footnote ID\r\n * @param text Text content\r\n * @returns New footnote instance\r\n */\r\n static fromText(id: number, text: string): Footnote {\r\n const footnote = new Footnote({ id });\r\n footnote.createParagraph(text);\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates a separator footnote\r\n * @param id Footnote ID\r\n * @returns New separator footnote\r\n */\r\n static createSeparator(id: number): Footnote {\r\n const footnote = new Footnote({\r\n id,\r\n type: FootnoteType.Separator\r\n });\r\n // Separator typically has a horizontal line\r\n footnote.createParagraph();\r\n // Add separator formatting if needed\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates a continuation separator footnote\r\n * @param id Footnote ID\r\n * @returns New continuation separator footnote\r\n */\r\n static createContinuationSeparator(id: number): Footnote {\r\n return new Footnote({\r\n id,\r\n type: FootnoteType.ContinuationSeparator\r\n });\r\n }\r\n\r\n /**\r\n * Creates a continuation notice footnote\r\n * @param id Footnote ID\r\n * @param text Notice text (e.g., \"Continued on next page...\")\r\n * @returns New continuation notice footnote\r\n */\r\n static createContinuationNotice(id: number, text = 'Continued...'): Footnote {\r\n const footnote = new Footnote({\r\n id,\r\n type: FootnoteType.ContinuationNotice\r\n });\r\n footnote.createParagraph(text);\r\n return footnote;\r\n }\r\n}"]}
1
+ {"version":3,"file":"Footnote.js","sourceRoot":"","sources":["../../src/elements/Footnote.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Footnote - Represents a footnote in a Word document\n *\n * Footnotes appear at the bottom of the page and are referenced\n * within the document text via footnote references.\n */\n\nimport { Paragraph } from './Paragraph';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Footnote type\n */\nexport enum FootnoteType {\n /** Normal footnote */\n Normal = 'normal',\n /** Separator between document text and footnotes */\n Separator = 'separator',\n /** Continuation separator for footnotes that continue to next page */\n ContinuationSeparator = 'continuationSeparator',\n /** Continuation notice at bottom of page when footnotes continue */\n ContinuationNotice = 'continuationNotice',\n}\n\n/**\n * Footnote properties\n */\nexport interface FootnoteProperties {\n /** Footnote ID (required, must be unique) */\n id: number;\n /** Type of footnote */\n type?: FootnoteType;\n /** Custom mark/symbol (optional, otherwise uses numbering) */\n customMark?: string;\n}\n\n/**\n * Represents a footnote in a document\n */\nexport class Footnote {\n private id: number;\n private type: FootnoteType;\n private customMark?: string;\n private paragraphs: Paragraph[] = [];\n\n /**\n * Creates a new footnote\n * @param properties Footnote properties\n */\n constructor(properties: FootnoteProperties) {\n this.id = properties.id;\n this.type = properties.type || FootnoteType.Normal;\n this.customMark = properties.customMark;\n }\n\n /**\n * Gets the footnote ID\n */\n getId(): number {\n return this.id;\n }\n\n /**\n * Gets the footnote type\n */\n getType(): FootnoteType {\n return this.type;\n }\n\n /**\n * Gets the custom mark\n */\n getCustomMark(): string | undefined {\n return this.customMark;\n }\n\n /**\n * Sets the custom mark\n * @param mark Custom mark/symbol\n */\n setCustomMark(mark: string): this {\n this.customMark = mark;\n return this;\n }\n\n /**\n * Adds a paragraph to the footnote\n * @param paragraph Paragraph to add\n */\n addParagraph(paragraph: Paragraph): this {\n this.paragraphs.push(paragraph);\n return this;\n }\n\n /**\n * Creates and adds a new paragraph\n * @param text Optional text content\n * @returns The created paragraph\n */\n createParagraph(text?: string): Paragraph {\n const para = new Paragraph();\n if (text) {\n para.addText(text);\n }\n this.paragraphs.push(para);\n return para;\n }\n\n /**\n * Gets all paragraphs in the footnote\n */\n getParagraphs(): Paragraph[] {\n return [...this.paragraphs];\n }\n\n /**\n * Gets the text content of the footnote\n */\n getText(): string {\n return this.paragraphs.map((p) => p.getText()).join('\\n');\n }\n\n /**\n * Generates the XML for this footnote\n */\n toXML(): XMLElement {\n const attrs: Record<string, any> = {\n 'w:id': this.id.toString(),\n };\n\n if (this.type !== FootnoteType.Normal) {\n attrs['w:type'] = this.type;\n }\n\n const children: XMLElement[] = [];\n\n // Separator types require specific child elements per ECMA-376\n if (this.type === FootnoteType.Separator) {\n // <w:p><w:r><w:separator/></w:r></w:p>\n children.push(\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')]),\n ])\n );\n } else if (this.type === FootnoteType.ContinuationSeparator) {\n // <w:p><w:r><w:continuationSeparator/></w:r></w:p>\n children.push(\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')]),\n ])\n );\n } else {\n // Add paragraphs\n for (const para of this.paragraphs) {\n children.push(para.toXML());\n }\n\n // If no paragraphs, add an empty one (required)\n if (children.length === 0) {\n children.push(XMLBuilder.w('p'));\n }\n }\n\n return XMLBuilder.w('footnote', attrs, children);\n }\n\n /**\n * Creates a footnote from text\n * @param id Footnote ID\n * @param text Text content\n * @returns New footnote instance\n */\n static fromText(id: number, text: string): Footnote {\n const footnote = new Footnote({ id });\n footnote.createParagraph(text);\n return footnote;\n }\n\n /**\n * Creates a separator footnote\n * @param id Footnote ID\n * @returns New separator footnote\n */\n static createSeparator(id: number): Footnote {\n const footnote = new Footnote({\n id,\n type: FootnoteType.Separator,\n });\n // Separator typically has a horizontal line\n footnote.createParagraph();\n // Add separator formatting if needed\n return footnote;\n }\n\n /**\n * Creates a continuation separator footnote\n * @param id Footnote ID\n * @returns New continuation separator footnote\n */\n static createContinuationSeparator(id: number): Footnote {\n return new Footnote({\n id,\n type: FootnoteType.ContinuationSeparator,\n });\n }\n\n /**\n * Creates a continuation notice footnote\n * @param id Footnote ID\n * @param text Notice text (e.g., \"Continued on next page...\")\n * @returns New continuation notice footnote\n */\n static createContinuationNotice(id: number, text = 'Continued...'): Footnote {\n const footnote = new Footnote({\n id,\n type: FootnoteType.ContinuationNotice,\n });\n footnote.createParagraph(text);\n return footnote;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FootnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAK;IAMnB,OAAO;IASP,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,iBAAiB;IAUzB,MAAM,CAAC,MAAM,IAAI,eAAe;IAShC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAuBtC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWtC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ7C,eAAe,IAAI,QAAQ,EAAE;IAS7B,0BAA0B,IAAI,QAAQ,EAAE;IASxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAWnC,SAAS,IAAI,MAAM;IAOnB,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,OAAO;IAQlB,KAAK,IAAI,IAAI;IAqBb,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAUD,oBAAoB,IAAI,MAAM;IA4B9B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAkBtC"}
1
+ {"version":3,"file":"FootnoteManager.d.ts","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAOpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAK;IAMnB,OAAO;IASP,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,iBAAiB;IAYzB,MAAM,CAAC,MAAM,IAAI,eAAe;IAShC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAuBtC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAWtC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ7C,eAAe,IAAI,QAAQ,EAAE;IAS7B,0BAA0B,IAAI,QAAQ,EAAE;IAQxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAWnC,SAAS,IAAI,MAAM;IAOnB,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,OAAO;IAQlB,KAAK,IAAI,IAAI;IAqBb,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAUD,oBAAoB,IAAI,MAAM;IAwB9B,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAkBtC"}
@@ -18,9 +18,9 @@ class FootnoteManager {
18
18
  }
19
19
  isSpecialFootnote(footnote) {
20
20
  const type = footnote.getType();
21
- return type === Footnote_1.FootnoteType.Separator ||
21
+ return (type === Footnote_1.FootnoteType.Separator ||
22
22
  type === Footnote_1.FootnoteType.ContinuationSeparator ||
23
- type === Footnote_1.FootnoteType.ContinuationNotice;
23
+ type === Footnote_1.FootnoteType.ContinuationNotice);
24
24
  }
25
25
  static create() {
26
26
  return new FootnoteManager();
@@ -46,12 +46,11 @@ class FootnoteManager {
46
46
  }
47
47
  getAllFootnotes() {
48
48
  return Array.from(this.footnotes.values())
49
- .filter(f => !this.isSpecialFootnote(f))
49
+ .filter((f) => !this.isSpecialFootnote(f))
50
50
  .sort((a, b) => a.getId() - b.getId());
51
51
  }
52
52
  getAllFootnotesWithSpecial() {
53
- return Array.from(this.footnotes.values())
54
- .sort((a, b) => a.getId() - b.getId());
53
+ return Array.from(this.footnotes.values()).sort((a, b) => a.getId() - b.getId());
55
54
  }
56
55
  hasFootnote(id) {
57
56
  return this.footnotes.has(id);
@@ -98,9 +97,9 @@ class FootnoteManager {
98
97
  name: 'w:footnotes',
99
98
  attributes: {
100
99
  'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
101
- 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
100
+ 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
102
101
  },
103
- children: footnotes.map(f => f.toXML())
102
+ children: footnotes.map((f) => f.toXML()),
104
103
  };
105
104
  const builder = new XMLBuilder_1.XMLBuilder();
106
105
  builder.element(footnotesElement.name, footnotesElement.attributes, footnotesElement.children);
@@ -1 +1 @@
1
- {"version":3,"file":"FootnoteManager.js","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * FootnoteManager - Manages footnotes in a document\r\n *\r\n * Handles creation, registration, and XML generation for footnotes.\r\n * Maintains unique IDs and proper ordering.\r\n */\r\n\r\nimport { Footnote, FootnoteType } from './Footnote';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\nimport { XMLParser } from '../xml/XMLParser';\r\n\r\n/**\r\n * Manages footnotes in a document\r\n */\r\nexport class FootnoteManager {\r\n private footnotes = new Map<number, Footnote>();\r\n private nextId = 1;\r\n\r\n /**\r\n * Creates a new FootnoteManager\r\n * @private Use static factory method\r\n */\r\n private constructor() {\r\n // Add special footnotes (separators) with negative IDs\r\n this.addSpecialFootnotes();\r\n }\r\n\r\n /**\r\n * Adds special footnotes (separator, continuation)\r\n * These use negative IDs as per OOXML specification\r\n */\r\n private addSpecialFootnotes(): void {\r\n // Separator footnote (ID -1)\r\n const separator = Footnote.createSeparator(-1);\r\n this.footnotes.set(-1, separator);\r\n\r\n // Continuation separator (ID 0)\r\n const continuationSep = Footnote.createContinuationSeparator(0);\r\n this.footnotes.set(0, continuationSep);\r\n }\r\n\r\n /**\r\n * Checks if a footnote is a special/system type (separator, continuationSeparator,\r\n * continuationNotice) that should be preserved across clear() operations.\r\n * Uses type-based detection rather than ID-based, because continuationNotice\r\n * has a positive ID (typically 1) but is still a system footnote.\r\n */\r\n private isSpecialFootnote(footnote: Footnote): boolean {\r\n const type = footnote.getType();\r\n return type === FootnoteType.Separator ||\r\n type === FootnoteType.ContinuationSeparator ||\r\n type === FootnoteType.ContinuationNotice;\r\n }\r\n\r\n /**\r\n * Creates a new FootnoteManager instance\r\n */\r\n static create(): FootnoteManager {\r\n return new FootnoteManager();\r\n }\r\n\r\n /**\r\n * Registers a footnote\r\n * @param footnote Footnote to register\r\n * @returns The registered footnote\r\n */\r\n register(footnote: Footnote): Footnote {\r\n const id = footnote.getId();\r\n\r\n // Ensure ID is not already used (except for special footnotes)\r\n if (id > 0 && this.footnotes.has(id)) {\r\n throw new Error(`Footnote with ID ${id} already exists`);\r\n }\r\n\r\n this.footnotes.set(id, footnote);\r\n\r\n // Update next ID if needed\r\n if (id >= this.nextId) {\r\n this.nextId = id + 1;\r\n }\r\n\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Creates and registers a new footnote\r\n * @param text Footnote text\r\n * @returns The created footnote\r\n */\r\n createFootnote(text: string): Footnote {\r\n const footnote = Footnote.fromText(this.nextId++, text);\r\n this.footnotes.set(footnote.getId(), footnote);\r\n return footnote;\r\n }\r\n\r\n /**\r\n * Gets a footnote by ID\r\n * @param id Footnote ID\r\n * @returns The footnote, or undefined if not found\r\n */\r\n getFootnote(id: number): Footnote | undefined {\r\n return this.footnotes.get(id);\r\n }\r\n\r\n /**\r\n * Gets all user footnotes (excluding special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n getAllFootnotes(): Footnote[] {\r\n return Array.from(this.footnotes.values())\r\n .filter(f => !this.isSpecialFootnote(f))\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Gets all footnotes including special ones\r\n */\r\n getAllFootnotesWithSpecial(): Footnote[] {\r\n return Array.from(this.footnotes.values())\r\n .sort((a, b) => a.getId() - b.getId());\r\n }\r\n\r\n /**\r\n * Checks if a footnote exists\r\n * @param id Footnote ID\r\n */\r\n hasFootnote(id: number): boolean {\r\n return this.footnotes.has(id);\r\n }\r\n\r\n /**\r\n * Removes a footnote\r\n * @param id Footnote ID\r\n * @returns True if removed, false if not found or if it's a special type\r\n */\r\n removeFootnote(id: number): boolean {\r\n const footnote = this.footnotes.get(id);\r\n if (!footnote || this.isSpecialFootnote(footnote)) {\r\n return false;\r\n }\r\n return this.footnotes.delete(id);\r\n }\r\n\r\n /**\r\n * Gets the next available ID\r\n */\r\n getNextId(): number {\r\n return this.nextId;\r\n }\r\n\r\n /**\r\n * Gets the count of footnotes (excluding special ones)\r\n */\r\n getCount(): number {\r\n return this.getAllFootnotes().length;\r\n }\r\n\r\n /**\r\n * Checks if there are any footnotes (excluding special ones)\r\n */\r\n isEmpty(): boolean {\r\n return this.getCount() === 0;\r\n }\r\n\r\n /**\r\n * Clears all user footnotes (preserves special system types: separator,\r\n * continuationSeparator, continuationNotice)\r\n */\r\n clear(): void {\r\n const specialFootnotes = new Map<number, Footnote>();\r\n let maxSpecialId = 0;\r\n\r\n for (const [id, footnote] of this.footnotes) {\r\n if (this.isSpecialFootnote(footnote)) {\r\n specialFootnotes.set(id, footnote);\r\n if (id > maxSpecialId) {\r\n maxSpecialId = id;\r\n }\r\n }\r\n }\r\n\r\n this.footnotes = specialFootnotes;\r\n // Ensure nextId doesn't collide with special footnotes that have positive IDs\r\n this.nextId = Math.max(maxSpecialId + 1, 1);\r\n }\r\n\r\n /**\r\n * Gets statistics about footnotes\r\n */\r\n getStats(): {\r\n total: number;\r\n nextId: number;\r\n } {\r\n return {\r\n total: this.getCount(),\r\n nextId: this.nextId,\r\n };\r\n }\r\n\r\n /**\r\n * Generates the footnotes.xml content\r\n */\r\n generateFootnotesXml(): string {\r\n const footnotes = this.getAllFootnotesWithSpecial();\r\n\r\n // Build footnotes element\r\n const footnotesElement: XMLElement = {\r\n name: 'w:footnotes',\r\n attributes: {\r\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\r\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\r\n },\r\n children: footnotes.map(f => f.toXML())\r\n };\r\n\r\n // Build XML using XMLBuilder\r\n const builder = new XMLBuilder();\r\n builder.element(\r\n footnotesElement.name,\r\n footnotesElement.attributes,\r\n footnotesElement.children\r\n );\r\n return builder.build(true);\r\n }\r\n\r\n /**\r\n * Validates footnotes XML\r\n * @param xml XML string to validate\r\n * @returns True if valid\r\n */\r\n static validate(xml: string): boolean {\r\n // Use XMLParser to extract root element\r\n if (!xml) {\r\n return false;\r\n }\r\n\r\n const footnotesContent = XMLParser.extractBetweenTags(xml, '<w:footnotes', '</w:footnotes>');\r\n if (!footnotesContent) {\r\n return false;\r\n }\r\n\r\n // Check for proper structure - namespace declaration\r\n if (!xml.includes('xmlns:w=')) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}"]}
1
+ {"version":3,"file":"FootnoteManager.js","sourceRoot":"","sources":["../../src/elements/FootnoteManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * FootnoteManager - Manages footnotes in a document\n *\n * Handles creation, registration, and XML generation for footnotes.\n * Maintains unique IDs and proper ordering.\n */\n\nimport { Footnote, FootnoteType } from './Footnote';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { XMLParser } from '../xml/XMLParser';\n\n/**\n * Manages footnotes in a document\n */\nexport class FootnoteManager {\n private footnotes = new Map<number, Footnote>();\n private nextId = 1;\n\n /**\n * Creates a new FootnoteManager\n * @private Use static factory method\n */\n private constructor() {\n // Add special footnotes (separators) with negative IDs\n this.addSpecialFootnotes();\n }\n\n /**\n * Adds special footnotes (separator, continuation)\n * These use negative IDs as per OOXML specification\n */\n private addSpecialFootnotes(): void {\n // Separator footnote (ID -1)\n const separator = Footnote.createSeparator(-1);\n this.footnotes.set(-1, separator);\n\n // Continuation separator (ID 0)\n const continuationSep = Footnote.createContinuationSeparator(0);\n this.footnotes.set(0, continuationSep);\n }\n\n /**\n * Checks if a footnote is a special/system type (separator, continuationSeparator,\n * continuationNotice) that should be preserved across clear() operations.\n * Uses type-based detection rather than ID-based, because continuationNotice\n * has a positive ID (typically 1) but is still a system footnote.\n */\n private isSpecialFootnote(footnote: Footnote): boolean {\n const type = footnote.getType();\n return (\n type === FootnoteType.Separator ||\n type === FootnoteType.ContinuationSeparator ||\n type === FootnoteType.ContinuationNotice\n );\n }\n\n /**\n * Creates a new FootnoteManager instance\n */\n static create(): FootnoteManager {\n return new FootnoteManager();\n }\n\n /**\n * Registers a footnote\n * @param footnote Footnote to register\n * @returns The registered footnote\n */\n register(footnote: Footnote): Footnote {\n const id = footnote.getId();\n\n // Ensure ID is not already used (except for special footnotes)\n if (id > 0 && this.footnotes.has(id)) {\n throw new Error(`Footnote with ID ${id} already exists`);\n }\n\n this.footnotes.set(id, footnote);\n\n // Update next ID if needed\n if (id >= this.nextId) {\n this.nextId = id + 1;\n }\n\n return footnote;\n }\n\n /**\n * Creates and registers a new footnote\n * @param text Footnote text\n * @returns The created footnote\n */\n createFootnote(text: string): Footnote {\n const footnote = Footnote.fromText(this.nextId++, text);\n this.footnotes.set(footnote.getId(), footnote);\n return footnote;\n }\n\n /**\n * Gets a footnote by ID\n * @param id Footnote ID\n * @returns The footnote, or undefined if not found\n */\n getFootnote(id: number): Footnote | undefined {\n return this.footnotes.get(id);\n }\n\n /**\n * Gets all user footnotes (excluding special system types: separator,\n * continuationSeparator, continuationNotice)\n */\n getAllFootnotes(): Footnote[] {\n return Array.from(this.footnotes.values())\n .filter((f) => !this.isSpecialFootnote(f))\n .sort((a, b) => a.getId() - b.getId());\n }\n\n /**\n * Gets all footnotes including special ones\n */\n getAllFootnotesWithSpecial(): Footnote[] {\n return Array.from(this.footnotes.values()).sort((a, b) => a.getId() - b.getId());\n }\n\n /**\n * Checks if a footnote exists\n * @param id Footnote ID\n */\n hasFootnote(id: number): boolean {\n return this.footnotes.has(id);\n }\n\n /**\n * Removes a footnote\n * @param id Footnote ID\n * @returns True if removed, false if not found or if it's a special type\n */\n removeFootnote(id: number): boolean {\n const footnote = this.footnotes.get(id);\n if (!footnote || this.isSpecialFootnote(footnote)) {\n return false;\n }\n return this.footnotes.delete(id);\n }\n\n /**\n * Gets the next available ID\n */\n getNextId(): number {\n return this.nextId;\n }\n\n /**\n * Gets the count of footnotes (excluding special ones)\n */\n getCount(): number {\n return this.getAllFootnotes().length;\n }\n\n /**\n * Checks if there are any footnotes (excluding special ones)\n */\n isEmpty(): boolean {\n return this.getCount() === 0;\n }\n\n /**\n * Clears all user footnotes (preserves special system types: separator,\n * continuationSeparator, continuationNotice)\n */\n clear(): void {\n const specialFootnotes = new Map<number, Footnote>();\n let maxSpecialId = 0;\n\n for (const [id, footnote] of this.footnotes) {\n if (this.isSpecialFootnote(footnote)) {\n specialFootnotes.set(id, footnote);\n if (id > maxSpecialId) {\n maxSpecialId = id;\n }\n }\n }\n\n this.footnotes = specialFootnotes;\n // Ensure nextId doesn't collide with special footnotes that have positive IDs\n this.nextId = Math.max(maxSpecialId + 1, 1);\n }\n\n /**\n * Gets statistics about footnotes\n */\n getStats(): {\n total: number;\n nextId: number;\n } {\n return {\n total: this.getCount(),\n nextId: this.nextId,\n };\n }\n\n /**\n * Generates the footnotes.xml content\n */\n generateFootnotesXml(): string {\n const footnotes = this.getAllFootnotesWithSpecial();\n\n // Build footnotes element\n const footnotesElement: XMLElement = {\n name: 'w:footnotes',\n attributes: {\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n },\n children: footnotes.map((f) => f.toXML()),\n };\n\n // Build XML using XMLBuilder\n const builder = new XMLBuilder();\n builder.element(footnotesElement.name, footnotesElement.attributes, footnotesElement.children);\n return builder.build(true);\n }\n\n /**\n * Validates footnotes XML\n * @param xml XML string to validate\n * @returns True if valid\n */\n static validate(xml: string): boolean {\n // Use XMLParser to extract root element\n if (!xml) {\n return false;\n }\n\n const footnotesContent = XMLParser.extractBetweenTags(xml, '<w:footnotes', '</w:footnotes>');\n if (!footnotesContent) {\n return false;\n }\n\n // Check for proper structure - namespace declaration\n if (!xml.includes('xmlns:w=')) {\n return false;\n }\n\n return true;\n }\n}\n"]}
@@ -64,7 +64,7 @@ class Header {
64
64
  if (this.rawXML) {
65
65
  return this.rawXML;
66
66
  }
67
- const elementXmls = this.elements.map(el => el.toXML());
67
+ const elementXmls = this.elements.map((el) => el.toXML());
68
68
  let xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
69
69
  xml += '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" ';
70
70
  xml += 'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\n';
@@ -98,7 +98,7 @@ class Header {
98
98
  }
99
99
  xml += '>';
100
100
  if (element.children && element.children.length > 0) {
101
- const hasOnlyText = element.children.every(c => typeof c === 'string');
101
+ const hasOnlyText = element.children.every((c) => typeof c === 'string');
102
102
  if (hasOnlyText) {
103
103
  xml += element.children.join('');
104
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/elements/Header.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Header - Represents a document header\r\n *\r\n * Headers appear at the top of pages and can contain text, tables, images, and fields.\r\n * Different headers can be defined for first page, odd pages, and even pages.\r\n */\r\n\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\nimport { Paragraph } from './Paragraph';\r\nimport { Table } from './Table';\r\n\r\n/**\r\n * Header type\r\n */\r\nexport type HeaderType = 'default' | 'first' | 'even';\r\n\r\n/**\r\n * Header content element\r\n */\r\ntype HeaderElement = Paragraph | Table;\r\n\r\n/**\r\n * Header properties\r\n */\r\nexport interface HeaderProperties {\r\n /** Header type (default, first page, or even page) */\r\n type?: HeaderType;\r\n}\r\n\r\n/**\r\n * Represents a document header\r\n */\r\nexport class Header {\r\n private elements: HeaderElement[] = [];\r\n private type: HeaderType;\r\n private headerId?: string;\r\n private rawXML?: string; // Store original XML for preservation\r\n\r\n /**\r\n * Creates a new header\r\n * @param properties Header properties\r\n */\r\n constructor(properties: HeaderProperties = {}) {\r\n this.type = properties.type || 'default';\r\n }\r\n\r\n /**\r\n * Sets the raw XML content (used when loading existing headers)\r\n * @param xml Raw XML content\r\n */\r\n setRawXML(xml: string): this {\r\n this.rawXML = xml;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the raw XML content if available\r\n */\r\n getRawXML(): string | undefined {\r\n return this.rawXML;\r\n }\r\n\r\n /**\r\n * Gets the header type\r\n */\r\n getType(): HeaderType {\r\n return this.type;\r\n }\r\n\r\n /**\r\n * Sets the header ID (used for relationships)\r\n * @param id Header ID\r\n */\r\n setHeaderId(id: string): this {\r\n this.headerId = id;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the header ID\r\n */\r\n getHeaderId(): string | undefined {\r\n return this.headerId;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the header\r\n * @param paragraph Paragraph to add\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.elements.push(paragraph);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph\r\n * @param text Optional text content\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.elements.push(para);\r\n return para;\r\n }\r\n\r\n /**\r\n * Adds a table to the header\r\n * @param table Table to add\r\n */\r\n addTable(table: Table): this {\r\n this.elements.push(table);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new table\r\n * @param rows Number of rows\r\n * @param columns Number of columns\r\n */\r\n createTable(rows: number, columns: number): Table {\r\n const table = new Table(rows, columns);\r\n this.elements.push(table);\r\n return table;\r\n }\r\n\r\n /**\r\n * Gets all elements in the header\r\n */\r\n getElements(): HeaderElement[] {\r\n return [...this.elements];\r\n }\r\n\r\n /**\r\n * Gets the number of elements\r\n */\r\n getElementCount(): number {\r\n return this.elements.length;\r\n }\r\n\r\n /**\r\n * Clears all elements and resets raw XML so toXML() regenerates an empty header\r\n */\r\n clear(): this {\r\n this.elements = [];\r\n this.rawXML = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Generates the complete header XML file content\r\n * This creates a complete header document (header1.xml, etc.)\r\n */\r\n toXML(): string {\r\n // If we have raw XML preserved from loading, use it\r\n if (this.rawXML) {\r\n return this.rawXML;\r\n }\r\n\r\n // Otherwise generate from elements\r\n const elementXmls = this.elements.map(el => el.toXML());\r\n\r\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\r\n xml += '<w:hdr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ';\r\n xml += 'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n';\r\n\r\n // Add elements\r\n for (const element of elementXmls) {\r\n xml += this.renderElement(element, 1);\r\n }\r\n\r\n // If no elements, add an empty paragraph\r\n if (this.elements.length === 0) {\r\n xml += ' <w:p/>\\n';\r\n }\r\n\r\n xml += '</w:hdr>';\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Renders an XML element to string with indentation\r\n */\r\n private renderElement(element: XMLElement, indent: number): string {\r\n const spaces = ' '.repeat(indent);\r\n let xml = '';\r\n\r\n if (element.selfClosing) {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '/>\\n';\r\n } else {\r\n xml += `${spaces}<${element.name}`;\r\n if (element.attributes) {\r\n for (const [key, value] of Object.entries(element.attributes)) {\r\n xml += ` ${key}=\"${value}\"`;\r\n }\r\n }\r\n xml += '>';\r\n\r\n if (element.children && element.children.length > 0) {\r\n const hasOnlyText = element.children.every(c => typeof c === 'string');\r\n\r\n if (hasOnlyText) {\r\n // Inline text content\r\n xml += element.children.join('');\r\n } else {\r\n // Block-level children\r\n xml += '\\n';\r\n for (const child of element.children) {\r\n if (typeof child === 'string') {\r\n xml += spaces + ' ' + child + '\\n';\r\n } else {\r\n xml += this.renderElement(child, indent + 1);\r\n }\r\n }\r\n xml += spaces;\r\n }\r\n }\r\n\r\n xml += `</${element.name}>\\n`;\r\n }\r\n\r\n return xml;\r\n }\r\n\r\n /**\r\n * Gets the filename for this header\r\n * @param number Header number (1, 2, 3, etc.)\r\n */\r\n getFilename(number: number): string {\r\n return `header${number}.xml`;\r\n }\r\n\r\n /**\r\n * Creates a default header\r\n */\r\n static createDefault(): Header {\r\n return new Header({ type: 'default' });\r\n }\r\n\r\n /**\r\n * Creates a first page header\r\n */\r\n static createFirst(): Header {\r\n return new Header({ type: 'first' });\r\n }\r\n\r\n /**\r\n * Creates an even page header\r\n */\r\n static createEven(): Header {\r\n return new Header({ type: 'even' });\r\n }\r\n\r\n /**\r\n * Creates a header with properties\r\n * @param properties Header properties\r\n */\r\n static create(properties?: HeaderProperties): Header {\r\n return new Header(properties);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/elements/Header.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Header - Represents a document header\n *\n * Headers appear at the top of pages and can contain text, tables, images, and fields.\n * Different headers can be defined for first page, odd pages, and even pages.\n */\n\nimport { XMLElement } from '../xml/XMLBuilder';\nimport { Paragraph } from './Paragraph';\nimport { Table } from './Table';\n\n/**\n * Header type\n */\nexport type HeaderType = 'default' | 'first' | 'even';\n\n/**\n * Header content element\n */\ntype HeaderElement = Paragraph | Table;\n\n/**\n * Header properties\n */\nexport interface HeaderProperties {\n /** Header type (default, first page, or even page) */\n type?: HeaderType;\n}\n\n/**\n * Represents a document header\n */\nexport class Header {\n private elements: HeaderElement[] = [];\n private type: HeaderType;\n private headerId?: string;\n private rawXML?: string; // Store original XML for preservation\n\n /**\n * Creates a new header\n * @param properties Header properties\n */\n constructor(properties: HeaderProperties = {}) {\n this.type = properties.type || 'default';\n }\n\n /**\n * Sets the raw XML content (used when loading existing headers)\n * @param xml Raw XML content\n */\n setRawXML(xml: string): this {\n this.rawXML = xml;\n return this;\n }\n\n /**\n * Gets the raw XML content if available\n */\n getRawXML(): string | undefined {\n return this.rawXML;\n }\n\n /**\n * Gets the header type\n */\n getType(): HeaderType {\n return this.type;\n }\n\n /**\n * Sets the header ID (used for relationships)\n * @param id Header ID\n */\n setHeaderId(id: string): this {\n this.headerId = id;\n return this;\n }\n\n /**\n * Gets the header ID\n */\n getHeaderId(): string | undefined {\n return this.headerId;\n }\n\n /**\n * Adds a paragraph to the header\n * @param paragraph Paragraph to add\n */\n addParagraph(paragraph: Paragraph): this {\n this.elements.push(paragraph);\n return this;\n }\n\n /**\n * Creates and adds a new paragraph\n * @param text Optional text content\n */\n createParagraph(text?: string): Paragraph {\n const para = new Paragraph();\n if (text) {\n para.addText(text);\n }\n this.elements.push(para);\n return para;\n }\n\n /**\n * Adds a table to the header\n * @param table Table to add\n */\n addTable(table: Table): this {\n this.elements.push(table);\n return this;\n }\n\n /**\n * Creates and adds a new table\n * @param rows Number of rows\n * @param columns Number of columns\n */\n createTable(rows: number, columns: number): Table {\n const table = new Table(rows, columns);\n this.elements.push(table);\n return table;\n }\n\n /**\n * Gets all elements in the header\n */\n getElements(): HeaderElement[] {\n return [...this.elements];\n }\n\n /**\n * Gets the number of elements\n */\n getElementCount(): number {\n return this.elements.length;\n }\n\n /**\n * Clears all elements and resets raw XML so toXML() regenerates an empty header\n */\n clear(): this {\n this.elements = [];\n this.rawXML = undefined;\n return this;\n }\n\n /**\n * Generates the complete header XML file content\n * This creates a complete header document (header1.xml, etc.)\n */\n toXML(): string {\n // If we have raw XML preserved from loading, use it\n if (this.rawXML) {\n return this.rawXML;\n }\n\n // Otherwise generate from elements\n const elementXmls = this.elements.map((el) => el.toXML());\n\n let xml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n';\n xml += '<w:hdr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ';\n xml += 'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">\\n';\n\n // Add elements\n for (const element of elementXmls) {\n xml += this.renderElement(element, 1);\n }\n\n // If no elements, add an empty paragraph\n if (this.elements.length === 0) {\n xml += ' <w:p/>\\n';\n }\n\n xml += '</w:hdr>';\n\n return xml;\n }\n\n /**\n * Renders an XML element to string with indentation\n */\n private renderElement(element: XMLElement, indent: number): string {\n const spaces = ' '.repeat(indent);\n let xml = '';\n\n if (element.selfClosing) {\n xml += `${spaces}<${element.name}`;\n if (element.attributes) {\n for (const [key, value] of Object.entries(element.attributes)) {\n xml += ` ${key}=\"${value}\"`;\n }\n }\n xml += '/>\\n';\n } else {\n xml += `${spaces}<${element.name}`;\n if (element.attributes) {\n for (const [key, value] of Object.entries(element.attributes)) {\n xml += ` ${key}=\"${value}\"`;\n }\n }\n xml += '>';\n\n if (element.children && element.children.length > 0) {\n const hasOnlyText = element.children.every((c) => typeof c === 'string');\n\n if (hasOnlyText) {\n // Inline text content\n xml += element.children.join('');\n } else {\n // Block-level children\n xml += '\\n';\n for (const child of element.children) {\n if (typeof child === 'string') {\n xml += spaces + ' ' + child + '\\n';\n } else {\n xml += this.renderElement(child, indent + 1);\n }\n }\n xml += spaces;\n }\n }\n\n xml += `</${element.name}>\\n`;\n }\n\n return xml;\n }\n\n /**\n * Gets the filename for this header\n * @param number Header number (1, 2, 3, etc.)\n */\n getFilename(number: number): string {\n return `header${number}.xml`;\n }\n\n /**\n * Creates a default header\n */\n static createDefault(): Header {\n return new Header({ type: 'default' });\n }\n\n /**\n * Creates a first page header\n */\n static createFirst(): Header {\n return new Header({ type: 'first' });\n }\n\n /**\n * Creates an even page header\n */\n static createEven(): Header {\n return new Header({ type: 'even' });\n }\n\n /**\n * Creates a header with properties\n * @param properties Header properties\n */\n static create(properties?: HeaderProperties): Header {\n return new Header(properties);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderFooterManager.js","sourceRoot":"","sources":["../../src/elements/HeaderFooterManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * HeaderFooterManager - Manages headers and footers in a document\r\n *\r\n * Tracks all headers and footers, assigns unique IDs, generates filenames,\r\n * and manages relationships.\r\n */\r\n\r\nimport { Header } from './Header';\r\nimport { Footer } from './Footer';\r\n\r\n/**\r\n * Header entry with metadata\r\n */\r\ninterface HeaderEntry {\r\n header: Header;\r\n filename: string;\r\n relationshipId: string;\r\n number: number;\r\n}\r\n\r\n/**\r\n * Footer entry with metadata\r\n */\r\ninterface FooterEntry {\r\n footer: Footer;\r\n filename: string;\r\n relationshipId: string;\r\n number: number;\r\n}\r\n\r\n/**\r\n * Manages all headers and footers in a document\r\n */\r\nexport class HeaderFooterManager {\r\n private headers: Map<Header, HeaderEntry>;\r\n private footers: Map<Footer, FooterEntry>;\r\n private nextHeaderNumber: number;\r\n private nextFooterNumber: number;\r\n\r\n /**\r\n * Creates a new header/footer manager\r\n */\r\n constructor() {\r\n this.headers = new Map();\r\n this.footers = new Map();\r\n this.nextHeaderNumber = 1;\r\n this.nextFooterNumber = 1;\r\n }\r\n\r\n /**\r\n * Registers a header with the manager\r\n * @param header The header to register\r\n * @param relationshipId The relationship ID for this header\r\n * @returns The filename assigned to this header\r\n */\r\n registerHeader(header: Header, relationshipId: string): string {\r\n // Check if already registered\r\n const existing = this.headers.get(header);\r\n if (existing) {\r\n return existing.filename;\r\n }\r\n\r\n // Generate filename\r\n const number = this.nextHeaderNumber++;\r\n const filename = header.getFilename(number);\r\n\r\n // Set header ID\r\n header.setHeaderId(relationshipId);\r\n\r\n // Store entry\r\n const entry: HeaderEntry = {\r\n header,\r\n filename,\r\n relationshipId,\r\n number,\r\n };\r\n\r\n this.headers.set(header, entry);\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Registers a footer with the manager\r\n * @param footer The footer to register\r\n * @param relationshipId The relationship ID for this footer\r\n * @returns The filename assigned to this footer\r\n */\r\n registerFooter(footer: Footer, relationshipId: string): string {\r\n // Check if already registered\r\n const existing = this.footers.get(footer);\r\n if (existing) {\r\n return existing.filename;\r\n }\r\n\r\n // Generate filename\r\n const number = this.nextFooterNumber++;\r\n const filename = footer.getFilename(number);\r\n\r\n // Set footer ID\r\n footer.setFooterId(relationshipId);\r\n\r\n // Store entry\r\n const entry: FooterEntry = {\r\n footer,\r\n filename,\r\n relationshipId,\r\n number,\r\n };\r\n\r\n this.footers.set(footer, entry);\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Gets the filename for a header\r\n * @param header The header\r\n * @returns The filename, or undefined if not registered\r\n */\r\n getHeaderFilename(header: Header): string | undefined {\r\n return this.headers.get(header)?.filename;\r\n }\r\n\r\n /**\r\n * Gets the filename for a footer\r\n * @param footer The footer\r\n * @returns The filename, or undefined if not registered\r\n */\r\n getFooterFilename(footer: Footer): string | undefined {\r\n return this.footers.get(footer)?.filename;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID for a header\r\n * @param header The header\r\n * @returns The relationship ID, or undefined if not registered\r\n */\r\n getHeaderRelationshipId(header: Header): string | undefined {\r\n return this.headers.get(header)?.relationshipId;\r\n }\r\n\r\n /**\r\n * Gets the relationship ID for a footer\r\n * @param footer The footer\r\n * @returns The relationship ID, or undefined if not registered\r\n */\r\n getFooterRelationshipId(footer: Footer): string | undefined {\r\n return this.footers.get(footer)?.relationshipId;\r\n }\r\n\r\n /**\r\n * Gets all registered headers\r\n * @returns Array of header entries\r\n */\r\n getAllHeaders(): HeaderEntry[] {\r\n return Array.from(this.headers.values());\r\n }\r\n\r\n /**\r\n * Gets all registered footers\r\n * @returns Array of footer entries\r\n */\r\n getAllFooters(): FooterEntry[] {\r\n return Array.from(this.footers.values());\r\n }\r\n\r\n /**\r\n * Gets the number of headers\r\n * @returns Number of registered headers\r\n */\r\n getHeaderCount(): number {\r\n return this.headers.size;\r\n }\r\n\r\n /**\r\n * Gets the number of footers\r\n * @returns Number of registered footers\r\n */\r\n getFooterCount(): number {\r\n return this.footers.size;\r\n }\r\n\r\n /**\r\n * Checks if a header is registered\r\n * @param header The header\r\n * @returns True if registered\r\n */\r\n hasHeader(header: Header): boolean {\r\n return this.headers.has(header);\r\n }\r\n\r\n /**\r\n * Checks if a footer is registered\r\n * @param footer The footer\r\n * @returns True if registered\r\n */\r\n hasFooter(footer: Footer): boolean {\r\n return this.footers.has(footer);\r\n }\r\n\r\n /**\r\n * Clears all headers and footers\r\n */\r\n clear(): this {\r\n this.headers.clear();\r\n this.footers.clear();\r\n this.nextHeaderNumber = 1;\r\n this.nextFooterNumber = 1;\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a new header/footer manager\r\n */\r\n static create(): HeaderFooterManager {\r\n return new HeaderFooterManager();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"HeaderFooterManager.js","sourceRoot":"","sources":["../../src/elements/HeaderFooterManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * HeaderFooterManager - Manages headers and footers in a document\n *\n * Tracks all headers and footers, assigns unique IDs, generates filenames,\n * and manages relationships.\n */\n\nimport { Header } from './Header';\nimport { Footer } from './Footer';\n\n/**\n * Header entry with metadata\n */\ninterface HeaderEntry {\n header: Header;\n filename: string;\n relationshipId: string;\n number: number;\n}\n\n/**\n * Footer entry with metadata\n */\ninterface FooterEntry {\n footer: Footer;\n filename: string;\n relationshipId: string;\n number: number;\n}\n\n/**\n * Manages all headers and footers in a document\n */\nexport class HeaderFooterManager {\n private headers: Map<Header, HeaderEntry>;\n private footers: Map<Footer, FooterEntry>;\n private nextHeaderNumber: number;\n private nextFooterNumber: number;\n\n /**\n * Creates a new header/footer manager\n */\n constructor() {\n this.headers = new Map();\n this.footers = new Map();\n this.nextHeaderNumber = 1;\n this.nextFooterNumber = 1;\n }\n\n /**\n * Registers a header with the manager\n * @param header The header to register\n * @param relationshipId The relationship ID for this header\n * @returns The filename assigned to this header\n */\n registerHeader(header: Header, relationshipId: string): string {\n // Check if already registered\n const existing = this.headers.get(header);\n if (existing) {\n return existing.filename;\n }\n\n // Generate filename\n const number = this.nextHeaderNumber++;\n const filename = header.getFilename(number);\n\n // Set header ID\n header.setHeaderId(relationshipId);\n\n // Store entry\n const entry: HeaderEntry = {\n header,\n filename,\n relationshipId,\n number,\n };\n\n this.headers.set(header, entry);\n\n return filename;\n }\n\n /**\n * Registers a footer with the manager\n * @param footer The footer to register\n * @param relationshipId The relationship ID for this footer\n * @returns The filename assigned to this footer\n */\n registerFooter(footer: Footer, relationshipId: string): string {\n // Check if already registered\n const existing = this.footers.get(footer);\n if (existing) {\n return existing.filename;\n }\n\n // Generate filename\n const number = this.nextFooterNumber++;\n const filename = footer.getFilename(number);\n\n // Set footer ID\n footer.setFooterId(relationshipId);\n\n // Store entry\n const entry: FooterEntry = {\n footer,\n filename,\n relationshipId,\n number,\n };\n\n this.footers.set(footer, entry);\n\n return filename;\n }\n\n /**\n * Gets the filename for a header\n * @param header The header\n * @returns The filename, or undefined if not registered\n */\n getHeaderFilename(header: Header): string | undefined {\n return this.headers.get(header)?.filename;\n }\n\n /**\n * Gets the filename for a footer\n * @param footer The footer\n * @returns The filename, or undefined if not registered\n */\n getFooterFilename(footer: Footer): string | undefined {\n return this.footers.get(footer)?.filename;\n }\n\n /**\n * Gets the relationship ID for a header\n * @param header The header\n * @returns The relationship ID, or undefined if not registered\n */\n getHeaderRelationshipId(header: Header): string | undefined {\n return this.headers.get(header)?.relationshipId;\n }\n\n /**\n * Gets the relationship ID for a footer\n * @param footer The footer\n * @returns The relationship ID, or undefined if not registered\n */\n getFooterRelationshipId(footer: Footer): string | undefined {\n return this.footers.get(footer)?.relationshipId;\n }\n\n /**\n * Gets all registered headers\n * @returns Array of header entries\n */\n getAllHeaders(): HeaderEntry[] {\n return Array.from(this.headers.values());\n }\n\n /**\n * Gets all registered footers\n * @returns Array of footer entries\n */\n getAllFooters(): FooterEntry[] {\n return Array.from(this.footers.values());\n }\n\n /**\n * Gets the number of headers\n * @returns Number of registered headers\n */\n getHeaderCount(): number {\n return this.headers.size;\n }\n\n /**\n * Gets the number of footers\n * @returns Number of registered footers\n */\n getFooterCount(): number {\n return this.footers.size;\n }\n\n /**\n * Checks if a header is registered\n * @param header The header\n * @returns True if registered\n */\n hasHeader(header: Header): boolean {\n return this.headers.has(header);\n }\n\n /**\n * Checks if a footer is registered\n * @param footer The footer\n * @returns True if registered\n */\n hasFooter(footer: Footer): boolean {\n return this.footers.has(footer);\n }\n\n /**\n * Clears all headers and footers\n */\n clear(): this {\n this.headers.clear();\n this.footers.clear();\n this.nextHeaderNumber = 1;\n this.nextFooterNumber = 1;\n return this;\n }\n\n /**\n * Creates a new header/footer manager\n */\n static create(): HeaderFooterManager {\n return new HeaderFooterManager();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { XMLElement } from "../xml/XMLBuilder";
2
- import { Run, RunFormatting } from "./Run";
1
+ import { XMLElement } from '../xml/XMLBuilder';
2
+ import { Run, RunFormatting } from './Run';
3
3
  export interface HyperlinkProperties {
4
4
  url?: string;
5
5
  anchor?: string;
@@ -26,10 +26,12 @@ export declare class Hyperlink {
26
26
  private docLocation?;
27
27
  private trackingContext?;
28
28
  private _parentParagraph?;
29
+ private _preTrackingFormatting?;
29
30
  constructor(properties: HyperlinkProperties);
30
31
  _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void;
31
32
  _setParentParagraph(paragraph: import('./Paragraph').Paragraph): void;
32
33
  _getParentParagraph(): import('./Paragraph').Paragraph | undefined;
34
+ private _applyFormattingRPrChange;
33
35
  getUrl(): string | undefined;
34
36
  getFullUrl(): string | undefined;
35
37
  getAnchor(): string | undefined;
@@ -62,7 +64,7 @@ export declare class Hyperlink {
62
64
  getFont(): string | undefined;
63
65
  getSize(): number | undefined;
64
66
  setColor(color: string): this;
65
- setUnderline(underline: boolean | "single" | "double" | "dotted" | "thick" | "dash"): this;
67
+ setUnderline(underline: boolean | 'single' | 'double' | 'dotted' | 'thick' | 'dash'): this;
66
68
  setBold(bold?: boolean): this;
67
69
  setItalic(italic?: boolean): this;
68
70
  setFont(font: string): this;
@@ -1 +1 @@
1
- {"version":3,"file":"Hyperlink.d.ts","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Hyperlink.d.ts","sourceRoot":"","sources":["../../src/elements/Hyperlink.ts"],"names":[],"mappings":"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"}