docxmlater 10.1.3 → 10.1.5

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 (371) hide show
  1. package/README.md +759 -754
  2. package/dist/constants/legacyCompatFlags.js +1 -1
  3. package/dist/constants/legacyCompatFlags.js.map +1 -1
  4. package/dist/constants/limits.js.map +1 -1
  5. package/dist/core/Document.d.ts +50 -50
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +483 -471
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +9 -9
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +1 -1
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentGenerator.d.ts +11 -11
  14. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  15. package/dist/core/DocumentGenerator.js +251 -251
  16. package/dist/core/DocumentGenerator.js.map +1 -1
  17. package/dist/core/DocumentIdManager.js.map +1 -1
  18. package/dist/core/DocumentParser.d.ts +15 -15
  19. package/dist/core/DocumentParser.d.ts.map +1 -1
  20. package/dist/core/DocumentParser.js +2123 -2155
  21. package/dist/core/DocumentParser.js.map +1 -1
  22. package/dist/core/DocumentValidator.d.ts.map +1 -1
  23. package/dist/core/DocumentValidator.js +2 -5
  24. package/dist/core/DocumentValidator.js.map +1 -1
  25. package/dist/core/Relationship.js.map +1 -1
  26. package/dist/core/RelationshipManager.d.ts.map +1 -1
  27. package/dist/core/RelationshipManager.js +3 -3
  28. package/dist/core/RelationshipManager.js.map +1 -1
  29. package/dist/elements/AlternateContent.js.map +1 -1
  30. package/dist/elements/Bookmark.d.ts.map +1 -1
  31. package/dist/elements/Bookmark.js +3 -1
  32. package/dist/elements/Bookmark.js.map +1 -1
  33. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  34. package/dist/elements/BookmarkManager.js.map +1 -1
  35. package/dist/elements/Comment.d.ts.map +1 -1
  36. package/dist/elements/Comment.js +9 -6
  37. package/dist/elements/Comment.js.map +1 -1
  38. package/dist/elements/CommentManager.d.ts.map +1 -1
  39. package/dist/elements/CommentManager.js +18 -17
  40. package/dist/elements/CommentManager.js.map +1 -1
  41. package/dist/elements/CommonTypes.d.ts +21 -21
  42. package/dist/elements/CommonTypes.d.ts.map +1 -1
  43. package/dist/elements/CommonTypes.js +56 -56
  44. package/dist/elements/CommonTypes.js.map +1 -1
  45. package/dist/elements/CustomXml.js.map +1 -1
  46. package/dist/elements/Endnote.d.ts.map +1 -1
  47. package/dist/elements/Endnote.js +6 -6
  48. package/dist/elements/Endnote.js.map +1 -1
  49. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  50. package/dist/elements/EndnoteManager.js +6 -7
  51. package/dist/elements/EndnoteManager.js.map +1 -1
  52. package/dist/elements/Field.d.ts.map +1 -1
  53. package/dist/elements/Field.js +82 -25
  54. package/dist/elements/Field.js.map +1 -1
  55. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  56. package/dist/elements/FieldHelpers.js.map +1 -1
  57. package/dist/elements/FontManager.d.ts.map +1 -1
  58. package/dist/elements/FontManager.js +1 -1
  59. package/dist/elements/FontManager.js.map +1 -1
  60. package/dist/elements/Footer.js +2 -2
  61. package/dist/elements/Footer.js.map +1 -1
  62. package/dist/elements/Footnote.d.ts.map +1 -1
  63. package/dist/elements/Footnote.js +6 -6
  64. package/dist/elements/Footnote.js.map +1 -1
  65. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  66. package/dist/elements/FootnoteManager.js +6 -7
  67. package/dist/elements/FootnoteManager.js.map +1 -1
  68. package/dist/elements/Header.js +2 -2
  69. package/dist/elements/Header.js.map +1 -1
  70. package/dist/elements/HeaderFooterManager.js.map +1 -1
  71. package/dist/elements/Hyperlink.d.ts +5 -3
  72. package/dist/elements/Hyperlink.d.ts.map +1 -1
  73. package/dist/elements/Hyperlink.js +134 -76
  74. package/dist/elements/Hyperlink.js.map +1 -1
  75. package/dist/elements/Image.d.ts.map +1 -1
  76. package/dist/elements/Image.js +238 -106
  77. package/dist/elements/Image.js.map +1 -1
  78. package/dist/elements/ImageManager.d.ts.map +1 -1
  79. package/dist/elements/ImageManager.js +1 -1
  80. package/dist/elements/ImageManager.js.map +1 -1
  81. package/dist/elements/ImageRun.js +1 -1
  82. package/dist/elements/ImageRun.js.map +1 -1
  83. package/dist/elements/MathElement.js.map +1 -1
  84. package/dist/elements/Paragraph.d.ts +24 -24
  85. package/dist/elements/Paragraph.d.ts.map +1 -1
  86. package/dist/elements/Paragraph.js +181 -188
  87. package/dist/elements/Paragraph.js.map +1 -1
  88. package/dist/elements/PreservedElement.js.map +1 -1
  89. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  90. package/dist/elements/PropertyChangeTypes.js +6 -6
  91. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  92. package/dist/elements/RangeMarker.d.ts.map +1 -1
  93. package/dist/elements/RangeMarker.js.map +1 -1
  94. package/dist/elements/Revision.d.ts.map +1 -1
  95. package/dist/elements/Revision.js +4 -5
  96. package/dist/elements/Revision.js.map +1 -1
  97. package/dist/elements/RevisionContent.js.map +1 -1
  98. package/dist/elements/RevisionManager.d.ts.map +1 -1
  99. package/dist/elements/RevisionManager.js +40 -48
  100. package/dist/elements/RevisionManager.js.map +1 -1
  101. package/dist/elements/Run.d.ts +16 -16
  102. package/dist/elements/Run.d.ts.map +1 -1
  103. package/dist/elements/Run.js +256 -238
  104. package/dist/elements/Run.js.map +1 -1
  105. package/dist/elements/Section.d.ts.map +1 -1
  106. package/dist/elements/Section.js +36 -11
  107. package/dist/elements/Section.js.map +1 -1
  108. package/dist/elements/Shape.d.ts.map +1 -1
  109. package/dist/elements/Shape.js.map +1 -1
  110. package/dist/elements/StructuredDocumentTag.d.ts +6 -6
  111. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  112. package/dist/elements/StructuredDocumentTag.js +99 -104
  113. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  114. package/dist/elements/Table.d.ts +11 -11
  115. package/dist/elements/Table.d.ts.map +1 -1
  116. package/dist/elements/Table.js +102 -107
  117. package/dist/elements/Table.js.map +1 -1
  118. package/dist/elements/TableCell.d.ts +10 -10
  119. package/dist/elements/TableCell.d.ts.map +1 -1
  120. package/dist/elements/TableCell.js +105 -106
  121. package/dist/elements/TableCell.js.map +1 -1
  122. package/dist/elements/TableGridChange.d.ts.map +1 -1
  123. package/dist/elements/TableGridChange.js.map +1 -1
  124. package/dist/elements/TableOfContents.d.ts.map +1 -1
  125. package/dist/elements/TableOfContents.js +4 -4
  126. package/dist/elements/TableOfContents.js.map +1 -1
  127. package/dist/elements/TableOfContentsElement.js.map +1 -1
  128. package/dist/elements/TableRow.d.ts.map +1 -1
  129. package/dist/elements/TableRow.js +13 -6
  130. package/dist/elements/TableRow.js.map +1 -1
  131. package/dist/elements/TextBox.d.ts.map +1 -1
  132. package/dist/elements/TextBox.js +3 -5
  133. package/dist/elements/TextBox.js.map +1 -1
  134. package/dist/formatting/AbstractNumbering.d.ts +4 -4
  135. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  136. package/dist/formatting/AbstractNumbering.js +54 -49
  137. package/dist/formatting/AbstractNumbering.js.map +1 -1
  138. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  139. package/dist/formatting/NumberingInstance.js +1 -3
  140. package/dist/formatting/NumberingInstance.js.map +1 -1
  141. package/dist/formatting/NumberingLevel.d.ts +5 -5
  142. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  143. package/dist/formatting/NumberingLevel.js +119 -125
  144. package/dist/formatting/NumberingLevel.js.map +1 -1
  145. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  146. package/dist/formatting/NumberingManager.js +9 -9
  147. package/dist/formatting/NumberingManager.js.map +1 -1
  148. package/dist/formatting/Style.d.ts +11 -11
  149. package/dist/formatting/Style.d.ts.map +1 -1
  150. package/dist/formatting/Style.js +219 -247
  151. package/dist/formatting/Style.js.map +1 -1
  152. package/dist/formatting/StylesManager.d.ts +2 -2
  153. package/dist/formatting/StylesManager.d.ts.map +1 -1
  154. package/dist/formatting/StylesManager.js +96 -102
  155. package/dist/formatting/StylesManager.js.map +1 -1
  156. package/dist/helpers/CleanupHelper.d.ts +1 -1
  157. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  158. package/dist/helpers/CleanupHelper.js +6 -6
  159. package/dist/helpers/CleanupHelper.js.map +1 -1
  160. package/dist/images/ImageOptimizer.js +7 -7
  161. package/dist/images/ImageOptimizer.js.map +1 -1
  162. package/dist/index.d.ts +9 -9
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js.map +1 -1
  165. package/dist/managers/DrawingManager.js.map +1 -1
  166. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  167. package/dist/tracking/DocumentTrackingContext.js +23 -7
  168. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  169. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  170. package/dist/tracking/TrackingContext.js.map +1 -1
  171. package/dist/types/compatibility-types.js.map +1 -1
  172. package/dist/types/formatting.js.map +1 -1
  173. package/dist/types/list-types.d.ts +6 -6
  174. package/dist/types/list-types.js.map +1 -1
  175. package/dist/types/settings-types.js.map +1 -1
  176. package/dist/types/styleConfig.d.ts +2 -2
  177. package/dist/types/styleConfig.js.map +1 -1
  178. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  179. package/dist/utils/ChangelogGenerator.js +97 -101
  180. package/dist/utils/ChangelogGenerator.js.map +1 -1
  181. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  182. package/dist/utils/CompatibilityUpgrader.js +1 -1
  183. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  184. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  185. package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
  186. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  187. package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
  188. package/dist/utils/MoveOperationHelper.js +1 -1
  189. package/dist/utils/MoveOperationHelper.js.map +1 -1
  190. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
  191. package/dist/utils/RevisionAwareProcessor.js +2 -4
  192. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  193. package/dist/utils/RevisionWalker.d.ts.map +1 -1
  194. package/dist/utils/RevisionWalker.js +4 -12
  195. package/dist/utils/RevisionWalker.js.map +1 -1
  196. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  197. package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
  198. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  199. package/dist/utils/ShadingResolver.d.ts.map +1 -1
  200. package/dist/utils/ShadingResolver.js +1 -1
  201. package/dist/utils/ShadingResolver.js.map +1 -1
  202. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  203. package/dist/utils/acceptRevisions.js +23 -12
  204. package/dist/utils/acceptRevisions.js.map +1 -1
  205. package/dist/utils/cnfStyleDecoder.d.ts +1 -1
  206. package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
  207. package/dist/utils/cnfStyleDecoder.js +40 -40
  208. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  209. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  210. package/dist/utils/corruptionDetection.js.map +1 -1
  211. package/dist/utils/dateFormatting.js.map +1 -1
  212. package/dist/utils/deepClone.js +1 -1
  213. package/dist/utils/deepClone.js.map +1 -1
  214. package/dist/utils/diagnostics.d.ts.map +1 -1
  215. package/dist/utils/diagnostics.js +1 -1
  216. package/dist/utils/diagnostics.js.map +1 -1
  217. package/dist/utils/errorHandling.js.map +1 -1
  218. package/dist/utils/formatting.d.ts.map +1 -1
  219. package/dist/utils/formatting.js +10 -2
  220. package/dist/utils/formatting.js.map +1 -1
  221. package/dist/utils/list-detection.d.ts +2 -2
  222. package/dist/utils/list-detection.d.ts.map +1 -1
  223. package/dist/utils/list-detection.js +21 -23
  224. package/dist/utils/list-detection.js.map +1 -1
  225. package/dist/utils/logger.d.ts.map +1 -1
  226. package/dist/utils/logger.js +12 -7
  227. package/dist/utils/logger.js.map +1 -1
  228. package/dist/utils/parsingHelpers.js.map +1 -1
  229. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  230. package/dist/utils/stripTrackedChanges.js +3 -3
  231. package/dist/utils/stripTrackedChanges.js.map +1 -1
  232. package/dist/utils/textDiff.d.ts +1 -1
  233. package/dist/utils/textDiff.js +8 -8
  234. package/dist/utils/textDiff.js.map +1 -1
  235. package/dist/utils/units.js.map +1 -1
  236. package/dist/utils/validation.d.ts.map +1 -1
  237. package/dist/utils/validation.js +24 -7
  238. package/dist/utils/validation.js.map +1 -1
  239. package/dist/utils/xmlSanitization.d.ts.map +1 -1
  240. package/dist/utils/xmlSanitization.js +3 -3
  241. package/dist/utils/xmlSanitization.js.map +1 -1
  242. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  243. package/dist/validation/RevisionAutoFixer.js +5 -5
  244. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  245. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  246. package/dist/validation/RevisionValidator.js +7 -9
  247. package/dist/validation/RevisionValidator.js.map +1 -1
  248. package/dist/validation/ValidationRules.js +3 -3
  249. package/dist/validation/ValidationRules.js.map +1 -1
  250. package/dist/validation/index.js.map +1 -1
  251. package/dist/xml/XMLBuilder.d.ts +1 -1
  252. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  253. package/dist/xml/XMLBuilder.js +98 -100
  254. package/dist/xml/XMLBuilder.js.map +1 -1
  255. package/dist/xml/XMLParser.d.ts.map +1 -1
  256. package/dist/xml/XMLParser.js +61 -66
  257. package/dist/xml/XMLParser.js.map +1 -1
  258. package/dist/zip/ZipHandler.d.ts.map +1 -1
  259. package/dist/zip/ZipHandler.js.map +1 -1
  260. package/dist/zip/ZipReader.d.ts.map +1 -1
  261. package/dist/zip/ZipReader.js +1 -3
  262. package/dist/zip/ZipReader.js.map +1 -1
  263. package/dist/zip/ZipWriter.d.ts +1 -1
  264. package/dist/zip/ZipWriter.d.ts.map +1 -1
  265. package/dist/zip/ZipWriter.js +28 -36
  266. package/dist/zip/ZipWriter.js.map +1 -1
  267. package/dist/zip/types.js +1 -1
  268. package/dist/zip/types.js.map +1 -1
  269. package/package.json +92 -92
  270. package/src/__tests__/helper-methods.test.ts +512 -512
  271. package/src/constants/legacyCompatFlags.ts +138 -138
  272. package/src/constants/limits.ts +50 -50
  273. package/src/core/Document.ts +985 -1145
  274. package/src/core/DocumentContent.ts +461 -467
  275. package/src/core/DocumentGenerator.ts +1133 -1104
  276. package/src/core/DocumentIdManager.ts +158 -158
  277. package/src/core/DocumentParser.ts +2347 -2716
  278. package/src/core/DocumentValidator.ts +363 -372
  279. package/src/core/Relationship.ts +367 -367
  280. package/src/core/RelationshipManager.ts +429 -428
  281. package/src/elements/AlternateContent.ts +42 -42
  282. package/src/elements/Bookmark.ts +212 -210
  283. package/src/elements/BookmarkManager.ts +247 -250
  284. package/src/elements/Comment.ts +356 -359
  285. package/src/elements/CommentManager.ts +499 -502
  286. package/src/elements/CommonTypes.ts +524 -549
  287. package/src/elements/CustomXml.ts +36 -36
  288. package/src/elements/Endnote.ts +221 -217
  289. package/src/elements/EndnoteManager.ts +246 -249
  290. package/src/elements/Field.ts +1292 -1233
  291. package/src/elements/FieldHelpers.ts +329 -333
  292. package/src/elements/FontManager.ts +336 -339
  293. package/src/elements/Footer.ts +269 -269
  294. package/src/elements/Footnote.ts +221 -217
  295. package/src/elements/FootnoteManager.ts +246 -249
  296. package/src/elements/Header.ts +269 -269
  297. package/src/elements/HeaderFooterManager.ts +219 -219
  298. package/src/elements/Hyperlink.ts +1288 -1193
  299. package/src/elements/Image.ts +1982 -1756
  300. package/src/elements/ImageManager.ts +437 -432
  301. package/src/elements/ImageRun.ts +59 -59
  302. package/src/elements/MathElement.ts +65 -65
  303. package/src/elements/Paragraph.ts +4347 -4287
  304. package/src/elements/PreservedElement.ts +53 -53
  305. package/src/elements/PropertyChangeTypes.ts +458 -442
  306. package/src/elements/RangeMarker.ts +382 -400
  307. package/src/elements/Revision.ts +1198 -1217
  308. package/src/elements/RevisionContent.ts +73 -73
  309. package/src/elements/RevisionManager.ts +1070 -1070
  310. package/src/elements/Run.ts +3103 -3073
  311. package/src/elements/Section.ts +1521 -1421
  312. package/src/elements/Shape.ts +884 -873
  313. package/src/elements/StructuredDocumentTag.ts +1176 -1207
  314. package/src/elements/Table.ts +2468 -2524
  315. package/src/elements/TableCell.ts +1617 -1621
  316. package/src/elements/TableGridChange.ts +149 -151
  317. package/src/elements/TableOfContents.ts +701 -691
  318. package/src/elements/TableOfContentsElement.ts +89 -89
  319. package/src/elements/TableRow.ts +960 -929
  320. package/src/elements/TextBox.ts +766 -768
  321. package/src/formatting/AbstractNumbering.ts +580 -579
  322. package/src/formatting/NumberingInstance.ts +295 -299
  323. package/src/formatting/NumberingLevel.ts +981 -1040
  324. package/src/formatting/NumberingManager.ts +833 -827
  325. package/src/formatting/Style.ts +1785 -1879
  326. package/src/formatting/StylesManager.ts +1090 -1130
  327. package/src/helpers/CleanupHelper.ts +524 -524
  328. package/src/images/ImageOptimizer.ts +274 -274
  329. package/src/index.ts +559 -554
  330. package/src/managers/DrawingManager.ts +319 -319
  331. package/src/tracking/DocumentTrackingContext.ts +687 -674
  332. package/src/tracking/TrackingContext.ts +175 -173
  333. package/src/types/compatibility-types.ts +49 -49
  334. package/src/types/formatting.ts +210 -210
  335. package/src/types/list-types.ts +14 -14
  336. package/src/types/settings-types.ts +59 -59
  337. package/src/types/styleConfig.ts +189 -189
  338. package/src/utils/ChangelogGenerator.ts +1583 -1581
  339. package/src/utils/CompatibilityUpgrader.ts +235 -237
  340. package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
  341. package/src/utils/MoveOperationHelper.ts +233 -238
  342. package/src/utils/RevisionAwareProcessor.ts +518 -526
  343. package/src/utils/RevisionWalker.ts +427 -457
  344. package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
  345. package/src/utils/ShadingResolver.ts +105 -107
  346. package/src/utils/acceptRevisions.ts +723 -714
  347. package/src/utils/cnfStyleDecoder.ts +212 -217
  348. package/src/utils/corruptionDetection.ts +346 -345
  349. package/src/utils/dateFormatting.ts +20 -20
  350. package/src/utils/deepClone.ts +77 -78
  351. package/src/utils/diagnostics.ts +125 -129
  352. package/src/utils/errorHandling.ts +80 -80
  353. package/src/utils/formatting.ts +220 -213
  354. package/src/utils/list-detection.ts +32 -42
  355. package/src/utils/logger.ts +412 -404
  356. package/src/utils/parsingHelpers.ts +190 -190
  357. package/src/utils/stripTrackedChanges.ts +356 -353
  358. package/src/utils/textDiff.ts +100 -100
  359. package/src/utils/units.ts +421 -421
  360. package/src/utils/validation.ts +553 -542
  361. package/src/utils/xmlSanitization.ts +179 -182
  362. package/src/validation/RevisionAutoFixer.ts +541 -542
  363. package/src/validation/RevisionValidator.ts +470 -460
  364. package/src/validation/ValidationRules.ts +338 -338
  365. package/src/validation/index.ts +30 -30
  366. package/src/xml/XMLBuilder.ts +857 -871
  367. package/src/xml/XMLParser.ts +877 -919
  368. package/src/zip/ZipHandler.ts +629 -637
  369. package/src/zip/ZipReader.ts +295 -299
  370. package/src/zip/ZipWriter.ts +374 -390
  371. package/src/zip/types.ts +116 -116
@@ -1 +1 @@
1
- {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"","sourcesContent":["/**\r\n * TrackingContext - Interface for automatic change tracking\r\n *\r\n * When enabled via Document.enableTrackChanges(), element setter methods\r\n * use this context to automatically create Revision objects for changes.\r\n *\r\n * @module TrackingContext\r\n */\r\n\r\nimport type { Revision, RevisionType } from '../elements/Revision';\r\nimport type { RevisionManager } from '../elements/RevisionManager';\r\nimport type { Run } from '../elements/Run';\r\nimport type { Paragraph } from '../elements/Paragraph';\r\nimport type { Table } from '../elements/Table';\r\nimport type { TableRow } from '../elements/TableRow';\r\nimport type { TableCell } from '../elements/TableCell';\r\nimport type { Section } from '../elements/Section';\r\n\r\n/** Union of element types that can be tracked */\r\nexport type TrackableElement = Run | Paragraph | Table | TableRow | TableCell | Section | { constructor: { name: string } };\r\n\r\n/**\r\n * Pending change entry before flushing to RevisionManager\r\n */\r\nexport interface PendingChange {\r\n /** Type of revision to create */\r\n type: RevisionType;\r\n /** Property that changed */\r\n property: string;\r\n /** Value before the change */\r\n previousValue: unknown;\r\n /** Value after the change */\r\n newValue: unknown;\r\n /** Element that was modified */\r\n element: TrackableElement;\r\n /** When the change occurred */\r\n timestamp: number;\r\n /** Count for consolidated changes */\r\n count?: number;\r\n}\r\n\r\n/**\r\n * Interface for tracking changes to document elements.\r\n *\r\n * Elements call tracking methods when their setters are invoked.\r\n * The context decides whether to create revisions based on enabled state.\r\n */\r\nexport interface TrackingContext {\r\n /**\r\n * Check if change tracking is currently enabled\r\n */\r\n isEnabled(): boolean;\r\n\r\n /**\r\n * Get the author name for new revisions\r\n */\r\n getAuthor(): string;\r\n\r\n /**\r\n * Get the RevisionManager for registering revisions\r\n */\r\n getRevisionManager(): RevisionManager;\r\n\r\n /**\r\n * Check if formatting changes should be tracked\r\n */\r\n isTrackFormattingEnabled(): boolean;\r\n\r\n /**\r\n * Track a Run property change (bold, italic, font, color, etc.)\r\n * @param run - The Run that was modified\r\n * @param property - Property name (e.g., 'bold', 'color')\r\n * @param oldValue - Value before the change\r\n * @param newValue - Value after the change\r\n */\r\n trackRunPropertyChange(\r\n run: Run,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void;\r\n\r\n /**\r\n * Track a Paragraph property change (alignment, spacing, etc.)\r\n * @param paragraph - The Paragraph that was modified\r\n * @param property - Property name (e.g., 'alignment', 'spaceBefore')\r\n * @param oldValue - Value before the change\r\n * @param newValue - Value after the change\r\n */\r\n trackParagraphPropertyChange(\r\n paragraph: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void;\r\n\r\n /**\r\n * Track a Hyperlink change (URL, anchor, text, formatting)\r\n * @param hyperlink - The Hyperlink that was modified\r\n * @param changeType - Type of change (e.g., 'url', 'text', 'formatting')\r\n * @param oldValue - Value before the change\r\n * @param newValue - Value after the change\r\n */\r\n trackHyperlinkChange(\r\n hyperlink: TrackableElement,\r\n changeType: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void;\r\n\r\n /**\r\n * Track a Table element property change\r\n * @param element - The table/row/cell that was modified\r\n * @param property - Property name\r\n * @param oldValue - Value before the change\r\n * @param newValue - Value after the change\r\n */\r\n trackTableChange(\r\n element: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void;\r\n\r\n /**\r\n * Track a Section property change\r\n * @param section - The Section that was modified\r\n * @param property - Property name (e.g., 'pageSize', 'margins')\r\n * @param oldValue - Value before the change\r\n * @param newValue - Value after the change\r\n */\r\n trackSectionChange(\r\n section: TrackableElement,\r\n property: string,\r\n oldValue: unknown,\r\n newValue: unknown\r\n ): void;\r\n\r\n /**\r\n * Track text insertion\r\n * @param element - Element containing the insertion\r\n * @param text - Text that was inserted\r\n */\r\n trackInsertion(element: TrackableElement, text: string): void;\r\n\r\n /**\r\n * Track text deletion\r\n * @param element - Element containing the deletion\r\n * @param text - Text that was deleted\r\n */\r\n trackDeletion(element: TrackableElement, text: string): void;\r\n\r\n /**\r\n * Flush all pending changes and create Revision objects.\r\n * This is called automatically before document save.\r\n * @returns Array of created revisions\r\n */\r\n flushPendingChanges(): Revision[];\r\n\r\n /**\r\n * Create an insertion revision (factory to avoid circular dependency in Run)\r\n * @param content - Run or array of content for the insertion\r\n * @param date - Optional date for the revision\r\n */\r\n createInsertion(content: Run, date?: Date): Revision;\r\n\r\n /**\r\n * Create a deletion revision (factory to avoid circular dependency in Run)\r\n * @param content - Run or array of content for the deletion\r\n * @param date - Optional date for the revision\r\n */\r\n createDeletion(content: Run, date?: Date): Revision;\r\n}\r\n"]}
1
+ {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/tracking/TrackingContext.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * TrackingContext - Interface for automatic change tracking\n *\n * When enabled via Document.enableTrackChanges(), element setter methods\n * use this context to automatically create Revision objects for changes.\n *\n * @module TrackingContext\n */\n\nimport type { Revision, RevisionType } from '../elements/Revision';\nimport type { RevisionManager } from '../elements/RevisionManager';\nimport type { Run } from '../elements/Run';\nimport type { Paragraph } from '../elements/Paragraph';\nimport type { Table } from '../elements/Table';\nimport type { TableRow } from '../elements/TableRow';\nimport type { TableCell } from '../elements/TableCell';\nimport type { Section } from '../elements/Section';\n\n/** Union of element types that can be tracked */\nexport type TrackableElement =\n | Run\n | Paragraph\n | Table\n | TableRow\n | TableCell\n | Section\n | { constructor: { name: string } };\n\n/**\n * Pending change entry before flushing to RevisionManager\n */\nexport interface PendingChange {\n /** Type of revision to create */\n type: RevisionType;\n /** Property that changed */\n property: string;\n /** Value before the change */\n previousValue: unknown;\n /** Value after the change */\n newValue: unknown;\n /** Element that was modified */\n element: TrackableElement;\n /** When the change occurred */\n timestamp: number;\n /** Count for consolidated changes */\n count?: number;\n}\n\n/**\n * Interface for tracking changes to document elements.\n *\n * Elements call tracking methods when their setters are invoked.\n * The context decides whether to create revisions based on enabled state.\n */\nexport interface TrackingContext {\n /**\n * Check if change tracking is currently enabled\n */\n isEnabled(): boolean;\n\n /**\n * Get the author name for new revisions\n */\n getAuthor(): string;\n\n /**\n * Get the RevisionManager for registering revisions\n */\n getRevisionManager(): RevisionManager;\n\n /**\n * Check if formatting changes should be tracked\n */\n isTrackFormattingEnabled(): boolean;\n\n /**\n * Track a Run property change (bold, italic, font, color, etc.)\n * @param run - The Run that was modified\n * @param property - Property name (e.g., 'bold', 'color')\n * @param oldValue - Value before the change\n * @param newValue - Value after the change\n */\n trackRunPropertyChange(run: Run, property: string, oldValue: unknown, newValue: unknown): void;\n\n /**\n * Track a Paragraph property change (alignment, spacing, etc.)\n * @param paragraph - The Paragraph that was modified\n * @param property - Property name (e.g., 'alignment', 'spaceBefore')\n * @param oldValue - Value before the change\n * @param newValue - Value after the change\n */\n trackParagraphPropertyChange(\n paragraph: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void;\n\n /**\n * Track a Hyperlink change (URL, anchor, text, formatting)\n * @param hyperlink - The Hyperlink that was modified\n * @param changeType - Type of change (e.g., 'url', 'text', 'formatting')\n * @param oldValue - Value before the change\n * @param newValue - Value after the change\n */\n trackHyperlinkChange(\n hyperlink: TrackableElement,\n changeType: string,\n oldValue: unknown,\n newValue: unknown\n ): void;\n\n /**\n * Track a Table element property change\n * @param element - The table/row/cell that was modified\n * @param property - Property name\n * @param oldValue - Value before the change\n * @param newValue - Value after the change\n */\n trackTableChange(\n element: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void;\n\n /**\n * Track a Section property change\n * @param section - The Section that was modified\n * @param property - Property name (e.g., 'pageSize', 'margins')\n * @param oldValue - Value before the change\n * @param newValue - Value after the change\n */\n trackSectionChange(\n section: TrackableElement,\n property: string,\n oldValue: unknown,\n newValue: unknown\n ): void;\n\n /**\n * Track text insertion\n * @param element - Element containing the insertion\n * @param text - Text that was inserted\n */\n trackInsertion(element: TrackableElement, text: string): void;\n\n /**\n * Track text deletion\n * @param element - Element containing the deletion\n * @param text - Text that was deleted\n */\n trackDeletion(element: TrackableElement, text: string): void;\n\n /**\n * Flush all pending changes and create Revision objects.\n * This is called automatically before document save.\n * @returns Array of created revisions\n */\n flushPendingChanges(): Revision[];\n\n /**\n * Create an insertion revision (factory to avoid circular dependency in Run)\n * @param content - Run or array of content for the insertion\n * @param date - Optional date for the revision\n */\n createInsertion(content: Run, date?: Date): Revision;\n\n /**\n * Create a deletion revision (factory to avoid circular dependency in Run)\n * @param content - Run or array of content for the deletion\n * @param date - Optional date for the revision\n */\n createDeletion(content: Run, date?: Date): Revision;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility-types.js","sourceRoot":"","sources":["../../src/types/compatibility-types.ts"],"names":[],"mappings":";;;AASA,IAAY,iBASX;AATD,WAAY,iBAAiB;IAE3B,kEAAa,CAAA;IAEb,kEAAa,CAAA;IAEb,kEAAa,CAAA;IAEb,0EAAiB,CAAA;AACnB,CAAC,EATW,iBAAiB,iCAAjB,iBAAiB,QAS5B","sourcesContent":["/**\r\n * Word compatibility mode versions.\r\n *\r\n * These map to Microsoft's internal version numbers used in the\r\n * w:compatSetting name=\"compatibilityMode\" value within settings.xml.\r\n *\r\n * Per MS-DOCX specification, the default when absent is 12 (Word 2007).\r\n * See: https://learn.microsoft.com/en-us/openspecs/office_standards/ms-docx/90138c4d-eb18-4edc-aa6c-dfb799cb1d0d\r\n */\r\nexport enum CompatibilityMode {\r\n /** Word 2003 and earlier — uses MS-DOC feature set */\r\n Word2003 = 11,\r\n /** Word 2007 (ECMA-376 1st edition) — DEFAULT when absent */\r\n Word2007 = 12,\r\n /** Word 2010 (ISO/IEC 29500 with exclusions) */\r\n Word2010 = 14,\r\n /** Word 2013/2016/2019/365 (full modern features) */\r\n Word2013Plus = 15,\r\n}\r\n\r\n/**\r\n * A single w:compatSetting entry (name/uri/val triple).\r\n *\r\n * These are the modern extensibility mechanism for compatibility settings,\r\n * added in ECMA-376 2nd edition. They coexist with legacy boolean flags\r\n * in the Transitional schema.\r\n */\r\nexport interface CompatSetting {\r\n name: string;\r\n uri: string;\r\n val: string;\r\n}\r\n\r\n/**\r\n * Parsed compatibility settings from the w:compat block in settings.xml.\r\n */\r\nexport interface CompatibilityInfo {\r\n /** The numeric compatibility mode value (11, 12, 14, or 15) */\r\n mode: CompatibilityMode;\r\n\r\n /** Whether the document is in a legacy compatibility mode (below 15) */\r\n isLegacyMode: boolean;\r\n\r\n /** Modern w:compatSetting entries (name/uri/val triples) */\r\n compatSettings: CompatSetting[];\r\n\r\n /** Legacy boolean compat flags that are present and enabled (without w: prefix) */\r\n legacyFlags: string[];\r\n}\r\n"]}
1
+ {"version":3,"file":"compatibility-types.js","sourceRoot":"","sources":["../../src/types/compatibility-types.ts"],"names":[],"mappings":";;;AASA,IAAY,iBASX;AATD,WAAY,iBAAiB;IAE3B,kEAAa,CAAA;IAEb,kEAAa,CAAA;IAEb,kEAAa,CAAA;IAEb,0EAAiB,CAAA;AACnB,CAAC,EATW,iBAAiB,iCAAjB,iBAAiB,QAS5B","sourcesContent":["/**\n * Word compatibility mode versions.\n *\n * These map to Microsoft's internal version numbers used in the\n * w:compatSetting name=\"compatibilityMode\" value within settings.xml.\n *\n * Per MS-DOCX specification, the default when absent is 12 (Word 2007).\n * See: https://learn.microsoft.com/en-us/openspecs/office_standards/ms-docx/90138c4d-eb18-4edc-aa6c-dfb799cb1d0d\n */\nexport enum CompatibilityMode {\n /** Word 2003 and earlier — uses MS-DOC feature set */\n Word2003 = 11,\n /** Word 2007 (ECMA-376 1st edition) — DEFAULT when absent */\n Word2007 = 12,\n /** Word 2010 (ISO/IEC 29500 with exclusions) */\n Word2010 = 14,\n /** Word 2013/2016/2019/365 (full modern features) */\n Word2013Plus = 15,\n}\n\n/**\n * A single w:compatSetting entry (name/uri/val triple).\n *\n * These are the modern extensibility mechanism for compatibility settings,\n * added in ECMA-376 2nd edition. They coexist with legacy boolean flags\n * in the Transitional schema.\n */\nexport interface CompatSetting {\n name: string;\n uri: string;\n val: string;\n}\n\n/**\n * Parsed compatibility settings from the w:compat block in settings.xml.\n */\nexport interface CompatibilityInfo {\n /** The numeric compatibility mode value (11, 12, 14, or 15) */\n mode: CompatibilityMode;\n\n /** Whether the document is in a legacy compatibility mode (below 15) */\n isLegacyMode: boolean;\n\n /** Modern w:compatSetting entries (name/uri/val triples) */\n compatSettings: CompatSetting[];\n\n /** Legacy boolean compat flags that are present and enabled (without w: prefix) */\n legacyFlags: string[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/types/formatting.ts"],"names":[],"mappings":"","sourcesContent":["/**\r\n * Additional formatting types for enhanced document manipulation\r\n */\r\n\r\n// Forward references to avoid circular dependencies\r\nimport type { Paragraph } from '../elements/Paragraph';\r\nimport type { Run } from '../elements/Run';\r\n\r\n/**\r\n * Border style options\r\n */\r\nexport type BorderStyleType = 'single' | 'double' | 'dashed' | 'dotted' | 'triple' | 'none';\r\n\r\n/**\r\n * Individual border configuration\r\n */\r\nexport interface BorderStyle {\r\n /** Border style */\r\n style: BorderStyleType;\r\n /** Border width in eighths of a point */\r\n width: number;\r\n /** Border color in hex format */\r\n color: string;\r\n /** Space between border and text in points */\r\n space?: number;\r\n}\r\n\r\n/**\r\n * Paragraph border configuration\r\n */\r\nexport interface ParagraphBorder {\r\n /** Top border */\r\n top?: BorderStyle;\r\n /** Bottom border */\r\n bottom?: BorderStyle;\r\n /** Left border */\r\n left?: BorderStyle;\r\n /** Right border */\r\n right?: BorderStyle;\r\n /** Apply border between paragraphs */\r\n between?: boolean;\r\n}\r\n\r\n/**\r\n * Shading patterns — re-exported from CommonTypes for backward compatibility.\r\n * @see CommonTypes.ShadingPattern for the canonical definition\r\n */\r\nexport type { ShadingPattern } from '../elements/CommonTypes';\r\n\r\n/**\r\n * Paragraph shading configuration — re-exported from CommonTypes for backward compatibility.\r\n * @see CommonTypes.ShadingConfig for the canonical definition (includes theme attributes)\r\n */\r\nexport type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes';\r\n\r\n/**\r\n * Tab stop alignment\r\n */\r\nexport type TabAlignment = 'left' | 'center' | 'right' | 'decimal' | 'bar' | 'clear';\r\n\r\n/**\r\n * Tab leader character\r\n */\r\nexport type TabLeader = 'none' | 'dot' | 'dash' | 'underscore' | 'heavy' | 'middleDot';\r\n\r\n/**\r\n * Tab stop configuration\r\n */\r\nexport interface TabStop {\r\n /** Position in twips from left margin */\r\n position: number;\r\n /** Tab alignment type */\r\n type: TabAlignment;\r\n /** Leader character */\r\n leader?: TabLeader;\r\n}\r\n\r\n/**\r\n * Text search options\r\n */\r\nexport interface FindOptions {\r\n /** Case sensitive search */\r\n caseSensitive?: boolean;\r\n /** Match whole words only */\r\n wholeWord?: boolean;\r\n /** Use regular expressions */\r\n useRegex?: boolean;\r\n /** Include headers and footers */\r\n includeHeadersFooters?: boolean;\r\n /** Include footnotes and endnotes */\r\n includeNotes?: boolean;\r\n}\r\n\r\n/**\r\n * Text replacement options\r\n */\r\nexport interface ReplaceOptions extends FindOptions {\r\n /** Maximum number of replacements (0 = unlimited) */\r\n maxReplacements?: number;\r\n /** Track changes for replacements */\r\n trackChanges?: boolean;\r\n /** Author for track changes */\r\n author?: string;\r\n}\r\n\r\n/**\r\n * Search result\r\n */\r\nexport interface SearchResult {\r\n /** The paragraph containing the match */\r\n paragraph: Paragraph;\r\n /** The run containing the match */\r\n run?: Run;\r\n /** Match start position in paragraph */\r\n startIndex: number;\r\n /** Match end position in paragraph */\r\n endIndex: number;\r\n /** The matched text */\r\n match: string;\r\n}\r\n\r\n/**\r\n * Text emphasis options\r\n */\r\nexport type EmphasisType = 'bold' | 'italic' | 'underline';\r\n\r\n/**\r\n * List prefix configuration\r\n */\r\nexport interface ListPrefix {\r\n /** List format type */\r\n format: 'bullet' | 'number';\r\n /** Custom style string (e.g., '•', '1.', 'a)') */\r\n style: string;\r\n}\r\n\r\n/**\r\n * Format options for style application\r\n */\r\nexport interface FormatOptions {\r\n // Text formatting\r\n /** Font family name (e.g., 'Arial', 'Verdana') */\r\n font?: string;\r\n /** Font size in points */\r\n size?: number;\r\n /** Text color as 6-digit hex (e.g., 'FF0000' for red) */\r\n color?: string;\r\n /** Text emphasis (bold, italic, underline) */\r\n emphasis?: EmphasisType[];\r\n\r\n // Alignment\r\n /** Paragraph alignment */\r\n alignment?: 'left' | 'right' | 'center' | 'justify';\r\n\r\n // Spacing (in points)\r\n /** Space before paragraph in points */\r\n spaceAbove?: number;\r\n /** Space after paragraph in points */\r\n spaceBelow?: number;\r\n /** Line spacing in points or multiplier */\r\n lineSpacing?: number;\r\n\r\n // Indentation (in inches)\r\n /** Left indentation in inches */\r\n indentLeft?: number;\r\n /** Right indentation in inches */\r\n indentRight?: number;\r\n /** First line indentation in inches */\r\n indentFirst?: number;\r\n /** Hanging indentation in inches */\r\n indentHanging?: number;\r\n\r\n // Padding (in points) - for table cells\r\n /** Top padding in points */\r\n paddingTop?: number;\r\n /** Bottom padding in points */\r\n paddingBottom?: number;\r\n /** Left padding in points */\r\n paddingLeft?: number;\r\n /** Right padding in points */\r\n paddingRight?: number;\r\n\r\n // List formatting\r\n /** List prefix style */\r\n prefixList?: string | ListPrefix;\r\n\r\n // Advanced options\r\n /** Border color as 6-digit hex */\r\n borderColor?: string;\r\n /** Border width in points */\r\n borderWidth?: number;\r\n /** Background shading color as 6-digit hex */\r\n shading?: string;\r\n /** Keep with next paragraph */\r\n keepWithNext?: boolean;\r\n /** Keep lines together */\r\n keepLines?: boolean;\r\n}\r\n\r\n/**\r\n * Options for applying styles to paragraphs\r\n */\r\nexport interface StyleApplyOptions {\r\n /** Specific paragraphs to apply style to (default: auto-detect) */\r\n paragraphs?: Paragraph[];\r\n /** Properties to preserve from existing formatting */\r\n keepProperties?: string[];\r\n /** Custom formatting to apply */\r\n format?: FormatOptions;\r\n}"]}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/types/formatting.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Additional formatting types for enhanced document manipulation\n */\n\n// Forward references to avoid circular dependencies\nimport type { Paragraph } from '../elements/Paragraph';\nimport type { Run } from '../elements/Run';\n\n/**\n * Border style options\n */\nexport type BorderStyleType = 'single' | 'double' | 'dashed' | 'dotted' | 'triple' | 'none';\n\n/**\n * Individual border configuration\n */\nexport interface BorderStyle {\n /** Border style */\n style: BorderStyleType;\n /** Border width in eighths of a point */\n width: number;\n /** Border color in hex format */\n color: string;\n /** Space between border and text in points */\n space?: number;\n}\n\n/**\n * Paragraph border configuration\n */\nexport interface ParagraphBorder {\n /** Top border */\n top?: BorderStyle;\n /** Bottom border */\n bottom?: BorderStyle;\n /** Left border */\n left?: BorderStyle;\n /** Right border */\n right?: BorderStyle;\n /** Apply border between paragraphs */\n between?: boolean;\n}\n\n/**\n * Shading patterns — re-exported from CommonTypes for backward compatibility.\n * @see CommonTypes.ShadingPattern for the canonical definition\n */\nexport type { ShadingPattern } from '../elements/CommonTypes';\n\n/**\n * Paragraph shading configuration — re-exported from CommonTypes for backward compatibility.\n * @see CommonTypes.ShadingConfig for the canonical definition (includes theme attributes)\n */\nexport type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes';\n\n/**\n * Tab stop alignment\n */\nexport type TabAlignment = 'left' | 'center' | 'right' | 'decimal' | 'bar' | 'clear';\n\n/**\n * Tab leader character\n */\nexport type TabLeader = 'none' | 'dot' | 'dash' | 'underscore' | 'heavy' | 'middleDot';\n\n/**\n * Tab stop configuration\n */\nexport interface TabStop {\n /** Position in twips from left margin */\n position: number;\n /** Tab alignment type */\n type: TabAlignment;\n /** Leader character */\n leader?: TabLeader;\n}\n\n/**\n * Text search options\n */\nexport interface FindOptions {\n /** Case sensitive search */\n caseSensitive?: boolean;\n /** Match whole words only */\n wholeWord?: boolean;\n /** Use regular expressions */\n useRegex?: boolean;\n /** Include headers and footers */\n includeHeadersFooters?: boolean;\n /** Include footnotes and endnotes */\n includeNotes?: boolean;\n}\n\n/**\n * Text replacement options\n */\nexport interface ReplaceOptions extends FindOptions {\n /** Maximum number of replacements (0 = unlimited) */\n maxReplacements?: number;\n /** Track changes for replacements */\n trackChanges?: boolean;\n /** Author for track changes */\n author?: string;\n}\n\n/**\n * Search result\n */\nexport interface SearchResult {\n /** The paragraph containing the match */\n paragraph: Paragraph;\n /** The run containing the match */\n run?: Run;\n /** Match start position in paragraph */\n startIndex: number;\n /** Match end position in paragraph */\n endIndex: number;\n /** The matched text */\n match: string;\n}\n\n/**\n * Text emphasis options\n */\nexport type EmphasisType = 'bold' | 'italic' | 'underline';\n\n/**\n * List prefix configuration\n */\nexport interface ListPrefix {\n /** List format type */\n format: 'bullet' | 'number';\n /** Custom style string (e.g., '•', '1.', 'a)') */\n style: string;\n}\n\n/**\n * Format options for style application\n */\nexport interface FormatOptions {\n // Text formatting\n /** Font family name (e.g., 'Arial', 'Verdana') */\n font?: string;\n /** Font size in points */\n size?: number;\n /** Text color as 6-digit hex (e.g., 'FF0000' for red) */\n color?: string;\n /** Text emphasis (bold, italic, underline) */\n emphasis?: EmphasisType[];\n\n // Alignment\n /** Paragraph alignment */\n alignment?: 'left' | 'right' | 'center' | 'justify';\n\n // Spacing (in points)\n /** Space before paragraph in points */\n spaceAbove?: number;\n /** Space after paragraph in points */\n spaceBelow?: number;\n /** Line spacing in points or multiplier */\n lineSpacing?: number;\n\n // Indentation (in inches)\n /** Left indentation in inches */\n indentLeft?: number;\n /** Right indentation in inches */\n indentRight?: number;\n /** First line indentation in inches */\n indentFirst?: number;\n /** Hanging indentation in inches */\n indentHanging?: number;\n\n // Padding (in points) - for table cells\n /** Top padding in points */\n paddingTop?: number;\n /** Bottom padding in points */\n paddingBottom?: number;\n /** Left padding in points */\n paddingLeft?: number;\n /** Right padding in points */\n paddingRight?: number;\n\n // List formatting\n /** List prefix style */\n prefixList?: string | ListPrefix;\n\n // Advanced options\n /** Border color as 6-digit hex */\n borderColor?: string;\n /** Border width in points */\n borderWidth?: number;\n /** Background shading color as 6-digit hex */\n shading?: string;\n /** Keep with next paragraph */\n keepWithNext?: boolean;\n /** Keep lines together */\n keepLines?: boolean;\n}\n\n/**\n * Options for applying styles to paragraphs\n */\nexport interface StyleApplyOptions {\n /** Specific paragraphs to apply style to (default: auto-detect) */\n paragraphs?: Paragraph[];\n /** Properties to preserve from existing formatting */\n keepProperties?: string[];\n /** Custom formatting to apply */\n format?: FormatOptions;\n}\n"]}
@@ -1,6 +1,6 @@
1
- export type ListCategory = "numbered" | "bullet" | "none";
2
- export type NumberFormat = "decimal" | "lowerLetter" | "upperLetter" | "lowerRoman" | "upperRoman";
3
- export type BulletFormat = "bullet" | "dash" | "arrow";
1
+ export type ListCategory = 'numbered' | 'bullet' | 'none';
2
+ export type NumberFormat = 'decimal' | 'lowerLetter' | 'upperLetter' | 'lowerRoman' | 'upperRoman';
3
+ export type BulletFormat = 'bullet' | 'dash' | 'arrow';
4
4
  export interface ListDetectionResult {
5
5
  category: ListCategory;
6
6
  isWordList: boolean;
@@ -26,7 +26,7 @@ export interface ListAnalysis {
26
26
  bullet: number;
27
27
  none: number;
28
28
  };
29
- recommendedAction: "normalize" | "none";
29
+ recommendedAction: 'normalize' | 'none';
30
30
  }
31
31
  export interface IndentationLevel {
32
32
  level: number;
@@ -38,7 +38,7 @@ export interface IndentationLevel {
38
38
  export interface ListNormalizationOptions {
39
39
  numberedStyleNumId?: number;
40
40
  bulletStyleNumId?: number;
41
- scope?: "cell" | "table" | "document";
41
+ scope?: 'cell' | 'table' | 'document';
42
42
  forceMajority?: boolean;
43
43
  preserveIndentation?: boolean;
44
44
  indentationLevels?: IndentationLevel[];
@@ -50,7 +50,7 @@ export interface ListNormalizationReport {
50
50
  appliedCategory: ListCategory;
51
51
  details: {
52
52
  originalText: string;
53
- action: "normalized" | "skipped" | "error";
53
+ action: 'normalized' | 'skipped' | 'error';
54
54
  reason?: string;
55
55
  }[];
56
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list-types.js","sourceRoot":"","sources":["../../src/types/list-types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * List Normalization Types for docxmlater\n *\n * These types support detection and normalization of typed list prefixes\n * to proper Word list formatting.\n */\n\n/** High-level list category */\nexport type ListCategory = \"numbered\" | \"bullet\" | \"none\";\n\n/** Specific number format patterns */\nexport type NumberFormat =\n | \"decimal\" // 1. 2. 3.\n | \"lowerLetter\" // a. b. c.\n | \"upperLetter\" // A. B. C.\n | \"lowerRoman\" // i. ii. iii.\n | \"upperRoman\"; // I. II. III.\n\n/** Specific bullet format patterns */\nexport type BulletFormat =\n | \"bullet\" // • ● ○\n | \"dash\" // - – —\n | \"arrow\"; // ► ▸\n\n/**\n * Result of detecting list type for a single paragraph\n */\nexport interface ListDetectionResult {\n /** High-level category */\n category: ListCategory;\n\n /** True if paragraph has <w:numPr> (real Word list) */\n isWordList: boolean;\n\n /** The typed prefix found, e.g., \"1. \", \"a) \", \"• \" */\n typedPrefix: string | null;\n\n /** Inferred nesting level based on indentation */\n inferredLevel: number;\n\n /** Specific format detected */\n format: NumberFormat | BulletFormat | null;\n\n /** If Word list, the numId from <w:numPr> */\n numId: number | null;\n\n /** If Word list, the ilvl from <w:numPr> */\n ilvl: number | null;\n\n /** Raw indentation in twips for debugging */\n indentationTwips: number;\n}\n\n/**\n * Analysis of all lists within a scope (cell, table, document)\n */\nexport interface ListAnalysis {\n /** All analyzed paragraphs with their detection results */\n paragraphs: {\n paragraph: unknown; // Paragraph instance - using unknown to avoid circular dep\n text: string;\n detection: ListDetectionResult;\n }[];\n\n /** True if any typed (non-Word) lists found */\n hasTypedLists: boolean;\n\n /** True if any real Word lists found */\n hasWordLists: boolean;\n\n /** True if both numbered AND bullet lists present */\n hasMixedCategories: boolean;\n\n /** The dominant list type in this scope */\n majorityCategory: ListCategory;\n\n /** Count by category */\n counts: {\n numbered: number;\n bullet: number;\n none: number;\n };\n\n /** Recommended action */\n recommendedAction: \"normalize\" | \"none\";\n}\n\n/**\n * User-defined indentation level configuration for list normalization\n */\nexport interface IndentationLevel {\n level: number;\n textIndent: number; // in inches\n symbolIndent: number; // in inches\n bulletChar?: string;\n numberedFormat?: NumberFormat | string;\n}\n\n/**\n * Options for list normalization\n */\nexport interface ListNormalizationOptions {\n /** numId to use for numbered lists (from numbering.xml) */\n numberedStyleNumId?: number;\n\n /** numId to use for bullet lists (from numbering.xml) */\n bulletStyleNumId?: number;\n\n /** Processing scope */\n scope?: \"cell\" | \"table\" | \"document\";\n\n /**\n * If true, convert ALL list items to majority type.\n * If false, only convert typed lists (preserve existing Word lists).\n */\n forceMajority?: boolean;\n\n /**\n * If true, preserve original indentation instead of using level defaults.\n */\n preserveIndentation?: boolean;\n\n /**\n * User-defined indentation settings per list level.\n * Used to configure symbol indent, text indent, and bullet characters.\n */\n indentationLevels?: IndentationLevel[];\n}\n\n/**\n * Report returned after normalization\n */\nexport interface ListNormalizationReport {\n /** Number of paragraphs successfully normalized */\n normalized: number;\n\n /** Number of paragraphs skipped (already correct or non-list) */\n skipped: number;\n\n /** Any errors encountered */\n errors: string[];\n\n /** The majority category that was applied */\n appliedCategory: ListCategory;\n\n /** Detailed per-paragraph results */\n details: {\n originalText: string;\n action: \"normalized\" | \"skipped\" | \"error\";\n reason?: string;\n }[];\n}\n"]}
1
+ {"version":3,"file":"list-types.js","sourceRoot":"","sources":["../../src/types/list-types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * List Normalization Types for docxmlater\n *\n * These types support detection and normalization of typed list prefixes\n * to proper Word list formatting.\n */\n\n/** High-level list category */\nexport type ListCategory = 'numbered' | 'bullet' | 'none';\n\n/** Specific number format patterns */\nexport type NumberFormat =\n | 'decimal' // 1. 2. 3.\n | 'lowerLetter' // a. b. c.\n | 'upperLetter' // A. B. C.\n | 'lowerRoman' // i. ii. iii.\n | 'upperRoman'; // I. II. III.\n\n/** Specific bullet format patterns */\nexport type BulletFormat =\n | 'bullet' // • ● ○\n | 'dash' // - – —\n | 'arrow'; // ► ▸\n\n/**\n * Result of detecting list type for a single paragraph\n */\nexport interface ListDetectionResult {\n /** High-level category */\n category: ListCategory;\n\n /** True if paragraph has <w:numPr> (real Word list) */\n isWordList: boolean;\n\n /** The typed prefix found, e.g., \"1. \", \"a) \", \"• \" */\n typedPrefix: string | null;\n\n /** Inferred nesting level based on indentation */\n inferredLevel: number;\n\n /** Specific format detected */\n format: NumberFormat | BulletFormat | null;\n\n /** If Word list, the numId from <w:numPr> */\n numId: number | null;\n\n /** If Word list, the ilvl from <w:numPr> */\n ilvl: number | null;\n\n /** Raw indentation in twips for debugging */\n indentationTwips: number;\n}\n\n/**\n * Analysis of all lists within a scope (cell, table, document)\n */\nexport interface ListAnalysis {\n /** All analyzed paragraphs with their detection results */\n paragraphs: {\n paragraph: unknown; // Paragraph instance - using unknown to avoid circular dep\n text: string;\n detection: ListDetectionResult;\n }[];\n\n /** True if any typed (non-Word) lists found */\n hasTypedLists: boolean;\n\n /** True if any real Word lists found */\n hasWordLists: boolean;\n\n /** True if both numbered AND bullet lists present */\n hasMixedCategories: boolean;\n\n /** The dominant list type in this scope */\n majorityCategory: ListCategory;\n\n /** Count by category */\n counts: {\n numbered: number;\n bullet: number;\n none: number;\n };\n\n /** Recommended action */\n recommendedAction: 'normalize' | 'none';\n}\n\n/**\n * User-defined indentation level configuration for list normalization\n */\nexport interface IndentationLevel {\n level: number;\n textIndent: number; // in inches\n symbolIndent: number; // in inches\n bulletChar?: string;\n numberedFormat?: NumberFormat | string;\n}\n\n/**\n * Options for list normalization\n */\nexport interface ListNormalizationOptions {\n /** numId to use for numbered lists (from numbering.xml) */\n numberedStyleNumId?: number;\n\n /** numId to use for bullet lists (from numbering.xml) */\n bulletStyleNumId?: number;\n\n /** Processing scope */\n scope?: 'cell' | 'table' | 'document';\n\n /**\n * If true, convert ALL list items to majority type.\n * If false, only convert typed lists (preserve existing Word lists).\n */\n forceMajority?: boolean;\n\n /**\n * If true, preserve original indentation instead of using level defaults.\n */\n preserveIndentation?: boolean;\n\n /**\n * User-defined indentation settings per list level.\n * Used to configure symbol indent, text indent, and bullet characters.\n */\n indentationLevels?: IndentationLevel[];\n}\n\n/**\n * Report returned after normalization\n */\nexport interface ListNormalizationReport {\n /** Number of paragraphs successfully normalized */\n normalized: number;\n\n /** Number of paragraphs skipped (already correct or non-list) */\n skipped: number;\n\n /** Any errors encountered */\n errors: string[];\n\n /** The majority category that was applied */\n appliedCategory: ListCategory;\n\n /** Detailed per-paragraph results */\n details: {\n originalText: string;\n action: 'normalized' | 'skipped' | 'error';\n reason?: string;\n }[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-types.js","sourceRoot":"","sources":["../../src/types/settings-types.ts"],"names":[],"mappings":"","sourcesContent":["/**\r\n * Shared type definitions for document settings (settings.xml)\r\n *\r\n * These types are used by both Document.ts (in-memory state) and\r\n * DocumentGenerator.ts (XML generation) to ensure consistency.\r\n */\r\n\r\n/**\r\n * Document protection settings per ECMA-376 CT_DocProtect\r\n */\r\nexport interface DocumentProtection {\r\n edit: 'readOnly' | 'comments' | 'trackedChanges' | 'forms';\r\n enforcement: boolean;\r\n cryptProviderType?: string;\r\n cryptAlgorithmClass?: string;\r\n cryptAlgorithmType?: string;\r\n cryptAlgorithmSid?: number;\r\n cryptSpinCount?: number;\r\n hash?: string;\r\n salt?: string;\r\n}\r\n\r\n/**\r\n * Revision view settings per ECMA-376 CT_TrackChangesView\r\n */\r\nexport interface RevisionViewSettings {\r\n showInsertionsAndDeletions: boolean;\r\n showFormatting: boolean;\r\n showInkAnnotations: boolean;\r\n}\r\n\r\n/**\r\n * Track changes and related settings passed to DocumentGenerator.generateSettings()\r\n */\r\nexport interface TrackChangesSettings {\r\n trackChangesEnabled?: boolean;\r\n trackFormatting?: boolean;\r\n revisionView?: RevisionViewSettings;\r\n rsidRoot?: string;\r\n rsids?: string[];\r\n documentProtection?: DocumentProtection;\r\n}\r\n\r\n/**\r\n * Information about webSettings.xml per ECMA-376 CT_WebSettings\r\n */\r\nexport interface WebSettingsInfo {\r\n divCount: number;\r\n optimizeForBrowser: boolean;\r\n allowPNG: boolean;\r\n relyOnVML: boolean;\r\n doNotRelyOnCSS: boolean;\r\n doNotSaveAsSingleFile: boolean;\r\n doNotOrganizeInFolder: boolean;\r\n doNotUseLongFileNames: boolean;\r\n pixelsPerInch?: number;\r\n targetScreenSz?: string;\r\n encoding?: string;\r\n}\r\n"]}
1
+ {"version":3,"file":"settings-types.js","sourceRoot":"","sources":["../../src/types/settings-types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Shared type definitions for document settings (settings.xml)\n *\n * These types are used by both Document.ts (in-memory state) and\n * DocumentGenerator.ts (XML generation) to ensure consistency.\n */\n\n/**\n * Document protection settings per ECMA-376 CT_DocProtect\n */\nexport interface DocumentProtection {\n edit: 'readOnly' | 'comments' | 'trackedChanges' | 'forms';\n enforcement: boolean;\n cryptProviderType?: string;\n cryptAlgorithmClass?: string;\n cryptAlgorithmType?: string;\n cryptAlgorithmSid?: number;\n cryptSpinCount?: number;\n hash?: string;\n salt?: string;\n}\n\n/**\n * Revision view settings per ECMA-376 CT_TrackChangesView\n */\nexport interface RevisionViewSettings {\n showInsertionsAndDeletions: boolean;\n showFormatting: boolean;\n showInkAnnotations: boolean;\n}\n\n/**\n * Track changes and related settings passed to DocumentGenerator.generateSettings()\n */\nexport interface TrackChangesSettings {\n trackChangesEnabled?: boolean;\n trackFormatting?: boolean;\n revisionView?: RevisionViewSettings;\n rsidRoot?: string;\n rsids?: string[];\n documentProtection?: DocumentProtection;\n}\n\n/**\n * Information about webSettings.xml per ECMA-376 CT_WebSettings\n */\nexport interface WebSettingsInfo {\n divCount: number;\n optimizeForBrowser: boolean;\n allowPNG: boolean;\n relyOnVML: boolean;\n doNotRelyOnCSS: boolean;\n doNotSaveAsSingleFile: boolean;\n doNotOrganizeInFolder: boolean;\n doNotUseLongFileNames: boolean;\n pixelsPerInch?: number;\n targetScreenSz?: string;\n encoding?: string;\n}\n"]}
@@ -10,12 +10,12 @@ export interface StyleRunFormatting {
10
10
  preserveUnderline?: boolean;
11
11
  }
12
12
  export interface StyleParagraphFormatting {
13
- alignment?: "left" | "center" | "right" | "justify";
13
+ alignment?: 'left' | 'center' | 'right' | 'justify';
14
14
  spacing?: {
15
15
  before?: number;
16
16
  after?: number;
17
17
  line?: number;
18
- lineRule?: "auto" | "exact" | "atLeast";
18
+ lineRule?: 'auto' | 'exact' | 'atLeast';
19
19
  };
20
20
  indentation?: {
21
21
  left?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"styleConfig.js","sourceRoot":"","sources":["../../src/types/styleConfig.ts"],"names":[],"mappings":"","sourcesContent":["/**\r\n * Configuration interfaces for customizable style formatting\r\n * Used by Document.applyCustomFormattingToExistingStyles()\r\n */\r\n\r\n/**\r\n * Run (character) formatting configuration for styles\r\n */\r\nexport interface StyleRunFormatting {\r\n /** Font family name (e.g., 'Verdana', 'Arial', 'Times New Roman') */\r\n font?: string;\r\n\r\n /** Font size in points (e.g., 12, 14, 18) */\r\n size?: number;\r\n\r\n /** Whether text should be bold */\r\n bold?: boolean;\r\n\r\n /** Whether text should be italic */\r\n italic?: boolean;\r\n\r\n /** Whether text should be underlined */\r\n underline?: boolean;\r\n\r\n /** Text color as hex without # (e.g., '000000', 'FF0000') */\r\n color?: string;\r\n\r\n /** If true, preserve existing bold formatting (don't apply bold property) */\r\n preserveBold?: boolean;\r\n\r\n /** If true, preserve existing italic formatting (don't apply italic property) */\r\n preserveItalic?: boolean;\r\n\r\n /** If true, preserve existing underline formatting (don't apply underline property) */\r\n preserveUnderline?: boolean;\r\n}\r\n\r\n/**\r\n * Paragraph formatting configuration for styles\r\n */\r\nexport interface StyleParagraphFormatting {\r\n /** Text alignment */\r\n alignment?: \"left\" | \"center\" | \"right\" | \"justify\";\r\n\r\n /** Spacing configuration */\r\n spacing?: {\r\n /** Spacing before paragraph in twips (20 twips = 1 point) */\r\n before?: number;\r\n\r\n /** Spacing after paragraph in twips (20 twips = 1 point) */\r\n after?: number;\r\n\r\n /** Line spacing in twips (240 = single spacing when lineRule is 'auto') */\r\n line?: number;\r\n\r\n /** How to interpret the line spacing value */\r\n lineRule?: \"auto\" | \"exact\" | \"atLeast\";\r\n };\r\n\r\n /** Indentation configuration */\r\n indentation?: {\r\n /** Left indent in twips (1440 twips = 1 inch) */\r\n left?: number;\r\n\r\n /** Right indent in twips */\r\n right?: number;\r\n\r\n /** First line indent in twips (positive = indent, negative = outdent) */\r\n firstLine?: number;\r\n\r\n /** Hanging indent in twips (typically used for lists) */\r\n hanging?: number;\r\n };\r\n\r\n /**\r\n * Whether to remove spacing between consecutive paragraphs of the same style\r\n * Per ECMA-376 Part 1 §17.3.1.8\r\n */\r\n contextualSpacing?: boolean;\r\n}\r\n\r\n/**\r\n * Table appearance options for Heading2 wrapping\r\n * Heading2 paragraphs are always wrapped in 1x1 tables with these settings\r\n */\r\nexport interface Heading2TableOptions {\r\n /** Cell background color as hex without # (e.g., 'BFBFBF' for gray) */\r\n shading?: string;\r\n\r\n /** Top cell margin in twips */\r\n marginTop?: number;\r\n\r\n /** Bottom cell margin in twips */\r\n marginBottom?: number;\r\n\r\n /** Left cell margin in twips (115 twips = 0.08 inches) */\r\n marginLeft?: number;\r\n\r\n /** Right cell margin in twips (115 twips = 0.08 inches) */\r\n marginRight?: number;\r\n\r\n /** Table width as percentage (5000 = 100%) */\r\n tableWidthPercent?: number;\r\n}\r\n\r\n/**\r\n * Base style configuration combining run and paragraph formatting\r\n */\r\nexport interface StyleConfig {\r\n /** Character formatting for the style */\r\n run?: StyleRunFormatting;\r\n\r\n /** Paragraph formatting for the style */\r\n paragraph?: StyleParagraphFormatting;\r\n}\r\n\r\n/**\r\n * Extended configuration for Heading2 style including table options\r\n * Heading2 paragraphs are always wrapped in tables\r\n */\r\nexport interface Heading2Config extends StyleConfig {\r\n /** Table appearance options for wrapping Heading2 paragraphs */\r\n tableOptions?: Heading2TableOptions;\r\n}\r\n\r\n/**\r\n * Extended configuration for Normal style with alignment preservation options\r\n */\r\nexport interface NormalConfig extends StyleConfig {\r\n /**\r\n * Whether to preserve center alignment during style application.\r\n * When true, paragraphs that are center-aligned will retain their center alignment\r\n * instead of being changed to the Normal style's alignment (typically 'left').\r\n * This is useful for preserving intentional centering like image captions or table headers.\r\n * @default false\r\n */\r\n preserveCenterAlignment?: boolean;\r\n}\r\n\r\n/**\r\n * Complete configuration for applyStyles()\r\n * All properties are optional - defaults will be used if not provided\r\n */\r\nexport interface ApplyStylesOptions {\r\n /** Heading1 style configuration */\r\n heading1?: StyleConfig;\r\n\r\n /** Heading2 style configuration with table options */\r\n heading2?: Heading2Config;\r\n\r\n /** Heading3 style configuration */\r\n heading3?: StyleConfig;\r\n\r\n /** Normal style configuration with alignment preservation options */\r\n normal?: NormalConfig;\r\n\r\n /** List Paragraph style configuration */\r\n listParagraph?: StyleConfig;\r\n\r\n /**\r\n * Whether to preserve blank lines added after 1x1 Heading 2 tables.\r\n * When true, blank paragraphs added after Heading 2 tables are marked as preserved\r\n * to prevent accidental removal by document processing operations (e.g., removing extra blank lines).\r\n * @default true\r\n */\r\n preserveBlankLinesAfterHeading2Tables?: boolean;\r\n\r\n /**\r\n * Whether to preserve white font (FFFFFF) color during style application.\r\n * When true, runs with white color will not have their color changed.\r\n * This is useful for preserving hidden text like ID tags or overlay text.\r\n * @default false\r\n */\r\n preserveWhiteFont?: boolean;\r\n\r\n /**\r\n * Whether to apply Normal style changes to NormalWeb (Normal (Web)) style as well.\r\n * When true (default), if NormalWeb style exists in the document,\r\n * it will receive the same formatting changes applied to Normal.\r\n * This ensures consistency between Normal and Normal (Web) styles.\r\n * @default true\r\n */\r\n linkNormalWebToNormal?: boolean;\r\n}\r\n\r\n/**\r\n * @deprecated Use {@link ApplyStylesOptions} instead (renamed in v4.0.0)\r\n */\r\nexport type ApplyCustomFormattingOptions = ApplyStylesOptions;\r\n"]}
1
+ {"version":3,"file":"styleConfig.js","sourceRoot":"","sources":["../../src/types/styleConfig.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Configuration interfaces for customizable style formatting\n * Used by Document.applyCustomFormattingToExistingStyles()\n */\n\n/**\n * Run (character) formatting configuration for styles\n */\nexport interface StyleRunFormatting {\n /** Font family name (e.g., 'Verdana', 'Arial', 'Times New Roman') */\n font?: string;\n\n /** Font size in points (e.g., 12, 14, 18) */\n size?: number;\n\n /** Whether text should be bold */\n bold?: boolean;\n\n /** Whether text should be italic */\n italic?: boolean;\n\n /** Whether text should be underlined */\n underline?: boolean;\n\n /** Text color as hex without # (e.g., '000000', 'FF0000') */\n color?: string;\n\n /** If true, preserve existing bold formatting (don't apply bold property) */\n preserveBold?: boolean;\n\n /** If true, preserve existing italic formatting (don't apply italic property) */\n preserveItalic?: boolean;\n\n /** If true, preserve existing underline formatting (don't apply underline property) */\n preserveUnderline?: boolean;\n}\n\n/**\n * Paragraph formatting configuration for styles\n */\nexport interface StyleParagraphFormatting {\n /** Text alignment */\n alignment?: 'left' | 'center' | 'right' | 'justify';\n\n /** Spacing configuration */\n spacing?: {\n /** Spacing before paragraph in twips (20 twips = 1 point) */\n before?: number;\n\n /** Spacing after paragraph in twips (20 twips = 1 point) */\n after?: number;\n\n /** Line spacing in twips (240 = single spacing when lineRule is 'auto') */\n line?: number;\n\n /** How to interpret the line spacing value */\n lineRule?: 'auto' | 'exact' | 'atLeast';\n };\n\n /** Indentation configuration */\n indentation?: {\n /** Left indent in twips (1440 twips = 1 inch) */\n left?: number;\n\n /** Right indent in twips */\n right?: number;\n\n /** First line indent in twips (positive = indent, negative = outdent) */\n firstLine?: number;\n\n /** Hanging indent in twips (typically used for lists) */\n hanging?: number;\n };\n\n /**\n * Whether to remove spacing between consecutive paragraphs of the same style\n * Per ECMA-376 Part 1 §17.3.1.8\n */\n contextualSpacing?: boolean;\n}\n\n/**\n * Table appearance options for Heading2 wrapping\n * Heading2 paragraphs are always wrapped in 1x1 tables with these settings\n */\nexport interface Heading2TableOptions {\n /** Cell background color as hex without # (e.g., 'BFBFBF' for gray) */\n shading?: string;\n\n /** Top cell margin in twips */\n marginTop?: number;\n\n /** Bottom cell margin in twips */\n marginBottom?: number;\n\n /** Left cell margin in twips (115 twips = 0.08 inches) */\n marginLeft?: number;\n\n /** Right cell margin in twips (115 twips = 0.08 inches) */\n marginRight?: number;\n\n /** Table width as percentage (5000 = 100%) */\n tableWidthPercent?: number;\n}\n\n/**\n * Base style configuration combining run and paragraph formatting\n */\nexport interface StyleConfig {\n /** Character formatting for the style */\n run?: StyleRunFormatting;\n\n /** Paragraph formatting for the style */\n paragraph?: StyleParagraphFormatting;\n}\n\n/**\n * Extended configuration for Heading2 style including table options\n * Heading2 paragraphs are always wrapped in tables\n */\nexport interface Heading2Config extends StyleConfig {\n /** Table appearance options for wrapping Heading2 paragraphs */\n tableOptions?: Heading2TableOptions;\n}\n\n/**\n * Extended configuration for Normal style with alignment preservation options\n */\nexport interface NormalConfig extends StyleConfig {\n /**\n * Whether to preserve center alignment during style application.\n * When true, paragraphs that are center-aligned will retain their center alignment\n * instead of being changed to the Normal style's alignment (typically 'left').\n * This is useful for preserving intentional centering like image captions or table headers.\n * @default false\n */\n preserveCenterAlignment?: boolean;\n}\n\n/**\n * Complete configuration for applyStyles()\n * All properties are optional - defaults will be used if not provided\n */\nexport interface ApplyStylesOptions {\n /** Heading1 style configuration */\n heading1?: StyleConfig;\n\n /** Heading2 style configuration with table options */\n heading2?: Heading2Config;\n\n /** Heading3 style configuration */\n heading3?: StyleConfig;\n\n /** Normal style configuration with alignment preservation options */\n normal?: NormalConfig;\n\n /** List Paragraph style configuration */\n listParagraph?: StyleConfig;\n\n /**\n * Whether to preserve blank lines added after 1x1 Heading 2 tables.\n * When true, blank paragraphs added after Heading 2 tables are marked as preserved\n * to prevent accidental removal by document processing operations (e.g., removing extra blank lines).\n * @default true\n */\n preserveBlankLinesAfterHeading2Tables?: boolean;\n\n /**\n * Whether to preserve white font (FFFFFF) color during style application.\n * When true, runs with white color will not have their color changed.\n * This is useful for preserving hidden text like ID tags or overlay text.\n * @default false\n */\n preserveWhiteFont?: boolean;\n\n /**\n * Whether to apply Normal style changes to NormalWeb (Normal (Web)) style as well.\n * When true (default), if NormalWeb style exists in the document,\n * it will receive the same formatting changes applied to Normal.\n * This ensures consistency between Normal and Normal (Web) styles.\n * @default true\n */\n linkNormalWebToNormal?: boolean;\n}\n\n/**\n * @deprecated Use {@link ApplyStylesOptions} instead (renamed in v4.0.0)\n */\nexport type ApplyCustomFormattingOptions = ApplyStylesOptions;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChangelogGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ChangelogGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChangelogGenerator.d.ts","sourceRoot":"","sources":["../../src/utils/ChangelogGenerator.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,8 @@ class ChangelogGenerator {
27
27
  filters: {
28
28
  categories: opts.filterCategories?.length ?? 0,
29
29
  authors: opts.filterAuthors?.length ?? 0,
30
- dateRange: !!opts.filterDateRange
31
- }
30
+ dateRange: !!opts.filterDateRange,
31
+ },
32
32
  });
33
33
  const entries = [];
34
34
  let filtered = 0;
@@ -68,10 +68,8 @@ class ChangelogGenerator {
68
68
  const type = revision.getType();
69
69
  const category = this.categorize(revision);
70
70
  const runs = revision.getRuns();
71
- const text = runs.map(r => r.getText()).join('');
72
- const truncatedText = text.length > maxContextLength
73
- ? text.substring(0, maxContextLength) + '...'
74
- : text;
71
+ const text = runs.map((r) => r.getText()).join('');
72
+ const truncatedText = text.length > maxContextLength ? text.substring(0, maxContextLength) + '...' : text;
75
73
  const content = {};
76
74
  if (type === 'insert' || type === 'moveTo') {
77
75
  content.after = truncatedText;
@@ -102,10 +100,7 @@ class ChangelogGenerator {
102
100
  }
103
101
  let propertyChange;
104
102
  if (prevProps || newProps) {
105
- const allKeys = new Set([
106
- ...Object.keys(prevProps || {}),
107
- ...Object.keys(newProps || {}),
108
- ]);
103
+ const allKeys = new Set([...Object.keys(prevProps || {}), ...Object.keys(newProps || {})]);
109
104
  const firstKey = Array.from(allKeys)[0];
110
105
  if (firstKey) {
111
106
  propertyChange = {
@@ -199,12 +194,12 @@ class ChangelogGenerator {
199
194
  count: groupEntries.length,
200
195
  category: first.category,
201
196
  commonAttributes: {
202
- author: this.allSame(groupEntries.map(e => e.author)) ? first.author : undefined,
197
+ author: this.allSame(groupEntries.map((e) => e.author)) ? first.author : undefined,
203
198
  revisionType: first.revisionType,
204
199
  propertyChanged: first.propertyChange?.property,
205
200
  newValue: first.propertyChange?.newValue,
206
201
  },
207
- changeIds: groupEntries.map(e => e.id),
202
+ changeIds: groupEntries.map((e) => e.id),
208
203
  });
209
204
  }
210
205
  consolidated.sort((a, b) => b.count - a.count);
@@ -212,7 +207,7 @@ class ChangelogGenerator {
212
207
  getLogger().info('Entries consolidated', {
213
208
  input: entries.length,
214
209
  groups: consolidated.length,
215
- reduction: `${Math.round((1 - consolidated.length / entries.length) * 100)}%`
210
+ reduction: `${Math.round((1 - consolidated.length / entries.length) * 100)}%`,
216
211
  });
217
212
  }
218
213
  return consolidated;
@@ -263,7 +258,7 @@ class ChangelogGenerator {
263
258
  if (arr.length === 0)
264
259
  return true;
265
260
  const first = arr[0];
266
- return arr.every(v => v === first);
261
+ return arr.every((v) => v === first);
267
262
  }
268
263
  static categorize(revision) {
269
264
  const type = revision.getType();
@@ -319,10 +314,8 @@ class ChangelogGenerator {
319
314
  const type = revision.getType();
320
315
  const author = revision.getAuthor();
321
316
  const runs = revision.getRuns();
322
- const text = runs.map(r => r.getText()).join('');
323
- const excerpt = text.length > maxLength
324
- ? `"${text.substring(0, maxLength)}..."`
325
- : text ? `"${text}"` : '';
317
+ const text = runs.map((r) => r.getText()).join('');
318
+ const excerpt = text.length > maxLength ? `"${text.substring(0, maxLength)}..."` : text ? `"${text}"` : '';
326
319
  switch (type) {
327
320
  case 'insert':
328
321
  return excerpt ? `Inserted ${excerpt}` : 'Inserted content';
@@ -487,10 +480,7 @@ class ChangelogGenerator {
487
480
  return `Changed ${context}`;
488
481
  }
489
482
  const propNames = [];
490
- const allKeys = new Set([
491
- ...Object.keys(prevProps || {}),
492
- ...Object.keys(newProps || {}),
493
- ]);
483
+ const allKeys = new Set([...Object.keys(prevProps || {}), ...Object.keys(newProps || {})]);
494
484
  for (const key of allKeys) {
495
485
  const oldVal = prevProps?.[key];
496
486
  const newVal = newProps?.[key];
@@ -708,7 +698,7 @@ class ChangelogGenerator {
708
698
  logger.info('Changelog entries processed', {
709
699
  entries: entries.length,
710
700
  format,
711
- sorted: !!options?.sortBy
701
+ sorted: !!options?.sortBy,
712
702
  });
713
703
  switch (format) {
714
704
  case 'json':
@@ -746,89 +736,89 @@ class ChangelogGenerator {
746
736
  bookmark: 'Bookmark Changes',
747
737
  contentControl: 'Content Control Changes',
748
738
  };
749
- let html = `<!DOCTYPE html>
750
- <html lang="en">
751
- <head>
752
- <meta charset="UTF-8">
753
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
754
- <title>Document Changes</title>
755
- <style>
756
- body {
757
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
758
- max-width: 900px;
759
- margin: 0 auto;
760
- padding: 20px;
761
- line-height: 1.6;
762
- color: #333;
763
- }
764
- h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
765
- h2 { color: #34495e; margin-top: 30px; }
766
- .summary { background: #f8f9fa; padding: 15px; border-radius: 8px; margin-bottom: 20px; }
767
- .summary p { margin: 5px 0; }
768
- .category { margin-bottom: 30px; }
769
- .change-list { list-style: none; padding: 0; }
770
- .change-item {
771
- background: #fff;
772
- border: 1px solid #e9ecef;
773
- border-radius: 6px;
774
- padding: 12px 15px;
775
- margin-bottom: 10px;
776
- }
777
- .change-item:hover { box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
778
- .change-description { font-weight: 500; color: #2c3e50; }
779
- .change-meta { font-size: 0.85em; color: #7f8c8d; margin-top: 5px; }
780
- .change-content { margin-top: 8px; font-size: 0.9em; }
781
- .removed { color: #c0392b; text-decoration: line-through; }
782
- .added { color: #27ae60; }
783
- .badge {
784
- display: inline-block;
785
- padding: 2px 8px;
786
- border-radius: 4px;
787
- font-size: 0.75em;
788
- font-weight: 600;
789
- text-transform: uppercase;
790
- }
791
- .badge-insert { background: #d4edda; color: #155724; }
792
- .badge-delete { background: #f8d7da; color: #721c24; }
793
- .badge-formatting { background: #cce5ff; color: #004085; }
794
- .badge-structural { background: #fff3cd; color: #856404; }
795
- .badge-table { background: #e2e3e5; color: #383d41; }
796
- </style>
797
- </head>
798
- <body>
799
- <h1>Document Changes</h1>
800
-
801
- <div class="summary">
739
+ let html = `<!DOCTYPE html>
740
+ <html lang="en">
741
+ <head>
742
+ <meta charset="UTF-8">
743
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
744
+ <title>Document Changes</title>
745
+ <style>
746
+ body {
747
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
748
+ max-width: 900px;
749
+ margin: 0 auto;
750
+ padding: 20px;
751
+ line-height: 1.6;
752
+ color: #333;
753
+ }
754
+ h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
755
+ h2 { color: #34495e; margin-top: 30px; }
756
+ .summary { background: #f8f9fa; padding: 15px; border-radius: 8px; margin-bottom: 20px; }
757
+ .summary p { margin: 5px 0; }
758
+ .category { margin-bottom: 30px; }
759
+ .change-list { list-style: none; padding: 0; }
760
+ .change-item {
761
+ background: #fff;
762
+ border: 1px solid #e9ecef;
763
+ border-radius: 6px;
764
+ padding: 12px 15px;
765
+ margin-bottom: 10px;
766
+ }
767
+ .change-item:hover { box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
768
+ .change-description { font-weight: 500; color: #2c3e50; }
769
+ .change-meta { font-size: 0.85em; color: #7f8c8d; margin-top: 5px; }
770
+ .change-content { margin-top: 8px; font-size: 0.9em; }
771
+ .removed { color: #c0392b; text-decoration: line-through; }
772
+ .added { color: #27ae60; }
773
+ .badge {
774
+ display: inline-block;
775
+ padding: 2px 8px;
776
+ border-radius: 4px;
777
+ font-size: 0.75em;
778
+ font-weight: 600;
779
+ text-transform: uppercase;
780
+ }
781
+ .badge-insert { background: #d4edda; color: #155724; }
782
+ .badge-delete { background: #f8d7da; color: #721c24; }
783
+ .badge-formatting { background: #cce5ff; color: #004085; }
784
+ .badge-structural { background: #fff3cd; color: #856404; }
785
+ .badge-table { background: #e2e3e5; color: #383d41; }
786
+ </style>
787
+ </head>
788
+ <body>
789
+ <h1>Document Changes</h1>
790
+
791
+ <div class="summary">
802
792
  <p><strong>Total Changes:</strong> ${summary.total}</p>`;
803
793
  if (summary.dateRange) {
804
- html += `
794
+ html += `
805
795
  <p><strong>Date Range:</strong> ${summary.dateRange.earliest.toLocaleDateString()} - ${summary.dateRange.latest.toLocaleDateString()}</p>`;
806
796
  }
807
797
  const authors = Object.keys(summary.byAuthor);
808
798
  if (authors.length > 0) {
809
- html += `
799
+ html += `
810
800
  <p><strong>Authors:</strong> ${authors.join(', ')}</p>`;
811
801
  }
812
- html += `
813
- </div>
802
+ html += `
803
+ </div>
814
804
  `;
815
805
  for (const [category, categoryEntries] of byCategory) {
816
806
  if (categoryEntries.length === 0)
817
807
  continue;
818
- html += `
819
- <section class="category">
820
- <h2>${categoryTitles[category]}</h2>
808
+ html += `
809
+ <section class="category">
810
+ <h2>${categoryTitles[category]}</h2>
821
811
  <ul class="change-list">`;
822
812
  for (const entry of categoryEntries) {
823
813
  const badgeClass = this.getBadgeClass(entry.revisionType);
824
814
  const date = entry.date.toLocaleDateString();
825
- html += `
826
- <li class="change-item">
827
- <span class="badge ${badgeClass}">${entry.revisionType}</span>
828
- <div class="change-description">${this.escapeHTML(entry.description)}</div>
815
+ html += `
816
+ <li class="change-item">
817
+ <span class="badge ${badgeClass}">${entry.revisionType}</span>
818
+ <div class="change-description">${this.escapeHTML(entry.description)}</div>
829
819
  <div class="change-meta">${this.escapeHTML(entry.author)} - ${date}</div>`;
830
820
  if (entry.content.before || entry.content.after) {
831
- html += `
821
+ html += `
832
822
  <div class="change-content">`;
833
823
  if (entry.content.before) {
834
824
  html += `<span class="removed">${this.escapeHTML(entry.content.before || '')}</span> `;
@@ -838,15 +828,15 @@ class ChangelogGenerator {
838
828
  }
839
829
  html += `</div>`;
840
830
  }
841
- html += `
831
+ html += `
842
832
  </li>`;
843
833
  }
844
- html += `
845
- </ul>
834
+ html += `
835
+ </ul>
846
836
  </section>`;
847
837
  }
848
- html += `
849
- </body>
838
+ html += `
839
+ </body>
850
840
  </html>`;
851
841
  return html;
852
842
  }
@@ -863,7 +853,7 @@ class ChangelogGenerator {
863
853
  'Before',
864
854
  'After',
865
855
  'Paragraph',
866
- 'Run'
856
+ 'Run',
867
857
  ];
868
858
  const lines = [];
869
859
  if (includeHeaders) {
@@ -900,18 +890,24 @@ class ChangelogGenerator {
900
890
  }
901
891
  static getSummaryByElement(entries) {
902
892
  return {
903
- paragraphs: entries.filter(e => e.revisionType === 'paragraphPropertiesChange' ||
893
+ paragraphs: entries.filter((e) => e.revisionType === 'paragraphPropertiesChange' ||
904
894
  e.revisionType === 'numberingChange' ||
905
895
  (e.revisionType === 'insert' && !e.location.runIndex) ||
906
896
  (e.revisionType === 'delete' && !e.location.runIndex)),
907
- tables: entries.filter(e => ['tablePropertiesChange', 'tableRowPropertiesChange',
908
- 'tableCellPropertiesChange', 'tableExceptionPropertiesChange',
909
- 'tableCellInsert', 'tableCellDelete', 'tableCellMerge'].includes(e.revisionType)),
910
- sections: entries.filter(e => e.revisionType === 'sectionPropertiesChange'),
911
- runs: entries.filter(e => e.revisionType === 'runPropertiesChange' ||
897
+ tables: entries.filter((e) => [
898
+ 'tablePropertiesChange',
899
+ 'tableRowPropertiesChange',
900
+ 'tableCellPropertiesChange',
901
+ 'tableExceptionPropertiesChange',
902
+ 'tableCellInsert',
903
+ 'tableCellDelete',
904
+ 'tableCellMerge',
905
+ ].includes(e.revisionType)),
906
+ sections: entries.filter((e) => e.revisionType === 'sectionPropertiesChange'),
907
+ runs: entries.filter((e) => e.revisionType === 'runPropertiesChange' ||
912
908
  (e.revisionType === 'insert' && e.location.runIndex !== undefined) ||
913
909
  (e.revisionType === 'delete' && e.location.runIndex !== undefined)),
914
- hyperlinks: entries.filter(e => e.revisionType === 'hyperlinkChange'),
910
+ hyperlinks: entries.filter((e) => e.revisionType === 'hyperlinkChange'),
915
911
  };
916
912
  }
917
913
  static sortEntries(entries, sortBy, order) {