docxmlater 10.1.3 → 10.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +759 -754
  2. package/dist/constants/legacyCompatFlags.js +1 -1
  3. package/dist/constants/legacyCompatFlags.js.map +1 -1
  4. package/dist/constants/limits.js.map +1 -1
  5. package/dist/core/Document.d.ts +50 -50
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +483 -471
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +9 -9
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +1 -1
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentGenerator.d.ts +11 -11
  14. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  15. package/dist/core/DocumentGenerator.js +251 -251
  16. package/dist/core/DocumentGenerator.js.map +1 -1
  17. package/dist/core/DocumentIdManager.js.map +1 -1
  18. package/dist/core/DocumentParser.d.ts +15 -15
  19. package/dist/core/DocumentParser.d.ts.map +1 -1
  20. package/dist/core/DocumentParser.js +2123 -2155
  21. package/dist/core/DocumentParser.js.map +1 -1
  22. package/dist/core/DocumentValidator.d.ts.map +1 -1
  23. package/dist/core/DocumentValidator.js +2 -5
  24. package/dist/core/DocumentValidator.js.map +1 -1
  25. package/dist/core/Relationship.js.map +1 -1
  26. package/dist/core/RelationshipManager.d.ts.map +1 -1
  27. package/dist/core/RelationshipManager.js +3 -3
  28. package/dist/core/RelationshipManager.js.map +1 -1
  29. package/dist/elements/AlternateContent.js.map +1 -1
  30. package/dist/elements/Bookmark.d.ts.map +1 -1
  31. package/dist/elements/Bookmark.js +3 -1
  32. package/dist/elements/Bookmark.js.map +1 -1
  33. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  34. package/dist/elements/BookmarkManager.js.map +1 -1
  35. package/dist/elements/Comment.d.ts.map +1 -1
  36. package/dist/elements/Comment.js +9 -6
  37. package/dist/elements/Comment.js.map +1 -1
  38. package/dist/elements/CommentManager.d.ts.map +1 -1
  39. package/dist/elements/CommentManager.js +18 -17
  40. package/dist/elements/CommentManager.js.map +1 -1
  41. package/dist/elements/CommonTypes.d.ts +21 -21
  42. package/dist/elements/CommonTypes.d.ts.map +1 -1
  43. package/dist/elements/CommonTypes.js +56 -56
  44. package/dist/elements/CommonTypes.js.map +1 -1
  45. package/dist/elements/CustomXml.js.map +1 -1
  46. package/dist/elements/Endnote.d.ts.map +1 -1
  47. package/dist/elements/Endnote.js +6 -6
  48. package/dist/elements/Endnote.js.map +1 -1
  49. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  50. package/dist/elements/EndnoteManager.js +6 -7
  51. package/dist/elements/EndnoteManager.js.map +1 -1
  52. package/dist/elements/Field.d.ts.map +1 -1
  53. package/dist/elements/Field.js +82 -25
  54. package/dist/elements/Field.js.map +1 -1
  55. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  56. package/dist/elements/FieldHelpers.js.map +1 -1
  57. package/dist/elements/FontManager.d.ts.map +1 -1
  58. package/dist/elements/FontManager.js +1 -1
  59. package/dist/elements/FontManager.js.map +1 -1
  60. package/dist/elements/Footer.js +2 -2
  61. package/dist/elements/Footer.js.map +1 -1
  62. package/dist/elements/Footnote.d.ts.map +1 -1
  63. package/dist/elements/Footnote.js +6 -6
  64. package/dist/elements/Footnote.js.map +1 -1
  65. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  66. package/dist/elements/FootnoteManager.js +6 -7
  67. package/dist/elements/FootnoteManager.js.map +1 -1
  68. package/dist/elements/Header.js +2 -2
  69. package/dist/elements/Header.js.map +1 -1
  70. package/dist/elements/HeaderFooterManager.js.map +1 -1
  71. package/dist/elements/Hyperlink.d.ts +5 -3
  72. package/dist/elements/Hyperlink.d.ts.map +1 -1
  73. package/dist/elements/Hyperlink.js +134 -76
  74. package/dist/elements/Hyperlink.js.map +1 -1
  75. package/dist/elements/Image.d.ts.map +1 -1
  76. package/dist/elements/Image.js +238 -106
  77. package/dist/elements/Image.js.map +1 -1
  78. package/dist/elements/ImageManager.d.ts.map +1 -1
  79. package/dist/elements/ImageManager.js +1 -1
  80. package/dist/elements/ImageManager.js.map +1 -1
  81. package/dist/elements/ImageRun.js +1 -1
  82. package/dist/elements/ImageRun.js.map +1 -1
  83. package/dist/elements/MathElement.js.map +1 -1
  84. package/dist/elements/Paragraph.d.ts +24 -24
  85. package/dist/elements/Paragraph.d.ts.map +1 -1
  86. package/dist/elements/Paragraph.js +181 -188
  87. package/dist/elements/Paragraph.js.map +1 -1
  88. package/dist/elements/PreservedElement.js.map +1 -1
  89. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  90. package/dist/elements/PropertyChangeTypes.js +6 -6
  91. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  92. package/dist/elements/RangeMarker.d.ts.map +1 -1
  93. package/dist/elements/RangeMarker.js.map +1 -1
  94. package/dist/elements/Revision.d.ts.map +1 -1
  95. package/dist/elements/Revision.js +4 -5
  96. package/dist/elements/Revision.js.map +1 -1
  97. package/dist/elements/RevisionContent.js.map +1 -1
  98. package/dist/elements/RevisionManager.d.ts.map +1 -1
  99. package/dist/elements/RevisionManager.js +40 -48
  100. package/dist/elements/RevisionManager.js.map +1 -1
  101. package/dist/elements/Run.d.ts +16 -16
  102. package/dist/elements/Run.d.ts.map +1 -1
  103. package/dist/elements/Run.js +256 -238
  104. package/dist/elements/Run.js.map +1 -1
  105. package/dist/elements/Section.d.ts.map +1 -1
  106. package/dist/elements/Section.js +36 -11
  107. package/dist/elements/Section.js.map +1 -1
  108. package/dist/elements/Shape.d.ts.map +1 -1
  109. package/dist/elements/Shape.js.map +1 -1
  110. package/dist/elements/StructuredDocumentTag.d.ts +6 -6
  111. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  112. package/dist/elements/StructuredDocumentTag.js +99 -104
  113. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  114. package/dist/elements/Table.d.ts +11 -11
  115. package/dist/elements/Table.d.ts.map +1 -1
  116. package/dist/elements/Table.js +102 -107
  117. package/dist/elements/Table.js.map +1 -1
  118. package/dist/elements/TableCell.d.ts +10 -10
  119. package/dist/elements/TableCell.d.ts.map +1 -1
  120. package/dist/elements/TableCell.js +105 -106
  121. package/dist/elements/TableCell.js.map +1 -1
  122. package/dist/elements/TableGridChange.d.ts.map +1 -1
  123. package/dist/elements/TableGridChange.js.map +1 -1
  124. package/dist/elements/TableOfContents.d.ts.map +1 -1
  125. package/dist/elements/TableOfContents.js +4 -4
  126. package/dist/elements/TableOfContents.js.map +1 -1
  127. package/dist/elements/TableOfContentsElement.js.map +1 -1
  128. package/dist/elements/TableRow.d.ts.map +1 -1
  129. package/dist/elements/TableRow.js +13 -6
  130. package/dist/elements/TableRow.js.map +1 -1
  131. package/dist/elements/TextBox.d.ts.map +1 -1
  132. package/dist/elements/TextBox.js +3 -5
  133. package/dist/elements/TextBox.js.map +1 -1
  134. package/dist/formatting/AbstractNumbering.d.ts +4 -4
  135. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  136. package/dist/formatting/AbstractNumbering.js +54 -49
  137. package/dist/formatting/AbstractNumbering.js.map +1 -1
  138. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  139. package/dist/formatting/NumberingInstance.js +1 -3
  140. package/dist/formatting/NumberingInstance.js.map +1 -1
  141. package/dist/formatting/NumberingLevel.d.ts +5 -5
  142. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  143. package/dist/formatting/NumberingLevel.js +119 -125
  144. package/dist/formatting/NumberingLevel.js.map +1 -1
  145. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  146. package/dist/formatting/NumberingManager.js +9 -9
  147. package/dist/formatting/NumberingManager.js.map +1 -1
  148. package/dist/formatting/Style.d.ts +11 -11
  149. package/dist/formatting/Style.d.ts.map +1 -1
  150. package/dist/formatting/Style.js +219 -247
  151. package/dist/formatting/Style.js.map +1 -1
  152. package/dist/formatting/StylesManager.d.ts +2 -2
  153. package/dist/formatting/StylesManager.d.ts.map +1 -1
  154. package/dist/formatting/StylesManager.js +96 -102
  155. package/dist/formatting/StylesManager.js.map +1 -1
  156. package/dist/helpers/CleanupHelper.d.ts +1 -1
  157. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  158. package/dist/helpers/CleanupHelper.js +6 -6
  159. package/dist/helpers/CleanupHelper.js.map +1 -1
  160. package/dist/images/ImageOptimizer.js +7 -7
  161. package/dist/images/ImageOptimizer.js.map +1 -1
  162. package/dist/index.d.ts +9 -9
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js.map +1 -1
  165. package/dist/managers/DrawingManager.js.map +1 -1
  166. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  167. package/dist/tracking/DocumentTrackingContext.js +23 -7
  168. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  169. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  170. package/dist/tracking/TrackingContext.js.map +1 -1
  171. package/dist/types/compatibility-types.js.map +1 -1
  172. package/dist/types/formatting.js.map +1 -1
  173. package/dist/types/list-types.d.ts +6 -6
  174. package/dist/types/list-types.js.map +1 -1
  175. package/dist/types/settings-types.js.map +1 -1
  176. package/dist/types/styleConfig.d.ts +2 -2
  177. package/dist/types/styleConfig.js.map +1 -1
  178. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  179. package/dist/utils/ChangelogGenerator.js +97 -101
  180. package/dist/utils/ChangelogGenerator.js.map +1 -1
  181. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  182. package/dist/utils/CompatibilityUpgrader.js +1 -1
  183. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  184. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  185. package/dist/utils/InMemoryRevisionAcceptor.js +1 -6
  186. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  187. package/dist/utils/MoveOperationHelper.d.ts.map +1 -1
  188. package/dist/utils/MoveOperationHelper.js +1 -1
  189. package/dist/utils/MoveOperationHelper.js.map +1 -1
  190. package/dist/utils/RevisionAwareProcessor.d.ts.map +1 -1
  191. package/dist/utils/RevisionAwareProcessor.js +2 -4
  192. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  193. package/dist/utils/RevisionWalker.d.ts.map +1 -1
  194. package/dist/utils/RevisionWalker.js +4 -12
  195. package/dist/utils/RevisionWalker.js.map +1 -1
  196. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  197. package/dist/utils/SelectiveRevisionAcceptor.js +2 -6
  198. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  199. package/dist/utils/ShadingResolver.d.ts.map +1 -1
  200. package/dist/utils/ShadingResolver.js +1 -1
  201. package/dist/utils/ShadingResolver.js.map +1 -1
  202. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  203. package/dist/utils/acceptRevisions.js +23 -12
  204. package/dist/utils/acceptRevisions.js.map +1 -1
  205. package/dist/utils/cnfStyleDecoder.d.ts +1 -1
  206. package/dist/utils/cnfStyleDecoder.d.ts.map +1 -1
  207. package/dist/utils/cnfStyleDecoder.js +40 -40
  208. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  209. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  210. package/dist/utils/corruptionDetection.js.map +1 -1
  211. package/dist/utils/dateFormatting.js.map +1 -1
  212. package/dist/utils/deepClone.js +1 -1
  213. package/dist/utils/deepClone.js.map +1 -1
  214. package/dist/utils/diagnostics.d.ts.map +1 -1
  215. package/dist/utils/diagnostics.js +1 -1
  216. package/dist/utils/diagnostics.js.map +1 -1
  217. package/dist/utils/errorHandling.js.map +1 -1
  218. package/dist/utils/formatting.d.ts.map +1 -1
  219. package/dist/utils/formatting.js +10 -2
  220. package/dist/utils/formatting.js.map +1 -1
  221. package/dist/utils/list-detection.d.ts +2 -2
  222. package/dist/utils/list-detection.d.ts.map +1 -1
  223. package/dist/utils/list-detection.js +21 -23
  224. package/dist/utils/list-detection.js.map +1 -1
  225. package/dist/utils/logger.d.ts.map +1 -1
  226. package/dist/utils/logger.js +12 -7
  227. package/dist/utils/logger.js.map +1 -1
  228. package/dist/utils/parsingHelpers.js.map +1 -1
  229. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  230. package/dist/utils/stripTrackedChanges.js +3 -3
  231. package/dist/utils/stripTrackedChanges.js.map +1 -1
  232. package/dist/utils/textDiff.d.ts +1 -1
  233. package/dist/utils/textDiff.js +8 -8
  234. package/dist/utils/textDiff.js.map +1 -1
  235. package/dist/utils/units.js.map +1 -1
  236. package/dist/utils/validation.d.ts.map +1 -1
  237. package/dist/utils/validation.js +24 -7
  238. package/dist/utils/validation.js.map +1 -1
  239. package/dist/utils/xmlSanitization.d.ts.map +1 -1
  240. package/dist/utils/xmlSanitization.js +3 -3
  241. package/dist/utils/xmlSanitization.js.map +1 -1
  242. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  243. package/dist/validation/RevisionAutoFixer.js +5 -5
  244. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  245. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  246. package/dist/validation/RevisionValidator.js +7 -9
  247. package/dist/validation/RevisionValidator.js.map +1 -1
  248. package/dist/validation/ValidationRules.js +3 -3
  249. package/dist/validation/ValidationRules.js.map +1 -1
  250. package/dist/validation/index.js.map +1 -1
  251. package/dist/xml/XMLBuilder.d.ts +1 -1
  252. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  253. package/dist/xml/XMLBuilder.js +98 -100
  254. package/dist/xml/XMLBuilder.js.map +1 -1
  255. package/dist/xml/XMLParser.d.ts.map +1 -1
  256. package/dist/xml/XMLParser.js +61 -66
  257. package/dist/xml/XMLParser.js.map +1 -1
  258. package/dist/zip/ZipHandler.d.ts.map +1 -1
  259. package/dist/zip/ZipHandler.js.map +1 -1
  260. package/dist/zip/ZipReader.d.ts.map +1 -1
  261. package/dist/zip/ZipReader.js +1 -3
  262. package/dist/zip/ZipReader.js.map +1 -1
  263. package/dist/zip/ZipWriter.d.ts +1 -1
  264. package/dist/zip/ZipWriter.d.ts.map +1 -1
  265. package/dist/zip/ZipWriter.js +28 -36
  266. package/dist/zip/ZipWriter.js.map +1 -1
  267. package/dist/zip/types.js +1 -1
  268. package/dist/zip/types.js.map +1 -1
  269. package/package.json +92 -92
  270. package/src/__tests__/helper-methods.test.ts +512 -512
  271. package/src/constants/legacyCompatFlags.ts +138 -138
  272. package/src/constants/limits.ts +50 -50
  273. package/src/core/Document.ts +985 -1145
  274. package/src/core/DocumentContent.ts +461 -467
  275. package/src/core/DocumentGenerator.ts +1133 -1104
  276. package/src/core/DocumentIdManager.ts +158 -158
  277. package/src/core/DocumentParser.ts +2347 -2716
  278. package/src/core/DocumentValidator.ts +363 -372
  279. package/src/core/Relationship.ts +367 -367
  280. package/src/core/RelationshipManager.ts +429 -428
  281. package/src/elements/AlternateContent.ts +42 -42
  282. package/src/elements/Bookmark.ts +212 -210
  283. package/src/elements/BookmarkManager.ts +247 -250
  284. package/src/elements/Comment.ts +356 -359
  285. package/src/elements/CommentManager.ts +499 -502
  286. package/src/elements/CommonTypes.ts +524 -549
  287. package/src/elements/CustomXml.ts +36 -36
  288. package/src/elements/Endnote.ts +221 -217
  289. package/src/elements/EndnoteManager.ts +246 -249
  290. package/src/elements/Field.ts +1292 -1233
  291. package/src/elements/FieldHelpers.ts +329 -333
  292. package/src/elements/FontManager.ts +336 -339
  293. package/src/elements/Footer.ts +269 -269
  294. package/src/elements/Footnote.ts +221 -217
  295. package/src/elements/FootnoteManager.ts +246 -249
  296. package/src/elements/Header.ts +269 -269
  297. package/src/elements/HeaderFooterManager.ts +219 -219
  298. package/src/elements/Hyperlink.ts +1288 -1193
  299. package/src/elements/Image.ts +1982 -1756
  300. package/src/elements/ImageManager.ts +437 -432
  301. package/src/elements/ImageRun.ts +59 -59
  302. package/src/elements/MathElement.ts +65 -65
  303. package/src/elements/Paragraph.ts +4347 -4287
  304. package/src/elements/PreservedElement.ts +53 -53
  305. package/src/elements/PropertyChangeTypes.ts +458 -442
  306. package/src/elements/RangeMarker.ts +382 -400
  307. package/src/elements/Revision.ts +1198 -1217
  308. package/src/elements/RevisionContent.ts +73 -73
  309. package/src/elements/RevisionManager.ts +1070 -1070
  310. package/src/elements/Run.ts +3103 -3073
  311. package/src/elements/Section.ts +1521 -1421
  312. package/src/elements/Shape.ts +884 -873
  313. package/src/elements/StructuredDocumentTag.ts +1176 -1207
  314. package/src/elements/Table.ts +2468 -2524
  315. package/src/elements/TableCell.ts +1617 -1621
  316. package/src/elements/TableGridChange.ts +149 -151
  317. package/src/elements/TableOfContents.ts +701 -691
  318. package/src/elements/TableOfContentsElement.ts +89 -89
  319. package/src/elements/TableRow.ts +960 -929
  320. package/src/elements/TextBox.ts +766 -768
  321. package/src/formatting/AbstractNumbering.ts +580 -579
  322. package/src/formatting/NumberingInstance.ts +295 -299
  323. package/src/formatting/NumberingLevel.ts +981 -1040
  324. package/src/formatting/NumberingManager.ts +833 -827
  325. package/src/formatting/Style.ts +1785 -1879
  326. package/src/formatting/StylesManager.ts +1090 -1130
  327. package/src/helpers/CleanupHelper.ts +524 -524
  328. package/src/images/ImageOptimizer.ts +274 -274
  329. package/src/index.ts +559 -554
  330. package/src/managers/DrawingManager.ts +319 -319
  331. package/src/tracking/DocumentTrackingContext.ts +687 -674
  332. package/src/tracking/TrackingContext.ts +175 -173
  333. package/src/types/compatibility-types.ts +49 -49
  334. package/src/types/formatting.ts +210 -210
  335. package/src/types/list-types.ts +14 -14
  336. package/src/types/settings-types.ts +59 -59
  337. package/src/types/styleConfig.ts +189 -189
  338. package/src/utils/ChangelogGenerator.ts +1583 -1581
  339. package/src/utils/CompatibilityUpgrader.ts +235 -237
  340. package/src/utils/InMemoryRevisionAcceptor.ts +691 -696
  341. package/src/utils/MoveOperationHelper.ts +233 -238
  342. package/src/utils/RevisionAwareProcessor.ts +518 -526
  343. package/src/utils/RevisionWalker.ts +427 -457
  344. package/src/utils/SelectiveRevisionAcceptor.ts +662 -683
  345. package/src/utils/ShadingResolver.ts +105 -107
  346. package/src/utils/acceptRevisions.ts +723 -714
  347. package/src/utils/cnfStyleDecoder.ts +212 -217
  348. package/src/utils/corruptionDetection.ts +346 -345
  349. package/src/utils/dateFormatting.ts +20 -20
  350. package/src/utils/deepClone.ts +77 -78
  351. package/src/utils/diagnostics.ts +125 -129
  352. package/src/utils/errorHandling.ts +80 -80
  353. package/src/utils/formatting.ts +220 -213
  354. package/src/utils/list-detection.ts +32 -42
  355. package/src/utils/logger.ts +412 -404
  356. package/src/utils/parsingHelpers.ts +190 -190
  357. package/src/utils/stripTrackedChanges.ts +356 -353
  358. package/src/utils/textDiff.ts +100 -100
  359. package/src/utils/units.ts +421 -421
  360. package/src/utils/validation.ts +553 -542
  361. package/src/utils/xmlSanitization.ts +179 -182
  362. package/src/validation/RevisionAutoFixer.ts +541 -542
  363. package/src/validation/RevisionValidator.ts +470 -460
  364. package/src/validation/ValidationRules.ts +338 -338
  365. package/src/validation/index.ts +30 -30
  366. package/src/xml/XMLBuilder.ts +857 -871
  367. package/src/xml/XMLParser.ts +877 -919
  368. package/src/zip/ZipHandler.ts +629 -637
  369. package/src/zip/ZipReader.ts +295 -299
  370. package/src/zip/ZipWriter.ts +374 -390
  371. package/src/zip/types.ts +116 -116
@@ -1 +1 @@
1
- {"version":3,"file":"TableOfContents.js","sourceRoot":"","sources":["../../src/elements/TableOfContents.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * TableOfContents - Represents a Table of Contents in a Word document\r\n *\r\n * A TOC is a special field that automatically generates a list of headings\r\n * based on heading styles (Heading1, Heading2, etc.) in the document.\r\n */\r\n\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * TOC properties\r\n */\r\nexport interface TOCProperties {\r\n /** Title for the TOC (default: \"Table of Contents\") */\r\n title?: string;\r\n /** Heading levels to include (1-9, default: 1-3) */\r\n levels?: number;\r\n /** Specific styles to include (overrides levels if provided) */\r\n includeStyles?: { styleName: string; level: number }[];\r\n /** Whether to show page numbers (default: true) */\r\n showPageNumbers?: boolean;\r\n /** Whether to right-align page numbers (default: true) */\r\n rightAlignPageNumbers?: boolean;\r\n /** Whether to use hyperlinks instead of page numbers (default: false) */\r\n useHyperlinks?: boolean;\r\n /** Custom TOC style (default: built-in TOC style) */\r\n style?: string;\r\n /** Tab leader character (default: dot) */\r\n tabLeader?: 'dot' | 'hyphen' | 'underscore' | 'none';\r\n /** Custom field switches */\r\n fieldSwitches?: string;\r\n /** Hide page numbers in web layout with \\z switch (default: false) */\r\n hideInWebLayout?: boolean;\r\n /** Whether TOC entries should be numbered (default: false) */\r\n numbered?: boolean;\r\n /** Numbering format for TOC entries */\r\n numberingFormat?: 'decimal' | 'roman' | 'alpha';\r\n /** Remove all indentation from TOC entries (default: false) */\r\n noIndent?: boolean;\r\n /** Custom indents for each TOC level in twips */\r\n customIndents?: number[];\r\n /** Space between TOC entries in twips (default: 0) */\r\n spaceBetweenEntries?: number;\r\n /** Hyperlink color in hex format without # (default: 0000FF) */\r\n hyperlinkColor?: string;\r\n /** Original field instruction from loaded document (internal use) */\r\n originalFieldInstruction?: string;\r\n /** Enable automatic normalization of incomplete \\t switches (default: false) */\r\n normalizeFieldInstruction?: boolean;\r\n}\r\n\r\n/**\r\n * Represents a Table of Contents\r\n */\r\nexport class TableOfContents {\r\n private title: string;\r\n private levels: number;\r\n private includeStyles?: { styleName: string; level: number }[];\r\n private showPageNumbers: boolean;\r\n private useHyperlinks: boolean;\r\n private tabLeader: 'dot' | 'hyphen' | 'underscore' | 'none';\r\n private fieldSwitches?: string;\r\n private hideInWebLayout: boolean;\r\n private numbered: boolean;\r\n private numberingFormat: 'decimal' | 'roman' | 'alpha';\r\n private noIndent: boolean;\r\n private customIndents?: number[];\r\n private spaceBetweenEntries: number;\r\n private hyperlinkColor: string;\r\n private originalFieldInstruction?: string; // Preserve original instruction from loaded documents\r\n\r\n /**\r\n * Creates a new Table of Contents\r\n * @param properties TOC properties\r\n */\r\n constructor(properties: TOCProperties = {}) {\r\n this.title = properties.title || 'Table of Contents';\r\n this.levels = properties.levels || 3;\r\n this.includeStyles = properties.includeStyles;\r\n this.showPageNumbers = properties.showPageNumbers !== false;\r\n this.useHyperlinks = properties.useHyperlinks || false;\r\n this.tabLeader = properties.tabLeader || 'dot';\r\n this.fieldSwitches = properties.fieldSwitches;\r\n this.hideInWebLayout = properties.hideInWebLayout || false;\r\n this.numbered = properties.numbered || false;\r\n this.numberingFormat = properties.numberingFormat || 'decimal';\r\n this.noIndent = properties.noIndent || false;\r\n this.customIndents = properties.customIndents;\r\n this.spaceBetweenEntries = properties.spaceBetweenEntries || 0;\r\n this.hyperlinkColor = properties.hyperlinkColor || '0000FF';\r\n this.originalFieldInstruction = properties.originalFieldInstruction;\r\n }\r\n\r\n /**\r\n * Gets the TOC title\r\n */\r\n getTitle(): string {\r\n return this.title;\r\n }\r\n\r\n /**\r\n * Sets the TOC title\r\n */\r\n setTitle(title: string): this {\r\n this.title = title;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the number of heading levels to include\r\n */\r\n getLevels(): number {\r\n return this.levels;\r\n }\r\n\r\n /**\r\n * Sets the number of heading levels to include (1-9)\r\n */\r\n setLevels(levels: number): this {\r\n if (levels < 1 || levels > 9) {\r\n throw new Error('TOC levels must be between 1 and 9');\r\n }\r\n this.levels = levels;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets (or clears) the original field instruction preserved from a loaded document.\r\n * When set, this instruction is used verbatim in XML generation instead of\r\n * buildFieldInstruction(). Pass undefined to clear it and use computed instruction.\r\n */\r\n setOriginalFieldInstruction(instruction: string | undefined): this {\r\n this.originalFieldInstruction = instruction;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the original field instruction preserved from a loaded document, if any.\r\n */\r\n getOriginalFieldInstruction(): string | undefined {\r\n return this.originalFieldInstruction;\r\n }\r\n\r\n /**\r\n * Gets whether page numbers are shown\r\n */\r\n getShowPageNumbers(): boolean {\r\n return this.showPageNumbers;\r\n }\r\n\r\n /**\r\n * Sets whether to show page numbers\r\n */\r\n setShowPageNumbers(show: boolean): this {\r\n this.showPageNumbers = show;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether to use hyperlinks\r\n */\r\n getUseHyperlinks(): boolean {\r\n return this.useHyperlinks;\r\n }\r\n\r\n /**\r\n * Sets whether to use hyperlinks instead of page numbers\r\n */\r\n setUseHyperlinks(use: boolean): this {\r\n this.useHyperlinks = use;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets whether TOC entries are numbered\r\n */\r\n getNumbered(): boolean {\r\n return this.numbered;\r\n }\r\n\r\n /**\r\n * Gets the numbering format\r\n */\r\n getNumberingFormat(): 'decimal' | 'roman' | 'alpha' {\r\n return this.numberingFormat;\r\n }\r\n\r\n /**\r\n * Gets whether indentation is removed\r\n */\r\n getNoIndent(): boolean {\r\n return this.noIndent;\r\n }\r\n\r\n /**\r\n * Gets custom indents\r\n */\r\n getCustomIndents(): number[] | undefined {\r\n return this.customIndents;\r\n }\r\n\r\n /**\r\n * Gets spacing between entries\r\n */\r\n getSpaceBetweenEntries(): number {\r\n return this.spaceBetweenEntries;\r\n }\r\n\r\n /**\r\n * Gets hyperlink color\r\n */\r\n getHyperlinkColor(): string {\r\n return this.hyperlinkColor;\r\n }\r\n\r\n /**\r\n * Gets specific included styles\r\n */\r\n getIncludeStyles(): { styleName: string; level: number }[] | undefined {\r\n return this.includeStyles;\r\n }\r\n\r\n /**\r\n * Gets whether page numbers are hidden in web layout\r\n * @returns True if \\z switch will be generated\r\n */\r\n getHideInWebLayout(): boolean {\r\n return this.hideInWebLayout;\r\n }\r\n\r\n /**\r\n * Sets whether to hide page numbers in web layout\r\n * Generates the \\z field switch\r\n * @param hide - True to hide page numbers in web layout\r\n * @returns This instance for chaining\r\n */\r\n setHideInWebLayout(hide: boolean): this {\r\n this.hideInWebLayout = hide;\r\n return this;\r\n }\r\n\r\n /**\r\n * Builds the TOC field instruction string\r\n */\r\n private buildFieldInstruction(): string {\r\n let instruction = 'TOC';\r\n\r\n // Add specific styles switch OR heading levels switch\r\n if (this.includeStyles && this.includeStyles.length > 0) {\r\n // Use \\t switch to specify exact styles\r\n // Format: \\t \"StyleName,Level,\" for each style\r\n for (const style of this.includeStyles) {\r\n instruction += ` \\\\t \"${style.styleName},${style.level},\"`;\r\n }\r\n } else {\r\n // Use \\o switch for heading levels\r\n instruction += ` \\\\o \"1-${this.levels}\"`;\r\n }\r\n\r\n // Add hyperlinks switch if enabled\r\n if (this.useHyperlinks) {\r\n instruction += ' \\\\h';\r\n }\r\n\r\n // Add page number switches\r\n if (!this.showPageNumbers) {\r\n instruction += ' \\\\n';\r\n }\r\n\r\n // Add web layout hide switch\r\n if (this.hideInWebLayout) {\r\n instruction += ' \\\\z';\r\n }\r\n\r\n // Add tab leader switch\r\n if (this.tabLeader !== 'dot') {\r\n const leaderMap = {\r\n hyphen: 'h',\r\n underscore: 'u',\r\n none: 'n',\r\n };\r\n instruction += ` \\\\p \"${leaderMap[this.tabLeader]}\"`;\r\n }\r\n\r\n // Add custom field switches\r\n if (this.fieldSwitches) {\r\n instruction += ` ${this.fieldSwitches}`;\r\n }\r\n\r\n // Add MERGEFORMAT to preserve formatting\r\n instruction += ' \\\\* MERGEFORMAT';\r\n\r\n return instruction;\r\n }\r\n\r\n /**\r\n * Gets the TOC field instruction string\r\n * Public accessor for the field instruction\r\n *\r\n * @returns The complete TOC field instruction (e.g., \"TOC \\o \"1-3\" \\h \\z\")\r\n */\r\n public getFieldInstruction(): string {\r\n return this.buildFieldInstruction();\r\n }\r\n\r\n /**\r\n * Generates XML for the TOC field wrapped in an SDT (Structured Document Tag)\r\n *\r\n * A TOC in Word is represented as:\r\n * 1. SDT wrapper with docPartGallery=\"Table of Contents\"\r\n * 2. SDT content containing:\r\n * a. A paragraph with the title (styled as TOC Heading)\r\n * b. A complex field (fldChar) with the TOC instruction (begin → separate → end)\r\n * c. Placeholder entries (updated by Word when opening)\r\n *\r\n * Per ECMA-376 Part 1 §17.16.5: All complex fields MUST have\r\n * begin → instrText → separate → content → end structure.\r\n * Missing any of these causes Word to reject the document as corrupted.\r\n *\r\n * @throws Error if field structure cannot be generated completely\r\n */\r\n toXML(): XMLElement[] {\r\n const sdtContent: XMLElement[] = [];\r\n\r\n // 1. Title paragraph\r\n if (this.title) {\r\n sdtContent.push({\r\n name: 'w:p',\r\n children: [\r\n {\r\n name: 'w:pPr',\r\n children: [\r\n {\r\n name: 'w:pStyle',\r\n attributes: { 'w:val': 'TOCHeading' },\r\n selfClosing: true,\r\n },\r\n ],\r\n },\r\n {\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:t',\r\n children: [this.title],\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n\r\n // 2. TOC field paragraph - CRITICAL: Must have complete begin → separate → end structure\r\n const tocParagraph: XMLElement = {\r\n name: 'w:p',\r\n children: [],\r\n };\r\n\r\n // FIELD BEGIN (required)\r\n tocParagraph.children!.push({\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:fldChar',\r\n attributes: { 'w:fldCharType': 'begin' },\r\n selfClosing: true,\r\n },\r\n ],\r\n });\r\n\r\n // FIELD INSTRUCTION (required)\r\n // Use original field instruction if available (from loaded documents)\r\n // Otherwise, build instruction from properties\r\n const fieldInstruction = this.originalFieldInstruction || this.buildFieldInstruction();\r\n tocParagraph.children!.push({\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:instrText',\r\n attributes: { 'xml:space': 'preserve' },\r\n children: [fieldInstruction],\r\n },\r\n ],\r\n });\r\n\r\n // FIELD SEPARATE (required - marks boundary between instruction and result)\r\n tocParagraph.children!.push({\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:fldChar',\r\n attributes: { 'w:fldCharType': 'separate' },\r\n selfClosing: true,\r\n },\r\n ],\r\n });\r\n\r\n // FIELD CONTENT (placeholder - Word updates on open)\r\n tocParagraph.children!.push({\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:rPr',\r\n children: [\r\n {\r\n name: 'w:noProof',\r\n selfClosing: true,\r\n },\r\n ],\r\n },\r\n {\r\n name: 'w:t',\r\n children: ['Right-click to update field.'],\r\n },\r\n ],\r\n });\r\n\r\n // FIELD END (CRITICAL - REQUIRED by ECMA-376 §17.16.5)\r\n // Missing this causes Word to treat document as corrupted\r\n tocParagraph.children!.push({\r\n name: 'w:r',\r\n children: [\r\n {\r\n name: 'w:fldChar',\r\n attributes: { 'w:fldCharType': 'end' },\r\n selfClosing: true,\r\n },\r\n ],\r\n });\r\n\r\n // Validate complete structure before adding to SDT content\r\n if (tocParagraph.children!.length !== 5) {\r\n throw new Error(\r\n `CRITICAL: TOC field structure incomplete. Expected 5 elements ` +\r\n `(begin, instruction, separate, content, end), got ${tocParagraph.children!.length}. ` +\r\n `This would create an invalid OpenXML document per ECMA-376 §17.16.5.`\r\n );\r\n }\r\n\r\n sdtContent.push(tocParagraph);\r\n\r\n // Wrap TOC content in SDT (Structured Document Tag) for Word native integration\r\n const sdtWrapper = XMLBuilder.createSDT(sdtContent, {\r\n docPartGallery: 'Table of Contents',\r\n docPartUnique: true\r\n });\r\n\r\n return [sdtWrapper];\r\n }\r\n\r\n /**\r\n * Creates a standard TOC with 3 levels\r\n */\r\n static createStandard(title?: string): TableOfContents {\r\n return new TableOfContents({\r\n title: title || 'Table of Contents',\r\n levels: 3,\r\n showPageNumbers: true,\r\n rightAlignPageNumbers: true,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a simple TOC with 2 levels\r\n */\r\n static createSimple(title?: string): TableOfContents {\r\n return new TableOfContents({\r\n title: title || 'Contents',\r\n levels: 2,\r\n showPageNumbers: true,\r\n rightAlignPageNumbers: true,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a detailed TOC with 4 levels\r\n */\r\n static createDetailed(title?: string): TableOfContents {\r\n return new TableOfContents({\r\n title: title || 'Table of Contents',\r\n levels: 4,\r\n showPageNumbers: true,\r\n rightAlignPageNumbers: true,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a hyperlinked TOC (for web documents)\r\n */\r\n static createHyperlinked(title?: string): TableOfContents {\r\n return new TableOfContents({\r\n title: title || 'Contents',\r\n levels: 3,\r\n showPageNumbers: false,\r\n useHyperlinks: true,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a hyperlinked TOC without page numbers\r\n * Combines \\h, \\n, and \\z switches for complete page number hiding\r\n * @param options - TOC configuration options\r\n * @returns New TableOfContents instance\r\n */\r\n static createNoPageNumbers(options: Partial<TOCProperties> = {}): TableOfContents {\r\n return new TableOfContents({\r\n ...options,\r\n useHyperlinks: true,\r\n showPageNumbers: false,\r\n hideInWebLayout: true,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a TOC with custom properties\r\n */\r\n static create(properties?: TOCProperties): TableOfContents {\r\n return new TableOfContents(properties);\r\n }\r\n\r\n /**\r\n * Sets specific styles to include in TOC (overrides levels)\r\n * @param styles - Array of style names (e.g., ['Heading1', 'Heading3']) or objects with styleName and level\r\n * @returns This TOC for chaining\r\n */\r\n setIncludeStyles(styles: string[] | { styleName: string; level: number }[]): this {\r\n // Convert string[] to object format for backward compatibility\r\n if (styles.length > 0 && typeof styles[0] === 'string') {\r\n this.includeStyles = (styles as string[]).map((styleName, index) => ({\r\n styleName,\r\n level: index + 1 // Default: assign sequential levels\r\n }));\r\n } else {\r\n this.includeStyles = styles as { styleName: string; level: number }[];\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether TOC entries should be numbered\r\n * @param numbered - Whether to number entries\r\n * @param format - Numbering format (decimal, roman, alpha)\r\n * @returns This TOC for chaining\r\n */\r\n setNumbered(numbered: boolean, format: 'decimal' | 'roman' | 'alpha' = 'decimal'): this {\r\n this.numbered = numbered;\r\n this.numberingFormat = format;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to remove indentation from TOC entries\r\n * @param noIndent - Whether to remove indentation\r\n * @returns This TOC for chaining\r\n */\r\n setNoIndent(noIndent: boolean): this {\r\n this.noIndent = noIndent;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets custom indents for each TOC level\r\n * @param indents - Array of indent values in twips\r\n * @returns This TOC for chaining\r\n */\r\n setCustomIndents(indents: number[]): this {\r\n this.customIndents = indents;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets spacing between TOC entries\r\n * @param spacing - Spacing in twips\r\n * @returns This TOC for chaining\r\n */\r\n setSpaceBetweenEntries(spacing: number): this {\r\n this.spaceBetweenEntries = spacing;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets hyperlink color for TOC entries\r\n * @param color - Hex color without # (e.g., '0000FF' for blue)\r\n * @returns This TOC for chaining\r\n */\r\n setHyperlinkColor(color: string): this {\r\n this.hyperlinkColor = color;\r\n return this;\r\n }\r\n\r\n /**\r\n * Configures multiple properties at once\r\n * @param options - Partial TOC properties to apply\r\n * @returns This TOC for chaining\r\n */\r\n configure(options: Partial<TOCProperties>): this {\r\n if (options.title !== undefined) this.title = options.title;\r\n if (options.levels !== undefined) this.levels = options.levels;\r\n if (options.includeStyles !== undefined) this.includeStyles = options.includeStyles;\r\n if (options.showPageNumbers !== undefined) this.showPageNumbers = options.showPageNumbers;\r\n if (options.useHyperlinks !== undefined) this.useHyperlinks = options.useHyperlinks;\r\n if (options.tabLeader !== undefined) this.tabLeader = options.tabLeader;\r\n if (options.fieldSwitches !== undefined) this.fieldSwitches = options.fieldSwitches;\r\n if (options.hideInWebLayout !== undefined) this.hideInWebLayout = options.hideInWebLayout;\r\n if (options.numbered !== undefined) this.numbered = options.numbered;\r\n if (options.numberingFormat !== undefined) this.numberingFormat = options.numberingFormat;\r\n if (options.noIndent !== undefined) this.noIndent = options.noIndent;\r\n if (options.customIndents !== undefined) this.customIndents = options.customIndents;\r\n if (options.spaceBetweenEntries !== undefined) this.spaceBetweenEntries = options.spaceBetweenEntries;\r\n if (options.hyperlinkColor !== undefined) this.hyperlinkColor = options.hyperlinkColor;\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates a TOC with specific styles\r\n * @param styles - Array of style names to include\r\n * @param options - Additional TOC options\r\n * @returns New TableOfContents instance\r\n */\r\n static createWithStyles(styles: string[], options?: Partial<TOCProperties>): TableOfContents {\r\n // Convert string[] to object format\r\n const stylesWithLevels = styles.map((styleName, index) => ({\r\n styleName,\r\n level: index + 1 // Default: assign sequential levels\r\n }));\r\n return new TableOfContents({\r\n ...options,\r\n includeStyles: stylesWithLevels,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a flat (no indent) TOC\r\n * @param title - Optional TOC title\r\n * @param styles - Optional specific styles (default: all heading levels)\r\n * @returns New TableOfContents instance\r\n */\r\n static createFlat(title?: string, styles?: string[]): TableOfContents {\r\n // Convert string[] to object format if provided\r\n const stylesWithLevels = styles?.map((styleName, index) => ({\r\n styleName,\r\n level: index + 1 // Default: assign sequential levels\r\n }));\r\n return new TableOfContents({\r\n title: title || 'Contents',\r\n includeStyles: stylesWithLevels,\r\n noIndent: true,\r\n spaceBetweenEntries: 100, // Small spacing for flat TOC\r\n });\r\n }\r\n\r\n /**\r\n * Creates a numbered TOC\r\n * @param title - Optional TOC title\r\n * @param format - Numbering format (decimal, roman, alpha)\r\n * @returns New TableOfContents instance\r\n */\r\n static createNumbered(title?: string, format: 'decimal' | 'roman' | 'alpha' = 'decimal'): TableOfContents {\r\n return new TableOfContents({\r\n title: title || 'Table of Contents',\r\n numbered: true,\r\n numberingFormat: format,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a TOC with custom spacing\r\n * @param spaceBetweenEntries - Spacing in twips\r\n * @param options - Additional TOC options\r\n * @returns New TableOfContents instance\r\n */\r\n static createWithSpacing(spaceBetweenEntries: number, options?: Partial<TOCProperties>): TableOfContents {\r\n return new TableOfContents({\r\n ...options,\r\n spaceBetweenEntries,\r\n });\r\n }\r\n\r\n /**\r\n * Creates a TOC with custom hyperlink color\r\n * @param color - Hex color without # (e.g., '0000FF' for blue)\r\n * @param options - Additional TOC options\r\n * @returns New TableOfContents instance\r\n */\r\n static createWithHyperlinkColor(color: string, options?: Partial<TOCProperties>): TableOfContents {\r\n return new TableOfContents({\r\n ...options,\r\n hyperlinkColor: color,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TableOfContents.js","sourceRoot":"","sources":["../../src/elements/TableOfContents.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TableOfContents - Represents a Table of Contents in a Word document\n *\n * A TOC is a special field that automatically generates a list of headings\n * based on heading styles (Heading1, Heading2, etc.) in the document.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * TOC properties\n */\nexport interface TOCProperties {\n /** Title for the TOC (default: \"Table of Contents\") */\n title?: string;\n /** Heading levels to include (1-9, default: 1-3) */\n levels?: number;\n /** Specific styles to include (overrides levels if provided) */\n includeStyles?: { styleName: string; level: number }[];\n /** Whether to show page numbers (default: true) */\n showPageNumbers?: boolean;\n /** Whether to right-align page numbers (default: true) */\n rightAlignPageNumbers?: boolean;\n /** Whether to use hyperlinks instead of page numbers (default: false) */\n useHyperlinks?: boolean;\n /** Custom TOC style (default: built-in TOC style) */\n style?: string;\n /** Tab leader character (default: dot) */\n tabLeader?: 'dot' | 'hyphen' | 'underscore' | 'none';\n /** Custom field switches */\n fieldSwitches?: string;\n /** Hide page numbers in web layout with \\z switch (default: false) */\n hideInWebLayout?: boolean;\n /** Whether TOC entries should be numbered (default: false) */\n numbered?: boolean;\n /** Numbering format for TOC entries */\n numberingFormat?: 'decimal' | 'roman' | 'alpha';\n /** Remove all indentation from TOC entries (default: false) */\n noIndent?: boolean;\n /** Custom indents for each TOC level in twips */\n customIndents?: number[];\n /** Space between TOC entries in twips (default: 0) */\n spaceBetweenEntries?: number;\n /** Hyperlink color in hex format without # (default: 0000FF) */\n hyperlinkColor?: string;\n /** Original field instruction from loaded document (internal use) */\n originalFieldInstruction?: string;\n /** Enable automatic normalization of incomplete \\t switches (default: false) */\n normalizeFieldInstruction?: boolean;\n}\n\n/**\n * Represents a Table of Contents\n */\nexport class TableOfContents {\n private title: string;\n private levels: number;\n private includeStyles?: { styleName: string; level: number }[];\n private showPageNumbers: boolean;\n private useHyperlinks: boolean;\n private tabLeader: 'dot' | 'hyphen' | 'underscore' | 'none';\n private fieldSwitches?: string;\n private hideInWebLayout: boolean;\n private numbered: boolean;\n private numberingFormat: 'decimal' | 'roman' | 'alpha';\n private noIndent: boolean;\n private customIndents?: number[];\n private spaceBetweenEntries: number;\n private hyperlinkColor: string;\n private originalFieldInstruction?: string; // Preserve original instruction from loaded documents\n\n /**\n * Creates a new Table of Contents\n * @param properties TOC properties\n */\n constructor(properties: TOCProperties = {}) {\n this.title = properties.title || 'Table of Contents';\n this.levels = properties.levels || 3;\n this.includeStyles = properties.includeStyles;\n this.showPageNumbers = properties.showPageNumbers !== false;\n this.useHyperlinks = properties.useHyperlinks || false;\n this.tabLeader = properties.tabLeader || 'dot';\n this.fieldSwitches = properties.fieldSwitches;\n this.hideInWebLayout = properties.hideInWebLayout || false;\n this.numbered = properties.numbered || false;\n this.numberingFormat = properties.numberingFormat || 'decimal';\n this.noIndent = properties.noIndent || false;\n this.customIndents = properties.customIndents;\n this.spaceBetweenEntries = properties.spaceBetweenEntries || 0;\n this.hyperlinkColor = properties.hyperlinkColor || '0000FF';\n this.originalFieldInstruction = properties.originalFieldInstruction;\n }\n\n /**\n * Gets the TOC title\n */\n getTitle(): string {\n return this.title;\n }\n\n /**\n * Sets the TOC title\n */\n setTitle(title: string): this {\n this.title = title;\n return this;\n }\n\n /**\n * Gets the number of heading levels to include\n */\n getLevels(): number {\n return this.levels;\n }\n\n /**\n * Sets the number of heading levels to include (1-9)\n */\n setLevels(levels: number): this {\n if (levels < 1 || levels > 9) {\n throw new Error('TOC levels must be between 1 and 9');\n }\n this.levels = levels;\n return this;\n }\n\n /**\n * Sets (or clears) the original field instruction preserved from a loaded document.\n * When set, this instruction is used verbatim in XML generation instead of\n * buildFieldInstruction(). Pass undefined to clear it and use computed instruction.\n */\n setOriginalFieldInstruction(instruction: string | undefined): this {\n this.originalFieldInstruction = instruction;\n return this;\n }\n\n /**\n * Gets the original field instruction preserved from a loaded document, if any.\n */\n getOriginalFieldInstruction(): string | undefined {\n return this.originalFieldInstruction;\n }\n\n /**\n * Gets whether page numbers are shown\n */\n getShowPageNumbers(): boolean {\n return this.showPageNumbers;\n }\n\n /**\n * Sets whether to show page numbers\n */\n setShowPageNumbers(show: boolean): this {\n this.showPageNumbers = show;\n return this;\n }\n\n /**\n * Gets whether to use hyperlinks\n */\n getUseHyperlinks(): boolean {\n return this.useHyperlinks;\n }\n\n /**\n * Sets whether to use hyperlinks instead of page numbers\n */\n setUseHyperlinks(use: boolean): this {\n this.useHyperlinks = use;\n return this;\n }\n\n /**\n * Gets whether TOC entries are numbered\n */\n getNumbered(): boolean {\n return this.numbered;\n }\n\n /**\n * Gets the numbering format\n */\n getNumberingFormat(): 'decimal' | 'roman' | 'alpha' {\n return this.numberingFormat;\n }\n\n /**\n * Gets whether indentation is removed\n */\n getNoIndent(): boolean {\n return this.noIndent;\n }\n\n /**\n * Gets custom indents\n */\n getCustomIndents(): number[] | undefined {\n return this.customIndents;\n }\n\n /**\n * Gets spacing between entries\n */\n getSpaceBetweenEntries(): number {\n return this.spaceBetweenEntries;\n }\n\n /**\n * Gets hyperlink color\n */\n getHyperlinkColor(): string {\n return this.hyperlinkColor;\n }\n\n /**\n * Gets specific included styles\n */\n getIncludeStyles(): { styleName: string; level: number }[] | undefined {\n return this.includeStyles;\n }\n\n /**\n * Gets whether page numbers are hidden in web layout\n * @returns True if \\z switch will be generated\n */\n getHideInWebLayout(): boolean {\n return this.hideInWebLayout;\n }\n\n /**\n * Sets whether to hide page numbers in web layout\n * Generates the \\z field switch\n * @param hide - True to hide page numbers in web layout\n * @returns This instance for chaining\n */\n setHideInWebLayout(hide: boolean): this {\n this.hideInWebLayout = hide;\n return this;\n }\n\n /**\n * Builds the TOC field instruction string\n */\n private buildFieldInstruction(): string {\n let instruction = 'TOC';\n\n // Add specific styles switch OR heading levels switch\n if (this.includeStyles && this.includeStyles.length > 0) {\n // Use \\t switch to specify exact styles\n // Format: \\t \"StyleName,Level,\" for each style\n for (const style of this.includeStyles) {\n instruction += ` \\\\t \"${style.styleName},${style.level},\"`;\n }\n } else {\n // Use \\o switch for heading levels\n instruction += ` \\\\o \"1-${this.levels}\"`;\n }\n\n // Add hyperlinks switch if enabled\n if (this.useHyperlinks) {\n instruction += ' \\\\h';\n }\n\n // Add page number switches\n if (!this.showPageNumbers) {\n instruction += ' \\\\n';\n }\n\n // Add web layout hide switch\n if (this.hideInWebLayout) {\n instruction += ' \\\\z';\n }\n\n // Add tab leader switch\n if (this.tabLeader !== 'dot') {\n const leaderMap = {\n hyphen: 'h',\n underscore: 'u',\n none: 'n',\n };\n instruction += ` \\\\p \"${leaderMap[this.tabLeader]}\"`;\n }\n\n // Add custom field switches\n if (this.fieldSwitches) {\n instruction += ` ${this.fieldSwitches}`;\n }\n\n // Add MERGEFORMAT to preserve formatting\n instruction += ' \\\\* MERGEFORMAT';\n\n return instruction;\n }\n\n /**\n * Gets the TOC field instruction string\n * Public accessor for the field instruction\n *\n * @returns The complete TOC field instruction (e.g., \"TOC \\o \"1-3\" \\h \\z\")\n */\n public getFieldInstruction(): string {\n return this.buildFieldInstruction();\n }\n\n /**\n * Generates XML for the TOC field wrapped in an SDT (Structured Document Tag)\n *\n * A TOC in Word is represented as:\n * 1. SDT wrapper with docPartGallery=\"Table of Contents\"\n * 2. SDT content containing:\n * a. A paragraph with the title (styled as TOC Heading)\n * b. A complex field (fldChar) with the TOC instruction (begin → separate → end)\n * c. Placeholder entries (updated by Word when opening)\n *\n * Per ECMA-376 Part 1 §17.16.5: All complex fields MUST have\n * begin → instrText → separate → content → end structure.\n * Missing any of these causes Word to reject the document as corrupted.\n *\n * @throws Error if field structure cannot be generated completely\n */\n toXML(): XMLElement[] {\n const sdtContent: XMLElement[] = [];\n\n // 1. Title paragraph\n if (this.title) {\n sdtContent.push({\n name: 'w:p',\n children: [\n {\n name: 'w:pPr',\n children: [\n {\n name: 'w:pStyle',\n attributes: { 'w:val': 'TOCHeading' },\n selfClosing: true,\n },\n ],\n },\n {\n name: 'w:r',\n children: [\n {\n name: 'w:t',\n children: [this.title],\n },\n ],\n },\n ],\n });\n }\n\n // 2. TOC field paragraph - CRITICAL: Must have complete begin → separate → end structure\n const tocParagraph: XMLElement = {\n name: 'w:p',\n children: [],\n };\n\n // FIELD BEGIN (required)\n tocParagraph.children!.push({\n name: 'w:r',\n children: [\n {\n name: 'w:fldChar',\n attributes: { 'w:fldCharType': 'begin' },\n selfClosing: true,\n },\n ],\n });\n\n // FIELD INSTRUCTION (required)\n // Use original field instruction if available (from loaded documents)\n // Otherwise, build instruction from properties\n const fieldInstruction = this.originalFieldInstruction || this.buildFieldInstruction();\n tocParagraph.children!.push({\n name: 'w:r',\n children: [\n {\n name: 'w:instrText',\n attributes: { 'xml:space': 'preserve' },\n children: [fieldInstruction],\n },\n ],\n });\n\n // FIELD SEPARATE (required - marks boundary between instruction and result)\n tocParagraph.children!.push({\n name: 'w:r',\n children: [\n {\n name: 'w:fldChar',\n attributes: { 'w:fldCharType': 'separate' },\n selfClosing: true,\n },\n ],\n });\n\n // FIELD CONTENT (placeholder - Word updates on open)\n tocParagraph.children!.push({\n name: 'w:r',\n children: [\n {\n name: 'w:rPr',\n children: [\n {\n name: 'w:noProof',\n selfClosing: true,\n },\n ],\n },\n {\n name: 'w:t',\n children: ['Right-click to update field.'],\n },\n ],\n });\n\n // FIELD END (CRITICAL - REQUIRED by ECMA-376 §17.16.5)\n // Missing this causes Word to treat document as corrupted\n tocParagraph.children!.push({\n name: 'w:r',\n children: [\n {\n name: 'w:fldChar',\n attributes: { 'w:fldCharType': 'end' },\n selfClosing: true,\n },\n ],\n });\n\n // Validate complete structure before adding to SDT content\n if (tocParagraph.children!.length !== 5) {\n throw new Error(\n `CRITICAL: TOC field structure incomplete. Expected 5 elements ` +\n `(begin, instruction, separate, content, end), got ${tocParagraph.children!.length}. ` +\n `This would create an invalid OpenXML document per ECMA-376 §17.16.5.`\n );\n }\n\n sdtContent.push(tocParagraph);\n\n // Wrap TOC content in SDT (Structured Document Tag) for Word native integration\n const sdtWrapper = XMLBuilder.createSDT(sdtContent, {\n docPartGallery: 'Table of Contents',\n docPartUnique: true,\n });\n\n return [sdtWrapper];\n }\n\n /**\n * Creates a standard TOC with 3 levels\n */\n static createStandard(title?: string): TableOfContents {\n return new TableOfContents({\n title: title || 'Table of Contents',\n levels: 3,\n showPageNumbers: true,\n rightAlignPageNumbers: true,\n });\n }\n\n /**\n * Creates a simple TOC with 2 levels\n */\n static createSimple(title?: string): TableOfContents {\n return new TableOfContents({\n title: title || 'Contents',\n levels: 2,\n showPageNumbers: true,\n rightAlignPageNumbers: true,\n });\n }\n\n /**\n * Creates a detailed TOC with 4 levels\n */\n static createDetailed(title?: string): TableOfContents {\n return new TableOfContents({\n title: title || 'Table of Contents',\n levels: 4,\n showPageNumbers: true,\n rightAlignPageNumbers: true,\n });\n }\n\n /**\n * Creates a hyperlinked TOC (for web documents)\n */\n static createHyperlinked(title?: string): TableOfContents {\n return new TableOfContents({\n title: title || 'Contents',\n levels: 3,\n showPageNumbers: false,\n useHyperlinks: true,\n });\n }\n\n /**\n * Creates a hyperlinked TOC without page numbers\n * Combines \\h, \\n, and \\z switches for complete page number hiding\n * @param options - TOC configuration options\n * @returns New TableOfContents instance\n */\n static createNoPageNumbers(options: Partial<TOCProperties> = {}): TableOfContents {\n return new TableOfContents({\n ...options,\n useHyperlinks: true,\n showPageNumbers: false,\n hideInWebLayout: true,\n });\n }\n\n /**\n * Creates a TOC with custom properties\n */\n static create(properties?: TOCProperties): TableOfContents {\n return new TableOfContents(properties);\n }\n\n /**\n * Sets specific styles to include in TOC (overrides levels)\n * @param styles - Array of style names (e.g., ['Heading1', 'Heading3']) or objects with styleName and level\n * @returns This TOC for chaining\n */\n setIncludeStyles(styles: string[] | { styleName: string; level: number }[]): this {\n // Convert string[] to object format for backward compatibility\n if (styles.length > 0 && typeof styles[0] === 'string') {\n this.includeStyles = (styles as string[]).map((styleName, index) => ({\n styleName,\n level: index + 1, // Default: assign sequential levels\n }));\n } else {\n this.includeStyles = styles as { styleName: string; level: number }[];\n }\n return this;\n }\n\n /**\n * Sets whether TOC entries should be numbered\n * @param numbered - Whether to number entries\n * @param format - Numbering format (decimal, roman, alpha)\n * @returns This TOC for chaining\n */\n setNumbered(numbered: boolean, format: 'decimal' | 'roman' | 'alpha' = 'decimal'): this {\n this.numbered = numbered;\n this.numberingFormat = format;\n return this;\n }\n\n /**\n * Sets whether to remove indentation from TOC entries\n * @param noIndent - Whether to remove indentation\n * @returns This TOC for chaining\n */\n setNoIndent(noIndent: boolean): this {\n this.noIndent = noIndent;\n return this;\n }\n\n /**\n * Sets custom indents for each TOC level\n * @param indents - Array of indent values in twips\n * @returns This TOC for chaining\n */\n setCustomIndents(indents: number[]): this {\n this.customIndents = indents;\n return this;\n }\n\n /**\n * Sets spacing between TOC entries\n * @param spacing - Spacing in twips\n * @returns This TOC for chaining\n */\n setSpaceBetweenEntries(spacing: number): this {\n this.spaceBetweenEntries = spacing;\n return this;\n }\n\n /**\n * Sets hyperlink color for TOC entries\n * @param color - Hex color without # (e.g., '0000FF' for blue)\n * @returns This TOC for chaining\n */\n setHyperlinkColor(color: string): this {\n this.hyperlinkColor = color;\n return this;\n }\n\n /**\n * Configures multiple properties at once\n * @param options - Partial TOC properties to apply\n * @returns This TOC for chaining\n */\n configure(options: Partial<TOCProperties>): this {\n if (options.title !== undefined) this.title = options.title;\n if (options.levels !== undefined) this.levels = options.levels;\n if (options.includeStyles !== undefined) this.includeStyles = options.includeStyles;\n if (options.showPageNumbers !== undefined) this.showPageNumbers = options.showPageNumbers;\n if (options.useHyperlinks !== undefined) this.useHyperlinks = options.useHyperlinks;\n if (options.tabLeader !== undefined) this.tabLeader = options.tabLeader;\n if (options.fieldSwitches !== undefined) this.fieldSwitches = options.fieldSwitches;\n if (options.hideInWebLayout !== undefined) this.hideInWebLayout = options.hideInWebLayout;\n if (options.numbered !== undefined) this.numbered = options.numbered;\n if (options.numberingFormat !== undefined) this.numberingFormat = options.numberingFormat;\n if (options.noIndent !== undefined) this.noIndent = options.noIndent;\n if (options.customIndents !== undefined) this.customIndents = options.customIndents;\n if (options.spaceBetweenEntries !== undefined)\n this.spaceBetweenEntries = options.spaceBetweenEntries;\n if (options.hyperlinkColor !== undefined) this.hyperlinkColor = options.hyperlinkColor;\n return this;\n }\n\n /**\n * Creates a TOC with specific styles\n * @param styles - Array of style names to include\n * @param options - Additional TOC options\n * @returns New TableOfContents instance\n */\n static createWithStyles(styles: string[], options?: Partial<TOCProperties>): TableOfContents {\n // Convert string[] to object format\n const stylesWithLevels = styles.map((styleName, index) => ({\n styleName,\n level: index + 1, // Default: assign sequential levels\n }));\n return new TableOfContents({\n ...options,\n includeStyles: stylesWithLevels,\n });\n }\n\n /**\n * Creates a flat (no indent) TOC\n * @param title - Optional TOC title\n * @param styles - Optional specific styles (default: all heading levels)\n * @returns New TableOfContents instance\n */\n static createFlat(title?: string, styles?: string[]): TableOfContents {\n // Convert string[] to object format if provided\n const stylesWithLevels = styles?.map((styleName, index) => ({\n styleName,\n level: index + 1, // Default: assign sequential levels\n }));\n return new TableOfContents({\n title: title || 'Contents',\n includeStyles: stylesWithLevels,\n noIndent: true,\n spaceBetweenEntries: 100, // Small spacing for flat TOC\n });\n }\n\n /**\n * Creates a numbered TOC\n * @param title - Optional TOC title\n * @param format - Numbering format (decimal, roman, alpha)\n * @returns New TableOfContents instance\n */\n static createNumbered(\n title?: string,\n format: 'decimal' | 'roman' | 'alpha' = 'decimal'\n ): TableOfContents {\n return new TableOfContents({\n title: title || 'Table of Contents',\n numbered: true,\n numberingFormat: format,\n });\n }\n\n /**\n * Creates a TOC with custom spacing\n * @param spaceBetweenEntries - Spacing in twips\n * @param options - Additional TOC options\n * @returns New TableOfContents instance\n */\n static createWithSpacing(\n spaceBetweenEntries: number,\n options?: Partial<TOCProperties>\n ): TableOfContents {\n return new TableOfContents({\n ...options,\n spaceBetweenEntries,\n });\n }\n\n /**\n * Creates a TOC with custom hyperlink color\n * @param color - Hex color without # (e.g., '0000FF' for blue)\n * @param options - Additional TOC options\n * @returns New TableOfContents instance\n */\n static createWithHyperlinkColor(\n color: string,\n options?: Partial<TOCProperties>\n ): TableOfContents {\n return new TableOfContents({\n ...options,\n hyperlinkColor: color,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TableOfContentsElement.js","sourceRoot":"","sources":["../../src/elements/TableOfContentsElement.ts"],"names":[],"mappings":";;;AAUA,uDAAoD;AAMpD,MAAa,sBAAsB;IACzB,GAAG,CAAkB;IAM7B,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAMD,kBAAkB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAOD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAOD,MAAM,CAAC,MAAM,CAAC,GAAoB;QAChC,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAOD,MAAM,CAAC,cAAc,CAAC,KAAc;QAClC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,KAAc;QAChC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,cAAc,CAAC,KAAc;QAClC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAOD,MAAM,CAAC,iBAAiB,CAAC,KAAc;QACrC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF;AAxED,wDAwEC","sourcesContent":["/**\r\n * TableOfContentsElement - Wrapper for TableOfContents to be used as body element\r\n *\r\n * This class wraps a TableOfContents instance to make it compatible with the\r\n * Document body elements array (Paragraph | Table | TableOfContentsElement).\r\n *\r\n * The TableOfContents generates multiple XML elements (title + field paragraphs),\r\n * so this wrapper handles the XML generation properly.\r\n */\r\n\r\nimport { TableOfContents } from './TableOfContents';\r\nimport { XMLElement } from '../xml/XMLBuilder';\r\n\r\n/**\r\n * Represents a Table of Contents element in a document body\r\n */\r\nexport class TableOfContentsElement {\r\n private toc: TableOfContents;\r\n\r\n /**\r\n * Creates a new TableOfContentsElement\r\n * @param toc The TableOfContents to wrap\r\n */\r\n constructor(toc: TableOfContents) {\r\n this.toc = toc;\r\n }\r\n\r\n /**\r\n * Gets the wrapped TableOfContents instance\r\n * @returns The TableOfContents\r\n */\r\n getTableOfContents(): TableOfContents {\r\n return this.toc;\r\n }\r\n\r\n /**\r\n * Generates XML elements for this TOC\r\n * Note: Returns an array since TOC generates multiple paragraphs\r\n * @returns Array of XML elements (title paragraph + field paragraph)\r\n */\r\n toXML(): XMLElement[] {\r\n return this.toc.toXML();\r\n }\r\n\r\n /**\r\n * Creates a TableOfContentsElement from a TableOfContents\r\n * @param toc The TableOfContents to wrap\r\n * @returns New TableOfContentsElement instance\r\n */\r\n static create(toc: TableOfContents): TableOfContentsElement {\r\n return new TableOfContentsElement(toc);\r\n }\r\n\r\n /**\r\n * Creates a standard TableOfContentsElement\r\n * @param title Optional custom title (default: \"Table of Contents\")\r\n * @returns New TableOfContentsElement with standard TOC\r\n */\r\n static createStandard(title?: string): TableOfContentsElement {\r\n return new TableOfContentsElement(TableOfContents.createStandard(title));\r\n }\r\n\r\n /**\r\n * Creates a simple TableOfContentsElement (2 levels, no hyperlinks)\r\n * @param title Optional custom title\r\n * @returns New TableOfContentsElement with simple TOC\r\n */\r\n static createSimple(title?: string): TableOfContentsElement {\r\n return new TableOfContentsElement(TableOfContents.createSimple(title));\r\n }\r\n\r\n /**\r\n * Creates a detailed TableOfContentsElement (4 levels)\r\n * @param title Optional custom title\r\n * @returns New TableOfContentsElement with detailed TOC\r\n */\r\n static createDetailed(title?: string): TableOfContentsElement {\r\n return new TableOfContentsElement(TableOfContents.createDetailed(title));\r\n }\r\n\r\n /**\r\n * Creates a hyperlinked TableOfContentsElement (no page numbers)\r\n * @param title Optional custom title\r\n * @returns New TableOfContentsElement with hyperlinked TOC\r\n */\r\n static createHyperlinked(title?: string): TableOfContentsElement {\r\n return new TableOfContentsElement(TableOfContents.createHyperlinked(title));\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TableOfContentsElement.js","sourceRoot":"","sources":["../../src/elements/TableOfContentsElement.ts"],"names":[],"mappings":";;;AAUA,uDAAoD;AAMpD,MAAa,sBAAsB;IACzB,GAAG,CAAkB;IAM7B,YAAY,GAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAMD,kBAAkB;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAOD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAOD,MAAM,CAAC,MAAM,CAAC,GAAoB;QAChC,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAOD,MAAM,CAAC,cAAc,CAAC,KAAc;QAClC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,KAAc;QAChC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,cAAc,CAAC,KAAc;QAClC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAOD,MAAM,CAAC,iBAAiB,CAAC,KAAc;QACrC,OAAO,IAAI,sBAAsB,CAAC,iCAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF;AAxED,wDAwEC","sourcesContent":["/**\n * TableOfContentsElement - Wrapper for TableOfContents to be used as body element\n *\n * This class wraps a TableOfContents instance to make it compatible with the\n * Document body elements array (Paragraph | Table | TableOfContentsElement).\n *\n * The TableOfContents generates multiple XML elements (title + field paragraphs),\n * so this wrapper handles the XML generation properly.\n */\n\nimport { TableOfContents } from './TableOfContents';\nimport { XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Represents a Table of Contents element in a document body\n */\nexport class TableOfContentsElement {\n private toc: TableOfContents;\n\n /**\n * Creates a new TableOfContentsElement\n * @param toc The TableOfContents to wrap\n */\n constructor(toc: TableOfContents) {\n this.toc = toc;\n }\n\n /**\n * Gets the wrapped TableOfContents instance\n * @returns The TableOfContents\n */\n getTableOfContents(): TableOfContents {\n return this.toc;\n }\n\n /**\n * Generates XML elements for this TOC\n * Note: Returns an array since TOC generates multiple paragraphs\n * @returns Array of XML elements (title paragraph + field paragraph)\n */\n toXML(): XMLElement[] {\n return this.toc.toXML();\n }\n\n /**\n * Creates a TableOfContentsElement from a TableOfContents\n * @param toc The TableOfContents to wrap\n * @returns New TableOfContentsElement instance\n */\n static create(toc: TableOfContents): TableOfContentsElement {\n return new TableOfContentsElement(toc);\n }\n\n /**\n * Creates a standard TableOfContentsElement\n * @param title Optional custom title (default: \"Table of Contents\")\n * @returns New TableOfContentsElement with standard TOC\n */\n static createStandard(title?: string): TableOfContentsElement {\n return new TableOfContentsElement(TableOfContents.createStandard(title));\n }\n\n /**\n * Creates a simple TableOfContentsElement (2 levels, no hyperlinks)\n * @param title Optional custom title\n * @returns New TableOfContentsElement with simple TOC\n */\n static createSimple(title?: string): TableOfContentsElement {\n return new TableOfContentsElement(TableOfContents.createSimple(title));\n }\n\n /**\n * Creates a detailed TableOfContentsElement (4 levels)\n * @param title Optional custom title\n * @returns New TableOfContentsElement with detailed TOC\n */\n static createDetailed(title?: string): TableOfContentsElement {\n return new TableOfContentsElement(TableOfContents.createDetailed(title));\n }\n\n /**\n * Creates a hyperlinked TableOfContentsElement (no page numbers)\n * @param title Optional custom title\n * @returns New TableOfContentsElement with hyperlinked TOC\n */\n static createHyperlinked(title?: string): TableOfContentsElement {\n return new TableOfContentsElement(TableOfContents.createHyperlinked(title));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":"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"}
@@ -84,8 +84,8 @@ class TableRow {
84
84
  const message = `Row grid alignment mismatch: has ${actualSpan} grid columns but expected ${expectedColumns}. ` +
85
85
  `Cell count: ${this.cells.length}. ` +
86
86
  (actualSpan < expectedColumns
87
- ? "Missing cells or incorrect columnSpan values."
88
- : "Extra cells or excessive columnSpan values.");
87
+ ? 'Missing cells or incorrect columnSpan values.'
88
+ : 'Extra cells or excessive columnSpan values.');
89
89
  logger_1.defaultLogger.warn(`[TableRow] ${message}`);
90
90
  return {
91
91
  isValid: false,
@@ -264,7 +264,7 @@ class TableRow {
264
264
  if (exceptions.width !== undefined) {
265
265
  children.push(XMLBuilder_1.XMLBuilder.wSelf('tblW', {
266
266
  'w:w': exceptions.width,
267
- 'w:type': 'dxa'
267
+ 'w:type': 'dxa',
268
268
  }));
269
269
  }
270
270
  if (exceptions.justification) {
@@ -273,13 +273,13 @@ class TableRow {
273
273
  if (exceptions.cellSpacing !== undefined) {
274
274
  children.push(XMLBuilder_1.XMLBuilder.wSelf('tblCellSpacing', {
275
275
  'w:w': exceptions.cellSpacing,
276
- 'w:type': 'dxa'
276
+ 'w:type': 'dxa',
277
277
  }));
278
278
  }
279
279
  if (exceptions.indentation !== undefined) {
280
280
  children.push(XMLBuilder_1.XMLBuilder.wSelf('tblInd', {
281
281
  'w:w': exceptions.indentation,
282
- 'w:type': 'dxa'
282
+ 'w:type': 'dxa',
283
283
  }));
284
284
  }
285
285
  if (exceptions.borders) {
@@ -314,7 +314,14 @@ class TableRow {
314
314
  }
315
315
  buildBordersXML(borders) {
316
316
  const children = [];
317
- const borderNames = ['top', 'left', 'bottom', 'right', 'insideH', 'insideV'];
317
+ const borderNames = [
318
+ 'top',
319
+ 'left',
320
+ 'bottom',
321
+ 'right',
322
+ 'insideH',
323
+ 'insideV',
324
+ ];
318
325
  for (const name of borderNames) {
319
326
  const border = borders[name];
320
327
  if (border) {
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * TableRow - Represents a row in a table\r\n */\r\n\r\nimport { TableCell } from './TableCell';\r\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\r\nimport { TableBorder, TableBorders } from './Table';\r\nimport {\r\n BasicShadingPattern,\r\n RowJustification as CommonRowJustification,\r\n ShadingConfig,\r\n buildShadingAttributes,\r\n} from './CommonTypes';\r\nimport { defaultLogger } from '../utils/logger';\r\n\r\n// ============================================================================\r\n// RE-EXPORTED TYPES (for backward compatibility)\r\n// ============================================================================\r\n\r\n/**\r\n * Row justification/alignment options\r\n * @see CommonTypes.RowJustification\r\n */\r\nexport type RowJustification = CommonRowJustification;\r\n\r\n/**\r\n * Shading pattern values per ECMA-376\r\n * @see CommonTypes.BasicShadingPattern for the canonical definition\r\n */\r\nexport type ShadingPattern = BasicShadingPattern;\r\n\r\n/**\r\n * Shading configuration\r\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\r\n */\r\nexport type Shading = ShadingConfig;\r\n\r\n/**\r\n * Table property exceptions - overrides table-level properties for this row\r\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\r\n */\r\nexport interface TablePropertyExceptions {\r\n /** Border overrides for this row */\r\n borders?: TableBorders;\r\n /** Shading override for this row */\r\n shading?: Shading;\r\n /** Cell spacing override in twips */\r\n cellSpacing?: number;\r\n /** Table width override in twips */\r\n width?: number;\r\n /** Table indentation override in twips */\r\n indentation?: number;\r\n /** Table justification override */\r\n justification?: RowJustification;\r\n}\r\n\r\n/**\r\n * Row formatting options\r\n */\r\nexport interface RowFormatting {\r\n height?: number; // Height in twips\r\n heightRule?: 'auto' | 'exact' | 'atLeast';\r\n isHeader?: boolean; // Whether this is a header row\r\n cantSplit?: boolean; // Prevent row from breaking across pages\r\n justification?: RowJustification; // Row justification/alignment\r\n hidden?: boolean; // Hide row\r\n gridBefore?: number; // Grid columns before first cell\r\n gridAfter?: number; // Grid columns after last cell\r\n tablePropertyExceptions?: TablePropertyExceptions; // Table property exceptions for this row\r\n wBefore?: number; // Width before row in twips (per ECMA-376 §17.4.83)\r\n wBeforeType?: string; // Width before type (dxa, pct, auto)\r\n wAfter?: number; // Width after row in twips (per ECMA-376 §17.4.82)\r\n wAfterType?: string; // Width after type (dxa, pct, auto)\r\n cellSpacing?: number; // Row-level cell spacing override in twips\r\n cellSpacingType?: string; // Cell spacing type (dxa, pct)\r\n cnfStyle?: string; // Conditional formatting bitmask (per ECMA-376 §17.3.1.8)\r\n divId?: number; // HTML div association (per ECMA-376 §17.4.9)\r\n}\r\n\r\n/**\r\n * Table row property change tracking (w:trPrChange)\r\n * Per ECMA-376 Part 1 §17.13.5.38\r\n */\r\nexport interface TrPrChange {\r\n author: string;\r\n date: string;\r\n id: string;\r\n previousProperties: Record<string, any>;\r\n}\r\n\r\n/**\r\n * Represents a table row\r\n */\r\nexport class TableRow {\r\n private cells: TableCell[] = [];\r\n private formatting: RowFormatting;\r\n /** Parent table reference (if row is inside a table) */\r\n private _parentTable?: import('./Table').Table;\r\n /** Tracking context for automatic change tracking */\r\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\r\n /** Table row property change tracking (w:trPrChange) */\r\n private trPrChange?: TrPrChange;\r\n\r\n /**\r\n * Creates a new TableRow\r\n * @param cellCount - Number of cells to create (optional)\r\n * @param formatting - Row formatting options\r\n */\r\n constructor(cellCount?: number, formatting: RowFormatting = {}) {\r\n this.formatting = formatting;\r\n\r\n if (cellCount !== undefined && cellCount > 0) {\r\n for (let i = 0; i < cellCount; i++) {\r\n const cell = new TableCell();\r\n cell._setParentRow(this);\r\n this.cells.push(cell);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the tracking context for automatic change tracking.\r\n * Called by Document when track changes is enabled.\r\n * @internal\r\n */\r\n _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {\r\n this.trackingContext = context;\r\n }\r\n\r\n /**\r\n * Gets the table row property change tracking info\r\n */\r\n getTrPrChange(): TrPrChange | undefined {\r\n return this.trPrChange;\r\n }\r\n\r\n /**\r\n * Sets the table row property change tracking info\r\n */\r\n setTrPrChange(change: TrPrChange | undefined): void {\r\n this.trPrChange = change;\r\n }\r\n\r\n /**\r\n * Clears the table row property change tracking\r\n */\r\n clearTrPrChange(): void {\r\n this.trPrChange = undefined;\r\n }\r\n\r\n /**\r\n * Adds a cell to the row\r\n * @param cell - Cell to add\r\n * @returns This row for chaining\r\n */\r\n addCell(cell: TableCell): this {\r\n this.cells.push(cell);\r\n cell._setParentRow(this);\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new cell\r\n * @param text - Optional text content for the cell\r\n * @returns The created cell\r\n */\r\n createCell(text?: string): TableCell {\r\n const cell = new TableCell();\r\n if (text) {\r\n cell.createParagraph(text);\r\n }\r\n this.cells.push(cell);\r\n cell._setParentRow(this);\r\n return cell;\r\n }\r\n\r\n /**\r\n * Gets a cell by index\r\n * @param index - Cell index (0-based)\r\n * @returns The cell at the index, or undefined\r\n */\r\n getCell(index: number): TableCell | undefined {\r\n return this.cells[index];\r\n }\r\n\r\n /**\r\n * Inserts a cell at the specified index\r\n * @param index - Position to insert (0-based)\r\n * @param cell - Cell to insert\r\n */\r\n insertCellAt(index: number, cell: TableCell): void {\r\n this.cells.splice(index, 0, cell);\r\n cell._setParentRow(this);\r\n }\r\n\r\n /**\r\n * Removes and returns the cell at the specified index\r\n * @param index - Position to remove (0-based)\r\n * @returns The removed cell, or undefined if index is out of bounds\r\n */\r\n removeCellAt(index: number): TableCell | undefined {\r\n if (index < 0 || index >= this.cells.length) return undefined;\r\n const removed = this.cells.splice(index, 1);\r\n const cell = removed[0];\r\n if (cell) cell._setParentRow(undefined);\r\n return cell;\r\n }\r\n\r\n /**\r\n * Gets all cells in the row\r\n * @returns Array of cells\r\n */\r\n getCells(): TableCell[] {\r\n return [...this.cells];\r\n }\r\n\r\n /**\r\n * Gets the number of cells in the row\r\n * @returns Number of cells\r\n */\r\n getCellCount(): number {\r\n return this.cells.length;\r\n }\r\n\r\n /**\r\n * Calculates the total grid span of the row (considering column spans)\r\n *\r\n * For tables with merged cells, this returns the number of logical columns\r\n * this row spans based on the columnSpan values of each cell.\r\n *\r\n * @returns Total grid span (sum of all cell spans, where unspanned cells count as 1)\r\n *\r\n * @example\r\n * ```typescript\r\n * // Row with 3 cells, middle one spanning 2 columns\r\n * const row = new TableRow();\r\n * row.createCell('A'); // span = 1\r\n * row.createCell('B').setColumnSpan(2); // span = 2\r\n * row.createCell('C'); // span = 1\r\n * row.getTotalGridSpan(); // Returns 4\r\n * ```\r\n */\r\n getTotalGridSpan(): number {\r\n let totalSpan = 0;\r\n for (const cell of this.cells) {\r\n const formatting = cell.getFormatting();\r\n totalSpan += formatting.columnSpan || 1;\r\n }\r\n return totalSpan;\r\n }\r\n\r\n /**\r\n * Validates the row's grid alignment\r\n *\r\n * Checks if the total grid span matches the expected column count.\r\n * Logs a warning if there's a mismatch, which can indicate:\r\n * - Missing cells (grid span < expected)\r\n * - Extra cells (grid span > expected)\r\n * - Incorrect columnSpan values\r\n *\r\n * @param expectedColumns - Expected number of columns in the table grid\r\n * @returns Object with validation result and details\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = row.validateGridAlignment(4);\r\n * if (!result.isValid) {\r\n * console.log(result.message); // \"Row has 3 grid columns but expected 4\"\r\n * }\r\n * ```\r\n */\r\n validateGridAlignment(expectedColumns: number): {\r\n isValid: boolean;\r\n actualSpan: number;\r\n message?: string;\r\n } {\r\n const actualSpan = this.getTotalGridSpan();\r\n\r\n if (actualSpan === expectedColumns) {\r\n return { isValid: true, actualSpan };\r\n }\r\n\r\n const message =\r\n `Row grid alignment mismatch: has ${actualSpan} grid columns but expected ${expectedColumns}. ` +\r\n `Cell count: ${this.cells.length}. ` +\r\n (actualSpan < expectedColumns\r\n ? \"Missing cells or incorrect columnSpan values.\"\r\n : \"Extra cells or excessive columnSpan values.\");\r\n\r\n defaultLogger.warn(`[TableRow] ${message}`);\r\n\r\n return {\r\n isValid: false,\r\n actualSpan,\r\n message,\r\n };\r\n }\r\n\r\n /**\r\n * Sets row height\r\n * @param twips - Height in twips\r\n * @param rule - Height rule\r\n * @returns This row for chaining\r\n */\r\n setHeight(twips: number, rule: RowFormatting['heightRule'] = 'atLeast'): this {\r\n const prevHeight = this.formatting.height;\r\n const prevRule = this.formatting.heightRule;\r\n this.formatting.height = twips;\r\n this.formatting.heightRule = rule;\r\n if (this.trackingContext?.isEnabled()) {\r\n if (prevHeight !== twips) {\r\n this.trackingContext.trackTableChange(this, 'height', prevHeight, twips);\r\n }\r\n if (prevRule !== rule) {\r\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Clears the row height, allowing Word to auto-size the row based on content\r\n * @returns This row for chaining\r\n */\r\n clearHeight(): this {\r\n delete this.formatting.height;\r\n delete this.formatting.heightRule;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether this is a header row\r\n * @param isHeader - Whether this is a header row\r\n * @returns This row for chaining\r\n */\r\n setHeader(isHeader = true): this {\r\n const prev = this.formatting.isHeader;\r\n this.formatting.isHeader = isHeader;\r\n if (this.trackingContext?.isEnabled() && prev !== isHeader) {\r\n this.trackingContext.trackTableChange(this, 'isHeader', prev, isHeader);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether row can split across pages\r\n * @param cantSplit - Whether to prevent splitting\r\n * @returns This row for chaining\r\n */\r\n setCantSplit(cantSplit = true): this {\r\n const prev = this.formatting.cantSplit;\r\n this.formatting.cantSplit = cantSplit;\r\n if (this.trackingContext?.isEnabled() && prev !== cantSplit) {\r\n this.trackingContext.trackTableChange(this, 'cantSplit', prev, cantSplit);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets row justification/alignment\r\n * Per ECMA-376 Part 1 §17.4.79 (w:jc)\r\n * @param alignment - Row justification ('left' | 'center' | 'right' | 'start' | 'end')\r\n * @returns This row for chaining\r\n * @example\r\n * ```typescript\r\n * row.setJustification('center'); // Center-align the entire row\r\n * ```\r\n */\r\n setJustification(alignment: RowJustification): this {\r\n const prev = this.formatting.justification;\r\n this.formatting.justification = alignment;\r\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\r\n this.trackingContext.trackTableChange(this, 'justification', prev, alignment);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether row is hidden\r\n * Per ECMA-376 Part 1 §17.4.23 (w:hidden)\r\n * @param hidden - Whether to hide the row\r\n * @returns This row for chaining\r\n * @example\r\n * ```typescript\r\n * row.setHidden(true); // Hide this row from display\r\n * ```\r\n */\r\n setHidden(hidden = true): this {\r\n const prev = this.formatting.hidden;\r\n this.formatting.hidden = hidden;\r\n if (this.trackingContext?.isEnabled() && prev !== hidden) {\r\n this.trackingContext.trackTableChange(this, 'hidden', prev, hidden);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets grid columns before first cell\r\n * Per ECMA-376 Part 1 §17.4.15 (w:gridBefore)\r\n * Specifies number of grid columns that must be skipped before the first cell\r\n * @param columns - Number of grid columns to skip before first cell\r\n * @returns This row for chaining\r\n * @example\r\n * ```typescript\r\n * row.setGridBefore(2); // Skip 2 columns before first cell\r\n * ```\r\n */\r\n setGridBefore(columns: number): this {\r\n const prev = this.formatting.gridBefore;\r\n this.formatting.gridBefore = columns;\r\n if (this.trackingContext?.isEnabled() && prev !== columns) {\r\n this.trackingContext.trackTableChange(this, 'gridBefore', prev, columns);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets grid columns after last cell\r\n * Per ECMA-376 Part 1 §17.4.14 (w:gridAfter)\r\n * Specifies number of grid columns that must be left after the last cell\r\n * @param columns - Number of grid columns to leave after last cell\r\n * @returns This row for chaining\r\n * @example\r\n * ```typescript\r\n * row.setGridAfter(1); // Leave 1 column after last cell\r\n * ```\r\n */\r\n setGridAfter(columns: number): this {\r\n const prev = this.formatting.gridAfter;\r\n this.formatting.gridAfter = columns;\r\n if (this.trackingContext?.isEnabled() && prev !== columns) {\r\n this.trackingContext.trackTableChange(this, 'gridAfter', prev, columns);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets table property exceptions for this row\r\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\r\n *\r\n * Allows this row to override table-level properties like borders, shading, and cell spacing.\r\n * Typically used when merging tables or preserving formatting from legacy documents.\r\n *\r\n * @param exceptions - Table property exceptions configuration\r\n * @returns This row for chaining\r\n * @example\r\n * ```typescript\r\n * // Override borders for this row\r\n * row.setTablePropertyExceptions({\r\n * borders: {\r\n * top: { style: 'single', size: 8, color: 'FF0000' },\r\n * bottom: { style: 'single', size: 8, color: 'FF0000' }\r\n * },\r\n * shading: { fill: 'FFFF00', pattern: 'clear' }\r\n * });\r\n * ```\r\n */\r\n setTablePropertyExceptions(exceptions: TablePropertyExceptions): this {\r\n const prev = this.formatting.tablePropertyExceptions;\r\n this.formatting.tablePropertyExceptions = exceptions;\r\n if (this.trackingContext?.isEnabled() && prev !== exceptions) {\r\n this.trackingContext.trackTableChange(this, 'tablePropertyExceptions', prev, exceptions);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets width before row (w:wBefore) per ECMA-376 Part 1 §17.4.83\r\n * @param width - Width in twips\r\n * @param type - Width type (dxa, pct, auto)\r\n * @returns This row for chaining\r\n */\r\n setWBefore(width: number, type = 'dxa'): this {\r\n const prevWidth = this.formatting.wBefore;\r\n const prevType = this.formatting.wBeforeType;\r\n this.formatting.wBefore = width;\r\n this.formatting.wBeforeType = type;\r\n if (this.trackingContext?.isEnabled()) {\r\n if (prevWidth !== width) {\r\n this.trackingContext.trackTableChange(this, 'wBefore', prevWidth, width);\r\n }\r\n if (prevType !== type) {\r\n this.trackingContext.trackTableChange(this, 'wBeforeType', prevType, type);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets width after row (w:wAfter) per ECMA-376 Part 1 §17.4.82\r\n * @param width - Width in twips\r\n * @param type - Width type (dxa, pct, auto)\r\n * @returns This row for chaining\r\n */\r\n setWAfter(width: number, type = 'dxa'): this {\r\n const prevWidth = this.formatting.wAfter;\r\n const prevType = this.formatting.wAfterType;\r\n this.formatting.wAfter = width;\r\n this.formatting.wAfterType = type;\r\n if (this.trackingContext?.isEnabled()) {\r\n if (prevWidth !== width) {\r\n this.trackingContext.trackTableChange(this, 'wAfter', prevWidth, width);\r\n }\r\n if (prevType !== type) {\r\n this.trackingContext.trackTableChange(this, 'wAfterType', prevType, type);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets row-level cell spacing override (w:tblCellSpacing on row)\r\n * @param spacing - Cell spacing in twips\r\n * @param type - Spacing type (dxa, pct)\r\n * @returns This row for chaining\r\n */\r\n setRowCellSpacing(spacing: number, type = 'dxa'): this {\r\n const prevSpacing = this.formatting.cellSpacing;\r\n const prevType = this.formatting.cellSpacingType;\r\n this.formatting.cellSpacing = spacing;\r\n this.formatting.cellSpacingType = type;\r\n if (this.trackingContext?.isEnabled()) {\r\n if (prevSpacing !== spacing) {\r\n this.trackingContext.trackTableChange(this, 'cellSpacing', prevSpacing, spacing);\r\n }\r\n if (prevType !== type) {\r\n this.trackingContext.trackTableChange(this, 'cellSpacingType', prevType, type);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets conditional formatting bitmask for this row (w:cnfStyle)\r\n * Per ECMA-376 Part 1 §17.3.1.8\r\n * @param cnfStyle - Binary string (e.g., '100000000000' for firstRow)\r\n * @returns This row for chaining\r\n */\r\n setCnfStyle(cnfStyle: string): this {\r\n const prev = this.formatting.cnfStyle;\r\n this.formatting.cnfStyle = cnfStyle;\r\n if (this.trackingContext?.isEnabled() && prev !== cnfStyle) {\r\n this.trackingContext.trackTableChange(this, 'cnfStyle', prev, cnfStyle);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the HTML div ID for web round-trip\r\n * Per ECMA-376 Part 1 §17.4.9\r\n * @param id - Div ID number\r\n * @returns This row for chaining\r\n */\r\n setDivId(id: number): this {\r\n this.formatting.divId = id;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the HTML div ID\r\n * @returns Div ID or undefined\r\n */\r\n getDivId(): number | undefined {\r\n return this.formatting.divId;\r\n }\r\n\r\n /**\r\n * Gets table property exceptions\r\n * @returns Table property exceptions or undefined\r\n */\r\n getTablePropertyExceptions(): TablePropertyExceptions | undefined {\r\n return this.formatting.tablePropertyExceptions;\r\n }\r\n\r\n /**\r\n * Gets the row formatting\r\n * @returns Row formatting\r\n */\r\n getFormatting(): RowFormatting {\r\n return { ...this.formatting };\r\n }\r\n\r\n // ============================================================================\r\n // Individual Formatting Getters\r\n // ============================================================================\r\n\r\n /**\r\n * Gets the row height in twips\r\n * @returns Height in twips or undefined if not set\r\n */\r\n getHeight(): number | undefined {\r\n return this.formatting.height;\r\n }\r\n\r\n /**\r\n * Gets the row height rule\r\n * @returns Height rule ('auto', 'exact', 'atLeast') or undefined\r\n */\r\n getHeightRule(): string | undefined {\r\n return this.formatting.heightRule;\r\n }\r\n\r\n /**\r\n * Checks if this row is marked as a header row\r\n * @returns True if this is a header row\r\n */\r\n getIsHeader(): boolean {\r\n return this.formatting.isHeader ?? false;\r\n }\r\n\r\n /**\r\n * Gets whether the row can split across pages\r\n * @returns True if row cannot split\r\n */\r\n getCantSplit(): boolean {\r\n return this.formatting.cantSplit ?? false;\r\n }\r\n\r\n /**\r\n * Gets the row justification (alignment)\r\n * @returns Justification ('left', 'center', 'right') or undefined\r\n */\r\n getJustification(): string | undefined {\r\n return this.formatting.justification;\r\n }\r\n\r\n /**\r\n * Checks if this row is hidden\r\n * @returns True if row is hidden\r\n */\r\n isHidden(): boolean {\r\n return this.formatting.hidden ?? false;\r\n }\r\n\r\n /**\r\n * Sets the parent table reference for this row.\r\n * Called by Table when adding rows.\r\n * @internal\r\n */\r\n _setParentTable(table: import('./Table').Table | undefined): void {\r\n this._parentTable = table;\r\n }\r\n\r\n /**\r\n * Gets the parent table reference for this row.\r\n * @internal\r\n */\r\n _getParentTable(): import('./Table').Table | undefined {\r\n return this._parentTable;\r\n }\r\n\r\n /**\r\n * Builds XML for table property exceptions\r\n * Per ECMA-376 Part 1 §17.4.61\r\n * @private\r\n */\r\n private buildTablePropertyExceptionsXML(exceptions: TablePropertyExceptions): XMLElement[] {\r\n const children: XMLElement[] = [];\r\n\r\n // Add table width exception (w:tblW)\r\n if (exceptions.width !== undefined) {\r\n children.push(XMLBuilder.wSelf('tblW', {\r\n 'w:w': exceptions.width,\r\n 'w:type': 'dxa'\r\n }));\r\n }\r\n\r\n // Add table justification exception (w:jc)\r\n if (exceptions.justification) {\r\n children.push(XMLBuilder.wSelf('jc', { 'w:val': exceptions.justification }));\r\n }\r\n\r\n // Add cell spacing exception (w:tblCellSpacing)\r\n if (exceptions.cellSpacing !== undefined) {\r\n children.push(XMLBuilder.wSelf('tblCellSpacing', {\r\n 'w:w': exceptions.cellSpacing,\r\n 'w:type': 'dxa'\r\n }));\r\n }\r\n\r\n // Add table indentation exception (w:tblInd)\r\n if (exceptions.indentation !== undefined) {\r\n children.push(XMLBuilder.wSelf('tblInd', {\r\n 'w:w': exceptions.indentation,\r\n 'w:type': 'dxa'\r\n }));\r\n }\r\n\r\n // Add table borders exception (w:tblBorders)\r\n if (exceptions.borders) {\r\n const borderChildren = this.buildBordersXML(exceptions.borders);\r\n if (borderChildren.length > 0) {\r\n children.push(XMLBuilder.w('tblBorders', undefined, borderChildren));\r\n }\r\n }\r\n\r\n // Add shading exception (w:shd)\r\n if (exceptions.shading) {\r\n const shdAttrs: Record<string, string> = {};\r\n if (exceptions.shading.pattern) shdAttrs['w:val'] = exceptions.shading.pattern;\r\n if (exceptions.shading.color) shdAttrs['w:color'] = exceptions.shading.color;\r\n if (exceptions.shading.fill) shdAttrs['w:fill'] = exceptions.shading.fill;\r\n if (exceptions.shading.themeColor) shdAttrs['w:themeColor'] = exceptions.shading.themeColor;\r\n if (exceptions.shading.themeFill) shdAttrs['w:themeFill'] = exceptions.shading.themeFill;\r\n if (exceptions.shading.themeFillShade) shdAttrs['w:themeFillShade'] = exceptions.shading.themeFillShade;\r\n if (exceptions.shading.themeFillTint) shdAttrs['w:themeFillTint'] = exceptions.shading.themeFillTint;\r\n if (exceptions.shading.themeShade) shdAttrs['w:themeShade'] = exceptions.shading.themeShade;\r\n if (exceptions.shading.themeTint) shdAttrs['w:themeTint'] = exceptions.shading.themeTint;\r\n children.push(XMLBuilder.w('shd', shdAttrs));\r\n }\r\n\r\n return children;\r\n }\r\n\r\n /**\r\n * Builds XML for table borders\r\n * @private\r\n */\r\n private buildBordersXML(borders: TableBorders): XMLElement[] {\r\n const children: XMLElement[] = [];\r\n\r\n const borderNames: (keyof TableBorders)[] = ['top', 'left', 'bottom', 'right', 'insideH', 'insideV'];\r\n\r\n for (const name of borderNames) {\r\n const border = borders[name];\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 children.push(XMLBuilder.wSelf(name, attrs));\r\n }\r\n }\r\n }\r\n\r\n return children;\r\n }\r\n\r\n /**\r\n * Converts the row to WordprocessingML XML element\r\n * @returns XMLElement representing the row\r\n */\r\n toXML(): XMLElement {\r\n const trPrChildren: XMLElement[] = [];\r\n\r\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\r\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\r\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\r\n\r\n // 1. cnfStyle (conditional formatting bitmask)\r\n if (this.formatting.cnfStyle) {\r\n trPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': this.formatting.cnfStyle }));\r\n }\r\n\r\n // 2. divId\r\n if (this.formatting.divId !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': this.formatting.divId }));\r\n }\r\n\r\n // 3. gridBefore\r\n if (this.formatting.gridBefore !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': this.formatting.gridBefore }));\r\n }\r\n\r\n // 4. gridAfter\r\n if (this.formatting.gridAfter !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': this.formatting.gridAfter }));\r\n }\r\n\r\n // 5. wBefore\r\n if (this.formatting.wBefore !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('wBefore', {\r\n 'w:w': this.formatting.wBefore,\r\n 'w:type': this.formatting.wBeforeType || 'dxa',\r\n }));\r\n }\r\n\r\n // 6. wAfter\r\n if (this.formatting.wAfter !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('wAfter', {\r\n 'w:w': this.formatting.wAfter,\r\n 'w:type': this.formatting.wAfterType || 'dxa',\r\n }));\r\n }\r\n\r\n // 7. cantSplit\r\n if (this.formatting.cantSplit) {\r\n trPrChildren.push(XMLBuilder.wSelf('cantSplit'));\r\n }\r\n\r\n // 8. trHeight\r\n if (this.formatting.height !== undefined) {\r\n const attrs: Record<string, string | number> = {\r\n 'w:val': this.formatting.height,\r\n };\r\n if (this.formatting.heightRule) {\r\n attrs['w:hRule'] = this.formatting.heightRule;\r\n }\r\n trPrChildren.push(XMLBuilder.wSelf('trHeight', attrs));\r\n }\r\n\r\n // 9. tblHeader\r\n if (this.formatting.isHeader) {\r\n trPrChildren.push(XMLBuilder.wSelf('tblHeader'));\r\n }\r\n\r\n // 10. tblCellSpacing\r\n if (this.formatting.cellSpacing !== undefined) {\r\n trPrChildren.push(XMLBuilder.wSelf('tblCellSpacing', {\r\n 'w:w': this.formatting.cellSpacing,\r\n 'w:type': this.formatting.cellSpacingType || 'dxa',\r\n }));\r\n }\r\n\r\n // 11. jc (map 'start'/'end' to valid ST_JcTable values)\r\n if (this.formatting.justification) {\r\n const jcMap: Record<string, string> = { start: 'left', end: 'right' };\r\n const jcVal = jcMap[this.formatting.justification] || this.formatting.justification;\r\n trPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));\r\n }\r\n\r\n // 12. hidden\r\n if (this.formatting.hidden) {\r\n trPrChildren.push(XMLBuilder.wSelf('hidden'));\r\n }\r\n\r\n // Add table row property change (w:trPrChange) per ECMA-376 Part 1 §17.13.5.38\r\n // Must be last child of w:trPr\r\n if (this.trPrChange) {\r\n const changeAttrs: Record<string, string | number> = {\r\n 'w:id': this.trPrChange.id,\r\n 'w:author': this.trPrChange.author,\r\n 'w:date': this.trPrChange.date,\r\n };\r\n const prevTrPrChildren: XMLElement[] = [];\r\n const prev = this.trPrChange.previousProperties;\r\n if (prev) {\r\n // Ordered per CT_TrPr: cnfStyle → gridBefore → gridAfter → wBefore → wAfter →\r\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\r\n if (prev.cnfStyle) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': prev.cnfStyle }));\r\n }\r\n if (prev.gridBefore !== undefined) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': prev.gridBefore }));\r\n }\r\n if (prev.gridAfter !== undefined) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': prev.gridAfter }));\r\n }\r\n if (prev.wBefore !== undefined) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('wBefore', {\r\n 'w:w': prev.wBefore,\r\n 'w:type': prev.wBeforeType || 'dxa',\r\n }));\r\n }\r\n if (prev.wAfter !== undefined) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('wAfter', {\r\n 'w:w': prev.wAfter,\r\n 'w:type': prev.wAfterType || 'dxa',\r\n }));\r\n }\r\n if (prev.cantSplit) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));\r\n }\r\n if (prev.height !== undefined) {\r\n const heightAttrs: Record<string, string | number> = { 'w:val': prev.height };\r\n if (prev.heightRule) heightAttrs['w:hRule'] = prev.heightRule;\r\n prevTrPrChildren.push(XMLBuilder.wSelf('trHeight', heightAttrs));\r\n }\r\n if (prev.isHeader) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));\r\n }\r\n if (prev.cellSpacing !== undefined) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('tblCellSpacing', {\r\n 'w:w': prev.cellSpacing,\r\n 'w:type': prev.cellSpacingType || 'dxa',\r\n }));\r\n }\r\n if (prev.justification) {\r\n const jcPrevMap: Record<string, string> = { start: 'left', end: 'right' };\r\n prevTrPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcPrevMap[prev.justification] || prev.justification }));\r\n }\r\n if (prev.hidden) {\r\n prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));\r\n }\r\n }\r\n const prevTrPr = XMLBuilder.w('trPr', undefined, prevTrPrChildren);\r\n trPrChildren.push(XMLBuilder.w('trPrChange', changeAttrs, [prevTrPr]));\r\n }\r\n\r\n // Build row element\r\n const rowChildren: XMLElement[] = [];\r\n\r\n // Add row properties if there are any\r\n if (trPrChildren.length > 0) {\r\n rowChildren.push(XMLBuilder.w('trPr', undefined, trPrChildren));\r\n }\r\n\r\n // Add table property exceptions (tblPrEx) if present\r\n if (this.formatting.tablePropertyExceptions) {\r\n const tblPrExChildren = this.buildTablePropertyExceptionsXML(this.formatting.tablePropertyExceptions);\r\n if (tblPrExChildren.length > 0) {\r\n rowChildren.push(XMLBuilder.w('tblPrEx', undefined, tblPrExChildren));\r\n }\r\n }\r\n\r\n // Add all cells - each cell is independent\r\n // Note: gridSpan (columnSpan) means a single cell spans multiple columns in the grid,\r\n // it does NOT mean subsequent cells should be skipped. Each cell in the array\r\n // represents a distinct cell that should be output to the XML.\r\n for (const cell of this.cells) {\r\n rowChildren.push(cell.toXML());\r\n }\r\n\r\n return XMLBuilder.w('tr', undefined, rowChildren);\r\n }\r\n\r\n /**\r\n * Creates a new TableRow\r\n * @param cellCount - Number of cells to create\r\n * @param formatting - Row formatting\r\n * @returns New TableRow instance\r\n */\r\n static create(cellCount?: number, formatting?: RowFormatting): TableRow {\r\n return new TableRow(cellCount, formatting);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":";;;AAIA,2CAAwC;AACxC,kDAA2D;AAQ3D,4CAAgD;AAgFhD,MAAa,QAAQ;IACX,KAAK,GAAgB,EAAE,CAAC;IACxB,UAAU,CAAgB;IAE1B,YAAY,CAA2B;IAEvC,eAAe,CAAyD;IAExE,UAAU,CAAc;IAOhC,YAAY,SAAkB,EAAE,aAA4B,EAAE;QAC5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,IAAI,qBAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAOD,mBAAmB,CAAC,OAA8D;QAChF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAKD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAKD,aAAa,CAAC,MAA8B;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3B,CAAC;IAKD,eAAe;QACb,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAOD,OAAO,CAAC,IAAe;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,UAAU,CAAC,IAAa;QACtB,MAAM,IAAI,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAOD,YAAY,CAAC,KAAa,EAAE,IAAe;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAOD,YAAY,CAAC,KAAa;QACxB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI;YAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAoBD,gBAAgB;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,SAAS,IAAI,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAsBD,qBAAqB,CAAC,eAAuB;QAK3C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE3C,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,GACX,oCAAoC,UAAU,8BAA8B,eAAe,IAAI;YAC/F,eAAe,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI;YACpC,CAAC,UAAU,GAAG,eAAe;gBAC3B,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,6CAA6C,CAAC,CAAC;QAErD,sBAAa,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QAE5C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU;YACV,OAAO;SACR,CAAC;IACJ,CAAC;IAQD,SAAS,CAAC,KAAa,EAAE,OAAoC,SAAS;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,SAAS,CAAC,QAAQ,GAAG,IAAI;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,YAAY,CAAC,SAAS,GAAG,IAAI;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,gBAAgB,CAAC,SAA2B;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAYD,SAAS,CAAC,MAAM,GAAG,IAAI;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAaD,aAAa,CAAC,OAAe;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC;QACrC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAaD,YAAY,CAAC,OAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAuBD,0BAA0B,CAAC,UAAmC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,UAAU,CAAC;QACrD,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,UAAU,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,SAAS,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,iBAAiB,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,WAAW,CAAC,QAAgB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQD,QAAQ,CAAC,EAAU;QACjB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAMD,0BAA0B;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;IACjD,CAAC;IAMD,aAAa;QACX,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAUD,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAMD,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IACpC,CAAC;IAMD,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC3C,CAAC;IAMD,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,CAAC;IAMD,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACvC,CAAC;IAMD,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;IACzC,CAAC;IAOD,eAAe,CAAC,KAA0C;QACxD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAOO,+BAA+B,CAAC,UAAmC;QACzE,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAGlC,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CACX,uBAAU,CAAC,KAAK,CAAC,MAAM,EAAE;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QAGD,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CACX,uBAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBACjC,KAAK,EAAE,UAAU,CAAC,WAAW;gBAC7B,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CACX,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACzB,KAAK,EAAE,UAAU,CAAC,WAAW;gBAC7B,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAGD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO;gBAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/E,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK;gBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7E,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI;gBAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YAC1E,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU;gBAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;YAC5F,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS;gBAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;YACzF,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc;gBACnC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC;YACnE,IAAI,UAAU,CAAC,OAAO,CAAC,aAAa;gBAClC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;YACjE,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU;gBAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;YAC5F,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS;gBAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;YACzF,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAMO,eAAe,CAAC,OAAqB;QAC3C,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAElC,MAAM,WAAW,GAA2B;YAC1C,KAAK;YACL,MAAM;YACN,QAAQ;YACR,OAAO;YACP,SAAS;YACT,SAAS;SACV,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,KAAK,GAAoC,EAAE,CAAC;gBAClD,IAAI,MAAM,CAAC,KAAK;oBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAChD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;oBAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAChE,IAAI,MAAM,CAAC,KAAK;oBAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBAElD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,QAAQ,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAMD,KAAK;QACH,MAAM,YAAY,GAAiB,EAAE,CAAC;QAOtC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7C,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1C,YAAY,CAAC,IAAI,CACf,uBAAU,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC1B,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;gBAC9B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,KAAK;aAC/C,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzC,YAAY,CAAC,IAAI,CACf,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACzB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAC7B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK;aAC9C,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACnD,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,KAAK,GAAoC;gBAC7C,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;aAChC,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAChD,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACnD,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9C,YAAY,CAAC,IAAI,CACf,uBAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBACjC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;gBAClC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,KAAK;aACnD,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YACtE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YACpF,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,CAAC;QAID,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,WAAW,GAAoC;gBACnD,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;gBAClC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC/B,CAAC;YACF,MAAM,gBAAgB,GAAiB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAChD,IAAI,IAAI,EAAE,CAAC;gBAGT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAClF,CAAC;gBACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAClC,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,IAAI,CACnB,uBAAU,CAAC,KAAK,CAAC,SAAS,EAAE;wBAC1B,KAAK,EAAE,IAAI,CAAC,OAAO;wBACnB,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;qBACpC,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9B,gBAAgB,CAAC,IAAI,CACnB,uBAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACzB,KAAK,EAAE,IAAI,CAAC,MAAM;wBAClB,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;qBACnC,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,WAAW,GAAoC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC9E,IAAI,IAAI,CAAC,UAAU;wBAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;oBAC9D,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnE,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACnC,gBAAgB,CAAC,IAAI,CACnB,uBAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE;wBACjC,KAAK,EAAE,IAAI,CAAC,WAAW;wBACvB,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;qBACxC,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,MAAM,SAAS,GAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;oBAC1E,gBAAgB,CAAC,IAAI,CACnB,uBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,CACzF,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,gBAAgB,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,uBAAU,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;YACnE,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAGD,MAAM,WAAW,GAAiB,EAAE,CAAC;QAGrC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;YAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,+BAA+B,CAC1D,IAAI,CAAC,UAAU,CAAC,uBAAuB,CACxC,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,WAAW,CAAC,IAAI,CAAC,uBAAU,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAMD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,uBAAU,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAQD,MAAM,CAAC,MAAM,CAAC,SAAkB,EAAE,UAA0B;QAC1D,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF;AAl2BD,4BAk2BC","sourcesContent":["/**\n * TableRow - Represents a row in a table\n */\n\nimport { TableCell } from './TableCell';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { TableBorder, TableBorders } from './Table';\nimport {\n BasicShadingPattern,\n RowJustification as CommonRowJustification,\n ShadingConfig,\n buildShadingAttributes,\n} from './CommonTypes';\nimport { defaultLogger } from '../utils/logger';\n\n// ============================================================================\n// RE-EXPORTED TYPES (for backward compatibility)\n// ============================================================================\n\n/**\n * Row justification/alignment options\n * @see CommonTypes.RowJustification\n */\nexport type RowJustification = CommonRowJustification;\n\n/**\n * Shading pattern values per ECMA-376\n * @see CommonTypes.BasicShadingPattern for the canonical definition\n */\nexport type ShadingPattern = BasicShadingPattern;\n\n/**\n * Shading configuration\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type Shading = ShadingConfig;\n\n/**\n * Table property exceptions - overrides table-level properties for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n */\nexport interface TablePropertyExceptions {\n /** Border overrides for this row */\n borders?: TableBorders;\n /** Shading override for this row */\n shading?: Shading;\n /** Cell spacing override in twips */\n cellSpacing?: number;\n /** Table width override in twips */\n width?: number;\n /** Table indentation override in twips */\n indentation?: number;\n /** Table justification override */\n justification?: RowJustification;\n}\n\n/**\n * Row formatting options\n */\nexport interface RowFormatting {\n height?: number; // Height in twips\n heightRule?: 'auto' | 'exact' | 'atLeast';\n isHeader?: boolean; // Whether this is a header row\n cantSplit?: boolean; // Prevent row from breaking across pages\n justification?: RowJustification; // Row justification/alignment\n hidden?: boolean; // Hide row\n gridBefore?: number; // Grid columns before first cell\n gridAfter?: number; // Grid columns after last cell\n tablePropertyExceptions?: TablePropertyExceptions; // Table property exceptions for this row\n wBefore?: number; // Width before row in twips (per ECMA-376 §17.4.83)\n wBeforeType?: string; // Width before type (dxa, pct, auto)\n wAfter?: number; // Width after row in twips (per ECMA-376 §17.4.82)\n wAfterType?: string; // Width after type (dxa, pct, auto)\n cellSpacing?: number; // Row-level cell spacing override in twips\n cellSpacingType?: string; // Cell spacing type (dxa, pct)\n cnfStyle?: string; // Conditional formatting bitmask (per ECMA-376 §17.3.1.8)\n divId?: number; // HTML div association (per ECMA-376 §17.4.9)\n}\n\n/**\n * Table row property change tracking (w:trPrChange)\n * Per ECMA-376 Part 1 §17.13.5.38\n */\nexport interface TrPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\n/**\n * Represents a table row\n */\nexport class TableRow {\n private cells: TableCell[] = [];\n private formatting: RowFormatting;\n /** Parent table reference (if row is inside a table) */\n private _parentTable?: import('./Table').Table;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\n /** Table row property change tracking (w:trPrChange) */\n private trPrChange?: TrPrChange;\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create (optional)\n * @param formatting - Row formatting options\n */\n constructor(cellCount?: number, formatting: RowFormatting = {}) {\n this.formatting = formatting;\n\n if (cellCount !== undefined && cellCount > 0) {\n for (let i = 0; i < cellCount; i++) {\n const cell = new TableCell();\n cell._setParentRow(this);\n this.cells.push(cell);\n }\n }\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the table row property change tracking info\n */\n getTrPrChange(): TrPrChange | undefined {\n return this.trPrChange;\n }\n\n /**\n * Sets the table row property change tracking info\n */\n setTrPrChange(change: TrPrChange | undefined): void {\n this.trPrChange = change;\n }\n\n /**\n * Clears the table row property change tracking\n */\n clearTrPrChange(): void {\n this.trPrChange = undefined;\n }\n\n /**\n * Adds a cell to the row\n * @param cell - Cell to add\n * @returns This row for chaining\n */\n addCell(cell: TableCell): this {\n this.cells.push(cell);\n cell._setParentRow(this);\n return this;\n }\n\n /**\n * Creates and adds a new cell\n * @param text - Optional text content for the cell\n * @returns The created cell\n */\n createCell(text?: string): TableCell {\n const cell = new TableCell();\n if (text) {\n cell.createParagraph(text);\n }\n this.cells.push(cell);\n cell._setParentRow(this);\n return cell;\n }\n\n /**\n * Gets a cell by index\n * @param index - Cell index (0-based)\n * @returns The cell at the index, or undefined\n */\n getCell(index: number): TableCell | undefined {\n return this.cells[index];\n }\n\n /**\n * Inserts a cell at the specified index\n * @param index - Position to insert (0-based)\n * @param cell - Cell to insert\n */\n insertCellAt(index: number, cell: TableCell): void {\n this.cells.splice(index, 0, cell);\n cell._setParentRow(this);\n }\n\n /**\n * Removes and returns the cell at the specified index\n * @param index - Position to remove (0-based)\n * @returns The removed cell, or undefined if index is out of bounds\n */\n removeCellAt(index: number): TableCell | undefined {\n if (index < 0 || index >= this.cells.length) return undefined;\n const removed = this.cells.splice(index, 1);\n const cell = removed[0];\n if (cell) cell._setParentRow(undefined);\n return cell;\n }\n\n /**\n * Gets all cells in the row\n * @returns Array of cells\n */\n getCells(): TableCell[] {\n return [...this.cells];\n }\n\n /**\n * Gets the number of cells in the row\n * @returns Number of cells\n */\n getCellCount(): number {\n return this.cells.length;\n }\n\n /**\n * Calculates the total grid span of the row (considering column spans)\n *\n * For tables with merged cells, this returns the number of logical columns\n * this row spans based on the columnSpan values of each cell.\n *\n * @returns Total grid span (sum of all cell spans, where unspanned cells count as 1)\n *\n * @example\n * ```typescript\n * // Row with 3 cells, middle one spanning 2 columns\n * const row = new TableRow();\n * row.createCell('A'); // span = 1\n * row.createCell('B').setColumnSpan(2); // span = 2\n * row.createCell('C'); // span = 1\n * row.getTotalGridSpan(); // Returns 4\n * ```\n */\n getTotalGridSpan(): number {\n let totalSpan = 0;\n for (const cell of this.cells) {\n const formatting = cell.getFormatting();\n totalSpan += formatting.columnSpan || 1;\n }\n return totalSpan;\n }\n\n /**\n * Validates the row's grid alignment\n *\n * Checks if the total grid span matches the expected column count.\n * Logs a warning if there's a mismatch, which can indicate:\n * - Missing cells (grid span < expected)\n * - Extra cells (grid span > expected)\n * - Incorrect columnSpan values\n *\n * @param expectedColumns - Expected number of columns in the table grid\n * @returns Object with validation result and details\n *\n * @example\n * ```typescript\n * const result = row.validateGridAlignment(4);\n * if (!result.isValid) {\n * console.log(result.message); // \"Row has 3 grid columns but expected 4\"\n * }\n * ```\n */\n validateGridAlignment(expectedColumns: number): {\n isValid: boolean;\n actualSpan: number;\n message?: string;\n } {\n const actualSpan = this.getTotalGridSpan();\n\n if (actualSpan === expectedColumns) {\n return { isValid: true, actualSpan };\n }\n\n const message =\n `Row grid alignment mismatch: has ${actualSpan} grid columns but expected ${expectedColumns}. ` +\n `Cell count: ${this.cells.length}. ` +\n (actualSpan < expectedColumns\n ? 'Missing cells or incorrect columnSpan values.'\n : 'Extra cells or excessive columnSpan values.');\n\n defaultLogger.warn(`[TableRow] ${message}`);\n\n return {\n isValid: false,\n actualSpan,\n message,\n };\n }\n\n /**\n * Sets row height\n * @param twips - Height in twips\n * @param rule - Height rule\n * @returns This row for chaining\n */\n setHeight(twips: number, rule: RowFormatting['heightRule'] = 'atLeast'): this {\n const prevHeight = this.formatting.height;\n const prevRule = this.formatting.heightRule;\n this.formatting.height = twips;\n this.formatting.heightRule = rule;\n if (this.trackingContext?.isEnabled()) {\n if (prevHeight !== twips) {\n this.trackingContext.trackTableChange(this, 'height', prevHeight, twips);\n }\n if (prevRule !== rule) {\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\n }\n }\n return this;\n }\n\n /**\n * Clears the row height, allowing Word to auto-size the row based on content\n * @returns This row for chaining\n */\n clearHeight(): this {\n delete this.formatting.height;\n delete this.formatting.heightRule;\n return this;\n }\n\n /**\n * Sets whether this is a header row\n * @param isHeader - Whether this is a header row\n * @returns This row for chaining\n */\n setHeader(isHeader = true): this {\n const prev = this.formatting.isHeader;\n this.formatting.isHeader = isHeader;\n if (this.trackingContext?.isEnabled() && prev !== isHeader) {\n this.trackingContext.trackTableChange(this, 'isHeader', prev, isHeader);\n }\n return this;\n }\n\n /**\n * Sets whether row can split across pages\n * @param cantSplit - Whether to prevent splitting\n * @returns This row for chaining\n */\n setCantSplit(cantSplit = true): this {\n const prev = this.formatting.cantSplit;\n this.formatting.cantSplit = cantSplit;\n if (this.trackingContext?.isEnabled() && prev !== cantSplit) {\n this.trackingContext.trackTableChange(this, 'cantSplit', prev, cantSplit);\n }\n return this;\n }\n\n /**\n * Sets row justification/alignment\n * Per ECMA-376 Part 1 §17.4.79 (w:jc)\n * @param alignment - Row justification ('left' | 'center' | 'right' | 'start' | 'end')\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setJustification('center'); // Center-align the entire row\n * ```\n */\n setJustification(alignment: RowJustification): this {\n const prev = this.formatting.justification;\n this.formatting.justification = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackTableChange(this, 'justification', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets whether row is hidden\n * Per ECMA-376 Part 1 §17.4.23 (w:hidden)\n * @param hidden - Whether to hide the row\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setHidden(true); // Hide this row from display\n * ```\n */\n setHidden(hidden = true): this {\n const prev = this.formatting.hidden;\n this.formatting.hidden = hidden;\n if (this.trackingContext?.isEnabled() && prev !== hidden) {\n this.trackingContext.trackTableChange(this, 'hidden', prev, hidden);\n }\n return this;\n }\n\n /**\n * Sets grid columns before first cell\n * Per ECMA-376 Part 1 §17.4.15 (w:gridBefore)\n * Specifies number of grid columns that must be skipped before the first cell\n * @param columns - Number of grid columns to skip before first cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridBefore(2); // Skip 2 columns before first cell\n * ```\n */\n setGridBefore(columns: number): this {\n const prev = this.formatting.gridBefore;\n this.formatting.gridBefore = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridBefore', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets grid columns after last cell\n * Per ECMA-376 Part 1 §17.4.14 (w:gridAfter)\n * Specifies number of grid columns that must be left after the last cell\n * @param columns - Number of grid columns to leave after last cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridAfter(1); // Leave 1 column after last cell\n * ```\n */\n setGridAfter(columns: number): this {\n const prev = this.formatting.gridAfter;\n this.formatting.gridAfter = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridAfter', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets table property exceptions for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n *\n * Allows this row to override table-level properties like borders, shading, and cell spacing.\n * Typically used when merging tables or preserving formatting from legacy documents.\n *\n * @param exceptions - Table property exceptions configuration\n * @returns This row for chaining\n * @example\n * ```typescript\n * // Override borders for this row\n * row.setTablePropertyExceptions({\n * borders: {\n * top: { style: 'single', size: 8, color: 'FF0000' },\n * bottom: { style: 'single', size: 8, color: 'FF0000' }\n * },\n * shading: { fill: 'FFFF00', pattern: 'clear' }\n * });\n * ```\n */\n setTablePropertyExceptions(exceptions: TablePropertyExceptions): this {\n const prev = this.formatting.tablePropertyExceptions;\n this.formatting.tablePropertyExceptions = exceptions;\n if (this.trackingContext?.isEnabled() && prev !== exceptions) {\n this.trackingContext.trackTableChange(this, 'tablePropertyExceptions', prev, exceptions);\n }\n return this;\n }\n\n /**\n * Sets width before row (w:wBefore) per ECMA-376 Part 1 §17.4.83\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWBefore(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wBefore;\n const prevType = this.formatting.wBeforeType;\n this.formatting.wBefore = width;\n this.formatting.wBeforeType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wBefore', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wBeforeType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets width after row (w:wAfter) per ECMA-376 Part 1 §17.4.82\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWAfter(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wAfter;\n const prevType = this.formatting.wAfterType;\n this.formatting.wAfter = width;\n this.formatting.wAfterType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wAfter', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wAfterType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets row-level cell spacing override (w:tblCellSpacing on row)\n * @param spacing - Cell spacing in twips\n * @param type - Spacing type (dxa, pct)\n * @returns This row for chaining\n */\n setRowCellSpacing(spacing: number, type = 'dxa'): this {\n const prevSpacing = this.formatting.cellSpacing;\n const prevType = this.formatting.cellSpacingType;\n this.formatting.cellSpacing = spacing;\n this.formatting.cellSpacingType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevSpacing !== spacing) {\n this.trackingContext.trackTableChange(this, 'cellSpacing', prevSpacing, spacing);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'cellSpacingType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets conditional formatting bitmask for this row (w:cnfStyle)\n * Per ECMA-376 Part 1 §17.3.1.8\n * @param cnfStyle - Binary string (e.g., '100000000000' for firstRow)\n * @returns This row for chaining\n */\n setCnfStyle(cnfStyle: string): this {\n const prev = this.formatting.cnfStyle;\n this.formatting.cnfStyle = cnfStyle;\n if (this.trackingContext?.isEnabled() && prev !== cnfStyle) {\n this.trackingContext.trackTableChange(this, 'cnfStyle', prev, cnfStyle);\n }\n return this;\n }\n\n /**\n * Sets the HTML div ID for web round-trip\n * Per ECMA-376 Part 1 §17.4.9\n * @param id - Div ID number\n * @returns This row for chaining\n */\n setDivId(id: number): this {\n this.formatting.divId = id;\n return this;\n }\n\n /**\n * Gets the HTML div ID\n * @returns Div ID or undefined\n */\n getDivId(): number | undefined {\n return this.formatting.divId;\n }\n\n /**\n * Gets table property exceptions\n * @returns Table property exceptions or undefined\n */\n getTablePropertyExceptions(): TablePropertyExceptions | undefined {\n return this.formatting.tablePropertyExceptions;\n }\n\n /**\n * Gets the row formatting\n * @returns Row formatting\n */\n getFormatting(): RowFormatting {\n return { ...this.formatting };\n }\n\n // ============================================================================\n // Individual Formatting Getters\n // ============================================================================\n\n /**\n * Gets the row height in twips\n * @returns Height in twips or undefined if not set\n */\n getHeight(): number | undefined {\n return this.formatting.height;\n }\n\n /**\n * Gets the row height rule\n * @returns Height rule ('auto', 'exact', 'atLeast') or undefined\n */\n getHeightRule(): string | undefined {\n return this.formatting.heightRule;\n }\n\n /**\n * Checks if this row is marked as a header row\n * @returns True if this is a header row\n */\n getIsHeader(): boolean {\n return this.formatting.isHeader ?? false;\n }\n\n /**\n * Gets whether the row can split across pages\n * @returns True if row cannot split\n */\n getCantSplit(): boolean {\n return this.formatting.cantSplit ?? false;\n }\n\n /**\n * Gets the row justification (alignment)\n * @returns Justification ('left', 'center', 'right') or undefined\n */\n getJustification(): string | undefined {\n return this.formatting.justification;\n }\n\n /**\n * Checks if this row is hidden\n * @returns True if row is hidden\n */\n isHidden(): boolean {\n return this.formatting.hidden ?? false;\n }\n\n /**\n * Sets the parent table reference for this row.\n * Called by Table when adding rows.\n * @internal\n */\n _setParentTable(table: import('./Table').Table | undefined): void {\n this._parentTable = table;\n }\n\n /**\n * Gets the parent table reference for this row.\n * @internal\n */\n _getParentTable(): import('./Table').Table | undefined {\n return this._parentTable;\n }\n\n /**\n * Builds XML for table property exceptions\n * Per ECMA-376 Part 1 §17.4.61\n * @private\n */\n private buildTablePropertyExceptionsXML(exceptions: TablePropertyExceptions): XMLElement[] {\n const children: XMLElement[] = [];\n\n // Add table width exception (w:tblW)\n if (exceptions.width !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblW', {\n 'w:w': exceptions.width,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table justification exception (w:jc)\n if (exceptions.justification) {\n children.push(XMLBuilder.wSelf('jc', { 'w:val': exceptions.justification }));\n }\n\n // Add cell spacing exception (w:tblCellSpacing)\n if (exceptions.cellSpacing !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': exceptions.cellSpacing,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table indentation exception (w:tblInd)\n if (exceptions.indentation !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblInd', {\n 'w:w': exceptions.indentation,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table borders exception (w:tblBorders)\n if (exceptions.borders) {\n const borderChildren = this.buildBordersXML(exceptions.borders);\n if (borderChildren.length > 0) {\n children.push(XMLBuilder.w('tblBorders', undefined, borderChildren));\n }\n }\n\n // Add shading exception (w:shd)\n if (exceptions.shading) {\n const shdAttrs: Record<string, string> = {};\n if (exceptions.shading.pattern) shdAttrs['w:val'] = exceptions.shading.pattern;\n if (exceptions.shading.color) shdAttrs['w:color'] = exceptions.shading.color;\n if (exceptions.shading.fill) shdAttrs['w:fill'] = exceptions.shading.fill;\n if (exceptions.shading.themeColor) shdAttrs['w:themeColor'] = exceptions.shading.themeColor;\n if (exceptions.shading.themeFill) shdAttrs['w:themeFill'] = exceptions.shading.themeFill;\n if (exceptions.shading.themeFillShade)\n shdAttrs['w:themeFillShade'] = exceptions.shading.themeFillShade;\n if (exceptions.shading.themeFillTint)\n shdAttrs['w:themeFillTint'] = exceptions.shading.themeFillTint;\n if (exceptions.shading.themeShade) shdAttrs['w:themeShade'] = exceptions.shading.themeShade;\n if (exceptions.shading.themeTint) shdAttrs['w:themeTint'] = exceptions.shading.themeTint;\n children.push(XMLBuilder.w('shd', shdAttrs));\n }\n\n return children;\n }\n\n /**\n * Builds XML for table borders\n * @private\n */\n private buildBordersXML(borders: TableBorders): XMLElement[] {\n const children: XMLElement[] = [];\n\n const borderNames: (keyof TableBorders)[] = [\n 'top',\n 'left',\n 'bottom',\n 'right',\n 'insideH',\n 'insideV',\n ];\n\n for (const name of borderNames) {\n const border = borders[name];\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 children.push(XMLBuilder.wSelf(name, attrs));\n }\n }\n }\n\n return children;\n }\n\n /**\n * Converts the row to WordprocessingML XML element\n * @returns XMLElement representing the row\n */\n toXML(): XMLElement {\n const trPrChildren: XMLElement[] = [];\n\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n\n // 1. cnfStyle (conditional formatting bitmask)\n if (this.formatting.cnfStyle) {\n trPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': this.formatting.cnfStyle }));\n }\n\n // 2. divId\n if (this.formatting.divId !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': this.formatting.divId }));\n }\n\n // 3. gridBefore\n if (this.formatting.gridBefore !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': this.formatting.gridBefore }));\n }\n\n // 4. gridAfter\n if (this.formatting.gridAfter !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': this.formatting.gridAfter }));\n }\n\n // 5. wBefore\n if (this.formatting.wBefore !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': this.formatting.wBefore,\n 'w:type': this.formatting.wBeforeType || 'dxa',\n })\n );\n }\n\n // 6. wAfter\n if (this.formatting.wAfter !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': this.formatting.wAfter,\n 'w:type': this.formatting.wAfterType || 'dxa',\n })\n );\n }\n\n // 7. cantSplit\n if (this.formatting.cantSplit) {\n trPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n }\n\n // 8. trHeight\n if (this.formatting.height !== undefined) {\n const attrs: Record<string, string | number> = {\n 'w:val': this.formatting.height,\n };\n if (this.formatting.heightRule) {\n attrs['w:hRule'] = this.formatting.heightRule;\n }\n trPrChildren.push(XMLBuilder.wSelf('trHeight', attrs));\n }\n\n // 9. tblHeader\n if (this.formatting.isHeader) {\n trPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n }\n\n // 10. tblCellSpacing\n if (this.formatting.cellSpacing !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': this.formatting.cellSpacing,\n 'w:type': this.formatting.cellSpacingType || 'dxa',\n })\n );\n }\n\n // 11. jc (map 'start'/'end' to valid ST_JcTable values)\n if (this.formatting.justification) {\n const jcMap: Record<string, string> = { start: 'left', end: 'right' };\n const jcVal = jcMap[this.formatting.justification] || this.formatting.justification;\n trPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));\n }\n\n // 12. hidden\n if (this.formatting.hidden) {\n trPrChildren.push(XMLBuilder.wSelf('hidden'));\n }\n\n // Add table row property change (w:trPrChange) per ECMA-376 Part 1 §17.13.5.38\n // Must be last child of w:trPr\n if (this.trPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.trPrChange.id,\n 'w:author': this.trPrChange.author,\n 'w:date': this.trPrChange.date,\n };\n const prevTrPrChildren: XMLElement[] = [];\n const prev = this.trPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_TrPr: cnfStyle → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n if (prev.cnfStyle) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': prev.cnfStyle }));\n }\n if (prev.gridBefore !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': prev.gridBefore }));\n }\n if (prev.gridAfter !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': prev.gridAfter }));\n }\n if (prev.wBefore !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': prev.wBefore,\n 'w:type': prev.wBeforeType || 'dxa',\n })\n );\n }\n if (prev.wAfter !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': prev.wAfter,\n 'w:type': prev.wAfterType || 'dxa',\n })\n );\n }\n if (prev.cantSplit) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n }\n if (prev.height !== undefined) {\n const heightAttrs: Record<string, string | number> = { 'w:val': prev.height };\n if (prev.heightRule) heightAttrs['w:hRule'] = prev.heightRule;\n prevTrPrChildren.push(XMLBuilder.wSelf('trHeight', heightAttrs));\n }\n if (prev.isHeader) {\n prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n }\n if (prev.cellSpacing !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': prev.cellSpacing,\n 'w:type': prev.cellSpacingType || 'dxa',\n })\n );\n }\n if (prev.justification) {\n const jcPrevMap: Record<string, string> = { start: 'left', end: 'right' };\n prevTrPrChildren.push(\n XMLBuilder.wSelf('jc', { 'w:val': jcPrevMap[prev.justification] || prev.justification })\n );\n }\n if (prev.hidden) {\n prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));\n }\n }\n const prevTrPr = XMLBuilder.w('trPr', undefined, prevTrPrChildren);\n trPrChildren.push(XMLBuilder.w('trPrChange', changeAttrs, [prevTrPr]));\n }\n\n // Build row element\n const rowChildren: XMLElement[] = [];\n\n // Add row properties if there are any\n if (trPrChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('trPr', undefined, trPrChildren));\n }\n\n // Add table property exceptions (tblPrEx) if present\n if (this.formatting.tablePropertyExceptions) {\n const tblPrExChildren = this.buildTablePropertyExceptionsXML(\n this.formatting.tablePropertyExceptions\n );\n if (tblPrExChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('tblPrEx', undefined, tblPrExChildren));\n }\n }\n\n // Add all cells - each cell is independent\n // Note: gridSpan (columnSpan) means a single cell spans multiple columns in the grid,\n // it does NOT mean subsequent cells should be skipped. Each cell in the array\n // represents a distinct cell that should be output to the XML.\n for (const cell of this.cells) {\n rowChildren.push(cell.toXML());\n }\n\n return XMLBuilder.w('tr', undefined, rowChildren);\n }\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create\n * @param formatting - Row formatting\n * @returns New TableRow instance\n */\n static create(cellCount?: number, formatting?: RowFormatting): TableRow {\n return new TableRow(cellCount, formatting);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,cAAc;IAE7B,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAEzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAE3B,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;IAOpB,OAAO;IAuBP,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAQrD,QAAQ,IAAI,MAAM;IAQlB,SAAS,IAAI,MAAM;IASnB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IASxC,aAAa,IAAI,SAAS,EAAE;IAU5B,WAAW,CACT,UAAU,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,mBAAmB,CAAA;KAAE,EACxF,QAAQ,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,iBAAiB,CAAA;KAAE,GACnF,IAAI;IASP,WAAW,IAAI,aAAa,GAAG,SAAS;IASxC,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IASrC,SAAS,IAAI,WAAW,GAAG,SAAS;IAUpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IASnD,OAAO,IAAI,WAAW,GAAG,SAAS;IASlC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAS3C,UAAU,IAAI,gBAAgB,GAAG,SAAS;IAS1C,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IASzC,UAAU,IAAI,cAAc,GAAG,SAAS;IASxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,OAAO,IAAI,MAAM;IASjB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IASzC,cAAc,IAAI,MAAM;IASxB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS5B,UAAU,IAAI,OAAO;IASrB,KAAK,IAAI,UAAU;IAYnB,OAAO,CAAC,YAAY;IA6DpB,OAAO,CAAC,YAAY;IAwIpB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,UAAU;IAoIlB,OAAO,CAAC,oBAAoB;CAiC7B"}
1
+ {"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"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"}
@@ -440,16 +440,14 @@ class TextBox {
440
440
  name: 'w:txbxContent',
441
441
  children: [
442
442
  XMLBuilder_1.XMLBuilder.w('p', undefined, [
443
- XMLBuilder_1.XMLBuilder.w('r', undefined, [
444
- XMLBuilder_1.XMLBuilder.w('t', undefined, [''])
445
- ])
446
- ])
443
+ XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.w('t', undefined, [''])]),
444
+ ]),
447
445
  ],
448
446
  },
449
447
  ],
450
448
  };
451
449
  }
452
- const paragraphXml = this.paragraphs.map(p => p.toXML());
450
+ const paragraphXml = this.paragraphs.map((p) => p.toXML());
453
451
  return {
454
452
  name: 'wps:txbx',
455
453
  children: [