docxmlater 10.0.2 → 10.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) 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 +23 -19
  9. package/dist/core/Document.d.ts.map +1 -1
  10. package/dist/core/Document.js +197 -63
  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 +86 -55
  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 +8 -0
  76. package/dist/elements/Paragraph.d.ts.map +1 -1
  77. package/dist/elements/Paragraph.js +153 -118
  78. package/dist/elements/Paragraph.js.map +1 -1
  79. package/dist/elements/PreservedElement.js.map +1 -1
  80. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  81. package/dist/elements/RangeMarker.js.map +1 -1
  82. package/dist/elements/Revision.d.ts +1 -0
  83. package/dist/elements/Revision.d.ts.map +1 -1
  84. package/dist/elements/Revision.js +44 -5
  85. package/dist/elements/Revision.js.map +1 -1
  86. package/dist/elements/RevisionContent.js.map +1 -1
  87. package/dist/elements/RevisionManager.d.ts.map +1 -1
  88. package/dist/elements/RevisionManager.js.map +1 -1
  89. package/dist/elements/Run.d.ts.map +1 -1
  90. package/dist/elements/Run.js +1 -3
  91. package/dist/elements/Run.js.map +1 -1
  92. package/dist/elements/Section.d.ts.map +1 -1
  93. package/dist/elements/Section.js +127 -118
  94. package/dist/elements/Section.js.map +1 -1
  95. package/dist/elements/Shape.d.ts.map +1 -1
  96. package/dist/elements/Shape.js +21 -0
  97. package/dist/elements/Shape.js.map +1 -1
  98. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  99. package/dist/elements/StructuredDocumentTag.js +20 -8
  100. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  101. package/dist/elements/Table.d.ts +2 -2
  102. package/dist/elements/Table.d.ts.map +1 -1
  103. package/dist/elements/Table.js +29 -35
  104. package/dist/elements/Table.js.map +1 -1
  105. package/dist/elements/TableCell.d.ts +2 -2
  106. package/dist/elements/TableCell.d.ts.map +1 -1
  107. package/dist/elements/TableCell.js +63 -67
  108. package/dist/elements/TableCell.js.map +1 -1
  109. package/dist/elements/TableGridChange.js.map +1 -1
  110. package/dist/elements/TableOfContents.d.ts +6 -6
  111. package/dist/elements/TableOfContents.d.ts.map +1 -1
  112. package/dist/elements/TableOfContents.js.map +1 -1
  113. package/dist/elements/TableOfContentsElement.js.map +1 -1
  114. package/dist/elements/TableRow.d.ts.map +1 -1
  115. package/dist/elements/TableRow.js +65 -47
  116. package/dist/elements/TableRow.js.map +1 -1
  117. package/dist/elements/TextBox.d.ts.map +1 -1
  118. package/dist/elements/TextBox.js +1 -1
  119. package/dist/elements/TextBox.js.map +1 -1
  120. package/dist/formatting/AbstractNumbering.d.ts +1 -1
  121. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  122. package/dist/formatting/AbstractNumbering.js +11 -11
  123. package/dist/formatting/AbstractNumbering.js.map +1 -1
  124. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  125. package/dist/formatting/NumberingInstance.js +4 -4
  126. package/dist/formatting/NumberingInstance.js.map +1 -1
  127. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  128. package/dist/formatting/NumberingLevel.js +26 -26
  129. package/dist/formatting/NumberingLevel.js.map +1 -1
  130. package/dist/formatting/NumberingManager.d.ts +1 -1
  131. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  132. package/dist/formatting/NumberingManager.js.map +1 -1
  133. package/dist/formatting/Style.d.ts.map +1 -1
  134. package/dist/formatting/Style.js +87 -95
  135. package/dist/formatting/Style.js.map +1 -1
  136. package/dist/formatting/StylesManager.d.ts +3 -3
  137. package/dist/formatting/StylesManager.d.ts.map +1 -1
  138. package/dist/formatting/StylesManager.js.map +1 -1
  139. package/dist/helpers/CleanupHelper.js.map +1 -1
  140. package/dist/images/ImageOptimizer.js.map +1 -1
  141. package/dist/index.js.map +1 -1
  142. package/dist/managers/DrawingManager.d.ts.map +1 -1
  143. package/dist/managers/DrawingManager.js.map +1 -1
  144. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  145. package/dist/tracking/TrackingContext.js.map +1 -1
  146. package/dist/types/compatibility-types.js.map +1 -1
  147. package/dist/types/formatting.js.map +1 -1
  148. package/dist/types/list-types.d.ts +4 -4
  149. package/dist/types/list-types.d.ts.map +1 -1
  150. package/dist/types/list-types.js.map +1 -1
  151. package/dist/types/settings-types.js.map +1 -1
  152. package/dist/types/styleConfig.js.map +1 -1
  153. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  154. package/dist/utils/ChangelogGenerator.js.map +1 -1
  155. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  156. package/dist/utils/CompatibilityUpgrader.js +7 -7
  157. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  158. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  159. package/dist/utils/InMemoryRevisionAcceptor.js +23 -2
  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.d.ts +1 -0
  165. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  166. package/dist/utils/SelectiveRevisionAcceptor.js +46 -0
  167. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  168. package/dist/utils/ShadingResolver.js +1 -1
  169. package/dist/utils/ShadingResolver.js.map +1 -1
  170. package/dist/utils/acceptRevisions.d.ts +0 -28
  171. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  172. package/dist/utils/acceptRevisions.js +5 -7
  173. package/dist/utils/acceptRevisions.js.map +1 -1
  174. package/dist/utils/cnfStyleDecoder.js +1 -1
  175. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  176. package/dist/utils/corruptionDetection.js.map +1 -1
  177. package/dist/utils/dateFormatting.js.map +1 -1
  178. package/dist/utils/deepClone.d.ts +0 -1
  179. package/dist/utils/deepClone.d.ts.map +1 -1
  180. package/dist/utils/deepClone.js +0 -7
  181. package/dist/utils/deepClone.js.map +1 -1
  182. package/dist/utils/diagnostics.d.ts +2 -2
  183. package/dist/utils/diagnostics.d.ts.map +1 -1
  184. package/dist/utils/diagnostics.js.map +1 -1
  185. package/dist/utils/errorHandling.js.map +1 -1
  186. package/dist/utils/formatting.js.map +1 -1
  187. package/dist/utils/list-detection.d.ts +2 -2
  188. package/dist/utils/list-detection.d.ts.map +1 -1
  189. package/dist/utils/list-detection.js +3 -3
  190. package/dist/utils/list-detection.js.map +1 -1
  191. package/dist/utils/logger.d.ts +2 -4
  192. package/dist/utils/logger.d.ts.map +1 -1
  193. package/dist/utils/logger.js +0 -2
  194. package/dist/utils/logger.js.map +1 -1
  195. package/dist/utils/parsingHelpers.js.map +1 -1
  196. package/dist/utils/stripTrackedChanges.d.ts +0 -19
  197. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  198. package/dist/utils/stripTrackedChanges.js +0 -2
  199. package/dist/utils/stripTrackedChanges.js.map +1 -1
  200. package/dist/utils/textDiff.js.map +1 -1
  201. package/dist/utils/units.js.map +1 -1
  202. package/dist/utils/validation.d.ts.map +1 -1
  203. package/dist/utils/validation.js.map +1 -1
  204. package/dist/utils/xmlSanitization.js.map +1 -1
  205. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  206. package/dist/validation/RevisionValidator.js.map +1 -1
  207. package/dist/validation/ValidationRules.js.map +1 -1
  208. package/dist/validation/index.js.map +1 -1
  209. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  210. package/dist/xml/XMLBuilder.js +10 -0
  211. package/dist/xml/XMLBuilder.js.map +1 -1
  212. package/dist/xml/XMLParser.d.ts.map +1 -1
  213. package/dist/xml/XMLParser.js +4 -5
  214. package/dist/xml/XMLParser.js.map +1 -1
  215. package/dist/zip/ZipHandler.js.map +1 -1
  216. package/dist/zip/ZipReader.js.map +1 -1
  217. package/dist/zip/ZipWriter.js.map +1 -1
  218. package/dist/zip/errors.js.map +1 -1
  219. package/dist/zip/types.js.map +1 -1
  220. package/package.json +34 -4
  221. package/src/__tests__/helper-methods.test.ts +512 -0
  222. package/src/constants/legacyCompatFlags.ts +138 -0
  223. package/src/constants/limits.ts +50 -0
  224. package/src/core/CLAUDE.md +109 -0
  225. package/src/core/Document.ts +15569 -0
  226. package/src/core/DocumentContent.ts +467 -0
  227. package/src/core/DocumentGenerator.ts +1104 -0
  228. package/src/core/DocumentIdManager.ts +158 -0
  229. package/src/core/DocumentParser.ts +10140 -0
  230. package/src/core/DocumentValidator.ts +372 -0
  231. package/src/core/Relationship.ts +367 -0
  232. package/src/core/RelationshipManager.ts +428 -0
  233. package/src/elements/AlternateContent.ts +42 -0
  234. package/src/elements/Bookmark.ts +210 -0
  235. package/src/elements/BookmarkManager.ts +250 -0
  236. package/src/elements/CLAUDE.md +126 -0
  237. package/src/elements/Comment.ts +359 -0
  238. package/src/elements/CommentManager.ts +502 -0
  239. package/src/elements/CommonTypes.ts +549 -0
  240. package/src/elements/CustomXml.ts +36 -0
  241. package/src/elements/Endnote.ts +217 -0
  242. package/src/elements/EndnoteManager.ts +249 -0
  243. package/src/elements/Field.ts +1233 -0
  244. package/src/elements/FieldHelpers.ts +333 -0
  245. package/src/elements/FontManager.ts +339 -0
  246. package/src/elements/Footer.ts +269 -0
  247. package/src/elements/Footnote.ts +217 -0
  248. package/src/elements/FootnoteManager.ts +249 -0
  249. package/src/elements/Header.ts +269 -0
  250. package/src/elements/HeaderFooterManager.ts +219 -0
  251. package/src/elements/Hyperlink.ts +1146 -0
  252. package/src/elements/Image.ts +1756 -0
  253. package/src/elements/ImageManager.ts +432 -0
  254. package/src/elements/ImageRun.ts +59 -0
  255. package/src/elements/MathElement.ts +65 -0
  256. package/src/elements/Paragraph.ts +4287 -0
  257. package/src/elements/PreservedElement.ts +53 -0
  258. package/src/elements/PropertyChangeTypes.ts +442 -0
  259. package/src/elements/RangeMarker.ts +400 -0
  260. package/src/elements/Revision.ts +1217 -0
  261. package/src/elements/RevisionContent.ts +73 -0
  262. package/src/elements/RevisionManager.ts +1070 -0
  263. package/src/elements/Run.ts +3068 -0
  264. package/src/elements/Section.ts +1421 -0
  265. package/src/elements/Shape.ts +873 -0
  266. package/src/elements/StructuredDocumentTag.ts +978 -0
  267. package/src/elements/Table.ts +2524 -0
  268. package/src/elements/TableCell.ts +1586 -0
  269. package/src/elements/TableGridChange.ts +151 -0
  270. package/src/elements/TableOfContents.ts +691 -0
  271. package/src/elements/TableOfContentsElement.ts +89 -0
  272. package/src/elements/TableRow.ts +906 -0
  273. package/src/elements/TextBox.ts +768 -0
  274. package/src/formatting/AbstractNumbering.ts +548 -0
  275. package/src/formatting/CLAUDE.md +74 -0
  276. package/src/formatting/NumberingInstance.ts +212 -0
  277. package/src/formatting/NumberingLevel.ts +1006 -0
  278. package/src/formatting/NumberingManager.ts +827 -0
  279. package/src/formatting/Style.ts +1833 -0
  280. package/src/formatting/StylesManager.ts +1005 -0
  281. package/src/helpers/CleanupHelper.ts +524 -0
  282. package/src/images/ImageOptimizer.ts +274 -0
  283. package/src/index.ts +554 -0
  284. package/src/managers/CLAUDE.md +47 -0
  285. package/src/managers/DrawingManager.ts +319 -0
  286. package/src/tracking/DocumentTrackingContext.ts +643 -0
  287. package/src/tracking/TrackingContext.ts +173 -0
  288. package/src/types/compatibility-types.ts +49 -0
  289. package/src/types/formatting.ts +210 -0
  290. package/src/types/list-types.ts +152 -0
  291. package/src/types/settings-types.ts +59 -0
  292. package/src/types/styleConfig.ts +189 -0
  293. package/src/utils/CLAUDE.md +153 -0
  294. package/src/utils/ChangelogGenerator.ts +1581 -0
  295. package/src/utils/CompatibilityUpgrader.ts +237 -0
  296. package/src/utils/InMemoryRevisionAcceptor.ts +696 -0
  297. package/src/utils/MoveOperationHelper.ts +238 -0
  298. package/src/utils/RevisionAwareProcessor.ts +526 -0
  299. package/src/utils/RevisionWalker.ts +457 -0
  300. package/src/utils/SelectiveRevisionAcceptor.ts +683 -0
  301. package/src/utils/ShadingResolver.ts +107 -0
  302. package/src/utils/acceptRevisions.ts +714 -0
  303. package/src/utils/cnfStyleDecoder.ts +217 -0
  304. package/src/utils/corruptionDetection.ts +345 -0
  305. package/src/utils/dateFormatting.ts +20 -0
  306. package/src/utils/deepClone.ts +78 -0
  307. package/src/utils/diagnostics.ts +129 -0
  308. package/src/utils/errorHandling.ts +80 -0
  309. package/src/utils/formatting.ts +213 -0
  310. package/src/utils/list-detection.ts +274 -0
  311. package/src/utils/logger.ts +404 -0
  312. package/src/utils/parsingHelpers.ts +190 -0
  313. package/src/utils/stripTrackedChanges.ts +353 -0
  314. package/src/utils/textDiff.ts +100 -0
  315. package/src/utils/units.ts +421 -0
  316. package/src/utils/validation.ts +542 -0
  317. package/src/utils/xmlSanitization.ts +182 -0
  318. package/src/validation/RevisionAutoFixer.ts +542 -0
  319. package/src/validation/RevisionValidator.ts +460 -0
  320. package/src/validation/ValidationRules.ts +338 -0
  321. package/src/validation/index.ts +30 -0
  322. package/src/xml/CLAUDE.md +65 -0
  323. package/src/xml/XMLBuilder.ts +871 -0
  324. package/src/xml/XMLParser.ts +919 -0
  325. package/src/zip/CLAUDE.md +55 -0
  326. package/src/zip/ZipHandler.ts +637 -0
  327. package/src/zip/ZipReader.ts +299 -0
  328. package/src/zip/ZipWriter.ts +390 -0
  329. package/src/zip/errors.ts +69 -0
  330. package/src/zip/types.ts +116 -0
  331. package/dist/core/ListNormalizer.d.ts +0 -23
  332. package/dist/core/ListNormalizer.d.ts.map +0 -1
  333. package/dist/core/ListNormalizer.js +0 -624
  334. package/dist/core/ListNormalizer.js.map +0 -1
  335. package/dist/images/index.d.ts +0 -2
  336. package/dist/images/index.d.ts.map +0 -1
  337. package/dist/images/index.js +0 -8
  338. package/dist/images/index.js.map +0 -1
  339. package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
  340. package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
  341. package/dist/ms-doc/cfb/CFBReader.js +0 -360
  342. package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
  343. package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
  344. package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
  345. package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
  346. package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
  347. package/dist/ms-doc/fib/FIB.d.ts +0 -18
  348. package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
  349. package/dist/ms-doc/fib/FIB.js +0 -342
  350. package/dist/ms-doc/fib/FIB.js.map +0 -1
  351. package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
  352. package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
  353. package/dist/ms-doc/fields/FieldParser.js +0 -266
  354. package/dist/ms-doc/fields/FieldParser.js.map +0 -1
  355. package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
  356. package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
  357. package/dist/ms-doc/images/PictureExtractor.js +0 -233
  358. package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
  359. package/dist/ms-doc/index.d.ts +0 -20
  360. package/dist/ms-doc/index.d.ts.map +0 -1
  361. package/dist/ms-doc/index.js +0 -59
  362. package/dist/ms-doc/index.js.map +0 -1
  363. package/dist/ms-doc/properties/SPRM.d.ts +0 -210
  364. package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
  365. package/dist/ms-doc/properties/SPRM.js +0 -633
  366. package/dist/ms-doc/properties/SPRM.js.map +0 -1
  367. package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
  368. package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
  369. package/dist/ms-doc/sections/SectionParser.js +0 -214
  370. package/dist/ms-doc/sections/SectionParser.js.map +0 -1
  371. package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
  372. package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
  373. package/dist/ms-doc/styles/StyleSheet.js +0 -268
  374. package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
  375. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
  376. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
  377. package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
  378. package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
  379. package/dist/ms-doc/tables/TableParser.d.ts +0 -29
  380. package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
  381. package/dist/ms-doc/tables/TableParser.js +0 -176
  382. package/dist/ms-doc/tables/TableParser.js.map +0 -1
  383. package/dist/ms-doc/text/PieceTable.d.ts +0 -21
  384. package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
  385. package/dist/ms-doc/text/PieceTable.js +0 -171
  386. package/dist/ms-doc/text/PieceTable.js.map +0 -1
  387. package/dist/ms-doc/types/Constants.d.ts +0 -99
  388. package/dist/ms-doc/types/Constants.d.ts.map +0 -1
  389. package/dist/ms-doc/types/Constants.js +0 -102
  390. package/dist/ms-doc/types/Constants.js.map +0 -1
  391. package/dist/ms-doc/types/DocTypes.d.ts +0 -368
  392. package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
  393. package/dist/ms-doc/types/DocTypes.js +0 -3
  394. package/dist/ms-doc/types/DocTypes.js.map +0 -1
  395. package/dist/tracking/index.d.ts +0 -3
  396. package/dist/tracking/index.d.ts.map +0 -1
  397. package/dist/tracking/index.js +0 -6
  398. package/dist/tracking/index.js.map +0 -1
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Footer - Represents a document footer
3
+ *
4
+ * Footers appear at the bottom of pages and can contain text, tables, images, and fields.
5
+ * Different footers 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
+ * Footer type
14
+ */
15
+ export type FooterType = 'default' | 'first' | 'even';
16
+
17
+ /**
18
+ * Footer content element
19
+ */
20
+ type FooterElement = Paragraph | Table;
21
+
22
+ /**
23
+ * Footer properties
24
+ */
25
+ export interface FooterProperties {
26
+ /** Footer type (default, first page, or even page) */
27
+ type?: FooterType;
28
+ }
29
+
30
+ /**
31
+ * Represents a document footer
32
+ */
33
+ export class Footer {
34
+ private elements: FooterElement[] = [];
35
+ private type: FooterType;
36
+ private footerId?: string;
37
+ private rawXML?: string; // Store original XML for preservation
38
+
39
+ /**
40
+ * Creates a new footer
41
+ * @param properties Footer properties
42
+ */
43
+ constructor(properties: FooterProperties = {}) {
44
+ this.type = properties.type || 'default';
45
+ }
46
+
47
+ /**
48
+ * Sets the raw XML content (used when loading existing footers)
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 footer type
65
+ */
66
+ getType(): FooterType {
67
+ return this.type;
68
+ }
69
+
70
+ /**
71
+ * Sets the footer ID (used for relationships)
72
+ * @param id Footer ID
73
+ */
74
+ setFooterId(id: string): this {
75
+ this.footerId = id;
76
+ return this;
77
+ }
78
+
79
+ /**
80
+ * Gets the footer ID
81
+ */
82
+ getFooterId(): string | undefined {
83
+ return this.footerId;
84
+ }
85
+
86
+ /**
87
+ * Adds a paragraph to the footer
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 footer
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 footer
130
+ */
131
+ getElements(): FooterElement[] {
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 footer
144
+ */
145
+ clear(): this {
146
+ this.elements = [];
147
+ this.rawXML = undefined;
148
+ return this;
149
+ }
150
+
151
+ /**
152
+ * Generates the complete footer XML file content
153
+ * This creates a complete footer document (footer1.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:ftr 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:ftr>';
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 footer
235
+ * @param number Footer number (1, 2, 3, etc.)
236
+ */
237
+ getFilename(number: number): string {
238
+ return `footer${number}.xml`;
239
+ }
240
+
241
+ /**
242
+ * Creates a default footer
243
+ */
244
+ static createDefault(): Footer {
245
+ return new Footer({ type: 'default' });
246
+ }
247
+
248
+ /**
249
+ * Creates a first page footer
250
+ */
251
+ static createFirst(): Footer {
252
+ return new Footer({ type: 'first' });
253
+ }
254
+
255
+ /**
256
+ * Creates an even page footer
257
+ */
258
+ static createEven(): Footer {
259
+ return new Footer({ type: 'even' });
260
+ }
261
+
262
+ /**
263
+ * Creates a footer with properties
264
+ * @param properties Footer properties
265
+ */
266
+ static create(properties?: FooterProperties): Footer {
267
+ return new Footer(properties);
268
+ }
269
+ }
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Footnote - Represents a footnote in a Word document
3
+ *
4
+ * Footnotes appear at the bottom of the page and are referenced
5
+ * within the document text via footnote references.
6
+ */
7
+
8
+ import { Paragraph } from './Paragraph';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
+
11
+ /**
12
+ * Footnote type
13
+ */
14
+ export enum FootnoteType {
15
+ /** Normal footnote */
16
+ Normal = 'normal',
17
+ /** Separator between document text and footnotes */
18
+ Separator = 'separator',
19
+ /** Continuation separator for footnotes that continue to next page */
20
+ ContinuationSeparator = 'continuationSeparator',
21
+ /** Continuation notice at bottom of page when footnotes continue */
22
+ ContinuationNotice = 'continuationNotice',
23
+ }
24
+
25
+ /**
26
+ * Footnote properties
27
+ */
28
+ export interface FootnoteProperties {
29
+ /** Footnote ID (required, must be unique) */
30
+ id: number;
31
+ /** Type of footnote */
32
+ type?: FootnoteType;
33
+ /** Custom mark/symbol (optional, otherwise uses numbering) */
34
+ customMark?: string;
35
+ }
36
+
37
+ /**
38
+ * Represents a footnote in a document
39
+ */
40
+ export class Footnote {
41
+ private id: number;
42
+ private type: FootnoteType;
43
+ private customMark?: string;
44
+ private paragraphs: Paragraph[] = [];
45
+
46
+ /**
47
+ * Creates a new footnote
48
+ * @param properties Footnote properties
49
+ */
50
+ constructor(properties: FootnoteProperties) {
51
+ this.id = properties.id;
52
+ this.type = properties.type || FootnoteType.Normal;
53
+ this.customMark = properties.customMark;
54
+ }
55
+
56
+ /**
57
+ * Gets the footnote ID
58
+ */
59
+ getId(): number {
60
+ return this.id;
61
+ }
62
+
63
+ /**
64
+ * Gets the footnote type
65
+ */
66
+ getType(): FootnoteType {
67
+ return this.type;
68
+ }
69
+
70
+ /**
71
+ * Gets the custom mark
72
+ */
73
+ getCustomMark(): string | undefined {
74
+ return this.customMark;
75
+ }
76
+
77
+ /**
78
+ * Sets the custom mark
79
+ * @param mark Custom mark/symbol
80
+ */
81
+ setCustomMark(mark: string): this {
82
+ this.customMark = mark;
83
+ return this;
84
+ }
85
+
86
+ /**
87
+ * Adds a paragraph to the footnote
88
+ * @param paragraph Paragraph to add
89
+ */
90
+ addParagraph(paragraph: Paragraph): this {
91
+ this.paragraphs.push(paragraph);
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ * Creates and adds a new paragraph
97
+ * @param text Optional text content
98
+ * @returns The created paragraph
99
+ */
100
+ createParagraph(text?: string): Paragraph {
101
+ const para = new Paragraph();
102
+ if (text) {
103
+ para.addText(text);
104
+ }
105
+ this.paragraphs.push(para);
106
+ return para;
107
+ }
108
+
109
+ /**
110
+ * Gets all paragraphs in the footnote
111
+ */
112
+ getParagraphs(): Paragraph[] {
113
+ return [...this.paragraphs];
114
+ }
115
+
116
+ /**
117
+ * Gets the text content of the footnote
118
+ */
119
+ getText(): string {
120
+ return this.paragraphs.map(p => p.getText()).join('\n');
121
+ }
122
+
123
+ /**
124
+ * Generates the XML for this footnote
125
+ */
126
+ toXML(): XMLElement {
127
+ const attrs: Record<string, any> = {
128
+ 'w:id': this.id.toString(),
129
+ };
130
+
131
+ if (this.type !== FootnoteType.Normal) {
132
+ attrs['w:type'] = this.type;
133
+ }
134
+
135
+ const children: XMLElement[] = [];
136
+
137
+ // Separator types require specific child elements per ECMA-376
138
+ if (this.type === FootnoteType.Separator) {
139
+ // <w:p><w:r><w:separator/></w:r></w:p>
140
+ children.push(XMLBuilder.w('p', undefined, [
141
+ XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')])
142
+ ]));
143
+ } else if (this.type === FootnoteType.ContinuationSeparator) {
144
+ // <w:p><w:r><w:continuationSeparator/></w:r></w:p>
145
+ children.push(XMLBuilder.w('p', undefined, [
146
+ XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')])
147
+ ]));
148
+ } else {
149
+ // Add paragraphs
150
+ for (const para of this.paragraphs) {
151
+ children.push(para.toXML());
152
+ }
153
+
154
+ // If no paragraphs, add an empty one (required)
155
+ if (children.length === 0) {
156
+ children.push(XMLBuilder.w('p'));
157
+ }
158
+ }
159
+
160
+ return XMLBuilder.w('footnote', attrs, children);
161
+ }
162
+
163
+ /**
164
+ * Creates a footnote from text
165
+ * @param id Footnote ID
166
+ * @param text Text content
167
+ * @returns New footnote instance
168
+ */
169
+ static fromText(id: number, text: string): Footnote {
170
+ const footnote = new Footnote({ id });
171
+ footnote.createParagraph(text);
172
+ return footnote;
173
+ }
174
+
175
+ /**
176
+ * Creates a separator footnote
177
+ * @param id Footnote ID
178
+ * @returns New separator footnote
179
+ */
180
+ static createSeparator(id: number): Footnote {
181
+ const footnote = new Footnote({
182
+ id,
183
+ type: FootnoteType.Separator
184
+ });
185
+ // Separator typically has a horizontal line
186
+ footnote.createParagraph();
187
+ // Add separator formatting if needed
188
+ return footnote;
189
+ }
190
+
191
+ /**
192
+ * Creates a continuation separator footnote
193
+ * @param id Footnote ID
194
+ * @returns New continuation separator footnote
195
+ */
196
+ static createContinuationSeparator(id: number): Footnote {
197
+ return new Footnote({
198
+ id,
199
+ type: FootnoteType.ContinuationSeparator
200
+ });
201
+ }
202
+
203
+ /**
204
+ * Creates a continuation notice footnote
205
+ * @param id Footnote ID
206
+ * @param text Notice text (e.g., "Continued on next page...")
207
+ * @returns New continuation notice footnote
208
+ */
209
+ static createContinuationNotice(id: number, text = 'Continued...'): Footnote {
210
+ const footnote = new Footnote({
211
+ id,
212
+ type: FootnoteType.ContinuationNotice
213
+ });
214
+ footnote.createParagraph(text);
215
+ return footnote;
216
+ }
217
+ }