docxmlater 10.4.0 → 11.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/README.md +3 -3
  2. package/dist/constants/legacyCompatFlags.d.ts +1 -1
  3. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  4. package/dist/constants/legacyCompatFlags.js.map +1 -1
  5. package/dist/core/Document.d.ts +75 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +618 -414
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +11 -10
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +19 -19
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentEvents.d.ts +39 -0
  14. package/dist/core/DocumentEvents.d.ts.map +1 -0
  15. package/dist/core/DocumentEvents.js +51 -0
  16. package/dist/core/DocumentEvents.js.map +1 -0
  17. package/dist/core/DocumentGenerator.d.ts +11 -11
  18. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  19. package/dist/core/DocumentGenerator.js +72 -52
  20. package/dist/core/DocumentGenerator.js.map +1 -1
  21. package/dist/core/DocumentParser.d.ts +15 -15
  22. package/dist/core/DocumentParser.d.ts.map +1 -1
  23. package/dist/core/DocumentParser.js +2100 -1076
  24. package/dist/core/DocumentParser.js.map +1 -1
  25. package/dist/core/DocumentValidator.d.ts +3 -3
  26. package/dist/core/DocumentValidator.d.ts.map +1 -1
  27. package/dist/core/DocumentValidator.js +31 -31
  28. package/dist/core/DocumentValidator.js.map +1 -1
  29. package/dist/core/ElementRegistry.d.ts +22 -0
  30. package/dist/core/ElementRegistry.d.ts.map +1 -0
  31. package/dist/core/ElementRegistry.js +27 -0
  32. package/dist/core/ElementRegistry.js.map +1 -0
  33. package/dist/core/Relationship.js +4 -4
  34. package/dist/core/Relationship.js.map +1 -1
  35. package/dist/core/RelationshipManager.d.ts +1 -1
  36. package/dist/core/RelationshipManager.d.ts.map +1 -1
  37. package/dist/core/RelationshipManager.js +32 -32
  38. package/dist/core/RelationshipManager.js.map +1 -1
  39. package/dist/elements/AlternateContent.d.ts +1 -1
  40. package/dist/elements/AlternateContent.d.ts.map +1 -1
  41. package/dist/elements/AlternateContent.js.map +1 -1
  42. package/dist/elements/Bookmark.d.ts +6 -1
  43. package/dist/elements/Bookmark.d.ts.map +1 -1
  44. package/dist/elements/Bookmark.js +19 -3
  45. package/dist/elements/Bookmark.js.map +1 -1
  46. package/dist/elements/BookmarkManager.d.ts +1 -1
  47. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  48. package/dist/elements/BookmarkManager.js +7 -7
  49. package/dist/elements/BookmarkManager.js.map +1 -1
  50. package/dist/elements/Comment.d.ts +2 -2
  51. package/dist/elements/Comment.d.ts.map +1 -1
  52. package/dist/elements/Comment.js +4 -4
  53. package/dist/elements/Comment.js.map +1 -1
  54. package/dist/elements/CommentManager.d.ts +2 -2
  55. package/dist/elements/CommentManager.d.ts.map +1 -1
  56. package/dist/elements/CommentManager.js +9 -9
  57. package/dist/elements/CommentManager.js.map +1 -1
  58. package/dist/elements/CommonTypes.d.ts +9 -4
  59. package/dist/elements/CommonTypes.d.ts.map +1 -1
  60. package/dist/elements/CommonTypes.js +1 -0
  61. package/dist/elements/CommonTypes.js.map +1 -1
  62. package/dist/elements/CustomXml.d.ts +1 -1
  63. package/dist/elements/CustomXml.d.ts.map +1 -1
  64. package/dist/elements/CustomXml.js.map +1 -1
  65. package/dist/elements/Endnote.d.ts +2 -2
  66. package/dist/elements/Endnote.d.ts.map +1 -1
  67. package/dist/elements/Endnote.js +9 -9
  68. package/dist/elements/Endnote.js.map +1 -1
  69. package/dist/elements/EndnoteManager.d.ts +1 -1
  70. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  71. package/dist/elements/EndnoteManager.js +11 -11
  72. package/dist/elements/EndnoteManager.js.map +1 -1
  73. package/dist/elements/Field.d.ts +9 -5
  74. package/dist/elements/Field.d.ts.map +1 -1
  75. package/dist/elements/Field.js +21 -9
  76. package/dist/elements/Field.js.map +1 -1
  77. package/dist/elements/FieldHelpers.d.ts +1 -1
  78. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  79. package/dist/elements/FieldHelpers.js +10 -10
  80. package/dist/elements/FieldHelpers.js.map +1 -1
  81. package/dist/elements/Footer.d.ts +3 -3
  82. package/dist/elements/Footer.d.ts.map +1 -1
  83. package/dist/elements/Footer.js +5 -5
  84. package/dist/elements/Footer.js.map +1 -1
  85. package/dist/elements/Footnote.d.ts +2 -2
  86. package/dist/elements/Footnote.d.ts.map +1 -1
  87. package/dist/elements/Footnote.js +9 -9
  88. package/dist/elements/Footnote.js.map +1 -1
  89. package/dist/elements/FootnoteManager.d.ts +1 -1
  90. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  91. package/dist/elements/FootnoteManager.js +11 -11
  92. package/dist/elements/FootnoteManager.js.map +1 -1
  93. package/dist/elements/Header.d.ts +3 -3
  94. package/dist/elements/Header.d.ts.map +1 -1
  95. package/dist/elements/Header.js +5 -5
  96. package/dist/elements/Header.js.map +1 -1
  97. package/dist/elements/HeaderFooterManager.d.ts +2 -2
  98. package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
  99. package/dist/elements/HeaderFooterManager.js.map +1 -1
  100. package/dist/elements/Hyperlink.d.ts +5 -5
  101. package/dist/elements/Hyperlink.d.ts.map +1 -1
  102. package/dist/elements/Hyperlink.js +29 -29
  103. package/dist/elements/Hyperlink.js.map +1 -1
  104. package/dist/elements/Image.d.ts +1 -1
  105. package/dist/elements/Image.d.ts.map +1 -1
  106. package/dist/elements/Image.js +67 -67
  107. package/dist/elements/Image.js.map +1 -1
  108. package/dist/elements/ImageManager.d.ts +1 -1
  109. package/dist/elements/ImageManager.d.ts.map +1 -1
  110. package/dist/elements/ImageManager.js +4 -4
  111. package/dist/elements/ImageManager.js.map +1 -1
  112. package/dist/elements/ImageRun.d.ts +3 -3
  113. package/dist/elements/ImageRun.d.ts.map +1 -1
  114. package/dist/elements/ImageRun.js +2 -2
  115. package/dist/elements/ImageRun.js.map +1 -1
  116. package/dist/elements/MathElement.d.ts +1 -1
  117. package/dist/elements/MathElement.d.ts.map +1 -1
  118. package/dist/elements/MathElement.js.map +1 -1
  119. package/dist/elements/Paragraph.d.ts +34 -19
  120. package/dist/elements/Paragraph.d.ts.map +1 -1
  121. package/dist/elements/Paragraph.js +286 -231
  122. package/dist/elements/Paragraph.js.map +1 -1
  123. package/dist/elements/PreservedElement.d.ts +1 -1
  124. package/dist/elements/PreservedElement.d.ts.map +1 -1
  125. package/dist/elements/PreservedElement.js.map +1 -1
  126. package/dist/elements/PropertyChangeTypes.d.ts +2 -2
  127. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  128. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  129. package/dist/elements/RangeMarker.d.ts +14 -1
  130. package/dist/elements/RangeMarker.d.ts.map +1 -1
  131. package/dist/elements/RangeMarker.js +46 -8
  132. package/dist/elements/RangeMarker.js.map +1 -1
  133. package/dist/elements/RegisteredBodyElement.d.ts +15 -0
  134. package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
  135. package/dist/elements/RegisteredBodyElement.js +44 -0
  136. package/dist/elements/RegisteredBodyElement.js.map +1 -0
  137. package/dist/elements/Revision.d.ts +8 -8
  138. package/dist/elements/Revision.d.ts.map +1 -1
  139. package/dist/elements/Revision.js +12 -12
  140. package/dist/elements/Revision.js.map +1 -1
  141. package/dist/elements/RevisionContent.d.ts +3 -3
  142. package/dist/elements/RevisionContent.d.ts.map +1 -1
  143. package/dist/elements/RevisionContent.js.map +1 -1
  144. package/dist/elements/RevisionManager.d.ts +2 -2
  145. package/dist/elements/RevisionManager.d.ts.map +1 -1
  146. package/dist/elements/RevisionManager.js +2 -2
  147. package/dist/elements/RevisionManager.js.map +1 -1
  148. package/dist/elements/Run.d.ts +16 -10
  149. package/dist/elements/Run.d.ts.map +1 -1
  150. package/dist/elements/Run.js +199 -173
  151. package/dist/elements/Run.js.map +1 -1
  152. package/dist/elements/Section.d.ts +4 -2
  153. package/dist/elements/Section.d.ts.map +1 -1
  154. package/dist/elements/Section.js +152 -145
  155. package/dist/elements/Section.js.map +1 -1
  156. package/dist/elements/Shape.d.ts +3 -3
  157. package/dist/elements/Shape.d.ts.map +1 -1
  158. package/dist/elements/Shape.js +12 -12
  159. package/dist/elements/Shape.js.map +1 -1
  160. package/dist/elements/StructuredDocumentTag.d.ts +3 -3
  161. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  162. package/dist/elements/StructuredDocumentTag.js +39 -39
  163. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  164. package/dist/elements/Table.d.ts +16 -10
  165. package/dist/elements/Table.d.ts.map +1 -1
  166. package/dist/elements/Table.js +118 -89
  167. package/dist/elements/Table.js.map +1 -1
  168. package/dist/elements/TableCell.d.ts +11 -11
  169. package/dist/elements/TableCell.d.ts.map +1 -1
  170. package/dist/elements/TableCell.js +108 -78
  171. package/dist/elements/TableCell.js.map +1 -1
  172. package/dist/elements/TableGridChange.d.ts +1 -1
  173. package/dist/elements/TableGridChange.d.ts.map +1 -1
  174. package/dist/elements/TableGridChange.js +3 -3
  175. package/dist/elements/TableGridChange.js.map +1 -1
  176. package/dist/elements/TableOfContents.d.ts +1 -1
  177. package/dist/elements/TableOfContents.d.ts.map +1 -1
  178. package/dist/elements/TableOfContents.js +2 -2
  179. package/dist/elements/TableOfContents.js.map +1 -1
  180. package/dist/elements/TableOfContentsElement.d.ts +2 -2
  181. package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
  182. package/dist/elements/TableOfContentsElement.js +5 -5
  183. package/dist/elements/TableOfContentsElement.js.map +1 -1
  184. package/dist/elements/TableRow.d.ts +18 -7
  185. package/dist/elements/TableRow.d.ts.map +1 -1
  186. package/dist/elements/TableRow.js +127 -74
  187. package/dist/elements/TableRow.js.map +1 -1
  188. package/dist/elements/TextBox.d.ts +4 -4
  189. package/dist/elements/TextBox.d.ts.map +1 -1
  190. package/dist/elements/TextBox.js +6 -6
  191. package/dist/elements/TextBox.js.map +1 -1
  192. package/dist/esm/constants/legacyCompatFlags.js +97 -0
  193. package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
  194. package/dist/esm/constants/limits.js +36 -0
  195. package/dist/esm/constants/limits.js.map +1 -0
  196. package/dist/esm/core/Document.js +8498 -0
  197. package/dist/esm/core/Document.js.map +1 -0
  198. package/dist/esm/core/DocumentContent.js +190 -0
  199. package/dist/esm/core/DocumentContent.js.map +1 -0
  200. package/dist/esm/core/DocumentEvents.js +47 -0
  201. package/dist/esm/core/DocumentEvents.js.map +1 -0
  202. package/dist/esm/core/DocumentGenerator.js +764 -0
  203. package/dist/esm/core/DocumentGenerator.js.map +1 -0
  204. package/dist/esm/core/DocumentIdManager.js +67 -0
  205. package/dist/esm/core/DocumentIdManager.js.map +1 -0
  206. package/dist/esm/core/DocumentParser.js +8760 -0
  207. package/dist/esm/core/DocumentParser.js.map +1 -0
  208. package/dist/esm/core/DocumentValidator.js +222 -0
  209. package/dist/esm/core/DocumentValidator.js.map +1 -0
  210. package/dist/esm/core/ElementRegistry.js +24 -0
  211. package/dist/esm/core/ElementRegistry.js.map +1 -0
  212. package/dist/esm/core/Relationship.js +177 -0
  213. package/dist/esm/core/Relationship.js.map +1 -0
  214. package/dist/esm/core/RelationshipManager.js +202 -0
  215. package/dist/esm/core/RelationshipManager.js.map +1 -0
  216. package/dist/esm/elements/AlternateContent.js +19 -0
  217. package/dist/esm/elements/AlternateContent.js.map +1 -0
  218. package/dist/esm/elements/Bookmark.js +115 -0
  219. package/dist/esm/elements/Bookmark.js.map +1 -0
  220. package/dist/esm/elements/BookmarkManager.js +99 -0
  221. package/dist/esm/elements/BookmarkManager.js.map +1 -0
  222. package/dist/esm/elements/Comment.js +181 -0
  223. package/dist/esm/elements/Comment.js.map +1 -0
  224. package/dist/esm/elements/CommentManager.js +233 -0
  225. package/dist/esm/elements/CommentManager.js.map +1 -0
  226. package/dist/esm/elements/CommonTypes.js +106 -0
  227. package/dist/esm/elements/CommonTypes.js.map +1 -0
  228. package/dist/esm/elements/CustomXml.js +19 -0
  229. package/dist/esm/elements/CustomXml.js.map +1 -0
  230. package/dist/esm/elements/Endnote.js +107 -0
  231. package/dist/esm/elements/Endnote.js.map +1 -0
  232. package/dist/esm/elements/EndnoteManager.js +119 -0
  233. package/dist/esm/elements/EndnoteManager.js.map +1 -0
  234. package/dist/esm/elements/Field.js +856 -0
  235. package/dist/esm/elements/Field.js.map +1 -0
  236. package/dist/esm/elements/FieldHelpers.js +134 -0
  237. package/dist/esm/elements/FieldHelpers.js.map +1 -0
  238. package/dist/esm/elements/FontManager.js +158 -0
  239. package/dist/esm/elements/FontManager.js.map +1 -0
  240. package/dist/esm/elements/Footer.js +141 -0
  241. package/dist/esm/elements/Footer.js.map +1 -0
  242. package/dist/esm/elements/Footnote.js +107 -0
  243. package/dist/esm/elements/Footnote.js.map +1 -0
  244. package/dist/esm/elements/FootnoteManager.js +119 -0
  245. package/dist/esm/elements/FootnoteManager.js.map +1 -0
  246. package/dist/esm/elements/Header.js +141 -0
  247. package/dist/esm/elements/Header.js.map +1 -0
  248. package/dist/esm/elements/HeaderFooterManager.js +87 -0
  249. package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
  250. package/dist/esm/elements/Hyperlink.js +586 -0
  251. package/dist/esm/elements/Hyperlink.js.map +1 -0
  252. package/dist/esm/elements/Image.js +1288 -0
  253. package/dist/esm/elements/Image.js.map +1 -0
  254. package/dist/esm/elements/ImageManager.js +223 -0
  255. package/dist/esm/elements/ImageManager.js.map +1 -0
  256. package/dist/esm/elements/ImageRun.js +29 -0
  257. package/dist/esm/elements/ImageRun.js.map +1 -0
  258. package/dist/esm/elements/MathElement.js +37 -0
  259. package/dist/esm/elements/MathElement.js.map +1 -0
  260. package/dist/esm/elements/Paragraph.js +2308 -0
  261. package/dist/esm/elements/Paragraph.js.map +1 -0
  262. package/dist/esm/elements/PreservedElement.js +29 -0
  263. package/dist/esm/elements/PreservedElement.js.map +1 -0
  264. package/dist/esm/elements/PropertyChangeTypes.js +53 -0
  265. package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
  266. package/dist/esm/elements/RangeMarker.js +219 -0
  267. package/dist/esm/elements/RangeMarker.js.map +1 -0
  268. package/dist/esm/elements/RegisteredBodyElement.js +40 -0
  269. package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
  270. package/dist/esm/elements/Revision.js +498 -0
  271. package/dist/esm/elements/Revision.js.map +1 -0
  272. package/dist/esm/elements/RevisionContent.js +18 -0
  273. package/dist/esm/elements/RevisionContent.js.map +1 -0
  274. package/dist/esm/elements/RevisionManager.js +486 -0
  275. package/dist/esm/elements/RevisionManager.js.map +1 -0
  276. package/dist/esm/elements/Run.js +1465 -0
  277. package/dist/esm/elements/Run.js.map +1 -0
  278. package/dist/esm/elements/Section.js +978 -0
  279. package/dist/esm/elements/Section.js.map +1 -0
  280. package/dist/esm/elements/Shape.js +493 -0
  281. package/dist/esm/elements/Shape.js.map +1 -0
  282. package/dist/esm/elements/StructuredDocumentTag.js +471 -0
  283. package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
  284. package/dist/esm/elements/Table.js +1456 -0
  285. package/dist/esm/elements/Table.js.map +1 -0
  286. package/dist/esm/elements/TableCell.js +835 -0
  287. package/dist/esm/elements/TableCell.js.map +1 -0
  288. package/dist/esm/elements/TableGridChange.js +52 -0
  289. package/dist/esm/elements/TableGridChange.js.map +1 -0
  290. package/dist/esm/elements/TableOfContents.js +389 -0
  291. package/dist/esm/elements/TableOfContents.js.map +1 -0
  292. package/dist/esm/elements/TableOfContentsElement.js +29 -0
  293. package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
  294. package/dist/esm/elements/TableRow.js +555 -0
  295. package/dist/esm/elements/TableRow.js.map +1 -0
  296. package/dist/esm/elements/TextBox.js +459 -0
  297. package/dist/esm/elements/TextBox.js.map +1 -0
  298. package/dist/esm/formatting/AbstractNumbering.js +325 -0
  299. package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
  300. package/dist/esm/formatting/NumberingInstance.js +150 -0
  301. package/dist/esm/formatting/NumberingInstance.js.map +1 -0
  302. package/dist/esm/formatting/NumberingLevel.js +608 -0
  303. package/dist/esm/formatting/NumberingLevel.js.map +1 -0
  304. package/dist/esm/formatting/NumberingManager.js +423 -0
  305. package/dist/esm/formatting/NumberingManager.js.map +1 -0
  306. package/dist/esm/formatting/Style.js +1151 -0
  307. package/dist/esm/formatting/Style.js.map +1 -0
  308. package/dist/esm/formatting/StylesManager.js +557 -0
  309. package/dist/esm/formatting/StylesManager.js.map +1 -0
  310. package/dist/esm/helpers/CleanupHelper.js +350 -0
  311. package/dist/esm/helpers/CleanupHelper.js.map +1 -0
  312. package/dist/esm/images/ImageOptimizer.js +161 -0
  313. package/dist/esm/images/ImageOptimizer.js.map +1 -0
  314. package/dist/esm/index.js +75 -0
  315. package/dist/esm/index.js.map +1 -0
  316. package/dist/esm/internal.js +16 -0
  317. package/dist/esm/internal.js.map +1 -0
  318. package/dist/esm/managers/DrawingManager.js +163 -0
  319. package/dist/esm/managers/DrawingManager.js.map +1 -0
  320. package/dist/esm/package.json +3 -0
  321. package/dist/esm/processors/ChangelogGenerator.js +970 -0
  322. package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
  323. package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
  324. package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
  325. package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
  326. package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
  327. package/dist/esm/processors/MoveOperationHelper.js +57 -0
  328. package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
  329. package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
  330. package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
  331. package/dist/esm/processors/RevisionWalker.js +278 -0
  332. package/dist/esm/processors/RevisionWalker.js.map +1 -0
  333. package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
  334. package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
  335. package/dist/esm/processors/ShadingResolver.js +66 -0
  336. package/dist/esm/processors/ShadingResolver.js.map +1 -0
  337. package/dist/esm/processors/acceptRevisions.js +416 -0
  338. package/dist/esm/processors/acceptRevisions.js.map +1 -0
  339. package/dist/esm/processors/cnfStyleDecoder.js +89 -0
  340. package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
  341. package/dist/esm/processors/stripTrackedChanges.js +201 -0
  342. package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
  343. package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
  344. package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
  345. package/dist/esm/tracking/TrackingContext.js +2 -0
  346. package/dist/esm/tracking/TrackingContext.js.map +1 -0
  347. package/dist/esm/types/compatibility-types.js +8 -0
  348. package/dist/esm/types/compatibility-types.js.map +1 -0
  349. package/dist/esm/types/document-types.js +2 -0
  350. package/dist/esm/types/document-types.js.map +1 -0
  351. package/dist/esm/types/formatting.js +2 -0
  352. package/dist/esm/types/formatting.js.map +1 -0
  353. package/dist/esm/types/list-types.js +2 -0
  354. package/dist/esm/types/list-types.js.map +1 -0
  355. package/dist/esm/types/settings-types.js +2 -0
  356. package/dist/esm/types/settings-types.js.map +1 -0
  357. package/dist/esm/types/styleConfig.js +2 -0
  358. package/dist/esm/types/styleConfig.js.map +1 -0
  359. package/dist/esm/utils/KeyedRegistry.js +32 -0
  360. package/dist/esm/utils/KeyedRegistry.js.map +1 -0
  361. package/dist/esm/utils/corruptionDetection.js +155 -0
  362. package/dist/esm/utils/corruptionDetection.js.map +1 -0
  363. package/dist/esm/utils/dateFormatting.js +4 -0
  364. package/dist/esm/utils/dateFormatting.js.map +1 -0
  365. package/dist/esm/utils/deepClone.js +40 -0
  366. package/dist/esm/utils/deepClone.js.map +1 -0
  367. package/dist/esm/utils/deepEqual.js +47 -0
  368. package/dist/esm/utils/deepEqual.js.map +1 -0
  369. package/dist/esm/utils/diagnostics.js +69 -0
  370. package/dist/esm/utils/diagnostics.js.map +1 -0
  371. package/dist/esm/utils/errorHandling.js +36 -0
  372. package/dist/esm/utils/errorHandling.js.map +1 -0
  373. package/dist/esm/utils/formatting.js +93 -0
  374. package/dist/esm/utils/formatting.js.map +1 -0
  375. package/dist/esm/utils/list-detection.js +148 -0
  376. package/dist/esm/utils/list-detection.js.map +1 -0
  377. package/dist/esm/utils/logger.js +205 -0
  378. package/dist/esm/utils/logger.js.map +1 -0
  379. package/dist/esm/utils/parsingHelpers.js +56 -0
  380. package/dist/esm/utils/parsingHelpers.js.map +1 -0
  381. package/dist/esm/utils/textDiff.js +42 -0
  382. package/dist/esm/utils/textDiff.js.map +1 -0
  383. package/dist/esm/utils/units.js +152 -0
  384. package/dist/esm/utils/units.js.map +1 -0
  385. package/dist/esm/utils/validation.js +285 -0
  386. package/dist/esm/utils/validation.js.map +1 -0
  387. package/dist/esm/utils/xmlSanitization.js +54 -0
  388. package/dist/esm/utils/xmlSanitization.js.map +1 -0
  389. package/dist/esm/validation/RevisionAutoFixer.js +340 -0
  390. package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
  391. package/dist/esm/validation/RevisionValidator.js +240 -0
  392. package/dist/esm/validation/RevisionValidator.js.map +1 -0
  393. package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
  394. package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
  395. package/dist/esm/validation/ValidationRules.js +92 -0
  396. package/dist/esm/validation/ValidationRules.js.map +1 -0
  397. package/dist/esm/validation/index.js +4 -0
  398. package/dist/esm/validation/index.js.map +1 -0
  399. package/dist/esm/xml/XMLBuilder.js +434 -0
  400. package/dist/esm/xml/XMLBuilder.js.map +1 -0
  401. package/dist/esm/xml/XMLParser.js +486 -0
  402. package/dist/esm/xml/XMLParser.js.map +1 -0
  403. package/dist/esm/zip/ZipHandler.js +298 -0
  404. package/dist/esm/zip/ZipHandler.js.map +1 -0
  405. package/dist/esm/zip/ZipReader.js +147 -0
  406. package/dist/esm/zip/ZipReader.js.map +1 -0
  407. package/dist/esm/zip/ZipWriter.js +199 -0
  408. package/dist/esm/zip/ZipWriter.js.map +1 -0
  409. package/dist/esm/zip/errors.js +43 -0
  410. package/dist/esm/zip/errors.js.map +1 -0
  411. package/dist/esm/zip/types.js +31 -0
  412. package/dist/esm/zip/types.js.map +1 -0
  413. package/dist/formatting/AbstractNumbering.d.ts +2 -2
  414. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  415. package/dist/formatting/AbstractNumbering.js +33 -33
  416. package/dist/formatting/AbstractNumbering.js.map +1 -1
  417. package/dist/formatting/NumberingInstance.d.ts +2 -2
  418. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  419. package/dist/formatting/NumberingInstance.js +7 -7
  420. package/dist/formatting/NumberingInstance.js.map +1 -1
  421. package/dist/formatting/NumberingLevel.d.ts +11 -2
  422. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  423. package/dist/formatting/NumberingLevel.js +111 -25
  424. package/dist/formatting/NumberingLevel.js.map +1 -1
  425. package/dist/formatting/NumberingManager.d.ts +4 -4
  426. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  427. package/dist/formatting/NumberingManager.js +28 -28
  428. package/dist/formatting/NumberingManager.js.map +1 -1
  429. package/dist/formatting/Style.d.ts +14 -7
  430. package/dist/formatting/Style.d.ts.map +1 -1
  431. package/dist/formatting/Style.js +309 -112
  432. package/dist/formatting/Style.js.map +1 -1
  433. package/dist/formatting/StylesManager.d.ts +2 -2
  434. package/dist/formatting/StylesManager.d.ts.map +1 -1
  435. package/dist/formatting/StylesManager.js +52 -52
  436. package/dist/formatting/StylesManager.js.map +1 -1
  437. package/dist/helpers/CleanupHelper.d.ts +1 -1
  438. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  439. package/dist/helpers/CleanupHelper.js +15 -15
  440. package/dist/helpers/CleanupHelper.js.map +1 -1
  441. package/dist/index.d.ts +81 -90
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +286 -317
  444. package/dist/index.js.map +1 -1
  445. package/dist/internal.d.ts +16 -0
  446. package/dist/internal.d.ts.map +1 -0
  447. package/dist/internal.js +42 -0
  448. package/dist/internal.js.map +1 -0
  449. package/dist/managers/DrawingManager.d.ts +3 -3
  450. package/dist/managers/DrawingManager.d.ts.map +1 -1
  451. package/dist/managers/DrawingManager.js +12 -12
  452. package/dist/managers/DrawingManager.js.map +1 -1
  453. package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
  454. package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
  455. package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
  456. package/dist/processors/ChangelogGenerator.js.map +1 -0
  457. package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
  458. package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
  459. package/dist/processors/CompatibilityUpgrader.js.map +1 -0
  460. package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
  461. package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
  462. package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
  463. package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
  464. package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
  465. package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
  466. package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
  467. package/dist/processors/MoveOperationHelper.js.map +1 -0
  468. package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
  469. package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
  470. package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
  471. package/dist/processors/RevisionAwareProcessor.js.map +1 -0
  472. package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
  473. package/dist/processors/RevisionWalker.d.ts.map +1 -0
  474. package/dist/{utils → processors}/RevisionWalker.js +28 -0
  475. package/dist/processors/RevisionWalker.js.map +1 -0
  476. package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
  477. package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
  478. package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
  479. package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
  480. package/dist/processors/ShadingResolver.d.ts +6 -0
  481. package/dist/processors/ShadingResolver.d.ts.map +1 -0
  482. package/dist/{utils → processors}/ShadingResolver.js +2 -2
  483. package/dist/processors/ShadingResolver.js.map +1 -0
  484. package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
  485. package/dist/processors/acceptRevisions.d.ts.map +1 -0
  486. package/dist/{utils → processors}/acceptRevisions.js +24 -4
  487. package/dist/processors/acceptRevisions.js.map +1 -0
  488. package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
  489. package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
  490. package/dist/processors/cnfStyleDecoder.js.map +1 -0
  491. package/dist/processors/stripTrackedChanges.d.ts +3 -0
  492. package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
  493. package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
  494. package/dist/processors/stripTrackedChanges.js.map +1 -0
  495. package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
  496. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  497. package/dist/tracking/DocumentTrackingContext.js +38 -43
  498. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  499. package/dist/tracking/TrackingContext.d.ts +8 -8
  500. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  501. package/dist/tracking/TrackingContext.js.map +1 -1
  502. package/dist/types/document-types.d.ts +28 -0
  503. package/dist/types/document-types.d.ts.map +1 -0
  504. package/dist/types/document-types.js +3 -0
  505. package/dist/types/document-types.js.map +1 -0
  506. package/dist/types/formatting.d.ts +4 -4
  507. package/dist/types/formatting.d.ts.map +1 -1
  508. package/dist/types/formatting.js.map +1 -1
  509. package/dist/types/settings-types.d.ts +6 -0
  510. package/dist/types/settings-types.d.ts.map +1 -1
  511. package/dist/types/settings-types.js.map +1 -1
  512. package/dist/utils/KeyedRegistry.d.ts +13 -0
  513. package/dist/utils/KeyedRegistry.d.ts.map +1 -0
  514. package/dist/utils/KeyedRegistry.js +36 -0
  515. package/dist/utils/KeyedRegistry.js.map +1 -0
  516. package/dist/utils/corruptionDetection.d.ts +1 -1
  517. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  518. package/dist/utils/corruptionDetection.js +4 -4
  519. package/dist/utils/corruptionDetection.js.map +1 -1
  520. package/dist/utils/deepEqual.d.ts +2 -0
  521. package/dist/utils/deepEqual.d.ts.map +1 -0
  522. package/dist/utils/deepEqual.js +50 -0
  523. package/dist/utils/deepEqual.js.map +1 -0
  524. package/dist/utils/list-detection.d.ts +2 -2
  525. package/dist/utils/list-detection.d.ts.map +1 -1
  526. package/dist/utils/list-detection.js.map +1 -1
  527. package/dist/utils/parsingHelpers.d.ts +1 -1
  528. package/dist/utils/parsingHelpers.d.ts.map +1 -1
  529. package/dist/utils/parsingHelpers.js +2 -2
  530. package/dist/utils/parsingHelpers.js.map +1 -1
  531. package/dist/utils/validation.js +7 -7
  532. package/dist/utils/validation.js.map +1 -1
  533. package/dist/utils/xmlSanitization.js +2 -2
  534. package/dist/utils/xmlSanitization.js.map +1 -1
  535. package/dist/validation/RevisionAutoFixer.d.ts +4 -4
  536. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  537. package/dist/validation/RevisionAutoFixer.js +11 -11
  538. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  539. package/dist/validation/RevisionValidator.d.ts +5 -4
  540. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  541. package/dist/validation/RevisionValidator.js +29 -30
  542. package/dist/validation/RevisionValidator.js.map +1 -1
  543. package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
  544. package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
  545. package/dist/validation/ValidationRuleRegistry.js +43 -0
  546. package/dist/validation/ValidationRuleRegistry.js.map +1 -0
  547. package/dist/validation/index.d.ts +3 -3
  548. package/dist/validation/index.d.ts.map +1 -1
  549. package/dist/validation/index.js +10 -10
  550. package/dist/validation/index.js.map +1 -1
  551. package/dist/xml/XMLBuilder.d.ts +6 -1
  552. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  553. package/dist/xml/XMLBuilder.js +11 -6
  554. package/dist/xml/XMLBuilder.js.map +1 -1
  555. package/dist/xml/XMLParser.js +6 -6
  556. package/dist/xml/XMLParser.js.map +1 -1
  557. package/dist/zip/ZipHandler.d.ts +1 -1
  558. package/dist/zip/ZipHandler.d.ts.map +1 -1
  559. package/dist/zip/ZipHandler.js +8 -8
  560. package/dist/zip/ZipHandler.js.map +1 -1
  561. package/dist/zip/ZipReader.d.ts +1 -1
  562. package/dist/zip/ZipReader.d.ts.map +1 -1
  563. package/dist/zip/ZipReader.js +14 -14
  564. package/dist/zip/ZipReader.js.map +1 -1
  565. package/dist/zip/ZipWriter.d.ts +1 -1
  566. package/dist/zip/ZipWriter.d.ts.map +1 -1
  567. package/dist/zip/ZipWriter.js +10 -10
  568. package/dist/zip/ZipWriter.js.map +1 -1
  569. package/package.json +20 -4
  570. package/src/constants/legacyCompatFlags.ts +1 -1
  571. package/src/core/Document.ts +478 -167
  572. package/src/core/DocumentContent.ts +14 -11
  573. package/src/core/DocumentEvents.ts +90 -0
  574. package/src/core/DocumentGenerator.ts +49 -22
  575. package/src/core/DocumentParser.ts +2235 -620
  576. package/src/core/DocumentValidator.ts +7 -7
  577. package/src/core/ElementRegistry.ts +69 -0
  578. package/src/core/Relationship.ts +1 -1
  579. package/src/core/RelationshipManager.ts +4 -4
  580. package/src/elements/AlternateContent.ts +1 -1
  581. package/src/elements/Bookmark.ts +52 -4
  582. package/src/elements/BookmarkManager.ts +2 -2
  583. package/src/elements/Comment.ts +3 -3
  584. package/src/elements/CommentManager.ts +4 -4
  585. package/src/elements/CommonTypes.ts +45 -7
  586. package/src/elements/CustomXml.ts +1 -1
  587. package/src/elements/Endnote.ts +2 -2
  588. package/src/elements/EndnoteManager.ts +3 -3
  589. package/src/elements/Field.ts +44 -10
  590. package/src/elements/FieldHelpers.ts +2 -2
  591. package/src/elements/Footer.ts +4 -4
  592. package/src/elements/Footnote.ts +2 -2
  593. package/src/elements/FootnoteManager.ts +3 -3
  594. package/src/elements/Header.ts +4 -4
  595. package/src/elements/HeaderFooterManager.ts +2 -2
  596. package/src/elements/Hyperlink.ts +16 -12
  597. package/src/elements/Image.ts +3 -3
  598. package/src/elements/ImageManager.ts +2 -2
  599. package/src/elements/ImageRun.ts +3 -3
  600. package/src/elements/MathElement.ts +1 -1
  601. package/src/elements/Paragraph.ts +221 -88
  602. package/src/elements/PreservedElement.ts +1 -1
  603. package/src/elements/PropertyChangeTypes.ts +2 -2
  604. package/src/elements/RangeMarker.ts +153 -12
  605. package/src/elements/RegisteredBodyElement.ts +52 -0
  606. package/src/elements/Revision.ts +14 -14
  607. package/src/elements/RevisionContent.ts +3 -3
  608. package/src/elements/RevisionManager.ts +3 -3
  609. package/src/elements/Run.ts +221 -94
  610. package/src/elements/Section.ts +136 -69
  611. package/src/elements/Shape.ts +4 -4
  612. package/src/elements/StructuredDocumentTag.ts +3 -3
  613. package/src/elements/Table.ts +91 -27
  614. package/src/elements/TableCell.ts +62 -34
  615. package/src/elements/TableGridChange.ts +1 -1
  616. package/src/elements/TableOfContents.ts +1 -1
  617. package/src/elements/TableOfContentsElement.ts +2 -2
  618. package/src/elements/TableRow.ts +192 -48
  619. package/src/elements/TextBox.ts +5 -5
  620. package/src/formatting/AbstractNumbering.ts +3 -3
  621. package/src/formatting/NumberingInstance.ts +2 -2
  622. package/src/formatting/NumberingLevel.ts +201 -10
  623. package/src/formatting/NumberingManager.ts +5 -5
  624. package/src/formatting/Style.ts +382 -86
  625. package/src/formatting/StylesManager.ts +4 -4
  626. package/src/helpers/CleanupHelper.ts +6 -6
  627. package/src/index.ts +118 -127
  628. package/src/internal.ts +79 -0
  629. package/src/managers/DrawingManager.ts +3 -3
  630. package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
  631. package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
  632. package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
  633. package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
  634. package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
  635. package/src/{utils → processors}/RevisionWalker.ts +42 -1
  636. package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
  637. package/src/{utils → processors}/ShadingResolver.ts +5 -5
  638. package/src/{utils → processors}/acceptRevisions.ts +77 -9
  639. package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
  640. package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
  641. package/src/tracking/DocumentTrackingContext.ts +12 -14
  642. package/src/tracking/TrackingContext.ts +8 -8
  643. package/src/types/document-types.ts +53 -0
  644. package/src/types/formatting.ts +4 -4
  645. package/src/types/settings-types.ts +32 -0
  646. package/src/utils/KeyedRegistry.ts +41 -0
  647. package/src/utils/corruptionDetection.ts +2 -2
  648. package/src/utils/deepEqual.ts +58 -0
  649. package/src/utils/list-detection.ts +2 -2
  650. package/src/utils/parsingHelpers.ts +11 -3
  651. package/src/utils/validation.ts +3 -3
  652. package/src/utils/xmlSanitization.ts +1 -1
  653. package/src/validation/RevisionAutoFixer.ts +5 -5
  654. package/src/validation/RevisionValidator.ts +39 -28
  655. package/src/validation/ValidationRuleRegistry.ts +86 -0
  656. package/src/validation/index.ts +3 -3
  657. package/src/xml/XMLBuilder.ts +13 -3
  658. package/src/xml/XMLParser.ts +2 -2
  659. package/src/zip/ZipHandler.ts +4 -4
  660. package/src/zip/ZipReader.ts +3 -3
  661. package/src/zip/ZipWriter.ts +3 -3
  662. package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
  663. package/dist/utils/ChangelogGenerator.js.map +0 -1
  664. package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
  665. package/dist/utils/CompatibilityUpgrader.js.map +0 -1
  666. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
  667. package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
  668. package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
  669. package/dist/utils/MoveOperationHelper.js.map +0 -1
  670. package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
  671. package/dist/utils/RevisionAwareProcessor.js.map +0 -1
  672. package/dist/utils/RevisionWalker.d.ts.map +0 -1
  673. package/dist/utils/RevisionWalker.js.map +0 -1
  674. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
  675. package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
  676. package/dist/utils/ShadingResolver.d.ts +0 -6
  677. package/dist/utils/ShadingResolver.d.ts.map +0 -1
  678. package/dist/utils/ShadingResolver.js.map +0 -1
  679. package/dist/utils/acceptRevisions.d.ts.map +0 -1
  680. package/dist/utils/acceptRevisions.js.map +0 -1
  681. package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
  682. package/dist/utils/cnfStyleDecoder.js.map +0 -1
  683. package/dist/utils/stripTrackedChanges.d.ts +0 -3
  684. package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
  685. package/dist/utils/stripTrackedChanges.js.map +0 -1
  686. package/src/__tests__/helper-methods.test.ts +0 -512
  687. package/src/constants/CLAUDE.md +0 -28
  688. package/src/core/CLAUDE.md +0 -113
  689. package/src/elements/CLAUDE.md +0 -142
  690. package/src/formatting/CLAUDE.md +0 -78
  691. package/src/managers/CLAUDE.md +0 -47
  692. package/src/tracking/CLAUDE.md +0 -30
  693. package/src/types/CLAUDE.md +0 -39
  694. package/src/utils/CLAUDE.md +0 -168
  695. package/src/validation/CLAUDE.md +0 -40
  696. package/src/xml/CLAUDE.md +0 -65
  697. package/src/zip/CLAUDE.md +0 -55
  698. /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
  699. /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
@@ -34,86 +34,88 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Document = void 0;
37
- const Bookmark_1 = require("../elements/Bookmark");
38
- const BookmarkManager_1 = require("../elements/BookmarkManager");
39
- const PreservedElement_1 = require("../elements/PreservedElement");
40
- const CommentManager_1 = require("../elements/CommentManager");
41
- const EndnoteManager_1 = require("../elements/EndnoteManager");
42
- const Field_1 = require("../elements/Field");
43
- const FootnoteManager_1 = require("../elements/FootnoteManager");
44
- const HeaderFooterManager_1 = require("../elements/HeaderFooterManager");
45
- const Hyperlink_1 = require("../elements/Hyperlink");
46
- const ImageManager_1 = require("../elements/ImageManager");
47
- const ImageRun_1 = require("../elements/ImageRun");
48
- const Paragraph_1 = require("../elements/Paragraph");
49
- const RangeMarker_1 = require("../elements/RangeMarker");
50
- const Revision_1 = require("../elements/Revision");
51
- const RevisionManager_1 = require("../elements/RevisionManager");
52
- const Run_1 = require("../elements/Run");
53
- const Shape_1 = require("../elements/Shape");
54
- const TextBox_1 = require("../elements/TextBox");
55
- const validation_1 = require("../validation");
56
- const Section_1 = require("../elements/Section");
57
- const StructuredDocumentTag_1 = require("../elements/StructuredDocumentTag");
58
- const Table_1 = require("../elements/Table");
59
- const TableCell_1 = require("../elements/TableCell");
60
- const TableOfContentsElement_1 = require("../elements/TableOfContentsElement");
61
- const ShadingResolver_1 = require("../utils/ShadingResolver");
62
- const NumberingManager_1 = require("../formatting/NumberingManager");
63
- const Style_1 = require("../formatting/Style");
64
- const StylesManager_1 = require("../formatting/StylesManager");
65
- const compatibility_types_1 = require("../types/compatibility-types");
66
- const CompatibilityUpgrader_1 = require("../utils/CompatibilityUpgrader");
67
- const legacyCompatFlags_1 = require("../constants/legacyCompatFlags");
68
- const logger_1 = require("../utils/logger");
69
- const units_1 = require("../utils/units");
37
+ const parsingHelpers_js_1 = require("../utils/parsingHelpers.js");
38
+ const Bookmark_js_1 = require("../elements/Bookmark.js");
39
+ const BookmarkManager_js_1 = require("../elements/BookmarkManager.js");
40
+ const PreservedElement_js_1 = require("../elements/PreservedElement.js");
41
+ const CommentManager_js_1 = require("../elements/CommentManager.js");
42
+ const EndnoteManager_js_1 = require("../elements/EndnoteManager.js");
43
+ const Field_js_1 = require("../elements/Field.js");
44
+ const FootnoteManager_js_1 = require("../elements/FootnoteManager.js");
45
+ const HeaderFooterManager_js_1 = require("../elements/HeaderFooterManager.js");
46
+ const Hyperlink_js_1 = require("../elements/Hyperlink.js");
47
+ const ImageManager_js_1 = require("../elements/ImageManager.js");
48
+ const ImageRun_js_1 = require("../elements/ImageRun.js");
49
+ const Paragraph_js_1 = require("../elements/Paragraph.js");
50
+ const RangeMarker_js_1 = require("../elements/RangeMarker.js");
51
+ const Revision_js_1 = require("../elements/Revision.js");
52
+ const RevisionManager_js_1 = require("../elements/RevisionManager.js");
53
+ const Run_js_1 = require("../elements/Run.js");
54
+ const Shape_js_1 = require("../elements/Shape.js");
55
+ const TextBox_js_1 = require("../elements/TextBox.js");
56
+ const index_js_1 = require("../validation/index.js");
57
+ const Section_js_1 = require("../elements/Section.js");
58
+ const StructuredDocumentTag_js_1 = require("../elements/StructuredDocumentTag.js");
59
+ const Table_js_1 = require("../elements/Table.js");
60
+ const TableCell_js_1 = require("../elements/TableCell.js");
61
+ const TableOfContentsElement_js_1 = require("../elements/TableOfContentsElement.js");
62
+ const ShadingResolver_js_1 = require("../processors/ShadingResolver.js");
63
+ const NumberingManager_js_1 = require("../formatting/NumberingManager.js");
64
+ const Style_js_1 = require("../formatting/Style.js");
65
+ const StylesManager_js_1 = require("../formatting/StylesManager.js");
66
+ const compatibility_types_js_1 = require("../types/compatibility-types.js");
67
+ const CompatibilityUpgrader_js_1 = require("../processors/CompatibilityUpgrader.js");
68
+ const legacyCompatFlags_js_1 = require("../constants/legacyCompatFlags.js");
69
+ const logger_js_1 = require("../utils/logger.js");
70
+ const units_js_1 = require("../utils/units.js");
70
71
  function getLogger() {
71
- return (0, logger_1.createScopedLogger)((0, logger_1.getGlobalLogger)(), 'Document');
72
+ return (0, logger_js_1.createScopedLogger)((0, logger_js_1.getGlobalLogger)(), 'Document');
72
73
  }
73
- const acceptRevisions_1 = require("../utils/acceptRevisions");
74
- const InMemoryRevisionAcceptor_1 = require("../utils/InMemoryRevisionAcceptor");
75
- const stripTrackedChanges_1 = require("../utils/stripTrackedChanges");
76
- const textDiff_1 = require("../utils/textDiff");
77
- const XMLBuilder_1 = require("../xml/XMLBuilder");
78
- const XMLParser_1 = require("../xml/XMLParser");
79
- const DocumentTrackingContext_1 = require("../tracking/DocumentTrackingContext");
80
- const ZipHandler_1 = require("../zip/ZipHandler");
81
- const types_1 = require("../zip/types");
82
- const DocumentGenerator_1 = require("./DocumentGenerator");
83
- const DocumentIdManager_1 = require("./DocumentIdManager");
84
- const DocumentParser_1 = require("./DocumentParser");
85
- const DocumentValidator_1 = require("./DocumentValidator");
86
- const RelationshipManager_1 = require("./RelationshipManager");
87
- const Relationship_1 = require("./Relationship");
88
- const ImageOptimizer_1 = require("../images/ImageOptimizer");
74
+ const acceptRevisions_js_1 = require("../processors/acceptRevisions.js");
75
+ const InMemoryRevisionAcceptor_js_1 = require("../processors/InMemoryRevisionAcceptor.js");
76
+ const stripTrackedChanges_js_1 = require("../processors/stripTrackedChanges.js");
77
+ const textDiff_js_1 = require("../utils/textDiff.js");
78
+ const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
79
+ const XMLParser_js_1 = require("../xml/XMLParser.js");
80
+ const DocumentTrackingContext_js_1 = require("../tracking/DocumentTrackingContext.js");
81
+ const ZipHandler_js_1 = require("../zip/ZipHandler.js");
82
+ const types_js_1 = require("../zip/types.js");
83
+ const DocumentGenerator_js_1 = require("./DocumentGenerator.js");
84
+ const DocumentIdManager_js_1 = require("./DocumentIdManager.js");
85
+ const DocumentParser_js_1 = require("./DocumentParser.js");
86
+ const DocumentValidator_js_1 = require("./DocumentValidator.js");
87
+ const DocumentEvents_js_1 = require("./DocumentEvents.js");
88
+ const RelationshipManager_js_1 = require("./RelationshipManager.js");
89
+ const Relationship_js_1 = require("./Relationship.js");
90
+ const ImageOptimizer_js_1 = require("../images/ImageOptimizer.js");
89
91
  class Document {
90
92
  constructor(zipHandler, options = {}, initDefaults = true) {
91
- this.zipHandler = zipHandler || new ZipHandler_1.ZipHandler();
93
+ this.zipHandler = zipHandler || new ZipHandler_js_1.ZipHandler();
92
94
  this.bodyElements = [];
93
95
  this.properties = options.properties || {};
94
96
  this.namespaces = {};
95
- this.stylesManager = StylesManager_1.StylesManager.create();
96
- this.numberingManager = NumberingManager_1.NumberingManager.create();
97
- this.section = new Section_1.Section();
98
- this.imageManager = ImageManager_1.ImageManager.create();
97
+ this.stylesManager = StylesManager_js_1.StylesManager.create();
98
+ this.numberingManager = NumberingManager_js_1.NumberingManager.create();
99
+ this.section = new Section_js_1.Section();
100
+ this.imageManager = ImageManager_js_1.ImageManager.create();
99
101
  this.relationshipManager = initDefaults
100
- ? RelationshipManager_1.RelationshipManager.createForDocument()
101
- : RelationshipManager_1.RelationshipManager.create();
102
- this.headerFooterManager = HeaderFooterManager_1.HeaderFooterManager.create();
103
- this.bookmarkManager = BookmarkManager_1.BookmarkManager.create();
104
- this.revisionManager = RevisionManager_1.RevisionManager.create();
105
- this.commentManager = CommentManager_1.CommentManager.create();
106
- this.footnoteManager = FootnoteManager_1.FootnoteManager.create();
107
- this.endnoteManager = EndnoteManager_1.EndnoteManager.create();
108
- this.documentIdManager = DocumentIdManager_1.DocumentIdManager.create();
102
+ ? RelationshipManager_js_1.RelationshipManager.createForDocument()
103
+ : RelationshipManager_js_1.RelationshipManager.create();
104
+ this.headerFooterManager = HeaderFooterManager_js_1.HeaderFooterManager.create();
105
+ this.bookmarkManager = BookmarkManager_js_1.BookmarkManager.create();
106
+ this.revisionManager = RevisionManager_js_1.RevisionManager.create();
107
+ this.commentManager = CommentManager_js_1.CommentManager.create();
108
+ this.footnoteManager = FootnoteManager_js_1.FootnoteManager.create();
109
+ this.endnoteManager = EndnoteManager_js_1.EndnoteManager.create();
110
+ this.documentIdManager = DocumentIdManager_js_1.DocumentIdManager.create();
109
111
  this.bookmarkManager.setIdProvider(() => this.documentIdManager.getNextId(), (existingId) => this.documentIdManager.ensureNextIdAbove(existingId));
110
112
  this.revisionManager.setIdProvider(() => this.documentIdManager.getNextId(), (existingId) => this.documentIdManager.ensureNextIdAbove(existingId));
111
113
  this.commentManager.setIdProvider(() => this.documentIdManager.getNextId(), (existingId) => this.documentIdManager.ensureNextIdAbove(existingId));
112
- this.trackingContext = new DocumentTrackingContext_1.DocumentTrackingContext(this.revisionManager);
113
- this.parser = new DocumentParser_1.DocumentParser();
114
- this.generator = new DocumentGenerator_1.DocumentGenerator();
115
- this.validator = new DocumentValidator_1.DocumentValidator();
116
- this.logger = options.logger || logger_1.defaultLogger;
114
+ this.trackingContext = new DocumentTrackingContext_js_1.DocumentTrackingContext(this.revisionManager);
115
+ this.parser = new DocumentParser_js_1.DocumentParser();
116
+ this.generator = new DocumentGenerator_js_1.DocumentGenerator();
117
+ this.validator = new DocumentValidator_js_1.DocumentValidator();
118
+ this.logger = options.logger || logger_js_1.defaultLogger;
117
119
  this.trackChangesEnabled = false;
118
120
  this.trackFormatting = true;
119
121
  this.revisionViewSettings = {
@@ -168,6 +170,8 @@ class Document {
168
170
  _originalCommentsXml;
169
171
  _commentsModified = false;
170
172
  _originalCommentCompanionFiles = new Map();
173
+ _events = new DocumentEvents_js_1.DocumentEventEmitter();
174
+ _saveQueue = Promise.resolve();
171
175
  _removedParts = new Set();
172
176
  _appPropsModified = false;
173
177
  _footnotesModified = false;
@@ -338,7 +342,7 @@ class Document {
338
342
  para.addText(match[6], { font: 'Courier New' });
339
343
  }
340
344
  else if (match[7] !== undefined && match[8] !== undefined) {
341
- para.addHyperlink(new Hyperlink_1.Hyperlink({ url: match[8], text: match[7] }));
345
+ para.addHyperlink(new Hyperlink_js_1.Hyperlink({ url: match[8], text: match[7] }));
342
346
  }
343
347
  lastIndex = match.index + match[0].length;
344
348
  }
@@ -363,21 +367,25 @@ class Document {
363
367
  }
364
368
  if (rows.length === 0)
365
369
  return null;
366
- return Table_1.Table.fromArray(rows);
370
+ return Table_js_1.Table.fromArray(rows);
367
371
  }
368
372
  static async load(filePath, options) {
369
373
  const logger = getLogger();
370
374
  logger.info('Loading document from file', { path: filePath });
371
- const zipHandler = new ZipHandler_1.ZipHandler();
375
+ const zipHandler = new ZipHandler_js_1.ZipHandler();
372
376
  await zipHandler.load(filePath);
373
- return Document.initializeFromZip(zipHandler, options);
377
+ const doc = await Document.initializeFromZip(zipHandler, options);
378
+ doc._events.emit('afterLoad', { source: 'file', path: filePath });
379
+ return doc;
374
380
  }
375
381
  static async loadFromBuffer(buffer, options) {
376
382
  const logger = getLogger();
377
383
  logger.info('Loading document from buffer', { bufferSize: buffer.length });
378
- const zipHandler = new ZipHandler_1.ZipHandler();
384
+ const zipHandler = new ZipHandler_js_1.ZipHandler();
379
385
  await zipHandler.loadFromBuffer(buffer);
380
- return Document.initializeFromZip(zipHandler, options);
386
+ const doc = await Document.initializeFromZip(zipHandler, options);
387
+ doc._events.emit('afterLoad', { source: 'buffer' });
388
+ return doc;
381
389
  }
382
390
  static async initializeFromZip(zipHandler, options) {
383
391
  const logger = getLogger();
@@ -386,10 +394,10 @@ class Document {
386
394
  ? 'preserve'
387
395
  : (options?.revisionHandling ?? 'accept');
388
396
  if (revisionHandling === 'accept') {
389
- await (0, acceptRevisions_1.acceptAllRevisions)(zipHandler);
397
+ await (0, acceptRevisions_js_1.acceptAllRevisions)(zipHandler);
390
398
  }
391
399
  else if (revisionHandling === 'strip') {
392
- await (0, stripTrackedChanges_1.stripTrackedChanges)(zipHandler);
400
+ await (0, stripTrackedChanges_js_1.stripTrackedChanges)(zipHandler);
393
401
  }
394
402
  else if (revisionHandling === 'preserve') {
395
403
  if (!useInMemoryAccept) {
@@ -408,24 +416,24 @@ class Document {
408
416
  if (contentTypesXml) {
409
417
  doc._originalContentTypes = doc.parseContentTypes(contentTypesXml);
410
418
  }
411
- const stylesXml = zipHandler.getFileAsString(types_1.DOCX_PATHS.STYLES);
419
+ const stylesXml = zipHandler.getFileAsString(types_js_1.DOCX_PATHS.STYLES);
412
420
  if (stylesXml) {
413
421
  doc._originalStylesXml = stylesXml;
414
422
  }
415
- const numberingXml = zipHandler.getFileAsString(types_1.DOCX_PATHS.NUMBERING);
423
+ const numberingXml = zipHandler.getFileAsString(types_js_1.DOCX_PATHS.NUMBERING);
416
424
  if (numberingXml) {
417
425
  doc._originalNumberingXml = numberingXml;
418
426
  }
419
- const settingsXml = zipHandler.getFileAsString(types_1.DOCX_PATHS.SETTINGS);
427
+ const settingsXml = zipHandler.getFileAsString(types_js_1.DOCX_PATHS.SETTINGS);
420
428
  if (settingsXml) {
421
429
  doc._originalSettingsXml = settingsXml;
422
430
  doc.parseSettingsFromXml(settingsXml);
423
431
  }
424
- const appPropsXml = zipHandler.getFileAsString(types_1.DOCX_PATHS.APP_PROPS);
432
+ const appPropsXml = zipHandler.getFileAsString(types_js_1.DOCX_PATHS.APP_PROPS);
425
433
  if (appPropsXml) {
426
434
  doc._originalAppPropsXml = appPropsXml;
427
435
  }
428
- const webSettingsXml = zipHandler.getFileAsString(types_1.DOCX_PATHS.WEB_SETTINGS);
436
+ const webSettingsXml = zipHandler.getFileAsString(types_js_1.DOCX_PATHS.WEB_SETTINGS);
429
437
  if (webSettingsXml) {
430
438
  doc._originalWebSettingsXml = webSettingsXml;
431
439
  doc.parseWebSettingsFromXml(webSettingsXml);
@@ -459,28 +467,51 @@ class Document {
459
467
  this.trackChangesEnabled = true;
460
468
  }
461
469
  }
462
- const hasDoNotTrackFormatting = /<w:doNotTrackFormatting\b[^>]*\/?>/.test(settingsXml);
463
- if (hasDoNotTrackFormatting) {
470
+ const parseSettingCtOnOff = (tagName) => {
471
+ const re = new RegExp(`<${tagName}\\b([^>]*)\\/?>`);
472
+ const m = re.exec(settingsXml);
473
+ if (!m)
474
+ return undefined;
475
+ const attrs = m[1] ?? '';
476
+ const valMatch = /w:val\s*=\s*"([^"]*)"/.exec(attrs);
477
+ if (!valMatch || valMatch[1] === undefined)
478
+ return true;
479
+ const v = valMatch[1].toLowerCase();
480
+ return v !== '0' && v !== 'false' && v !== 'off';
481
+ };
482
+ const doNotTrackFormattingVal = parseSettingCtOnOff('w:doNotTrackFormatting');
483
+ if (doNotTrackFormattingVal === true) {
464
484
  this.trackFormatting = false;
465
485
  }
466
- const hasTrackFormatting = /<w:trackFormatting\b[^>]*\/?>/.test(settingsXml);
467
- if (hasTrackFormatting) {
486
+ else if (doNotTrackFormattingVal === false) {
468
487
  this.trackFormatting = true;
469
488
  }
489
+ const trackFormattingVal = parseSettingCtOnOff('w:trackFormatting');
490
+ if (trackFormattingVal !== undefined) {
491
+ this.trackFormatting = trackFormattingVal;
492
+ }
470
493
  const revisionViewMatch = /<w:revisionView\b([^>]*)\/?>/.exec(settingsXml);
471
494
  if (revisionViewMatch) {
472
495
  const attrs = revisionViewMatch[1] || '';
473
496
  const insDelMatch = /w:insDel\s*=\s*"([^"]*)"/.exec(attrs);
474
497
  const formattingMatch = /w:formatting\s*=\s*"([^"]*)"/.exec(attrs);
475
498
  const inkMatch = /w:inkAnnotations\s*=\s*"([^"]*)"/.exec(attrs);
499
+ const markupMatch = /w:markup\s*=\s*"([^"]*)"/.exec(attrs);
500
+ const commentsMatch = /w:comments\s*=\s*"([^"]*)"/.exec(attrs);
476
501
  if (insDelMatch?.[1] !== undefined) {
477
- this.revisionViewSettings.showInsertionsAndDeletions = insDelMatch[1] !== '0';
502
+ this.revisionViewSettings.showInsertionsAndDeletions = (0, parsingHelpers_js_1.parseOnOffAttribute)(insDelMatch[1]);
478
503
  }
479
504
  if (formattingMatch?.[1] !== undefined) {
480
- this.revisionViewSettings.showFormatting = formattingMatch[1] !== '0';
505
+ this.revisionViewSettings.showFormatting = (0, parsingHelpers_js_1.parseOnOffAttribute)(formattingMatch[1]);
481
506
  }
482
507
  if (inkMatch?.[1] !== undefined) {
483
- this.revisionViewSettings.showInkAnnotations = inkMatch[1] !== '0';
508
+ this.revisionViewSettings.showInkAnnotations = (0, parsingHelpers_js_1.parseOnOffAttribute)(inkMatch[1]);
509
+ }
510
+ if (markupMatch?.[1] !== undefined) {
511
+ this.revisionViewSettings.showMarkup = (0, parsingHelpers_js_1.parseOnOffAttribute)(markupMatch[1]);
512
+ }
513
+ if (commentsMatch?.[1] !== undefined) {
514
+ this.revisionViewSettings.showComments = (0, parsingHelpers_js_1.parseOnOffAttribute)(commentsMatch[1]);
484
515
  }
485
516
  }
486
517
  const protMatch = /<w:documentProtection\b([^>]*)\/?>/.exec(settingsXml);
@@ -490,8 +521,12 @@ class Document {
490
521
  const enforcementMatch = /w:enforcement\s*=\s*"([^"]*)"/.exec(attrs);
491
522
  if (editMatch?.[1]) {
492
523
  const edit = editMatch[1];
493
- const enforcement = enforcementMatch?.[1] ? enforcementMatch[1] !== '0' : true;
524
+ const enforcement = enforcementMatch?.[1] ? (0, parsingHelpers_js_1.parseOnOffAttribute)(enforcementMatch[1]) : true;
494
525
  this.documentProtection = { edit, enforcement };
526
+ const formattingMatch = /w:formatting\s*=\s*"([^"]*)"/.exec(attrs);
527
+ if (formattingMatch?.[1] !== undefined) {
528
+ this.documentProtection.formatting = (0, parsingHelpers_js_1.parseOnOffAttribute)(formattingMatch[1]);
529
+ }
495
530
  const cryptProviderMatch = /w:cryptProviderType\s*=\s*"([^"]*)"/.exec(attrs);
496
531
  const cryptAlgClassMatch = /w:cryptAlgorithmClass\s*=\s*"([^"]*)"/.exec(attrs);
497
532
  const cryptAlgTypeMatch = /w:cryptAlgorithmType\s*=\s*"([^"]*)"/.exec(attrs);
@@ -513,6 +548,16 @@ class Document {
513
548
  this.documentProtection.hash = hashMatch[1];
514
549
  if (saltMatch?.[1])
515
550
  this.documentProtection.salt = saltMatch[1];
551
+ const algorithmNameMatch = /w:algorithmName\s*=\s*"([^"]*)"/.exec(attrs);
552
+ const hashValueMatch = /w:hashValue\s*=\s*"([^"]*)"/.exec(attrs);
553
+ const saltValueMatch = /w:saltValue\s*=\s*"([^"]*)"/.exec(attrs);
554
+ if (algorithmNameMatch?.[1]) {
555
+ this.documentProtection.algorithmName = algorithmNameMatch[1];
556
+ }
557
+ if (hashValueMatch?.[1])
558
+ this.documentProtection.hashValue = hashValueMatch[1];
559
+ if (saltValueMatch?.[1])
560
+ this.documentProtection.saltValue = saltValueMatch[1];
516
561
  }
517
562
  }
518
563
  const rsidsBlockMatch = /<w:rsids>([\s\S]*?)<\/w:rsids>/.exec(settingsXml);
@@ -536,37 +581,37 @@ class Document {
536
581
  if (viewMatch?.[1]) {
537
582
  this._documentView = viewMatch[1];
538
583
  }
539
- if (/<w:evenAndOddHeaders\b[^>]*\/?>/.test(settingsXml)) {
540
- this._evenAndOddHeaders = true;
541
- }
542
- if (/<w:mirrorMargins\b[^>]*\/?>/.test(settingsXml)) {
543
- this._mirrorMargins = true;
544
- }
545
- if (/<w:autoHyphenation\b[^>]*\/?>/.test(settingsXml)) {
546
- this._autoHyphenation = true;
547
- }
548
- if (/<w:hideSpellingErrors\b[^>]*\/?>/.test(settingsXml)) {
549
- this._hideSpellingErrors = true;
550
- }
551
- if (/<w:hideGrammaticalErrors\b[^>]*\/?>/.test(settingsXml)) {
552
- this._hideGrammaticalErrors = true;
553
- }
584
+ const evenAndOddHeadersVal = parseSettingCtOnOff('w:evenAndOddHeaders');
585
+ if (evenAndOddHeadersVal !== undefined)
586
+ this._evenAndOddHeaders = evenAndOddHeadersVal;
587
+ const mirrorMarginsVal = parseSettingCtOnOff('w:mirrorMargins');
588
+ if (mirrorMarginsVal !== undefined)
589
+ this._mirrorMargins = mirrorMarginsVal;
590
+ const autoHyphenationVal = parseSettingCtOnOff('w:autoHyphenation');
591
+ if (autoHyphenationVal !== undefined)
592
+ this._autoHyphenation = autoHyphenationVal;
593
+ const hideSpellingErrorsVal = parseSettingCtOnOff('w:hideSpellingErrors');
594
+ if (hideSpellingErrorsVal !== undefined)
595
+ this._hideSpellingErrors = hideSpellingErrorsVal;
596
+ const hideGrammaticalErrorsVal = parseSettingCtOnOff('w:hideGrammaticalErrors');
597
+ if (hideGrammaticalErrorsVal !== undefined)
598
+ this._hideGrammaticalErrors = hideGrammaticalErrorsVal;
554
599
  const defaultTabStopMatch = /<w:defaultTabStop\s+w:val\s*=\s*"(\d+)"\s*\/?>/.exec(settingsXml);
555
600
  if (defaultTabStopMatch?.[1]) {
556
601
  this._defaultTabStop = parseInt(defaultTabStopMatch[1], 10);
557
602
  }
558
- if (/<w:updateFields\b[^>]*\/?>/.test(settingsXml)) {
559
- this._updateFields = true;
560
- }
561
- if (/<w:embedTrueTypeFonts\b[^>]*\/?>/.test(settingsXml)) {
562
- this._embedTrueTypeFonts = true;
563
- }
564
- if (/<w:saveSubsetFonts\b[^>]*\/?>/.test(settingsXml)) {
565
- this._saveSubsetFonts = true;
566
- }
567
- if (/<w:doNotTrackMoves\b[^>]*\/?>/.test(settingsXml)) {
568
- this._doNotTrackMoves = true;
569
- }
603
+ const updateFieldsVal = parseSettingCtOnOff('w:updateFields');
604
+ if (updateFieldsVal !== undefined)
605
+ this._updateFields = updateFieldsVal;
606
+ const embedTrueTypeFontsVal = parseSettingCtOnOff('w:embedTrueTypeFonts');
607
+ if (embedTrueTypeFontsVal !== undefined)
608
+ this._embedTrueTypeFonts = embedTrueTypeFontsVal;
609
+ const saveSubsetFontsVal = parseSettingCtOnOff('w:saveSubsetFonts');
610
+ if (saveSubsetFontsVal !== undefined)
611
+ this._saveSubsetFonts = saveSubsetFontsVal;
612
+ const doNotTrackMovesVal = parseSettingCtOnOff('w:doNotTrackMoves');
613
+ if (doNotTrackMovesVal !== undefined)
614
+ this._doNotTrackMoves = doNotTrackMovesVal;
570
615
  const decimalMatch = /<w:decimalSymbol\s+w:val\s*=\s*"([^"]*)"\s*\/?>/.exec(settingsXml);
571
616
  if (decimalMatch?.[1]) {
572
617
  this._decimalSymbol = decimalMatch[1];
@@ -580,7 +625,7 @@ class Document {
580
625
  parseCompatBlock(settingsXml) {
581
626
  const compatSettings = [];
582
627
  const legacyFlags = [];
583
- let mode = compatibility_types_1.CompatibilityMode.Word2007;
628
+ let mode = compatibility_types_js_1.CompatibilityMode.Word2007;
584
629
  const compatBlockMatch = /<w:compat>([\s\S]*?)<\/w:compat>/.exec(settingsXml);
585
630
  if (compatBlockMatch?.[1]) {
586
631
  const compatBlock = compatBlockMatch[1];
@@ -618,7 +663,7 @@ class Document {
618
663
  }
619
664
  return {
620
665
  mode,
621
- isLegacyMode: mode < compatibility_types_1.CompatibilityMode.Word2013Plus,
666
+ isLegacyMode: mode < compatibility_types_js_1.CompatibilityMode.Word2013Plus,
622
667
  compatSettings,
623
668
  legacyFlags,
624
669
  };
@@ -634,7 +679,7 @@ class Document {
634
679
  this.stylesManager.addStyle(style);
635
680
  }
636
681
  for (const element of this.bodyElements) {
637
- if (element instanceof Table_1.Table) {
682
+ if (element instanceof Table_js_1.Table) {
638
683
  element._setStylesManager(this.stylesManager);
639
684
  }
640
685
  }
@@ -693,16 +738,16 @@ class Document {
693
738
  }
694
739
  this._originalCommentsXml = commentsXml;
695
740
  for (const path of [
696
- types_1.DOCX_PATHS.COMMENTS_EXTENDED,
697
- types_1.DOCX_PATHS.COMMENTS_IDS,
698
- types_1.DOCX_PATHS.COMMENTS_EXTENSIBLE,
741
+ types_js_1.DOCX_PATHS.COMMENTS_EXTENDED,
742
+ types_js_1.DOCX_PATHS.COMMENTS_IDS,
743
+ types_js_1.DOCX_PATHS.COMMENTS_EXTENSIBLE,
699
744
  ]) {
700
745
  const content = this.zipHandler.getFileAsString(path);
701
746
  if (content) {
702
747
  this._originalCommentCompanionFiles.set(path, content);
703
748
  }
704
749
  }
705
- const parser = new DocumentParser_1.DocumentParser();
750
+ const parser = new DocumentParser_js_1.DocumentParser();
706
751
  const comments = parser.parseCommentsXml(commentsXml);
707
752
  for (const comment of comments) {
708
753
  this.commentManager.registerExisting(comment);
@@ -710,13 +755,13 @@ class Document {
710
755
  this.commentManager.linkReplies();
711
756
  }
712
757
  parseAndRegisterFootnotes() {
713
- const footnotesXml = this.zipHandler.getFileAsString(types_1.DOCX_PATHS.FOOTNOTES);
758
+ const footnotesXml = this.zipHandler.getFileAsString(types_js_1.DOCX_PATHS.FOOTNOTES);
714
759
  if (!footnotesXml) {
715
760
  return;
716
761
  }
717
762
  this._originalFootnotesXml = footnotesXml;
718
763
  try {
719
- const parser = new DocumentParser_1.DocumentParser();
764
+ const parser = new DocumentParser_js_1.DocumentParser();
720
765
  const footnotes = parser.parseFootnotesXml(footnotesXml);
721
766
  for (const footnote of footnotes) {
722
767
  const id = footnote.getId();
@@ -732,13 +777,13 @@ class Document {
732
777
  }
733
778
  }
734
779
  parseAndRegisterEndnotes() {
735
- const endnotesXml = this.zipHandler.getFileAsString(types_1.DOCX_PATHS.ENDNOTES);
780
+ const endnotesXml = this.zipHandler.getFileAsString(types_js_1.DOCX_PATHS.ENDNOTES);
736
781
  if (!endnotesXml) {
737
782
  return;
738
783
  }
739
784
  this._originalEndnotesXml = endnotesXml;
740
785
  try {
741
- const parser = new DocumentParser_1.DocumentParser();
786
+ const parser = new DocumentParser_js_1.DocumentParser();
742
787
  const endnotes = parser.parseEndnotesXml(endnotesXml);
743
788
  for (const endnote of endnotes) {
744
789
  const id = endnote.getId();
@@ -779,15 +824,15 @@ class Document {
779
824
  }
780
825
  }
781
826
  initializeRequiredFiles() {
782
- this.zipHandler.addFile(types_1.DOCX_PATHS.CONTENT_TYPES, this.generator.generateContentTypes());
783
- this.zipHandler.addFile(types_1.DOCX_PATHS.RELS, this.generator.generateRels());
784
- this.zipHandler.addFile(types_1.DOCX_PATHS.DOCUMENT, this.generator.generateDocumentXml(this.bodyElements, this.section, this.namespaces, this._documentBackground));
827
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.CONTENT_TYPES, this.generator.generateContentTypes());
828
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.RELS, this.generator.generateRels());
829
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.DOCUMENT, this.generator.generateDocumentXml(this.bodyElements, this.section, this.namespaces, this._documentBackground));
785
830
  this.zipHandler.addFile('word/_rels/document.xml.rels', this.relationshipManager.generateXml());
786
- this.zipHandler.addFile(types_1.DOCX_PATHS.STYLES, this.stylesManager.generateStylesXml());
787
- this.zipHandler.addFile(types_1.DOCX_PATHS.NUMBERING, this.numberingManager.generateNumberingXml());
831
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.STYLES, this.stylesManager.generateStylesXml());
832
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.NUMBERING, this.numberingManager.generateNumberingXml());
788
833
  this.zipHandler.addFile('word/fontTable.xml', this.generator.generateFontTable());
789
- this.zipHandler.addFile(types_1.DOCX_PATHS.WEB_SETTINGS, this.generator.generateWebSettings());
790
- this.zipHandler.addFile(types_1.DOCX_PATHS.SETTINGS, this.generator.generateSettings({
834
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.WEB_SETTINGS, this.generator.generateWebSettings());
835
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.SETTINGS, this.generator.generateSettings({
791
836
  trackChangesEnabled: this.trackChangesEnabled,
792
837
  trackFormatting: this.trackFormatting,
793
838
  revisionView: this.revisionViewSettings,
@@ -796,7 +841,7 @@ class Document {
796
841
  documentProtection: this.documentProtection,
797
842
  }));
798
843
  this._compatInfo = {
799
- mode: compatibility_types_1.CompatibilityMode.Word2013Plus,
844
+ mode: compatibility_types_js_1.CompatibilityMode.Word2013Plus,
800
845
  isLegacyMode: false,
801
846
  compatSettings: [
802
847
  { name: 'compatibilityMode', uri: 'http://schemas.microsoft.com/office/word', val: '15' },
@@ -824,8 +869,8 @@ class Document {
824
869
  legacyFlags: [],
825
870
  };
826
871
  this.zipHandler.addFile('word/theme/theme1.xml', this.generator.generateTheme());
827
- this.zipHandler.addFile(types_1.DOCX_PATHS.CORE_PROPS, this.generator.generateCoreProps(this.properties));
828
- this.zipHandler.addFile(types_1.DOCX_PATHS.APP_PROPS, this.generator.generateAppProps(this.properties));
872
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.CORE_PROPS, this.generator.generateCoreProps(this.properties));
873
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.APP_PROPS, this.generator.generateAppProps(this.properties));
829
874
  }
830
875
  addParagraph(paragraph) {
831
876
  paragraph._setStylesManager(this.stylesManager);
@@ -834,16 +879,17 @@ class Document {
834
879
  const runs = paragraph.getRuns();
835
880
  if (runs.length > 0) {
836
881
  const author = this.trackingContext.getAuthor();
837
- const insertion = Revision_1.Revision.createInsertion(author, runs);
882
+ const insertion = Revision_js_1.Revision.createInsertion(author, runs);
838
883
  this.trackingContext.getRevisionManager().register(insertion);
839
884
  paragraph.addRevision(insertion);
840
885
  }
841
886
  }
842
887
  this.bodyElements.push(paragraph);
888
+ this._emitElementAdded(paragraph, this.bodyElements.length - 1);
843
889
  return this;
844
890
  }
845
891
  createParagraph(text) {
846
- const para = new Paragraph_1.Paragraph();
892
+ const para = new Paragraph_js_1.Paragraph();
847
893
  para._setStylesManager(this.stylesManager);
848
894
  if (this.trackChangesEnabled && this.trackingContext.isEnabled()) {
849
895
  para._setTrackingContext(this.trackingContext);
@@ -851,7 +897,9 @@ class Document {
851
897
  if (text) {
852
898
  para.addText(text);
853
899
  }
900
+ Document.applyGlobalDefaultsToParagraph(para);
854
901
  this.bodyElements.push(para);
902
+ this._emitElementAdded(para, this.bodyElements.length - 1);
855
903
  return para;
856
904
  }
857
905
  addHeading(text, level = 1) {
@@ -859,7 +907,7 @@ class Document {
859
907
  }
860
908
  addPageBreak() {
861
909
  const para = this.createParagraph();
862
- const run = new Run_1.Run('');
910
+ const run = new Run_js_1.Run('');
863
911
  run.addBreak('page');
864
912
  para.addRun(run);
865
913
  return para;
@@ -875,34 +923,38 @@ class Document {
875
923
  this.bindTrackingToElement(table);
876
924
  }
877
925
  this.bodyElements.push(table);
926
+ this._emitElementAdded(table, this.bodyElements.length - 1);
878
927
  return this;
879
928
  }
880
929
  addStructuredDocumentTag(sdt) {
881
930
  this.bodyElements.push(sdt);
931
+ this._emitElementAdded(sdt, this.bodyElements.length - 1);
882
932
  return this;
883
933
  }
884
934
  createTable(rows, columns) {
885
- const table = new Table_1.Table(rows, columns);
935
+ const table = new Table_js_1.Table(rows, columns);
886
936
  table._setStylesManager(this.stylesManager);
887
937
  this.bodyElements.push(table);
938
+ this._emitElementAdded(table, this.bodyElements.length - 1);
888
939
  return table;
889
940
  }
890
941
  createTableFromCSV(csv, delimiter = ',') {
891
- const table = Table_1.Table.fromCSV(csv, delimiter);
942
+ const table = Table_js_1.Table.fromCSV(csv, delimiter);
892
943
  table._setStylesManager(this.stylesManager);
893
944
  this.bodyElements.push(table);
945
+ this._emitElementAdded(table, this.bodyElements.length - 1);
894
946
  return table;
895
947
  }
896
948
  getTables() {
897
- return this.bodyElements.filter((el) => el instanceof Table_1.Table);
949
+ return this.bodyElements.filter((el) => el instanceof Table_js_1.Table);
898
950
  }
899
951
  walkElements(visitor) {
900
952
  const walk = (elements) => {
901
953
  for (const element of elements) {
902
- if (element instanceof Paragraph_1.Paragraph) {
954
+ if (element instanceof Paragraph_js_1.Paragraph) {
903
955
  visitor(element);
904
956
  }
905
- else if (element instanceof Table_1.Table) {
957
+ else if (element instanceof Table_js_1.Table) {
906
958
  visitor(element);
907
959
  for (const row of element.getRows()) {
908
960
  for (const cell of row.getCells()) {
@@ -912,7 +964,7 @@ class Document {
912
964
  }
913
965
  }
914
966
  }
915
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
967
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
916
968
  visitor(element);
917
969
  walk(element.getContent());
918
970
  }
@@ -923,58 +975,99 @@ class Document {
923
975
  getAllParagraphs() {
924
976
  const result = [];
925
977
  this.walkElements((element) => {
926
- if (element instanceof Paragraph_1.Paragraph) {
978
+ if (element instanceof Paragraph_js_1.Paragraph) {
927
979
  result.push(element);
928
980
  }
929
981
  });
930
982
  return result;
931
983
  }
984
+ *iterateParagraphs() {
985
+ yield* Document.walkParagraphs(this.bodyElements);
986
+ }
987
+ static *walkParagraphs(elements) {
988
+ for (const element of elements) {
989
+ if (element instanceof Paragraph_js_1.Paragraph) {
990
+ yield element;
991
+ }
992
+ else if (element instanceof Table_js_1.Table) {
993
+ for (const row of element.getRows()) {
994
+ for (const cell of row.getCells()) {
995
+ for (const cellPara of cell.getParagraphs()) {
996
+ yield cellPara;
997
+ }
998
+ }
999
+ }
1000
+ }
1001
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
1002
+ yield* Document.walkParagraphs(element.getContent());
1003
+ }
1004
+ }
1005
+ }
1006
+ *iterateBodyElements() {
1007
+ for (const element of this.bodyElements) {
1008
+ yield element;
1009
+ }
1010
+ }
1011
+ *iterateSections() {
1012
+ let current = [];
1013
+ for (const element of this.bodyElements) {
1014
+ current.push(element);
1015
+ if (element instanceof Paragraph_js_1.Paragraph && element.formatting.sectPr) {
1016
+ yield { sectPr: element.formatting.sectPr, elements: current };
1017
+ current = [];
1018
+ }
1019
+ }
1020
+ if (current.length > 0) {
1021
+ yield { sectPr: this.section ?? null, elements: current };
1022
+ }
1023
+ }
932
1024
  getParagraphs() {
933
1025
  return this.getAllParagraphs();
934
1026
  }
935
1027
  getParagraphAt(index) {
936
- const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_1.Paragraph);
1028
+ const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_js_1.Paragraph);
937
1029
  return paragraphs[index];
938
1030
  }
939
1031
  getTableAt(index) {
940
- const tables = this.bodyElements.filter((el) => el instanceof Table_1.Table);
1032
+ const tables = this.bodyElements.filter((el) => el instanceof Table_js_1.Table);
941
1033
  return tables[index];
942
1034
  }
943
1035
  getBodyElementAt(index) {
944
1036
  return this.bodyElements[index];
945
1037
  }
946
1038
  getParagraphIndex(paragraph) {
947
- const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_1.Paragraph);
1039
+ const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_js_1.Paragraph);
948
1040
  return paragraphs.indexOf(paragraph);
949
1041
  }
950
1042
  getTableIndex(table) {
951
- const tables = this.bodyElements.filter((el) => el instanceof Table_1.Table);
1043
+ const tables = this.bodyElements.filter((el) => el instanceof Table_js_1.Table);
952
1044
  return tables.indexOf(table);
953
1045
  }
954
1046
  getNextParagraph(paragraph) {
955
- const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_1.Paragraph);
1047
+ const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_js_1.Paragraph);
956
1048
  const index = paragraphs.indexOf(paragraph);
957
1049
  return index >= 0 && index < paragraphs.length - 1 ? paragraphs[index + 1] : undefined;
958
1050
  }
959
1051
  getPreviousParagraph(paragraph) {
960
- const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_1.Paragraph);
1052
+ const paragraphs = this.bodyElements.filter((el) => el instanceof Paragraph_js_1.Paragraph);
961
1053
  const index = paragraphs.indexOf(paragraph);
962
1054
  return index > 0 ? paragraphs[index - 1] : undefined;
963
1055
  }
964
1056
  getAllTables() {
965
1057
  const result = [];
966
1058
  this.walkElements((element) => {
967
- if (element instanceof Table_1.Table) {
1059
+ if (element instanceof Table_js_1.Table) {
968
1060
  result.push(element);
969
1061
  }
970
1062
  });
971
1063
  return result;
972
1064
  }
973
1065
  getTableOfContentsElements() {
974
- return this.bodyElements.filter((el) => el instanceof TableOfContentsElement_1.TableOfContentsElement);
1066
+ return this.bodyElements.filter((el) => el instanceof TableOfContentsElement_js_1.TableOfContentsElement);
975
1067
  }
976
1068
  addBodyElement(element) {
977
1069
  this.bodyElements.push(element);
1070
+ this._emitElementAdded(element, this.bodyElements.length - 1);
978
1071
  return this;
979
1072
  }
980
1073
  getBodyElements() {
@@ -991,7 +1084,7 @@ class Document {
991
1084
  return this;
992
1085
  }
993
1086
  setProperties(properties) {
994
- const validated = DocumentValidator_1.DocumentValidator.validateProperties(properties);
1087
+ const validated = DocumentValidator_js_1.DocumentValidator.validateProperties(properties);
995
1088
  this.properties = { ...this.properties, ...validated };
996
1089
  return this;
997
1090
  }
@@ -1126,8 +1219,17 @@ class Document {
1126
1219
  this.updateContentTypesWithImagesHeadersFootersAndComments();
1127
1220
  }
1128
1221
  async save(filePath) {
1222
+ return this.withSaveLock(() => this.saveImpl(filePath));
1223
+ }
1224
+ withSaveLock(operation) {
1225
+ const next = this._saveQueue.then(operation, operation);
1226
+ this._saveQueue = next.catch(() => undefined);
1227
+ return next;
1228
+ }
1229
+ async saveImpl(filePath) {
1129
1230
  const logger = getLogger();
1130
1231
  logger.info('Saving document', { path: filePath, paragraphs: this.getParagraphCount() });
1232
+ this._events.emit('beforeSave', { filePath });
1131
1233
  const tempPath = `${filePath}.tmp.${Date.now()}`;
1132
1234
  let saveSucceeded = false;
1133
1235
  this.createSaveStateSnapshot();
@@ -1142,6 +1244,7 @@ class Document {
1142
1244
  saveSucceeded = true;
1143
1245
  this.clearSaveStateSnapshot();
1144
1246
  logger.info('Document saved', { path: filePath });
1247
+ this._events.emit('afterSave', { filePath });
1145
1248
  }
1146
1249
  catch (error) {
1147
1250
  this.restoreSaveStateSnapshot();
@@ -1161,8 +1264,12 @@ class Document {
1161
1264
  }
1162
1265
  }
1163
1266
  async toBuffer() {
1267
+ return this.withSaveLock(() => this.toBufferImpl());
1268
+ }
1269
+ async toBufferImpl() {
1164
1270
  const logger = getLogger();
1165
1271
  logger.info('Generating document buffer', { paragraphs: this.getParagraphCount() });
1272
+ this._events.emit('beforeSave', {});
1166
1273
  let generateSucceeded = false;
1167
1274
  this.createSaveStateSnapshot();
1168
1275
  try {
@@ -1180,6 +1287,7 @@ class Document {
1180
1287
  generateSucceeded = true;
1181
1288
  this.clearSaveStateSnapshot();
1182
1289
  logger.info('Document buffer generated', { bufferSize: buffer.length });
1290
+ this._events.emit('afterSave', { bufferSize: buffer.length });
1183
1291
  return buffer;
1184
1292
  }
1185
1293
  catch (error) {
@@ -1211,7 +1319,7 @@ class Document {
1211
1319
  updateDocumentXml() {
1212
1320
  let xml = this.generator.generateDocumentXml(this.bodyElements, this.section, this.namespaces, this._documentBackground);
1213
1321
  xml = this.syncTOCFieldInstructions(xml);
1214
- this.zipHandler.updateFile(types_1.DOCX_PATHS.DOCUMENT, xml);
1322
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.DOCUMENT, xml);
1215
1323
  }
1216
1324
  _postProcessDocumentXml() {
1217
1325
  if (!this._flattenIncludePictureFields &&
@@ -1219,7 +1327,7 @@ class Document {
1219
1327
  !this._clearDirectSpacingStyles) {
1220
1328
  return;
1221
1329
  }
1222
- let docXml = this.zipHandler.getFileAsString(types_1.DOCX_PATHS.DOCUMENT);
1330
+ let docXml = this.zipHandler.getFileAsString(types_js_1.DOCX_PATHS.DOCUMENT);
1223
1331
  if (!docXml) {
1224
1332
  return;
1225
1333
  }
@@ -1235,7 +1343,7 @@ class Document {
1235
1343
  docXml = this._clearDirectSpacingFromStyledParagraphs(docXml, this._clearDirectSpacingStyles);
1236
1344
  this._clearDirectSpacingStyles = null;
1237
1345
  }
1238
- this.zipHandler.updateFile(types_1.DOCX_PATHS.DOCUMENT, docXml);
1346
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.DOCUMENT, docXml);
1239
1347
  }
1240
1348
  _flattenIncludePictureFieldsInXml(xml) {
1241
1349
  const fieldTokens = [];
@@ -1459,25 +1567,25 @@ class Document {
1459
1567
  }
1460
1568
  }
1461
1569
  updateCoreProps() {
1462
- if (this._removedParts.has(types_1.DOCX_PATHS.CORE_PROPS) ||
1570
+ if (this._removedParts.has(types_js_1.DOCX_PATHS.CORE_PROPS) ||
1463
1571
  this._removedParts.has('docProps/core.xml'))
1464
1572
  return;
1465
1573
  const xml = this.generator.generateCoreProps(this.properties);
1466
- this.zipHandler.updateFile(types_1.DOCX_PATHS.CORE_PROPS, xml);
1574
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.CORE_PROPS, xml);
1467
1575
  }
1468
1576
  updateAppProps() {
1469
- if (this._removedParts.has(types_1.DOCX_PATHS.APP_PROPS) || this._removedParts.has('docProps/app.xml'))
1577
+ if (this._removedParts.has(types_js_1.DOCX_PATHS.APP_PROPS) || this._removedParts.has('docProps/app.xml'))
1470
1578
  return;
1471
1579
  if (this._originalAppPropsXml && !this._appPropsModified) {
1472
1580
  return;
1473
1581
  }
1474
1582
  if (this._originalAppPropsXml && this._appPropsModified) {
1475
1583
  const mergedXml = this.mergeAppPropsWithOriginal();
1476
- this.zipHandler.updateFile(types_1.DOCX_PATHS.APP_PROPS, mergedXml);
1584
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.APP_PROPS, mergedXml);
1477
1585
  }
1478
1586
  else {
1479
1587
  const xml = this.generator.generateAppProps(this.properties);
1480
- this.zipHandler.updateFile(types_1.DOCX_PATHS.APP_PROPS, xml);
1588
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.APP_PROPS, xml);
1481
1589
  }
1482
1590
  }
1483
1591
  mergeAppPropsWithOriginal() {
@@ -1486,7 +1594,7 @@ class Document {
1486
1594
  }
1487
1595
  let xml = this._originalAppPropsXml;
1488
1596
  if (this.properties.company !== undefined) {
1489
- const escaped = XMLBuilder_1.XMLBuilder.sanitizeXmlContent(this.properties.company);
1597
+ const escaped = XMLBuilder_js_1.XMLBuilder.sanitizeXmlContent(this.properties.company);
1490
1598
  if (xml.includes('<Company>')) {
1491
1599
  xml = xml.replace(/<Company>[^<]*<\/Company>/, `<Company>${escaped}</Company>`);
1492
1600
  }
@@ -1495,19 +1603,19 @@ class Document {
1495
1603
  }
1496
1604
  }
1497
1605
  if (this.properties.application !== undefined) {
1498
- const escaped = XMLBuilder_1.XMLBuilder.sanitizeXmlContent(this.properties.application);
1606
+ const escaped = XMLBuilder_js_1.XMLBuilder.sanitizeXmlContent(this.properties.application);
1499
1607
  if (xml.includes('<Application>')) {
1500
1608
  xml = xml.replace(/<Application>[^<]*<\/Application>/, `<Application>${escaped}</Application>`);
1501
1609
  }
1502
1610
  }
1503
1611
  if (this.properties.appVersion !== undefined) {
1504
- const escaped = XMLBuilder_1.XMLBuilder.sanitizeXmlContent(this.properties.appVersion);
1612
+ const escaped = XMLBuilder_js_1.XMLBuilder.sanitizeXmlContent(this.properties.appVersion);
1505
1613
  if (xml.includes('<AppVersion>')) {
1506
1614
  xml = xml.replace(/<AppVersion>[^<]*<\/AppVersion>/, `<AppVersion>${escaped}</AppVersion>`);
1507
1615
  }
1508
1616
  }
1509
1617
  if (this.properties.manager !== undefined) {
1510
- const escaped = XMLBuilder_1.XMLBuilder.sanitizeXmlContent(this.properties.manager);
1618
+ const escaped = XMLBuilder_js_1.XMLBuilder.sanitizeXmlContent(this.properties.manager);
1511
1619
  if (xml.includes('<Manager>')) {
1512
1620
  xml = xml.replace(/<Manager>[^<]*<\/Manager>/, `<Manager>${escaped}</Manager>`);
1513
1621
  }
@@ -1534,10 +1642,10 @@ class Document {
1534
1642
  return;
1535
1643
  }
1536
1644
  if (this._originalWebSettingsXml) {
1537
- this.zipHandler.updateFile(types_1.DOCX_PATHS.WEB_SETTINGS, this._originalWebSettingsXml);
1645
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.WEB_SETTINGS, this._originalWebSettingsXml);
1538
1646
  }
1539
1647
  else {
1540
- this.zipHandler.updateFile(types_1.DOCX_PATHS.WEB_SETTINGS, this.generator.generateWebSettings(this._webSettings));
1648
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.WEB_SETTINGS, this.generator.generateWebSettings(this._webSettings));
1541
1649
  }
1542
1650
  }
1543
1651
  getWebSettingsInfo() {
@@ -1555,14 +1663,34 @@ class Document {
1555
1663
  if (!this._originalWebSettingsXml) {
1556
1664
  return 0;
1557
1665
  }
1558
- const matches = this._originalWebSettingsXml.match(/<w:div\b/g);
1666
+ const original = this._originalWebSettingsXml;
1667
+ const matches = original.match(/<w:div\b/g);
1559
1668
  const count = matches ? matches.length : 0;
1560
1669
  if (count === 0) {
1561
1670
  return 0;
1562
1671
  }
1563
- this._originalWebSettingsXml = this._originalWebSettingsXml.replace(/<w:divs>[\s\S]*?<\/w:divs>/g, '');
1564
- this._webSettingsModified = true;
1565
- return count;
1672
+ try {
1673
+ const mutated = original.replace(/<w:divs>[\s\S]*?<\/w:divs>/g, '');
1674
+ if (!Document.isWellFormedXml(mutated)) {
1675
+ getLogger().warn('stripWebDivs produced malformed XML; reverting');
1676
+ return 0;
1677
+ }
1678
+ this._originalWebSettingsXml = mutated;
1679
+ this._webSettingsModified = true;
1680
+ return count;
1681
+ }
1682
+ catch (err) {
1683
+ getLogger().warn('stripWebDivs failed; reverting', { error: String(err) });
1684
+ this._originalWebSettingsXml = original;
1685
+ return 0;
1686
+ }
1687
+ }
1688
+ static isWellFormedXml(xml) {
1689
+ if (xml.length === 0)
1690
+ return true;
1691
+ const openTags = xml.match(/<([a-zA-Z_][^\s/>]*)\b[^>]*[^/]>/g) || [];
1692
+ const closeTags = xml.match(/<\/([a-zA-Z_][^\s>]*)\s*>/g) || [];
1693
+ return openTags.length === closeTags.length;
1566
1694
  }
1567
1695
  sanitizeWebSettings() {
1568
1696
  let divCount = 0;
@@ -1604,11 +1732,11 @@ class Document {
1604
1732
  updateStylesXml() {
1605
1733
  if (this._originalStylesXml) {
1606
1734
  const mergedXml = this.mergeStylesWithOriginal();
1607
- this.zipHandler.updateFile(types_1.DOCX_PATHS.STYLES, mergedXml);
1735
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.STYLES, mergedXml);
1608
1736
  }
1609
1737
  else {
1610
1738
  const xml = this.stylesManager.generateStylesXml();
1611
- this.zipHandler.updateFile(types_1.DOCX_PATHS.STYLES, xml);
1739
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.STYLES, xml);
1612
1740
  }
1613
1741
  }
1614
1742
  mergeStylesWithOriginal() {
@@ -1628,7 +1756,7 @@ class Document {
1628
1756
  }
1629
1757
  let resultXml = this._originalStylesXml;
1630
1758
  for (const [styleId, style] of modifiedStyles) {
1631
- const newStyleXml = XMLBuilder_1.XMLBuilder.elementToString(style.toXML());
1759
+ const newStyleXml = XMLBuilder_js_1.XMLBuilder.elementToString(style.toXML());
1632
1760
  const escapedStyleId = styleId.replace(/[.*+?^${}()|[\]\\"]/g, '\\$&');
1633
1761
  const stylePattern = new RegExp(`<w:style[^>]*\\sw:styleId="${escapedStyleId}"[^>]*>[\\s\\S]*?</w:style>`);
1634
1762
  if (stylePattern.test(resultXml)) {
@@ -1642,20 +1770,20 @@ class Document {
1642
1770
  }
1643
1771
  updateNumberingXml() {
1644
1772
  if (this._originalNumberingXml && !this.numberingManager.isModified()) {
1645
- this.zipHandler.updateFile(types_1.DOCX_PATHS.NUMBERING, this._originalNumberingXml);
1773
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.NUMBERING, this._originalNumberingXml);
1646
1774
  }
1647
1775
  else if (this._originalNumberingXml) {
1648
1776
  const mergedXml = this.mergeNumberingWithOriginal();
1649
- this.zipHandler.updateFile(types_1.DOCX_PATHS.NUMBERING, mergedXml);
1777
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.NUMBERING, mergedXml);
1650
1778
  this.cleanupNumberingRels(mergedXml);
1651
1779
  }
1652
1780
  else {
1653
1781
  const xml = this.numberingManager.generateNumberingXml();
1654
- this.zipHandler.updateFile(types_1.DOCX_PATHS.NUMBERING, xml);
1782
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.NUMBERING, xml);
1655
1783
  }
1656
1784
  }
1657
1785
  cleanupNumberingRels(mergedXml) {
1658
- const relsXml = this.zipHandler.getFileAsString(types_1.DOCX_PATHS.NUMBERING_RELS);
1786
+ const relsXml = this.zipHandler.getFileAsString(types_js_1.DOCX_PATHS.NUMBERING_RELS);
1659
1787
  if (!relsXml)
1660
1788
  return;
1661
1789
  const usedRIds = new Set();
@@ -1679,10 +1807,10 @@ class Document {
1679
1807
  }
1680
1808
  if (entriesToRemove.length > 0) {
1681
1809
  if (!/<Relationship\s/.test(cleanedRels)) {
1682
- this.zipHandler.removeFile(types_1.DOCX_PATHS.NUMBERING_RELS);
1810
+ this.zipHandler.removeFile(types_js_1.DOCX_PATHS.NUMBERING_RELS);
1683
1811
  }
1684
1812
  else {
1685
- this.zipHandler.updateFile(types_1.DOCX_PATHS.NUMBERING_RELS, cleanedRels);
1813
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.NUMBERING_RELS, cleanedRels);
1686
1814
  }
1687
1815
  this.logger.info(`Removed ${entriesToRemove.length} orphaned numbering relationship(s)`);
1688
1816
  }
@@ -1706,7 +1834,7 @@ class Document {
1706
1834
  const abstractNum = this.numberingManager.getAbstractNumbering(abstractNumId);
1707
1835
  if (!abstractNum)
1708
1836
  continue;
1709
- const newXml = XMLBuilder_1.XMLBuilder.elementToString(abstractNum.toXML());
1837
+ const newXml = XMLBuilder_js_1.XMLBuilder.elementToString(abstractNum.toXML());
1710
1838
  const escapedId = String(abstractNumId).replace(/[.*+?^${}()|[\]\\"]/g, '\\$&');
1711
1839
  const pattern = new RegExp(`<w:abstractNum[^>]*\\sw:abstractNumId="${escapedId}"[^>]*>[\\s\\S]*?</w:abstractNum>`);
1712
1840
  if (pattern.test(resultXml)) {
@@ -1726,7 +1854,7 @@ class Document {
1726
1854
  const instance = this.numberingManager.getInstance(numId);
1727
1855
  if (!instance)
1728
1856
  continue;
1729
- const newXml = XMLBuilder_1.XMLBuilder.elementToString(instance.toXML());
1857
+ const newXml = XMLBuilder_js_1.XMLBuilder.elementToString(instance.toXML());
1730
1858
  const escapedNumId = String(numId).replace(/[.*+?^${}()|[\]\\"]/g, '\\$&');
1731
1859
  const pattern = new RegExp(`<w:num\\b[^>]*\\sw:numId="${escapedNumId}"[^>]*>[\\s\\S]*?</w:num>`);
1732
1860
  if (pattern.test(resultXml)) {
@@ -1784,7 +1912,7 @@ class Document {
1784
1912
  }
1785
1913
  updateSettingsXml() {
1786
1914
  const xml = this.mergeSettingsWithOriginal();
1787
- this.zipHandler.updateFile(types_1.DOCX_PATHS.SETTINGS, xml);
1915
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.SETTINGS, xml);
1788
1916
  }
1789
1917
  mergeSettingsWithOriginal() {
1790
1918
  if (!this._originalSettingsXml) {
@@ -1819,7 +1947,7 @@ class Document {
1819
1947
  return xml;
1820
1948
  }
1821
1949
  xml = xml.replace(/<w:view\b[^>]*\/?>\s*/g, '');
1822
- const viewXml = `<w:view w:val="${XMLBuilder_1.XMLBuilder.escapeXmlAttribute(this._documentView)}"/>`;
1950
+ const viewXml = `<w:view w:val="${XMLBuilder_js_1.XMLBuilder.escapeXmlAttribute(this._documentView)}"/>`;
1823
1951
  xml = xml.replace(/(<w:settings\b[^>]*>)/, `$1\n ${viewXml}`);
1824
1952
  return xml;
1825
1953
  }
@@ -1871,7 +1999,7 @@ class Document {
1871
1999
  return xml;
1872
2000
  }
1873
2001
  const prot = this.documentProtection;
1874
- const esc = XMLBuilder_1.XMLBuilder.escapeXmlAttribute;
2002
+ const esc = XMLBuilder_js_1.XMLBuilder.escapeXmlAttribute;
1875
2003
  let protXml = `\n <w:documentProtection w:edit="${esc(prot.edit)}" w:enforcement="${prot.enforcement ? '1' : '0'}"`;
1876
2004
  if (prot.cryptProviderType)
1877
2005
  protXml += ` w:cryptProviderType="${esc(prot.cryptProviderType)}"`;
@@ -1904,7 +2032,7 @@ class Document {
1904
2032
  if (this.rsids.size === 0) {
1905
2033
  return xml;
1906
2034
  }
1907
- const esc = XMLBuilder_1.XMLBuilder.escapeXmlAttribute;
2035
+ const esc = XMLBuilder_js_1.XMLBuilder.escapeXmlAttribute;
1908
2036
  let rsidsXml = '\n <w:rsids>';
1909
2037
  if (this.rsidRoot) {
1910
2038
  rsidsXml += `\n <w:rsidRoot w:val="${esc(this.rsidRoot)}"/>`;
@@ -2019,7 +2147,7 @@ class Document {
2019
2147
  const cell = tableRow.getCell(col);
2020
2148
  if (!cell)
2021
2149
  return undefined;
2022
- return (0, ShadingResolver_1.resolveCellShading)(cell, table, this.stylesManager);
2150
+ return (0, ShadingResolver_js_1.resolveCellShading)(cell, table, this.stylesManager);
2023
2151
  }
2024
2152
  addStyle(style) {
2025
2153
  this.stylesManager.addStyle(style);
@@ -2070,7 +2198,7 @@ class Document {
2070
2198
  ? { ...currentProps.runFormatting, ...properties.runFormatting }
2071
2199
  : currentProps.runFormatting,
2072
2200
  };
2073
- const updatedStyle = Style_1.Style.create(updatedProps);
2201
+ const updatedStyle = Style_js_1.Style.create(updatedProps);
2074
2202
  this.stylesManager.addStyle(updatedStyle);
2075
2203
  return true;
2076
2204
  }
@@ -2078,7 +2206,7 @@ class Document {
2078
2206
  let count = 0;
2079
2207
  for (const element of this.bodyElements) {
2080
2208
  if (predicate(element)) {
2081
- if (element instanceof Paragraph_1.Paragraph) {
2209
+ if (element instanceof Paragraph_js_1.Paragraph) {
2082
2210
  element.setStyle(styleId);
2083
2211
  count++;
2084
2212
  }
@@ -2101,7 +2229,7 @@ class Document {
2101
2229
  findElementsByStyle(styleId) {
2102
2230
  const results = [];
2103
2231
  for (const element of this.bodyElements) {
2104
- if (element instanceof Paragraph_1.Paragraph) {
2232
+ if (element instanceof Paragraph_js_1.Paragraph) {
2105
2233
  const formatting = element.getFormatting();
2106
2234
  if (formatting.style === styleId) {
2107
2235
  results.push(element);
@@ -2131,7 +2259,7 @@ class Document {
2131
2259
  applyStyleToAllParagraphsWithStyle(currentStyleId, newStyleId) {
2132
2260
  let count = 0;
2133
2261
  for (const element of this.bodyElements) {
2134
- if (element instanceof Paragraph_1.Paragraph) {
2262
+ if (element instanceof Paragraph_js_1.Paragraph) {
2135
2263
  const formatting = element.getFormatting();
2136
2264
  if (formatting.style === currentStyleId) {
2137
2265
  element.setStyle(newStyleId);
@@ -2173,7 +2301,7 @@ class Document {
2173
2301
  count++;
2174
2302
  };
2175
2303
  for (const element of this.bodyElements) {
2176
- if (element instanceof Paragraph_1.Paragraph) {
2304
+ if (element instanceof Paragraph_js_1.Paragraph) {
2177
2305
  applyToParagraph(element);
2178
2306
  }
2179
2307
  }
@@ -2248,7 +2376,7 @@ class Document {
2248
2376
  if (paragraphs.length > 0) {
2249
2377
  const firstPara = paragraphs[0];
2250
2378
  if (firstPara) {
2251
- const bookmark = new Bookmark_1.Bookmark({ name: '_top' });
2379
+ const bookmark = new Bookmark_js_1.Bookmark({ name: '_top' });
2252
2380
  const registered = this.bookmarkManager.register(bookmark);
2253
2381
  firstPara.addBookmark(registered);
2254
2382
  }
@@ -2463,7 +2591,7 @@ class Document {
2463
2591
  for (const paragraph of this.getAllParagraphs()) {
2464
2592
  const content = paragraph.getContent();
2465
2593
  for (const item of content) {
2466
- if (item instanceof ImageRun_1.ImageRun) {
2594
+ if (item instanceof ImageRun_js_1.ImageRun) {
2467
2595
  const image = item.getImageElement();
2468
2596
  const relId = image.getRelationshipId();
2469
2597
  if (relId && largeImageIds.has(relId)) {
@@ -2481,7 +2609,7 @@ class Document {
2481
2609
  let count = 0;
2482
2610
  const minEmus = Math.round(minPixels * 9525);
2483
2611
  const processImageRun = (item) => {
2484
- if (item instanceof ImageRun_1.ImageRun) {
2612
+ if (item instanceof ImageRun_js_1.ImageRun) {
2485
2613
  const image = item.getImageElement();
2486
2614
  const width = image.getWidth();
2487
2615
  const height = image.getHeight();
@@ -2509,7 +2637,7 @@ class Document {
2509
2637
  if (processImageRun(item)) {
2510
2638
  hasLargeImage = true;
2511
2639
  }
2512
- else if (item instanceof Revision_1.Revision) {
2640
+ else if (item instanceof Revision_js_1.Revision) {
2513
2641
  if (processRevision(item)) {
2514
2642
  hasLargeImage = true;
2515
2643
  }
@@ -2606,12 +2734,12 @@ class Document {
2606
2734
  const paragraphs = this.getAllParagraphs();
2607
2735
  this.collectNumIdsFromParagraphs(paragraphs, usedNumIds);
2608
2736
  for (const element of this.bodyElements) {
2609
- if (element instanceof Table_1.Table) {
2737
+ if (element instanceof Table_js_1.Table) {
2610
2738
  this.collectNumIdsFromTable(element, usedNumIds);
2611
2739
  }
2612
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
2740
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
2613
2741
  for (const content of element.getContent()) {
2614
- if (content instanceof Table_1.Table) {
2742
+ if (content instanceof Table_js_1.Table) {
2615
2743
  this.collectNumIdsFromTable(content, usedNumIds);
2616
2744
  }
2617
2745
  }
@@ -2632,8 +2760,8 @@ class Document {
2632
2760
  for (const filePath of this.zipHandler.getFilePaths()) {
2633
2761
  if (filePath.startsWith('word/header') ||
2634
2762
  filePath.startsWith('word/footer') ||
2635
- filePath === types_1.DOCX_PATHS.FOOTNOTES ||
2636
- filePath === types_1.DOCX_PATHS.ENDNOTES) {
2763
+ filePath === types_js_1.DOCX_PATHS.FOOTNOTES ||
2764
+ filePath === types_js_1.DOCX_PATHS.ENDNOTES) {
2637
2765
  const xml = this.zipHandler.getFileAsString(filePath);
2638
2766
  if (xml) {
2639
2767
  this.collectNumIdsFromXml(xml, usedNumIds);
@@ -2696,18 +2824,18 @@ class Document {
2696
2824
  }
2697
2825
  };
2698
2826
  for (const element of this.bodyElements) {
2699
- if (element instanceof Paragraph_1.Paragraph) {
2827
+ if (element instanceof Paragraph_js_1.Paragraph) {
2700
2828
  collectFromParagraph(element);
2701
2829
  }
2702
- else if (element instanceof Table_1.Table) {
2830
+ else if (element instanceof Table_js_1.Table) {
2703
2831
  collectFromTable(element);
2704
2832
  }
2705
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
2833
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
2706
2834
  for (const content of element.getContent()) {
2707
- if (content instanceof Paragraph_1.Paragraph) {
2835
+ if (content instanceof Paragraph_js_1.Paragraph) {
2708
2836
  collectFromParagraph(content);
2709
2837
  }
2710
- else if (content instanceof Table_1.Table) {
2838
+ else if (content instanceof Table_js_1.Table) {
2711
2839
  collectFromTable(content);
2712
2840
  }
2713
2841
  }
@@ -2718,7 +2846,7 @@ class Document {
2718
2846
  if (!endIds.has(id)) {
2719
2847
  const lastPara = this.getLastParagraph();
2720
2848
  if (lastPara) {
2721
- lastPara.addBookmarkEnd(new Bookmark_1.Bookmark({ id, name: `_repair_${id}`, skipNormalization: true }));
2849
+ lastPara.addBookmarkEnd(new Bookmark_js_1.Bookmark({ id, name: `_repair_${id}`, skipNormalization: true }));
2722
2850
  this.logger.warn(`Bookmark validation: added missing bookmarkEnd for ID ${id}`);
2723
2851
  repairs++;
2724
2852
  }
@@ -2764,13 +2892,13 @@ class Document {
2764
2892
  }
2765
2893
  }
2766
2894
  for (const item of para.getContent()) {
2767
- if (item instanceof Shape_1.Shape) {
2895
+ if (item instanceof Shape_js_1.Shape) {
2768
2896
  item.setDocPrId(docPrId++);
2769
2897
  }
2770
- else if (item instanceof TextBox_1.TextBox) {
2898
+ else if (item instanceof TextBox_js_1.TextBox) {
2771
2899
  item.setDocPrId(docPrId++);
2772
2900
  }
2773
- else if (item instanceof ImageRun_1.ImageRun) {
2901
+ else if (item instanceof ImageRun_js_1.ImageRun) {
2774
2902
  item.getImageElement().setDocPrId(docPrId++);
2775
2903
  }
2776
2904
  }
@@ -2782,10 +2910,10 @@ class Document {
2782
2910
  }
2783
2911
  };
2784
2912
  for (const element of this.bodyElements) {
2785
- if (element instanceof Paragraph_1.Paragraph) {
2913
+ if (element instanceof Paragraph_js_1.Paragraph) {
2786
2914
  processParagraph(element);
2787
2915
  }
2788
- else if (element instanceof Table_1.Table) {
2916
+ else if (element instanceof Table_js_1.Table) {
2789
2917
  for (const row of element.getRows()) {
2790
2918
  for (const cell of row.getCells()) {
2791
2919
  for (const para of cell.getParagraphs()) {
@@ -2805,10 +2933,10 @@ class Document {
2805
2933
  getLastParagraph() {
2806
2934
  for (let i = this.bodyElements.length - 1; i >= 0; i--) {
2807
2935
  const element = this.bodyElements[i];
2808
- if (element instanceof Paragraph_1.Paragraph) {
2936
+ if (element instanceof Paragraph_js_1.Paragraph) {
2809
2937
  return element;
2810
2938
  }
2811
- if (element instanceof Table_1.Table) {
2939
+ if (element instanceof Table_js_1.Table) {
2812
2940
  const para = element.getLastParagraph();
2813
2941
  if (para)
2814
2942
  return para;
@@ -2836,18 +2964,18 @@ class Document {
2836
2964
  }
2837
2965
  };
2838
2966
  for (const element of this.bodyElements) {
2839
- if (element instanceof Paragraph_1.Paragraph) {
2967
+ if (element instanceof Paragraph_js_1.Paragraph) {
2840
2968
  removeFromParagraph(element);
2841
2969
  }
2842
- else if (element instanceof Table_1.Table) {
2970
+ else if (element instanceof Table_js_1.Table) {
2843
2971
  removeFromTable(element);
2844
2972
  }
2845
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
2973
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
2846
2974
  for (const content of element.getContent()) {
2847
- if (content instanceof Paragraph_1.Paragraph) {
2975
+ if (content instanceof Paragraph_js_1.Paragraph) {
2848
2976
  removeFromParagraph(content);
2849
2977
  }
2850
- else if (content instanceof Table_1.Table) {
2978
+ else if (content instanceof Table_js_1.Table) {
2851
2979
  removeFromTable(content);
2852
2980
  }
2853
2981
  }
@@ -2868,10 +2996,10 @@ class Document {
2868
2996
  }
2869
2997
  collectNumIdsFromElements(elements, usedNumIds) {
2870
2998
  for (const element of elements) {
2871
- if (element instanceof Paragraph_1.Paragraph) {
2999
+ if (element instanceof Paragraph_js_1.Paragraph) {
2872
3000
  this.collectNumIdsFromParagraphs([element], usedNumIds);
2873
3001
  }
2874
- else if (element instanceof Table_1.Table) {
3002
+ else if (element instanceof Table_js_1.Table) {
2875
3003
  for (const row of element.getRows()) {
2876
3004
  for (const cell of row.getCells()) {
2877
3005
  this.collectNumIdsFromParagraphs(cell.getParagraphs(), usedNumIds);
@@ -2905,19 +3033,19 @@ class Document {
2905
3033
  let insertedCount = 0;
2906
3034
  for (let i = 0; i < this.bodyElements.length; i++) {
2907
3035
  const element = this.bodyElements[i];
2908
- if (element instanceof Paragraph_1.Paragraph) {
3036
+ if (element instanceof Paragraph_js_1.Paragraph) {
2909
3037
  const numbering = element.getNumbering();
2910
3038
  if (numbering) {
2911
3039
  const nextElement = this.bodyElements[i + 1];
2912
3040
  const isListEnd = !nextElement ||
2913
- !(nextElement instanceof Paragraph_1.Paragraph) ||
3041
+ !(nextElement instanceof Paragraph_js_1.Paragraph) ||
2914
3042
  nextElement.getNumbering()?.numId !== numbering.numId;
2915
3043
  if (isListEnd) {
2916
- const alreadyHasBlank = nextElement instanceof Paragraph_1.Paragraph &&
3044
+ const alreadyHasBlank = nextElement instanceof Paragraph_js_1.Paragraph &&
2917
3045
  nextElement.getText().trim() === '' &&
2918
3046
  nextElement.getContent().length === 0;
2919
3047
  if (!alreadyHasBlank) {
2920
- const blankPara = new Paragraph_1.Paragraph();
3048
+ const blankPara = new Paragraph_js_1.Paragraph();
2921
3049
  blankPara.setStyle('Normal');
2922
3050
  this.bodyElements.splice(i + 1, 0, blankPara);
2923
3051
  insertedCount++;
@@ -2955,7 +3083,7 @@ class Document {
2955
3083
  sectionProps.titlePage = false;
2956
3084
  }
2957
3085
  for (const element of this.bodyElements) {
2958
- if (element instanceof Paragraph_1.Paragraph && typeof element.formatting.sectPr === 'string') {
3086
+ if (element instanceof Paragraph_js_1.Paragraph && typeof element.formatting.sectPr === 'string') {
2959
3087
  let sectPrXml = element.formatting.sectPr;
2960
3088
  sectPrXml = sectPrXml.replace(/<w:headerReference[^/]*\/>/g, '');
2961
3089
  sectPrXml = sectPrXml.replace(/<w:headerReference[^>]*>[\s\S]*?<\/w:headerReference>/g, '');
@@ -2981,11 +3109,11 @@ class Document {
2981
3109
  return count;
2982
3110
  }
2983
3111
  getStylesXml() {
2984
- const stylesFile = this.zipHandler.getFileAsString(types_1.DOCX_PATHS.STYLES);
3112
+ const stylesFile = this.zipHandler.getFileAsString(types_js_1.DOCX_PATHS.STYLES);
2985
3113
  return stylesFile || this.stylesManager.generateStylesXml();
2986
3114
  }
2987
3115
  setStylesXml(xml) {
2988
- this.zipHandler.updateFile(types_1.DOCX_PATHS.STYLES, xml);
3116
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.STYLES, xml);
2989
3117
  this.stylesManager.clear();
2990
3118
  }
2991
3119
  getZipHandler() {
@@ -3130,7 +3258,7 @@ class Document {
3130
3258
  if (paraIndex === -1) {
3131
3259
  throw new Error('Paragraph not found in document body elements');
3132
3260
  }
3133
- const table = new Table_1.Table(1, 1);
3261
+ const table = new Table_js_1.Table(1, 1);
3134
3262
  const cell = table.getCell(0, 0);
3135
3263
  if (!cell) {
3136
3264
  throw new Error('Failed to get cell from newly created table');
@@ -3230,10 +3358,10 @@ class Document {
3230
3358
  const runs = [];
3231
3359
  const content = para.getContent();
3232
3360
  for (const item of content) {
3233
- if (item instanceof Run_1.Run) {
3361
+ if (item instanceof Run_js_1.Run) {
3234
3362
  runs.push(item);
3235
3363
  }
3236
- else if (item instanceof Revision_1.Revision) {
3364
+ else if (item instanceof Revision_js_1.Revision) {
3237
3365
  const revType = item.getType();
3238
3366
  if (revType === 'delete' || revType === 'moveFrom') {
3239
3367
  continue;
@@ -3241,13 +3369,21 @@ class Document {
3241
3369
  const revisionRuns = item.getRuns();
3242
3370
  runs.push(...revisionRuns);
3243
3371
  }
3244
- else if (item instanceof Hyperlink_1.Hyperlink) {
3372
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
3245
3373
  const hyperlinkRun = item.getRun();
3246
3374
  runs.push(hyperlinkRun);
3247
3375
  }
3248
3376
  }
3249
3377
  return runs;
3250
3378
  }
3379
+ static stripThemeFontsIfExplicitFont(runConfig) {
3380
+ if (runConfig?.font) {
3381
+ delete runConfig.fontAsciiTheme;
3382
+ delete runConfig.fontHAnsiTheme;
3383
+ delete runConfig.fontEastAsiaTheme;
3384
+ delete runConfig.fontCsTheme;
3385
+ }
3386
+ }
3251
3387
  applyStyles(options) {
3252
3388
  const results = {
3253
3389
  heading1: false,
@@ -3316,6 +3452,11 @@ class Document {
3316
3452
  ...options?.listParagraph?.paragraph,
3317
3453
  },
3318
3454
  };
3455
+ Document.stripThemeFontsIfExplicitFont(h1Config.run);
3456
+ Document.stripThemeFontsIfExplicitFont(h2Config.run);
3457
+ Document.stripThemeFontsIfExplicitFont(h3Config.run);
3458
+ Document.stripThemeFontsIfExplicitFont(normalConfig.run);
3459
+ Document.stripThemeFontsIfExplicitFont(listParaConfig.run);
3319
3460
  const preserveBlankLines = options?.preserveBlankLinesAfterHeading2Tables ?? true;
3320
3461
  if (heading1 && h1Config.run && h1Config.paragraph) {
3321
3462
  if (h1Config.run)
@@ -3367,7 +3508,7 @@ class Document {
3367
3508
  const indent = listParaConfig.paragraph.indentation;
3368
3509
  if (indent?.hanging !== undefined && indent?.left !== undefined) {
3369
3510
  if (indent.hanging > indent.left) {
3370
- const logger = (0, logger_1.getGlobalLogger)();
3511
+ const logger = (0, logger_js_1.getGlobalLogger)();
3371
3512
  logger.warn(`[Document] ListParagraph indentation: hanging (${indent.hanging}) > left (${indent.left}). ` +
3372
3513
  `Capping hanging to left to prevent negative bullet position.`);
3373
3514
  indent.hanging = indent.left;
@@ -3597,13 +3738,13 @@ class Document {
3597
3738
  if (tableIndex !== -1) {
3598
3739
  const nextElement = this.bodyElements[tableIndex + 1];
3599
3740
  const isNextElementBlank = (() => {
3600
- if (!(nextElement instanceof Paragraph_1.Paragraph))
3741
+ if (!(nextElement instanceof Paragraph_js_1.Paragraph))
3601
3742
  return false;
3602
3743
  const content = nextElement.getContent();
3603
3744
  if (!content || content.length === 0)
3604
3745
  return true;
3605
3746
  for (const item of content) {
3606
- if (item instanceof Hyperlink_1.Hyperlink) {
3747
+ if (item instanceof Hyperlink_js_1.Hyperlink) {
3607
3748
  return false;
3608
3749
  }
3609
3750
  if (item.getText) {
@@ -3615,7 +3756,7 @@ class Document {
3615
3756
  return true;
3616
3757
  })();
3617
3758
  if (!isNextElementBlank) {
3618
- const blankPara = Paragraph_1.Paragraph.create();
3759
+ const blankPara = Paragraph_js_1.Paragraph.create();
3619
3760
  blankPara.setSpaceAfter(120);
3620
3761
  if (preserveBlankLines) {
3621
3762
  blankPara.setPreserved(true);
@@ -3909,7 +4050,7 @@ class Document {
3909
4050
  }
3910
4051
  let tocStyle = this.stylesManager.getStyle(styleId);
3911
4052
  if (!tocStyle) {
3912
- tocStyle = Style_1.Style.createTOCStyle(level, {
4053
+ tocStyle = Style_js_1.Style.createTOCStyle(level, {
3913
4054
  run: options.run,
3914
4055
  paragraph: paragraphOverride,
3915
4056
  });
@@ -4187,28 +4328,28 @@ class Document {
4187
4328
  para.setAlignment(options.alignment);
4188
4329
  }
4189
4330
  if (options.spaceAbove !== undefined) {
4190
- para.setSpaceBefore(options.spaceAbove * units_1.UNITS.TWIPS_PER_POINT);
4331
+ para.setSpaceBefore(options.spaceAbove * units_js_1.UNITS.TWIPS_PER_POINT);
4191
4332
  }
4192
4333
  if (options.spaceBelow !== undefined) {
4193
- para.setSpaceAfter(options.spaceBelow * units_1.UNITS.TWIPS_PER_POINT);
4334
+ para.setSpaceAfter(options.spaceBelow * units_js_1.UNITS.TWIPS_PER_POINT);
4194
4335
  }
4195
4336
  if (options.lineSpacing !== undefined) {
4196
- para.setLineSpacing(options.lineSpacing * units_1.UNITS.TWIPS_PER_POINT);
4337
+ para.setLineSpacing(options.lineSpacing * units_js_1.UNITS.TWIPS_PER_POINT);
4197
4338
  }
4198
4339
  if (options.indentLeft !== undefined) {
4199
- para.setLeftIndent(options.indentLeft * units_1.UNITS.TWIPS_PER_INCH);
4340
+ para.setLeftIndent(options.indentLeft * units_js_1.UNITS.TWIPS_PER_INCH);
4200
4341
  }
4201
4342
  if (options.indentRight !== undefined) {
4202
- para.setRightIndent(options.indentRight * units_1.UNITS.TWIPS_PER_INCH);
4343
+ para.setRightIndent(options.indentRight * units_js_1.UNITS.TWIPS_PER_INCH);
4203
4344
  }
4204
4345
  if (options.indentFirst !== undefined) {
4205
- para.setFirstLineIndent(options.indentFirst * units_1.UNITS.TWIPS_PER_INCH);
4346
+ para.setFirstLineIndent(options.indentFirst * units_js_1.UNITS.TWIPS_PER_INCH);
4206
4347
  }
4207
4348
  if (options.indentHanging !== undefined) {
4208
4349
  if (!para.formatting.indentation) {
4209
4350
  para.formatting.indentation = {};
4210
4351
  }
4211
- para.formatting.indentation.hanging = options.indentHanging * units_1.UNITS.TWIPS_PER_INCH;
4352
+ para.formatting.indentation.hanging = options.indentHanging * units_js_1.UNITS.TWIPS_PER_INCH;
4212
4353
  }
4213
4354
  if (options.keepWithNext) {
4214
4355
  para.setKeepNext(true);
@@ -4513,7 +4654,7 @@ class Document {
4513
4654
  findHeadingStylesUsedByParagraphs() {
4514
4655
  const usedStyles = new Map();
4515
4656
  const processElement = (element) => {
4516
- if (element instanceof Paragraph_1.Paragraph) {
4657
+ if (element instanceof Paragraph_js_1.Paragraph) {
4517
4658
  const styleId = element.getStyle();
4518
4659
  if (styleId) {
4519
4660
  const style = this.stylesManager.getStyle(styleId);
@@ -4529,7 +4670,7 @@ class Document {
4529
4670
  }
4530
4671
  }
4531
4672
  }
4532
- else if (element instanceof Table_1.Table) {
4673
+ else if (element instanceof Table_js_1.Table) {
4533
4674
  for (let row = 0; row < element.getRowCount(); row++) {
4534
4675
  const rowObj = element.getRow(row);
4535
4676
  if (rowObj) {
@@ -4554,7 +4695,7 @@ class Document {
4554
4695
  const headings = [];
4555
4696
  const levelSet = new Set(levels);
4556
4697
  try {
4557
- const parsed = XMLParser_1.XMLParser.parseToObject(docXml, { trimValues: false });
4698
+ const parsed = XMLParser_js_1.XMLParser.parseToObject(docXml, { trimValues: false });
4558
4699
  const document = parsed['w:document'];
4559
4700
  if (!document) {
4560
4701
  return headings;
@@ -4663,7 +4804,7 @@ class Document {
4663
4804
  }
4664
4805
  }
4665
4806
  catch (error) {
4666
- logger_1.defaultLogger.error('Error parsing document.xml for headings:', error instanceof Error
4807
+ logger_js_1.defaultLogger.error('Error parsing document.xml for headings:', error instanceof Error
4667
4808
  ? { message: error.message, stack: error.stack }
4668
4809
  : { error: String(error) });
4669
4810
  }
@@ -4751,7 +4892,7 @@ class Document {
4751
4892
  .replace(/'/g, '&apos;');
4752
4893
  }
4753
4894
  async populateTOCsInFile(filePath) {
4754
- const handler = new ZipHandler_1.ZipHandler();
4895
+ const handler = new ZipHandler_js_1.ZipHandler();
4755
4896
  await handler.load(filePath);
4756
4897
  const docXml = handler.getFileAsString('word/document.xml');
4757
4898
  if (!docXml) {
@@ -5005,14 +5146,14 @@ class Document {
5005
5146
  const target = `media/image${this.imageManager.getImageCount() + 1}.${image.getExtension()}`;
5006
5147
  const relationship = this.relationshipManager.addImage(target);
5007
5148
  this.imageManager.registerImage(image, relationship.getId());
5008
- const para = new Paragraph_1.Paragraph();
5149
+ const para = new Paragraph_js_1.Paragraph();
5009
5150
  const imageRun = this.createImageRun(image);
5010
5151
  para.addRun(imageRun);
5011
5152
  this.bodyElements.push(para);
5012
5153
  return this;
5013
5154
  }
5014
5155
  createImageRun(image) {
5015
- return new ImageRun_1.ImageRun(image);
5156
+ return new ImageRun_js_1.ImageRun(image);
5016
5157
  }
5017
5158
  getImageManager() {
5018
5159
  return this.imageManager;
@@ -5062,14 +5203,14 @@ class Document {
5062
5203
  if (this.commentManager.getCount() > 0) {
5063
5204
  const xml = this.commentManager.generateCommentsXml();
5064
5205
  this.zipHandler.addFile('word/comments.xml', xml);
5065
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5206
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5066
5207
  if (existingRels.length === 0) {
5067
5208
  this.relationshipManager.addComments();
5068
5209
  }
5069
5210
  }
5070
5211
  else {
5071
5212
  this.zipHandler.removeFile('word/comments.xml');
5072
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5213
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5073
5214
  for (const rel of existingRels) {
5074
5215
  this.relationshipManager.removeRelationship(rel.getId());
5075
5216
  }
@@ -5081,7 +5222,7 @@ class Document {
5081
5222
  for (const [path, content] of this._originalCommentCompanionFiles) {
5082
5223
  this.zipHandler.addFile(path, content);
5083
5224
  }
5084
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5225
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5085
5226
  if (existingRels.length === 0) {
5086
5227
  this.relationshipManager.addComments();
5087
5228
  }
@@ -5089,7 +5230,7 @@ class Document {
5089
5230
  else if (this.commentManager.getCount() > 0) {
5090
5231
  const xml = this.commentManager.generateCommentsXml();
5091
5232
  this.zipHandler.addFile('word/comments.xml', xml);
5092
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5233
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5093
5234
  if (existingRels.length === 0) {
5094
5235
  this.relationshipManager.addComments();
5095
5236
  }
@@ -5097,9 +5238,9 @@ class Document {
5097
5238
  }
5098
5239
  removeCommentCompanionFiles() {
5099
5240
  const companionPaths = [
5100
- types_1.DOCX_PATHS.COMMENTS_EXTENDED,
5101
- types_1.DOCX_PATHS.COMMENTS_IDS,
5102
- types_1.DOCX_PATHS.COMMENTS_EXTENSIBLE,
5241
+ types_js_1.DOCX_PATHS.COMMENTS_EXTENDED,
5242
+ types_js_1.DOCX_PATHS.COMMENTS_IDS,
5243
+ types_js_1.DOCX_PATHS.COMMENTS_EXTENSIBLE,
5103
5244
  ];
5104
5245
  for (const filePath of companionPaths) {
5105
5246
  this.zipHandler.removeFile(filePath);
@@ -5114,16 +5255,16 @@ class Document {
5114
5255
  saveFootnotes() {
5115
5256
  if (this._footnotesModified || this.footnoteManager.getCount() > 0) {
5116
5257
  const xml = this.footnoteManager.generateFootnotesXml();
5117
- this.zipHandler.addFile(types_1.DOCX_PATHS.FOOTNOTES, xml);
5118
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.FOOTNOTES);
5258
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.FOOTNOTES, xml);
5259
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.FOOTNOTES);
5119
5260
  if (existingRels.length === 0) {
5120
5261
  this.relationshipManager.addFootnotes();
5121
5262
  }
5122
5263
  this.generatePartLevelHyperlinkRels(this.footnoteManager.getAllFootnotes().flatMap((fn) => fn.getParagraphs()), 'word/_rels/footnotes.xml.rels');
5123
5264
  }
5124
5265
  else if (this._originalFootnotesXml) {
5125
- this.zipHandler.addFile(types_1.DOCX_PATHS.FOOTNOTES, this._originalFootnotesXml);
5126
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.FOOTNOTES);
5266
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.FOOTNOTES, this._originalFootnotesXml);
5267
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.FOOTNOTES);
5127
5268
  if (existingRels.length === 0) {
5128
5269
  this.relationshipManager.addFootnotes();
5129
5270
  }
@@ -5132,16 +5273,16 @@ class Document {
5132
5273
  saveEndnotes() {
5133
5274
  if (this._endnotesModified || this.endnoteManager.getCount() > 0) {
5134
5275
  const xml = this.endnoteManager.generateEndnotesXml();
5135
- this.zipHandler.addFile(types_1.DOCX_PATHS.ENDNOTES, xml);
5136
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.ENDNOTES);
5276
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.ENDNOTES, xml);
5277
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.ENDNOTES);
5137
5278
  if (existingRels.length === 0) {
5138
5279
  this.relationshipManager.addEndnotes();
5139
5280
  }
5140
5281
  this.generatePartLevelHyperlinkRels(this.endnoteManager.getAllEndnotes().flatMap((en) => en.getParagraphs()), 'word/_rels/endnotes.xml.rels');
5141
5282
  }
5142
5283
  else if (this._originalEndnotesXml) {
5143
- this.zipHandler.addFile(types_1.DOCX_PATHS.ENDNOTES, this._originalEndnotesXml);
5144
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.ENDNOTES);
5284
+ this.zipHandler.addFile(types_js_1.DOCX_PATHS.ENDNOTES, this._originalEndnotesXml);
5285
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.ENDNOTES);
5145
5286
  if (existingRels.length === 0) {
5146
5287
  this.relationshipManager.addEndnotes();
5147
5288
  }
@@ -5150,10 +5291,10 @@ class Document {
5150
5291
  extractParagraphsFromElements(elements) {
5151
5292
  const result = [];
5152
5293
  for (const el of elements) {
5153
- if (el instanceof Paragraph_1.Paragraph) {
5294
+ if (el instanceof Paragraph_js_1.Paragraph) {
5154
5295
  result.push(el);
5155
5296
  }
5156
- else if (el instanceof Table_1.Table) {
5297
+ else if (el instanceof Table_js_1.Table) {
5157
5298
  for (const row of el.getRows()) {
5158
5299
  for (const cell of row.getCells()) {
5159
5300
  result.push(...cell.getParagraphs());
@@ -5167,16 +5308,16 @@ class Document {
5167
5308
  const hyperlinkRels = [];
5168
5309
  for (const para of paragraphs) {
5169
5310
  for (const item of para.getContent()) {
5170
- if (item instanceof Hyperlink_1.Hyperlink && item.isExternal()) {
5311
+ if (item instanceof Hyperlink_js_1.Hyperlink && item.isExternal()) {
5171
5312
  const relId = item.getRelationshipId();
5172
5313
  const url = item.getUrl();
5173
5314
  if (relId && url) {
5174
5315
  hyperlinkRels.push({ id: relId, url });
5175
5316
  }
5176
5317
  }
5177
- if (item instanceof Revision_1.Revision) {
5318
+ if (item instanceof Revision_js_1.Revision) {
5178
5319
  for (const revContent of item.getContent()) {
5179
- if (revContent instanceof Hyperlink_1.Hyperlink && revContent.isExternal()) {
5320
+ if (revContent instanceof Hyperlink_js_1.Hyperlink && revContent.isExternal()) {
5180
5321
  const relId = revContent.getRelationshipId();
5181
5322
  const url = revContent.getUrl();
5182
5323
  if (relId && url) {
@@ -5192,8 +5333,8 @@ class Document {
5192
5333
  xml +=
5193
5334
  '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n';
5194
5335
  for (const rel of hyperlinkRels) {
5195
- const escapedId = XMLBuilder_1.XMLBuilder.escapeXmlAttribute(rel.id);
5196
- const escapedUrl = XMLBuilder_1.XMLBuilder.escapeXmlAttribute(rel.url);
5336
+ const escapedId = XMLBuilder_js_1.XMLBuilder.escapeXmlAttribute(rel.id);
5337
+ const escapedUrl = XMLBuilder_js_1.XMLBuilder.escapeXmlAttribute(rel.url);
5197
5338
  xml += ` <Relationship Id="${escapedId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="${escapedUrl}" TargetMode="External"/>\n`;
5198
5339
  }
5199
5340
  xml += '</Relationships>';
@@ -5207,7 +5348,7 @@ class Document {
5207
5348
  const authors = new Set();
5208
5349
  for (const para of this.getAllParagraphs()) {
5209
5350
  for (const item of para.getContent()) {
5210
- if (item instanceof Revision_1.Revision) {
5351
+ if (item instanceof Revision_js_1.Revision) {
5211
5352
  const author = item.getAuthor();
5212
5353
  if (author)
5213
5354
  authors.add(author);
@@ -5224,7 +5365,7 @@ class Document {
5224
5365
  }
5225
5366
  }
5226
5367
  for (const element of this.bodyElements) {
5227
- if (element instanceof Table_1.Table) {
5368
+ if (element instanceof Table_js_1.Table) {
5228
5369
  this.collectAuthorsFromTable(element, authors);
5229
5370
  }
5230
5371
  }
@@ -5265,7 +5406,7 @@ class Document {
5265
5406
  const newPeopleXml = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<w15:people xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="w15">${personElements}</w15:people>`;
5266
5407
  this.zipHandler.addFile('word/people.xml', newPeopleXml);
5267
5408
  }
5268
- const peopleType = Relationship_1.RelationshipType.PEOPLE;
5409
+ const peopleType = Relationship_js_1.RelationshipType.PEOPLE;
5269
5410
  const existingPeopleRels = this.relationshipManager.getRelationshipsByType(peopleType);
5270
5411
  if (existingPeopleRels.length === 0) {
5271
5412
  this.relationshipManager.addPeople();
@@ -5286,7 +5427,7 @@ class Document {
5286
5427
  continue;
5287
5428
  for (const para of cell.getParagraphs()) {
5288
5429
  for (const item of para.getContent()) {
5289
- if (item instanceof Revision_1.Revision) {
5430
+ if (item instanceof Revision_js_1.Revision) {
5290
5431
  const author = item.getAuthor();
5291
5432
  if (author)
5292
5433
  authors.add(author);
@@ -5330,7 +5471,7 @@ class Document {
5330
5471
  updateContentTypesWithImagesHeadersFootersAndComments() {
5331
5472
  const hasCustomProps = this.properties.customProperties && Object.keys(this.properties.customProperties).length > 0;
5332
5473
  const contentTypes = this.generator.generateContentTypesWithImagesHeadersFootersAndComments(this.imageManager, this.headerFooterManager, this.commentManager, this.zipHandler, undefined, hasCustomProps, this._originalContentTypes, this.footnoteManager, this.endnoteManager);
5333
- this.zipHandler.updateFile(types_1.DOCX_PATHS.CONTENT_TYPES, contentTypes);
5474
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.CONTENT_TYPES, contentTypes);
5334
5475
  }
5335
5476
  getBookmarkManager() {
5336
5477
  return this.bookmarkManager;
@@ -5356,7 +5497,7 @@ class Document {
5356
5497
  const BOOKMARK_NAME = '_top';
5357
5498
  let bookmark = this.getBookmark(BOOKMARK_NAME);
5358
5499
  if (!bookmark) {
5359
- bookmark = new Bookmark_1.Bookmark({
5500
+ bookmark = new Bookmark_js_1.Bookmark({
5360
5501
  id: 0,
5361
5502
  name: BOOKMARK_NAME,
5362
5503
  skipNormalization: true,
@@ -5367,7 +5508,7 @@ class Document {
5367
5508
  paragraphs[0].addBookmark(bookmark);
5368
5509
  }
5369
5510
  else {
5370
- const topParagraph = new Paragraph_1.Paragraph();
5511
+ const topParagraph = new Paragraph_js_1.Paragraph();
5371
5512
  topParagraph.addBookmark(bookmark);
5372
5513
  this.bodyElements.unshift(topParagraph);
5373
5514
  }
@@ -5376,7 +5517,7 @@ class Document {
5376
5517
  bookmark,
5377
5518
  anchor: BOOKMARK_NAME,
5378
5519
  hyperlink: (text, formatting) => {
5379
- return Hyperlink_1.Hyperlink.createInternal(BOOKMARK_NAME, text, formatting);
5520
+ return Hyperlink_js_1.Hyperlink.createInternal(BOOKMARK_NAME, text, formatting);
5380
5521
  },
5381
5522
  };
5382
5523
  }
@@ -5389,16 +5530,16 @@ class Document {
5389
5530
  let i = 0;
5390
5531
  while (i < this.bodyElements.length) {
5391
5532
  const element = this.bodyElements[i];
5392
- if (element instanceof Table_1.Table &&
5533
+ if (element instanceof Table_js_1.Table &&
5393
5534
  element.getRowCount() === 1 &&
5394
5535
  element.getColumnCount() === 1) {
5395
5536
  oneByOneCount++;
5396
5537
  if (oneByOneCount > 1) {
5397
5538
  const prevElement = i > 0 ? this.bodyElements[i - 1] : undefined;
5398
- const hasLink = prevElement instanceof Paragraph_1.Paragraph && this._paragraphHasTopLink(prevElement);
5539
+ const hasLink = prevElement instanceof Paragraph_js_1.Paragraph && this._paragraphHasTopLink(prevElement);
5399
5540
  if (!hasLink) {
5400
- const para = new Paragraph_1.Paragraph();
5401
- const link = Hyperlink_1.Hyperlink.createInternal('_top', linkText, {
5541
+ const para = new Paragraph_js_1.Paragraph();
5542
+ const link = Hyperlink_js_1.Hyperlink.createInternal('_top', linkText, {
5402
5543
  color: '0000FF',
5403
5544
  underline: 'single',
5404
5545
  ...formatting,
@@ -5416,16 +5557,16 @@ class Document {
5416
5557
  }
5417
5558
  _paragraphHasTopLink(paragraph) {
5418
5559
  for (const item of paragraph.getContent()) {
5419
- if (item instanceof Hyperlink_1.Hyperlink && item.getAnchor() === '_top') {
5560
+ if (item instanceof Hyperlink_js_1.Hyperlink && item.getAnchor() === '_top') {
5420
5561
  return true;
5421
5562
  }
5422
- if (item instanceof Field_1.ComplexField && item.isHyperlinkField()) {
5563
+ if (item instanceof Field_js_1.ComplexField && item.isHyperlinkField()) {
5423
5564
  const parsed = item.getParsedHyperlink();
5424
5565
  if (parsed?.anchor === '_top') {
5425
5566
  return true;
5426
5567
  }
5427
5568
  }
5428
- if (item instanceof PreservedElement_1.PreservedElement && item.getRawXml().includes('w:anchor="_top"')) {
5569
+ if (item instanceof PreservedElement_js_1.PreservedElement && item.getRawXml().includes('w:anchor="_top"')) {
5429
5570
  return true;
5430
5571
  }
5431
5572
  }
@@ -5435,13 +5576,13 @@ class Document {
5435
5576
  return this.revisionManager;
5436
5577
  }
5437
5578
  validateRevisions(options) {
5438
- return validation_1.RevisionValidator.validate(this, options);
5579
+ return index_js_1.RevisionValidator.validate(this, options);
5439
5580
  }
5440
5581
  autoFixRevisions(options) {
5441
- return validation_1.RevisionAutoFixer.fix(this, options);
5582
+ return index_js_1.RevisionAutoFixer.fix(this, options);
5442
5583
  }
5443
5584
  isRevisionsValid() {
5444
- return validation_1.RevisionValidator.isValid(this);
5585
+ return index_js_1.RevisionValidator.isValid(this);
5445
5586
  }
5446
5587
  validateAndFixRevisions(options) {
5447
5588
  const validation = this.validateRevisions(options?.validation);
@@ -5458,15 +5599,15 @@ class Document {
5458
5599
  return { validation, fix };
5459
5600
  }
5460
5601
  createInsertion(author, content, date) {
5461
- const revision = Revision_1.Revision.createInsertion(author, content, date);
5602
+ const revision = Revision_js_1.Revision.createInsertion(author, content, date);
5462
5603
  return this.revisionManager.register(revision);
5463
5604
  }
5464
5605
  createDeletion(author, content, date) {
5465
- const revision = Revision_1.Revision.createDeletion(author, content, date);
5606
+ const revision = Revision_js_1.Revision.createDeletion(author, content, date);
5466
5607
  return this.revisionManager.register(revision);
5467
5608
  }
5468
5609
  createRevisionFromText(type, author, text, date) {
5469
- const revision = Revision_1.Revision.fromText(type, author, text, date);
5610
+ const revision = Revision_js_1.Revision.fromText(type, author, text, date);
5470
5611
  return this.revisionManager.register(revision);
5471
5612
  }
5472
5613
  findParagraphIndex(paragraph) {
@@ -5505,8 +5646,8 @@ class Document {
5505
5646
  return revision;
5506
5647
  }
5507
5648
  trackFieldInstructionDeletion(paragraph, author, fieldInstruction, date) {
5508
- const run = new Run_1.Run(fieldInstruction);
5509
- const revision = Revision_1.Revision.createFieldInstructionDeletion(author, run, date);
5649
+ const run = new Run_js_1.Run(fieldInstruction);
5650
+ const revision = Revision_js_1.Revision.createFieldInstructionDeletion(author, run, date);
5510
5651
  this.revisionManager.register(revision);
5511
5652
  const location = this.createRevisionLocation(paragraph);
5512
5653
  if (location) {
@@ -5732,7 +5873,7 @@ class Document {
5732
5873
  return this.documentProtection;
5733
5874
  }
5734
5875
  getCompatibilityMode() {
5735
- return this._compatInfo?.mode ?? compatibility_types_1.CompatibilityMode.Word2007;
5876
+ return this._compatInfo?.mode ?? compatibility_types_js_1.CompatibilityMode.Word2007;
5736
5877
  }
5737
5878
  getDocumentBackground() {
5738
5879
  return this._documentBackground ? { ...this._documentBackground } : undefined;
@@ -5798,7 +5939,7 @@ class Document {
5798
5939
  setDefaultFont(fontName, sizeInPoints) {
5799
5940
  let normalStyle = this.stylesManager.getStyle('Normal');
5800
5941
  if (!normalStyle) {
5801
- normalStyle = new Style_1.Style({
5942
+ normalStyle = new Style_js_1.Style({
5802
5943
  styleId: 'Normal',
5803
5944
  name: 'Normal',
5804
5945
  type: 'paragraph',
@@ -5817,7 +5958,7 @@ class Document {
5817
5958
  setDefaultFontSize(sizeInPoints) {
5818
5959
  let normalStyle = this.stylesManager.getStyle('Normal');
5819
5960
  if (!normalStyle) {
5820
- normalStyle = new Style_1.Style({
5961
+ normalStyle = new Style_js_1.Style({
5821
5962
  styleId: 'Normal',
5822
5963
  name: 'Normal',
5823
5964
  type: 'paragraph',
@@ -5872,7 +6013,7 @@ class Document {
5872
6013
  }
5873
6014
  getCompatibilityInfo() {
5874
6015
  return (this._compatInfo ?? {
5875
- mode: compatibility_types_1.CompatibilityMode.Word2007,
6016
+ mode: compatibility_types_js_1.CompatibilityMode.Word2007,
5876
6017
  isLegacyMode: true,
5877
6018
  compatSettings: [],
5878
6019
  legacyFlags: [],
@@ -5881,7 +6022,7 @@ class Document {
5881
6022
  upgradeToModernFormat() {
5882
6023
  const currentMode = this.getCompatibilityMode();
5883
6024
  const currentInfo = this.getCompatibilityInfo();
5884
- if (currentMode === compatibility_types_1.CompatibilityMode.Word2013Plus && currentInfo.legacyFlags.length === 0) {
6025
+ if (currentMode === compatibility_types_js_1.CompatibilityMode.Word2013Plus && currentInfo.legacyFlags.length === 0) {
5885
6026
  return {
5886
6027
  previousMode: currentMode,
5887
6028
  newMode: 15,
@@ -5892,65 +6033,65 @@ class Document {
5892
6033
  };
5893
6034
  }
5894
6035
  if (this._originalSettingsXml) {
5895
- const result = CompatibilityUpgrader_1.CompatibilityUpgrader.upgradeCompatBlock(this._originalSettingsXml, currentMode);
6036
+ const result = CompatibilityUpgrader_js_1.CompatibilityUpgrader.upgradeCompatBlock(this._originalSettingsXml, currentMode);
5896
6037
  this._originalSettingsXml = result.xml;
5897
6038
  this._settingsModified = true;
5898
- const nsResult = CompatibilityUpgrader_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
6039
+ const nsResult = CompatibilityUpgrader_js_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
5899
6040
  this.namespaces = nsResult.namespaces;
5900
6041
  result.report.namespacesExpanded = nsResult.expanded;
5901
6042
  this._compatInfo = {
5902
- mode: compatibility_types_1.CompatibilityMode.Word2013Plus,
6043
+ mode: compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5903
6044
  isLegacyMode: false,
5904
- compatSettings: [...legacyCompatFlags_1.MODERN_COMPAT_SETTINGS],
6045
+ compatSettings: [...legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS],
5905
6046
  legacyFlags: [],
5906
6047
  };
5907
6048
  return result.report;
5908
6049
  }
5909
6050
  this._compatInfo = {
5910
- mode: compatibility_types_1.CompatibilityMode.Word2013Plus,
6051
+ mode: compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5911
6052
  isLegacyMode: false,
5912
- compatSettings: [...legacyCompatFlags_1.MODERN_COMPAT_SETTINGS],
6053
+ compatSettings: [...legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS],
5913
6054
  legacyFlags: [],
5914
6055
  };
5915
- const nsResult = CompatibilityUpgrader_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
6056
+ const nsResult = CompatibilityUpgrader_js_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
5916
6057
  this.namespaces = nsResult.namespaces;
5917
6058
  return {
5918
6059
  previousMode: currentMode,
5919
6060
  newMode: 15,
5920
6061
  removedFlags: [],
5921
- addedSettings: legacyCompatFlags_1.MODERN_COMPAT_SETTINGS.map((s) => s.name),
6062
+ addedSettings: legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS.map((s) => s.name),
5922
6063
  namespacesExpanded: nsResult.expanded,
5923
- changed: currentMode !== compatibility_types_1.CompatibilityMode.Word2013Plus,
6064
+ changed: currentMode !== compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5924
6065
  };
5925
6066
  }
5926
6067
  createRunPropertiesChange(author, content, previousProperties, date) {
5927
- const revision = Revision_1.Revision.createRunPropertiesChange(author, content, previousProperties, date);
6068
+ const revision = Revision_js_1.Revision.createRunPropertiesChange(author, content, previousProperties, date);
5928
6069
  return this.revisionManager.register(revision);
5929
6070
  }
5930
6071
  createParagraphPropertiesChange(author, content, previousProperties, date) {
5931
- const revision = Revision_1.Revision.createParagraphPropertiesChange(author, content, previousProperties, date);
6072
+ const revision = Revision_js_1.Revision.createParagraphPropertiesChange(author, content, previousProperties, date);
5932
6073
  return this.revisionManager.register(revision);
5933
6074
  }
5934
6075
  createTablePropertiesChange(author, content, previousProperties, date) {
5935
- const revision = Revision_1.Revision.createTablePropertiesChange(author, content, previousProperties, date);
6076
+ const revision = Revision_js_1.Revision.createTablePropertiesChange(author, content, previousProperties, date);
5936
6077
  return this.revisionManager.register(revision);
5937
6078
  }
5938
6079
  createMoveFrom(author, content, moveId, date) {
5939
- const revision = Revision_1.Revision.createMoveFrom(author, content, moveId, date);
6080
+ const revision = Revision_js_1.Revision.createMoveFrom(author, content, moveId, date);
5940
6081
  return this.revisionManager.register(revision);
5941
6082
  }
5942
6083
  createMoveTo(author, content, moveId, date) {
5943
- const revision = Revision_1.Revision.createMoveTo(author, content, moveId, date);
6084
+ const revision = Revision_js_1.Revision.createMoveTo(author, content, moveId, date);
5944
6085
  return this.revisionManager.register(revision);
5945
6086
  }
5946
6087
  trackMove(author, content, date) {
5947
6088
  const moveId = `move${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
5948
6089
  const moveName = `move${Date.now()}`;
5949
6090
  const rangeIdStart = this.revisionManager.getStats().nextId;
5950
- const moveFromRangeStart = RangeMarker_1.RangeMarker.createMoveFromStart(rangeIdStart, moveName, author, date);
5951
- const moveFromRangeEnd = RangeMarker_1.RangeMarker.createMoveFromEnd(rangeIdStart);
5952
- const moveToRangeStart = RangeMarker_1.RangeMarker.createMoveToStart(rangeIdStart, moveName, author, date);
5953
- const moveToRangeEnd = RangeMarker_1.RangeMarker.createMoveToEnd(rangeIdStart);
6091
+ const moveFromRangeStart = RangeMarker_js_1.RangeMarker.createMoveFromStart(rangeIdStart, moveName, author, date);
6092
+ const moveFromRangeEnd = RangeMarker_js_1.RangeMarker.createMoveFromEnd(rangeIdStart);
6093
+ const moveToRangeStart = RangeMarker_js_1.RangeMarker.createMoveToStart(rangeIdStart, moveName, author, date);
6094
+ const moveToRangeEnd = RangeMarker_js_1.RangeMarker.createMoveToEnd(rangeIdStart);
5954
6095
  const moveFrom = this.createMoveFrom(author, content, moveId, date);
5955
6096
  const moveTo = this.createMoveTo(author, content, moveId, date);
5956
6097
  return {
@@ -5964,19 +6105,19 @@ class Document {
5964
6105
  };
5965
6106
  }
5966
6107
  createTableCellInsert(author, content, date) {
5967
- const revision = Revision_1.Revision.createTableCellInsert(author, content, date);
6108
+ const revision = Revision_js_1.Revision.createTableCellInsert(author, content, date);
5968
6109
  return this.revisionManager.register(revision);
5969
6110
  }
5970
6111
  createTableCellDelete(author, content, date) {
5971
- const revision = Revision_1.Revision.createTableCellDelete(author, content, date);
6112
+ const revision = Revision_js_1.Revision.createTableCellDelete(author, content, date);
5972
6113
  return this.revisionManager.register(revision);
5973
6114
  }
5974
6115
  createTableCellMerge(author, content, date) {
5975
- const revision = Revision_1.Revision.createTableCellMerge(author, content, date);
6116
+ const revision = Revision_js_1.Revision.createTableCellMerge(author, content, date);
5976
6117
  return this.revisionManager.register(revision);
5977
6118
  }
5978
6119
  createNumberingChange(author, content, previousProperties, date) {
5979
- const revision = Revision_1.Revision.createNumberingChange(author, content, previousProperties, date);
6120
+ const revision = Revision_js_1.Revision.createNumberingChange(author, content, previousProperties, date);
5980
6121
  return this.revisionManager.register(revision);
5981
6122
  }
5982
6123
  getCommentManager() {
@@ -6102,7 +6243,7 @@ class Document {
6102
6243
  const updates = [];
6103
6244
  for (const para of this.getAllParagraphs()) {
6104
6245
  for (const content of para.getContent()) {
6105
- if (content instanceof Hyperlink_1.Hyperlink && content.isExternal()) {
6246
+ if (content instanceof Hyperlink_js_1.Hyperlink && content.isExternal()) {
6106
6247
  const currentUrl = content.getUrl();
6107
6248
  if (currentUrl && urlMap.has(currentUrl)) {
6108
6249
  const newUrl = urlMap.get(currentUrl);
@@ -6130,8 +6271,8 @@ class Document {
6130
6271
  return this.acceptAllRevisions();
6131
6272
  }
6132
6273
  async acceptAllRevisions() {
6133
- const result = (0, InMemoryRevisionAcceptor_1.acceptRevisionsInMemory)(this);
6134
- (0, acceptRevisions_1.cleanupRevisionMetadata)(this.zipHandler);
6274
+ const result = (0, InMemoryRevisionAcceptor_js_1.acceptRevisionsInMemory)(this);
6275
+ (0, acceptRevisions_js_1.cleanupRevisionMetadata)(this.zipHandler);
6135
6276
  this.logger.info('Accepted all revisions using in-memory transformation', {
6136
6277
  insertions: result.insertionsAccepted,
6137
6278
  deletions: result.deletionsAccepted,
@@ -6160,7 +6301,7 @@ class Document {
6160
6301
  }
6161
6302
  for (const headerEntry of this.headerFooterManager.getAllHeaders()) {
6162
6303
  for (const element of headerEntry.header.getElements()) {
6163
- if (element instanceof Paragraph_1.Paragraph) {
6304
+ if (element instanceof Paragraph_js_1.Paragraph) {
6164
6305
  paragraphsProcessed++;
6165
6306
  totalConsolidated += element.consolidateRevisions(timeWindowMs);
6166
6307
  }
@@ -6168,7 +6309,7 @@ class Document {
6168
6309
  }
6169
6310
  for (const footerEntry of this.headerFooterManager.getAllFooters()) {
6170
6311
  for (const element of footerEntry.footer.getElements()) {
6171
- if (element instanceof Paragraph_1.Paragraph) {
6312
+ if (element instanceof Paragraph_js_1.Paragraph) {
6172
6313
  paragraphsProcessed++;
6173
6314
  totalConsolidated += element.consolidateRevisions(timeWindowMs);
6174
6315
  }
@@ -6181,7 +6322,7 @@ class Document {
6181
6322
  return { paragraphsProcessed, revisionsConsolidated: totalConsolidated };
6182
6323
  }
6183
6324
  async acceptAllRevisionsRawXml() {
6184
- await (0, acceptRevisions_1.acceptAllRevisions)(this.zipHandler);
6325
+ await (0, acceptRevisions_js_1.acceptAllRevisions)(this.zipHandler);
6185
6326
  this.clearRevisionsFromAllParagraphs();
6186
6327
  this.skipDocumentXmlRegeneration = true;
6187
6328
  return this;
@@ -6197,16 +6338,16 @@ class Document {
6197
6338
  const revisions = para.getRevisions();
6198
6339
  if (revisions.length > 0) {
6199
6340
  const content = para.getContent();
6200
- const nonRevisionContent = content.filter((item) => !(item instanceof Revision_1.Revision));
6341
+ const nonRevisionContent = content.filter((item) => !(item instanceof Revision_js_1.Revision));
6201
6342
  para.clearContent();
6202
6343
  for (const item of nonRevisionContent) {
6203
- if (item instanceof Run_1.Run || item instanceof ImageRun_1.ImageRun) {
6344
+ if (item instanceof Run_js_1.Run || item instanceof ImageRun_js_1.ImageRun) {
6204
6345
  para.addRun(item);
6205
6346
  }
6206
- else if (item instanceof Hyperlink_1.Hyperlink) {
6347
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
6207
6348
  para.addHyperlink(item);
6208
6349
  }
6209
- else if (item instanceof Field_1.Field) {
6350
+ else if (item instanceof Field_js_1.Field) {
6210
6351
  para.addField(item);
6211
6352
  }
6212
6353
  }
@@ -6272,7 +6413,59 @@ class Document {
6272
6413
  this.bodyElements = [];
6273
6414
  return this;
6274
6415
  }
6416
+ on(event, listener) {
6417
+ return this._events.on(event, listener);
6418
+ }
6419
+ off(event, listener) {
6420
+ this._events.off(event, listener);
6421
+ }
6422
+ listenerCount(event) {
6423
+ return this._events.listenerCount(event);
6424
+ }
6425
+ _emitElementAdded(element, index) {
6426
+ if (element instanceof Paragraph_js_1.Paragraph) {
6427
+ this._events.emit('paragraphAdded', { paragraph: element, index });
6428
+ }
6429
+ else if (element instanceof Table_js_1.Table) {
6430
+ this._events.emit('tableAdded', { table: element });
6431
+ }
6432
+ }
6433
+ _emitElementRemoved(element) {
6434
+ if (!element)
6435
+ return;
6436
+ if (element instanceof Paragraph_js_1.Paragraph) {
6437
+ this._events.emit('paragraphRemoved', { paragraph: element });
6438
+ }
6439
+ else if (element instanceof Table_js_1.Table) {
6440
+ this._events.emit('tableRemoved', { table: element });
6441
+ }
6442
+ }
6443
+ static globalDefaults = {};
6444
+ static setDefaults(defaults) {
6445
+ Document.globalDefaults = { ...defaults };
6446
+ }
6447
+ static getDefaults() {
6448
+ return { ...Document.globalDefaults };
6449
+ }
6450
+ static resetDefaults() {
6451
+ Document.globalDefaults = {};
6452
+ }
6453
+ static applyGlobalDefaultsToParagraph(para) {
6454
+ const d = Document.globalDefaults;
6455
+ if (!d.font && d.fontSize === undefined && !d.fontColor)
6456
+ return;
6457
+ for (const run of para.getRuns()) {
6458
+ const fmt = run.getFormatting();
6459
+ if (d.font && !fmt.font)
6460
+ run.setFont(d.font);
6461
+ if (d.fontSize !== undefined && fmt.size === undefined)
6462
+ run.setSize(d.fontSize);
6463
+ if (d.fontColor && !fmt.color)
6464
+ run.setColor(d.fontColor);
6465
+ }
6466
+ }
6275
6467
  dispose() {
6468
+ this._events.removeAllListeners();
6276
6469
  this.bodyElements = [];
6277
6470
  this.parser.clearParseErrors();
6278
6471
  this.stylesManager.clear();
@@ -6345,7 +6538,7 @@ class Document {
6345
6538
  this.rsids = new Set();
6346
6539
  this.documentProtection = undefined;
6347
6540
  this.properties = {};
6348
- this.section = Section_1.Section.create();
6541
+ this.section = Section_js_1.Section.create();
6349
6542
  this.namespaces = {};
6350
6543
  }
6351
6544
  getSizeStats() {
@@ -6519,13 +6712,13 @@ class Document {
6519
6712
  const relsContent = this.zipHandler.getFileAsString(relsPath);
6520
6713
  if (relsContent) {
6521
6714
  const rels = [];
6522
- const relationshipElements = XMLParser_1.XMLParser.extractElements(relsContent, 'Relationship');
6715
+ const relationshipElements = XMLParser_js_1.XMLParser.extractElements(relsContent, 'Relationship');
6523
6716
  for (const relElement of relationshipElements) {
6524
6717
  const rel = {};
6525
- const id = XMLParser_1.XMLParser.extractAttribute(relElement, 'Id');
6526
- const type = XMLParser_1.XMLParser.extractAttribute(relElement, 'Type');
6527
- const target = XMLParser_1.XMLParser.extractAttribute(relElement, 'Target');
6528
- const targetMode = XMLParser_1.XMLParser.extractAttribute(relElement, 'TargetMode');
6718
+ const id = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Id');
6719
+ const type = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Type');
6720
+ const target = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Target');
6721
+ const targetMode = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'TargetMode');
6529
6722
  if (id)
6530
6723
  rel.id = id;
6531
6724
  if (type)
@@ -6555,13 +6748,13 @@ class Document {
6555
6748
  return [];
6556
6749
  }
6557
6750
  const relationships = [];
6558
- const relationshipElements = XMLParser_1.XMLParser.extractElements(relsContent, 'Relationship');
6751
+ const relationshipElements = XMLParser_js_1.XMLParser.extractElements(relsContent, 'Relationship');
6559
6752
  for (const relElement of relationshipElements) {
6560
6753
  const rel = {};
6561
- const id = XMLParser_1.XMLParser.extractAttribute(relElement, 'Id');
6562
- const type = XMLParser_1.XMLParser.extractAttribute(relElement, 'Type');
6563
- const target = XMLParser_1.XMLParser.extractAttribute(relElement, 'Target');
6564
- const targetMode = XMLParser_1.XMLParser.extractAttribute(relElement, 'TargetMode');
6754
+ const id = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Id');
6755
+ const type = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Type');
6756
+ const target = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'Target');
6757
+ const targetMode = XMLParser_js_1.XMLParser.extractAttribute(relElement, 'TargetMode');
6565
6758
  if (id)
6566
6759
  rel.id = id;
6567
6760
  if (type)
@@ -6654,7 +6847,7 @@ class Document {
6654
6847
  for (const table of this.getTables()) {
6655
6848
  for (const row of table.getRows()) {
6656
6849
  for (const cell of row.getCells()) {
6657
- if (cell instanceof TableCell_1.TableCell) {
6850
+ if (cell instanceof TableCell_js_1.TableCell) {
6658
6851
  const cellParagraphs = cell.getParagraphs();
6659
6852
  for (let pIndex = 0; pIndex < cellParagraphs.length; pIndex++) {
6660
6853
  const paragraph = cellParagraphs[pIndex];
@@ -6899,24 +7092,24 @@ class Document {
6899
7092
  if (trackChanges && !this.trackChangesEnabled) {
6900
7093
  const parentParagraph = run._getParentParagraph();
6901
7094
  if (parentParagraph) {
6902
- const segments = (0, textDiff_1.diffText)(originalText, newText);
6903
- const useGranular = (0, textDiff_1.diffHasUnchangedParts)(segments);
7095
+ const segments = (0, textDiff_js_1.diffText)(originalText, newText);
7096
+ const useGranular = (0, textDiff_js_1.diffHasUnchangedParts)(segments);
6904
7097
  const now = new Date();
6905
7098
  const formatting = run.getFormatting();
6906
7099
  const newContent = [];
6907
7100
  if (useGranular) {
6908
7101
  for (const seg of segments) {
6909
7102
  if (seg.type === 'equal') {
6910
- newContent.push(new Run_1.Run(seg.text, formatting));
7103
+ newContent.push(new Run_js_1.Run(seg.text, formatting));
6911
7104
  }
6912
7105
  else if (seg.type === 'delete') {
6913
- const delRev = Revision_1.Revision.createDeletion(author, new Run_1.Run(seg.text, formatting), now);
7106
+ const delRev = Revision_js_1.Revision.createDeletion(author, new Run_js_1.Run(seg.text, formatting), now);
6914
7107
  this.revisionManager.register(delRev);
6915
7108
  revisions.push(delRev);
6916
7109
  newContent.push(delRev);
6917
7110
  }
6918
7111
  else if (seg.type === 'insert') {
6919
- const insRev = Revision_1.Revision.createInsertion(author, new Run_1.Run(seg.text, formatting), now);
7112
+ const insRev = Revision_js_1.Revision.createInsertion(author, new Run_js_1.Run(seg.text, formatting), now);
6920
7113
  this.revisionManager.register(insRev);
6921
7114
  revisions.push(insRev);
6922
7115
  newContent.push(insRev);
@@ -6924,11 +7117,11 @@ class Document {
6924
7117
  }
6925
7118
  }
6926
7119
  else {
6927
- const deletion = Revision_1.Revision.createDeletion(author, new Run_1.Run(originalText, formatting), now);
7120
+ const deletion = Revision_js_1.Revision.createDeletion(author, new Run_js_1.Run(originalText, formatting), now);
6928
7121
  this.revisionManager.register(deletion);
6929
7122
  revisions.push(deletion);
6930
7123
  newContent.push(deletion);
6931
- const insertion = Revision_1.Revision.createInsertion(author, new Run_1.Run(newText, formatting), now);
7124
+ const insertion = Revision_js_1.Revision.createInsertion(author, new Run_js_1.Run(newText, formatting), now);
6932
7125
  this.revisionManager.register(insertion);
6933
7126
  revisions.push(insertion);
6934
7127
  newContent.push(insertion);
@@ -7119,7 +7312,7 @@ class Document {
7119
7312
  let count = 0;
7120
7313
  let paraIndex = 0;
7121
7314
  for (const element of this.bodyElements) {
7122
- if (element instanceof Paragraph_1.Paragraph) {
7315
+ if (element instanceof Paragraph_js_1.Paragraph) {
7123
7316
  const result = callback(element, paraIndex);
7124
7317
  count++;
7125
7318
  paraIndex++;
@@ -7133,7 +7326,7 @@ class Document {
7133
7326
  let count = 0;
7134
7327
  let tableIndex = 0;
7135
7328
  for (const element of this.bodyElements) {
7136
- if (element instanceof Table_1.Table) {
7329
+ if (element instanceof Table_js_1.Table) {
7137
7330
  const result = callback(element, tableIndex);
7138
7331
  count++;
7139
7332
  tableIndex++;
@@ -7150,14 +7343,14 @@ class Document {
7150
7343
  toMarkdown() {
7151
7344
  const lines = [];
7152
7345
  for (const element of this.bodyElements) {
7153
- if (element instanceof Paragraph_1.Paragraph) {
7346
+ if (element instanceof Paragraph_js_1.Paragraph) {
7154
7347
  const mdLine = this.paragraphToMarkdown(element);
7155
7348
  if (mdLine !== null) {
7156
7349
  lines.push(mdLine);
7157
7350
  lines.push('');
7158
7351
  }
7159
7352
  }
7160
- else if (element instanceof Table_1.Table) {
7353
+ else if (element instanceof Table_js_1.Table) {
7161
7354
  lines.push(...this.tableToMarkdown(element));
7162
7355
  lines.push('');
7163
7356
  }
@@ -7185,7 +7378,7 @@ class Document {
7185
7378
  paragraphContentToMarkdown(para) {
7186
7379
  const parts = [];
7187
7380
  for (const item of para.getContent()) {
7188
- if (item instanceof Run_1.Run) {
7381
+ if (item instanceof Run_js_1.Run) {
7189
7382
  const runText = item.getText();
7190
7383
  if (!runText)
7191
7384
  continue;
@@ -7209,7 +7402,7 @@ class Document {
7209
7402
  }
7210
7403
  parts.push(md);
7211
7404
  }
7212
- else if (item instanceof Hyperlink_1.Hyperlink) {
7405
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
7213
7406
  const url = item.getUrl() || '';
7214
7407
  const linkText = item.getText() || url;
7215
7408
  parts.push(`[${linkText}](${url})`);
@@ -7248,7 +7441,7 @@ class Document {
7248
7441
  }
7249
7442
  };
7250
7443
  for (const element of this.bodyElements) {
7251
- if (element instanceof Paragraph_1.Paragraph) {
7444
+ if (element instanceof Paragraph_js_1.Paragraph) {
7252
7445
  const headingLevel = element.detectHeadingLevel();
7253
7446
  const style = element.getStyle();
7254
7447
  const isBullet = style?.toLowerCase().includes('bullet') || style === 'ListBullet';
@@ -7276,7 +7469,7 @@ class Document {
7276
7469
  }
7277
7470
  }
7278
7471
  }
7279
- else if (element instanceof Table_1.Table) {
7472
+ else if (element instanceof Table_js_1.Table) {
7280
7473
  closeList();
7281
7474
  parts.push(this.tableToHTML(element));
7282
7475
  }
@@ -7303,7 +7496,7 @@ class Document {
7303
7496
  paragraphContentToHTML(para) {
7304
7497
  const parts = [];
7305
7498
  for (const item of para.getContent()) {
7306
- if (item instanceof Run_1.Run) {
7499
+ if (item instanceof Run_js_1.Run) {
7307
7500
  const text = item.getText();
7308
7501
  if (!text)
7309
7502
  continue;
@@ -7327,7 +7520,7 @@ class Document {
7327
7520
  }
7328
7521
  parts.push(html);
7329
7522
  }
7330
- else if (item instanceof Hyperlink_1.Hyperlink) {
7523
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
7331
7524
  const url = this.escapeHTML(item.getUrl() || '');
7332
7525
  const linkText = this.escapeHTML(item.getText() || url);
7333
7526
  parts.push(`<a href="${url}">${linkText}</a>`);
@@ -7380,18 +7573,18 @@ class Document {
7380
7573
  tables: tables.length,
7381
7574
  images: this.imageManager.getImageCount(),
7382
7575
  headings: headings.length,
7383
- sections: this.bodyElements.filter((el) => el instanceof Section_1.Section).length || 1,
7576
+ sections: this.bodyElements.filter((el) => el instanceof Section_js_1.Section).length || 1,
7384
7577
  },
7385
7578
  headings: headings.map((h) => ({ level: h.level, text: h.text })),
7386
7579
  body: this.bodyElements.map((el) => {
7387
- if (el instanceof Paragraph_1.Paragraph) {
7580
+ if (el instanceof Paragraph_js_1.Paragraph) {
7388
7581
  return {
7389
7582
  type: 'paragraph',
7390
7583
  text: el.getText(),
7391
7584
  style: el.getStyle(),
7392
7585
  };
7393
7586
  }
7394
- if (el instanceof Table_1.Table) {
7587
+ if (el instanceof Table_js_1.Table) {
7395
7588
  return {
7396
7589
  type: 'table',
7397
7590
  text: `${el.getRows().length} rows x ${el.getRows()[0]?.getCells().length ?? 0} cols`,
@@ -7405,16 +7598,16 @@ class Document {
7405
7598
  const results = [];
7406
7599
  for (const para of this.getAllParagraphs()) {
7407
7600
  for (const item of para.getContent()) {
7408
- if (item instanceof ImageRun_1.ImageRun) {
7601
+ if (item instanceof ImageRun_js_1.ImageRun) {
7409
7602
  const image = item.getImageElement();
7410
7603
  const altText = image.getAltText();
7411
7604
  if (!altText || altText === 'Image') {
7412
7605
  results.push(image);
7413
7606
  }
7414
7607
  }
7415
- if (item instanceof Revision_1.Revision) {
7608
+ if (item instanceof Revision_js_1.Revision) {
7416
7609
  for (const revContent of item.getContent()) {
7417
- if (revContent instanceof ImageRun_1.ImageRun) {
7610
+ if (revContent instanceof ImageRun_js_1.ImageRun) {
7418
7611
  const image = revContent.getImageElement();
7419
7612
  const altText = image.getAltText();
7420
7613
  if (!altText || altText === 'Image') {
@@ -7449,7 +7642,7 @@ class Document {
7449
7642
  content: [],
7450
7643
  };
7451
7644
  for (const element of this.bodyElements) {
7452
- if (element instanceof Paragraph_1.Paragraph) {
7645
+ if (element instanceof Paragraph_js_1.Paragraph) {
7453
7646
  const headingLevel = element.detectHeadingLevel();
7454
7647
  if (headingLevel !== null && headingLevel <= maxLevel) {
7455
7648
  if (current.heading || current.content.length > 0) {
@@ -7484,18 +7677,19 @@ class Document {
7484
7677
  }
7485
7678
  if (index >= 0 && index < this.bodyElements.length) {
7486
7679
  const element = this.bodyElements[index];
7487
- if (element instanceof Paragraph_1.Paragraph) {
7680
+ if (element instanceof Paragraph_js_1.Paragraph) {
7488
7681
  if (this.trackChangesEnabled && this.trackingContext.isEnabled()) {
7489
7682
  const runs = element.getRuns();
7490
7683
  if (runs.length > 0) {
7491
7684
  const author = this.trackingContext.getAuthor();
7492
- const deletion = Revision_1.Revision.createDeletion(author, runs);
7685
+ const deletion = Revision_js_1.Revision.createDeletion(author, runs);
7493
7686
  this.trackingContext.getRevisionManager().register(deletion);
7494
7687
  element.addRevision(deletion);
7495
7688
  }
7496
7689
  return true;
7497
7690
  }
7498
7691
  this.bodyElements.splice(index, 1);
7692
+ this._emitElementRemoved(element);
7499
7693
  return true;
7500
7694
  }
7501
7695
  }
@@ -7520,21 +7714,22 @@ class Document {
7520
7714
  }
7521
7715
  if (index >= 0 && index < this.bodyElements.length) {
7522
7716
  const element = this.bodyElements[index];
7523
- if (element instanceof Table_1.Table) {
7717
+ if (element instanceof Table_js_1.Table) {
7524
7718
  this.bodyElements.splice(index, 1);
7719
+ this._emitElementRemoved(element);
7525
7720
  return true;
7526
7721
  }
7527
7722
  }
7528
7723
  return false;
7529
7724
  }
7530
7725
  validateParagraph(paragraph) {
7531
- if (!(paragraph instanceof Paragraph_1.Paragraph)) {
7726
+ if (!(paragraph instanceof Paragraph_js_1.Paragraph)) {
7532
7727
  throw new Error('insertParagraphAt: parameter must be a Paragraph instance');
7533
7728
  }
7534
7729
  const paraId = paragraph.getFormatting().paraId;
7535
7730
  if (paraId) {
7536
7731
  const existingIds = this.bodyElements
7537
- .filter((el) => el instanceof Paragraph_1.Paragraph)
7732
+ .filter((el) => el instanceof Paragraph_js_1.Paragraph)
7538
7733
  .map((p) => p.getFormatting().paraId)
7539
7734
  .filter((id) => id === paraId);
7540
7735
  if (existingIds.length > 0) {
@@ -7543,15 +7738,15 @@ class Document {
7543
7738
  }
7544
7739
  const style = paragraph.getFormatting().style;
7545
7740
  if (style && !this.stylesManager.hasStyle(style)) {
7546
- logger_1.defaultLogger.warn(`Style "${style}" not found in document. Paragraph will fall back to Normal style.`);
7741
+ logger_js_1.defaultLogger.warn(`Style "${style}" not found in document. Paragraph will fall back to Normal style.`);
7547
7742
  }
7548
7743
  const numbering = paragraph.getFormatting().numbering;
7549
7744
  if (numbering && !this.numberingManager.hasInstance(numbering.numId)) {
7550
- logger_1.defaultLogger.warn(`Numbering ID ${numbering.numId} not found in document. List formatting will not display.`);
7745
+ logger_js_1.defaultLogger.warn(`Numbering ID ${numbering.numId} not found in document. List formatting will not display.`);
7551
7746
  }
7552
7747
  }
7553
7748
  validateTable(table) {
7554
- if (!(table instanceof Table_1.Table)) {
7749
+ if (!(table instanceof Table_js_1.Table)) {
7555
7750
  throw new Error('insertTableAt: parameter must be a Table instance');
7556
7751
  }
7557
7752
  const rows = table.getRows();
@@ -7564,11 +7759,11 @@ class Document {
7564
7759
  }
7565
7760
  const tableStyle = table.getFormatting().style;
7566
7761
  if (tableStyle && !this.stylesManager.hasStyle(tableStyle)) {
7567
- logger_1.defaultLogger.warn(`Table style "${tableStyle}" not found in document. Table will use default formatting.`);
7762
+ logger_js_1.defaultLogger.warn(`Table style "${tableStyle}" not found in document. Table will use default formatting.`);
7568
7763
  }
7569
7764
  }
7570
7765
  validateToc(toc) {
7571
- if (!(toc instanceof TableOfContentsElement_1.TableOfContentsElement)) {
7766
+ if (!(toc instanceof TableOfContentsElement_js_1.TableOfContentsElement)) {
7572
7767
  throw new Error('insertTocAt: parameter must be a TableOfContentsElement instance');
7573
7768
  }
7574
7769
  const hasHeadings = [
@@ -7583,7 +7778,7 @@ class Document {
7583
7778
  'Heading9',
7584
7779
  ].some((style) => this.stylesManager.hasStyle(style));
7585
7780
  if (!hasHeadings) {
7586
- logger_1.defaultLogger.warn('No heading styles found in document. Table of Contents may not display entries correctly.');
7781
+ logger_js_1.defaultLogger.warn('No heading styles found in document. Table of Contents may not display entries correctly.');
7587
7782
  }
7588
7783
  }
7589
7784
  normalizeIndex(index) {
@@ -7599,12 +7794,14 @@ class Document {
7599
7794
  this.validateParagraph(paragraph);
7600
7795
  index = this.normalizeIndex(index);
7601
7796
  this.bodyElements.splice(index, 0, paragraph);
7797
+ this._emitElementAdded(paragraph, index);
7602
7798
  return this;
7603
7799
  }
7604
7800
  insertTableAt(index, table) {
7605
7801
  this.validateTable(table);
7606
7802
  index = this.normalizeIndex(index);
7607
7803
  this.bodyElements.splice(index, 0, table);
7804
+ this._emitElementAdded(table, index);
7608
7805
  return this;
7609
7806
  }
7610
7807
  insertTocAt(index, toc) {
@@ -7616,7 +7813,7 @@ class Document {
7616
7813
  replaceParagraphAt(index, paragraph) {
7617
7814
  if (index >= 0 && index < this.bodyElements.length) {
7618
7815
  const element = this.bodyElements[index];
7619
- if (element instanceof Paragraph_1.Paragraph) {
7816
+ if (element instanceof Paragraph_js_1.Paragraph) {
7620
7817
  this.validateParagraph(paragraph);
7621
7818
  this.bodyElements[index] = paragraph;
7622
7819
  return true;
@@ -7627,7 +7824,7 @@ class Document {
7627
7824
  replaceTableAt(index, table) {
7628
7825
  if (index >= 0 && index < this.bodyElements.length) {
7629
7826
  const element = this.bodyElements[index];
7630
- if (element instanceof Table_1.Table) {
7827
+ if (element instanceof Table_js_1.Table) {
7631
7828
  this.validateTable(table);
7632
7829
  this.bodyElements[index] = table;
7633
7830
  return true;
@@ -7661,7 +7858,7 @@ class Document {
7661
7858
  removeTocAt(index) {
7662
7859
  if (index >= 0 && index < this.bodyElements.length) {
7663
7860
  const element = this.bodyElements[index];
7664
- if (element instanceof TableOfContentsElement_1.TableOfContentsElement) {
7861
+ if (element instanceof TableOfContentsElement_js_1.TableOfContentsElement) {
7665
7862
  this.bodyElements.splice(index, 1);
7666
7863
  return true;
7667
7864
  }
@@ -7676,7 +7873,8 @@ class Document {
7676
7873
  }
7677
7874
  removeBodyElementAt(index) {
7678
7875
  if (index >= 0 && index < this.bodyElements.length) {
7679
- this.bodyElements.splice(index, 1);
7876
+ const [removed] = this.bodyElements.splice(index, 1);
7877
+ this._emitElementRemoved(removed);
7680
7878
  return true;
7681
7879
  }
7682
7880
  return false;
@@ -7686,6 +7884,7 @@ class Document {
7686
7884
  if (index === -1)
7687
7885
  return false;
7688
7886
  this.bodyElements.splice(index, 1);
7887
+ this._emitElementRemoved(element);
7689
7888
  return true;
7690
7889
  }
7691
7890
  insertAfter(reference, element) {
@@ -7693,6 +7892,7 @@ class Document {
7693
7892
  if (index === -1)
7694
7893
  return false;
7695
7894
  this.bodyElements.splice(index + 1, 0, element);
7895
+ this._emitElementAdded(element, index + 1);
7696
7896
  return true;
7697
7897
  }
7698
7898
  insertBefore(reference, element) {
@@ -7700,6 +7900,7 @@ class Document {
7700
7900
  if (index === -1)
7701
7901
  return false;
7702
7902
  this.bodyElements.splice(index, 0, element);
7903
+ this._emitElementAdded(element, index);
7703
7904
  return true;
7704
7905
  }
7705
7906
  replaceElement(oldElement, newElement) {
@@ -7707,11 +7908,14 @@ class Document {
7707
7908
  if (index === -1)
7708
7909
  return false;
7709
7910
  this.bodyElements[index] = newElement;
7911
+ this._emitElementRemoved(oldElement);
7912
+ this._emitElementAdded(newElement, index);
7710
7913
  return true;
7711
7914
  }
7712
7915
  insertBodyElementAt(index, element) {
7713
7916
  const clampedIndex = Math.max(0, Math.min(index, this.bodyElements.length));
7714
7917
  this.bodyElements.splice(clampedIndex, 0, element);
7918
+ this._emitElementAdded(element, clampedIndex);
7715
7919
  }
7716
7920
  setBodyElements(elements) {
7717
7921
  this.bodyElements = elements;
@@ -7720,12 +7924,12 @@ class Document {
7720
7924
  const hyperlinks = [];
7721
7925
  const extractHyperlinksFromParagraph = (para) => {
7722
7926
  for (const content of para.getContent()) {
7723
- if (content instanceof Hyperlink_1.Hyperlink) {
7927
+ if (content instanceof Hyperlink_js_1.Hyperlink) {
7724
7928
  hyperlinks.push({ hyperlink: content, paragraph: para });
7725
7929
  }
7726
- else if (content instanceof Revision_1.Revision) {
7930
+ else if (content instanceof Revision_js_1.Revision) {
7727
7931
  for (const revContent of content.getContent()) {
7728
- if (revContent instanceof Hyperlink_1.Hyperlink) {
7932
+ if (revContent instanceof Hyperlink_js_1.Hyperlink) {
7729
7933
  hyperlinks.push({ hyperlink: revContent, paragraph: para });
7730
7934
  }
7731
7935
  }
@@ -7738,7 +7942,7 @@ class Document {
7738
7942
  for (const table of this.getTables()) {
7739
7943
  for (const row of table.getRows()) {
7740
7944
  for (const cell of row.getCells()) {
7741
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
7945
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7742
7946
  for (const para of cellParagraphs) {
7743
7947
  extractHyperlinksFromParagraph(para);
7744
7948
  }
@@ -7751,14 +7955,14 @@ class Document {
7751
7955
  const ids = new Set();
7752
7956
  const scanParagraph = (para) => {
7753
7957
  for (const item of para.getContent()) {
7754
- if (item instanceof Hyperlink_1.Hyperlink) {
7958
+ if (item instanceof Hyperlink_js_1.Hyperlink) {
7755
7959
  const relId = item.getRelationshipId();
7756
7960
  if (relId)
7757
7961
  ids.add(relId);
7758
7962
  }
7759
- if (item instanceof Revision_1.Revision) {
7963
+ if (item instanceof Revision_js_1.Revision) {
7760
7964
  for (const revContent of item.getContent()) {
7761
- if (revContent instanceof Hyperlink_1.Hyperlink) {
7965
+ if (revContent instanceof Hyperlink_js_1.Hyperlink) {
7762
7966
  const relId = revContent.getRelationshipId();
7763
7967
  if (relId)
7764
7968
  ids.add(relId);
@@ -7768,10 +7972,10 @@ class Document {
7768
7972
  }
7769
7973
  };
7770
7974
  const scanElement = (element) => {
7771
- if (element instanceof Paragraph_1.Paragraph) {
7975
+ if (element instanceof Paragraph_js_1.Paragraph) {
7772
7976
  scanParagraph(element);
7773
7977
  }
7774
- else if (element instanceof Table_1.Table) {
7978
+ else if (element instanceof Table_js_1.Table) {
7775
7979
  for (let row = 0; row < element.getRowCount(); row++) {
7776
7980
  for (let col = 0; col < element.getColumnCount(); col++) {
7777
7981
  const cell = element.getCell(row, col);
@@ -7790,7 +7994,7 @@ class Document {
7790
7994
  }
7791
7995
  }
7792
7996
  }
7793
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
7997
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
7794
7998
  for (const item of element.getContent()) {
7795
7999
  scanElement(item);
7796
8000
  }
@@ -7824,12 +8028,12 @@ class Document {
7824
8028
  defragmentHyperlinks(options) {
7825
8029
  const { resetFormatting = false, cleanupRelationships = false } = options || {};
7826
8030
  if (this.trackChangesEnabled) {
7827
- logger_1.defaultLogger.warn('defragmentHyperlinks skipped: track changes is enabled. ' +
8031
+ logger_js_1.defaultLogger.warn('defragmentHyperlinks skipped: track changes is enabled. ' +
7828
8032
  'Call defragmentHyperlinks before enableTrackChanges() to avoid field corruption.');
7829
8033
  return 0;
7830
8034
  }
7831
8035
  let mergedCount = 0;
7832
- const parser = new DocumentParser_1.DocumentParser();
8036
+ const parser = new DocumentParser_js_1.DocumentParser();
7833
8037
  for (const paragraph of this.getAllParagraphs()) {
7834
8038
  const originalContent = paragraph.getContent();
7835
8039
  parser.mergeConsecutiveHyperlinks(paragraph, resetFormatting);
@@ -7841,7 +8045,7 @@ class Document {
7841
8045
  for (const table of this.getTables()) {
7842
8046
  for (const row of table.getRows()) {
7843
8047
  for (const cell of row.getCells()) {
7844
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8048
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7845
8049
  for (const para of cellParagraphs) {
7846
8050
  const originalContent = para.getContent();
7847
8051
  parser.mergeConsecutiveHyperlinks(para, resetFormatting);
@@ -7857,7 +8061,7 @@ class Document {
7857
8061
  const referencedIds = this.collectAllReferencedHyperlinkIds();
7858
8062
  const removedCount = this.relationshipManager.removeOrphanedHyperlinks(referencedIds);
7859
8063
  if (removedCount > 0) {
7860
- logger_1.defaultLogger.info(`Cleaned up ${removedCount} orphaned hyperlink relationship(s)`);
8064
+ logger_js_1.defaultLogger.info(`Cleaned up ${removedCount} orphaned hyperlink relationship(s)`);
7861
8065
  }
7862
8066
  }
7863
8067
  return mergedCount;
@@ -7892,7 +8096,7 @@ class Document {
7892
8096
  for (const table of this.getTables()) {
7893
8097
  for (const row of table.getRows()) {
7894
8098
  for (const cell of row.getCells()) {
7895
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8099
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7896
8100
  for (const para of cellParagraphs) {
7897
8101
  for (const field of para.getFields()) {
7898
8102
  results.push({ field, paragraph: para, table });
@@ -7929,7 +8133,7 @@ class Document {
7929
8133
  continue;
7930
8134
  }
7931
8135
  const extension = image.getExtension();
7932
- const result = (0, ImageOptimizer_1.optimizeImage)(originalData, extension);
8136
+ const result = (0, ImageOptimizer_js_1.optimizeImage)(originalData, extension);
7933
8137
  if (!result)
7934
8138
  continue;
7935
8139
  const saved = originalData.length - result.data.length;
@@ -7980,7 +8184,7 @@ class Document {
7980
8184
  for (const table of this.getTables()) {
7981
8185
  for (const row of table.getRows()) {
7982
8186
  for (const cell of row.getCells()) {
7983
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8187
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7984
8188
  for (const para of cellParagraphs) {
7985
8189
  runs.push(...para.getRuns());
7986
8190
  }
@@ -8006,7 +8210,7 @@ class Document {
8006
8210
  let modified = false;
8007
8211
  const content = [...para.getContent()];
8008
8212
  for (const item of content) {
8009
- if (item instanceof Run_1.Run) {
8213
+ if (item instanceof Run_js_1.Run) {
8010
8214
  const text = item.getText();
8011
8215
  const matches = [...text.matchAll(emailRegex)];
8012
8216
  if (matches.length > 0) {
@@ -8032,15 +8236,15 @@ class Document {
8032
8236
  const startIndex = match.index;
8033
8237
  if (startIndex > lastIndex) {
8034
8238
  const beforeText = text.slice(lastIndex, startIndex);
8035
- result.push(new Run_1.Run(beforeText, originalFormatting));
8239
+ result.push(new Run_js_1.Run(beforeText, originalFormatting));
8036
8240
  }
8037
- const hyperlink = Hyperlink_1.Hyperlink.createEmail(email, email, formatting);
8241
+ const hyperlink = Hyperlink_js_1.Hyperlink.createEmail(email, email, formatting);
8038
8242
  result.push(hyperlink);
8039
8243
  lastIndex = startIndex + email.length;
8040
8244
  }
8041
8245
  if (lastIndex < text.length) {
8042
8246
  const afterText = text.slice(lastIndex);
8043
- result.push(new Run_1.Run(afterText, originalFormatting));
8247
+ result.push(new Run_js_1.Run(afterText, originalFormatting));
8044
8248
  }
8045
8249
  return result;
8046
8250
  }
@@ -8072,7 +8276,7 @@ class Document {
8072
8276
  let lastWasEmpty = false;
8073
8277
  const toRemove = [];
8074
8278
  this.bodyElements.forEach((element, index) => {
8075
- if (element instanceof Paragraph_1.Paragraph) {
8279
+ if (element instanceof Paragraph_js_1.Paragraph) {
8076
8280
  const isEmpty = element.getText().trim() === '';
8077
8281
  if (isEmpty && lastWasEmpty) {
8078
8282
  toRemove.push(index);
@@ -8121,7 +8325,7 @@ class Document {
8121
8325
  for (const table of this.getTables()) {
8122
8326
  for (const row of table.getRows()) {
8123
8327
  for (const cell of row.getCells()) {
8124
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8328
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
8125
8329
  for (const para of cellParagraphs) {
8126
8330
  if (standardParagraphSpacing) {
8127
8331
  if (standardParagraphSpacing.before !== undefined) {
@@ -8171,16 +8375,16 @@ class Document {
8171
8375
  const unwrappedBody = [];
8172
8376
  const unwrapSDT = (sdt, target) => {
8173
8377
  for (const item of sdt.getContent()) {
8174
- if (item instanceof Paragraph_1.Paragraph || item instanceof Table_1.Table) {
8378
+ if (item instanceof Paragraph_js_1.Paragraph || item instanceof Table_js_1.Table) {
8175
8379
  target.push(item);
8176
8380
  }
8177
- else if (item instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
8381
+ else if (item instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
8178
8382
  unwrapSDT(item, target);
8179
8383
  }
8180
8384
  }
8181
8385
  };
8182
8386
  for (const element of this.bodyElements) {
8183
- if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
8387
+ if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
8184
8388
  unwrapSDT(element, unwrappedBody);
8185
8389
  }
8186
8390
  else {