docxmlater 10.4.1 → 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 +74 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +605 -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 +2056 -1073
  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 +461 -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 +2180 -617
  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,7 +3369,7 @@ 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
  }
@@ -3380,7 +3508,7 @@ class Document {
3380
3508
  const indent = listParaConfig.paragraph.indentation;
3381
3509
  if (indent?.hanging !== undefined && indent?.left !== undefined) {
3382
3510
  if (indent.hanging > indent.left) {
3383
- const logger = (0, logger_1.getGlobalLogger)();
3511
+ const logger = (0, logger_js_1.getGlobalLogger)();
3384
3512
  logger.warn(`[Document] ListParagraph indentation: hanging (${indent.hanging}) > left (${indent.left}). ` +
3385
3513
  `Capping hanging to left to prevent negative bullet position.`);
3386
3514
  indent.hanging = indent.left;
@@ -3610,13 +3738,13 @@ class Document {
3610
3738
  if (tableIndex !== -1) {
3611
3739
  const nextElement = this.bodyElements[tableIndex + 1];
3612
3740
  const isNextElementBlank = (() => {
3613
- if (!(nextElement instanceof Paragraph_1.Paragraph))
3741
+ if (!(nextElement instanceof Paragraph_js_1.Paragraph))
3614
3742
  return false;
3615
3743
  const content = nextElement.getContent();
3616
3744
  if (!content || content.length === 0)
3617
3745
  return true;
3618
3746
  for (const item of content) {
3619
- if (item instanceof Hyperlink_1.Hyperlink) {
3747
+ if (item instanceof Hyperlink_js_1.Hyperlink) {
3620
3748
  return false;
3621
3749
  }
3622
3750
  if (item.getText) {
@@ -3628,7 +3756,7 @@ class Document {
3628
3756
  return true;
3629
3757
  })();
3630
3758
  if (!isNextElementBlank) {
3631
- const blankPara = Paragraph_1.Paragraph.create();
3759
+ const blankPara = Paragraph_js_1.Paragraph.create();
3632
3760
  blankPara.setSpaceAfter(120);
3633
3761
  if (preserveBlankLines) {
3634
3762
  blankPara.setPreserved(true);
@@ -3922,7 +4050,7 @@ class Document {
3922
4050
  }
3923
4051
  let tocStyle = this.stylesManager.getStyle(styleId);
3924
4052
  if (!tocStyle) {
3925
- tocStyle = Style_1.Style.createTOCStyle(level, {
4053
+ tocStyle = Style_js_1.Style.createTOCStyle(level, {
3926
4054
  run: options.run,
3927
4055
  paragraph: paragraphOverride,
3928
4056
  });
@@ -4200,28 +4328,28 @@ class Document {
4200
4328
  para.setAlignment(options.alignment);
4201
4329
  }
4202
4330
  if (options.spaceAbove !== undefined) {
4203
- para.setSpaceBefore(options.spaceAbove * units_1.UNITS.TWIPS_PER_POINT);
4331
+ para.setSpaceBefore(options.spaceAbove * units_js_1.UNITS.TWIPS_PER_POINT);
4204
4332
  }
4205
4333
  if (options.spaceBelow !== undefined) {
4206
- para.setSpaceAfter(options.spaceBelow * units_1.UNITS.TWIPS_PER_POINT);
4334
+ para.setSpaceAfter(options.spaceBelow * units_js_1.UNITS.TWIPS_PER_POINT);
4207
4335
  }
4208
4336
  if (options.lineSpacing !== undefined) {
4209
- para.setLineSpacing(options.lineSpacing * units_1.UNITS.TWIPS_PER_POINT);
4337
+ para.setLineSpacing(options.lineSpacing * units_js_1.UNITS.TWIPS_PER_POINT);
4210
4338
  }
4211
4339
  if (options.indentLeft !== undefined) {
4212
- para.setLeftIndent(options.indentLeft * units_1.UNITS.TWIPS_PER_INCH);
4340
+ para.setLeftIndent(options.indentLeft * units_js_1.UNITS.TWIPS_PER_INCH);
4213
4341
  }
4214
4342
  if (options.indentRight !== undefined) {
4215
- para.setRightIndent(options.indentRight * units_1.UNITS.TWIPS_PER_INCH);
4343
+ para.setRightIndent(options.indentRight * units_js_1.UNITS.TWIPS_PER_INCH);
4216
4344
  }
4217
4345
  if (options.indentFirst !== undefined) {
4218
- para.setFirstLineIndent(options.indentFirst * units_1.UNITS.TWIPS_PER_INCH);
4346
+ para.setFirstLineIndent(options.indentFirst * units_js_1.UNITS.TWIPS_PER_INCH);
4219
4347
  }
4220
4348
  if (options.indentHanging !== undefined) {
4221
4349
  if (!para.formatting.indentation) {
4222
4350
  para.formatting.indentation = {};
4223
4351
  }
4224
- 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;
4225
4353
  }
4226
4354
  if (options.keepWithNext) {
4227
4355
  para.setKeepNext(true);
@@ -4526,7 +4654,7 @@ class Document {
4526
4654
  findHeadingStylesUsedByParagraphs() {
4527
4655
  const usedStyles = new Map();
4528
4656
  const processElement = (element) => {
4529
- if (element instanceof Paragraph_1.Paragraph) {
4657
+ if (element instanceof Paragraph_js_1.Paragraph) {
4530
4658
  const styleId = element.getStyle();
4531
4659
  if (styleId) {
4532
4660
  const style = this.stylesManager.getStyle(styleId);
@@ -4542,7 +4670,7 @@ class Document {
4542
4670
  }
4543
4671
  }
4544
4672
  }
4545
- else if (element instanceof Table_1.Table) {
4673
+ else if (element instanceof Table_js_1.Table) {
4546
4674
  for (let row = 0; row < element.getRowCount(); row++) {
4547
4675
  const rowObj = element.getRow(row);
4548
4676
  if (rowObj) {
@@ -4567,7 +4695,7 @@ class Document {
4567
4695
  const headings = [];
4568
4696
  const levelSet = new Set(levels);
4569
4697
  try {
4570
- const parsed = XMLParser_1.XMLParser.parseToObject(docXml, { trimValues: false });
4698
+ const parsed = XMLParser_js_1.XMLParser.parseToObject(docXml, { trimValues: false });
4571
4699
  const document = parsed['w:document'];
4572
4700
  if (!document) {
4573
4701
  return headings;
@@ -4676,7 +4804,7 @@ class Document {
4676
4804
  }
4677
4805
  }
4678
4806
  catch (error) {
4679
- 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
4680
4808
  ? { message: error.message, stack: error.stack }
4681
4809
  : { error: String(error) });
4682
4810
  }
@@ -4764,7 +4892,7 @@ class Document {
4764
4892
  .replace(/'/g, '&apos;');
4765
4893
  }
4766
4894
  async populateTOCsInFile(filePath) {
4767
- const handler = new ZipHandler_1.ZipHandler();
4895
+ const handler = new ZipHandler_js_1.ZipHandler();
4768
4896
  await handler.load(filePath);
4769
4897
  const docXml = handler.getFileAsString('word/document.xml');
4770
4898
  if (!docXml) {
@@ -5018,14 +5146,14 @@ class Document {
5018
5146
  const target = `media/image${this.imageManager.getImageCount() + 1}.${image.getExtension()}`;
5019
5147
  const relationship = this.relationshipManager.addImage(target);
5020
5148
  this.imageManager.registerImage(image, relationship.getId());
5021
- const para = new Paragraph_1.Paragraph();
5149
+ const para = new Paragraph_js_1.Paragraph();
5022
5150
  const imageRun = this.createImageRun(image);
5023
5151
  para.addRun(imageRun);
5024
5152
  this.bodyElements.push(para);
5025
5153
  return this;
5026
5154
  }
5027
5155
  createImageRun(image) {
5028
- return new ImageRun_1.ImageRun(image);
5156
+ return new ImageRun_js_1.ImageRun(image);
5029
5157
  }
5030
5158
  getImageManager() {
5031
5159
  return this.imageManager;
@@ -5075,14 +5203,14 @@ class Document {
5075
5203
  if (this.commentManager.getCount() > 0) {
5076
5204
  const xml = this.commentManager.generateCommentsXml();
5077
5205
  this.zipHandler.addFile('word/comments.xml', xml);
5078
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5206
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5079
5207
  if (existingRels.length === 0) {
5080
5208
  this.relationshipManager.addComments();
5081
5209
  }
5082
5210
  }
5083
5211
  else {
5084
5212
  this.zipHandler.removeFile('word/comments.xml');
5085
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5213
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5086
5214
  for (const rel of existingRels) {
5087
5215
  this.relationshipManager.removeRelationship(rel.getId());
5088
5216
  }
@@ -5094,7 +5222,7 @@ class Document {
5094
5222
  for (const [path, content] of this._originalCommentCompanionFiles) {
5095
5223
  this.zipHandler.addFile(path, content);
5096
5224
  }
5097
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5225
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5098
5226
  if (existingRels.length === 0) {
5099
5227
  this.relationshipManager.addComments();
5100
5228
  }
@@ -5102,7 +5230,7 @@ class Document {
5102
5230
  else if (this.commentManager.getCount() > 0) {
5103
5231
  const xml = this.commentManager.generateCommentsXml();
5104
5232
  this.zipHandler.addFile('word/comments.xml', xml);
5105
- const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_1.RelationshipType.COMMENTS);
5233
+ const existingRels = this.relationshipManager.getRelationshipsByType(Relationship_js_1.RelationshipType.COMMENTS);
5106
5234
  if (existingRels.length === 0) {
5107
5235
  this.relationshipManager.addComments();
5108
5236
  }
@@ -5110,9 +5238,9 @@ class Document {
5110
5238
  }
5111
5239
  removeCommentCompanionFiles() {
5112
5240
  const companionPaths = [
5113
- types_1.DOCX_PATHS.COMMENTS_EXTENDED,
5114
- types_1.DOCX_PATHS.COMMENTS_IDS,
5115
- 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,
5116
5244
  ];
5117
5245
  for (const filePath of companionPaths) {
5118
5246
  this.zipHandler.removeFile(filePath);
@@ -5127,16 +5255,16 @@ class Document {
5127
5255
  saveFootnotes() {
5128
5256
  if (this._footnotesModified || this.footnoteManager.getCount() > 0) {
5129
5257
  const xml = this.footnoteManager.generateFootnotesXml();
5130
- this.zipHandler.addFile(types_1.DOCX_PATHS.FOOTNOTES, xml);
5131
- 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);
5132
5260
  if (existingRels.length === 0) {
5133
5261
  this.relationshipManager.addFootnotes();
5134
5262
  }
5135
5263
  this.generatePartLevelHyperlinkRels(this.footnoteManager.getAllFootnotes().flatMap((fn) => fn.getParagraphs()), 'word/_rels/footnotes.xml.rels');
5136
5264
  }
5137
5265
  else if (this._originalFootnotesXml) {
5138
- this.zipHandler.addFile(types_1.DOCX_PATHS.FOOTNOTES, this._originalFootnotesXml);
5139
- 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);
5140
5268
  if (existingRels.length === 0) {
5141
5269
  this.relationshipManager.addFootnotes();
5142
5270
  }
@@ -5145,16 +5273,16 @@ class Document {
5145
5273
  saveEndnotes() {
5146
5274
  if (this._endnotesModified || this.endnoteManager.getCount() > 0) {
5147
5275
  const xml = this.endnoteManager.generateEndnotesXml();
5148
- this.zipHandler.addFile(types_1.DOCX_PATHS.ENDNOTES, xml);
5149
- 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);
5150
5278
  if (existingRels.length === 0) {
5151
5279
  this.relationshipManager.addEndnotes();
5152
5280
  }
5153
5281
  this.generatePartLevelHyperlinkRels(this.endnoteManager.getAllEndnotes().flatMap((en) => en.getParagraphs()), 'word/_rels/endnotes.xml.rels');
5154
5282
  }
5155
5283
  else if (this._originalEndnotesXml) {
5156
- this.zipHandler.addFile(types_1.DOCX_PATHS.ENDNOTES, this._originalEndnotesXml);
5157
- 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);
5158
5286
  if (existingRels.length === 0) {
5159
5287
  this.relationshipManager.addEndnotes();
5160
5288
  }
@@ -5163,10 +5291,10 @@ class Document {
5163
5291
  extractParagraphsFromElements(elements) {
5164
5292
  const result = [];
5165
5293
  for (const el of elements) {
5166
- if (el instanceof Paragraph_1.Paragraph) {
5294
+ if (el instanceof Paragraph_js_1.Paragraph) {
5167
5295
  result.push(el);
5168
5296
  }
5169
- else if (el instanceof Table_1.Table) {
5297
+ else if (el instanceof Table_js_1.Table) {
5170
5298
  for (const row of el.getRows()) {
5171
5299
  for (const cell of row.getCells()) {
5172
5300
  result.push(...cell.getParagraphs());
@@ -5180,16 +5308,16 @@ class Document {
5180
5308
  const hyperlinkRels = [];
5181
5309
  for (const para of paragraphs) {
5182
5310
  for (const item of para.getContent()) {
5183
- if (item instanceof Hyperlink_1.Hyperlink && item.isExternal()) {
5311
+ if (item instanceof Hyperlink_js_1.Hyperlink && item.isExternal()) {
5184
5312
  const relId = item.getRelationshipId();
5185
5313
  const url = item.getUrl();
5186
5314
  if (relId && url) {
5187
5315
  hyperlinkRels.push({ id: relId, url });
5188
5316
  }
5189
5317
  }
5190
- if (item instanceof Revision_1.Revision) {
5318
+ if (item instanceof Revision_js_1.Revision) {
5191
5319
  for (const revContent of item.getContent()) {
5192
- if (revContent instanceof Hyperlink_1.Hyperlink && revContent.isExternal()) {
5320
+ if (revContent instanceof Hyperlink_js_1.Hyperlink && revContent.isExternal()) {
5193
5321
  const relId = revContent.getRelationshipId();
5194
5322
  const url = revContent.getUrl();
5195
5323
  if (relId && url) {
@@ -5205,8 +5333,8 @@ class Document {
5205
5333
  xml +=
5206
5334
  '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n';
5207
5335
  for (const rel of hyperlinkRels) {
5208
- const escapedId = XMLBuilder_1.XMLBuilder.escapeXmlAttribute(rel.id);
5209
- 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);
5210
5338
  xml += ` <Relationship Id="${escapedId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="${escapedUrl}" TargetMode="External"/>\n`;
5211
5339
  }
5212
5340
  xml += '</Relationships>';
@@ -5220,7 +5348,7 @@ class Document {
5220
5348
  const authors = new Set();
5221
5349
  for (const para of this.getAllParagraphs()) {
5222
5350
  for (const item of para.getContent()) {
5223
- if (item instanceof Revision_1.Revision) {
5351
+ if (item instanceof Revision_js_1.Revision) {
5224
5352
  const author = item.getAuthor();
5225
5353
  if (author)
5226
5354
  authors.add(author);
@@ -5237,7 +5365,7 @@ class Document {
5237
5365
  }
5238
5366
  }
5239
5367
  for (const element of this.bodyElements) {
5240
- if (element instanceof Table_1.Table) {
5368
+ if (element instanceof Table_js_1.Table) {
5241
5369
  this.collectAuthorsFromTable(element, authors);
5242
5370
  }
5243
5371
  }
@@ -5278,7 +5406,7 @@ class Document {
5278
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>`;
5279
5407
  this.zipHandler.addFile('word/people.xml', newPeopleXml);
5280
5408
  }
5281
- const peopleType = Relationship_1.RelationshipType.PEOPLE;
5409
+ const peopleType = Relationship_js_1.RelationshipType.PEOPLE;
5282
5410
  const existingPeopleRels = this.relationshipManager.getRelationshipsByType(peopleType);
5283
5411
  if (existingPeopleRels.length === 0) {
5284
5412
  this.relationshipManager.addPeople();
@@ -5299,7 +5427,7 @@ class Document {
5299
5427
  continue;
5300
5428
  for (const para of cell.getParagraphs()) {
5301
5429
  for (const item of para.getContent()) {
5302
- if (item instanceof Revision_1.Revision) {
5430
+ if (item instanceof Revision_js_1.Revision) {
5303
5431
  const author = item.getAuthor();
5304
5432
  if (author)
5305
5433
  authors.add(author);
@@ -5343,7 +5471,7 @@ class Document {
5343
5471
  updateContentTypesWithImagesHeadersFootersAndComments() {
5344
5472
  const hasCustomProps = this.properties.customProperties && Object.keys(this.properties.customProperties).length > 0;
5345
5473
  const contentTypes = this.generator.generateContentTypesWithImagesHeadersFootersAndComments(this.imageManager, this.headerFooterManager, this.commentManager, this.zipHandler, undefined, hasCustomProps, this._originalContentTypes, this.footnoteManager, this.endnoteManager);
5346
- this.zipHandler.updateFile(types_1.DOCX_PATHS.CONTENT_TYPES, contentTypes);
5474
+ this.zipHandler.updateFile(types_js_1.DOCX_PATHS.CONTENT_TYPES, contentTypes);
5347
5475
  }
5348
5476
  getBookmarkManager() {
5349
5477
  return this.bookmarkManager;
@@ -5369,7 +5497,7 @@ class Document {
5369
5497
  const BOOKMARK_NAME = '_top';
5370
5498
  let bookmark = this.getBookmark(BOOKMARK_NAME);
5371
5499
  if (!bookmark) {
5372
- bookmark = new Bookmark_1.Bookmark({
5500
+ bookmark = new Bookmark_js_1.Bookmark({
5373
5501
  id: 0,
5374
5502
  name: BOOKMARK_NAME,
5375
5503
  skipNormalization: true,
@@ -5380,7 +5508,7 @@ class Document {
5380
5508
  paragraphs[0].addBookmark(bookmark);
5381
5509
  }
5382
5510
  else {
5383
- const topParagraph = new Paragraph_1.Paragraph();
5511
+ const topParagraph = new Paragraph_js_1.Paragraph();
5384
5512
  topParagraph.addBookmark(bookmark);
5385
5513
  this.bodyElements.unshift(topParagraph);
5386
5514
  }
@@ -5389,7 +5517,7 @@ class Document {
5389
5517
  bookmark,
5390
5518
  anchor: BOOKMARK_NAME,
5391
5519
  hyperlink: (text, formatting) => {
5392
- return Hyperlink_1.Hyperlink.createInternal(BOOKMARK_NAME, text, formatting);
5520
+ return Hyperlink_js_1.Hyperlink.createInternal(BOOKMARK_NAME, text, formatting);
5393
5521
  },
5394
5522
  };
5395
5523
  }
@@ -5402,16 +5530,16 @@ class Document {
5402
5530
  let i = 0;
5403
5531
  while (i < this.bodyElements.length) {
5404
5532
  const element = this.bodyElements[i];
5405
- if (element instanceof Table_1.Table &&
5533
+ if (element instanceof Table_js_1.Table &&
5406
5534
  element.getRowCount() === 1 &&
5407
5535
  element.getColumnCount() === 1) {
5408
5536
  oneByOneCount++;
5409
5537
  if (oneByOneCount > 1) {
5410
5538
  const prevElement = i > 0 ? this.bodyElements[i - 1] : undefined;
5411
- const hasLink = prevElement instanceof Paragraph_1.Paragraph && this._paragraphHasTopLink(prevElement);
5539
+ const hasLink = prevElement instanceof Paragraph_js_1.Paragraph && this._paragraphHasTopLink(prevElement);
5412
5540
  if (!hasLink) {
5413
- const para = new Paragraph_1.Paragraph();
5414
- 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, {
5415
5543
  color: '0000FF',
5416
5544
  underline: 'single',
5417
5545
  ...formatting,
@@ -5429,16 +5557,16 @@ class Document {
5429
5557
  }
5430
5558
  _paragraphHasTopLink(paragraph) {
5431
5559
  for (const item of paragraph.getContent()) {
5432
- if (item instanceof Hyperlink_1.Hyperlink && item.getAnchor() === '_top') {
5560
+ if (item instanceof Hyperlink_js_1.Hyperlink && item.getAnchor() === '_top') {
5433
5561
  return true;
5434
5562
  }
5435
- if (item instanceof Field_1.ComplexField && item.isHyperlinkField()) {
5563
+ if (item instanceof Field_js_1.ComplexField && item.isHyperlinkField()) {
5436
5564
  const parsed = item.getParsedHyperlink();
5437
5565
  if (parsed?.anchor === '_top') {
5438
5566
  return true;
5439
5567
  }
5440
5568
  }
5441
- 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"')) {
5442
5570
  return true;
5443
5571
  }
5444
5572
  }
@@ -5448,13 +5576,13 @@ class Document {
5448
5576
  return this.revisionManager;
5449
5577
  }
5450
5578
  validateRevisions(options) {
5451
- return validation_1.RevisionValidator.validate(this, options);
5579
+ return index_js_1.RevisionValidator.validate(this, options);
5452
5580
  }
5453
5581
  autoFixRevisions(options) {
5454
- return validation_1.RevisionAutoFixer.fix(this, options);
5582
+ return index_js_1.RevisionAutoFixer.fix(this, options);
5455
5583
  }
5456
5584
  isRevisionsValid() {
5457
- return validation_1.RevisionValidator.isValid(this);
5585
+ return index_js_1.RevisionValidator.isValid(this);
5458
5586
  }
5459
5587
  validateAndFixRevisions(options) {
5460
5588
  const validation = this.validateRevisions(options?.validation);
@@ -5471,15 +5599,15 @@ class Document {
5471
5599
  return { validation, fix };
5472
5600
  }
5473
5601
  createInsertion(author, content, date) {
5474
- const revision = Revision_1.Revision.createInsertion(author, content, date);
5602
+ const revision = Revision_js_1.Revision.createInsertion(author, content, date);
5475
5603
  return this.revisionManager.register(revision);
5476
5604
  }
5477
5605
  createDeletion(author, content, date) {
5478
- const revision = Revision_1.Revision.createDeletion(author, content, date);
5606
+ const revision = Revision_js_1.Revision.createDeletion(author, content, date);
5479
5607
  return this.revisionManager.register(revision);
5480
5608
  }
5481
5609
  createRevisionFromText(type, author, text, date) {
5482
- const revision = Revision_1.Revision.fromText(type, author, text, date);
5610
+ const revision = Revision_js_1.Revision.fromText(type, author, text, date);
5483
5611
  return this.revisionManager.register(revision);
5484
5612
  }
5485
5613
  findParagraphIndex(paragraph) {
@@ -5518,8 +5646,8 @@ class Document {
5518
5646
  return revision;
5519
5647
  }
5520
5648
  trackFieldInstructionDeletion(paragraph, author, fieldInstruction, date) {
5521
- const run = new Run_1.Run(fieldInstruction);
5522
- 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);
5523
5651
  this.revisionManager.register(revision);
5524
5652
  const location = this.createRevisionLocation(paragraph);
5525
5653
  if (location) {
@@ -5745,7 +5873,7 @@ class Document {
5745
5873
  return this.documentProtection;
5746
5874
  }
5747
5875
  getCompatibilityMode() {
5748
- return this._compatInfo?.mode ?? compatibility_types_1.CompatibilityMode.Word2007;
5876
+ return this._compatInfo?.mode ?? compatibility_types_js_1.CompatibilityMode.Word2007;
5749
5877
  }
5750
5878
  getDocumentBackground() {
5751
5879
  return this._documentBackground ? { ...this._documentBackground } : undefined;
@@ -5811,7 +5939,7 @@ class Document {
5811
5939
  setDefaultFont(fontName, sizeInPoints) {
5812
5940
  let normalStyle = this.stylesManager.getStyle('Normal');
5813
5941
  if (!normalStyle) {
5814
- normalStyle = new Style_1.Style({
5942
+ normalStyle = new Style_js_1.Style({
5815
5943
  styleId: 'Normal',
5816
5944
  name: 'Normal',
5817
5945
  type: 'paragraph',
@@ -5830,7 +5958,7 @@ class Document {
5830
5958
  setDefaultFontSize(sizeInPoints) {
5831
5959
  let normalStyle = this.stylesManager.getStyle('Normal');
5832
5960
  if (!normalStyle) {
5833
- normalStyle = new Style_1.Style({
5961
+ normalStyle = new Style_js_1.Style({
5834
5962
  styleId: 'Normal',
5835
5963
  name: 'Normal',
5836
5964
  type: 'paragraph',
@@ -5885,7 +6013,7 @@ class Document {
5885
6013
  }
5886
6014
  getCompatibilityInfo() {
5887
6015
  return (this._compatInfo ?? {
5888
- mode: compatibility_types_1.CompatibilityMode.Word2007,
6016
+ mode: compatibility_types_js_1.CompatibilityMode.Word2007,
5889
6017
  isLegacyMode: true,
5890
6018
  compatSettings: [],
5891
6019
  legacyFlags: [],
@@ -5894,7 +6022,7 @@ class Document {
5894
6022
  upgradeToModernFormat() {
5895
6023
  const currentMode = this.getCompatibilityMode();
5896
6024
  const currentInfo = this.getCompatibilityInfo();
5897
- if (currentMode === compatibility_types_1.CompatibilityMode.Word2013Plus && currentInfo.legacyFlags.length === 0) {
6025
+ if (currentMode === compatibility_types_js_1.CompatibilityMode.Word2013Plus && currentInfo.legacyFlags.length === 0) {
5898
6026
  return {
5899
6027
  previousMode: currentMode,
5900
6028
  newMode: 15,
@@ -5905,65 +6033,65 @@ class Document {
5905
6033
  };
5906
6034
  }
5907
6035
  if (this._originalSettingsXml) {
5908
- const result = CompatibilityUpgrader_1.CompatibilityUpgrader.upgradeCompatBlock(this._originalSettingsXml, currentMode);
6036
+ const result = CompatibilityUpgrader_js_1.CompatibilityUpgrader.upgradeCompatBlock(this._originalSettingsXml, currentMode);
5909
6037
  this._originalSettingsXml = result.xml;
5910
6038
  this._settingsModified = true;
5911
- const nsResult = CompatibilityUpgrader_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
6039
+ const nsResult = CompatibilityUpgrader_js_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
5912
6040
  this.namespaces = nsResult.namespaces;
5913
6041
  result.report.namespacesExpanded = nsResult.expanded;
5914
6042
  this._compatInfo = {
5915
- mode: compatibility_types_1.CompatibilityMode.Word2013Plus,
6043
+ mode: compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5916
6044
  isLegacyMode: false,
5917
- compatSettings: [...legacyCompatFlags_1.MODERN_COMPAT_SETTINGS],
6045
+ compatSettings: [...legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS],
5918
6046
  legacyFlags: [],
5919
6047
  };
5920
6048
  return result.report;
5921
6049
  }
5922
6050
  this._compatInfo = {
5923
- mode: compatibility_types_1.CompatibilityMode.Word2013Plus,
6051
+ mode: compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5924
6052
  isLegacyMode: false,
5925
- compatSettings: [...legacyCompatFlags_1.MODERN_COMPAT_SETTINGS],
6053
+ compatSettings: [...legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS],
5926
6054
  legacyFlags: [],
5927
6055
  };
5928
- const nsResult = CompatibilityUpgrader_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
6056
+ const nsResult = CompatibilityUpgrader_js_1.CompatibilityUpgrader.ensureModernNamespaces(this.namespaces);
5929
6057
  this.namespaces = nsResult.namespaces;
5930
6058
  return {
5931
6059
  previousMode: currentMode,
5932
6060
  newMode: 15,
5933
6061
  removedFlags: [],
5934
- addedSettings: legacyCompatFlags_1.MODERN_COMPAT_SETTINGS.map((s) => s.name),
6062
+ addedSettings: legacyCompatFlags_js_1.MODERN_COMPAT_SETTINGS.map((s) => s.name),
5935
6063
  namespacesExpanded: nsResult.expanded,
5936
- changed: currentMode !== compatibility_types_1.CompatibilityMode.Word2013Plus,
6064
+ changed: currentMode !== compatibility_types_js_1.CompatibilityMode.Word2013Plus,
5937
6065
  };
5938
6066
  }
5939
6067
  createRunPropertiesChange(author, content, previousProperties, date) {
5940
- const revision = Revision_1.Revision.createRunPropertiesChange(author, content, previousProperties, date);
6068
+ const revision = Revision_js_1.Revision.createRunPropertiesChange(author, content, previousProperties, date);
5941
6069
  return this.revisionManager.register(revision);
5942
6070
  }
5943
6071
  createParagraphPropertiesChange(author, content, previousProperties, date) {
5944
- const revision = Revision_1.Revision.createParagraphPropertiesChange(author, content, previousProperties, date);
6072
+ const revision = Revision_js_1.Revision.createParagraphPropertiesChange(author, content, previousProperties, date);
5945
6073
  return this.revisionManager.register(revision);
5946
6074
  }
5947
6075
  createTablePropertiesChange(author, content, previousProperties, date) {
5948
- const revision = Revision_1.Revision.createTablePropertiesChange(author, content, previousProperties, date);
6076
+ const revision = Revision_js_1.Revision.createTablePropertiesChange(author, content, previousProperties, date);
5949
6077
  return this.revisionManager.register(revision);
5950
6078
  }
5951
6079
  createMoveFrom(author, content, moveId, date) {
5952
- const revision = Revision_1.Revision.createMoveFrom(author, content, moveId, date);
6080
+ const revision = Revision_js_1.Revision.createMoveFrom(author, content, moveId, date);
5953
6081
  return this.revisionManager.register(revision);
5954
6082
  }
5955
6083
  createMoveTo(author, content, moveId, date) {
5956
- const revision = Revision_1.Revision.createMoveTo(author, content, moveId, date);
6084
+ const revision = Revision_js_1.Revision.createMoveTo(author, content, moveId, date);
5957
6085
  return this.revisionManager.register(revision);
5958
6086
  }
5959
6087
  trackMove(author, content, date) {
5960
6088
  const moveId = `move${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
5961
6089
  const moveName = `move${Date.now()}`;
5962
6090
  const rangeIdStart = this.revisionManager.getStats().nextId;
5963
- const moveFromRangeStart = RangeMarker_1.RangeMarker.createMoveFromStart(rangeIdStart, moveName, author, date);
5964
- const moveFromRangeEnd = RangeMarker_1.RangeMarker.createMoveFromEnd(rangeIdStart);
5965
- const moveToRangeStart = RangeMarker_1.RangeMarker.createMoveToStart(rangeIdStart, moveName, author, date);
5966
- 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);
5967
6095
  const moveFrom = this.createMoveFrom(author, content, moveId, date);
5968
6096
  const moveTo = this.createMoveTo(author, content, moveId, date);
5969
6097
  return {
@@ -5977,19 +6105,19 @@ class Document {
5977
6105
  };
5978
6106
  }
5979
6107
  createTableCellInsert(author, content, date) {
5980
- const revision = Revision_1.Revision.createTableCellInsert(author, content, date);
6108
+ const revision = Revision_js_1.Revision.createTableCellInsert(author, content, date);
5981
6109
  return this.revisionManager.register(revision);
5982
6110
  }
5983
6111
  createTableCellDelete(author, content, date) {
5984
- const revision = Revision_1.Revision.createTableCellDelete(author, content, date);
6112
+ const revision = Revision_js_1.Revision.createTableCellDelete(author, content, date);
5985
6113
  return this.revisionManager.register(revision);
5986
6114
  }
5987
6115
  createTableCellMerge(author, content, date) {
5988
- const revision = Revision_1.Revision.createTableCellMerge(author, content, date);
6116
+ const revision = Revision_js_1.Revision.createTableCellMerge(author, content, date);
5989
6117
  return this.revisionManager.register(revision);
5990
6118
  }
5991
6119
  createNumberingChange(author, content, previousProperties, date) {
5992
- const revision = Revision_1.Revision.createNumberingChange(author, content, previousProperties, date);
6120
+ const revision = Revision_js_1.Revision.createNumberingChange(author, content, previousProperties, date);
5993
6121
  return this.revisionManager.register(revision);
5994
6122
  }
5995
6123
  getCommentManager() {
@@ -6115,7 +6243,7 @@ class Document {
6115
6243
  const updates = [];
6116
6244
  for (const para of this.getAllParagraphs()) {
6117
6245
  for (const content of para.getContent()) {
6118
- if (content instanceof Hyperlink_1.Hyperlink && content.isExternal()) {
6246
+ if (content instanceof Hyperlink_js_1.Hyperlink && content.isExternal()) {
6119
6247
  const currentUrl = content.getUrl();
6120
6248
  if (currentUrl && urlMap.has(currentUrl)) {
6121
6249
  const newUrl = urlMap.get(currentUrl);
@@ -6143,8 +6271,8 @@ class Document {
6143
6271
  return this.acceptAllRevisions();
6144
6272
  }
6145
6273
  async acceptAllRevisions() {
6146
- const result = (0, InMemoryRevisionAcceptor_1.acceptRevisionsInMemory)(this);
6147
- (0, acceptRevisions_1.cleanupRevisionMetadata)(this.zipHandler);
6274
+ const result = (0, InMemoryRevisionAcceptor_js_1.acceptRevisionsInMemory)(this);
6275
+ (0, acceptRevisions_js_1.cleanupRevisionMetadata)(this.zipHandler);
6148
6276
  this.logger.info('Accepted all revisions using in-memory transformation', {
6149
6277
  insertions: result.insertionsAccepted,
6150
6278
  deletions: result.deletionsAccepted,
@@ -6173,7 +6301,7 @@ class Document {
6173
6301
  }
6174
6302
  for (const headerEntry of this.headerFooterManager.getAllHeaders()) {
6175
6303
  for (const element of headerEntry.header.getElements()) {
6176
- if (element instanceof Paragraph_1.Paragraph) {
6304
+ if (element instanceof Paragraph_js_1.Paragraph) {
6177
6305
  paragraphsProcessed++;
6178
6306
  totalConsolidated += element.consolidateRevisions(timeWindowMs);
6179
6307
  }
@@ -6181,7 +6309,7 @@ class Document {
6181
6309
  }
6182
6310
  for (const footerEntry of this.headerFooterManager.getAllFooters()) {
6183
6311
  for (const element of footerEntry.footer.getElements()) {
6184
- if (element instanceof Paragraph_1.Paragraph) {
6312
+ if (element instanceof Paragraph_js_1.Paragraph) {
6185
6313
  paragraphsProcessed++;
6186
6314
  totalConsolidated += element.consolidateRevisions(timeWindowMs);
6187
6315
  }
@@ -6194,7 +6322,7 @@ class Document {
6194
6322
  return { paragraphsProcessed, revisionsConsolidated: totalConsolidated };
6195
6323
  }
6196
6324
  async acceptAllRevisionsRawXml() {
6197
- await (0, acceptRevisions_1.acceptAllRevisions)(this.zipHandler);
6325
+ await (0, acceptRevisions_js_1.acceptAllRevisions)(this.zipHandler);
6198
6326
  this.clearRevisionsFromAllParagraphs();
6199
6327
  this.skipDocumentXmlRegeneration = true;
6200
6328
  return this;
@@ -6210,16 +6338,16 @@ class Document {
6210
6338
  const revisions = para.getRevisions();
6211
6339
  if (revisions.length > 0) {
6212
6340
  const content = para.getContent();
6213
- const nonRevisionContent = content.filter((item) => !(item instanceof Revision_1.Revision));
6341
+ const nonRevisionContent = content.filter((item) => !(item instanceof Revision_js_1.Revision));
6214
6342
  para.clearContent();
6215
6343
  for (const item of nonRevisionContent) {
6216
- 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) {
6217
6345
  para.addRun(item);
6218
6346
  }
6219
- else if (item instanceof Hyperlink_1.Hyperlink) {
6347
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
6220
6348
  para.addHyperlink(item);
6221
6349
  }
6222
- else if (item instanceof Field_1.Field) {
6350
+ else if (item instanceof Field_js_1.Field) {
6223
6351
  para.addField(item);
6224
6352
  }
6225
6353
  }
@@ -6285,7 +6413,59 @@ class Document {
6285
6413
  this.bodyElements = [];
6286
6414
  return this;
6287
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
+ }
6288
6467
  dispose() {
6468
+ this._events.removeAllListeners();
6289
6469
  this.bodyElements = [];
6290
6470
  this.parser.clearParseErrors();
6291
6471
  this.stylesManager.clear();
@@ -6358,7 +6538,7 @@ class Document {
6358
6538
  this.rsids = new Set();
6359
6539
  this.documentProtection = undefined;
6360
6540
  this.properties = {};
6361
- this.section = Section_1.Section.create();
6541
+ this.section = Section_js_1.Section.create();
6362
6542
  this.namespaces = {};
6363
6543
  }
6364
6544
  getSizeStats() {
@@ -6532,13 +6712,13 @@ class Document {
6532
6712
  const relsContent = this.zipHandler.getFileAsString(relsPath);
6533
6713
  if (relsContent) {
6534
6714
  const rels = [];
6535
- const relationshipElements = XMLParser_1.XMLParser.extractElements(relsContent, 'Relationship');
6715
+ const relationshipElements = XMLParser_js_1.XMLParser.extractElements(relsContent, 'Relationship');
6536
6716
  for (const relElement of relationshipElements) {
6537
6717
  const rel = {};
6538
- const id = XMLParser_1.XMLParser.extractAttribute(relElement, 'Id');
6539
- const type = XMLParser_1.XMLParser.extractAttribute(relElement, 'Type');
6540
- const target = XMLParser_1.XMLParser.extractAttribute(relElement, 'Target');
6541
- 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');
6542
6722
  if (id)
6543
6723
  rel.id = id;
6544
6724
  if (type)
@@ -6568,13 +6748,13 @@ class Document {
6568
6748
  return [];
6569
6749
  }
6570
6750
  const relationships = [];
6571
- const relationshipElements = XMLParser_1.XMLParser.extractElements(relsContent, 'Relationship');
6751
+ const relationshipElements = XMLParser_js_1.XMLParser.extractElements(relsContent, 'Relationship');
6572
6752
  for (const relElement of relationshipElements) {
6573
6753
  const rel = {};
6574
- const id = XMLParser_1.XMLParser.extractAttribute(relElement, 'Id');
6575
- const type = XMLParser_1.XMLParser.extractAttribute(relElement, 'Type');
6576
- const target = XMLParser_1.XMLParser.extractAttribute(relElement, 'Target');
6577
- 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');
6578
6758
  if (id)
6579
6759
  rel.id = id;
6580
6760
  if (type)
@@ -6667,7 +6847,7 @@ class Document {
6667
6847
  for (const table of this.getTables()) {
6668
6848
  for (const row of table.getRows()) {
6669
6849
  for (const cell of row.getCells()) {
6670
- if (cell instanceof TableCell_1.TableCell) {
6850
+ if (cell instanceof TableCell_js_1.TableCell) {
6671
6851
  const cellParagraphs = cell.getParagraphs();
6672
6852
  for (let pIndex = 0; pIndex < cellParagraphs.length; pIndex++) {
6673
6853
  const paragraph = cellParagraphs[pIndex];
@@ -6912,24 +7092,24 @@ class Document {
6912
7092
  if (trackChanges && !this.trackChangesEnabled) {
6913
7093
  const parentParagraph = run._getParentParagraph();
6914
7094
  if (parentParagraph) {
6915
- const segments = (0, textDiff_1.diffText)(originalText, newText);
6916
- 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);
6917
7097
  const now = new Date();
6918
7098
  const formatting = run.getFormatting();
6919
7099
  const newContent = [];
6920
7100
  if (useGranular) {
6921
7101
  for (const seg of segments) {
6922
7102
  if (seg.type === 'equal') {
6923
- newContent.push(new Run_1.Run(seg.text, formatting));
7103
+ newContent.push(new Run_js_1.Run(seg.text, formatting));
6924
7104
  }
6925
7105
  else if (seg.type === 'delete') {
6926
- 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);
6927
7107
  this.revisionManager.register(delRev);
6928
7108
  revisions.push(delRev);
6929
7109
  newContent.push(delRev);
6930
7110
  }
6931
7111
  else if (seg.type === 'insert') {
6932
- 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);
6933
7113
  this.revisionManager.register(insRev);
6934
7114
  revisions.push(insRev);
6935
7115
  newContent.push(insRev);
@@ -6937,11 +7117,11 @@ class Document {
6937
7117
  }
6938
7118
  }
6939
7119
  else {
6940
- 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);
6941
7121
  this.revisionManager.register(deletion);
6942
7122
  revisions.push(deletion);
6943
7123
  newContent.push(deletion);
6944
- 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);
6945
7125
  this.revisionManager.register(insertion);
6946
7126
  revisions.push(insertion);
6947
7127
  newContent.push(insertion);
@@ -7132,7 +7312,7 @@ class Document {
7132
7312
  let count = 0;
7133
7313
  let paraIndex = 0;
7134
7314
  for (const element of this.bodyElements) {
7135
- if (element instanceof Paragraph_1.Paragraph) {
7315
+ if (element instanceof Paragraph_js_1.Paragraph) {
7136
7316
  const result = callback(element, paraIndex);
7137
7317
  count++;
7138
7318
  paraIndex++;
@@ -7146,7 +7326,7 @@ class Document {
7146
7326
  let count = 0;
7147
7327
  let tableIndex = 0;
7148
7328
  for (const element of this.bodyElements) {
7149
- if (element instanceof Table_1.Table) {
7329
+ if (element instanceof Table_js_1.Table) {
7150
7330
  const result = callback(element, tableIndex);
7151
7331
  count++;
7152
7332
  tableIndex++;
@@ -7163,14 +7343,14 @@ class Document {
7163
7343
  toMarkdown() {
7164
7344
  const lines = [];
7165
7345
  for (const element of this.bodyElements) {
7166
- if (element instanceof Paragraph_1.Paragraph) {
7346
+ if (element instanceof Paragraph_js_1.Paragraph) {
7167
7347
  const mdLine = this.paragraphToMarkdown(element);
7168
7348
  if (mdLine !== null) {
7169
7349
  lines.push(mdLine);
7170
7350
  lines.push('');
7171
7351
  }
7172
7352
  }
7173
- else if (element instanceof Table_1.Table) {
7353
+ else if (element instanceof Table_js_1.Table) {
7174
7354
  lines.push(...this.tableToMarkdown(element));
7175
7355
  lines.push('');
7176
7356
  }
@@ -7198,7 +7378,7 @@ class Document {
7198
7378
  paragraphContentToMarkdown(para) {
7199
7379
  const parts = [];
7200
7380
  for (const item of para.getContent()) {
7201
- if (item instanceof Run_1.Run) {
7381
+ if (item instanceof Run_js_1.Run) {
7202
7382
  const runText = item.getText();
7203
7383
  if (!runText)
7204
7384
  continue;
@@ -7222,7 +7402,7 @@ class Document {
7222
7402
  }
7223
7403
  parts.push(md);
7224
7404
  }
7225
- else if (item instanceof Hyperlink_1.Hyperlink) {
7405
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
7226
7406
  const url = item.getUrl() || '';
7227
7407
  const linkText = item.getText() || url;
7228
7408
  parts.push(`[${linkText}](${url})`);
@@ -7261,7 +7441,7 @@ class Document {
7261
7441
  }
7262
7442
  };
7263
7443
  for (const element of this.bodyElements) {
7264
- if (element instanceof Paragraph_1.Paragraph) {
7444
+ if (element instanceof Paragraph_js_1.Paragraph) {
7265
7445
  const headingLevel = element.detectHeadingLevel();
7266
7446
  const style = element.getStyle();
7267
7447
  const isBullet = style?.toLowerCase().includes('bullet') || style === 'ListBullet';
@@ -7289,7 +7469,7 @@ class Document {
7289
7469
  }
7290
7470
  }
7291
7471
  }
7292
- else if (element instanceof Table_1.Table) {
7472
+ else if (element instanceof Table_js_1.Table) {
7293
7473
  closeList();
7294
7474
  parts.push(this.tableToHTML(element));
7295
7475
  }
@@ -7316,7 +7496,7 @@ class Document {
7316
7496
  paragraphContentToHTML(para) {
7317
7497
  const parts = [];
7318
7498
  for (const item of para.getContent()) {
7319
- if (item instanceof Run_1.Run) {
7499
+ if (item instanceof Run_js_1.Run) {
7320
7500
  const text = item.getText();
7321
7501
  if (!text)
7322
7502
  continue;
@@ -7340,7 +7520,7 @@ class Document {
7340
7520
  }
7341
7521
  parts.push(html);
7342
7522
  }
7343
- else if (item instanceof Hyperlink_1.Hyperlink) {
7523
+ else if (item instanceof Hyperlink_js_1.Hyperlink) {
7344
7524
  const url = this.escapeHTML(item.getUrl() || '');
7345
7525
  const linkText = this.escapeHTML(item.getText() || url);
7346
7526
  parts.push(`<a href="${url}">${linkText}</a>`);
@@ -7393,18 +7573,18 @@ class Document {
7393
7573
  tables: tables.length,
7394
7574
  images: this.imageManager.getImageCount(),
7395
7575
  headings: headings.length,
7396
- 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,
7397
7577
  },
7398
7578
  headings: headings.map((h) => ({ level: h.level, text: h.text })),
7399
7579
  body: this.bodyElements.map((el) => {
7400
- if (el instanceof Paragraph_1.Paragraph) {
7580
+ if (el instanceof Paragraph_js_1.Paragraph) {
7401
7581
  return {
7402
7582
  type: 'paragraph',
7403
7583
  text: el.getText(),
7404
7584
  style: el.getStyle(),
7405
7585
  };
7406
7586
  }
7407
- if (el instanceof Table_1.Table) {
7587
+ if (el instanceof Table_js_1.Table) {
7408
7588
  return {
7409
7589
  type: 'table',
7410
7590
  text: `${el.getRows().length} rows x ${el.getRows()[0]?.getCells().length ?? 0} cols`,
@@ -7418,16 +7598,16 @@ class Document {
7418
7598
  const results = [];
7419
7599
  for (const para of this.getAllParagraphs()) {
7420
7600
  for (const item of para.getContent()) {
7421
- if (item instanceof ImageRun_1.ImageRun) {
7601
+ if (item instanceof ImageRun_js_1.ImageRun) {
7422
7602
  const image = item.getImageElement();
7423
7603
  const altText = image.getAltText();
7424
7604
  if (!altText || altText === 'Image') {
7425
7605
  results.push(image);
7426
7606
  }
7427
7607
  }
7428
- if (item instanceof Revision_1.Revision) {
7608
+ if (item instanceof Revision_js_1.Revision) {
7429
7609
  for (const revContent of item.getContent()) {
7430
- if (revContent instanceof ImageRun_1.ImageRun) {
7610
+ if (revContent instanceof ImageRun_js_1.ImageRun) {
7431
7611
  const image = revContent.getImageElement();
7432
7612
  const altText = image.getAltText();
7433
7613
  if (!altText || altText === 'Image') {
@@ -7462,7 +7642,7 @@ class Document {
7462
7642
  content: [],
7463
7643
  };
7464
7644
  for (const element of this.bodyElements) {
7465
- if (element instanceof Paragraph_1.Paragraph) {
7645
+ if (element instanceof Paragraph_js_1.Paragraph) {
7466
7646
  const headingLevel = element.detectHeadingLevel();
7467
7647
  if (headingLevel !== null && headingLevel <= maxLevel) {
7468
7648
  if (current.heading || current.content.length > 0) {
@@ -7497,18 +7677,19 @@ class Document {
7497
7677
  }
7498
7678
  if (index >= 0 && index < this.bodyElements.length) {
7499
7679
  const element = this.bodyElements[index];
7500
- if (element instanceof Paragraph_1.Paragraph) {
7680
+ if (element instanceof Paragraph_js_1.Paragraph) {
7501
7681
  if (this.trackChangesEnabled && this.trackingContext.isEnabled()) {
7502
7682
  const runs = element.getRuns();
7503
7683
  if (runs.length > 0) {
7504
7684
  const author = this.trackingContext.getAuthor();
7505
- const deletion = Revision_1.Revision.createDeletion(author, runs);
7685
+ const deletion = Revision_js_1.Revision.createDeletion(author, runs);
7506
7686
  this.trackingContext.getRevisionManager().register(deletion);
7507
7687
  element.addRevision(deletion);
7508
7688
  }
7509
7689
  return true;
7510
7690
  }
7511
7691
  this.bodyElements.splice(index, 1);
7692
+ this._emitElementRemoved(element);
7512
7693
  return true;
7513
7694
  }
7514
7695
  }
@@ -7533,21 +7714,22 @@ class Document {
7533
7714
  }
7534
7715
  if (index >= 0 && index < this.bodyElements.length) {
7535
7716
  const element = this.bodyElements[index];
7536
- if (element instanceof Table_1.Table) {
7717
+ if (element instanceof Table_js_1.Table) {
7537
7718
  this.bodyElements.splice(index, 1);
7719
+ this._emitElementRemoved(element);
7538
7720
  return true;
7539
7721
  }
7540
7722
  }
7541
7723
  return false;
7542
7724
  }
7543
7725
  validateParagraph(paragraph) {
7544
- if (!(paragraph instanceof Paragraph_1.Paragraph)) {
7726
+ if (!(paragraph instanceof Paragraph_js_1.Paragraph)) {
7545
7727
  throw new Error('insertParagraphAt: parameter must be a Paragraph instance');
7546
7728
  }
7547
7729
  const paraId = paragraph.getFormatting().paraId;
7548
7730
  if (paraId) {
7549
7731
  const existingIds = this.bodyElements
7550
- .filter((el) => el instanceof Paragraph_1.Paragraph)
7732
+ .filter((el) => el instanceof Paragraph_js_1.Paragraph)
7551
7733
  .map((p) => p.getFormatting().paraId)
7552
7734
  .filter((id) => id === paraId);
7553
7735
  if (existingIds.length > 0) {
@@ -7556,15 +7738,15 @@ class Document {
7556
7738
  }
7557
7739
  const style = paragraph.getFormatting().style;
7558
7740
  if (style && !this.stylesManager.hasStyle(style)) {
7559
- 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.`);
7560
7742
  }
7561
7743
  const numbering = paragraph.getFormatting().numbering;
7562
7744
  if (numbering && !this.numberingManager.hasInstance(numbering.numId)) {
7563
- 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.`);
7564
7746
  }
7565
7747
  }
7566
7748
  validateTable(table) {
7567
- if (!(table instanceof Table_1.Table)) {
7749
+ if (!(table instanceof Table_js_1.Table)) {
7568
7750
  throw new Error('insertTableAt: parameter must be a Table instance');
7569
7751
  }
7570
7752
  const rows = table.getRows();
@@ -7577,11 +7759,11 @@ class Document {
7577
7759
  }
7578
7760
  const tableStyle = table.getFormatting().style;
7579
7761
  if (tableStyle && !this.stylesManager.hasStyle(tableStyle)) {
7580
- 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.`);
7581
7763
  }
7582
7764
  }
7583
7765
  validateToc(toc) {
7584
- if (!(toc instanceof TableOfContentsElement_1.TableOfContentsElement)) {
7766
+ if (!(toc instanceof TableOfContentsElement_js_1.TableOfContentsElement)) {
7585
7767
  throw new Error('insertTocAt: parameter must be a TableOfContentsElement instance');
7586
7768
  }
7587
7769
  const hasHeadings = [
@@ -7596,7 +7778,7 @@ class Document {
7596
7778
  'Heading9',
7597
7779
  ].some((style) => this.stylesManager.hasStyle(style));
7598
7780
  if (!hasHeadings) {
7599
- 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.');
7600
7782
  }
7601
7783
  }
7602
7784
  normalizeIndex(index) {
@@ -7612,12 +7794,14 @@ class Document {
7612
7794
  this.validateParagraph(paragraph);
7613
7795
  index = this.normalizeIndex(index);
7614
7796
  this.bodyElements.splice(index, 0, paragraph);
7797
+ this._emitElementAdded(paragraph, index);
7615
7798
  return this;
7616
7799
  }
7617
7800
  insertTableAt(index, table) {
7618
7801
  this.validateTable(table);
7619
7802
  index = this.normalizeIndex(index);
7620
7803
  this.bodyElements.splice(index, 0, table);
7804
+ this._emitElementAdded(table, index);
7621
7805
  return this;
7622
7806
  }
7623
7807
  insertTocAt(index, toc) {
@@ -7629,7 +7813,7 @@ class Document {
7629
7813
  replaceParagraphAt(index, paragraph) {
7630
7814
  if (index >= 0 && index < this.bodyElements.length) {
7631
7815
  const element = this.bodyElements[index];
7632
- if (element instanceof Paragraph_1.Paragraph) {
7816
+ if (element instanceof Paragraph_js_1.Paragraph) {
7633
7817
  this.validateParagraph(paragraph);
7634
7818
  this.bodyElements[index] = paragraph;
7635
7819
  return true;
@@ -7640,7 +7824,7 @@ class Document {
7640
7824
  replaceTableAt(index, table) {
7641
7825
  if (index >= 0 && index < this.bodyElements.length) {
7642
7826
  const element = this.bodyElements[index];
7643
- if (element instanceof Table_1.Table) {
7827
+ if (element instanceof Table_js_1.Table) {
7644
7828
  this.validateTable(table);
7645
7829
  this.bodyElements[index] = table;
7646
7830
  return true;
@@ -7674,7 +7858,7 @@ class Document {
7674
7858
  removeTocAt(index) {
7675
7859
  if (index >= 0 && index < this.bodyElements.length) {
7676
7860
  const element = this.bodyElements[index];
7677
- if (element instanceof TableOfContentsElement_1.TableOfContentsElement) {
7861
+ if (element instanceof TableOfContentsElement_js_1.TableOfContentsElement) {
7678
7862
  this.bodyElements.splice(index, 1);
7679
7863
  return true;
7680
7864
  }
@@ -7689,7 +7873,8 @@ class Document {
7689
7873
  }
7690
7874
  removeBodyElementAt(index) {
7691
7875
  if (index >= 0 && index < this.bodyElements.length) {
7692
- this.bodyElements.splice(index, 1);
7876
+ const [removed] = this.bodyElements.splice(index, 1);
7877
+ this._emitElementRemoved(removed);
7693
7878
  return true;
7694
7879
  }
7695
7880
  return false;
@@ -7699,6 +7884,7 @@ class Document {
7699
7884
  if (index === -1)
7700
7885
  return false;
7701
7886
  this.bodyElements.splice(index, 1);
7887
+ this._emitElementRemoved(element);
7702
7888
  return true;
7703
7889
  }
7704
7890
  insertAfter(reference, element) {
@@ -7706,6 +7892,7 @@ class Document {
7706
7892
  if (index === -1)
7707
7893
  return false;
7708
7894
  this.bodyElements.splice(index + 1, 0, element);
7895
+ this._emitElementAdded(element, index + 1);
7709
7896
  return true;
7710
7897
  }
7711
7898
  insertBefore(reference, element) {
@@ -7713,6 +7900,7 @@ class Document {
7713
7900
  if (index === -1)
7714
7901
  return false;
7715
7902
  this.bodyElements.splice(index, 0, element);
7903
+ this._emitElementAdded(element, index);
7716
7904
  return true;
7717
7905
  }
7718
7906
  replaceElement(oldElement, newElement) {
@@ -7720,11 +7908,14 @@ class Document {
7720
7908
  if (index === -1)
7721
7909
  return false;
7722
7910
  this.bodyElements[index] = newElement;
7911
+ this._emitElementRemoved(oldElement);
7912
+ this._emitElementAdded(newElement, index);
7723
7913
  return true;
7724
7914
  }
7725
7915
  insertBodyElementAt(index, element) {
7726
7916
  const clampedIndex = Math.max(0, Math.min(index, this.bodyElements.length));
7727
7917
  this.bodyElements.splice(clampedIndex, 0, element);
7918
+ this._emitElementAdded(element, clampedIndex);
7728
7919
  }
7729
7920
  setBodyElements(elements) {
7730
7921
  this.bodyElements = elements;
@@ -7733,12 +7924,12 @@ class Document {
7733
7924
  const hyperlinks = [];
7734
7925
  const extractHyperlinksFromParagraph = (para) => {
7735
7926
  for (const content of para.getContent()) {
7736
- if (content instanceof Hyperlink_1.Hyperlink) {
7927
+ if (content instanceof Hyperlink_js_1.Hyperlink) {
7737
7928
  hyperlinks.push({ hyperlink: content, paragraph: para });
7738
7929
  }
7739
- else if (content instanceof Revision_1.Revision) {
7930
+ else if (content instanceof Revision_js_1.Revision) {
7740
7931
  for (const revContent of content.getContent()) {
7741
- if (revContent instanceof Hyperlink_1.Hyperlink) {
7932
+ if (revContent instanceof Hyperlink_js_1.Hyperlink) {
7742
7933
  hyperlinks.push({ hyperlink: revContent, paragraph: para });
7743
7934
  }
7744
7935
  }
@@ -7751,7 +7942,7 @@ class Document {
7751
7942
  for (const table of this.getTables()) {
7752
7943
  for (const row of table.getRows()) {
7753
7944
  for (const cell of row.getCells()) {
7754
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
7945
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7755
7946
  for (const para of cellParagraphs) {
7756
7947
  extractHyperlinksFromParagraph(para);
7757
7948
  }
@@ -7764,14 +7955,14 @@ class Document {
7764
7955
  const ids = new Set();
7765
7956
  const scanParagraph = (para) => {
7766
7957
  for (const item of para.getContent()) {
7767
- if (item instanceof Hyperlink_1.Hyperlink) {
7958
+ if (item instanceof Hyperlink_js_1.Hyperlink) {
7768
7959
  const relId = item.getRelationshipId();
7769
7960
  if (relId)
7770
7961
  ids.add(relId);
7771
7962
  }
7772
- if (item instanceof Revision_1.Revision) {
7963
+ if (item instanceof Revision_js_1.Revision) {
7773
7964
  for (const revContent of item.getContent()) {
7774
- if (revContent instanceof Hyperlink_1.Hyperlink) {
7965
+ if (revContent instanceof Hyperlink_js_1.Hyperlink) {
7775
7966
  const relId = revContent.getRelationshipId();
7776
7967
  if (relId)
7777
7968
  ids.add(relId);
@@ -7781,10 +7972,10 @@ class Document {
7781
7972
  }
7782
7973
  };
7783
7974
  const scanElement = (element) => {
7784
- if (element instanceof Paragraph_1.Paragraph) {
7975
+ if (element instanceof Paragraph_js_1.Paragraph) {
7785
7976
  scanParagraph(element);
7786
7977
  }
7787
- else if (element instanceof Table_1.Table) {
7978
+ else if (element instanceof Table_js_1.Table) {
7788
7979
  for (let row = 0; row < element.getRowCount(); row++) {
7789
7980
  for (let col = 0; col < element.getColumnCount(); col++) {
7790
7981
  const cell = element.getCell(row, col);
@@ -7803,7 +7994,7 @@ class Document {
7803
7994
  }
7804
7995
  }
7805
7996
  }
7806
- else if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
7997
+ else if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
7807
7998
  for (const item of element.getContent()) {
7808
7999
  scanElement(item);
7809
8000
  }
@@ -7837,12 +8028,12 @@ class Document {
7837
8028
  defragmentHyperlinks(options) {
7838
8029
  const { resetFormatting = false, cleanupRelationships = false } = options || {};
7839
8030
  if (this.trackChangesEnabled) {
7840
- logger_1.defaultLogger.warn('defragmentHyperlinks skipped: track changes is enabled. ' +
8031
+ logger_js_1.defaultLogger.warn('defragmentHyperlinks skipped: track changes is enabled. ' +
7841
8032
  'Call defragmentHyperlinks before enableTrackChanges() to avoid field corruption.');
7842
8033
  return 0;
7843
8034
  }
7844
8035
  let mergedCount = 0;
7845
- const parser = new DocumentParser_1.DocumentParser();
8036
+ const parser = new DocumentParser_js_1.DocumentParser();
7846
8037
  for (const paragraph of this.getAllParagraphs()) {
7847
8038
  const originalContent = paragraph.getContent();
7848
8039
  parser.mergeConsecutiveHyperlinks(paragraph, resetFormatting);
@@ -7854,7 +8045,7 @@ class Document {
7854
8045
  for (const table of this.getTables()) {
7855
8046
  for (const row of table.getRows()) {
7856
8047
  for (const cell of row.getCells()) {
7857
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8048
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7858
8049
  for (const para of cellParagraphs) {
7859
8050
  const originalContent = para.getContent();
7860
8051
  parser.mergeConsecutiveHyperlinks(para, resetFormatting);
@@ -7870,7 +8061,7 @@ class Document {
7870
8061
  const referencedIds = this.collectAllReferencedHyperlinkIds();
7871
8062
  const removedCount = this.relationshipManager.removeOrphanedHyperlinks(referencedIds);
7872
8063
  if (removedCount > 0) {
7873
- logger_1.defaultLogger.info(`Cleaned up ${removedCount} orphaned hyperlink relationship(s)`);
8064
+ logger_js_1.defaultLogger.info(`Cleaned up ${removedCount} orphaned hyperlink relationship(s)`);
7874
8065
  }
7875
8066
  }
7876
8067
  return mergedCount;
@@ -7905,7 +8096,7 @@ class Document {
7905
8096
  for (const table of this.getTables()) {
7906
8097
  for (const row of table.getRows()) {
7907
8098
  for (const cell of row.getCells()) {
7908
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8099
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7909
8100
  for (const para of cellParagraphs) {
7910
8101
  for (const field of para.getFields()) {
7911
8102
  results.push({ field, paragraph: para, table });
@@ -7942,7 +8133,7 @@ class Document {
7942
8133
  continue;
7943
8134
  }
7944
8135
  const extension = image.getExtension();
7945
- const result = (0, ImageOptimizer_1.optimizeImage)(originalData, extension);
8136
+ const result = (0, ImageOptimizer_js_1.optimizeImage)(originalData, extension);
7946
8137
  if (!result)
7947
8138
  continue;
7948
8139
  const saved = originalData.length - result.data.length;
@@ -7993,7 +8184,7 @@ class Document {
7993
8184
  for (const table of this.getTables()) {
7994
8185
  for (const row of table.getRows()) {
7995
8186
  for (const cell of row.getCells()) {
7996
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8187
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
7997
8188
  for (const para of cellParagraphs) {
7998
8189
  runs.push(...para.getRuns());
7999
8190
  }
@@ -8019,7 +8210,7 @@ class Document {
8019
8210
  let modified = false;
8020
8211
  const content = [...para.getContent()];
8021
8212
  for (const item of content) {
8022
- if (item instanceof Run_1.Run) {
8213
+ if (item instanceof Run_js_1.Run) {
8023
8214
  const text = item.getText();
8024
8215
  const matches = [...text.matchAll(emailRegex)];
8025
8216
  if (matches.length > 0) {
@@ -8045,15 +8236,15 @@ class Document {
8045
8236
  const startIndex = match.index;
8046
8237
  if (startIndex > lastIndex) {
8047
8238
  const beforeText = text.slice(lastIndex, startIndex);
8048
- result.push(new Run_1.Run(beforeText, originalFormatting));
8239
+ result.push(new Run_js_1.Run(beforeText, originalFormatting));
8049
8240
  }
8050
- const hyperlink = Hyperlink_1.Hyperlink.createEmail(email, email, formatting);
8241
+ const hyperlink = Hyperlink_js_1.Hyperlink.createEmail(email, email, formatting);
8051
8242
  result.push(hyperlink);
8052
8243
  lastIndex = startIndex + email.length;
8053
8244
  }
8054
8245
  if (lastIndex < text.length) {
8055
8246
  const afterText = text.slice(lastIndex);
8056
- result.push(new Run_1.Run(afterText, originalFormatting));
8247
+ result.push(new Run_js_1.Run(afterText, originalFormatting));
8057
8248
  }
8058
8249
  return result;
8059
8250
  }
@@ -8085,7 +8276,7 @@ class Document {
8085
8276
  let lastWasEmpty = false;
8086
8277
  const toRemove = [];
8087
8278
  this.bodyElements.forEach((element, index) => {
8088
- if (element instanceof Paragraph_1.Paragraph) {
8279
+ if (element instanceof Paragraph_js_1.Paragraph) {
8089
8280
  const isEmpty = element.getText().trim() === '';
8090
8281
  if (isEmpty && lastWasEmpty) {
8091
8282
  toRemove.push(index);
@@ -8134,7 +8325,7 @@ class Document {
8134
8325
  for (const table of this.getTables()) {
8135
8326
  for (const row of table.getRows()) {
8136
8327
  for (const cell of row.getCells()) {
8137
- const cellParagraphs = cell instanceof TableCell_1.TableCell ? cell.getParagraphs() : [];
8328
+ const cellParagraphs = cell instanceof TableCell_js_1.TableCell ? cell.getParagraphs() : [];
8138
8329
  for (const para of cellParagraphs) {
8139
8330
  if (standardParagraphSpacing) {
8140
8331
  if (standardParagraphSpacing.before !== undefined) {
@@ -8184,16 +8375,16 @@ class Document {
8184
8375
  const unwrappedBody = [];
8185
8376
  const unwrapSDT = (sdt, target) => {
8186
8377
  for (const item of sdt.getContent()) {
8187
- 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) {
8188
8379
  target.push(item);
8189
8380
  }
8190
- else if (item instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
8381
+ else if (item instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
8191
8382
  unwrapSDT(item, target);
8192
8383
  }
8193
8384
  }
8194
8385
  };
8195
8386
  for (const element of this.bodyElements) {
8196
- if (element instanceof StructuredDocumentTag_1.StructuredDocumentTag) {
8387
+ if (element instanceof StructuredDocumentTag_js_1.StructuredDocumentTag) {
8197
8388
  unwrapSDT(element, unwrappedBody);
8198
8389
  }
8199
8390
  else {