docxmlater 10.1.4 → 10.1.6

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 (372) 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 +51 -50
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +486 -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 +1 -0
  146. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  147. package/dist/formatting/NumberingManager.js +27 -9
  148. package/dist/formatting/NumberingManager.js.map +1 -1
  149. package/dist/formatting/Style.d.ts +11 -11
  150. package/dist/formatting/Style.d.ts.map +1 -1
  151. package/dist/formatting/Style.js +219 -247
  152. package/dist/formatting/Style.js.map +1 -1
  153. package/dist/formatting/StylesManager.d.ts +2 -2
  154. package/dist/formatting/StylesManager.d.ts.map +1 -1
  155. package/dist/formatting/StylesManager.js +96 -102
  156. package/dist/formatting/StylesManager.js.map +1 -1
  157. package/dist/helpers/CleanupHelper.d.ts +1 -1
  158. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  159. package/dist/helpers/CleanupHelper.js +6 -6
  160. package/dist/helpers/CleanupHelper.js.map +1 -1
  161. package/dist/images/ImageOptimizer.js +7 -7
  162. package/dist/images/ImageOptimizer.js.map +1 -1
  163. package/dist/index.d.ts +9 -9
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js.map +1 -1
  166. package/dist/managers/DrawingManager.js.map +1 -1
  167. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  168. package/dist/tracking/DocumentTrackingContext.js +23 -7
  169. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  170. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  171. package/dist/tracking/TrackingContext.js.map +1 -1
  172. package/dist/types/compatibility-types.js.map +1 -1
  173. package/dist/types/formatting.js.map +1 -1
  174. package/dist/types/list-types.d.ts +6 -6
  175. package/dist/types/list-types.js.map +1 -1
  176. package/dist/types/settings-types.js.map +1 -1
  177. package/dist/types/styleConfig.d.ts +2 -2
  178. package/dist/types/styleConfig.js.map +1 -1
  179. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  180. package/dist/utils/ChangelogGenerator.js +97 -101
  181. package/dist/utils/ChangelogGenerator.js.map +1 -1
  182. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  183. package/dist/utils/CompatibilityUpgrader.js +1 -1
  184. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  185. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  186. package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
  187. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  188. package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
  189. package/dist/utils/MoveOperationHelper.js +1 -1
  190. package/dist/utils/MoveOperationHelper.js.map +1 -1
  191. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
  192. package/dist/utils/RevisionAwareProcessor.js +2 -4
  193. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  194. package/dist/utils/RevisionWalker.d.ts.map +1 -1
  195. package/dist/utils/RevisionWalker.js +4 -12
  196. package/dist/utils/RevisionWalker.js.map +1 -1
  197. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  198. package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
  199. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  200. package/dist/utils/ShadingResolver.d.ts.map +1 -1
  201. package/dist/utils/ShadingResolver.js +1 -1
  202. package/dist/utils/ShadingResolver.js.map +1 -1
  203. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  204. package/dist/utils/acceptRevisions.js +23 -12
  205. package/dist/utils/acceptRevisions.js.map +1 -1
  206. package/dist/utils/cnfStyleDecoder.d.ts +1 -1
  207. package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
  208. package/dist/utils/cnfStyleDecoder.js +40 -40
  209. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  210. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  211. package/dist/utils/corruptionDetection.js.map +1 -1
  212. package/dist/utils/dateFormatting.js.map +1 -1
  213. package/dist/utils/deepClone.js +1 -1
  214. package/dist/utils/deepClone.js.map +1 -1
  215. package/dist/utils/diagnostics.d.ts.map +1 -1
  216. package/dist/utils/diagnostics.js +1 -1
  217. package/dist/utils/diagnostics.js.map +1 -1
  218. package/dist/utils/errorHandling.js.map +1 -1
  219. package/dist/utils/formatting.d.ts.map +1 -1
  220. package/dist/utils/formatting.js +10 -2
  221. package/dist/utils/formatting.js.map +1 -1
  222. package/dist/utils/list-detection.d.ts +2 -2
  223. package/dist/utils/list-detection.d.ts.map +1 -1
  224. package/dist/utils/list-detection.js +21 -23
  225. package/dist/utils/list-detection.js.map +1 -1
  226. package/dist/utils/logger.d.ts.map +1 -1
  227. package/dist/utils/logger.js +12 -7
  228. package/dist/utils/logger.js.map +1 -1
  229. package/dist/utils/parsingHelpers.js.map +1 -1
  230. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  231. package/dist/utils/stripTrackedChanges.js +3 -3
  232. package/dist/utils/stripTrackedChanges.js.map +1 -1
  233. package/dist/utils/textDiff.d.ts +1 -1
  234. package/dist/utils/textDiff.js +8 -8
  235. package/dist/utils/textDiff.js.map +1 -1
  236. package/dist/utils/units.js.map +1 -1
  237. package/dist/utils/validation.d.ts.map +1 -1
  238. package/dist/utils/validation.js +24 -7
  239. package/dist/utils/validation.js.map +1 -1
  240. package/dist/utils/xmlSanitization.d.ts.map +1 -1
  241. package/dist/utils/xmlSanitization.js +3 -3
  242. package/dist/utils/xmlSanitization.js.map +1 -1
  243. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  244. package/dist/validation/RevisionAutoFixer.js +5 -5
  245. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  246. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  247. package/dist/validation/RevisionValidator.js +7 -9
  248. package/dist/validation/RevisionValidator.js.map +1 -1
  249. package/dist/validation/ValidationRules.js +3 -3
  250. package/dist/validation/ValidationRules.js.map +1 -1
  251. package/dist/validation/index.js.map +1 -1
  252. package/dist/xml/XMLBuilder.d.ts +1 -1
  253. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  254. package/dist/xml/XMLBuilder.js +98 -100
  255. package/dist/xml/XMLBuilder.js.map +1 -1
  256. package/dist/xml/XMLParser.d.ts.map +1 -1
  257. package/dist/xml/XMLParser.js +61 -66
  258. package/dist/xml/XMLParser.js.map +1 -1
  259. package/dist/zip/ZipHandler.d.ts.map +1 -1
  260. package/dist/zip/ZipHandler.js.map +1 -1
  261. package/dist/zip/ZipReader.d.ts.map +1 -1
  262. package/dist/zip/ZipReader.js +1 -3
  263. package/dist/zip/ZipReader.js.map +1 -1
  264. package/dist/zip/ZipWriter.d.ts +1 -1
  265. package/dist/zip/ZipWriter.d.ts.map +1 -1
  266. package/dist/zip/ZipWriter.js +28 -36
  267. package/dist/zip/ZipWriter.js.map +1 -1
  268. package/dist/zip/types.js +1 -1
  269. package/dist/zip/types.js.map +1 -1
  270. package/package.json +92 -92
  271. package/src/__tests__/helper-methods.test.ts +512 -512
  272. package/src/constants/legacyCompatFlags.ts +138 -138
  273. package/src/constants/limits.ts +50 -50
  274. package/src/core/Document.ts +1010 -1145
  275. package/src/core/DocumentContent.ts +461 -467
  276. package/src/core/DocumentGenerator.ts +1133 -1104
  277. package/src/core/DocumentIdManager.ts +158 -158
  278. package/src/core/DocumentParser.ts +2347 -2716
  279. package/src/core/DocumentValidator.ts +363 -372
  280. package/src/core/Relationship.ts +367 -367
  281. package/src/core/RelationshipManager.ts +429 -428
  282. package/src/elements/AlternateContent.ts +42 -42
  283. package/src/elements/Bookmark.ts +212 -210
  284. package/src/elements/BookmarkManager.ts +247 -250
  285. package/src/elements/Comment.ts +356 -359
  286. package/src/elements/CommentManager.ts +499 -502
  287. package/src/elements/CommonTypes.ts +524 -549
  288. package/src/elements/CustomXml.ts +36 -36
  289. package/src/elements/Endnote.ts +221 -217
  290. package/src/elements/EndnoteManager.ts +246 -249
  291. package/src/elements/Field.ts +1292 -1233
  292. package/src/elements/FieldHelpers.ts +329 -333
  293. package/src/elements/FontManager.ts +336 -339
  294. package/src/elements/Footer.ts +269 -269
  295. package/src/elements/Footnote.ts +221 -217
  296. package/src/elements/FootnoteManager.ts +246 -249
  297. package/src/elements/Header.ts +269 -269
  298. package/src/elements/HeaderFooterManager.ts +219 -219
  299. package/src/elements/Hyperlink.ts +1288 -1193
  300. package/src/elements/Image.ts +1982 -1756
  301. package/src/elements/ImageManager.ts +437 -432
  302. package/src/elements/ImageRun.ts +59 -59
  303. package/src/elements/MathElement.ts +65 -65
  304. package/src/elements/Paragraph.ts +4347 -4287
  305. package/src/elements/PreservedElement.ts +53 -53
  306. package/src/elements/PropertyChangeTypes.ts +458 -442
  307. package/src/elements/RangeMarker.ts +382 -400
  308. package/src/elements/Revision.ts +1198 -1217
  309. package/src/elements/RevisionContent.ts +73 -73
  310. package/src/elements/RevisionManager.ts +1070 -1070
  311. package/src/elements/Run.ts +3103 -3073
  312. package/src/elements/Section.ts +1521 -1421
  313. package/src/elements/Shape.ts +884 -873
  314. package/src/elements/StructuredDocumentTag.ts +1176 -1207
  315. package/src/elements/Table.ts +2468 -2524
  316. package/src/elements/TableCell.ts +1617 -1621
  317. package/src/elements/TableGridChange.ts +149 -151
  318. package/src/elements/TableOfContents.ts +701 -691
  319. package/src/elements/TableOfContentsElement.ts +89 -89
  320. package/src/elements/TableRow.ts +960 -929
  321. package/src/elements/TextBox.ts +766 -768
  322. package/src/formatting/AbstractNumbering.ts +580 -579
  323. package/src/formatting/NumberingInstance.ts +295 -299
  324. package/src/formatting/NumberingLevel.ts +981 -1040
  325. package/src/formatting/NumberingManager.ts +875 -827
  326. package/src/formatting/Style.ts +1785 -1879
  327. package/src/formatting/StylesManager.ts +1090 -1130
  328. package/src/helpers/CleanupHelper.ts +524 -524
  329. package/src/images/ImageOptimizer.ts +274 -274
  330. package/src/index.ts +559 -554
  331. package/src/managers/DrawingManager.ts +319 -319
  332. package/src/tracking/DocumentTrackingContext.ts +687 -674
  333. package/src/tracking/TrackingContext.ts +175 -173
  334. package/src/types/compatibility-types.ts +49 -49
  335. package/src/types/formatting.ts +210 -210
  336. package/src/types/list-types.ts +14 -14
  337. package/src/types/settings-types.ts +59 -59
  338. package/src/types/styleConfig.ts +189 -189
  339. package/src/utils/ChangelogGenerator.ts +1583 -1581
  340. package/src/utils/CompatibilityUpgrader.ts +235 -237
  341. package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
  342. package/src/utils/MoveOperationHelper.ts +233 -238
  343. package/src/utils/RevisionAwareProcessor.ts +518 -526
  344. package/src/utils/RevisionWalker.ts +427 -457
  345. package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
  346. package/src/utils/ShadingResolver.ts +105 -107
  347. package/src/utils/acceptRevisions.ts +723 -714
  348. package/src/utils/cnfStyleDecoder.ts +212 -217
  349. package/src/utils/corruptionDetection.ts +346 -345
  350. package/src/utils/dateFormatting.ts +20 -20
  351. package/src/utils/deepClone.ts +77 -78
  352. package/src/utils/diagnostics.ts +125 -129
  353. package/src/utils/errorHandling.ts +80 -80
  354. package/src/utils/formatting.ts +220 -213
  355. package/src/utils/list-detection.ts +32 -42
  356. package/src/utils/logger.ts +412 -404
  357. package/src/utils/parsingHelpers.ts +190 -190
  358. package/src/utils/stripTrackedChanges.ts +356 -353
  359. package/src/utils/textDiff.ts +100 -100
  360. package/src/utils/units.ts +421 -421
  361. package/src/utils/validation.ts +553 -542
  362. package/src/utils/xmlSanitization.ts +179 -182
  363. package/src/validation/RevisionAutoFixer.ts +541 -542
  364. package/src/validation/RevisionValidator.ts +470 -460
  365. package/src/validation/ValidationRules.ts +338 -338
  366. package/src/validation/index.ts +30 -30
  367. package/src/xml/XMLBuilder.ts +857 -871
  368. package/src/xml/XMLParser.ts +877 -919
  369. package/src/zip/ZipHandler.ts +629 -637
  370. package/src/zip/ZipReader.ts +295 -299
  371. package/src/zip/ZipWriter.ts +374 -390
  372. package/src/zip/types.ts +116 -116
@@ -1 +1 @@
1
- {"version":3,"file":"Style.js","sourceRoot":"","sources":["../../src/formatting/Style.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Style - Represents a style definition in a Word document\r\n * Supports paragraph, character, table, and numbering styles\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from \"../xml/XMLBuilder\";\r\nimport { ParagraphFormatting } from \"../elements/Paragraph\";\r\nimport { RunFormatting } from \"../elements/Run\";\r\nimport { ShadingConfig, ShadingPattern, buildShadingAttributes } from \"../elements/CommonTypes\";\r\nimport { Heading2TableOptions } from \"../types/styleConfig\";\r\nimport { deepClone } from \"../utils/deepClone\";\r\nimport { pointsToHalfPoints } from \"../utils/units\";\r\n\r\n/**\r\n * Style type\r\n */\r\nexport type StyleType = \"paragraph\" | \"character\" | \"table\" | \"numbering\";\r\n\r\n/**\r\n * Table alignment\r\n */\r\nexport type TableAlignment = \"left\" | \"center\" | \"right\";\r\n\r\n/**\r\n * Border properties\r\n */\r\nexport interface BorderProperties {\r\n /** Border style */\r\n style?: \"none\" | \"single\" | \"double\" | \"dashed\" | \"dotted\" | \"thick\";\r\n /** Border size in eighths of a point */\r\n size?: number;\r\n /** Border spacing/padding in points */\r\n space?: number;\r\n /** Border color (hex without #) */\r\n color?: string;\r\n}\r\n\r\n/**\r\n * Table borders (6 possible borders)\r\n */\r\nexport interface TableBorders {\r\n top?: BorderProperties;\r\n bottom?: BorderProperties;\r\n left?: BorderProperties;\r\n right?: BorderProperties;\r\n /** Inside horizontal borders */\r\n insideH?: BorderProperties;\r\n /** Inside vertical borders */\r\n insideV?: BorderProperties;\r\n}\r\n\r\n/**\r\n * Cell borders (8 possible borders, includes diagonals)\r\n */\r\nexport interface CellBorders extends TableBorders {\r\n /** Top-left to bottom-right diagonal */\r\n tl2br?: BorderProperties;\r\n /** Top-right to bottom-left diagonal */\r\n tr2bl?: BorderProperties;\r\n}\r\n\r\n/**\r\n * Shading properties\r\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\r\n */\r\nexport type ShadingProperties = ShadingConfig;\r\n\r\n/**\r\n * Cell margins\r\n */\r\nexport interface CellMargins {\r\n /** Top margin in twips */\r\n top?: number;\r\n /** Bottom margin in twips */\r\n bottom?: number;\r\n /** Left margin in twips */\r\n left?: number;\r\n /** Right margin in twips */\r\n right?: number;\r\n}\r\n\r\n/**\r\n * Table-level formatting properties (tblPr)\r\n */\r\nexport interface TableStyleFormatting {\r\n /** Table indentation from left margin in twips */\r\n indent?: number;\r\n /** Default cell spacing in twips */\r\n cellSpacing?: number;\r\n /** Table borders */\r\n borders?: TableBorders;\r\n /** Default cell margins */\r\n cellMargins?: CellMargins;\r\n /** Table background shading */\r\n shading?: ShadingProperties;\r\n /** Table alignment */\r\n alignment?: TableAlignment;\r\n}\r\n\r\n/**\r\n * Table cell formatting properties (tcPr)\r\n */\r\nexport interface TableCellStyleFormatting {\r\n /** Cell borders (8 possible borders) */\r\n borders?: CellBorders;\r\n /** Cell background shading */\r\n shading?: ShadingProperties;\r\n /** Cell-specific margins */\r\n margins?: CellMargins;\r\n /** Vertical alignment in cell */\r\n verticalAlignment?: \"top\" | \"center\" | \"bottom\";\r\n}\r\n\r\n/**\r\n * Table row formatting properties (trPr)\r\n */\r\nexport interface TableRowStyleFormatting {\r\n /** Prevent row from splitting across pages */\r\n cantSplit?: boolean;\r\n /** Mark row as header row */\r\n isHeader?: boolean;\r\n /** Row height in twips */\r\n height?: number;\r\n /** Row height rule */\r\n heightRule?: \"auto\" | \"exact\" | \"atLeast\";\r\n}\r\n\r\n/**\r\n * Conditional formatting type for table regions\r\n */\r\nexport type ConditionalFormattingType =\r\n | \"wholeTable\" // Entire table\r\n | \"firstRow\" // First row\r\n | \"lastRow\" // Last row\r\n | \"firstCol\" // First column\r\n | \"lastCol\" // Last column\r\n | \"band1Vert\" // Odd column banding\r\n | \"band2Vert\" // Even column banding\r\n | \"band1Horz\" // Odd row banding\r\n | \"band2Horz\" // Even row banding\r\n | \"nwCell\" // Northwest (top-left) corner cell\r\n | \"neCell\" // Northeast (top-right) corner cell\r\n | \"swCell\" // Southwest (bottom-left) corner cell\r\n | \"seCell\"; // Southeast (bottom-right) corner cell\r\n\r\n/**\r\n * Conditional table formatting for a specific region\r\n */\r\nexport interface ConditionalTableFormatting {\r\n /** Region type */\r\n type: ConditionalFormattingType;\r\n /** Paragraph formatting for this region */\r\n paragraphFormatting?: ParagraphFormatting;\r\n /** Run formatting for this region */\r\n runFormatting?: RunFormatting;\r\n /** Table formatting for this region */\r\n tableFormatting?: TableStyleFormatting;\r\n /** Cell formatting for this region */\r\n cellFormatting?: TableCellStyleFormatting;\r\n /** Row formatting for this region */\r\n rowFormatting?: TableRowStyleFormatting;\r\n}\r\n\r\n/**\r\n * Table style properties (Phase 5.1)\r\n */\r\nexport interface TableStyleProperties {\r\n /** Table-level formatting */\r\n table?: TableStyleFormatting;\r\n /** Default cell formatting */\r\n cell?: TableCellStyleFormatting;\r\n /** Default row formatting */\r\n row?: TableRowStyleFormatting;\r\n /** Rows per band for row banding (default 1) */\r\n rowBandSize?: number;\r\n /** Columns per band for column banding (default 1) */\r\n colBandSize?: number;\r\n /** Conditional formatting for specific table regions */\r\n conditionalFormatting?: ConditionalTableFormatting[];\r\n}\r\n\r\n/**\r\n * Style properties\r\n */\r\nexport interface StyleProperties {\r\n /** Unique style identifier */\r\n styleId: string;\r\n /** Display name */\r\n name: string;\r\n /** Style type */\r\n type: StyleType;\r\n /** Parent style ID for inheritance */\r\n basedOn?: string;\r\n /** Next style ID (auto-next paragraph style) */\r\n next?: string;\r\n /** Whether this is a default style */\r\n isDefault?: boolean;\r\n /** Whether this is a custom style */\r\n customStyle?: boolean;\r\n /** Paragraph formatting (for paragraph and table styles) */\r\n paragraphFormatting?: ParagraphFormatting;\r\n /** Numbering properties for styles that inherit list formatting */\r\n numPr?: {\r\n numId?: number;\r\n ilvl?: number;\r\n };\r\n /** Run formatting (for character and paragraph styles) */\r\n runFormatting?: RunFormatting;\r\n /** Table style properties (for table styles only - Phase 5.1) */\r\n tableStyle?: TableStyleProperties;\r\n\r\n // Style Gallery Metadata (Phase 5.3)\r\n /** Quick style - show in style gallery */\r\n qFormat?: boolean;\r\n /** UI priority - sort order in style picker (0-99, lower = higher priority) */\r\n uiPriority?: number;\r\n /** Semi-hidden - hide from gallery unless in use */\r\n semiHidden?: boolean;\r\n /** Unhide when used - auto-show when applied */\r\n unhideWhenUsed?: boolean;\r\n /** Locked - prevent modification */\r\n locked?: boolean;\r\n /** Personal - user-specific style */\r\n personal?: boolean;\r\n /** Personal compose - style for composing new messages */\r\n personalCompose?: boolean;\r\n /** Personal reply - style for replying to messages */\r\n personalReply?: boolean;\r\n /** Link - linked character/paragraph style ID */\r\n link?: string;\r\n /** Auto-redefine - update style from manual formatting */\r\n autoRedefine?: boolean;\r\n /** Aliases - alternative names (comma-separated) */\r\n aliases?: string;\r\n\r\n // Document Helper Metadata\r\n /**\r\n * Table options for Heading2 wrapping\r\n * Used by Document.applyCustomFormattingToExistingStyles() to configure\r\n * how Heading2 paragraphs are wrapped in tables\r\n */\r\n heading2TableOptions?: Heading2TableOptions;\r\n}\r\n\r\n/**\r\n * Represents a style definition\r\n */\r\nexport class Style {\r\n private properties: StyleProperties;\r\n\r\n /**\r\n * Creates a new Style\r\n * @param properties - Style properties\r\n */\r\n constructor(properties: StyleProperties) {\r\n this.properties = { ...properties };\r\n }\r\n\r\n /**\r\n * Gets the style ID\r\n * @returns Style ID\r\n */\r\n getStyleId(): string {\r\n return this.properties.styleId;\r\n }\r\n\r\n /**\r\n * Gets the style name\r\n * @returns Style name\r\n */\r\n getName(): string {\r\n return this.properties.name;\r\n }\r\n\r\n /**\r\n * Gets the style type\r\n * @returns Style type\r\n */\r\n getType(): StyleType {\r\n return this.properties.type;\r\n }\r\n\r\n /**\r\n * Gets all style properties\r\n * @returns Style properties\r\n */\r\n getProperties(): StyleProperties {\r\n return { ...this.properties };\r\n }\r\n\r\n /**\r\n * Gets whether this is a default style\r\n * @returns True if this is a default style for its type\r\n */\r\n getIsDefault(): boolean {\r\n return this.properties.isDefault ?? false;\r\n }\r\n\r\n /**\r\n * Sets whether this is a default style\r\n * @param value - True to mark as default style\r\n * @returns This style for chaining\r\n */\r\n setIsDefault(value: boolean): this {\r\n this.properties.isDefault = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the base style\r\n * @param styleId - Parent style ID\r\n * @returns This style for chaining\r\n */\r\n setBasedOn(styleId: string): this {\r\n this.properties.basedOn = styleId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the next style\r\n * @param styleId - Next style ID\r\n * @returns This style for chaining\r\n */\r\n setNext(styleId: string): this {\r\n this.properties.next = styleId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets paragraph formatting\r\n * @param formatting - Paragraph formatting options\r\n * @returns This style for chaining\r\n */\r\n setParagraphFormatting(formatting: ParagraphFormatting): this {\r\n this.properties.paragraphFormatting = { ...formatting };\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets run formatting\r\n * @param formatting - Run formatting options\r\n * @returns This style for chaining\r\n */\r\n setRunFormatting(formatting: RunFormatting): this {\r\n this.properties.runFormatting = { ...formatting };\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the current run formatting\r\n * @returns Run formatting or undefined if not set\r\n */\r\n getRunFormatting(): RunFormatting | undefined {\r\n return this.properties.runFormatting;\r\n }\r\n\r\n /**\r\n * Gets the current paragraph formatting\r\n * @returns Paragraph formatting or undefined if not set\r\n */\r\n getParagraphFormatting(): ParagraphFormatting | undefined {\r\n return this.properties.paragraphFormatting;\r\n }\r\n\r\n /**\r\n * Sets Heading2 table wrapping options\r\n * Used by Document.applyCustomFormattingToExistingStyles() when styleId is 'Heading2'\r\n * @param options - Table options for wrapping Heading2 paragraphs\r\n * @returns This style for chaining\r\n */\r\n setHeading2TableOptions(options: Heading2TableOptions): this {\r\n this.properties.heading2TableOptions = options;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the current Heading2 table options\r\n * @returns Heading2 table options or undefined if not set\r\n */\r\n getHeading2TableOptions(): Heading2TableOptions | undefined {\r\n return this.properties.heading2TableOptions;\r\n }\r\n\r\n /**\r\n * Sets whether this is a quick style (appears in style gallery)\r\n * @param enabled - True to show in quick style gallery\r\n * @returns This style for chaining\r\n */\r\n setQFormat(enabled: boolean): this {\r\n this.properties.qFormat = enabled;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the UI priority (sort order in style picker)\r\n * @param priority - Priority value (0-99, lower = higher priority)\r\n * @returns This style for chaining\r\n */\r\n setUiPriority(priority: number): this {\r\n if (priority < 0 || priority > 99) {\r\n throw new Error(\"UI priority must be between 0 and 99\");\r\n }\r\n this.properties.uiPriority = priority;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether this style is semi-hidden (hidden from recommended list)\r\n * @param hidden - True to hide from recommended list\r\n * @returns This style for chaining\r\n */\r\n setSemiHidden(hidden: boolean): this {\r\n this.properties.semiHidden = hidden;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to unhide this style when first used\r\n * @param enabled - True to auto-show when applied\r\n * @returns This style for chaining\r\n */\r\n setUnhideWhenUsed(enabled: boolean): this {\r\n this.properties.unhideWhenUsed = enabled;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether this style is locked (prevents modification)\r\n * @param locked - True to lock the style\r\n * @returns This style for chaining\r\n */\r\n setLocked(locked: boolean): this {\r\n this.properties.locked = locked;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether this is a personal style (user-specific)\r\n * @param personal - True to mark as personal\r\n * @returns This style for chaining\r\n */\r\n setPersonal(personal: boolean): this {\r\n this.properties.personal = personal;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether this is a personal compose style (for composing new messages)\r\n * @param enabled - True to mark as personal compose\r\n */\r\n setPersonalCompose(enabled: boolean): this {\r\n this.properties.personalCompose = enabled;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether this is a personal compose style\r\n */\r\n getPersonalCompose(): boolean {\r\n return this.properties.personalCompose === true;\r\n }\r\n\r\n /**\r\n * Sets whether this is a personal reply style (for replying to messages)\r\n * @param enabled - True to mark as personal reply\r\n */\r\n setPersonalReply(enabled: boolean): this {\r\n this.properties.personalReply = enabled;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether this is a personal reply style\r\n */\r\n getPersonalReply(): boolean {\r\n return this.properties.personalReply === true;\r\n }\r\n\r\n /**\r\n * Sets the linked style ID (for character/paragraph style linking)\r\n * @param styleId - ID of the linked style\r\n * @returns This style for chaining\r\n */\r\n setLink(styleId: string): this {\r\n this.properties.link = styleId;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to auto-redefine this style from manual formatting\r\n * @param enabled - True to enable auto-redefine\r\n * @returns This style for chaining\r\n */\r\n setAutoRedefine(enabled: boolean): this {\r\n this.properties.autoRedefine = enabled;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets alternative names for this style (comma-separated)\r\n * @param aliases - Comma-separated list of alternative names\r\n * @returns This style for chaining\r\n */\r\n setAliases(aliases: string): this {\r\n this.properties.aliases = aliases;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets table-level formatting properties (Phase 5.1)\r\n * @param formatting - Table formatting options\r\n * @returns This style for chaining\r\n */\r\n setTableFormatting(formatting: TableStyleFormatting): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n this.properties.tableStyle.table = { ...formatting };\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets table cell formatting properties (Phase 5.1)\r\n * @param formatting - Cell formatting options\r\n * @returns This style for chaining\r\n */\r\n setTableCellFormatting(formatting: TableCellStyleFormatting): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n this.properties.tableStyle.cell = { ...formatting };\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets table row formatting properties (Phase 5.1)\r\n * @param formatting - Row formatting options\r\n * @returns This style for chaining\r\n */\r\n setTableRowFormatting(formatting: TableRowStyleFormatting): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n this.properties.tableStyle.row = { ...formatting };\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets row band size for row banding (Phase 5.1)\r\n * @param size - Number of rows per band (default 1)\r\n * @returns This style for chaining\r\n */\r\n setRowBandSize(size: number): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n if (size < 0) {\r\n throw new Error(\"Row band size must be non-negative\");\r\n }\r\n this.properties.tableStyle.rowBandSize = size;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets column band size for column banding (Phase 5.1)\r\n * @param size - Number of columns per band (default 1)\r\n * @returns This style for chaining\r\n */\r\n setColBandSize(size: number): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n if (size < 0) {\r\n throw new Error(\"Column band size must be non-negative\");\r\n }\r\n this.properties.tableStyle.colBandSize = size;\r\n return this;\r\n }\r\n\r\n /**\r\n * Adds conditional formatting for a specific table region (Phase 5.1)\r\n * @param conditional - Conditional formatting definition\r\n * @returns This style for chaining\r\n */\r\n addConditionalFormatting(conditional: ConditionalTableFormatting): this {\r\n if (!this.properties.tableStyle) {\r\n this.properties.tableStyle = {};\r\n }\r\n if (!this.properties.tableStyle.conditionalFormatting) {\r\n this.properties.tableStyle.conditionalFormatting = [];\r\n }\r\n this.properties.tableStyle.conditionalFormatting.push({ ...conditional });\r\n return this;\r\n }\r\n\r\n /**\r\n * Validates that this style definition is valid\r\n *\r\n * Checks:\r\n * - Required fields (styleId, name, type)\r\n * - Valid type value\r\n * - No circular references (basedOn != styleId)\r\n * - Valid formatting values\r\n *\r\n * @returns True if the style is valid, false otherwise\r\n */\r\n isValid(): boolean {\r\n try {\r\n // Required fields\r\n if (\r\n !this.properties.styleId ||\r\n !this.properties.name ||\r\n !this.properties.type\r\n ) {\r\n return false;\r\n }\r\n\r\n // Valid type\r\n const validTypes: StyleType[] = [\r\n \"paragraph\",\r\n \"character\",\r\n \"table\",\r\n \"numbering\",\r\n ];\r\n if (!validTypes.includes(this.properties.type)) {\r\n return false;\r\n }\r\n\r\n // No circular reference\r\n if (this.properties.basedOn === this.properties.styleId) {\r\n return false;\r\n }\r\n\r\n // Check paragraph formatting if present\r\n if (this.properties.paragraphFormatting) {\r\n const pf = this.properties.paragraphFormatting;\r\n\r\n // Check alignment\r\n if (pf.alignment) {\r\n const validAlignments = [\r\n \"left\",\r\n \"center\",\r\n \"right\",\r\n \"justify\",\r\n \"both\",\r\n \"distribute\",\r\n ];\r\n if (!validAlignments.includes(pf.alignment)) {\r\n return false;\r\n }\r\n }\r\n\r\n // Check spacing values\r\n if (pf.spacing) {\r\n const spacing = pf.spacing;\r\n if (spacing.before !== undefined && spacing.before < 0) return false;\r\n if (spacing.after !== undefined && spacing.after < 0) return false;\r\n if (spacing.line !== undefined && spacing.line < 0) return false;\r\n if (\r\n spacing.lineRule &&\r\n ![\"auto\", \"exact\", \"atLeast\"].includes(spacing.lineRule)\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n // Check indentation values\r\n if (pf.indentation) {\r\n const ind = pf.indentation;\r\n // Indentation values can be negative for hanging indent\r\n if (ind.left !== undefined && ind.left < -100000) return false;\r\n if (ind.right !== undefined && ind.right < -100000) return false;\r\n }\r\n }\r\n\r\n // Check run formatting if present\r\n if (this.properties.runFormatting) {\r\n const rf = this.properties.runFormatting;\r\n\r\n // Check font size\r\n if (rf.size !== undefined && (rf.size <= 0 || rf.size > 1638)) {\r\n return false; // Max font size in Word is 1638\r\n }\r\n\r\n // Check color format (should be 6 hex characters)\r\n if (rf.color && !/^[0-9A-Fa-f]{6}$/.test(rf.color)) {\r\n return false;\r\n }\r\n\r\n // Check highlight color\r\n if (rf.highlight) {\r\n const validHighlights = [\r\n \"black\",\r\n \"blue\",\r\n \"cyan\",\r\n \"darkBlue\",\r\n \"darkCyan\",\r\n \"darkGray\",\r\n \"darkGreen\",\r\n \"darkMagenta\",\r\n \"darkRed\",\r\n \"darkYellow\",\r\n \"green\",\r\n \"lightGray\",\r\n \"magenta\",\r\n \"none\",\r\n \"red\",\r\n \"white\",\r\n \"yellow\",\r\n ];\r\n if (!validHighlights.includes(rf.highlight)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Check metadata properties (Phase 5.3)\r\n if (this.properties.uiPriority !== undefined) {\r\n if (this.properties.uiPriority < 0 || this.properties.uiPriority > 99) {\r\n return false;\r\n }\r\n }\r\n\r\n // Check linked style doesn't reference self\r\n if (this.properties.link === this.properties.styleId) {\r\n return false;\r\n }\r\n\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Converts the style to WordprocessingML XML element\r\n * @returns XMLElement representing the style\r\n */\r\n toXML(): XMLElement {\r\n const styleAttrs: Record<string, string> = {\r\n \"w:type\": this.properties.type,\r\n \"w:styleId\": this.properties.styleId,\r\n };\r\n\r\n if (this.properties.isDefault) {\r\n styleAttrs[\"w:default\"] = \"1\";\r\n }\r\n\r\n if (this.properties.customStyle) {\r\n styleAttrs[\"w:customStyle\"] = \"1\";\r\n }\r\n\r\n const styleChildren: XMLElement[] = [];\r\n\r\n // Add style name\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"name\", { \"w:val\": this.properties.name })\r\n );\r\n\r\n // aliases - Alternative names (must follow name per CT_Style)\r\n if (this.properties.aliases) {\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"aliases\", { \"w:val\": this.properties.aliases })\r\n );\r\n }\r\n\r\n // Add basedOn\r\n if (this.properties.basedOn) {\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"basedOn\", { \"w:val\": this.properties.basedOn })\r\n );\r\n }\r\n\r\n // Add next\r\n if (this.properties.next) {\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"next\", { \"w:val\": this.properties.next })\r\n );\r\n }\r\n\r\n // Add link (linked character/paragraph style)\r\n if (this.properties.link) {\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"link\", { \"w:val\": this.properties.link })\r\n );\r\n }\r\n\r\n // Add autoRedefine\r\n if (this.properties.autoRedefine) {\r\n styleChildren.push(XMLBuilder.wSelf(\"autoRedefine\"));\r\n }\r\n\r\n // Add metadata properties — ordered per ECMA-376 CT_Style\r\n // uiPriority - Sort order in style picker\r\n if (this.properties.uiPriority !== undefined) {\r\n styleChildren.push(\r\n XMLBuilder.wSelf(\"uiPriority\", {\r\n \"w:val\": String(this.properties.uiPriority),\r\n })\r\n );\r\n }\r\n\r\n // semiHidden - Hide from recommended list\r\n if (this.properties.semiHidden) {\r\n styleChildren.push(XMLBuilder.wSelf(\"semiHidden\"));\r\n }\r\n\r\n // unhideWhenUsed - Auto-show when applied\r\n if (this.properties.unhideWhenUsed) {\r\n styleChildren.push(XMLBuilder.wSelf(\"unhideWhenUsed\"));\r\n }\r\n\r\n // qFormat - Quick style gallery appearance\r\n if (this.properties.qFormat !== undefined) {\r\n if (this.properties.qFormat) {\r\n styleChildren.push(XMLBuilder.wSelf(\"qFormat\"));\r\n }\r\n } else if (!this.properties.customStyle) {\r\n // Default: built-in styles have qFormat\r\n styleChildren.push(XMLBuilder.wSelf(\"qFormat\"));\r\n }\r\n\r\n // locked - Prevent modification\r\n if (this.properties.locked) {\r\n styleChildren.push(XMLBuilder.wSelf(\"locked\"));\r\n }\r\n\r\n // personal - User-specific style\r\n if (this.properties.personal) {\r\n styleChildren.push(XMLBuilder.wSelf(\"personal\"));\r\n }\r\n\r\n // personalCompose - Style for composing new messages\r\n if (this.properties.personalCompose) {\r\n styleChildren.push(XMLBuilder.wSelf(\"personalCompose\"));\r\n }\r\n\r\n // personalReply - Style for replying to messages\r\n if (this.properties.personalReply) {\r\n styleChildren.push(XMLBuilder.wSelf(\"personalReply\"));\r\n }\r\n\r\n // Add paragraph properties\r\n if (this.properties.paragraphFormatting || this.properties.numPr) {\r\n const pPr = this.generateParagraphProperties(\r\n this.properties.paragraphFormatting || {}\r\n );\r\n // Add numPr (numbering properties) if present - styles can inherit list formatting\r\n if (this.properties.numPr) {\r\n const numPrChildren: XMLElement[] = [];\r\n if (this.properties.numPr.ilvl !== undefined) {\r\n numPrChildren.push(\r\n XMLBuilder.wSelf(\"ilvl\", { \"w:val\": String(this.properties.numPr.ilvl) })\r\n );\r\n }\r\n if (this.properties.numPr.numId !== undefined) {\r\n numPrChildren.push(\r\n XMLBuilder.wSelf(\"numId\", { \"w:val\": String(this.properties.numPr.numId) })\r\n );\r\n }\r\n if (numPrChildren.length > 0) {\r\n // Insert numPr at the beginning of pPr children (per ECMA-376 element order)\r\n if (pPr.children) {\r\n pPr.children.unshift(XMLBuilder.w(\"numPr\", undefined, numPrChildren));\r\n } else {\r\n pPr.children = [XMLBuilder.w(\"numPr\", undefined, numPrChildren)];\r\n }\r\n }\r\n }\r\n if (pPr.children && pPr.children.length > 0) {\r\n styleChildren.push(pPr);\r\n }\r\n }\r\n\r\n // Add run properties\r\n if (this.properties.runFormatting) {\r\n const rPr = this.generateRunProperties(this.properties.runFormatting);\r\n if (rPr.children && rPr.children.length > 0) {\r\n styleChildren.push(rPr);\r\n }\r\n }\r\n\r\n // Add table style properties (Phase 5.1)\r\n if (this.properties.tableStyle) {\r\n // Add tblPr (table properties)\r\n if (this.properties.tableStyle.table) {\r\n const tblPr = this.generateTableProperties(\r\n this.properties.tableStyle.table,\r\n this.properties.tableStyle\r\n );\r\n if (tblPr.children && tblPr.children.length > 0) {\r\n styleChildren.push(tblPr);\r\n }\r\n }\r\n\r\n // Add trPr (table row properties) — per CT_Style: tblPr → trPr → tcPr\r\n if (this.properties.tableStyle.row) {\r\n const trPr = this.generateTableRowProperties(\r\n this.properties.tableStyle.row\r\n );\r\n if (trPr.children && trPr.children.length > 0) {\r\n styleChildren.push(trPr);\r\n }\r\n }\r\n\r\n // Add tcPr (table cell properties)\r\n if (this.properties.tableStyle.cell) {\r\n const tcPr = this.generateTableCellProperties(\r\n this.properties.tableStyle.cell\r\n );\r\n if (tcPr.children && tcPr.children.length > 0) {\r\n styleChildren.push(tcPr);\r\n }\r\n }\r\n\r\n // Add conditional formatting (tblStylePr)\r\n if (this.properties.tableStyle.conditionalFormatting) {\r\n for (const conditional of this.properties.tableStyle\r\n .conditionalFormatting) {\r\n const tblStylePr = this.generateConditionalFormatting(conditional);\r\n if (tblStylePr.children && tblStylePr.children.length > 0) {\r\n styleChildren.push(tblStylePr);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return XMLBuilder.w(\"style\", styleAttrs, styleChildren);\r\n }\r\n\r\n /**\r\n * Generates paragraph properties XML\r\n */\r\n private generateParagraphProperties(\r\n formatting: ParagraphFormatting\r\n ): XMLElement {\r\n const pPrChildren: XMLElement[] = [];\r\n\r\n // Ordered per ECMA-376 CT_PPrBase\r\n if (formatting.keepNext) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"keepNext\"));\r\n }\r\n if (formatting.keepLines) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"keepLines\"));\r\n }\r\n if (formatting.pageBreakBefore) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"pageBreakBefore\"));\r\n }\r\n\r\n // Add spacing\r\n if (formatting.spacing) {\r\n const spc = formatting.spacing;\r\n const attributes: Record<string, number | string> = {};\r\n if (spc.before !== undefined) attributes[\"w:before\"] = spc.before;\r\n if (spc.after !== undefined) attributes[\"w:after\"] = spc.after;\r\n if (spc.line !== undefined) attributes[\"w:line\"] = spc.line;\r\n if (spc.lineRule) attributes[\"w:lineRule\"] = spc.lineRule;\r\n if (Object.keys(attributes).length > 0) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"spacing\", attributes));\r\n }\r\n }\r\n\r\n // Add indentation\r\n if (formatting.indentation) {\r\n const ind = formatting.indentation;\r\n const attributes: Record<string, number> = {};\r\n if (ind.left !== undefined) attributes[\"w:left\"] = ind.left;\r\n if (ind.right !== undefined) attributes[\"w:right\"] = ind.right;\r\n if (ind.firstLine !== undefined)\r\n attributes[\"w:firstLine\"] = ind.firstLine;\r\n if (ind.hanging !== undefined) attributes[\"w:hanging\"] = ind.hanging;\r\n if (Object.keys(attributes).length > 0) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"ind\", attributes));\r\n }\r\n }\r\n\r\n // Contextual spacing per ECMA-376 Part 1 §17.3.1.8\r\n // Removes spacing between paragraphs of the same style\r\n if (formatting.contextualSpacing) {\r\n pPrChildren.push(XMLBuilder.wSelf(\"contextualSpacing\", { \"w:val\": \"1\" }));\r\n }\r\n\r\n // Add alignment\r\n if (formatting.alignment) {\r\n // Map 'justify' to 'both' per ECMA-376 (Word uses 'both' for justified text)\r\n const alignmentValue =\r\n formatting.alignment === \"justify\" ? \"both\" : formatting.alignment;\r\n pPrChildren.push(XMLBuilder.wSelf(\"jc\", { \"w:val\": alignmentValue }));\r\n }\r\n\r\n // Add outline level for TOC support (Heading 1 = 0, Heading 2 = 1, etc.)\r\n if (formatting.outlineLevel !== undefined) {\r\n pPrChildren.push(\r\n XMLBuilder.wSelf(\"outlineLvl\", { \"w:val\": formatting.outlineLevel.toString() })\r\n );\r\n }\r\n\r\n return XMLBuilder.w(\"pPr\", undefined, pPrChildren);\r\n }\r\n\r\n /**\r\n * Generates run properties XML\r\n */\r\n private generateRunProperties(formatting: RunFormatting): XMLElement {\r\n const rPrChildren: XMLElement[] = [];\r\n\r\n // Add formatting elements — ordered per ECMA-376 CT_RPr\r\n if (formatting.font) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"rFonts\", {\r\n \"w:ascii\": formatting.font,\r\n \"w:hAnsi\": formatting.font,\r\n \"w:cs\": formatting.font,\r\n })\r\n );\r\n }\r\n if (formatting.bold) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"b\"));\r\n }\r\n if (formatting.italic) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"i\"));\r\n }\r\n if (formatting.allCaps) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"caps\"));\r\n }\r\n if (formatting.smallCaps) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"smallCaps\"));\r\n }\r\n if (formatting.strike) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"strike\"));\r\n }\r\n if (formatting.dstrike) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"dstrike\"));\r\n }\r\n if (formatting.color) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"color\", { \"w:val\": formatting.color })\r\n );\r\n }\r\n if (formatting.size !== undefined) {\r\n const halfPoints = pointsToHalfPoints(formatting.size);\r\n rPrChildren.push(XMLBuilder.wSelf(\"sz\", { \"w:val\": halfPoints }));\r\n rPrChildren.push(XMLBuilder.wSelf(\"szCs\", { \"w:val\": halfPoints }));\r\n }\r\n if (formatting.highlight) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"highlight\", { \"w:val\": formatting.highlight })\r\n );\r\n }\r\n if (formatting.underline) {\r\n const underlineValue =\r\n typeof formatting.underline === \"string\"\r\n ? formatting.underline\r\n : \"single\";\r\n rPrChildren.push(XMLBuilder.wSelf(\"u\", { \"w:val\": underlineValue }));\r\n }\r\n if (formatting.subscript) {\r\n rPrChildren.push(XMLBuilder.wSelf(\"vertAlign\", { \"w:val\": \"subscript\" }));\r\n }\r\n if (formatting.superscript) {\r\n rPrChildren.push(\r\n XMLBuilder.wSelf(\"vertAlign\", { \"w:val\": \"superscript\" })\r\n );\r\n }\r\n\r\n return XMLBuilder.w(\"rPr\", undefined, rPrChildren);\r\n }\r\n\r\n /**\r\n * Generates table properties XML (tblPr) - Phase 5.1\r\n */\r\n private generateTableProperties(\r\n formatting: TableStyleFormatting,\r\n tableStyle: TableStyleProperties,\r\n isConditional = false\r\n ): XMLElement {\r\n const tblPrChildren: XMLElement[] = [];\r\n\r\n // Ordered per CT_TblPrBase (ECMA-376 §17.4.60):\r\n // tblStyleRowBandSize → tblStyleColBandSize → tblW → jc →\r\n // tblCellSpacing → tblInd → tblBorders → shd → tblCellMar\r\n\r\n // Row band size (must come first)\r\n if (tableStyle.rowBandSize !== undefined) {\r\n tblPrChildren.push(\r\n XMLBuilder.wSelf(\"tblStyleRowBandSize\", {\r\n \"w:val\": tableStyle.rowBandSize,\r\n })\r\n );\r\n }\r\n\r\n // Column band size\r\n if (tableStyle.colBandSize !== undefined) {\r\n tblPrChildren.push(\r\n XMLBuilder.wSelf(\"tblStyleColBandSize\", {\r\n \"w:val\": tableStyle.colBandSize,\r\n })\r\n );\r\n }\r\n\r\n // Note: tblW is omitted for table styles. It's only valid in inline tblPr\r\n // (CT_TblPr in table elements), not in CT_Style's tblPr.\r\n\r\n // Table alignment\r\n if (formatting.alignment) {\r\n tblPrChildren.push(\r\n XMLBuilder.wSelf(\"jc\", { \"w:val\": formatting.alignment })\r\n );\r\n }\r\n\r\n // Cell spacing\r\n if (formatting.cellSpacing !== undefined) {\r\n tblPrChildren.push(\r\n XMLBuilder.wSelf(\"tblCellSpacing\", {\r\n \"w:w\": formatting.cellSpacing,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n\r\n // Table indentation\r\n if (formatting.indent !== undefined) {\r\n tblPrChildren.push(\r\n XMLBuilder.wSelf(\"tblInd\", {\r\n \"w:w\": formatting.indent,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n\r\n // Table borders\r\n if (formatting.borders) {\r\n const borderElements = this.generateBorderElements(\r\n formatting.borders,\r\n false\r\n );\r\n if (borderElements.length > 0) {\r\n tblPrChildren.push(\r\n XMLBuilder.w(\"tblBorders\", undefined, borderElements)\r\n );\r\n }\r\n }\r\n\r\n // Table shading (not valid in tblStylePr conditional context)\r\n if (formatting.shading && !isConditional) {\r\n tblPrChildren.push(this.generateShadingElement(formatting.shading));\r\n }\r\n\r\n // Cell margins\r\n if (formatting.cellMargins) {\r\n const marginElements: XMLElement[] = [];\r\n if (formatting.cellMargins.top !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"top\", {\r\n \"w:w\": formatting.cellMargins.top,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.cellMargins.left !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"left\", {\r\n \"w:w\": formatting.cellMargins.left,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.cellMargins.bottom !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"bottom\", {\r\n \"w:w\": formatting.cellMargins.bottom,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.cellMargins.right !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"right\", {\r\n \"w:w\": formatting.cellMargins.right,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (marginElements.length > 0) {\r\n tblPrChildren.push(\r\n XMLBuilder.w(\"tblCellMar\", undefined, marginElements)\r\n );\r\n }\r\n }\r\n\r\n return XMLBuilder.w(\"tblPr\", undefined, tblPrChildren);\r\n }\r\n\r\n /**\r\n * Generates table cell properties XML (tcPr) - Phase 5.1\r\n */\r\n private generateTableCellProperties(\r\n formatting: TableCellStyleFormatting\r\n ): XMLElement {\r\n const tcPrChildren: XMLElement[] = [];\r\n\r\n // Cell borders\r\n if (formatting.borders) {\r\n const borderElements = this.generateBorderElements(\r\n formatting.borders,\r\n true\r\n );\r\n if (borderElements.length > 0) {\r\n tcPrChildren.push(XMLBuilder.w(\"tcBorders\", undefined, borderElements));\r\n }\r\n }\r\n\r\n // Cell shading\r\n if (formatting.shading) {\r\n tcPrChildren.push(this.generateShadingElement(formatting.shading));\r\n }\r\n\r\n // Cell margins\r\n if (formatting.margins) {\r\n const marginElements: XMLElement[] = [];\r\n if (formatting.margins.top !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"top\", {\r\n \"w:w\": formatting.margins.top,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.margins.left !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"left\", {\r\n \"w:w\": formatting.margins.left,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.margins.bottom !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"bottom\", {\r\n \"w:w\": formatting.margins.bottom,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (formatting.margins.right !== undefined) {\r\n marginElements.push(\r\n XMLBuilder.wSelf(\"right\", {\r\n \"w:w\": formatting.margins.right,\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (marginElements.length > 0) {\r\n tcPrChildren.push(XMLBuilder.w(\"tcMar\", undefined, marginElements));\r\n }\r\n }\r\n\r\n // Vertical alignment\r\n if (formatting.verticalAlignment) {\r\n tcPrChildren.push(\r\n XMLBuilder.wSelf(\"vAlign\", { \"w:val\": formatting.verticalAlignment })\r\n );\r\n }\r\n\r\n return XMLBuilder.w(\"tcPr\", undefined, tcPrChildren);\r\n }\r\n\r\n /**\r\n * Generates table row properties XML (trPr) - Phase 5.1\r\n */\r\n private generateTableRowProperties(\r\n formatting: TableRowStyleFormatting\r\n ): XMLElement {\r\n const trPrChildren: XMLElement[] = [];\r\n\r\n // Style-level trPr has a restricted content model compared to inline trPr.\r\n // Valid children: cantSplit, tblHeader, tblCellSpacing, jc, hidden\r\n // NOTE: trHeight is NOT valid in style-level trPr per OOXML strict schema.\r\n\r\n // Can't split row across pages\r\n if (formatting.cantSplit) {\r\n trPrChildren.push(XMLBuilder.wSelf(\"cantSplit\"));\r\n }\r\n\r\n // Header row\r\n if (formatting.isHeader) {\r\n trPrChildren.push(XMLBuilder.wSelf(\"tblHeader\"));\r\n }\r\n\r\n return XMLBuilder.w(\"trPr\", undefined, trPrChildren);\r\n }\r\n\r\n /**\r\n * Generates conditional formatting XML (tblStylePr) - Phase 5.1\r\n */\r\n private generateConditionalFormatting(\r\n conditional: ConditionalTableFormatting\r\n ): XMLElement {\r\n const tblStylePrChildren: XMLElement[] = [];\r\n\r\n // Add paragraph properties if specified\r\n if (conditional.paragraphFormatting) {\r\n const pPr = this.generateParagraphProperties(\r\n conditional.paragraphFormatting\r\n );\r\n if (pPr.children && pPr.children.length > 0) {\r\n tblStylePrChildren.push(pPr);\r\n }\r\n }\r\n\r\n // Add run properties if specified\r\n if (conditional.runFormatting) {\r\n const rPr = this.generateRunProperties(conditional.runFormatting);\r\n if (rPr.children && rPr.children.length > 0) {\r\n tblStylePrChildren.push(rPr);\r\n }\r\n }\r\n\r\n // Add table properties if specified\r\n if (conditional.tableFormatting) {\r\n const tblPr = this.generateTableProperties(\r\n conditional.tableFormatting,\r\n {},\r\n true\r\n );\r\n if (tblPr.children && tblPr.children.length > 0) {\r\n tblStylePrChildren.push(tblPr);\r\n }\r\n }\r\n\r\n // Add cell properties if specified\r\n if (conditional.cellFormatting) {\r\n const tcPr = this.generateTableCellProperties(conditional.cellFormatting);\r\n if (tcPr.children && tcPr.children.length > 0) {\r\n tblStylePrChildren.push(tcPr);\r\n }\r\n }\r\n\r\n // Add row properties if specified\r\n if (conditional.rowFormatting) {\r\n const trPr = this.generateTableRowProperties(conditional.rowFormatting);\r\n if (trPr.children && trPr.children.length > 0) {\r\n tblStylePrChildren.push(trPr);\r\n }\r\n }\r\n\r\n return XMLBuilder.w(\r\n \"tblStylePr\",\r\n { \"w:type\": conditional.type },\r\n tblStylePrChildren\r\n );\r\n }\r\n\r\n /**\r\n * Generates border elements for tables or cells - Phase 5.1\r\n * @param borders - Border properties\r\n * @param includeDiagonals - Whether to include diagonal borders (for cells)\r\n */\r\n private generateBorderElements(\r\n borders: TableBorders | CellBorders,\r\n includeDiagonals: boolean\r\n ): XMLElement[] {\r\n const borderElements: XMLElement[] = [];\r\n\r\n // Ordered per ECMA-376 CT_TblBorders / CT_TcBorders: top, left, bottom, right\r\n const borderProps = [\r\n \"top\",\r\n \"left\",\r\n \"bottom\",\r\n \"right\",\r\n \"insideH\",\r\n \"insideV\",\r\n ] as const;\r\n for (const prop of borderProps) {\r\n const border = borders[prop];\r\n if (border) {\r\n const attrs: Record<string, string | number> = {};\r\n if (border.style) attrs[\"w:val\"] = border.style;\r\n if (border.size !== undefined) attrs[\"w:sz\"] = border.size;\r\n if (border.space !== undefined) attrs[\"w:space\"] = border.space;\r\n if (border.color) attrs[\"w:color\"] = border.color;\r\n\r\n if (Object.keys(attrs).length > 0) {\r\n borderElements.push(XMLBuilder.wSelf(prop, attrs));\r\n }\r\n }\r\n }\r\n\r\n // Add diagonal borders for cells\r\n if (includeDiagonals) {\r\n const cellBorders = borders as CellBorders;\r\n if (cellBorders.tl2br) {\r\n const attrs: Record<string, string | number> = {};\r\n if (cellBorders.tl2br.style) attrs[\"w:val\"] = cellBorders.tl2br.style;\r\n if (cellBorders.tl2br.size !== undefined)\r\n attrs[\"w:sz\"] = cellBorders.tl2br.size;\r\n if (cellBorders.tl2br.space !== undefined)\r\n attrs[\"w:space\"] = cellBorders.tl2br.space;\r\n if (cellBorders.tl2br.color) attrs[\"w:color\"] = cellBorders.tl2br.color;\r\n\r\n if (Object.keys(attrs).length > 0) {\r\n borderElements.push(XMLBuilder.wSelf(\"tl2br\", attrs));\r\n }\r\n }\r\n if (cellBorders.tr2bl) {\r\n const attrs: Record<string, string | number> = {};\r\n if (cellBorders.tr2bl.style) attrs[\"w:val\"] = cellBorders.tr2bl.style;\r\n if (cellBorders.tr2bl.size !== undefined)\r\n attrs[\"w:sz\"] = cellBorders.tr2bl.size;\r\n if (cellBorders.tr2bl.space !== undefined)\r\n attrs[\"w:space\"] = cellBorders.tr2bl.space;\r\n if (cellBorders.tr2bl.color) attrs[\"w:color\"] = cellBorders.tr2bl.color;\r\n\r\n if (Object.keys(attrs).length > 0) {\r\n borderElements.push(XMLBuilder.wSelf(\"tr2bl\", attrs));\r\n }\r\n }\r\n }\r\n\r\n return borderElements;\r\n }\r\n\r\n /**\r\n * Generates shading element - Phase 5.1\r\n */\r\n private generateShadingElement(shading: ShadingProperties): XMLElement {\r\n const attrs = buildShadingAttributes(shading);\r\n return XMLBuilder.wSelf(\"shd\", attrs);\r\n }\r\n\r\n /**\r\n * Creates a new Style\r\n * @param properties - Style properties\r\n * @returns New Style instance\r\n */\r\n static create(properties: StyleProperties): Style {\r\n return new Style(properties);\r\n }\r\n\r\n /**\r\n * Creates the Normal style (default paragraph style)\r\n * @returns Normal style\r\n */\r\n static createNormalStyle(): Style {\r\n return new Style({\r\n styleId: \"Normal\",\r\n name: \"Normal\",\r\n type: \"paragraph\",\r\n isDefault: true,\r\n next: \"Normal\",\r\n qFormat: true,\r\n uiPriority: 0,\r\n paragraphFormatting: {\r\n alignment: \"left\",\r\n spacing: {\r\n before: 60, // 3pt\r\n after: 60, // 3pt\r\n line: 240, // Single line spacing\r\n lineRule: \"auto\",\r\n },\r\n },\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: 12,\r\n color: \"000000\",\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a Heading style\r\n * @param level - Heading level (1-9)\r\n * @returns Heading style\r\n */\r\n static createHeadingStyle(level: number): Style {\r\n if (level < 1 || level > 9) {\r\n throw new Error(\"Heading level must be between 1 and 9\");\r\n }\r\n\r\n // Font sizes: H1=18pt, H2=14pt, H3=12pt, H4-9=12pt\r\n const sizes = [18, 14, 12, 12, 12, 12, 12, 12, 12];\r\n\r\n // Spacing before: H1=0pt, H2=6pt, H3=3pt, H4-9=6pt (in twips: 1pt = 20 twips)\r\n const spacingBefore =\r\n level === 1 ? 0 : level === 2 ? 120 : level === 3 ? 60 : 120;\r\n\r\n // Spacing after: H1=12pt, H2=6pt, H3=3pt, H4-9=6pt (in twips)\r\n const spacingAfter =\r\n level === 1 ? 240 : level === 2 ? 120 : level === 3 ? 60 : 120;\r\n\r\n return new Style({\r\n styleId: `Heading${level}`,\r\n name: `Heading ${level}`,\r\n type: \"paragraph\",\r\n basedOn: \"Normal\",\r\n next: \"Normal\",\r\n link: `Heading${level}Char`,\r\n qFormat: true,\r\n uiPriority: 9,\r\n paragraphFormatting: {\r\n alignment: \"left\",\r\n spacing: {\r\n before: spacingBefore,\r\n after: spacingAfter,\r\n line: 240, // Single line spacing\r\n lineRule: \"auto\",\r\n },\r\n keepNext: true,\r\n keepLines: true,\r\n outlineLevel: level - 1, // Heading 1 = 0, Heading 2 = 1, etc. Required for TOC\r\n },\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: sizes[level - 1],\r\n bold: true,\r\n color: \"000000\",\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a Heading character style (linked to paragraph style)\r\n * @param level - Heading level (1-9)\r\n * @returns Heading character style\r\n */\r\n static createHeadingCharStyle(level: number): Style {\r\n if (level < 1 || level > 9) {\r\n throw new Error(\"Heading level must be between 1 and 9\");\r\n }\r\n\r\n // Font sizes: H1=18pt, H2=14pt, H3=12pt, H4-9=12pt\r\n const sizes = [18, 14, 12, 12, 12, 12, 12, 12, 12];\r\n\r\n return new Style({\r\n styleId: `Heading${level}Char`,\r\n name: `Heading ${level} Char`,\r\n type: \"character\",\r\n link: `Heading${level}`,\r\n qFormat: true,\r\n uiPriority: 9,\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: sizes[level - 1],\r\n bold: true,\r\n color: \"000000\",\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates the Title style\r\n * @returns Title style\r\n */\r\n static createTitleStyle(): Style {\r\n return new Style({\r\n styleId: \"Title\",\r\n name: \"Title\",\r\n type: \"paragraph\",\r\n basedOn: \"Normal\",\r\n next: \"Normal\",\r\n paragraphFormatting: {\r\n spacing: {\r\n after: 120,\r\n },\r\n },\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: 28,\r\n color: \"000000\",\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates the Subtitle style\r\n * @returns Subtitle style\r\n */\r\n static createSubtitleStyle(): Style {\r\n return new Style({\r\n styleId: \"Subtitle\",\r\n name: \"Subtitle\",\r\n type: \"paragraph\",\r\n basedOn: \"Normal\",\r\n next: \"Normal\",\r\n paragraphFormatting: {\r\n spacing: {\r\n after: 120,\r\n },\r\n },\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: 14,\r\n color: \"000000\",\r\n italic: true,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a List Paragraph style (for lists)\r\n * @returns List Paragraph style\r\n */\r\n static createListParagraphStyle(): Style {\r\n return new Style({\r\n styleId: \"ListParagraph\",\r\n name: \"List Paragraph\",\r\n type: \"paragraph\",\r\n basedOn: \"Normal\",\r\n next: \"ListParagraph\",\r\n qFormat: true,\r\n uiPriority: 34,\r\n paragraphFormatting: {\r\n alignment: \"left\",\r\n indentation: {\r\n left: 720, // 0.5 inch (text indentation)\r\n hanging: 360, // 0.25 inch (bullet/number indentation)\r\n },\r\n spacing: {\r\n before: 0, // 0pt\r\n after: 60, // 3pt\r\n line: 240, // Single line spacing\r\n lineRule: \"auto\",\r\n },\r\n contextualSpacing: true, // No space between similar paragraphs\r\n },\r\n runFormatting: {\r\n font: \"Verdana\",\r\n size: 12,\r\n color: \"000000\",\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a TOC Heading style (for table of contents titles)\r\n * @returns TOC Heading style\r\n */\r\n static createTOCHeadingStyle(): Style {\r\n return new Style({\r\n styleId: \"TOCHeading\",\r\n name: \"TOC Heading\",\r\n type: \"paragraph\",\r\n basedOn: \"Heading1\",\r\n next: \"Normal\",\r\n runFormatting: {\r\n bold: true,\r\n font: \"Verdana\",\r\n size: 14,\r\n color: \"000000\", // Black\r\n },\r\n paragraphFormatting: {\r\n spacing: {\r\n before: 480, // Larger spacing before TOC\r\n after: 240,\r\n },\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a TOC entry style for a specific level (1-9).\r\n * TOC 1-9 are built-in Word styles for Table of Contents entries.\r\n * When Word updates a TOC field, it applies these styles to the generated entries.\r\n *\r\n * @param level - TOC level (1-9)\r\n * @param formatting - Optional run and paragraph formatting overrides\r\n * @returns TOC style for the specified level\r\n */\r\n static createTOCStyle(\r\n level: number,\r\n formatting?: {\r\n run?: RunFormatting;\r\n paragraph?: ParagraphFormatting;\r\n }\r\n ): Style {\r\n if (level < 1 || level > 9) {\r\n throw new Error(\"TOC level must be between 1 and 9\");\r\n }\r\n\r\n // Default indentation: 220 twips per level (11pt)\r\n const defaultLeftIndent = (level - 1) * 220;\r\n\r\n return Style.create({\r\n styleId: `TOC${level}`,\r\n name: `toc ${level}`,\r\n type: \"paragraph\",\r\n basedOn: \"Normal\",\r\n uiPriority: 39,\r\n semiHidden: true,\r\n unhideWhenUsed: true,\r\n runFormatting: formatting?.run,\r\n paragraphFormatting: {\r\n indentation: { left: defaultLeftIndent },\r\n ...formatting?.paragraph,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a Table Normal style (Phase 5.1)\r\n * @returns Table Normal style\r\n */\r\n static createTableNormalStyle(): Style {\r\n return new Style({\r\n styleId: \"TableNormal\",\r\n name: \"Table Normal\",\r\n type: \"table\",\r\n basedOn: \"Normal\",\r\n tableStyle: {\r\n table: {\r\n cellMargins: {\r\n top: 0,\r\n left: 108, // ~0.075 inch\r\n bottom: 0,\r\n right: 108,\r\n },\r\n },\r\n rowBandSize: 1,\r\n colBandSize: 1,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a Table Grid style with borders (Phase 5.1)\r\n * @returns Table Grid style\r\n */\r\n static createTableGridStyle(): Style {\r\n return new Style({\r\n styleId: \"TableGrid\",\r\n name: \"Table Grid\",\r\n type: \"table\",\r\n basedOn: \"TableNormal\",\r\n tableStyle: {\r\n table: {\r\n borders: {\r\n top: { style: \"single\", size: 4, color: \"000000\" },\r\n bottom: { style: \"single\", size: 4, color: \"000000\" },\r\n left: { style: \"single\", size: 4, color: \"000000\" },\r\n right: { style: \"single\", size: 4, color: \"000000\" },\r\n insideH: { style: \"single\", size: 4, color: \"000000\" },\r\n insideV: { style: \"single\", size: 4, color: \"000000\" },\r\n },\r\n cellMargins: {\r\n top: 0,\r\n left: 108,\r\n bottom: 0,\r\n right: 108,\r\n },\r\n },\r\n rowBandSize: 1,\r\n colBandSize: 1,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Creates a deep clone of this style\r\n * @returns New Style instance with copied properties\r\n * @example\r\n * ```typescript\r\n * const original = Style.createHeadingStyle(1);\r\n * const copy = original.clone();\r\n * copy.setRunFormatting({ color: 'FF0000' }); // Doesn't affect original\r\n * ```\r\n */\r\n clone(): Style {\r\n // Deep copy all properties\r\n const clonedProps: StyleProperties = deepClone(this.properties);\r\n return new Style(clonedProps);\r\n }\r\n\r\n /**\r\n * Resets the style to its minimal state\r\n * Clears all paragraph and run formatting while preserving the style identity\r\n * @returns This style for chaining\r\n * @example\r\n * ```typescript\r\n * const style = Style.createHeadingStyle(1);\r\n * style.reset(); // Clears all formatting, keeps styleId and name\r\n * ```\r\n */\r\n reset(): this {\r\n // Preserve identity properties\r\n const { styleId, name, type, basedOn } = this.properties;\r\n\r\n // Reset to minimal properties\r\n this.properties = {\r\n styleId,\r\n name,\r\n type,\r\n basedOn,\r\n };\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Merges properties from another style into this one\r\n * @param otherStyle - Style to merge from\r\n * @returns This style for chaining\r\n * @example\r\n * ```typescript\r\n * const base = Style.createNormalStyle();\r\n * const override = Style.create({\r\n * styleId: 'Override',\r\n * name: 'Override',\r\n * type: 'paragraph',\r\n * runFormatting: { bold: true, color: 'FF0000' }\r\n * });\r\n * base.mergeWith(override); // base now has bold red text\r\n * ```\r\n */\r\n mergeWith(otherStyle: Style): this {\r\n const otherProps = otherStyle.getProperties();\r\n\r\n // Merge paragraph formatting\r\n if (otherProps.paragraphFormatting) {\r\n if (!this.properties.paragraphFormatting) {\r\n this.properties.paragraphFormatting = {};\r\n }\r\n\r\n // Merge top-level paragraph properties\r\n if (otherProps.paragraphFormatting.alignment) {\r\n this.properties.paragraphFormatting.alignment =\r\n otherProps.paragraphFormatting.alignment;\r\n }\r\n if (otherProps.paragraphFormatting.keepNext !== undefined) {\r\n this.properties.paragraphFormatting.keepNext =\r\n otherProps.paragraphFormatting.keepNext;\r\n }\r\n if (otherProps.paragraphFormatting.keepLines !== undefined) {\r\n this.properties.paragraphFormatting.keepLines =\r\n otherProps.paragraphFormatting.keepLines;\r\n }\r\n if (otherProps.paragraphFormatting.pageBreakBefore !== undefined) {\r\n this.properties.paragraphFormatting.pageBreakBefore =\r\n otherProps.paragraphFormatting.pageBreakBefore;\r\n }\r\n\r\n // Merge indentation\r\n if (otherProps.paragraphFormatting.indentation) {\r\n if (!this.properties.paragraphFormatting.indentation) {\r\n this.properties.paragraphFormatting.indentation = {};\r\n }\r\n Object.assign(\r\n this.properties.paragraphFormatting.indentation,\r\n otherProps.paragraphFormatting.indentation\r\n );\r\n }\r\n\r\n // Merge spacing\r\n if (otherProps.paragraphFormatting.spacing) {\r\n if (!this.properties.paragraphFormatting.spacing) {\r\n this.properties.paragraphFormatting.spacing = {};\r\n }\r\n Object.assign(\r\n this.properties.paragraphFormatting.spacing,\r\n otherProps.paragraphFormatting.spacing\r\n );\r\n }\r\n }\r\n\r\n // Merge run formatting\r\n if (otherProps.runFormatting) {\r\n if (!this.properties.runFormatting) {\r\n this.properties.runFormatting = {};\r\n }\r\n Object.assign(this.properties.runFormatting, otherProps.runFormatting);\r\n }\r\n\r\n // Merge other properties (but don't override styleId)\r\n if (otherProps.name) this.properties.name = otherProps.name;\r\n if (otherProps.basedOn) this.properties.basedOn = otherProps.basedOn;\r\n if (otherProps.next) this.properties.next = otherProps.next;\r\n\r\n return this;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Style.js","sourceRoot":"","sources":["../../src/formatting/Style.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Style - Represents a style definition in a Word document\n * Supports paragraph, character, table, and numbering styles\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { ParagraphFormatting } from '../elements/Paragraph';\nimport { RunFormatting } from '../elements/Run';\nimport { ShadingConfig, ShadingPattern, buildShadingAttributes } from '../elements/CommonTypes';\nimport { Heading2TableOptions } from '../types/styleConfig';\nimport { deepClone } from '../utils/deepClone';\nimport { pointsToHalfPoints } from '../utils/units';\n\n/**\n * Style type\n */\nexport type StyleType = 'paragraph' | 'character' | 'table' | 'numbering';\n\n/**\n * Table alignment\n */\nexport type TableAlignment = 'left' | 'center' | 'right';\n\n/**\n * Border properties\n */\nexport interface BorderProperties {\n /** Border style */\n style?: 'none' | 'single' | 'double' | 'dashed' | 'dotted' | 'thick';\n /** Border size in eighths of a point */\n size?: number;\n /** Border spacing/padding in points */\n space?: number;\n /** Border color (hex without #) */\n color?: string;\n}\n\n/**\n * Table borders (6 possible borders)\n */\nexport interface TableBorders {\n top?: BorderProperties;\n bottom?: BorderProperties;\n left?: BorderProperties;\n right?: BorderProperties;\n /** Inside horizontal borders */\n insideH?: BorderProperties;\n /** Inside vertical borders */\n insideV?: BorderProperties;\n}\n\n/**\n * Cell borders (8 possible borders, includes diagonals)\n */\nexport interface CellBorders extends TableBorders {\n /** Top-left to bottom-right diagonal */\n tl2br?: BorderProperties;\n /** Top-right to bottom-left diagonal */\n tr2bl?: BorderProperties;\n}\n\n/**\n * Shading properties\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type ShadingProperties = ShadingConfig;\n\n/**\n * Cell margins\n */\nexport interface CellMargins {\n /** Top margin in twips */\n top?: number;\n /** Bottom margin in twips */\n bottom?: number;\n /** Left margin in twips */\n left?: number;\n /** Right margin in twips */\n right?: number;\n}\n\n/**\n * Table-level formatting properties (tblPr)\n */\nexport interface TableStyleFormatting {\n /** Table indentation from left margin in twips */\n indent?: number;\n /** Default cell spacing in twips */\n cellSpacing?: number;\n /** Table borders */\n borders?: TableBorders;\n /** Default cell margins */\n cellMargins?: CellMargins;\n /** Table background shading */\n shading?: ShadingProperties;\n /** Table alignment */\n alignment?: TableAlignment;\n}\n\n/**\n * Table cell formatting properties (tcPr)\n */\nexport interface TableCellStyleFormatting {\n /** Cell borders (8 possible borders) */\n borders?: CellBorders;\n /** Cell background shading */\n shading?: ShadingProperties;\n /** Cell-specific margins */\n margins?: CellMargins;\n /** Vertical alignment in cell */\n verticalAlignment?: 'top' | 'center' | 'bottom';\n}\n\n/**\n * Table row formatting properties (trPr)\n */\nexport interface TableRowStyleFormatting {\n /** Prevent row from splitting across pages */\n cantSplit?: boolean;\n /** Mark row as header row */\n isHeader?: boolean;\n /** Row height in twips */\n height?: number;\n /** Row height rule */\n heightRule?: 'auto' | 'exact' | 'atLeast';\n}\n\n/**\n * Conditional formatting type for table regions\n */\nexport type ConditionalFormattingType =\n | 'wholeTable' // Entire table\n | 'firstRow' // First row\n | 'lastRow' // Last row\n | 'firstCol' // First column\n | 'lastCol' // Last column\n | 'band1Vert' // Odd column banding\n | 'band2Vert' // Even column banding\n | 'band1Horz' // Odd row banding\n | 'band2Horz' // Even row banding\n | 'nwCell' // Northwest (top-left) corner cell\n | 'neCell' // Northeast (top-right) corner cell\n | 'swCell' // Southwest (bottom-left) corner cell\n | 'seCell'; // Southeast (bottom-right) corner cell\n\n/**\n * Conditional table formatting for a specific region\n */\nexport interface ConditionalTableFormatting {\n /** Region type */\n type: ConditionalFormattingType;\n /** Paragraph formatting for this region */\n paragraphFormatting?: ParagraphFormatting;\n /** Run formatting for this region */\n runFormatting?: RunFormatting;\n /** Table formatting for this region */\n tableFormatting?: TableStyleFormatting;\n /** Cell formatting for this region */\n cellFormatting?: TableCellStyleFormatting;\n /** Row formatting for this region */\n rowFormatting?: TableRowStyleFormatting;\n}\n\n/**\n * Table style properties (Phase 5.1)\n */\nexport interface TableStyleProperties {\n /** Table-level formatting */\n table?: TableStyleFormatting;\n /** Default cell formatting */\n cell?: TableCellStyleFormatting;\n /** Default row formatting */\n row?: TableRowStyleFormatting;\n /** Rows per band for row banding (default 1) */\n rowBandSize?: number;\n /** Columns per band for column banding (default 1) */\n colBandSize?: number;\n /** Conditional formatting for specific table regions */\n conditionalFormatting?: ConditionalTableFormatting[];\n}\n\n/**\n * Style properties\n */\nexport interface StyleProperties {\n /** Unique style identifier */\n styleId: string;\n /** Display name */\n name: string;\n /** Style type */\n type: StyleType;\n /** Parent style ID for inheritance */\n basedOn?: string;\n /** Next style ID (auto-next paragraph style) */\n next?: string;\n /** Whether this is a default style */\n isDefault?: boolean;\n /** Whether this is a custom style */\n customStyle?: boolean;\n /** Paragraph formatting (for paragraph and table styles) */\n paragraphFormatting?: ParagraphFormatting;\n /** Numbering properties for styles that inherit list formatting */\n numPr?: {\n numId?: number;\n ilvl?: number;\n };\n /** Run formatting (for character and paragraph styles) */\n runFormatting?: RunFormatting;\n /** Table style properties (for table styles only - Phase 5.1) */\n tableStyle?: TableStyleProperties;\n\n // Style Gallery Metadata (Phase 5.3)\n /** Quick style - show in style gallery */\n qFormat?: boolean;\n /** UI priority - sort order in style picker (0-99, lower = higher priority) */\n uiPriority?: number;\n /** Semi-hidden - hide from gallery unless in use */\n semiHidden?: boolean;\n /** Unhide when used - auto-show when applied */\n unhideWhenUsed?: boolean;\n /** Locked - prevent modification */\n locked?: boolean;\n /** Personal - user-specific style */\n personal?: boolean;\n /** Personal compose - style for composing new messages */\n personalCompose?: boolean;\n /** Personal reply - style for replying to messages */\n personalReply?: boolean;\n /** Link - linked character/paragraph style ID */\n link?: string;\n /** Auto-redefine - update style from manual formatting */\n autoRedefine?: boolean;\n /** Aliases - alternative names (comma-separated) */\n aliases?: string;\n\n // Document Helper Metadata\n /**\n * Table options for Heading2 wrapping\n * Used by Document.applyCustomFormattingToExistingStyles() to configure\n * how Heading2 paragraphs are wrapped in tables\n */\n heading2TableOptions?: Heading2TableOptions;\n}\n\n/**\n * Represents a style definition\n */\nexport class Style {\n private properties: StyleProperties;\n\n /**\n * Creates a new Style\n * @param properties - Style properties\n */\n constructor(properties: StyleProperties) {\n this.properties = { ...properties };\n }\n\n /**\n * Gets the style ID\n * @returns Style ID\n */\n getStyleId(): string {\n return this.properties.styleId;\n }\n\n /**\n * Gets the style name\n * @returns Style name\n */\n getName(): string {\n return this.properties.name;\n }\n\n /**\n * Gets the style type\n * @returns Style type\n */\n getType(): StyleType {\n return this.properties.type;\n }\n\n /**\n * Gets all style properties\n * @returns Style properties\n */\n getProperties(): StyleProperties {\n return { ...this.properties };\n }\n\n /**\n * Gets whether this is a default style\n * @returns True if this is a default style for its type\n */\n getIsDefault(): boolean {\n return this.properties.isDefault ?? false;\n }\n\n /**\n * Sets whether this is a default style\n * @param value - True to mark as default style\n * @returns This style for chaining\n */\n setIsDefault(value: boolean): this {\n this.properties.isDefault = value;\n return this;\n }\n\n /**\n * Sets the base style\n * @param styleId - Parent style ID\n * @returns This style for chaining\n */\n setBasedOn(styleId: string): this {\n this.properties.basedOn = styleId;\n return this;\n }\n\n /**\n * Sets the next style\n * @param styleId - Next style ID\n * @returns This style for chaining\n */\n setNext(styleId: string): this {\n this.properties.next = styleId;\n return this;\n }\n\n /**\n * Sets paragraph formatting\n * @param formatting - Paragraph formatting options\n * @returns This style for chaining\n */\n setParagraphFormatting(formatting: ParagraphFormatting): this {\n this.properties.paragraphFormatting = { ...formatting };\n return this;\n }\n\n /**\n * Sets run formatting\n * @param formatting - Run formatting options\n * @returns This style for chaining\n */\n setRunFormatting(formatting: RunFormatting): this {\n this.properties.runFormatting = { ...formatting };\n return this;\n }\n\n /**\n * Gets the current run formatting\n * @returns Run formatting or undefined if not set\n */\n getRunFormatting(): RunFormatting | undefined {\n return this.properties.runFormatting;\n }\n\n /**\n * Gets the current paragraph formatting\n * @returns Paragraph formatting or undefined if not set\n */\n getParagraphFormatting(): ParagraphFormatting | undefined {\n return this.properties.paragraphFormatting;\n }\n\n /**\n * Sets Heading2 table wrapping options\n * Used by Document.applyCustomFormattingToExistingStyles() when styleId is 'Heading2'\n * @param options - Table options for wrapping Heading2 paragraphs\n * @returns This style for chaining\n */\n setHeading2TableOptions(options: Heading2TableOptions): this {\n this.properties.heading2TableOptions = options;\n return this;\n }\n\n /**\n * Gets the current Heading2 table options\n * @returns Heading2 table options or undefined if not set\n */\n getHeading2TableOptions(): Heading2TableOptions | undefined {\n return this.properties.heading2TableOptions;\n }\n\n /**\n * Sets whether this is a quick style (appears in style gallery)\n * @param enabled - True to show in quick style gallery\n * @returns This style for chaining\n */\n setQFormat(enabled: boolean): this {\n this.properties.qFormat = enabled;\n return this;\n }\n\n /**\n * Sets the UI priority (sort order in style picker)\n * @param priority - Priority value (0-99, lower = higher priority)\n * @returns This style for chaining\n */\n setUiPriority(priority: number): this {\n if (priority < 0 || priority > 99) {\n throw new Error('UI priority must be between 0 and 99');\n }\n this.properties.uiPriority = priority;\n return this;\n }\n\n /**\n * Sets whether this style is semi-hidden (hidden from recommended list)\n * @param hidden - True to hide from recommended list\n * @returns This style for chaining\n */\n setSemiHidden(hidden: boolean): this {\n this.properties.semiHidden = hidden;\n return this;\n }\n\n /**\n * Sets whether to unhide this style when first used\n * @param enabled - True to auto-show when applied\n * @returns This style for chaining\n */\n setUnhideWhenUsed(enabled: boolean): this {\n this.properties.unhideWhenUsed = enabled;\n return this;\n }\n\n /**\n * Sets whether this style is locked (prevents modification)\n * @param locked - True to lock the style\n * @returns This style for chaining\n */\n setLocked(locked: boolean): this {\n this.properties.locked = locked;\n return this;\n }\n\n /**\n * Sets whether this is a personal style (user-specific)\n * @param personal - True to mark as personal\n * @returns This style for chaining\n */\n setPersonal(personal: boolean): this {\n this.properties.personal = personal;\n return this;\n }\n\n /**\n * Sets whether this is a personal compose style (for composing new messages)\n * @param enabled - True to mark as personal compose\n */\n setPersonalCompose(enabled: boolean): this {\n this.properties.personalCompose = enabled;\n return this;\n }\n\n /**\n * Gets whether this is a personal compose style\n */\n getPersonalCompose(): boolean {\n return this.properties.personalCompose === true;\n }\n\n /**\n * Sets whether this is a personal reply style (for replying to messages)\n * @param enabled - True to mark as personal reply\n */\n setPersonalReply(enabled: boolean): this {\n this.properties.personalReply = enabled;\n return this;\n }\n\n /**\n * Gets whether this is a personal reply style\n */\n getPersonalReply(): boolean {\n return this.properties.personalReply === true;\n }\n\n /**\n * Sets the linked style ID (for character/paragraph style linking)\n * @param styleId - ID of the linked style\n * @returns This style for chaining\n */\n setLink(styleId: string): this {\n this.properties.link = styleId;\n return this;\n }\n\n /**\n * Sets whether to auto-redefine this style from manual formatting\n * @param enabled - True to enable auto-redefine\n * @returns This style for chaining\n */\n setAutoRedefine(enabled: boolean): this {\n this.properties.autoRedefine = enabled;\n return this;\n }\n\n /**\n * Sets alternative names for this style (comma-separated)\n * @param aliases - Comma-separated list of alternative names\n * @returns This style for chaining\n */\n setAliases(aliases: string): this {\n this.properties.aliases = aliases;\n return this;\n }\n\n /**\n * Sets table-level formatting properties (Phase 5.1)\n * @param formatting - Table formatting options\n * @returns This style for chaining\n */\n setTableFormatting(formatting: TableStyleFormatting): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n this.properties.tableStyle.table = { ...formatting };\n return this;\n }\n\n /**\n * Sets table cell formatting properties (Phase 5.1)\n * @param formatting - Cell formatting options\n * @returns This style for chaining\n */\n setTableCellFormatting(formatting: TableCellStyleFormatting): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n this.properties.tableStyle.cell = { ...formatting };\n return this;\n }\n\n /**\n * Sets table row formatting properties (Phase 5.1)\n * @param formatting - Row formatting options\n * @returns This style for chaining\n */\n setTableRowFormatting(formatting: TableRowStyleFormatting): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n this.properties.tableStyle.row = { ...formatting };\n return this;\n }\n\n /**\n * Sets row band size for row banding (Phase 5.1)\n * @param size - Number of rows per band (default 1)\n * @returns This style for chaining\n */\n setRowBandSize(size: number): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n if (size < 0) {\n throw new Error('Row band size must be non-negative');\n }\n this.properties.tableStyle.rowBandSize = size;\n return this;\n }\n\n /**\n * Sets column band size for column banding (Phase 5.1)\n * @param size - Number of columns per band (default 1)\n * @returns This style for chaining\n */\n setColBandSize(size: number): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n if (size < 0) {\n throw new Error('Column band size must be non-negative');\n }\n this.properties.tableStyle.colBandSize = size;\n return this;\n }\n\n /**\n * Adds conditional formatting for a specific table region (Phase 5.1)\n * @param conditional - Conditional formatting definition\n * @returns This style for chaining\n */\n addConditionalFormatting(conditional: ConditionalTableFormatting): this {\n if (!this.properties.tableStyle) {\n this.properties.tableStyle = {};\n }\n if (!this.properties.tableStyle.conditionalFormatting) {\n this.properties.tableStyle.conditionalFormatting = [];\n }\n this.properties.tableStyle.conditionalFormatting.push({ ...conditional });\n return this;\n }\n\n /**\n * Validates that this style definition is valid\n *\n * Checks:\n * - Required fields (styleId, name, type)\n * - Valid type value\n * - No circular references (basedOn != styleId)\n * - Valid formatting values\n *\n * @returns True if the style is valid, false otherwise\n */\n isValid(): boolean {\n try {\n // Required fields\n if (!this.properties.styleId || !this.properties.name || !this.properties.type) {\n return false;\n }\n\n // Valid type\n const validTypes: StyleType[] = ['paragraph', 'character', 'table', 'numbering'];\n if (!validTypes.includes(this.properties.type)) {\n return false;\n }\n\n // No circular reference\n if (this.properties.basedOn === this.properties.styleId) {\n return false;\n }\n\n // Check paragraph formatting if present\n if (this.properties.paragraphFormatting) {\n const pf = this.properties.paragraphFormatting;\n\n // Check alignment\n if (pf.alignment) {\n const validAlignments = ['left', 'center', 'right', 'justify', 'both', 'distribute'];\n if (!validAlignments.includes(pf.alignment)) {\n return false;\n }\n }\n\n // Check spacing values\n if (pf.spacing) {\n const spacing = pf.spacing;\n if (spacing.before !== undefined && spacing.before < 0) return false;\n if (spacing.after !== undefined && spacing.after < 0) return false;\n if (spacing.line !== undefined && spacing.line < 0) return false;\n if (spacing.lineRule && !['auto', 'exact', 'atLeast'].includes(spacing.lineRule)) {\n return false;\n }\n }\n\n // Check indentation values\n if (pf.indentation) {\n const ind = pf.indentation;\n // Indentation values can be negative for hanging indent\n if (ind.left !== undefined && ind.left < -100000) return false;\n if (ind.right !== undefined && ind.right < -100000) return false;\n }\n }\n\n // Check run formatting if present\n if (this.properties.runFormatting) {\n const rf = this.properties.runFormatting;\n\n // Check font size\n if (rf.size !== undefined && (rf.size <= 0 || rf.size > 1638)) {\n return false; // Max font size in Word is 1638\n }\n\n // Check color format (should be 6 hex characters)\n if (rf.color && !/^[0-9A-Fa-f]{6}$/.test(rf.color)) {\n return false;\n }\n\n // Check highlight color\n if (rf.highlight) {\n const validHighlights = [\n 'black',\n 'blue',\n 'cyan',\n 'darkBlue',\n 'darkCyan',\n 'darkGray',\n 'darkGreen',\n 'darkMagenta',\n 'darkRed',\n 'darkYellow',\n 'green',\n 'lightGray',\n 'magenta',\n 'none',\n 'red',\n 'white',\n 'yellow',\n ];\n if (!validHighlights.includes(rf.highlight)) {\n return false;\n }\n }\n }\n\n // Check metadata properties (Phase 5.3)\n if (this.properties.uiPriority !== undefined) {\n if (this.properties.uiPriority < 0 || this.properties.uiPriority > 99) {\n return false;\n }\n }\n\n // Check linked style doesn't reference self\n if (this.properties.link === this.properties.styleId) {\n return false;\n }\n\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Converts the style to WordprocessingML XML element\n * @returns XMLElement representing the style\n */\n toXML(): XMLElement {\n const styleAttrs: Record<string, string> = {\n 'w:type': this.properties.type,\n 'w:styleId': this.properties.styleId,\n };\n\n if (this.properties.isDefault) {\n styleAttrs['w:default'] = '1';\n }\n\n if (this.properties.customStyle) {\n styleAttrs['w:customStyle'] = '1';\n }\n\n const styleChildren: XMLElement[] = [];\n\n // Add style name\n styleChildren.push(XMLBuilder.wSelf('name', { 'w:val': this.properties.name }));\n\n // aliases - Alternative names (must follow name per CT_Style)\n if (this.properties.aliases) {\n styleChildren.push(XMLBuilder.wSelf('aliases', { 'w:val': this.properties.aliases }));\n }\n\n // Add basedOn\n if (this.properties.basedOn) {\n styleChildren.push(XMLBuilder.wSelf('basedOn', { 'w:val': this.properties.basedOn }));\n }\n\n // Add next\n if (this.properties.next) {\n styleChildren.push(XMLBuilder.wSelf('next', { 'w:val': this.properties.next }));\n }\n\n // Add link (linked character/paragraph style)\n if (this.properties.link) {\n styleChildren.push(XMLBuilder.wSelf('link', { 'w:val': this.properties.link }));\n }\n\n // Add autoRedefine\n if (this.properties.autoRedefine) {\n styleChildren.push(XMLBuilder.wSelf('autoRedefine'));\n }\n\n // Add metadata properties — ordered per ECMA-376 CT_Style\n // uiPriority - Sort order in style picker\n if (this.properties.uiPriority !== undefined) {\n styleChildren.push(\n XMLBuilder.wSelf('uiPriority', {\n 'w:val': String(this.properties.uiPriority),\n })\n );\n }\n\n // semiHidden - Hide from recommended list\n if (this.properties.semiHidden) {\n styleChildren.push(XMLBuilder.wSelf('semiHidden'));\n }\n\n // unhideWhenUsed - Auto-show when applied\n if (this.properties.unhideWhenUsed) {\n styleChildren.push(XMLBuilder.wSelf('unhideWhenUsed'));\n }\n\n // qFormat - Quick style gallery appearance\n if (this.properties.qFormat !== undefined) {\n if (this.properties.qFormat) {\n styleChildren.push(XMLBuilder.wSelf('qFormat'));\n }\n } else if (!this.properties.customStyle) {\n // Default: built-in styles have qFormat\n styleChildren.push(XMLBuilder.wSelf('qFormat'));\n }\n\n // locked - Prevent modification\n if (this.properties.locked) {\n styleChildren.push(XMLBuilder.wSelf('locked'));\n }\n\n // personal - User-specific style\n if (this.properties.personal) {\n styleChildren.push(XMLBuilder.wSelf('personal'));\n }\n\n // personalCompose - Style for composing new messages\n if (this.properties.personalCompose) {\n styleChildren.push(XMLBuilder.wSelf('personalCompose'));\n }\n\n // personalReply - Style for replying to messages\n if (this.properties.personalReply) {\n styleChildren.push(XMLBuilder.wSelf('personalReply'));\n }\n\n // Add paragraph properties\n if (this.properties.paragraphFormatting || this.properties.numPr) {\n const pPr = this.generateParagraphProperties(this.properties.paragraphFormatting || {});\n // Add numPr (numbering properties) if present - styles can inherit list formatting\n if (this.properties.numPr) {\n const numPrChildren: XMLElement[] = [];\n if (this.properties.numPr.ilvl !== undefined) {\n numPrChildren.push(\n XMLBuilder.wSelf('ilvl', { 'w:val': String(this.properties.numPr.ilvl) })\n );\n }\n if (this.properties.numPr.numId !== undefined) {\n numPrChildren.push(\n XMLBuilder.wSelf('numId', { 'w:val': String(this.properties.numPr.numId) })\n );\n }\n if (numPrChildren.length > 0) {\n // Insert numPr at the beginning of pPr children (per ECMA-376 element order)\n if (pPr.children) {\n pPr.children.unshift(XMLBuilder.w('numPr', undefined, numPrChildren));\n } else {\n pPr.children = [XMLBuilder.w('numPr', undefined, numPrChildren)];\n }\n }\n }\n if (pPr.children && pPr.children.length > 0) {\n styleChildren.push(pPr);\n }\n }\n\n // Add run properties\n if (this.properties.runFormatting) {\n const rPr = this.generateRunProperties(this.properties.runFormatting);\n if (rPr.children && rPr.children.length > 0) {\n styleChildren.push(rPr);\n }\n }\n\n // Add table style properties (Phase 5.1)\n if (this.properties.tableStyle) {\n // Add tblPr (table properties)\n if (this.properties.tableStyle.table) {\n const tblPr = this.generateTableProperties(\n this.properties.tableStyle.table,\n this.properties.tableStyle\n );\n if (tblPr.children && tblPr.children.length > 0) {\n styleChildren.push(tblPr);\n }\n }\n\n // Add trPr (table row properties) — per CT_Style: tblPr → trPr → tcPr\n if (this.properties.tableStyle.row) {\n const trPr = this.generateTableRowProperties(this.properties.tableStyle.row);\n if (trPr.children && trPr.children.length > 0) {\n styleChildren.push(trPr);\n }\n }\n\n // Add tcPr (table cell properties)\n if (this.properties.tableStyle.cell) {\n const tcPr = this.generateTableCellProperties(this.properties.tableStyle.cell);\n if (tcPr.children && tcPr.children.length > 0) {\n styleChildren.push(tcPr);\n }\n }\n\n // Add conditional formatting (tblStylePr)\n if (this.properties.tableStyle.conditionalFormatting) {\n for (const conditional of this.properties.tableStyle.conditionalFormatting) {\n const tblStylePr = this.generateConditionalFormatting(conditional);\n if (tblStylePr.children && tblStylePr.children.length > 0) {\n styleChildren.push(tblStylePr);\n }\n }\n }\n }\n\n return XMLBuilder.w('style', styleAttrs, styleChildren);\n }\n\n /**\n * Generates paragraph properties XML\n */\n private generateParagraphProperties(formatting: ParagraphFormatting): XMLElement {\n const pPrChildren: XMLElement[] = [];\n\n // Ordered per ECMA-376 CT_PPrBase\n if (formatting.keepNext) {\n pPrChildren.push(XMLBuilder.wSelf('keepNext'));\n }\n if (formatting.keepLines) {\n pPrChildren.push(XMLBuilder.wSelf('keepLines'));\n }\n if (formatting.pageBreakBefore) {\n pPrChildren.push(XMLBuilder.wSelf('pageBreakBefore'));\n }\n\n // Add spacing\n if (formatting.spacing) {\n const spc = formatting.spacing;\n const attributes: Record<string, number | string> = {};\n if (spc.before !== undefined) attributes['w:before'] = spc.before;\n if (spc.after !== undefined) attributes['w:after'] = spc.after;\n if (spc.line !== undefined) attributes['w:line'] = spc.line;\n if (spc.lineRule) attributes['w:lineRule'] = spc.lineRule;\n if (Object.keys(attributes).length > 0) {\n pPrChildren.push(XMLBuilder.wSelf('spacing', attributes));\n }\n }\n\n // Add indentation\n if (formatting.indentation) {\n const ind = formatting.indentation;\n const attributes: Record<string, number> = {};\n if (ind.left !== undefined) attributes['w:left'] = ind.left;\n if (ind.right !== undefined) attributes['w:right'] = ind.right;\n if (ind.firstLine !== undefined) attributes['w:firstLine'] = ind.firstLine;\n if (ind.hanging !== undefined) attributes['w:hanging'] = ind.hanging;\n if (Object.keys(attributes).length > 0) {\n pPrChildren.push(XMLBuilder.wSelf('ind', attributes));\n }\n }\n\n // Contextual spacing per ECMA-376 Part 1 §17.3.1.8\n // Removes spacing between paragraphs of the same style\n if (formatting.contextualSpacing) {\n pPrChildren.push(XMLBuilder.wSelf('contextualSpacing', { 'w:val': '1' }));\n }\n\n // Add alignment\n if (formatting.alignment) {\n // Map 'justify' to 'both' per ECMA-376 (Word uses 'both' for justified text)\n const alignmentValue = formatting.alignment === 'justify' ? 'both' : formatting.alignment;\n pPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': alignmentValue }));\n }\n\n // Add outline level for TOC support (Heading 1 = 0, Heading 2 = 1, etc.)\n if (formatting.outlineLevel !== undefined) {\n pPrChildren.push(\n XMLBuilder.wSelf('outlineLvl', { 'w:val': formatting.outlineLevel.toString() })\n );\n }\n\n return XMLBuilder.w('pPr', undefined, pPrChildren);\n }\n\n /**\n * Generates run properties XML\n */\n private generateRunProperties(formatting: RunFormatting): XMLElement {\n const rPrChildren: XMLElement[] = [];\n\n // Add formatting elements — ordered per ECMA-376 CT_RPr\n if (formatting.font) {\n rPrChildren.push(\n XMLBuilder.wSelf('rFonts', {\n 'w:ascii': formatting.font,\n 'w:hAnsi': formatting.font,\n 'w:cs': formatting.font,\n })\n );\n }\n if (formatting.bold) {\n rPrChildren.push(XMLBuilder.wSelf('b'));\n }\n if (formatting.italic) {\n rPrChildren.push(XMLBuilder.wSelf('i'));\n }\n if (formatting.allCaps) {\n rPrChildren.push(XMLBuilder.wSelf('caps'));\n }\n if (formatting.smallCaps) {\n rPrChildren.push(XMLBuilder.wSelf('smallCaps'));\n }\n if (formatting.strike) {\n rPrChildren.push(XMLBuilder.wSelf('strike'));\n }\n if (formatting.dstrike) {\n rPrChildren.push(XMLBuilder.wSelf('dstrike'));\n }\n if (formatting.color) {\n rPrChildren.push(XMLBuilder.wSelf('color', { 'w:val': formatting.color }));\n }\n if (formatting.size !== undefined) {\n const halfPoints = pointsToHalfPoints(formatting.size);\n rPrChildren.push(XMLBuilder.wSelf('sz', { 'w:val': halfPoints }));\n rPrChildren.push(XMLBuilder.wSelf('szCs', { 'w:val': halfPoints }));\n }\n if (formatting.highlight) {\n rPrChildren.push(XMLBuilder.wSelf('highlight', { 'w:val': formatting.highlight }));\n }\n if (formatting.underline) {\n const underlineValue =\n typeof formatting.underline === 'string' ? formatting.underline : 'single';\n rPrChildren.push(XMLBuilder.wSelf('u', { 'w:val': underlineValue }));\n }\n if (formatting.subscript) {\n rPrChildren.push(XMLBuilder.wSelf('vertAlign', { 'w:val': 'subscript' }));\n }\n if (formatting.superscript) {\n rPrChildren.push(XMLBuilder.wSelf('vertAlign', { 'w:val': 'superscript' }));\n }\n\n return XMLBuilder.w('rPr', undefined, rPrChildren);\n }\n\n /**\n * Generates table properties XML (tblPr) - Phase 5.1\n */\n private generateTableProperties(\n formatting: TableStyleFormatting,\n tableStyle: TableStyleProperties,\n isConditional = false\n ): XMLElement {\n const tblPrChildren: XMLElement[] = [];\n\n // Ordered per CT_TblPrBase (ECMA-376 §17.4.60):\n // tblStyleRowBandSize → tblStyleColBandSize → tblW → jc →\n // tblCellSpacing → tblInd → tblBorders → shd → tblCellMar\n\n // Row band size (must come first)\n if (tableStyle.rowBandSize !== undefined) {\n tblPrChildren.push(\n XMLBuilder.wSelf('tblStyleRowBandSize', {\n 'w:val': tableStyle.rowBandSize,\n })\n );\n }\n\n // Column band size\n if (tableStyle.colBandSize !== undefined) {\n tblPrChildren.push(\n XMLBuilder.wSelf('tblStyleColBandSize', {\n 'w:val': tableStyle.colBandSize,\n })\n );\n }\n\n // Note: tblW is omitted for table styles. It's only valid in inline tblPr\n // (CT_TblPr in table elements), not in CT_Style's tblPr.\n\n // Table alignment\n if (formatting.alignment) {\n tblPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': formatting.alignment }));\n }\n\n // Cell spacing\n if (formatting.cellSpacing !== undefined) {\n tblPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': formatting.cellSpacing,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Table indentation\n if (formatting.indent !== undefined) {\n tblPrChildren.push(\n XMLBuilder.wSelf('tblInd', {\n 'w:w': formatting.indent,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Table borders\n if (formatting.borders) {\n const borderElements = this.generateBorderElements(formatting.borders, false);\n if (borderElements.length > 0) {\n tblPrChildren.push(XMLBuilder.w('tblBorders', undefined, borderElements));\n }\n }\n\n // Table shading (not valid in tblStylePr conditional context)\n if (formatting.shading && !isConditional) {\n tblPrChildren.push(this.generateShadingElement(formatting.shading));\n }\n\n // Cell margins\n if (formatting.cellMargins) {\n const marginElements: XMLElement[] = [];\n if (formatting.cellMargins.top !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('top', {\n 'w:w': formatting.cellMargins.top,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.cellMargins.left !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('left', {\n 'w:w': formatting.cellMargins.left,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.cellMargins.bottom !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('bottom', {\n 'w:w': formatting.cellMargins.bottom,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.cellMargins.right !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('right', {\n 'w:w': formatting.cellMargins.right,\n 'w:type': 'dxa',\n })\n );\n }\n if (marginElements.length > 0) {\n tblPrChildren.push(XMLBuilder.w('tblCellMar', undefined, marginElements));\n }\n }\n\n return XMLBuilder.w('tblPr', undefined, tblPrChildren);\n }\n\n /**\n * Generates table cell properties XML (tcPr) - Phase 5.1\n */\n private generateTableCellProperties(formatting: TableCellStyleFormatting): XMLElement {\n const tcPrChildren: XMLElement[] = [];\n\n // Cell borders\n if (formatting.borders) {\n const borderElements = this.generateBorderElements(formatting.borders, true);\n if (borderElements.length > 0) {\n tcPrChildren.push(XMLBuilder.w('tcBorders', undefined, borderElements));\n }\n }\n\n // Cell shading\n if (formatting.shading) {\n tcPrChildren.push(this.generateShadingElement(formatting.shading));\n }\n\n // Cell margins\n if (formatting.margins) {\n const marginElements: XMLElement[] = [];\n if (formatting.margins.top !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('top', {\n 'w:w': formatting.margins.top,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.margins.left !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('left', {\n 'w:w': formatting.margins.left,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.margins.bottom !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('bottom', {\n 'w:w': formatting.margins.bottom,\n 'w:type': 'dxa',\n })\n );\n }\n if (formatting.margins.right !== undefined) {\n marginElements.push(\n XMLBuilder.wSelf('right', {\n 'w:w': formatting.margins.right,\n 'w:type': 'dxa',\n })\n );\n }\n if (marginElements.length > 0) {\n tcPrChildren.push(XMLBuilder.w('tcMar', undefined, marginElements));\n }\n }\n\n // Vertical alignment\n if (formatting.verticalAlignment) {\n tcPrChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': formatting.verticalAlignment }));\n }\n\n return XMLBuilder.w('tcPr', undefined, tcPrChildren);\n }\n\n /**\n * Generates table row properties XML (trPr) - Phase 5.1\n */\n private generateTableRowProperties(formatting: TableRowStyleFormatting): XMLElement {\n const trPrChildren: XMLElement[] = [];\n\n // Style-level trPr has a restricted content model compared to inline trPr.\n // Valid children: cantSplit, tblHeader, tblCellSpacing, jc, hidden\n // NOTE: trHeight is NOT valid in style-level trPr per OOXML strict schema.\n\n // Can't split row across pages\n if (formatting.cantSplit) {\n trPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n }\n\n // Header row\n if (formatting.isHeader) {\n trPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n }\n\n return XMLBuilder.w('trPr', undefined, trPrChildren);\n }\n\n /**\n * Generates conditional formatting XML (tblStylePr) - Phase 5.1\n */\n private generateConditionalFormatting(conditional: ConditionalTableFormatting): XMLElement {\n const tblStylePrChildren: XMLElement[] = [];\n\n // Add paragraph properties if specified\n if (conditional.paragraphFormatting) {\n const pPr = this.generateParagraphProperties(conditional.paragraphFormatting);\n if (pPr.children && pPr.children.length > 0) {\n tblStylePrChildren.push(pPr);\n }\n }\n\n // Add run properties if specified\n if (conditional.runFormatting) {\n const rPr = this.generateRunProperties(conditional.runFormatting);\n if (rPr.children && rPr.children.length > 0) {\n tblStylePrChildren.push(rPr);\n }\n }\n\n // Add table properties if specified\n if (conditional.tableFormatting) {\n const tblPr = this.generateTableProperties(conditional.tableFormatting, {}, true);\n if (tblPr.children && tblPr.children.length > 0) {\n tblStylePrChildren.push(tblPr);\n }\n }\n\n // Add cell properties if specified\n if (conditional.cellFormatting) {\n const tcPr = this.generateTableCellProperties(conditional.cellFormatting);\n if (tcPr.children && tcPr.children.length > 0) {\n tblStylePrChildren.push(tcPr);\n }\n }\n\n // Add row properties if specified\n if (conditional.rowFormatting) {\n const trPr = this.generateTableRowProperties(conditional.rowFormatting);\n if (trPr.children && trPr.children.length > 0) {\n tblStylePrChildren.push(trPr);\n }\n }\n\n return XMLBuilder.w('tblStylePr', { 'w:type': conditional.type }, tblStylePrChildren);\n }\n\n /**\n * Generates border elements for tables or cells - Phase 5.1\n * @param borders - Border properties\n * @param includeDiagonals - Whether to include diagonal borders (for cells)\n */\n private generateBorderElements(\n borders: TableBorders | CellBorders,\n includeDiagonals: boolean\n ): XMLElement[] {\n const borderElements: XMLElement[] = [];\n\n // Ordered per ECMA-376 CT_TblBorders / CT_TcBorders: top, left, bottom, right\n const borderProps = ['top', 'left', 'bottom', 'right', 'insideH', 'insideV'] as const;\n for (const prop of borderProps) {\n const border = borders[prop];\n if (border) {\n const attrs: Record<string, string | number> = {};\n if (border.style) attrs['w:val'] = border.style;\n if (border.size !== undefined) attrs['w:sz'] = border.size;\n if (border.space !== undefined) attrs['w:space'] = border.space;\n if (border.color) attrs['w:color'] = border.color;\n\n if (Object.keys(attrs).length > 0) {\n borderElements.push(XMLBuilder.wSelf(prop, attrs));\n }\n }\n }\n\n // Add diagonal borders for cells\n if (includeDiagonals) {\n const cellBorders = borders as CellBorders;\n if (cellBorders.tl2br) {\n const attrs: Record<string, string | number> = {};\n if (cellBorders.tl2br.style) attrs['w:val'] = cellBorders.tl2br.style;\n if (cellBorders.tl2br.size !== undefined) attrs['w:sz'] = cellBorders.tl2br.size;\n if (cellBorders.tl2br.space !== undefined) attrs['w:space'] = cellBorders.tl2br.space;\n if (cellBorders.tl2br.color) attrs['w:color'] = cellBorders.tl2br.color;\n\n if (Object.keys(attrs).length > 0) {\n borderElements.push(XMLBuilder.wSelf('tl2br', attrs));\n }\n }\n if (cellBorders.tr2bl) {\n const attrs: Record<string, string | number> = {};\n if (cellBorders.tr2bl.style) attrs['w:val'] = cellBorders.tr2bl.style;\n if (cellBorders.tr2bl.size !== undefined) attrs['w:sz'] = cellBorders.tr2bl.size;\n if (cellBorders.tr2bl.space !== undefined) attrs['w:space'] = cellBorders.tr2bl.space;\n if (cellBorders.tr2bl.color) attrs['w:color'] = cellBorders.tr2bl.color;\n\n if (Object.keys(attrs).length > 0) {\n borderElements.push(XMLBuilder.wSelf('tr2bl', attrs));\n }\n }\n }\n\n return borderElements;\n }\n\n /**\n * Generates shading element - Phase 5.1\n */\n private generateShadingElement(shading: ShadingProperties): XMLElement {\n const attrs = buildShadingAttributes(shading);\n return XMLBuilder.wSelf('shd', attrs);\n }\n\n /**\n * Creates a new Style\n * @param properties - Style properties\n * @returns New Style instance\n */\n static create(properties: StyleProperties): Style {\n return new Style(properties);\n }\n\n /**\n * Creates the Normal style (default paragraph style)\n * @returns Normal style\n */\n static createNormalStyle(): Style {\n return new Style({\n styleId: 'Normal',\n name: 'Normal',\n type: 'paragraph',\n isDefault: true,\n next: 'Normal',\n qFormat: true,\n uiPriority: 0,\n paragraphFormatting: {\n alignment: 'left',\n spacing: {\n before: 60, // 3pt\n after: 60, // 3pt\n line: 240, // Single line spacing\n lineRule: 'auto',\n },\n },\n runFormatting: {\n font: 'Verdana',\n size: 12,\n color: '000000',\n },\n });\n }\n\n /**\n * Creates a Heading style\n * @param level - Heading level (1-9)\n * @returns Heading style\n */\n static createHeadingStyle(level: number): Style {\n if (level < 1 || level > 9) {\n throw new Error('Heading level must be between 1 and 9');\n }\n\n // Font sizes: H1=18pt, H2=14pt, H3=12pt, H4-9=12pt\n const sizes = [18, 14, 12, 12, 12, 12, 12, 12, 12];\n\n // Spacing before: H1=0pt, H2=6pt, H3=3pt, H4-9=6pt (in twips: 1pt = 20 twips)\n const spacingBefore = level === 1 ? 0 : level === 2 ? 120 : level === 3 ? 60 : 120;\n\n // Spacing after: H1=12pt, H2=6pt, H3=3pt, H4-9=6pt (in twips)\n const spacingAfter = level === 1 ? 240 : level === 2 ? 120 : level === 3 ? 60 : 120;\n\n return new Style({\n styleId: `Heading${level}`,\n name: `Heading ${level}`,\n type: 'paragraph',\n basedOn: 'Normal',\n next: 'Normal',\n link: `Heading${level}Char`,\n qFormat: true,\n uiPriority: 9,\n paragraphFormatting: {\n alignment: 'left',\n spacing: {\n before: spacingBefore,\n after: spacingAfter,\n line: 240, // Single line spacing\n lineRule: 'auto',\n },\n keepNext: true,\n keepLines: true,\n outlineLevel: level - 1, // Heading 1 = 0, Heading 2 = 1, etc. Required for TOC\n },\n runFormatting: {\n font: 'Verdana',\n size: sizes[level - 1],\n bold: true,\n color: '000000',\n },\n });\n }\n\n /**\n * Creates a Heading character style (linked to paragraph style)\n * @param level - Heading level (1-9)\n * @returns Heading character style\n */\n static createHeadingCharStyle(level: number): Style {\n if (level < 1 || level > 9) {\n throw new Error('Heading level must be between 1 and 9');\n }\n\n // Font sizes: H1=18pt, H2=14pt, H3=12pt, H4-9=12pt\n const sizes = [18, 14, 12, 12, 12, 12, 12, 12, 12];\n\n return new Style({\n styleId: `Heading${level}Char`,\n name: `Heading ${level} Char`,\n type: 'character',\n link: `Heading${level}`,\n qFormat: true,\n uiPriority: 9,\n runFormatting: {\n font: 'Verdana',\n size: sizes[level - 1],\n bold: true,\n color: '000000',\n },\n });\n }\n\n /**\n * Creates the Title style\n * @returns Title style\n */\n static createTitleStyle(): Style {\n return new Style({\n styleId: 'Title',\n name: 'Title',\n type: 'paragraph',\n basedOn: 'Normal',\n next: 'Normal',\n paragraphFormatting: {\n spacing: {\n after: 120,\n },\n },\n runFormatting: {\n font: 'Verdana',\n size: 28,\n color: '000000',\n },\n });\n }\n\n /**\n * Creates the Subtitle style\n * @returns Subtitle style\n */\n static createSubtitleStyle(): Style {\n return new Style({\n styleId: 'Subtitle',\n name: 'Subtitle',\n type: 'paragraph',\n basedOn: 'Normal',\n next: 'Normal',\n paragraphFormatting: {\n spacing: {\n after: 120,\n },\n },\n runFormatting: {\n font: 'Verdana',\n size: 14,\n color: '000000',\n italic: true,\n },\n });\n }\n\n /**\n * Creates a List Paragraph style (for lists)\n * @returns List Paragraph style\n */\n static createListParagraphStyle(): Style {\n return new Style({\n styleId: 'ListParagraph',\n name: 'List Paragraph',\n type: 'paragraph',\n basedOn: 'Normal',\n next: 'ListParagraph',\n qFormat: true,\n uiPriority: 34,\n paragraphFormatting: {\n alignment: 'left',\n indentation: {\n left: 720, // 0.5 inch (text indentation)\n hanging: 360, // 0.25 inch (bullet/number indentation)\n },\n spacing: {\n before: 0, // 0pt\n after: 60, // 3pt\n line: 240, // Single line spacing\n lineRule: 'auto',\n },\n contextualSpacing: true, // No space between similar paragraphs\n },\n runFormatting: {\n font: 'Verdana',\n size: 12,\n color: '000000',\n },\n });\n }\n\n /**\n * Creates a TOC Heading style (for table of contents titles)\n * @returns TOC Heading style\n */\n static createTOCHeadingStyle(): Style {\n return new Style({\n styleId: 'TOCHeading',\n name: 'TOC Heading',\n type: 'paragraph',\n basedOn: 'Heading1',\n next: 'Normal',\n runFormatting: {\n bold: true,\n font: 'Verdana',\n size: 14,\n color: '000000', // Black\n },\n paragraphFormatting: {\n spacing: {\n before: 480, // Larger spacing before TOC\n after: 240,\n },\n },\n });\n }\n\n /**\n * Creates a TOC entry style for a specific level (1-9).\n * TOC 1-9 are built-in Word styles for Table of Contents entries.\n * When Word updates a TOC field, it applies these styles to the generated entries.\n *\n * @param level - TOC level (1-9)\n * @param formatting - Optional run and paragraph formatting overrides\n * @returns TOC style for the specified level\n */\n static createTOCStyle(\n level: number,\n formatting?: {\n run?: RunFormatting;\n paragraph?: ParagraphFormatting;\n }\n ): Style {\n if (level < 1 || level > 9) {\n throw new Error('TOC level must be between 1 and 9');\n }\n\n // Default indentation: 220 twips per level (11pt)\n const defaultLeftIndent = (level - 1) * 220;\n\n return Style.create({\n styleId: `TOC${level}`,\n name: `toc ${level}`,\n type: 'paragraph',\n basedOn: 'Normal',\n uiPriority: 39,\n semiHidden: true,\n unhideWhenUsed: true,\n runFormatting: formatting?.run,\n paragraphFormatting: {\n indentation: { left: defaultLeftIndent },\n ...formatting?.paragraph,\n },\n });\n }\n\n /**\n * Creates a Table Normal style (Phase 5.1)\n * @returns Table Normal style\n */\n static createTableNormalStyle(): Style {\n return new Style({\n styleId: 'TableNormal',\n name: 'Table Normal',\n type: 'table',\n basedOn: 'Normal',\n tableStyle: {\n table: {\n cellMargins: {\n top: 0,\n left: 108, // ~0.075 inch\n bottom: 0,\n right: 108,\n },\n },\n rowBandSize: 1,\n colBandSize: 1,\n },\n });\n }\n\n /**\n * Creates a Table Grid style with borders (Phase 5.1)\n * @returns Table Grid style\n */\n static createTableGridStyle(): Style {\n return new Style({\n styleId: 'TableGrid',\n name: 'Table Grid',\n type: 'table',\n basedOn: 'TableNormal',\n tableStyle: {\n table: {\n borders: {\n top: { style: 'single', size: 4, color: '000000' },\n bottom: { style: 'single', size: 4, color: '000000' },\n left: { style: 'single', size: 4, color: '000000' },\n right: { style: 'single', size: 4, color: '000000' },\n insideH: { style: 'single', size: 4, color: '000000' },\n insideV: { style: 'single', size: 4, color: '000000' },\n },\n cellMargins: {\n top: 0,\n left: 108,\n bottom: 0,\n right: 108,\n },\n },\n rowBandSize: 1,\n colBandSize: 1,\n },\n });\n }\n\n /**\n * Creates a deep clone of this style\n * @returns New Style instance with copied properties\n * @example\n * ```typescript\n * const original = Style.createHeadingStyle(1);\n * const copy = original.clone();\n * copy.setRunFormatting({ color: 'FF0000' }); // Doesn't affect original\n * ```\n */\n clone(): Style {\n // Deep copy all properties\n const clonedProps: StyleProperties = deepClone(this.properties);\n return new Style(clonedProps);\n }\n\n /**\n * Resets the style to its minimal state\n * Clears all paragraph and run formatting while preserving the style identity\n * @returns This style for chaining\n * @example\n * ```typescript\n * const style = Style.createHeadingStyle(1);\n * style.reset(); // Clears all formatting, keeps styleId and name\n * ```\n */\n reset(): this {\n // Preserve identity properties\n const { styleId, name, type, basedOn } = this.properties;\n\n // Reset to minimal properties\n this.properties = {\n styleId,\n name,\n type,\n basedOn,\n };\n\n return this;\n }\n\n /**\n * Merges properties from another style into this one\n * @param otherStyle - Style to merge from\n * @returns This style for chaining\n * @example\n * ```typescript\n * const base = Style.createNormalStyle();\n * const override = Style.create({\n * styleId: 'Override',\n * name: 'Override',\n * type: 'paragraph',\n * runFormatting: { bold: true, color: 'FF0000' }\n * });\n * base.mergeWith(override); // base now has bold red text\n * ```\n */\n mergeWith(otherStyle: Style): this {\n const otherProps = otherStyle.getProperties();\n\n // Merge paragraph formatting\n if (otherProps.paragraphFormatting) {\n if (!this.properties.paragraphFormatting) {\n this.properties.paragraphFormatting = {};\n }\n\n // Merge top-level paragraph properties\n if (otherProps.paragraphFormatting.alignment) {\n this.properties.paragraphFormatting.alignment = otherProps.paragraphFormatting.alignment;\n }\n if (otherProps.paragraphFormatting.keepNext !== undefined) {\n this.properties.paragraphFormatting.keepNext = otherProps.paragraphFormatting.keepNext;\n }\n if (otherProps.paragraphFormatting.keepLines !== undefined) {\n this.properties.paragraphFormatting.keepLines = otherProps.paragraphFormatting.keepLines;\n }\n if (otherProps.paragraphFormatting.pageBreakBefore !== undefined) {\n this.properties.paragraphFormatting.pageBreakBefore =\n otherProps.paragraphFormatting.pageBreakBefore;\n }\n\n // Merge indentation\n if (otherProps.paragraphFormatting.indentation) {\n if (!this.properties.paragraphFormatting.indentation) {\n this.properties.paragraphFormatting.indentation = {};\n }\n Object.assign(\n this.properties.paragraphFormatting.indentation,\n otherProps.paragraphFormatting.indentation\n );\n }\n\n // Merge spacing\n if (otherProps.paragraphFormatting.spacing) {\n if (!this.properties.paragraphFormatting.spacing) {\n this.properties.paragraphFormatting.spacing = {};\n }\n Object.assign(\n this.properties.paragraphFormatting.spacing,\n otherProps.paragraphFormatting.spacing\n );\n }\n }\n\n // Merge run formatting\n if (otherProps.runFormatting) {\n if (!this.properties.runFormatting) {\n this.properties.runFormatting = {};\n }\n Object.assign(this.properties.runFormatting, otherProps.runFormatting);\n }\n\n // Merge other properties (but don't override styleId)\n if (otherProps.name) this.properties.name = otherProps.name;\n if (otherProps.basedOn) this.properties.basedOn = otherProps.basedOn;\n if (otherProps.next) this.properties.next = otherProps.next;\n\n return this;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { Paragraph } from "../elements/Paragraph";
2
- import { Style, StyleType } from "./Style";
1
+ import { Paragraph } from '../elements/Paragraph';
2
+ import { Style, StyleType } from './Style';
3
3
  export interface LatentStylesConfig {
4
4
  defaultLockedState?: boolean;
5
5
  defaultUiPriority?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"StylesManager.d.ts","sourceRoot":"","sources":["../../src/formatting/StylesManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StylesManager.d.ts","sourceRoot":"","sources":["../../src/formatting/StylesManager.ts"],"names":[],"mappings":"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"}