docxmlater 10.0.1 → 10.0.3

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 (395) hide show
  1. package/README.md +3 -2
  2. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  3. package/dist/constants/legacyCompatFlags.js.map +1 -1
  4. package/dist/constants/limits.d.ts +0 -27
  5. package/dist/constants/limits.d.ts.map +1 -1
  6. package/dist/constants/limits.js +13 -13
  7. package/dist/constants/limits.js.map +1 -1
  8. package/dist/core/Document.d.ts +24 -19
  9. package/dist/core/Document.d.ts.map +1 -1
  10. package/dist/core/Document.js +272 -71
  11. package/dist/core/Document.js.map +1 -1
  12. package/dist/core/DocumentContent.d.ts.map +1 -1
  13. package/dist/core/DocumentContent.js.map +1 -1
  14. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  15. package/dist/core/DocumentGenerator.js +59 -24
  16. package/dist/core/DocumentGenerator.js.map +1 -1
  17. package/dist/core/DocumentIdManager.d.ts.map +1 -1
  18. package/dist/core/DocumentIdManager.js.map +1 -1
  19. package/dist/core/DocumentParser.d.ts +6 -6
  20. package/dist/core/DocumentParser.d.ts.map +1 -1
  21. package/dist/core/DocumentParser.js +60 -54
  22. package/dist/core/DocumentParser.js.map +1 -1
  23. package/dist/core/DocumentValidator.d.ts.map +1 -1
  24. package/dist/core/DocumentValidator.js.map +1 -1
  25. package/dist/core/Relationship.d.ts.map +1 -1
  26. package/dist/core/Relationship.js +1 -1
  27. package/dist/core/Relationship.js.map +1 -1
  28. package/dist/core/RelationshipManager.js +3 -3
  29. package/dist/core/RelationshipManager.js.map +1 -1
  30. package/dist/elements/AlternateContent.js.map +1 -1
  31. package/dist/elements/Bookmark.d.ts.map +1 -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.js +1 -1
  36. package/dist/elements/Comment.js.map +1 -1
  37. package/dist/elements/CommentManager.d.ts.map +1 -1
  38. package/dist/elements/CommentManager.js +8 -2
  39. package/dist/elements/CommentManager.js.map +1 -1
  40. package/dist/elements/CommonTypes.d.ts.map +1 -1
  41. package/dist/elements/CommonTypes.js +1 -2
  42. package/dist/elements/CommonTypes.js.map +1 -1
  43. package/dist/elements/CustomXml.js.map +1 -1
  44. package/dist/elements/Endnote.d.ts.map +1 -1
  45. package/dist/elements/Endnote.js.map +1 -1
  46. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  47. package/dist/elements/EndnoteManager.js.map +1 -1
  48. package/dist/elements/Field.d.ts.map +1 -1
  49. package/dist/elements/Field.js +31 -28
  50. package/dist/elements/Field.js.map +1 -1
  51. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  52. package/dist/elements/FieldHelpers.js +6 -6
  53. package/dist/elements/FieldHelpers.js.map +1 -1
  54. package/dist/elements/FontManager.d.ts.map +1 -1
  55. package/dist/elements/FontManager.js.map +1 -1
  56. package/dist/elements/Footer.js.map +1 -1
  57. package/dist/elements/Footnote.d.ts.map +1 -1
  58. package/dist/elements/Footnote.js.map +1 -1
  59. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  60. package/dist/elements/FootnoteManager.js.map +1 -1
  61. package/dist/elements/Header.js.map +1 -1
  62. package/dist/elements/HeaderFooterManager.js.map +1 -1
  63. package/dist/elements/Hyperlink.d.ts.map +1 -1
  64. package/dist/elements/Hyperlink.js +5 -5
  65. package/dist/elements/Hyperlink.js.map +1 -1
  66. package/dist/elements/Image.d.ts +2 -2
  67. package/dist/elements/Image.d.ts.map +1 -1
  68. package/dist/elements/Image.js +21 -5
  69. package/dist/elements/Image.js.map +1 -1
  70. package/dist/elements/ImageManager.d.ts.map +1 -1
  71. package/dist/elements/ImageManager.js +2 -2
  72. package/dist/elements/ImageManager.js.map +1 -1
  73. package/dist/elements/ImageRun.js.map +1 -1
  74. package/dist/elements/MathElement.js.map +1 -1
  75. package/dist/elements/Paragraph.d.ts.map +1 -1
  76. package/dist/elements/Paragraph.js +128 -117
  77. package/dist/elements/Paragraph.js.map +1 -1
  78. package/dist/elements/PreservedElement.js.map +1 -1
  79. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  80. package/dist/elements/RangeMarker.js.map +1 -1
  81. package/dist/elements/Revision.d.ts +1 -0
  82. package/dist/elements/Revision.d.ts.map +1 -1
  83. package/dist/elements/Revision.js +44 -5
  84. package/dist/elements/Revision.js.map +1 -1
  85. package/dist/elements/RevisionContent.js.map +1 -1
  86. package/dist/elements/RevisionManager.d.ts.map +1 -1
  87. package/dist/elements/RevisionManager.js.map +1 -1
  88. package/dist/elements/Run.d.ts.map +1 -1
  89. package/dist/elements/Run.js +1 -3
  90. package/dist/elements/Run.js.map +1 -1
  91. package/dist/elements/Section.d.ts.map +1 -1
  92. package/dist/elements/Section.js +127 -118
  93. package/dist/elements/Section.js.map +1 -1
  94. package/dist/elements/Shape.d.ts.map +1 -1
  95. package/dist/elements/Shape.js +21 -0
  96. package/dist/elements/Shape.js.map +1 -1
  97. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  98. package/dist/elements/StructuredDocumentTag.js +20 -8
  99. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  100. package/dist/elements/Table.d.ts +2 -2
  101. package/dist/elements/Table.d.ts.map +1 -1
  102. package/dist/elements/Table.js +29 -35
  103. package/dist/elements/Table.js.map +1 -1
  104. package/dist/elements/TableCell.d.ts +2 -2
  105. package/dist/elements/TableCell.d.ts.map +1 -1
  106. package/dist/elements/TableCell.js +63 -67
  107. package/dist/elements/TableCell.js.map +1 -1
  108. package/dist/elements/TableGridChange.js.map +1 -1
  109. package/dist/elements/TableOfContents.d.ts +6 -6
  110. package/dist/elements/TableOfContents.d.ts.map +1 -1
  111. package/dist/elements/TableOfContents.js.map +1 -1
  112. package/dist/elements/TableOfContentsElement.js.map +1 -1
  113. package/dist/elements/TableRow.d.ts.map +1 -1
  114. package/dist/elements/TableRow.js +65 -47
  115. package/dist/elements/TableRow.js.map +1 -1
  116. package/dist/elements/TextBox.d.ts.map +1 -1
  117. package/dist/elements/TextBox.js +1 -1
  118. package/dist/elements/TextBox.js.map +1 -1
  119. package/dist/formatting/AbstractNumbering.d.ts +1 -1
  120. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  121. package/dist/formatting/AbstractNumbering.js +11 -11
  122. package/dist/formatting/AbstractNumbering.js.map +1 -1
  123. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  124. package/dist/formatting/NumberingInstance.js +4 -4
  125. package/dist/formatting/NumberingInstance.js.map +1 -1
  126. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  127. package/dist/formatting/NumberingLevel.js +26 -26
  128. package/dist/formatting/NumberingLevel.js.map +1 -1
  129. package/dist/formatting/NumberingManager.d.ts +1 -1
  130. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  131. package/dist/formatting/NumberingManager.js.map +1 -1
  132. package/dist/formatting/Style.d.ts.map +1 -1
  133. package/dist/formatting/Style.js +87 -95
  134. package/dist/formatting/Style.js.map +1 -1
  135. package/dist/formatting/StylesManager.d.ts +3 -3
  136. package/dist/formatting/StylesManager.d.ts.map +1 -1
  137. package/dist/formatting/StylesManager.js.map +1 -1
  138. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  139. package/dist/helpers/CleanupHelper.js +1 -7
  140. package/dist/helpers/CleanupHelper.js.map +1 -1
  141. package/dist/images/ImageOptimizer.js.map +1 -1
  142. package/dist/index.js.map +1 -1
  143. package/dist/managers/DrawingManager.d.ts.map +1 -1
  144. package/dist/managers/DrawingManager.js.map +1 -1
  145. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  146. package/dist/tracking/TrackingContext.js.map +1 -1
  147. package/dist/types/compatibility-types.js.map +1 -1
  148. package/dist/types/formatting.js.map +1 -1
  149. package/dist/types/list-types.d.ts +4 -4
  150. package/dist/types/list-types.d.ts.map +1 -1
  151. package/dist/types/list-types.js.map +1 -1
  152. package/dist/types/settings-types.js.map +1 -1
  153. package/dist/types/styleConfig.js.map +1 -1
  154. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  155. package/dist/utils/ChangelogGenerator.js.map +1 -1
  156. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  157. package/dist/utils/CompatibilityUpgrader.js +7 -7
  158. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  159. package/dist/utils/InMemoryRevisionAcceptor.js +1 -1
  160. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  161. package/dist/utils/MoveOperationHelper.js.map +1 -1
  162. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  163. package/dist/utils/RevisionWalker.js.map +1 -1
  164. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  165. package/dist/utils/ShadingResolver.js +1 -1
  166. package/dist/utils/ShadingResolver.js.map +1 -1
  167. package/dist/utils/acceptRevisions.d.ts +0 -28
  168. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  169. package/dist/utils/acceptRevisions.js +5 -7
  170. package/dist/utils/acceptRevisions.js.map +1 -1
  171. package/dist/utils/cnfStyleDecoder.js +1 -1
  172. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  173. package/dist/utils/corruptionDetection.js.map +1 -1
  174. package/dist/utils/dateFormatting.js.map +1 -1
  175. package/dist/utils/deepClone.d.ts +0 -1
  176. package/dist/utils/deepClone.d.ts.map +1 -1
  177. package/dist/utils/deepClone.js +0 -7
  178. package/dist/utils/deepClone.js.map +1 -1
  179. package/dist/utils/diagnostics.d.ts +2 -2
  180. package/dist/utils/diagnostics.d.ts.map +1 -1
  181. package/dist/utils/diagnostics.js.map +1 -1
  182. package/dist/utils/errorHandling.js.map +1 -1
  183. package/dist/utils/formatting.js.map +1 -1
  184. package/dist/utils/list-detection.d.ts +2 -2
  185. package/dist/utils/list-detection.d.ts.map +1 -1
  186. package/dist/utils/list-detection.js +3 -3
  187. package/dist/utils/list-detection.js.map +1 -1
  188. package/dist/utils/logger.d.ts +2 -4
  189. package/dist/utils/logger.d.ts.map +1 -1
  190. package/dist/utils/logger.js +0 -2
  191. package/dist/utils/logger.js.map +1 -1
  192. package/dist/utils/parsingHelpers.js.map +1 -1
  193. package/dist/utils/stripTrackedChanges.d.ts +0 -19
  194. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  195. package/dist/utils/stripTrackedChanges.js +0 -2
  196. package/dist/utils/stripTrackedChanges.js.map +1 -1
  197. package/dist/utils/textDiff.js.map +1 -1
  198. package/dist/utils/units.js.map +1 -1
  199. package/dist/utils/validation.d.ts.map +1 -1
  200. package/dist/utils/validation.js.map +1 -1
  201. package/dist/utils/xmlSanitization.js.map +1 -1
  202. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  203. package/dist/validation/RevisionValidator.js.map +1 -1
  204. package/dist/validation/ValidationRules.js.map +1 -1
  205. package/dist/validation/index.js.map +1 -1
  206. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  207. package/dist/xml/XMLBuilder.js +10 -0
  208. package/dist/xml/XMLBuilder.js.map +1 -1
  209. package/dist/xml/XMLParser.d.ts.map +1 -1
  210. package/dist/xml/XMLParser.js +4 -5
  211. package/dist/xml/XMLParser.js.map +1 -1
  212. package/dist/zip/ZipHandler.js.map +1 -1
  213. package/dist/zip/ZipReader.js.map +1 -1
  214. package/dist/zip/ZipWriter.js.map +1 -1
  215. package/dist/zip/errors.js.map +1 -1
  216. package/dist/zip/types.js.map +1 -1
  217. package/package.json +34 -4
  218. package/src/__tests__/helper-methods.test.ts +512 -0
  219. package/src/constants/legacyCompatFlags.ts +138 -0
  220. package/src/constants/limits.ts +50 -0
  221. package/src/core/CLAUDE.md +109 -0
  222. package/src/core/Document.ts +15569 -0
  223. package/src/core/DocumentContent.ts +467 -0
  224. package/src/core/DocumentGenerator.ts +1104 -0
  225. package/src/core/DocumentIdManager.ts +158 -0
  226. package/src/core/DocumentParser.ts +10107 -0
  227. package/src/core/DocumentValidator.ts +372 -0
  228. package/src/core/Relationship.ts +367 -0
  229. package/src/core/RelationshipManager.ts +428 -0
  230. package/src/elements/AlternateContent.ts +42 -0
  231. package/src/elements/Bookmark.ts +210 -0
  232. package/src/elements/BookmarkManager.ts +250 -0
  233. package/src/elements/CLAUDE.md +126 -0
  234. package/src/elements/Comment.ts +359 -0
  235. package/src/elements/CommentManager.ts +502 -0
  236. package/src/elements/CommonTypes.ts +549 -0
  237. package/src/elements/CustomXml.ts +36 -0
  238. package/src/elements/Endnote.ts +217 -0
  239. package/src/elements/EndnoteManager.ts +249 -0
  240. package/src/elements/Field.ts +1233 -0
  241. package/src/elements/FieldHelpers.ts +333 -0
  242. package/src/elements/FontManager.ts +339 -0
  243. package/src/elements/Footer.ts +269 -0
  244. package/src/elements/Footnote.ts +217 -0
  245. package/src/elements/FootnoteManager.ts +249 -0
  246. package/src/elements/Header.ts +269 -0
  247. package/src/elements/HeaderFooterManager.ts +219 -0
  248. package/src/elements/Hyperlink.ts +1146 -0
  249. package/src/elements/Image.ts +1756 -0
  250. package/src/elements/ImageManager.ts +432 -0
  251. package/src/elements/ImageRun.ts +59 -0
  252. package/src/elements/MathElement.ts +65 -0
  253. package/src/elements/Paragraph.ts +4227 -0
  254. package/src/elements/PreservedElement.ts +53 -0
  255. package/src/elements/PropertyChangeTypes.ts +442 -0
  256. package/src/elements/RangeMarker.ts +400 -0
  257. package/src/elements/Revision.ts +1217 -0
  258. package/src/elements/RevisionContent.ts +73 -0
  259. package/src/elements/RevisionManager.ts +1070 -0
  260. package/src/elements/Run.ts +3068 -0
  261. package/src/elements/Section.ts +1421 -0
  262. package/src/elements/Shape.ts +873 -0
  263. package/src/elements/StructuredDocumentTag.ts +978 -0
  264. package/src/elements/Table.ts +2524 -0
  265. package/src/elements/TableCell.ts +1586 -0
  266. package/src/elements/TableGridChange.ts +151 -0
  267. package/src/elements/TableOfContents.ts +691 -0
  268. package/src/elements/TableOfContentsElement.ts +89 -0
  269. package/src/elements/TableRow.ts +906 -0
  270. package/src/elements/TextBox.ts +768 -0
  271. package/src/formatting/AbstractNumbering.ts +548 -0
  272. package/src/formatting/CLAUDE.md +74 -0
  273. package/src/formatting/NumberingInstance.ts +212 -0
  274. package/src/formatting/NumberingLevel.ts +1006 -0
  275. package/src/formatting/NumberingManager.ts +827 -0
  276. package/src/formatting/Style.ts +1833 -0
  277. package/src/formatting/StylesManager.ts +1005 -0
  278. package/src/helpers/CleanupHelper.ts +524 -0
  279. package/src/images/ImageOptimizer.ts +274 -0
  280. package/src/index.ts +554 -0
  281. package/src/managers/CLAUDE.md +47 -0
  282. package/src/managers/DrawingManager.ts +319 -0
  283. package/src/tracking/DocumentTrackingContext.ts +643 -0
  284. package/src/tracking/TrackingContext.ts +173 -0
  285. package/src/types/compatibility-types.ts +49 -0
  286. package/src/types/formatting.ts +210 -0
  287. package/src/types/list-types.ts +152 -0
  288. package/src/types/settings-types.ts +59 -0
  289. package/src/types/styleConfig.ts +189 -0
  290. package/src/utils/CLAUDE.md +153 -0
  291. package/src/utils/ChangelogGenerator.ts +1581 -0
  292. package/src/utils/CompatibilityUpgrader.ts +237 -0
  293. package/src/utils/InMemoryRevisionAcceptor.ts +668 -0
  294. package/src/utils/MoveOperationHelper.ts +238 -0
  295. package/src/utils/RevisionAwareProcessor.ts +526 -0
  296. package/src/utils/RevisionWalker.ts +457 -0
  297. package/src/utils/SelectiveRevisionAcceptor.ts +613 -0
  298. package/src/utils/ShadingResolver.ts +107 -0
  299. package/src/utils/acceptRevisions.ts +714 -0
  300. package/src/utils/cnfStyleDecoder.ts +217 -0
  301. package/src/utils/corruptionDetection.ts +345 -0
  302. package/src/utils/dateFormatting.ts +20 -0
  303. package/src/utils/deepClone.ts +78 -0
  304. package/src/utils/diagnostics.ts +129 -0
  305. package/src/utils/errorHandling.ts +80 -0
  306. package/src/utils/formatting.ts +213 -0
  307. package/src/utils/list-detection.ts +274 -0
  308. package/src/utils/logger.ts +404 -0
  309. package/src/utils/parsingHelpers.ts +190 -0
  310. package/src/utils/stripTrackedChanges.ts +353 -0
  311. package/src/utils/textDiff.ts +100 -0
  312. package/src/utils/units.ts +421 -0
  313. package/src/utils/validation.ts +542 -0
  314. package/src/utils/xmlSanitization.ts +182 -0
  315. package/src/validation/RevisionAutoFixer.ts +542 -0
  316. package/src/validation/RevisionValidator.ts +460 -0
  317. package/src/validation/ValidationRules.ts +338 -0
  318. package/src/validation/index.ts +30 -0
  319. package/src/xml/CLAUDE.md +65 -0
  320. package/src/xml/XMLBuilder.ts +871 -0
  321. package/src/xml/XMLParser.ts +919 -0
  322. package/src/zip/CLAUDE.md +55 -0
  323. package/src/zip/ZipHandler.ts +637 -0
  324. package/src/zip/ZipReader.ts +299 -0
  325. package/src/zip/ZipWriter.ts +390 -0
  326. package/src/zip/errors.ts +69 -0
  327. package/src/zip/types.ts +116 -0
  328. package/dist/core/ListNormalizer.d.ts +0 -23
  329. package/dist/core/ListNormalizer.d.ts.map +0 -1
  330. package/dist/core/ListNormalizer.js +0 -624
  331. package/dist/core/ListNormalizer.js.map +0 -1
  332. package/dist/images/index.d.ts +0 -2
  333. package/dist/images/index.d.ts.map +0 -1
  334. package/dist/images/index.js +0 -8
  335. package/dist/images/index.js.map +0 -1
  336. package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
  337. package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
  338. package/dist/ms-doc/cfb/CFBReader.js +0 -360
  339. package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
  340. package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
  341. package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
  342. package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
  343. package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
  344. package/dist/ms-doc/fib/FIB.d.ts +0 -18
  345. package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
  346. package/dist/ms-doc/fib/FIB.js +0 -342
  347. package/dist/ms-doc/fib/FIB.js.map +0 -1
  348. package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
  349. package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
  350. package/dist/ms-doc/fields/FieldParser.js +0 -266
  351. package/dist/ms-doc/fields/FieldParser.js.map +0 -1
  352. package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
  353. package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
  354. package/dist/ms-doc/images/PictureExtractor.js +0 -233
  355. package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
  356. package/dist/ms-doc/index.d.ts +0 -20
  357. package/dist/ms-doc/index.d.ts.map +0 -1
  358. package/dist/ms-doc/index.js +0 -59
  359. package/dist/ms-doc/index.js.map +0 -1
  360. package/dist/ms-doc/properties/SPRM.d.ts +0 -210
  361. package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
  362. package/dist/ms-doc/properties/SPRM.js +0 -633
  363. package/dist/ms-doc/properties/SPRM.js.map +0 -1
  364. package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
  365. package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
  366. package/dist/ms-doc/sections/SectionParser.js +0 -214
  367. package/dist/ms-doc/sections/SectionParser.js.map +0 -1
  368. package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
  369. package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
  370. package/dist/ms-doc/styles/StyleSheet.js +0 -268
  371. package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
  372. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
  373. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
  374. package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
  375. package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
  376. package/dist/ms-doc/tables/TableParser.d.ts +0 -29
  377. package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
  378. package/dist/ms-doc/tables/TableParser.js +0 -176
  379. package/dist/ms-doc/tables/TableParser.js.map +0 -1
  380. package/dist/ms-doc/text/PieceTable.d.ts +0 -21
  381. package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
  382. package/dist/ms-doc/text/PieceTable.js +0 -171
  383. package/dist/ms-doc/text/PieceTable.js.map +0 -1
  384. package/dist/ms-doc/types/Constants.d.ts +0 -99
  385. package/dist/ms-doc/types/Constants.d.ts.map +0 -1
  386. package/dist/ms-doc/types/Constants.js +0 -102
  387. package/dist/ms-doc/types/Constants.js.map +0 -1
  388. package/dist/ms-doc/types/DocTypes.d.ts +0 -368
  389. package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
  390. package/dist/ms-doc/types/DocTypes.js +0 -3
  391. package/dist/ms-doc/types/DocTypes.js.map +0 -1
  392. package/dist/tracking/index.d.ts +0 -3
  393. package/dist/tracking/index.d.ts.map +0 -1
  394. package/dist/tracking/index.js +0 -6
  395. package/dist/tracking/index.js.map +0 -1
@@ -0,0 +1,249 @@
1
+ /**
2
+ * FootnoteManager - Manages footnotes in a document
3
+ *
4
+ * Handles creation, registration, and XML generation for footnotes.
5
+ * Maintains unique IDs and proper ordering.
6
+ */
7
+
8
+ import { Footnote, FootnoteType } from './Footnote';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
+ import { XMLParser } from '../xml/XMLParser';
11
+
12
+ /**
13
+ * Manages footnotes in a document
14
+ */
15
+ export class FootnoteManager {
16
+ private footnotes = new Map<number, Footnote>();
17
+ private nextId = 1;
18
+
19
+ /**
20
+ * Creates a new FootnoteManager
21
+ * @private Use static factory method
22
+ */
23
+ private constructor() {
24
+ // Add special footnotes (separators) with negative IDs
25
+ this.addSpecialFootnotes();
26
+ }
27
+
28
+ /**
29
+ * Adds special footnotes (separator, continuation)
30
+ * These use negative IDs as per OOXML specification
31
+ */
32
+ private addSpecialFootnotes(): void {
33
+ // Separator footnote (ID -1)
34
+ const separator = Footnote.createSeparator(-1);
35
+ this.footnotes.set(-1, separator);
36
+
37
+ // Continuation separator (ID 0)
38
+ const continuationSep = Footnote.createContinuationSeparator(0);
39
+ this.footnotes.set(0, continuationSep);
40
+ }
41
+
42
+ /**
43
+ * Checks if a footnote is a special/system type (separator, continuationSeparator,
44
+ * continuationNotice) that should be preserved across clear() operations.
45
+ * Uses type-based detection rather than ID-based, because continuationNotice
46
+ * has a positive ID (typically 1) but is still a system footnote.
47
+ */
48
+ private isSpecialFootnote(footnote: Footnote): boolean {
49
+ const type = footnote.getType();
50
+ return type === FootnoteType.Separator ||
51
+ type === FootnoteType.ContinuationSeparator ||
52
+ type === FootnoteType.ContinuationNotice;
53
+ }
54
+
55
+ /**
56
+ * Creates a new FootnoteManager instance
57
+ */
58
+ static create(): FootnoteManager {
59
+ return new FootnoteManager();
60
+ }
61
+
62
+ /**
63
+ * Registers a footnote
64
+ * @param footnote Footnote to register
65
+ * @returns The registered footnote
66
+ */
67
+ register(footnote: Footnote): Footnote {
68
+ const id = footnote.getId();
69
+
70
+ // Ensure ID is not already used (except for special footnotes)
71
+ if (id > 0 && this.footnotes.has(id)) {
72
+ throw new Error(`Footnote with ID ${id} already exists`);
73
+ }
74
+
75
+ this.footnotes.set(id, footnote);
76
+
77
+ // Update next ID if needed
78
+ if (id >= this.nextId) {
79
+ this.nextId = id + 1;
80
+ }
81
+
82
+ return footnote;
83
+ }
84
+
85
+ /**
86
+ * Creates and registers a new footnote
87
+ * @param text Footnote text
88
+ * @returns The created footnote
89
+ */
90
+ createFootnote(text: string): Footnote {
91
+ const footnote = Footnote.fromText(this.nextId++, text);
92
+ this.footnotes.set(footnote.getId(), footnote);
93
+ return footnote;
94
+ }
95
+
96
+ /**
97
+ * Gets a footnote by ID
98
+ * @param id Footnote ID
99
+ * @returns The footnote, or undefined if not found
100
+ */
101
+ getFootnote(id: number): Footnote | undefined {
102
+ return this.footnotes.get(id);
103
+ }
104
+
105
+ /**
106
+ * Gets all user footnotes (excluding special system types: separator,
107
+ * continuationSeparator, continuationNotice)
108
+ */
109
+ getAllFootnotes(): Footnote[] {
110
+ return Array.from(this.footnotes.values())
111
+ .filter(f => !this.isSpecialFootnote(f))
112
+ .sort((a, b) => a.getId() - b.getId());
113
+ }
114
+
115
+ /**
116
+ * Gets all footnotes including special ones
117
+ */
118
+ getAllFootnotesWithSpecial(): Footnote[] {
119
+ return Array.from(this.footnotes.values())
120
+ .sort((a, b) => a.getId() - b.getId());
121
+ }
122
+
123
+ /**
124
+ * Checks if a footnote exists
125
+ * @param id Footnote ID
126
+ */
127
+ hasFootnote(id: number): boolean {
128
+ return this.footnotes.has(id);
129
+ }
130
+
131
+ /**
132
+ * Removes a footnote
133
+ * @param id Footnote ID
134
+ * @returns True if removed, false if not found or if it's a special type
135
+ */
136
+ removeFootnote(id: number): boolean {
137
+ const footnote = this.footnotes.get(id);
138
+ if (!footnote || this.isSpecialFootnote(footnote)) {
139
+ return false;
140
+ }
141
+ return this.footnotes.delete(id);
142
+ }
143
+
144
+ /**
145
+ * Gets the next available ID
146
+ */
147
+ getNextId(): number {
148
+ return this.nextId;
149
+ }
150
+
151
+ /**
152
+ * Gets the count of footnotes (excluding special ones)
153
+ */
154
+ getCount(): number {
155
+ return this.getAllFootnotes().length;
156
+ }
157
+
158
+ /**
159
+ * Checks if there are any footnotes (excluding special ones)
160
+ */
161
+ isEmpty(): boolean {
162
+ return this.getCount() === 0;
163
+ }
164
+
165
+ /**
166
+ * Clears all user footnotes (preserves special system types: separator,
167
+ * continuationSeparator, continuationNotice)
168
+ */
169
+ clear(): void {
170
+ const specialFootnotes = new Map<number, Footnote>();
171
+ let maxSpecialId = 0;
172
+
173
+ for (const [id, footnote] of this.footnotes) {
174
+ if (this.isSpecialFootnote(footnote)) {
175
+ specialFootnotes.set(id, footnote);
176
+ if (id > maxSpecialId) {
177
+ maxSpecialId = id;
178
+ }
179
+ }
180
+ }
181
+
182
+ this.footnotes = specialFootnotes;
183
+ // Ensure nextId doesn't collide with special footnotes that have positive IDs
184
+ this.nextId = Math.max(maxSpecialId + 1, 1);
185
+ }
186
+
187
+ /**
188
+ * Gets statistics about footnotes
189
+ */
190
+ getStats(): {
191
+ total: number;
192
+ nextId: number;
193
+ } {
194
+ return {
195
+ total: this.getCount(),
196
+ nextId: this.nextId,
197
+ };
198
+ }
199
+
200
+ /**
201
+ * Generates the footnotes.xml content
202
+ */
203
+ generateFootnotesXml(): string {
204
+ const footnotes = this.getAllFootnotesWithSpecial();
205
+
206
+ // Build footnotes element
207
+ const footnotesElement: XMLElement = {
208
+ name: 'w:footnotes',
209
+ attributes: {
210
+ 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
211
+ 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
212
+ },
213
+ children: footnotes.map(f => f.toXML())
214
+ };
215
+
216
+ // Build XML using XMLBuilder
217
+ const builder = new XMLBuilder();
218
+ builder.element(
219
+ footnotesElement.name,
220
+ footnotesElement.attributes,
221
+ footnotesElement.children
222
+ );
223
+ return builder.build(true);
224
+ }
225
+
226
+ /**
227
+ * Validates footnotes XML
228
+ * @param xml XML string to validate
229
+ * @returns True if valid
230
+ */
231
+ static validate(xml: string): boolean {
232
+ // Use XMLParser to extract root element
233
+ if (!xml) {
234
+ return false;
235
+ }
236
+
237
+ const footnotesContent = XMLParser.extractBetweenTags(xml, '<w:footnotes', '</w:footnotes>');
238
+ if (!footnotesContent) {
239
+ return false;
240
+ }
241
+
242
+ // Check for proper structure - namespace declaration
243
+ if (!xml.includes('xmlns:w=')) {
244
+ return false;
245
+ }
246
+
247
+ return true;
248
+ }
249
+ }
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Header - Represents a document header
3
+ *
4
+ * Headers appear at the top of pages and can contain text, tables, images, and fields.
5
+ * Different headers can be defined for first page, odd pages, and even pages.
6
+ */
7
+
8
+ import { XMLElement } from '../xml/XMLBuilder';
9
+ import { Paragraph } from './Paragraph';
10
+ import { Table } from './Table';
11
+
12
+ /**
13
+ * Header type
14
+ */
15
+ export type HeaderType = 'default' | 'first' | 'even';
16
+
17
+ /**
18
+ * Header content element
19
+ */
20
+ type HeaderElement = Paragraph | Table;
21
+
22
+ /**
23
+ * Header properties
24
+ */
25
+ export interface HeaderProperties {
26
+ /** Header type (default, first page, or even page) */
27
+ type?: HeaderType;
28
+ }
29
+
30
+ /**
31
+ * Represents a document header
32
+ */
33
+ export class Header {
34
+ private elements: HeaderElement[] = [];
35
+ private type: HeaderType;
36
+ private headerId?: string;
37
+ private rawXML?: string; // Store original XML for preservation
38
+
39
+ /**
40
+ * Creates a new header
41
+ * @param properties Header properties
42
+ */
43
+ constructor(properties: HeaderProperties = {}) {
44
+ this.type = properties.type || 'default';
45
+ }
46
+
47
+ /**
48
+ * Sets the raw XML content (used when loading existing headers)
49
+ * @param xml Raw XML content
50
+ */
51
+ setRawXML(xml: string): this {
52
+ this.rawXML = xml;
53
+ return this;
54
+ }
55
+
56
+ /**
57
+ * Gets the raw XML content if available
58
+ */
59
+ getRawXML(): string | undefined {
60
+ return this.rawXML;
61
+ }
62
+
63
+ /**
64
+ * Gets the header type
65
+ */
66
+ getType(): HeaderType {
67
+ return this.type;
68
+ }
69
+
70
+ /**
71
+ * Sets the header ID (used for relationships)
72
+ * @param id Header ID
73
+ */
74
+ setHeaderId(id: string): this {
75
+ this.headerId = id;
76
+ return this;
77
+ }
78
+
79
+ /**
80
+ * Gets the header ID
81
+ */
82
+ getHeaderId(): string | undefined {
83
+ return this.headerId;
84
+ }
85
+
86
+ /**
87
+ * Adds a paragraph to the header
88
+ * @param paragraph Paragraph to add
89
+ */
90
+ addParagraph(paragraph: Paragraph): this {
91
+ this.elements.push(paragraph);
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ * Creates and adds a new paragraph
97
+ * @param text Optional text content
98
+ */
99
+ createParagraph(text?: string): Paragraph {
100
+ const para = new Paragraph();
101
+ if (text) {
102
+ para.addText(text);
103
+ }
104
+ this.elements.push(para);
105
+ return para;
106
+ }
107
+
108
+ /**
109
+ * Adds a table to the header
110
+ * @param table Table to add
111
+ */
112
+ addTable(table: Table): this {
113
+ this.elements.push(table);
114
+ return this;
115
+ }
116
+
117
+ /**
118
+ * Creates and adds a new table
119
+ * @param rows Number of rows
120
+ * @param columns Number of columns
121
+ */
122
+ createTable(rows: number, columns: number): Table {
123
+ const table = new Table(rows, columns);
124
+ this.elements.push(table);
125
+ return table;
126
+ }
127
+
128
+ /**
129
+ * Gets all elements in the header
130
+ */
131
+ getElements(): HeaderElement[] {
132
+ return [...this.elements];
133
+ }
134
+
135
+ /**
136
+ * Gets the number of elements
137
+ */
138
+ getElementCount(): number {
139
+ return this.elements.length;
140
+ }
141
+
142
+ /**
143
+ * Clears all elements and resets raw XML so toXML() regenerates an empty header
144
+ */
145
+ clear(): this {
146
+ this.elements = [];
147
+ this.rawXML = undefined;
148
+ return this;
149
+ }
150
+
151
+ /**
152
+ * Generates the complete header XML file content
153
+ * This creates a complete header document (header1.xml, etc.)
154
+ */
155
+ toXML(): string {
156
+ // If we have raw XML preserved from loading, use it
157
+ if (this.rawXML) {
158
+ return this.rawXML;
159
+ }
160
+
161
+ // Otherwise generate from elements
162
+ const elementXmls = this.elements.map(el => el.toXML());
163
+
164
+ let xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
165
+ xml += '<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" ';
166
+ xml += 'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\n';
167
+
168
+ // Add elements
169
+ for (const element of elementXmls) {
170
+ xml += this.renderElement(element, 1);
171
+ }
172
+
173
+ // If no elements, add an empty paragraph
174
+ if (this.elements.length === 0) {
175
+ xml += ' <w:p/>\n';
176
+ }
177
+
178
+ xml += '</w:hdr>';
179
+
180
+ return xml;
181
+ }
182
+
183
+ /**
184
+ * Renders an XML element to string with indentation
185
+ */
186
+ private renderElement(element: XMLElement, indent: number): string {
187
+ const spaces = ' '.repeat(indent);
188
+ let xml = '';
189
+
190
+ if (element.selfClosing) {
191
+ xml += `${spaces}<${element.name}`;
192
+ if (element.attributes) {
193
+ for (const [key, value] of Object.entries(element.attributes)) {
194
+ xml += ` ${key}="${value}"`;
195
+ }
196
+ }
197
+ xml += '/>\n';
198
+ } else {
199
+ xml += `${spaces}<${element.name}`;
200
+ if (element.attributes) {
201
+ for (const [key, value] of Object.entries(element.attributes)) {
202
+ xml += ` ${key}="${value}"`;
203
+ }
204
+ }
205
+ xml += '>';
206
+
207
+ if (element.children && element.children.length > 0) {
208
+ const hasOnlyText = element.children.every(c => typeof c === 'string');
209
+
210
+ if (hasOnlyText) {
211
+ // Inline text content
212
+ xml += element.children.join('');
213
+ } else {
214
+ // Block-level children
215
+ xml += '\n';
216
+ for (const child of element.children) {
217
+ if (typeof child === 'string') {
218
+ xml += spaces + ' ' + child + '\n';
219
+ } else {
220
+ xml += this.renderElement(child, indent + 1);
221
+ }
222
+ }
223
+ xml += spaces;
224
+ }
225
+ }
226
+
227
+ xml += `</${element.name}>\n`;
228
+ }
229
+
230
+ return xml;
231
+ }
232
+
233
+ /**
234
+ * Gets the filename for this header
235
+ * @param number Header number (1, 2, 3, etc.)
236
+ */
237
+ getFilename(number: number): string {
238
+ return `header${number}.xml`;
239
+ }
240
+
241
+ /**
242
+ * Creates a default header
243
+ */
244
+ static createDefault(): Header {
245
+ return new Header({ type: 'default' });
246
+ }
247
+
248
+ /**
249
+ * Creates a first page header
250
+ */
251
+ static createFirst(): Header {
252
+ return new Header({ type: 'first' });
253
+ }
254
+
255
+ /**
256
+ * Creates an even page header
257
+ */
258
+ static createEven(): Header {
259
+ return new Header({ type: 'even' });
260
+ }
261
+
262
+ /**
263
+ * Creates a header with properties
264
+ * @param properties Header properties
265
+ */
266
+ static create(properties?: HeaderProperties): Header {
267
+ return new Header(properties);
268
+ }
269
+ }