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":"TableCell.js","sourceRoot":"","sources":["../../src/elements/TableCell.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * TableCell - Represents a cell in a table\r\n */\r\n\r\nimport { formatDateForXml } from \"../utils/dateFormatting\";\r\nimport { XMLBuilder, XMLElement } from \"../xml/XMLBuilder\";\r\nimport { Paragraph, TextDirection } from \"./Paragraph\";\r\nimport { Revision } from \"./Revision\";\r\nimport {\r\n BorderStyle as CommonBorderStyle,\r\n BorderDefinition,\r\n FourSidedBorders,\r\n CellVerticalAlignment as CommonCellVerticalAlignment,\r\n ShadingConfig,\r\n ShadingPattern,\r\n buildShadingAttributes,\r\n WidthType,\r\n} from \"./CommonTypes\";\r\n\r\n// ============================================================================\r\n// RE-EXPORTED TYPES (for backward compatibility)\r\n// ============================================================================\r\n\r\n/**\r\n * Cell border style\r\n * @see CommonTypes.BorderStyle\r\n */\r\nexport type BorderStyle = CommonBorderStyle;\r\n\r\n/**\r\n * Cell border definition\r\n * @see CommonTypes.BorderDefinition\r\n */\r\nexport interface CellBorder {\r\n style?: BorderStyle;\r\n size?: number; // Size in eighths of a point\r\n color?: string; // Hex color without #\r\n}\r\n\r\n/**\r\n * Cell borders\r\n * @see CommonTypes.FourSidedBorders\r\n */\r\nexport interface CellBorders {\r\n top?: CellBorder;\r\n bottom?: CellBorder;\r\n left?: CellBorder;\r\n right?: CellBorder;\r\n /** Diagonal border from top-left to bottom-right per ECMA-376 Part 1 §17.4.84 */\r\n tl2br?: CellBorder;\r\n /** Diagonal border from top-right to bottom-left per ECMA-376 Part 1 §17.4.85 */\r\n tr2bl?: CellBorder;\r\n}\r\n\r\n/**\r\n * Cell shading/background\r\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\r\n */\r\nexport type CellShading = ShadingConfig;\r\n\r\n/**\r\n * Vertical alignment in cell\r\n * @see CommonTypes.CellVerticalAlignment\r\n */\r\nexport type CellVerticalAlignment = CommonCellVerticalAlignment;\r\n\r\n/**\r\n * Cell margins (spacing inside cell borders)\r\n * Per ECMA-376 Part 1 §17.4.43\r\n */\r\nexport interface CellMargins {\r\n top?: number; // Margin in twips\r\n bottom?: number; // Margin in twips\r\n left?: number; // Margin in twips\r\n right?: number; // Margin in twips\r\n}\r\n\r\n/**\r\n * Cell width type\r\n * Per ECMA-376 Part 1 §17.18.87\r\n */\r\nexport type CellWidthType = \"auto\" | \"dxa\" | \"pct\";\r\n\r\n/**\r\n * Vertical merge type for cells\r\n * Per ECMA-376 Part 1 §17.4.85\r\n */\r\nexport type VerticalMerge = \"restart\" | \"continue\";\r\n\r\n/**\r\n * Cell formatting options\r\n */\r\nexport interface CellFormatting {\r\n width?: number; // Width in twips\r\n widthType?: CellWidthType; // Width type (auto, dxa, pct)\r\n borders?: CellBorders;\r\n shading?: CellShading;\r\n verticalAlignment?: CellVerticalAlignment;\r\n columnSpan?: number; // Number of columns to span (gridSpan)\r\n rowSpan?: number; // Number of rows to span (gridSpan)\r\n margins?: CellMargins; // Cell margins (spacing inside borders)\r\n textDirection?: TextDirection; // Text flow direction\r\n fitText?: boolean; // Fit text to cell width\r\n noWrap?: boolean; // Prevent text wrapping\r\n hideMark?: boolean; // Hide end-of-cell mark\r\n cnfStyle?: string; // Conditional formatting style (14-char binary string)\r\n vMerge?: VerticalMerge; // Vertical cell merge\r\n hMerge?: 'restart' | 'continue'; // Legacy horizontal merge (w:hMerge) per ECMA-376 Part 1 §17.4.22\r\n /** Cell headers attribute for accessibility per ECMA-376 Part 1 §17.4.26 */\r\n headers?: string;\r\n}\r\n\r\n/**\r\n * Raw nested content stored as XML to preserve nested tables/SDTs\r\n * Position indicates after which paragraph index the content appears\r\n */\r\nexport interface RawNestedContent {\r\n position: number; // Content appears after this paragraph index\r\n xml: string; // Raw XML content\r\n type: \"table\" | \"sdt\"; // Type of nested content\r\n}\r\n\r\n/**\r\n * Table cell property change tracking (w:tcPrChange)\r\n * Per ECMA-376 Part 1 §17.13.5.37\r\n */\r\nexport interface TcPrChange {\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 cell\r\n */\r\nexport class TableCell {\r\n private paragraphs: Paragraph[] = [];\r\n private formatting: CellFormatting;\r\n /** Raw nested content (tables, SDTs) stored as XML for passthrough */\r\n private rawNestedContent: RawNestedContent[] = [];\r\n /** Parent row reference (if cell is inside a table row) */\r\n private _parentRow?: import('./TableRow').TableRow;\r\n /** Table cell revision (w:cellIns, w:cellDel, w:cellMerge) per ECMA-376 Part 1 §17.13.5.4-5.6 */\r\n private cellRevision?: Revision;\r\n /** Tracking context for automatic change tracking */\r\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\r\n /** Table cell property change tracking (w:tcPrChange) */\r\n private tcPrChange?: TcPrChange;\r\n\r\n /**\r\n * Creates a new TableCell\r\n * @param formatting - Cell formatting options\r\n */\r\n constructor(formatting: CellFormatting = {}) {\r\n this.formatting = formatting;\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 cell property change tracking info\r\n * @returns tcPrChange or undefined\r\n */\r\n getTcPrChange(): TcPrChange | undefined {\r\n return this.tcPrChange;\r\n }\r\n\r\n /**\r\n * Sets the table cell property change tracking info\r\n * @param change - Property change info or undefined to clear\r\n */\r\n setTcPrChange(change: TcPrChange | undefined): void {\r\n this.tcPrChange = change;\r\n }\r\n\r\n /**\r\n * Clears the table cell property change tracking\r\n */\r\n clearTcPrChange(): void {\r\n this.tcPrChange = undefined;\r\n }\r\n\r\n /**\r\n * Adds a paragraph to the cell\r\n * @param paragraph - Paragraph to add\r\n * @returns This cell for chaining\r\n */\r\n addParagraph(paragraph: Paragraph): this {\r\n this.paragraphs.push(paragraph);\r\n paragraph._setParentCell(this);\r\n // Propagate StylesManager from table if available\r\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\r\n if (stylesManager) {\r\n paragraph._setStylesManager(stylesManager);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Creates and adds a new paragraph with text\r\n * @param text - Text content\r\n * @returns The created paragraph\r\n */\r\n createParagraph(text?: string): Paragraph {\r\n const para = new Paragraph();\r\n if (text) {\r\n para.addText(text);\r\n }\r\n this.paragraphs.push(para);\r\n para._setParentCell(this);\r\n // Propagate StylesManager from table if available\r\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\r\n if (stylesManager) {\r\n para._setStylesManager(stylesManager);\r\n }\r\n return para;\r\n }\r\n\r\n /**\r\n * Gets all paragraphs in the cell\r\n * @returns Array of paragraphs\r\n */\r\n getParagraphs(): Paragraph[] {\r\n return [...this.paragraphs];\r\n }\r\n\r\n /**\r\n * Removes a paragraph at the specified index\r\n * @param index - Index of paragraph to remove\r\n * @returns True if removed, false if index out of bounds\r\n */\r\n removeParagraph(index: number): boolean {\r\n if (index < 0 || index >= this.paragraphs.length) {\r\n return false;\r\n }\r\n\r\n // When tracking enabled, wrap content in w:del instead of removing\r\n if (this.trackingContext?.isEnabled()) {\r\n const paragraph = this.paragraphs[index]!;\r\n const runs = paragraph.getRuns();\r\n if (runs.length > 0) {\r\n const author = this.trackingContext.getAuthor();\r\n const deletion = Revision.createDeletion(author, runs);\r\n this.trackingContext.getRevisionManager().register(deletion);\r\n paragraph.addRevision(deletion);\r\n }\r\n return true;\r\n }\r\n\r\n const removed = this.paragraphs.splice(index, 1);\r\n const removedPara = removed[0];\r\n if (removedPara) {\r\n removedPara._setParentCell(undefined);\r\n }\r\n\r\n // Update raw nested content positions\r\n // Any nested content positioned AFTER the removed paragraph needs its position decremented\r\n // This maintains correct relative positioning for nested tables, SDTs, etc.\r\n for (const item of this.rawNestedContent) {\r\n if (item.position > index) {\r\n item.position--;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Adds a paragraph at the specified index\r\n * @param index - Index to insert at\r\n * @param paragraph - Paragraph to add\r\n * @returns This cell for chaining\r\n */\r\n addParagraphAt(index: number, paragraph: Paragraph): this {\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n\r\n // Determine actual insertion index\r\n const actualIndex = index >= this.paragraphs.length ? this.paragraphs.length : index;\r\n\r\n if (index >= this.paragraphs.length) {\r\n this.paragraphs.push(paragraph);\r\n } else {\r\n this.paragraphs.splice(index, 0, paragraph);\r\n }\r\n\r\n // Update raw nested content positions\r\n // Any nested content positioned AT OR AFTER the insertion point needs its position incremented\r\n // This maintains correct relative positioning for nested tables, SDTs, etc.\r\n for (const item of this.rawNestedContent) {\r\n if (item.position >= actualIndex) {\r\n item.position++;\r\n }\r\n }\r\n\r\n paragraph._setParentCell(this);\r\n // Propagate StylesManager from table if available\r\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\r\n if (stylesManager) {\r\n paragraph._setStylesManager(stylesManager);\r\n }\r\n\r\n // When tracking enabled, wrap paragraph content in w:ins revision\r\n if (this.trackingContext?.isEnabled()) {\r\n const runs = paragraph.getRuns();\r\n if (runs.length > 0) {\r\n const author = this.trackingContext.getAuthor();\r\n const insertion = Revision.createInsertion(author, runs);\r\n this.trackingContext.getRevisionManager().register(insertion);\r\n paragraph.addRevision(insertion);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the text content of all paragraphs\r\n * @returns Combined text\r\n */\r\n getText(): string {\r\n return this.paragraphs.map((p) => p.getText()).join(\"\\n\");\r\n }\r\n\r\n /**\r\n * Gets all fields from paragraphs in this cell\r\n *\r\n * Collects all Field and ComplexField instances from every paragraph\r\n * in the table cell.\r\n *\r\n * @returns Array of fields (Field and ComplexField instances)\r\n *\r\n * @example\r\n * ```typescript\r\n * const cell = table.getCell(0, 0);\r\n * const fields = cell?.getFields() || [];\r\n * console.log(`Cell has ${fields.length} fields`);\r\n * ```\r\n */\r\n getFields(): (import(\"./Field\").Field | import(\"./Field\").ComplexField)[] {\r\n const fields: (import(\"./Field\").Field | import(\"./Field\").ComplexField)[] = [];\r\n for (const para of this.paragraphs) {\r\n fields.push(...para.getFields());\r\n }\r\n return fields;\r\n }\r\n\r\n /**\r\n * Finds fields matching a predicate function\r\n *\r\n * Searches through all fields in the cell and returns those matching\r\n * the specified criteria.\r\n *\r\n * @param predicate - Function to test each field\r\n * @returns Array of matching fields\r\n *\r\n * @example\r\n * ```typescript\r\n * // Find all PAGE fields\r\n * const pageFields = cell.findFields(f =>\r\n * f.getInstruction().startsWith('PAGE')\r\n * );\r\n *\r\n * // Find fields with specific switches\r\n * const mergeFields = cell.findFields(f =>\r\n * f.getInstruction().includes('MERGEFIELD')\r\n * );\r\n * ```\r\n */\r\n findFields(\r\n predicate: (\r\n field: import(\"./Field\").Field | import(\"./Field\").ComplexField\r\n ) => boolean\r\n ): (import(\"./Field\").Field | import(\"./Field\").ComplexField)[] {\r\n return this.getFields().filter(predicate);\r\n }\r\n\r\n /**\r\n * Removes all fields from paragraphs in this cell\r\n *\r\n * Iterates through each paragraph and removes all fields,\r\n * preserving text content.\r\n *\r\n * @returns Count of fields removed\r\n *\r\n * @example\r\n * ```typescript\r\n * const count = cell.removeAllFields();\r\n * console.log(`Removed ${count} fields from cell`);\r\n * ```\r\n */\r\n removeAllFields(): number {\r\n let count = 0;\r\n for (const para of this.paragraphs) {\r\n count += para.removeAllFields();\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Sets cell width\r\n * @param twips - Width in twips\r\n * @returns This cell for chaining\r\n */\r\n setWidth(twips: number): this {\r\n const prev = this.formatting.width;\r\n this.formatting.width = twips;\r\n if (this.trackingContext?.isEnabled() && prev !== twips) {\r\n this.trackingContext.trackTableChange(this, 'width', prev, twips);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets cell borders\r\n * @param borders - Border definitions\r\n * @returns This cell for chaining\r\n */\r\n setBorders(borders: CellBorders): this {\r\n const prev = this.formatting.borders;\r\n this.formatting.borders = borders;\r\n if (this.trackingContext?.isEnabled() && prev !== borders) {\r\n this.trackingContext.trackTableChange(this, 'borders', prev, borders);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets cell shading/background\r\n * @param shading - Shading definition\r\n * @returns This cell for chaining\r\n */\r\n setShading(shading: CellShading): this {\r\n const prev = this.formatting.shading;\r\n this.formatting.shading = shading;\r\n if (this.trackingContext?.isEnabled() && prev !== shading) {\r\n this.trackingContext.trackTableChange(this, 'shading', prev, shading);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets vertical alignment\r\n * @param alignment - Vertical alignment\r\n * @returns This cell for chaining\r\n */\r\n setVerticalAlignment(alignment: CellVerticalAlignment): this {\r\n const prev = this.formatting.verticalAlignment;\r\n this.formatting.verticalAlignment = alignment;\r\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\r\n this.trackingContext.trackTableChange(this, 'verticalAlignment', prev, alignment);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets column span (merge cells horizontally)\r\n * @param span - Number of columns to span\r\n * @returns This cell for chaining\r\n */\r\n setColumnSpan(span: number): this {\r\n const prev = this.formatting.columnSpan;\r\n this.formatting.columnSpan = span;\r\n if (this.trackingContext?.isEnabled() && prev !== span) {\r\n this.trackingContext.trackTableChange(this, 'columnSpan', prev, span);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the number of columns this cell spans (gridSpan)\r\n * @returns Column span, defaults to 1 if not set\r\n */\r\n getColumnSpan(): number {\r\n return this.formatting.columnSpan || 1;\r\n }\r\n\r\n /**\r\n * Gets whether to fit text to cell width\r\n * @returns true if fit text is enabled, false otherwise\r\n */\r\n getFitText(): boolean {\r\n return this.formatting.fitText ?? false;\r\n }\r\n\r\n /**\r\n * Gets whether text wrapping is prevented in cell\r\n * @returns true if no-wrap is enabled, false otherwise\r\n */\r\n getNoWrap(): boolean {\r\n return this.formatting.noWrap ?? false;\r\n }\r\n\r\n /**\r\n * Gets whether the end-of-cell mark is hidden\r\n * @returns true if hidden, false otherwise\r\n */\r\n getHideMark(): boolean {\r\n return this.formatting.hideMark ?? false;\r\n }\r\n\r\n /**\r\n * Gets the conditional formatting style (cnfStyle) for this cell\r\n * @returns 14-character binary string or undefined if not set\r\n */\r\n getCnfStyle(): string | undefined {\r\n return this.formatting.cnfStyle;\r\n }\r\n\r\n /**\r\n * Validates a margin value\r\n * @param value - Margin value in twips\r\n * @param side - Name of the margin side (for error messages)\r\n * @throws {Error} If margin is negative or exceeds maximum\r\n * @private\r\n */\r\n private validateMargin(value: number | undefined, side: string): void {\r\n if (value === undefined) return;\r\n\r\n // Margins must be non-negative\r\n if (value < 0) {\r\n throw new Error(\r\n `Invalid ${side} margin: ${value} twips. Cell margins cannot be negative.`\r\n );\r\n }\r\n\r\n // Maximum reasonable margin (1 inch = 1440 twips)\r\n // Word typically allows up to several inches, but we set a reasonable limit\r\n const MAX_MARGIN_TWIPS = 14400; // 10 inches\r\n if (value > MAX_MARGIN_TWIPS) {\r\n throw new Error(\r\n `Invalid ${side} margin: ${value} twips exceeds maximum of ${MAX_MARGIN_TWIPS} twips (10 inches).`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Sets cell margins (spacing inside cell borders)\r\n * Per ECMA-376 Part 1 §17.4.43\r\n * @param margins - Margin definitions for each side\r\n * @returns This cell for chaining\r\n * @throws {Error} If any margin value is negative or exceeds maximum\r\n */\r\n setMargins(margins: CellMargins): this {\r\n // Validate each margin\r\n this.validateMargin(margins.top, \"top\");\r\n this.validateMargin(margins.bottom, \"bottom\");\r\n this.validateMargin(margins.left, \"left\");\r\n this.validateMargin(margins.right, \"right\");\r\n\r\n const prev = this.formatting.margins;\r\n this.formatting.margins = margins;\r\n if (this.trackingContext?.isEnabled() && prev !== margins) {\r\n this.trackingContext.trackTableChange(this, 'margins', prev, margins);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets all cell margins to the same value\r\n * @param margin - Margin in twips to apply to all sides\r\n * @returns This cell for chaining\r\n * @throws {Error} If margin value is negative or exceeds maximum\r\n */\r\n setAllMargins(margin: number): this {\r\n this.validateMargin(margin, \"all\");\r\n return this.setMargins({ top: margin, bottom: margin, left: margin, right: margin });\r\n }\r\n\r\n /**\r\n * Sets text direction for cell content\r\n * Per ECMA-376 Part 1 §17.4.72\r\n * @param direction - Text flow direction\r\n * - 'lrTb': Left-to-right, top-to-bottom (default)\r\n * - 'tbRl': Top-to-bottom, right-to-left (vertical text, East Asian)\r\n * - 'btLr': Bottom-to-top, left-to-right (vertical text)\r\n * - 'lrTbV': Left-to-right, top-to-bottom, vertical\r\n * - 'tbRlV': Top-to-bottom, right-to-left, vertical\r\n * - 'tbLrV': Top-to-bottom, left-to-right, vertical\r\n * @returns This cell for chaining\r\n */\r\n setTextDirection(direction: TextDirection): this {\r\n const prev = this.formatting.textDirection;\r\n this.formatting.textDirection = direction;\r\n if (this.trackingContext?.isEnabled() && prev !== direction) {\r\n this.trackingContext.trackTableChange(this, 'textDirection', prev, direction);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to fit text to cell width\r\n * Per ECMA-376 Part 1 §17.4.68\r\n * @param fit - Whether to expand/compress text to fit cell width\r\n * @returns This cell for chaining\r\n */\r\n setFitText(fit = true): this {\r\n const prev = this.formatting.fitText;\r\n this.formatting.fitText = fit;\r\n if (this.trackingContext?.isEnabled() && prev !== fit) {\r\n this.trackingContext.trackTableChange(this, 'fitText', prev, fit);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to prevent text wrapping in cell\r\n * Per ECMA-376 Part 1 §17.4.34\r\n * @param noWrap - Whether to prevent wrapping (default: true)\r\n * @returns This cell for chaining\r\n */\r\n setNoWrap(noWrap = true): this {\r\n const prev = this.formatting.noWrap;\r\n this.formatting.noWrap = noWrap;\r\n if (this.trackingContext?.isEnabled() && prev !== noWrap) {\r\n this.trackingContext.trackTableChange(this, 'noWrap', prev, noWrap);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets whether to hide the end-of-cell mark\r\n * Per ECMA-376 Part 1 §17.4.24\r\n * @param hide - Whether to ignore cell end mark in height calculations (default: true)\r\n * @returns This cell for chaining\r\n */\r\n setHideMark(hide = true): this {\r\n const prev = this.formatting.hideMark;\r\n this.formatting.hideMark = hide;\r\n if (this.trackingContext?.isEnabled() && prev !== hide) {\r\n this.trackingContext.trackTableChange(this, 'hideMark', prev, hide);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets conditional formatting style for this cell\r\n * Per ECMA-376 Part 1 §17.4.7\r\n * @param cnfStyle - 14-character binary string representing which conditional formats to apply\r\n * Each bit position controls a different conditional format (e.g., \"100000000000\" for first row)\r\n * @returns This cell for chaining\r\n */\r\n setConditionalStyle(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 cell width with type specification\r\n * Per ECMA-376 Part 1 §17.4.81\r\n * @param width - Width value\r\n * @param type - Width type: 'auto' (automatic), 'dxa' (twips), or 'pct' (percentage * 50)\r\n * @returns This cell for chaining\r\n */\r\n setWidthType(width: number, type: CellWidthType = \"dxa\"): this {\r\n const prevWidth = this.formatting.width;\r\n const prevType = this.formatting.widthType;\r\n this.formatting.width = width;\r\n this.formatting.widthType = type;\r\n if (this.trackingContext?.isEnabled()) {\r\n if (prevWidth !== width) {\r\n this.trackingContext.trackTableChange(this, 'width', prevWidth, width);\r\n }\r\n if (prevType !== type) {\r\n this.trackingContext.trackTableChange(this, 'widthType', prevType, type);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets vertical merge for this cell\r\n * Per ECMA-376 Part 1 §17.4.85\r\n * @param merge - Vertical merge type:\r\n * - 'restart': Start a new vertically merged region (top cell)\r\n * - 'continue': Continue the current vertically merged region (cells below)\r\n * @returns This cell for chaining\r\n */\r\n setVerticalMerge(merge: VerticalMerge | undefined): this {\r\n const prev = this.formatting.vMerge;\r\n this.formatting.vMerge = merge;\r\n if (this.trackingContext?.isEnabled() && prev !== merge) {\r\n this.trackingContext.trackTableChange(this, 'vMerge', prev, merge);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the legacy horizontal merge state per ECMA-376 Part 1 §17.4.22\r\n * @param merge - 'restart' to start a new merge region, 'continue' to continue, or undefined to clear\r\n * @returns This cell for chaining\r\n */\r\n setHorizontalMerge(merge: 'restart' | 'continue' | undefined): this {\r\n const prev = this.formatting.hMerge;\r\n this.formatting.hMerge = merge;\r\n if (this.trackingContext?.isEnabled() && prev !== merge) {\r\n this.trackingContext.trackTableChange(this, 'hMerge', prev, merge);\r\n }\r\n return this;\r\n }\r\n\r\n // ============================================================================\r\n // CELL REVISIONS (w:cellIns, w:cellDel, w:cellMerge)\r\n // ============================================================================\r\n\r\n /**\r\n * Sets the revision marker for this cell\r\n * Per ECMA-376 Part 1 §17.13.5.4-5.6\r\n *\r\n * Table cell revisions track structural changes to table cells:\r\n * - tableCellInsert (w:cellIns): Cell was inserted\r\n * - tableCellDelete (w:cellDel): Cell was deleted\r\n * - tableCellMerge (w:cellMerge): Cell merge/split operation\r\n *\r\n * @param revision - Revision marker for this cell\r\n * @returns This cell for chaining\r\n *\r\n * @example\r\n * ```typescript\r\n * const revision = new Revision({\r\n * id: 1,\r\n * author: 'Alice',\r\n * date: new Date(),\r\n * type: 'tableCellInsert',\r\n * content: [],\r\n * });\r\n * cell.setCellRevision(revision);\r\n * ```\r\n */\r\n setCellRevision(revision: Revision): this {\r\n this.cellRevision = revision;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the revision marker for this cell\r\n *\r\n * @returns The cell revision if present, undefined otherwise\r\n *\r\n * @example\r\n * ```typescript\r\n * const revision = cell.getCellRevision();\r\n * if (revision) {\r\n * console.log(`Cell ${revision.getType()} by ${revision.getAuthor()}`);\r\n * }\r\n * ```\r\n */\r\n getCellRevision(): Revision | undefined {\r\n return this.cellRevision;\r\n }\r\n\r\n /**\r\n * Checks if this cell has a revision marker\r\n *\r\n * @returns True if cell has a revision (insert, delete, or merge)\r\n */\r\n hasCellRevision(): boolean {\r\n return this.cellRevision !== undefined;\r\n }\r\n\r\n /**\r\n * Clears the revision marker for this cell\r\n *\r\n * @returns This cell for chaining\r\n */\r\n clearCellRevision(): this {\r\n this.cellRevision = undefined;\r\n return this;\r\n }\r\n\r\n // ============================================================================\r\n // CONVENIENCE METHODS (for easier paragraph manipulation)\r\n // ============================================================================\r\n\r\n /**\r\n * Sets text alignment for all paragraphs in the cell\r\n *\r\n * Applies the specified horizontal alignment to every paragraph\r\n * in this cell.\r\n *\r\n * @param alignment - Paragraph alignment (left, center, right, both)\r\n * @returns This cell for chaining\r\n *\r\n * @example\r\n * ```typescript\r\n * cell.setTextAlignment('center');\r\n * ```\r\n */\r\n setTextAlignment(alignment: import('./Paragraph').ParagraphAlignment): this {\r\n for (const para of this.paragraphs) {\r\n para.setAlignment(alignment);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the style for all paragraphs in the cell\r\n *\r\n * Applies the specified style ID to every paragraph in this cell.\r\n *\r\n * @param styleId - Style ID to apply\r\n * @returns This cell for chaining\r\n *\r\n * @example\r\n * ```typescript\r\n * cell.setAllParagraphsStyle('TableContent');\r\n * ```\r\n */\r\n setAllParagraphsStyle(styleId: string): this {\r\n for (const para of this.paragraphs) {\r\n para.setStyle(styleId);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets font for all runs in the cell\r\n *\r\n * Applies the specified font to every text run in every paragraph\r\n * in this cell.\r\n *\r\n * @param fontName - Font name to apply\r\n * @returns Number of runs modified\r\n *\r\n * @example\r\n * ```typescript\r\n * const count = cell.setAllRunsFont('Arial');\r\n * ```\r\n */\r\n setAllRunsFont(fontName: string): number {\r\n let count = 0;\r\n for (const para of this.paragraphs) {\r\n for (const run of para.getRuns()) {\r\n run.setFont(fontName);\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Sets font size for all runs in the cell\r\n *\r\n * Applies the specified font size to every text run in every paragraph\r\n * in this cell.\r\n *\r\n * @param size - Font size in half-points (e.g., 24 = 12pt)\r\n * @returns Number of runs modified\r\n *\r\n * @example\r\n * ```typescript\r\n * const count = cell.setAllRunsSize(22); // 11pt\r\n * ```\r\n */\r\n setAllRunsSize(size: number): number {\r\n let count = 0;\r\n for (const para of this.paragraphs) {\r\n for (const run of para.getRuns()) {\r\n run.setSize(size);\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Sets color for all runs in the cell\r\n *\r\n * Applies the specified color to every text run in every paragraph\r\n * in this cell.\r\n *\r\n * @param color - Hex color code (e.g., 'FF0000', '#0000FF')\r\n * @returns Number of runs modified\r\n *\r\n * @example\r\n * ```typescript\r\n * const count = cell.setAllRunsColor('000000'); // Black\r\n * ```\r\n */\r\n setAllRunsColor(color: string): number {\r\n let count = 0;\r\n for (const para of this.paragraphs) {\r\n for (const run of para.getRuns()) {\r\n run.setColor(color);\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n /**\r\n * Gets the cell formatting\r\n * @returns Cell formatting\r\n */\r\n getFormatting(): CellFormatting {\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 cell width in twips\r\n * @returns Width in twips or undefined if not set\r\n */\r\n getWidth(): number | undefined {\r\n return this.formatting.width;\r\n }\r\n\r\n /**\r\n * Gets the cell width type\r\n * @returns Width type ('auto', 'dxa', 'pct', 'nil') or undefined\r\n */\r\n getWidthType(): string | undefined {\r\n return this.formatting.widthType;\r\n }\r\n\r\n /**\r\n * Gets the vertical alignment of cell content\r\n * @returns Vertical alignment ('top', 'center', 'bottom') or undefined\r\n */\r\n getVerticalAlignment(): string | undefined {\r\n return this.formatting.verticalAlignment;\r\n }\r\n\r\n /**\r\n * Gets the vertical merge state\r\n * @returns Vertical merge state ('restart', 'continue') or undefined\r\n */\r\n getVerticalMerge(): VerticalMerge | undefined {\r\n return this.formatting.vMerge;\r\n }\r\n\r\n /**\r\n * Gets the legacy horizontal merge state\r\n * @returns Horizontal merge state ('restart', 'continue') or undefined\r\n */\r\n getHorizontalMerge(): 'restart' | 'continue' | undefined {\r\n return this.formatting.hMerge;\r\n }\r\n\r\n /**\r\n * Sets the cell headers attribute for accessibility\r\n * Links data cells to header cells per ECMA-376 Part 1 §17.4.26\r\n * @param headers - Space-separated list of header cell IDs\r\n * @returns This cell for chaining\r\n */\r\n setHeaders(headers: string): this {\r\n this.formatting.headers = headers;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the cell headers attribute\r\n * @returns Headers string or undefined\r\n */\r\n getHeaders(): string | undefined {\r\n return this.formatting.headers;\r\n }\r\n\r\n /**\r\n * Gets the cell margins\r\n * @returns Margins object with top, right, bottom, left or undefined\r\n */\r\n getMargins(): CellMargins | undefined {\r\n return this.formatting.margins;\r\n }\r\n\r\n /**\r\n * Gets the cell borders\r\n * @returns Borders object or undefined\r\n */\r\n getBorders(): CellBorders | undefined {\r\n return this.formatting.borders;\r\n }\r\n\r\n /**\r\n * Gets the cell shading/background\r\n * @returns Shading object or undefined\r\n */\r\n getShading(): CellShading | undefined {\r\n return this.formatting.shading;\r\n }\r\n\r\n /**\r\n * Gets the text direction for the cell\r\n * @returns Text direction or undefined\r\n */\r\n getTextDirection(): string | undefined {\r\n return this.formatting.textDirection;\r\n }\r\n\r\n // ============================================================================\r\n // RAW NESTED CONTENT (Tables, SDTs preserved as XML)\r\n // ============================================================================\r\n\r\n /**\r\n * Adds raw nested content (table or SDT) to the cell\r\n * Used during parsing to preserve nested tables that cannot be fully modeled\r\n * @param position - Paragraph index after which this content appears (0 = before first paragraph)\r\n * @param xml - Raw XML content\r\n * @param type - Type of content ('table' or 'sdt')\r\n * @returns This cell for chaining\r\n */\r\n addRawNestedContent(\r\n position: number,\r\n xml: string,\r\n type: \"table\" | \"sdt\" = \"table\"\r\n ): this {\r\n this.rawNestedContent.push({ position, xml, type });\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets all raw nested content in this cell\r\n * @returns Array of raw nested content items\r\n */\r\n getRawNestedContent(): RawNestedContent[] {\r\n return [...this.rawNestedContent];\r\n }\r\n\r\n /**\r\n * Checks if this cell has any nested tables\r\n * @returns True if cell contains nested tables stored as raw XML\r\n */\r\n hasNestedTables(): boolean {\r\n return this.rawNestedContent.some((c) => c.type === \"table\");\r\n }\r\n\r\n /**\r\n * Checks if this cell has any raw nested content (tables or SDTs)\r\n * @returns True if cell contains any raw nested content\r\n */\r\n hasRawNestedContent(): boolean {\r\n return this.rawNestedContent.length > 0;\r\n }\r\n\r\n /**\r\n * Clears all raw nested content from this cell\r\n * @returns This cell for chaining\r\n */\r\n clearRawNestedContent(): this {\r\n this.rawNestedContent = [];\r\n return this;\r\n }\r\n\r\n /**\r\n * Updates raw nested content at a specific index\r\n * Used for revision acceptance in nested tables\r\n * @param index - Index in the rawNestedContent array\r\n * @param xml - New XML content\r\n * @returns True if updated, false if index out of bounds\r\n */\r\n updateRawNestedContent(index: number, xml: string): boolean {\r\n if (index < 0 || index >= this.rawNestedContent.length) {\r\n return false;\r\n }\r\n const item = this.rawNestedContent[index];\r\n if (item) {\r\n item.xml = xml;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // ============================================================================\r\n // TRAILING BLANK PARAGRAPH REMOVAL\r\n // ============================================================================\r\n\r\n /**\r\n * Removes trailing blank paragraphs from this cell.\r\n * A trailing blank is a blank paragraph at the end of the cell, after all content.\r\n * This respects ECMA-376 requirement of at least one paragraph per cell.\r\n *\r\n * @param options.ignorePreserveFlag - If true, removes trailing blanks even if marked preserved (default: false)\r\n * @returns Number of paragraphs removed\r\n *\r\n * @example\r\n * ```typescript\r\n * // Remove trailing blanks, respecting preserve flags\r\n * const removed = cell.removeTrailingBlankParagraphs();\r\n *\r\n * // Remove all trailing blanks, ignoring preserve flags\r\n * const removed = cell.removeTrailingBlankParagraphs({ ignorePreserveFlag: true });\r\n * ```\r\n */\r\n removeTrailingBlankParagraphs(options?: { ignorePreserveFlag?: boolean }): number {\r\n let removed = 0;\r\n const ignorePreserve = options?.ignorePreserveFlag ?? false;\r\n\r\n // Work backwards from end of paragraphs array\r\n while (this.paragraphs.length > 1) {\r\n const lastIndex = this.paragraphs.length - 1;\r\n const lastPara = this.paragraphs[lastIndex];\r\n\r\n if (!lastPara) break;\r\n\r\n // Check if this is a blank paragraph\r\n const isBlank = this.isParaBlank(lastPara);\r\n\r\n // Stop if not blank\r\n if (!isBlank) break;\r\n\r\n // Stop if preserved and we're respecting preserve flags\r\n if (!ignorePreserve && lastPara.isPreserved()) break;\r\n\r\n // Check if there's raw nested content positioned after this paragraph\r\n // If so, we should NOT remove this trailing blank as it maintains structure\r\n const hasContentAfter = this.rawNestedContent.some(\r\n (item) => item.position >= lastIndex\r\n );\r\n if (hasContentAfter) break;\r\n\r\n this.removeParagraph(lastIndex);\r\n removed++;\r\n }\r\n\r\n return removed;\r\n }\r\n\r\n /**\r\n * Checks if a paragraph is blank (no meaningful content).\r\n * A paragraph is considered blank if it has no text, images, shapes, hyperlinks, fields,\r\n * cnfStyle (conditional formatting), or other structural elements.\r\n *\r\n * IMPORTANT: cnfStyle preservation is critical! When a paragraph with cnfStyle is removed,\r\n * Word may apply default table style conditional formatting to the cell, causing unexpected\r\n * shading changes. A paragraph with cnfStyle=\"000000000000\" (no conditionals) keeps the cell\r\n * from matching table style conditionals like firstRow or band1Horz.\r\n *\r\n * @private\r\n */\r\n private isParaBlank(para: Paragraph): boolean {\r\n // Check for text content\r\n const text = para.getText().trim();\r\n if (text !== \"\") return false;\r\n\r\n // Check for cnfStyle (conditional formatting) - critical for shading preservation\r\n // Even a \"blank\" cnfStyle like \"000000000000\" is meaningful as it prevents\r\n // the cell from inheriting table style conditional formatting\r\n const cnfStyle = para.getTableConditionalStyle();\r\n if (cnfStyle && cnfStyle !== \"\") {\r\n return false;\r\n }\r\n\r\n // Check all content items for non-text elements\r\n const content = para.getContent();\r\n for (const item of content) {\r\n // Cast to unknown first for safe duck-typing checks\r\n const itemAny = item as unknown as Record<string, unknown>;\r\n\r\n // ImageRun check - ImageRun has getImageElement method\r\n if (item && typeof itemAny.getImageElement === \"function\") {\r\n return false;\r\n }\r\n\r\n // Shape check - Shape has getShapeType method\r\n if (item && typeof itemAny.getShapeType === \"function\") {\r\n return false;\r\n }\r\n\r\n // TextBox check - TextBox has getTextContent method\r\n if (item && typeof itemAny.getTextContent === \"function\") {\r\n return false;\r\n }\r\n\r\n // Hyperlink check - Hyperlink has getUrl method\r\n if (item && typeof itemAny.getUrl === \"function\") {\r\n return false;\r\n }\r\n\r\n // Field check - Field has getInstruction method\r\n if (item && typeof itemAny.getInstruction === \"function\") {\r\n return false;\r\n }\r\n\r\n // Revision check - check if revision contains meaningful content\r\n if (item && typeof itemAny.getText === \"function\") {\r\n const itemText = (itemAny.getText as () => string)().trim();\r\n if (itemText !== \"\") return false;\r\n\r\n // Also check if revision contains non-text elements (hyperlinks, images, shapes, textboxes)\r\n if (typeof itemAny.getContent === \"function\") {\r\n const revContent = (itemAny.getContent as () => unknown[])();\r\n for (const revItem of revContent) {\r\n const revItemAny = revItem as Record<string, unknown>;\r\n // Check if revision content is a Hyperlink using duck typing (getUrl method)\r\n if (revItem && typeof revItemAny.getUrl === \"function\") {\r\n return false; // Revision contains hyperlink - not blank\r\n }\r\n // Check if revision content is an ImageRun (getImageElement method)\r\n if (revItem && typeof revItemAny.getImageElement === \"function\") {\r\n return false; // Revision contains image - not blank\r\n }\r\n // Check if revision content is a Shape (getShapeType method)\r\n if (revItem && typeof revItemAny.getShapeType === \"function\") {\r\n return false; // Revision contains shape - not blank\r\n }\r\n // Check if revision content is a TextBox (getTextContent method)\r\n if (revItem && typeof revItemAny.getTextContent === \"function\") {\r\n return false; // Revision contains textbox - not blank\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Check for bookmarks (they count as content)\r\n if (\r\n para.getBookmarksStart().length > 0 ||\r\n para.getBookmarksEnd().length > 0\r\n ) {\r\n return false;\r\n }\r\n\r\n // Check for comments (start/end markers)\r\n if (typeof para.getCommentsStart === \"function\") {\r\n const commentsStart = para.getCommentsStart();\r\n if (commentsStart && commentsStart.length > 0) {\r\n return false;\r\n }\r\n }\r\n if (typeof para.getCommentsEnd === \"function\") {\r\n const commentsEnd = para.getCommentsEnd();\r\n if (commentsEnd && commentsEnd.length > 0) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the parent row reference for this cell.\r\n * Called by TableRow when adding cells.\r\n * @internal\r\n */\r\n _setParentRow(row: import('./TableRow').TableRow | undefined): void {\r\n this._parentRow = row;\r\n }\r\n\r\n /**\r\n * Gets the parent row reference for this cell.\r\n * @internal\r\n */\r\n _getParentRow(): import('./TableRow').TableRow | undefined {\r\n return this._parentRow;\r\n }\r\n\r\n /**\r\n * Gets the table style ID by traversing up the parent chain.\r\n * @returns Table style ID or undefined if not in a table or no style set\r\n */\r\n getTableStyleId(): string | undefined {\r\n const row = this._parentRow;\r\n if (!row) return undefined;\r\n\r\n const table = row._getParentTable();\r\n if (!table) return undefined;\r\n\r\n return table.getFormatting().style;\r\n }\r\n\r\n /**\r\n * Converts the cell to WordprocessingML XML element\r\n * @returns XMLElement representing the cell\r\n */\r\n toXML(): XMLElement {\r\n const tcPrChildren: XMLElement[] = [];\r\n\r\n // tcPr children ordered per ECMA-376 CT_TcPr:\r\n // cnfStyle → tcW → gridSpan → hMerge → vMerge → tcBorders → shd → noWrap → tcMar →\r\n // textDirection → tcFitText → vAlign → hideMark →\r\n // cellIns/cellDel/cellMerge → tcPrChange\r\n\r\n // cnfStyle - conditional formatting style (MUST be first child per CT_TcPr)\r\n if (this.formatting.cnfStyle) {\r\n tcPrChildren.push(\r\n XMLBuilder.wSelf(\"cnfStyle\", { \"w:val\": this.formatting.cnfStyle })\r\n );\r\n }\r\n\r\n // tcW - cell width\r\n if (this.formatting.width !== undefined) {\r\n const widthAttrs: Record<string, string | number> = {\r\n \"w:w\": this.formatting.width,\r\n \"w:type\": this.formatting.widthType || \"dxa\",\r\n };\r\n tcPrChildren.push(XMLBuilder.wSelf(\"tcW\", widthAttrs));\r\n }\r\n\r\n // gridSpan - column span\r\n if (this.formatting.columnSpan && this.formatting.columnSpan > 1) {\r\n tcPrChildren.push(\r\n XMLBuilder.wSelf(\"gridSpan\", { \"w:val\": this.formatting.columnSpan })\r\n );\r\n }\r\n\r\n // hMerge - legacy horizontal merge\r\n if (this.formatting.hMerge) {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"hMerge\", { \"w:val\": this.formatting.hMerge }));\r\n }\r\n\r\n // vMerge - vertical merge\r\n // Per OOXML, <w:vMerge/> without val means \"continue\" (default).\r\n // Only \"restart\" needs an explicit w:val attribute.\r\n if (this.formatting.vMerge) {\r\n if (this.formatting.vMerge === \"restart\") {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"vMerge\", { \"w:val\": \"restart\" }));\r\n } else {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"vMerge\"));\r\n }\r\n }\r\n\r\n // tcBorders - cell borders\r\n if (this.formatting.borders) {\r\n const borderElements: XMLElement[] = [];\r\n const borders = this.formatting.borders;\r\n\r\n // Ordered per ECMA-376 CT_TcBorders: top, left, bottom, right, insideH, insideV, tl2br, tr2bl\r\n if (borders.top) {\r\n borderElements.push(XMLBuilder.createBorder(\"top\", borders.top));\r\n }\r\n if (borders.left) {\r\n borderElements.push(XMLBuilder.createBorder(\"left\", borders.left));\r\n }\r\n if (borders.bottom) {\r\n borderElements.push(XMLBuilder.createBorder(\"bottom\", borders.bottom));\r\n }\r\n if (borders.right) {\r\n borderElements.push(XMLBuilder.createBorder(\"right\", borders.right));\r\n }\r\n if (borders.tl2br) {\r\n borderElements.push(XMLBuilder.createBorder(\"tl2br\", borders.tl2br));\r\n }\r\n if (borders.tr2bl) {\r\n borderElements.push(XMLBuilder.createBorder(\"tr2bl\", borders.tr2bl));\r\n }\r\n\r\n if (borderElements.length > 0) {\r\n tcPrChildren.push(XMLBuilder.w(\"tcBorders\", undefined, borderElements));\r\n }\r\n }\r\n\r\n // shd - shading\r\n if (this.formatting.shading) {\r\n const shadingAttrs = buildShadingAttributes(this.formatting.shading);\r\n if (Object.keys(shadingAttrs).length > 0) {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"shd\", shadingAttrs));\r\n }\r\n }\r\n\r\n // noWrap\r\n if (this.formatting.noWrap) {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"noWrap\"));\r\n }\r\n\r\n // tcMar - cell margins (ordered per CT_TcMar: top, left, bottom, right)\r\n if (this.formatting.margins) {\r\n const margins = this.formatting.margins;\r\n const marginChildren: XMLElement[] = [];\r\n\r\n if (margins.top !== undefined) {\r\n marginChildren.push(\r\n XMLBuilder.wSelf(\"top\", {\r\n \"w:w\": margins.top.toString(),\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (margins.left !== undefined) {\r\n marginChildren.push(\r\n XMLBuilder.wSelf(\"left\", {\r\n \"w:w\": margins.left.toString(),\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (margins.bottom !== undefined) {\r\n marginChildren.push(\r\n XMLBuilder.wSelf(\"bottom\", {\r\n \"w:w\": margins.bottom.toString(),\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n if (margins.right !== undefined) {\r\n marginChildren.push(\r\n XMLBuilder.wSelf(\"right\", {\r\n \"w:w\": margins.right.toString(),\r\n \"w:type\": \"dxa\",\r\n })\r\n );\r\n }\r\n\r\n if (marginChildren.length > 0) {\r\n tcPrChildren.push(XMLBuilder.w(\"tcMar\", undefined, marginChildren));\r\n }\r\n }\r\n\r\n // textDirection\r\n if (this.formatting.textDirection) {\r\n tcPrChildren.push(\r\n XMLBuilder.wSelf(\"textDirection\", {\r\n \"w:val\": this.formatting.textDirection,\r\n })\r\n );\r\n }\r\n\r\n // tcFitText\r\n if (this.formatting.fitText) {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"tcFitText\"));\r\n }\r\n\r\n // vAlign - vertical alignment\r\n if (this.formatting.verticalAlignment) {\r\n tcPrChildren.push(\r\n XMLBuilder.wSelf(\"vAlign\", {\r\n \"w:val\": this.formatting.verticalAlignment,\r\n })\r\n );\r\n }\r\n\r\n // hideMark\r\n if (this.formatting.hideMark) {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"hideMark\"));\r\n }\r\n\r\n // Note: w:headers (cell headers for accessibility) is defined in ECMA-376 Part 1 §17.4.26\r\n // but is NOT included in the Transitional schema and fails OOXML validation.\r\n // The property is preserved in memory for reading but not generated in XML.\r\n\r\n // Add cell revision markers (w:cellIns, w:cellDel, w:cellMerge) per ECMA-376 Part 1 §17.13.5.4-5.6\r\n if (this.cellRevision) {\r\n const revType = this.cellRevision.getType();\r\n const attrs: Record<string, string | number> = {\r\n \"w:id\": this.cellRevision.getId(),\r\n \"w:author\": this.cellRevision.getAuthor(),\r\n \"w:date\": formatDateForXml(this.cellRevision.getDate()),\r\n };\r\n\r\n if (revType === \"tableCellInsert\") {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"cellIns\", attrs));\r\n } else if (revType === \"tableCellDelete\") {\r\n tcPrChildren.push(XMLBuilder.wSelf(\"cellDel\", attrs));\r\n } else if (revType === \"tableCellMerge\") {\r\n // Add vMerge and vMergeOrig attributes if present\r\n // ST_AnnotationVMerge: \"cont\" | \"rest\" (not \"continue\" / \"restart\")\r\n const mergeMap: Record<string, string> = { continue: \"cont\", restart: \"rest\" };\r\n const prevProps = this.cellRevision.getPreviousProperties();\r\n if (prevProps?.vMerge) {\r\n attrs[\"w:vMerge\"] = mergeMap[prevProps.vMerge] || prevProps.vMerge;\r\n }\r\n if (prevProps?.vMergeOrig) {\r\n attrs[\"w:vMergeOrig\"] = mergeMap[prevProps.vMergeOrig] || prevProps.vMergeOrig;\r\n }\r\n tcPrChildren.push(XMLBuilder.wSelf(\"cellMerge\", attrs));\r\n }\r\n }\r\n\r\n // Add table cell property change (w:tcPrChange) per ECMA-376 Part 1 §17.13.5.37\r\n // Must be last child of w:tcPr\r\n if (this.tcPrChange) {\r\n const changeAttrs: Record<string, string | number> = {\r\n \"w:id\": this.tcPrChange.id,\r\n \"w:author\": this.tcPrChange.author,\r\n \"w:date\": this.tcPrChange.date,\r\n };\r\n const prevTcPrChildren: XMLElement[] = [];\r\n const prev = this.tcPrChange.previousProperties;\r\n if (prev) {\r\n // Ordered per CT_TcPr: tcW → tcBorders → shd → noWrap → tcMar →\r\n // textDirection → tcFitText → vAlign → hideMark → cnfStyle\r\n if (prev.width !== undefined) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"tcW\", {\r\n \"w:w\": prev.width,\r\n \"w:type\": prev.widthType || \"dxa\",\r\n }));\r\n }\r\n if (prev.borders) {\r\n const borderElements: XMLElement[] = [];\r\n if (prev.borders.top) borderElements.push(XMLBuilder.createBorder(\"top\", prev.borders.top));\r\n if (prev.borders.left) borderElements.push(XMLBuilder.createBorder(\"left\", prev.borders.left));\r\n if (prev.borders.bottom) borderElements.push(XMLBuilder.createBorder(\"bottom\", prev.borders.bottom));\r\n if (prev.borders.right) borderElements.push(XMLBuilder.createBorder(\"right\", prev.borders.right));\r\n if (borderElements.length > 0) {\r\n prevTcPrChildren.push(XMLBuilder.w(\"tcBorders\", undefined, borderElements));\r\n }\r\n }\r\n if (prev.shading) {\r\n const shadingAttrs = buildShadingAttributes(prev.shading);\r\n if (Object.keys(shadingAttrs).length > 0) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"shd\", shadingAttrs));\r\n }\r\n }\r\n if (prev.noWrap) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"noWrap\"));\r\n }\r\n if (prev.margins) {\r\n const marginChildren: XMLElement[] = [];\r\n if (prev.margins.top !== undefined) {\r\n marginChildren.push(XMLBuilder.wSelf(\"top\", { \"w:w\": prev.margins.top.toString(), \"w:type\": \"dxa\" }));\r\n }\r\n if (prev.margins.left !== undefined) {\r\n marginChildren.push(XMLBuilder.wSelf(\"left\", { \"w:w\": prev.margins.left.toString(), \"w:type\": \"dxa\" }));\r\n }\r\n if (prev.margins.bottom !== undefined) {\r\n marginChildren.push(XMLBuilder.wSelf(\"bottom\", { \"w:w\": prev.margins.bottom.toString(), \"w:type\": \"dxa\" }));\r\n }\r\n if (prev.margins.right !== undefined) {\r\n marginChildren.push(XMLBuilder.wSelf(\"right\", { \"w:w\": prev.margins.right.toString(), \"w:type\": \"dxa\" }));\r\n }\r\n if (marginChildren.length > 0) {\r\n prevTcPrChildren.push(XMLBuilder.w(\"tcMar\", undefined, marginChildren));\r\n }\r\n }\r\n if (prev.textDirection) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"textDirection\", { \"w:val\": prev.textDirection }));\r\n }\r\n if (prev.fitText) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"tcFitText\"));\r\n }\r\n if (prev.verticalAlignment) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"vAlign\", { \"w:val\": prev.verticalAlignment }));\r\n }\r\n if (prev.hideMark) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"hideMark\"));\r\n }\r\n if (prev.cnfStyle) {\r\n prevTcPrChildren.push(XMLBuilder.wSelf(\"cnfStyle\", { \"w:val\": prev.cnfStyle }));\r\n }\r\n }\r\n const prevTcPr = prevTcPrChildren.length > 0\r\n ? XMLBuilder.w(\"tcPr\", undefined, prevTcPrChildren)\r\n : XMLBuilder.w(\"tcPr\", undefined, []);\r\n tcPrChildren.push(XMLBuilder.w(\"tcPrChange\", changeAttrs, [prevTcPr]));\r\n }\r\n\r\n // Build cell element\r\n const cellChildren: XMLElement[] = [];\r\n\r\n // Add cell properties if there are any\r\n if (tcPrChildren.length > 0) {\r\n cellChildren.push(XMLBuilder.w(\"tcPr\", undefined, tcPrChildren));\r\n }\r\n\r\n // Add paragraphs and raw nested content in correct order\r\n // Raw nested content (tables, SDTs) are interspersed with paragraphs\r\n if (this.paragraphs.length > 0 || this.rawNestedContent.length > 0) {\r\n // Sort raw content by position\r\n const sortedRaw = [...this.rawNestedContent].sort(\r\n (a, b) => a.position - b.position\r\n );\r\n let rawIndex = 0;\r\n\r\n for (let i = 0; i < this.paragraphs.length; i++) {\r\n // Insert any raw content that comes before this paragraph (position <= i)\r\n let rawItem = sortedRaw[rawIndex];\r\n while (rawIndex < sortedRaw.length && rawItem && rawItem.position <= i) {\r\n // Use __rawXml element for passthrough (supported by XMLBuilder)\r\n cellChildren.push({\r\n name: \"__rawXml\",\r\n rawXml: rawItem.xml,\r\n });\r\n rawIndex++;\r\n rawItem = sortedRaw[rawIndex];\r\n }\r\n const para = this.paragraphs[i];\r\n if (para) {\r\n cellChildren.push(para.toXML());\r\n }\r\n }\r\n\r\n // Insert any remaining raw content after all paragraphs\r\n while (rawIndex < sortedRaw.length) {\r\n const rawItem = sortedRaw[rawIndex];\r\n if (rawItem) {\r\n cellChildren.push({\r\n name: \"__rawXml\",\r\n rawXml: rawItem.xml,\r\n });\r\n }\r\n rawIndex++;\r\n }\r\n\r\n // If we only have raw content and no paragraphs, we need at least one empty paragraph\r\n // per ECMA-376 (table cell must contain at least one block-level element)\r\n if (this.paragraphs.length === 0) {\r\n cellChildren.push(new Paragraph().toXML());\r\n }\r\n } else {\r\n // Empty cell needs at least one empty paragraph\r\n cellChildren.push(new Paragraph().toXML());\r\n }\r\n\r\n return XMLBuilder.w(\"tc\", undefined, cellChildren);\r\n }\r\n\r\n /**\r\n * Creates a new TableCell\r\n * @param formatting - Cell formatting\r\n * @returns New TableCell instance\r\n */\r\n static create(formatting?: CellFormatting): TableCell {\r\n return new TableCell(formatting);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TableCell.js","sourceRoot":"","sources":["../../src/elements/TableCell.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TableCell - Represents a cell in a table\n */\n\nimport { formatDateForXml } from '../utils/dateFormatting';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { Paragraph, TextDirection } from './Paragraph';\nimport { Revision } from './Revision';\nimport {\n BorderStyle as CommonBorderStyle,\n BorderDefinition,\n FourSidedBorders,\n CellVerticalAlignment as CommonCellVerticalAlignment,\n ShadingConfig,\n ShadingPattern,\n buildShadingAttributes,\n WidthType,\n} from './CommonTypes';\n\n// ============================================================================\n// RE-EXPORTED TYPES (for backward compatibility)\n// ============================================================================\n\n/**\n * Cell border style\n * @see CommonTypes.BorderStyle\n */\nexport type BorderStyle = CommonBorderStyle;\n\n/**\n * Cell border definition\n * @see CommonTypes.BorderDefinition\n */\nexport interface CellBorder {\n style?: BorderStyle;\n size?: number; // Size in eighths of a point\n color?: string; // Hex color without #\n}\n\n/**\n * Cell borders\n * @see CommonTypes.FourSidedBorders\n */\nexport interface CellBorders {\n top?: CellBorder;\n bottom?: CellBorder;\n left?: CellBorder;\n right?: CellBorder;\n /** Diagonal border from top-left to bottom-right per ECMA-376 Part 1 §17.4.84 */\n tl2br?: CellBorder;\n /** Diagonal border from top-right to bottom-left per ECMA-376 Part 1 §17.4.85 */\n tr2bl?: CellBorder;\n}\n\n/**\n * Cell shading/background\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type CellShading = ShadingConfig;\n\n/**\n * Vertical alignment in cell\n * @see CommonTypes.CellVerticalAlignment\n */\nexport type CellVerticalAlignment = CommonCellVerticalAlignment;\n\n/**\n * Cell margins (spacing inside cell borders)\n * Per ECMA-376 Part 1 §17.4.43\n */\nexport interface CellMargins {\n top?: number; // Margin in twips\n bottom?: number; // Margin in twips\n left?: number; // Margin in twips\n right?: number; // Margin in twips\n}\n\n/**\n * Cell width type\n * Per ECMA-376 Part 1 §17.18.87\n */\nexport type CellWidthType = 'auto' | 'dxa' | 'pct';\n\n/**\n * Vertical merge type for cells\n * Per ECMA-376 Part 1 §17.4.85\n */\nexport type VerticalMerge = 'restart' | 'continue';\n\n/**\n * Cell formatting options\n */\nexport interface CellFormatting {\n width?: number; // Width in twips\n widthType?: CellWidthType; // Width type (auto, dxa, pct)\n borders?: CellBorders;\n shading?: CellShading;\n verticalAlignment?: CellVerticalAlignment;\n columnSpan?: number; // Number of columns to span (gridSpan)\n rowSpan?: number; // Number of rows to span (gridSpan)\n margins?: CellMargins; // Cell margins (spacing inside borders)\n textDirection?: TextDirection; // Text flow direction\n fitText?: boolean; // Fit text to cell width\n noWrap?: boolean; // Prevent text wrapping\n hideMark?: boolean; // Hide end-of-cell mark\n cnfStyle?: string; // Conditional formatting style (14-char binary string)\n vMerge?: VerticalMerge; // Vertical cell merge\n hMerge?: 'restart' | 'continue'; // Legacy horizontal merge (w:hMerge) per ECMA-376 Part 1 §17.4.22\n /** Cell headers attribute for accessibility per ECMA-376 Part 1 §17.4.26 */\n headers?: string;\n}\n\n/**\n * Raw nested content stored as XML to preserve nested tables/SDTs\n * Position indicates after which paragraph index the content appears\n */\nexport interface RawNestedContent {\n position: number; // Content appears after this paragraph index\n xml: string; // Raw XML content\n type: 'table' | 'sdt'; // Type of nested content\n}\n\n/**\n * Table cell property change tracking (w:tcPrChange)\n * Per ECMA-376 Part 1 §17.13.5.37\n */\nexport interface TcPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\n/**\n * Represents a table cell\n */\nexport class TableCell {\n private paragraphs: Paragraph[] = [];\n private formatting: CellFormatting;\n /** Raw nested content (tables, SDTs) stored as XML for passthrough */\n private rawNestedContent: RawNestedContent[] = [];\n /** Parent row reference (if cell is inside a table row) */\n private _parentRow?: import('./TableRow').TableRow;\n /** Table cell revision (w:cellIns, w:cellDel, w:cellMerge) per ECMA-376 Part 1 §17.13.5.4-5.6 */\n private cellRevision?: Revision;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\n /** Table cell property change tracking (w:tcPrChange) */\n private tcPrChange?: TcPrChange;\n\n /**\n * Creates a new TableCell\n * @param formatting - Cell formatting options\n */\n constructor(formatting: CellFormatting = {}) {\n this.formatting = formatting;\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 cell property change tracking info\n * @returns tcPrChange or undefined\n */\n getTcPrChange(): TcPrChange | undefined {\n return this.tcPrChange;\n }\n\n /**\n * Sets the table cell property change tracking info\n * @param change - Property change info or undefined to clear\n */\n setTcPrChange(change: TcPrChange | undefined): void {\n this.tcPrChange = change;\n }\n\n /**\n * Clears the table cell property change tracking\n */\n clearTcPrChange(): void {\n this.tcPrChange = undefined;\n }\n\n /**\n * Adds a paragraph to the cell\n * @param paragraph - Paragraph to add\n * @returns This cell for chaining\n */\n addParagraph(paragraph: Paragraph): this {\n this.paragraphs.push(paragraph);\n paragraph._setParentCell(this);\n // Propagate StylesManager from table if available\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\n if (stylesManager) {\n paragraph._setStylesManager(stylesManager);\n }\n return this;\n }\n\n /**\n * Creates and adds a new paragraph with text\n * @param text - Text content\n * @returns The created paragraph\n */\n createParagraph(text?: string): Paragraph {\n const para = new Paragraph();\n if (text) {\n para.addText(text);\n }\n this.paragraphs.push(para);\n para._setParentCell(this);\n // Propagate StylesManager from table if available\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\n if (stylesManager) {\n para._setStylesManager(stylesManager);\n }\n return para;\n }\n\n /**\n * Gets all paragraphs in the cell\n * @returns Array of paragraphs\n */\n getParagraphs(): Paragraph[] {\n return [...this.paragraphs];\n }\n\n /**\n * Removes a paragraph at the specified index\n * @param index - Index of paragraph to remove\n * @returns True if removed, false if index out of bounds\n */\n removeParagraph(index: number): boolean {\n if (index < 0 || index >= this.paragraphs.length) {\n return false;\n }\n\n // When tracking enabled, wrap content in w:del instead of removing\n if (this.trackingContext?.isEnabled()) {\n const paragraph = this.paragraphs[index]!;\n const runs = paragraph.getRuns();\n if (runs.length > 0) {\n const author = this.trackingContext.getAuthor();\n const deletion = Revision.createDeletion(author, runs);\n this.trackingContext.getRevisionManager().register(deletion);\n paragraph.addRevision(deletion);\n }\n return true;\n }\n\n const removed = this.paragraphs.splice(index, 1);\n const removedPara = removed[0];\n if (removedPara) {\n removedPara._setParentCell(undefined);\n }\n\n // Update raw nested content positions\n // Any nested content positioned AFTER the removed paragraph needs its position decremented\n // This maintains correct relative positioning for nested tables, SDTs, etc.\n for (const item of this.rawNestedContent) {\n if (item.position > index) {\n item.position--;\n }\n }\n\n return true;\n }\n\n /**\n * Adds a paragraph at the specified index\n * @param index - Index to insert at\n * @param paragraph - Paragraph to add\n * @returns This cell for chaining\n */\n addParagraphAt(index: number, paragraph: Paragraph): this {\n if (index < 0) {\n index = 0;\n }\n\n // Determine actual insertion index\n const actualIndex = index >= this.paragraphs.length ? this.paragraphs.length : index;\n\n if (index >= this.paragraphs.length) {\n this.paragraphs.push(paragraph);\n } else {\n this.paragraphs.splice(index, 0, paragraph);\n }\n\n // Update raw nested content positions\n // Any nested content positioned AT OR AFTER the insertion point needs its position incremented\n // This maintains correct relative positioning for nested tables, SDTs, etc.\n for (const item of this.rawNestedContent) {\n if (item.position >= actualIndex) {\n item.position++;\n }\n }\n\n paragraph._setParentCell(this);\n // Propagate StylesManager from table if available\n const stylesManager = this._parentRow?._getParentTable()?._getStylesManager();\n if (stylesManager) {\n paragraph._setStylesManager(stylesManager);\n }\n\n // When tracking enabled, wrap paragraph content in w:ins revision\n if (this.trackingContext?.isEnabled()) {\n const runs = paragraph.getRuns();\n if (runs.length > 0) {\n const author = this.trackingContext.getAuthor();\n const insertion = Revision.createInsertion(author, runs);\n this.trackingContext.getRevisionManager().register(insertion);\n paragraph.addRevision(insertion);\n }\n }\n\n return this;\n }\n\n /**\n * Gets the text content of all paragraphs\n * @returns Combined text\n */\n getText(): string {\n return this.paragraphs.map((p) => p.getText()).join('\\n');\n }\n\n /**\n * Gets all fields from paragraphs in this cell\n *\n * Collects all Field and ComplexField instances from every paragraph\n * in the table cell.\n *\n * @returns Array of fields (Field and ComplexField instances)\n *\n * @example\n * ```typescript\n * const cell = table.getCell(0, 0);\n * const fields = cell?.getFields() || [];\n * console.log(`Cell has ${fields.length} fields`);\n * ```\n */\n getFields(): (import('./Field').Field | import('./Field').ComplexField)[] {\n const fields: (import('./Field').Field | import('./Field').ComplexField)[] = [];\n for (const para of this.paragraphs) {\n fields.push(...para.getFields());\n }\n return fields;\n }\n\n /**\n * Finds fields matching a predicate function\n *\n * Searches through all fields in the cell and returns those matching\n * the specified criteria.\n *\n * @param predicate - Function to test each field\n * @returns Array of matching fields\n *\n * @example\n * ```typescript\n * // Find all PAGE fields\n * const pageFields = cell.findFields(f =>\n * f.getInstruction().startsWith('PAGE')\n * );\n *\n * // Find fields with specific switches\n * const mergeFields = cell.findFields(f =>\n * f.getInstruction().includes('MERGEFIELD')\n * );\n * ```\n */\n findFields(\n predicate: (field: import('./Field').Field | import('./Field').ComplexField) => boolean\n ): (import('./Field').Field | import('./Field').ComplexField)[] {\n return this.getFields().filter(predicate);\n }\n\n /**\n * Removes all fields from paragraphs in this cell\n *\n * Iterates through each paragraph and removes all fields,\n * preserving text content.\n *\n * @returns Count of fields removed\n *\n * @example\n * ```typescript\n * const count = cell.removeAllFields();\n * console.log(`Removed ${count} fields from cell`);\n * ```\n */\n removeAllFields(): number {\n let count = 0;\n for (const para of this.paragraphs) {\n count += para.removeAllFields();\n }\n return count;\n }\n\n /**\n * Sets cell width\n * @param twips - Width in twips\n * @returns This cell for chaining\n */\n setWidth(twips: number): this {\n const prev = this.formatting.width;\n this.formatting.width = twips;\n if (this.trackingContext?.isEnabled() && prev !== twips) {\n this.trackingContext.trackTableChange(this, 'width', prev, twips);\n }\n return this;\n }\n\n /**\n * Sets cell borders\n * @param borders - Border definitions\n * @returns This cell for chaining\n */\n setBorders(borders: CellBorders): this {\n const prev = this.formatting.borders;\n this.formatting.borders = borders;\n if (this.trackingContext?.isEnabled() && prev !== borders) {\n this.trackingContext.trackTableChange(this, 'borders', prev, borders);\n }\n return this;\n }\n\n /**\n * Sets cell shading/background\n * @param shading - Shading definition\n * @returns This cell for chaining\n */\n setShading(shading: CellShading): this {\n const prev = this.formatting.shading;\n this.formatting.shading = shading;\n if (this.trackingContext?.isEnabled() && prev !== shading) {\n this.trackingContext.trackTableChange(this, 'shading', prev, shading);\n }\n return this;\n }\n\n /**\n * Sets vertical alignment\n * @param alignment - Vertical alignment\n * @returns This cell for chaining\n */\n setVerticalAlignment(alignment: CellVerticalAlignment): this {\n const prev = this.formatting.verticalAlignment;\n this.formatting.verticalAlignment = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackTableChange(this, 'verticalAlignment', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets column span (merge cells horizontally)\n * @param span - Number of columns to span\n * @returns This cell for chaining\n */\n setColumnSpan(span: number): this {\n const prev = this.formatting.columnSpan;\n this.formatting.columnSpan = span;\n if (this.trackingContext?.isEnabled() && prev !== span) {\n this.trackingContext.trackTableChange(this, 'columnSpan', prev, span);\n }\n return this;\n }\n\n /**\n * Gets the number of columns this cell spans (gridSpan)\n * @returns Column span, defaults to 1 if not set\n */\n getColumnSpan(): number {\n return this.formatting.columnSpan || 1;\n }\n\n /**\n * Gets whether to fit text to cell width\n * @returns true if fit text is enabled, false otherwise\n */\n getFitText(): boolean {\n return this.formatting.fitText ?? false;\n }\n\n /**\n * Gets whether text wrapping is prevented in cell\n * @returns true if no-wrap is enabled, false otherwise\n */\n getNoWrap(): boolean {\n return this.formatting.noWrap ?? false;\n }\n\n /**\n * Gets whether the end-of-cell mark is hidden\n * @returns true if hidden, false otherwise\n */\n getHideMark(): boolean {\n return this.formatting.hideMark ?? false;\n }\n\n /**\n * Gets the conditional formatting style (cnfStyle) for this cell\n * @returns 14-character binary string or undefined if not set\n */\n getCnfStyle(): string | undefined {\n return this.formatting.cnfStyle;\n }\n\n /**\n * Validates a margin value\n * @param value - Margin value in twips\n * @param side - Name of the margin side (for error messages)\n * @throws {Error} If margin is negative or exceeds maximum\n * @private\n */\n private validateMargin(value: number | undefined, side: string): void {\n if (value === undefined) return;\n\n // Margins must be non-negative\n if (value < 0) {\n throw new Error(`Invalid ${side} margin: ${value} twips. Cell margins cannot be negative.`);\n }\n\n // Maximum reasonable margin (1 inch = 1440 twips)\n // Word typically allows up to several inches, but we set a reasonable limit\n const MAX_MARGIN_TWIPS = 14400; // 10 inches\n if (value > MAX_MARGIN_TWIPS) {\n throw new Error(\n `Invalid ${side} margin: ${value} twips exceeds maximum of ${MAX_MARGIN_TWIPS} twips (10 inches).`\n );\n }\n }\n\n /**\n * Sets cell margins (spacing inside cell borders)\n * Per ECMA-376 Part 1 §17.4.43\n * @param margins - Margin definitions for each side\n * @returns This cell for chaining\n * @throws {Error} If any margin value is negative or exceeds maximum\n */\n setMargins(margins: CellMargins): this {\n // Validate each margin\n this.validateMargin(margins.top, 'top');\n this.validateMargin(margins.bottom, 'bottom');\n this.validateMargin(margins.left, 'left');\n this.validateMargin(margins.right, 'right');\n\n const prev = this.formatting.margins;\n this.formatting.margins = margins;\n if (this.trackingContext?.isEnabled() && prev !== margins) {\n this.trackingContext.trackTableChange(this, 'margins', prev, margins);\n }\n return this;\n }\n\n /**\n * Sets all cell margins to the same value\n * @param margin - Margin in twips to apply to all sides\n * @returns This cell for chaining\n * @throws {Error} If margin value is negative or exceeds maximum\n */\n setAllMargins(margin: number): this {\n this.validateMargin(margin, 'all');\n return this.setMargins({ top: margin, bottom: margin, left: margin, right: margin });\n }\n\n /**\n * Sets text direction for cell content\n * Per ECMA-376 Part 1 §17.4.72\n * @param direction - Text flow direction\n * - 'lrTb': Left-to-right, top-to-bottom (default)\n * - 'tbRl': Top-to-bottom, right-to-left (vertical text, East Asian)\n * - 'btLr': Bottom-to-top, left-to-right (vertical text)\n * - 'lrTbV': Left-to-right, top-to-bottom, vertical\n * - 'tbRlV': Top-to-bottom, right-to-left, vertical\n * - 'tbLrV': Top-to-bottom, left-to-right, vertical\n * @returns This cell for chaining\n */\n setTextDirection(direction: TextDirection): this {\n const prev = this.formatting.textDirection;\n this.formatting.textDirection = direction;\n if (this.trackingContext?.isEnabled() && prev !== direction) {\n this.trackingContext.trackTableChange(this, 'textDirection', prev, direction);\n }\n return this;\n }\n\n /**\n * Sets whether to fit text to cell width\n * Per ECMA-376 Part 1 §17.4.68\n * @param fit - Whether to expand/compress text to fit cell width\n * @returns This cell for chaining\n */\n setFitText(fit = true): this {\n const prev = this.formatting.fitText;\n this.formatting.fitText = fit;\n if (this.trackingContext?.isEnabled() && prev !== fit) {\n this.trackingContext.trackTableChange(this, 'fitText', prev, fit);\n }\n return this;\n }\n\n /**\n * Sets whether to prevent text wrapping in cell\n * Per ECMA-376 Part 1 §17.4.34\n * @param noWrap - Whether to prevent wrapping (default: true)\n * @returns This cell for chaining\n */\n setNoWrap(noWrap = true): this {\n const prev = this.formatting.noWrap;\n this.formatting.noWrap = noWrap;\n if (this.trackingContext?.isEnabled() && prev !== noWrap) {\n this.trackingContext.trackTableChange(this, 'noWrap', prev, noWrap);\n }\n return this;\n }\n\n /**\n * Sets whether to hide the end-of-cell mark\n * Per ECMA-376 Part 1 §17.4.24\n * @param hide - Whether to ignore cell end mark in height calculations (default: true)\n * @returns This cell for chaining\n */\n setHideMark(hide = true): this {\n const prev = this.formatting.hideMark;\n this.formatting.hideMark = hide;\n if (this.trackingContext?.isEnabled() && prev !== hide) {\n this.trackingContext.trackTableChange(this, 'hideMark', prev, hide);\n }\n return this;\n }\n\n /**\n * Sets conditional formatting style for this cell\n * Per ECMA-376 Part 1 §17.4.7\n * @param cnfStyle - 14-character binary string representing which conditional formats to apply\n * Each bit position controls a different conditional format (e.g., \"100000000000\" for first row)\n * @returns This cell for chaining\n */\n setConditionalStyle(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 cell width with type specification\n * Per ECMA-376 Part 1 §17.4.81\n * @param width - Width value\n * @param type - Width type: 'auto' (automatic), 'dxa' (twips), or 'pct' (percentage * 50)\n * @returns This cell for chaining\n */\n setWidthType(width: number, type: CellWidthType = 'dxa'): this {\n const prevWidth = this.formatting.width;\n const prevType = this.formatting.widthType;\n this.formatting.width = width;\n this.formatting.widthType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'width', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'widthType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets vertical merge for this cell\n * Per ECMA-376 Part 1 §17.4.85\n * @param merge - Vertical merge type:\n * - 'restart': Start a new vertically merged region (top cell)\n * - 'continue': Continue the current vertically merged region (cells below)\n * @returns This cell for chaining\n */\n setVerticalMerge(merge: VerticalMerge | undefined): this {\n const prev = this.formatting.vMerge;\n this.formatting.vMerge = merge;\n if (this.trackingContext?.isEnabled() && prev !== merge) {\n this.trackingContext.trackTableChange(this, 'vMerge', prev, merge);\n }\n return this;\n }\n\n /**\n * Sets the legacy horizontal merge state per ECMA-376 Part 1 §17.4.22\n * @param merge - 'restart' to start a new merge region, 'continue' to continue, or undefined to clear\n * @returns This cell for chaining\n */\n setHorizontalMerge(merge: 'restart' | 'continue' | undefined): this {\n const prev = this.formatting.hMerge;\n this.formatting.hMerge = merge;\n if (this.trackingContext?.isEnabled() && prev !== merge) {\n this.trackingContext.trackTableChange(this, 'hMerge', prev, merge);\n }\n return this;\n }\n\n // ============================================================================\n // CELL REVISIONS (w:cellIns, w:cellDel, w:cellMerge)\n // ============================================================================\n\n /**\n * Sets the revision marker for this cell\n * Per ECMA-376 Part 1 §17.13.5.4-5.6\n *\n * Table cell revisions track structural changes to table cells:\n * - tableCellInsert (w:cellIns): Cell was inserted\n * - tableCellDelete (w:cellDel): Cell was deleted\n * - tableCellMerge (w:cellMerge): Cell merge/split operation\n *\n * @param revision - Revision marker for this cell\n * @returns This cell for chaining\n *\n * @example\n * ```typescript\n * const revision = new Revision({\n * id: 1,\n * author: 'Alice',\n * date: new Date(),\n * type: 'tableCellInsert',\n * content: [],\n * });\n * cell.setCellRevision(revision);\n * ```\n */\n setCellRevision(revision: Revision): this {\n this.cellRevision = revision;\n return this;\n }\n\n /**\n * Gets the revision marker for this cell\n *\n * @returns The cell revision if present, undefined otherwise\n *\n * @example\n * ```typescript\n * const revision = cell.getCellRevision();\n * if (revision) {\n * console.log(`Cell ${revision.getType()} by ${revision.getAuthor()}`);\n * }\n * ```\n */\n getCellRevision(): Revision | undefined {\n return this.cellRevision;\n }\n\n /**\n * Checks if this cell has a revision marker\n *\n * @returns True if cell has a revision (insert, delete, or merge)\n */\n hasCellRevision(): boolean {\n return this.cellRevision !== undefined;\n }\n\n /**\n * Clears the revision marker for this cell\n *\n * @returns This cell for chaining\n */\n clearCellRevision(): this {\n this.cellRevision = undefined;\n return this;\n }\n\n // ============================================================================\n // CONVENIENCE METHODS (for easier paragraph manipulation)\n // ============================================================================\n\n /**\n * Sets text alignment for all paragraphs in the cell\n *\n * Applies the specified horizontal alignment to every paragraph\n * in this cell.\n *\n * @param alignment - Paragraph alignment (left, center, right, both)\n * @returns This cell for chaining\n *\n * @example\n * ```typescript\n * cell.setTextAlignment('center');\n * ```\n */\n setTextAlignment(alignment: import('./Paragraph').ParagraphAlignment): this {\n for (const para of this.paragraphs) {\n para.setAlignment(alignment);\n }\n return this;\n }\n\n /**\n * Sets the style for all paragraphs in the cell\n *\n * Applies the specified style ID to every paragraph in this cell.\n *\n * @param styleId - Style ID to apply\n * @returns This cell for chaining\n *\n * @example\n * ```typescript\n * cell.setAllParagraphsStyle('TableContent');\n * ```\n */\n setAllParagraphsStyle(styleId: string): this {\n for (const para of this.paragraphs) {\n para.setStyle(styleId);\n }\n return this;\n }\n\n /**\n * Sets font for all runs in the cell\n *\n * Applies the specified font to every text run in every paragraph\n * in this cell.\n *\n * @param fontName - Font name to apply\n * @returns Number of runs modified\n *\n * @example\n * ```typescript\n * const count = cell.setAllRunsFont('Arial');\n * ```\n */\n setAllRunsFont(fontName: string): number {\n let count = 0;\n for (const para of this.paragraphs) {\n for (const run of para.getRuns()) {\n run.setFont(fontName);\n count++;\n }\n }\n return count;\n }\n\n /**\n * Sets font size for all runs in the cell\n *\n * Applies the specified font size to every text run in every paragraph\n * in this cell.\n *\n * @param size - Font size in half-points (e.g., 24 = 12pt)\n * @returns Number of runs modified\n *\n * @example\n * ```typescript\n * const count = cell.setAllRunsSize(22); // 11pt\n * ```\n */\n setAllRunsSize(size: number): number {\n let count = 0;\n for (const para of this.paragraphs) {\n for (const run of para.getRuns()) {\n run.setSize(size);\n count++;\n }\n }\n return count;\n }\n\n /**\n * Sets color for all runs in the cell\n *\n * Applies the specified color to every text run in every paragraph\n * in this cell.\n *\n * @param color - Hex color code (e.g., 'FF0000', '#0000FF')\n * @returns Number of runs modified\n *\n * @example\n * ```typescript\n * const count = cell.setAllRunsColor('000000'); // Black\n * ```\n */\n setAllRunsColor(color: string): number {\n let count = 0;\n for (const para of this.paragraphs) {\n for (const run of para.getRuns()) {\n run.setColor(color);\n count++;\n }\n }\n return count;\n }\n\n /**\n * Gets the cell formatting\n * @returns Cell formatting\n */\n getFormatting(): CellFormatting {\n return { ...this.formatting };\n }\n\n // ============================================================================\n // Individual Formatting Getters\n // ============================================================================\n\n /**\n * Gets the cell width in twips\n * @returns Width in twips or undefined if not set\n */\n getWidth(): number | undefined {\n return this.formatting.width;\n }\n\n /**\n * Gets the cell width type\n * @returns Width type ('auto', 'dxa', 'pct', 'nil') or undefined\n */\n getWidthType(): string | undefined {\n return this.formatting.widthType;\n }\n\n /**\n * Gets the vertical alignment of cell content\n * @returns Vertical alignment ('top', 'center', 'bottom') or undefined\n */\n getVerticalAlignment(): string | undefined {\n return this.formatting.verticalAlignment;\n }\n\n /**\n * Gets the vertical merge state\n * @returns Vertical merge state ('restart', 'continue') or undefined\n */\n getVerticalMerge(): VerticalMerge | undefined {\n return this.formatting.vMerge;\n }\n\n /**\n * Gets the legacy horizontal merge state\n * @returns Horizontal merge state ('restart', 'continue') or undefined\n */\n getHorizontalMerge(): 'restart' | 'continue' | undefined {\n return this.formatting.hMerge;\n }\n\n /**\n * Sets the cell headers attribute for accessibility\n * Links data cells to header cells per ECMA-376 Part 1 §17.4.26\n * @param headers - Space-separated list of header cell IDs\n * @returns This cell for chaining\n */\n setHeaders(headers: string): this {\n this.formatting.headers = headers;\n return this;\n }\n\n /**\n * Gets the cell headers attribute\n * @returns Headers string or undefined\n */\n getHeaders(): string | undefined {\n return this.formatting.headers;\n }\n\n /**\n * Gets the cell margins\n * @returns Margins object with top, right, bottom, left or undefined\n */\n getMargins(): CellMargins | undefined {\n return this.formatting.margins;\n }\n\n /**\n * Gets the cell borders\n * @returns Borders object or undefined\n */\n getBorders(): CellBorders | undefined {\n return this.formatting.borders;\n }\n\n /**\n * Gets the cell shading/background\n * @returns Shading object or undefined\n */\n getShading(): CellShading | undefined {\n return this.formatting.shading;\n }\n\n /**\n * Gets the text direction for the cell\n * @returns Text direction or undefined\n */\n getTextDirection(): string | undefined {\n return this.formatting.textDirection;\n }\n\n // ============================================================================\n // RAW NESTED CONTENT (Tables, SDTs preserved as XML)\n // ============================================================================\n\n /**\n * Adds raw nested content (table or SDT) to the cell\n * Used during parsing to preserve nested tables that cannot be fully modeled\n * @param position - Paragraph index after which this content appears (0 = before first paragraph)\n * @param xml - Raw XML content\n * @param type - Type of content ('table' or 'sdt')\n * @returns This cell for chaining\n */\n addRawNestedContent(position: number, xml: string, type: 'table' | 'sdt' = 'table'): this {\n this.rawNestedContent.push({ position, xml, type });\n return this;\n }\n\n /**\n * Gets all raw nested content in this cell\n * @returns Array of raw nested content items\n */\n getRawNestedContent(): RawNestedContent[] {\n return [...this.rawNestedContent];\n }\n\n /**\n * Checks if this cell has any nested tables\n * @returns True if cell contains nested tables stored as raw XML\n */\n hasNestedTables(): boolean {\n return this.rawNestedContent.some((c) => c.type === 'table');\n }\n\n /**\n * Checks if this cell has any raw nested content (tables or SDTs)\n * @returns True if cell contains any raw nested content\n */\n hasRawNestedContent(): boolean {\n return this.rawNestedContent.length > 0;\n }\n\n /**\n * Clears all raw nested content from this cell\n * @returns This cell for chaining\n */\n clearRawNestedContent(): this {\n this.rawNestedContent = [];\n return this;\n }\n\n /**\n * Updates raw nested content at a specific index\n * Used for revision acceptance in nested tables\n * @param index - Index in the rawNestedContent array\n * @param xml - New XML content\n * @returns True if updated, false if index out of bounds\n */\n updateRawNestedContent(index: number, xml: string): boolean {\n if (index < 0 || index >= this.rawNestedContent.length) {\n return false;\n }\n const item = this.rawNestedContent[index];\n if (item) {\n item.xml = xml;\n return true;\n }\n return false;\n }\n\n // ============================================================================\n // TRAILING BLANK PARAGRAPH REMOVAL\n // ============================================================================\n\n /**\n * Removes trailing blank paragraphs from this cell.\n * A trailing blank is a blank paragraph at the end of the cell, after all content.\n * This respects ECMA-376 requirement of at least one paragraph per cell.\n *\n * @param options.ignorePreserveFlag - If true, removes trailing blanks even if marked preserved (default: false)\n * @returns Number of paragraphs removed\n *\n * @example\n * ```typescript\n * // Remove trailing blanks, respecting preserve flags\n * const removed = cell.removeTrailingBlankParagraphs();\n *\n * // Remove all trailing blanks, ignoring preserve flags\n * const removed = cell.removeTrailingBlankParagraphs({ ignorePreserveFlag: true });\n * ```\n */\n removeTrailingBlankParagraphs(options?: { ignorePreserveFlag?: boolean }): number {\n let removed = 0;\n const ignorePreserve = options?.ignorePreserveFlag ?? false;\n\n // Work backwards from end of paragraphs array\n while (this.paragraphs.length > 1) {\n const lastIndex = this.paragraphs.length - 1;\n const lastPara = this.paragraphs[lastIndex];\n\n if (!lastPara) break;\n\n // Check if this is a blank paragraph\n const isBlank = this.isParaBlank(lastPara);\n\n // Stop if not blank\n if (!isBlank) break;\n\n // Stop if preserved and we're respecting preserve flags\n if (!ignorePreserve && lastPara.isPreserved()) break;\n\n // Check if there's raw nested content positioned after this paragraph\n // If so, we should NOT remove this trailing blank as it maintains structure\n const hasContentAfter = this.rawNestedContent.some((item) => item.position >= lastIndex);\n if (hasContentAfter) break;\n\n this.removeParagraph(lastIndex);\n removed++;\n }\n\n return removed;\n }\n\n /**\n * Checks if a paragraph is blank (no meaningful content).\n * A paragraph is considered blank if it has no text, images, shapes, hyperlinks, fields,\n * cnfStyle (conditional formatting), or other structural elements.\n *\n * IMPORTANT: cnfStyle preservation is critical! When a paragraph with cnfStyle is removed,\n * Word may apply default table style conditional formatting to the cell, causing unexpected\n * shading changes. A paragraph with cnfStyle=\"000000000000\" (no conditionals) keeps the cell\n * from matching table style conditionals like firstRow or band1Horz.\n *\n * @private\n */\n private isParaBlank(para: Paragraph): boolean {\n // Check for text content\n const text = para.getText().trim();\n if (text !== '') return false;\n\n // Check for cnfStyle (conditional formatting) - critical for shading preservation\n // Even a \"blank\" cnfStyle like \"000000000000\" is meaningful as it prevents\n // the cell from inheriting table style conditional formatting\n const cnfStyle = para.getTableConditionalStyle();\n if (cnfStyle && cnfStyle !== '') {\n return false;\n }\n\n // Check all content items for non-text elements\n const content = para.getContent();\n for (const item of content) {\n // Cast to unknown first for safe duck-typing checks\n const itemAny = item as unknown as Record<string, unknown>;\n\n // ImageRun check - ImageRun has getImageElement method\n if (item && typeof itemAny.getImageElement === 'function') {\n return false;\n }\n\n // Shape check - Shape has getShapeType method\n if (item && typeof itemAny.getShapeType === 'function') {\n return false;\n }\n\n // TextBox check - TextBox has getTextContent method\n if (item && typeof itemAny.getTextContent === 'function') {\n return false;\n }\n\n // Hyperlink check - Hyperlink has getUrl method\n if (item && typeof itemAny.getUrl === 'function') {\n return false;\n }\n\n // Field check - Field has getInstruction method\n if (item && typeof itemAny.getInstruction === 'function') {\n return false;\n }\n\n // Revision check - check if revision contains meaningful content\n if (item && typeof itemAny.getText === 'function') {\n const itemText = (itemAny.getText as () => string)().trim();\n if (itemText !== '') return false;\n\n // Also check if revision contains non-text elements (hyperlinks, images, shapes, textboxes)\n if (typeof itemAny.getContent === 'function') {\n const revContent = (itemAny.getContent as () => unknown[])();\n for (const revItem of revContent) {\n const revItemAny = revItem as Record<string, unknown>;\n // Check if revision content is a Hyperlink using duck typing (getUrl method)\n if (revItem && typeof revItemAny.getUrl === 'function') {\n return false; // Revision contains hyperlink - not blank\n }\n // Check if revision content is an ImageRun (getImageElement method)\n if (revItem && typeof revItemAny.getImageElement === 'function') {\n return false; // Revision contains image - not blank\n }\n // Check if revision content is a Shape (getShapeType method)\n if (revItem && typeof revItemAny.getShapeType === 'function') {\n return false; // Revision contains shape - not blank\n }\n // Check if revision content is a TextBox (getTextContent method)\n if (revItem && typeof revItemAny.getTextContent === 'function') {\n return false; // Revision contains textbox - not blank\n }\n }\n }\n }\n }\n\n // Check for bookmarks (they count as content)\n if (para.getBookmarksStart().length > 0 || para.getBookmarksEnd().length > 0) {\n return false;\n }\n\n // Check for comments (start/end markers)\n if (typeof para.getCommentsStart === 'function') {\n const commentsStart = para.getCommentsStart();\n if (commentsStart && commentsStart.length > 0) {\n return false;\n }\n }\n if (typeof para.getCommentsEnd === 'function') {\n const commentsEnd = para.getCommentsEnd();\n if (commentsEnd && commentsEnd.length > 0) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Sets the parent row reference for this cell.\n * Called by TableRow when adding cells.\n * @internal\n */\n _setParentRow(row: import('./TableRow').TableRow | undefined): void {\n this._parentRow = row;\n }\n\n /**\n * Gets the parent row reference for this cell.\n * @internal\n */\n _getParentRow(): import('./TableRow').TableRow | undefined {\n return this._parentRow;\n }\n\n /**\n * Gets the table style ID by traversing up the parent chain.\n * @returns Table style ID or undefined if not in a table or no style set\n */\n getTableStyleId(): string | undefined {\n const row = this._parentRow;\n if (!row) return undefined;\n\n const table = row._getParentTable();\n if (!table) return undefined;\n\n return table.getFormatting().style;\n }\n\n /**\n * Converts the cell to WordprocessingML XML element\n * @returns XMLElement representing the cell\n */\n toXML(): XMLElement {\n const tcPrChildren: XMLElement[] = [];\n\n // tcPr children ordered per ECMA-376 CT_TcPr:\n // cnfStyle → tcW → gridSpan → hMerge → vMerge → tcBorders → shd → noWrap → tcMar →\n // textDirection → tcFitText → vAlign → hideMark →\n // cellIns/cellDel/cellMerge → tcPrChange\n\n // cnfStyle - conditional formatting style (MUST be first child per CT_TcPr)\n if (this.formatting.cnfStyle) {\n tcPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': this.formatting.cnfStyle }));\n }\n\n // tcW - cell width\n if (this.formatting.width !== undefined) {\n const widthAttrs: Record<string, string | number> = {\n 'w:w': this.formatting.width,\n 'w:type': this.formatting.widthType || 'dxa',\n };\n tcPrChildren.push(XMLBuilder.wSelf('tcW', widthAttrs));\n }\n\n // gridSpan - column span\n if (this.formatting.columnSpan && this.formatting.columnSpan > 1) {\n tcPrChildren.push(XMLBuilder.wSelf('gridSpan', { 'w:val': this.formatting.columnSpan }));\n }\n\n // hMerge - legacy horizontal merge\n if (this.formatting.hMerge) {\n tcPrChildren.push(XMLBuilder.wSelf('hMerge', { 'w:val': this.formatting.hMerge }));\n }\n\n // vMerge - vertical merge\n // Per OOXML, <w:vMerge/> without val means \"continue\" (default).\n // Only \"restart\" needs an explicit w:val attribute.\n if (this.formatting.vMerge) {\n if (this.formatting.vMerge === 'restart') {\n tcPrChildren.push(XMLBuilder.wSelf('vMerge', { 'w:val': 'restart' }));\n } else {\n tcPrChildren.push(XMLBuilder.wSelf('vMerge'));\n }\n }\n\n // tcBorders - cell borders\n if (this.formatting.borders) {\n const borderElements: XMLElement[] = [];\n const borders = this.formatting.borders;\n\n // Ordered per ECMA-376 CT_TcBorders: top, left, bottom, right, insideH, insideV, tl2br, tr2bl\n if (borders.top) {\n borderElements.push(XMLBuilder.createBorder('top', borders.top));\n }\n if (borders.left) {\n borderElements.push(XMLBuilder.createBorder('left', borders.left));\n }\n if (borders.bottom) {\n borderElements.push(XMLBuilder.createBorder('bottom', borders.bottom));\n }\n if (borders.right) {\n borderElements.push(XMLBuilder.createBorder('right', borders.right));\n }\n if (borders.tl2br) {\n borderElements.push(XMLBuilder.createBorder('tl2br', borders.tl2br));\n }\n if (borders.tr2bl) {\n borderElements.push(XMLBuilder.createBorder('tr2bl', borders.tr2bl));\n }\n\n if (borderElements.length > 0) {\n tcPrChildren.push(XMLBuilder.w('tcBorders', undefined, borderElements));\n }\n }\n\n // shd - shading\n if (this.formatting.shading) {\n const shadingAttrs = buildShadingAttributes(this.formatting.shading);\n if (Object.keys(shadingAttrs).length > 0) {\n tcPrChildren.push(XMLBuilder.wSelf('shd', shadingAttrs));\n }\n }\n\n // noWrap\n if (this.formatting.noWrap) {\n tcPrChildren.push(XMLBuilder.wSelf('noWrap'));\n }\n\n // tcMar - cell margins (ordered per CT_TcMar: top, left, bottom, right)\n if (this.formatting.margins) {\n const margins = this.formatting.margins;\n const marginChildren: XMLElement[] = [];\n\n if (margins.top !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('top', {\n 'w:w': margins.top.toString(),\n 'w:type': 'dxa',\n })\n );\n }\n if (margins.left !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('left', {\n 'w:w': margins.left.toString(),\n 'w:type': 'dxa',\n })\n );\n }\n if (margins.bottom !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('bottom', {\n 'w:w': margins.bottom.toString(),\n 'w:type': 'dxa',\n })\n );\n }\n if (margins.right !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('right', {\n 'w:w': margins.right.toString(),\n 'w:type': 'dxa',\n })\n );\n }\n\n if (marginChildren.length > 0) {\n tcPrChildren.push(XMLBuilder.w('tcMar', undefined, marginChildren));\n }\n }\n\n // textDirection\n if (this.formatting.textDirection) {\n tcPrChildren.push(\n XMLBuilder.wSelf('textDirection', {\n 'w:val': this.formatting.textDirection,\n })\n );\n }\n\n // tcFitText\n if (this.formatting.fitText) {\n tcPrChildren.push(XMLBuilder.wSelf('tcFitText'));\n }\n\n // vAlign - vertical alignment\n if (this.formatting.verticalAlignment) {\n tcPrChildren.push(\n XMLBuilder.wSelf('vAlign', {\n 'w:val': this.formatting.verticalAlignment,\n })\n );\n }\n\n // hideMark\n if (this.formatting.hideMark) {\n tcPrChildren.push(XMLBuilder.wSelf('hideMark'));\n }\n\n // Note: w:headers (cell headers for accessibility) is defined in ECMA-376 Part 1 §17.4.26\n // but is NOT included in the Transitional schema and fails OOXML validation.\n // The property is preserved in memory for reading but not generated in XML.\n\n // Add cell revision markers (w:cellIns, w:cellDel, w:cellMerge) per ECMA-376 Part 1 §17.13.5.4-5.6\n if (this.cellRevision) {\n const revType = this.cellRevision.getType();\n const attrs: Record<string, string | number> = {\n 'w:id': this.cellRevision.getId(),\n 'w:author': this.cellRevision.getAuthor(),\n 'w:date': formatDateForXml(this.cellRevision.getDate()),\n };\n\n if (revType === 'tableCellInsert') {\n tcPrChildren.push(XMLBuilder.wSelf('cellIns', attrs));\n } else if (revType === 'tableCellDelete') {\n tcPrChildren.push(XMLBuilder.wSelf('cellDel', attrs));\n } else if (revType === 'tableCellMerge') {\n // Add vMerge and vMergeOrig attributes if present\n // ST_AnnotationVMerge: \"cont\" | \"rest\" (not \"continue\" / \"restart\")\n const mergeMap: Record<string, string> = { continue: 'cont', restart: 'rest' };\n const prevProps = this.cellRevision.getPreviousProperties();\n if (prevProps?.vMerge) {\n attrs['w:vMerge'] = mergeMap[prevProps.vMerge] || prevProps.vMerge;\n }\n if (prevProps?.vMergeOrig) {\n attrs['w:vMergeOrig'] = mergeMap[prevProps.vMergeOrig] || prevProps.vMergeOrig;\n }\n tcPrChildren.push(XMLBuilder.wSelf('cellMerge', attrs));\n }\n }\n\n // Add table cell property change (w:tcPrChange) per ECMA-376 Part 1 §17.13.5.37\n // Must be last child of w:tcPr\n if (this.tcPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.tcPrChange.id,\n 'w:author': this.tcPrChange.author,\n 'w:date': this.tcPrChange.date,\n };\n const prevTcPrChildren: XMLElement[] = [];\n const prev = this.tcPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_TcPr: tcW → tcBorders → shd → noWrap → tcMar →\n // textDirection → tcFitText → vAlign → hideMark → cnfStyle\n if (prev.width !== undefined) {\n prevTcPrChildren.push(\n XMLBuilder.wSelf('tcW', {\n 'w:w': prev.width,\n 'w:type': prev.widthType || 'dxa',\n })\n );\n }\n if (prev.borders) {\n const borderElements: XMLElement[] = [];\n if (prev.borders.top)\n borderElements.push(XMLBuilder.createBorder('top', prev.borders.top));\n if (prev.borders.left)\n borderElements.push(XMLBuilder.createBorder('left', prev.borders.left));\n if (prev.borders.bottom)\n borderElements.push(XMLBuilder.createBorder('bottom', prev.borders.bottom));\n if (prev.borders.right)\n borderElements.push(XMLBuilder.createBorder('right', prev.borders.right));\n if (borderElements.length > 0) {\n prevTcPrChildren.push(XMLBuilder.w('tcBorders', undefined, borderElements));\n }\n }\n if (prev.shading) {\n const shadingAttrs = buildShadingAttributes(prev.shading);\n if (Object.keys(shadingAttrs).length > 0) {\n prevTcPrChildren.push(XMLBuilder.wSelf('shd', shadingAttrs));\n }\n }\n if (prev.noWrap) {\n prevTcPrChildren.push(XMLBuilder.wSelf('noWrap'));\n }\n if (prev.margins) {\n const marginChildren: XMLElement[] = [];\n if (prev.margins.top !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('top', { 'w:w': prev.margins.top.toString(), 'w:type': 'dxa' })\n );\n }\n if (prev.margins.left !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('left', { 'w:w': prev.margins.left.toString(), 'w:type': 'dxa' })\n );\n }\n if (prev.margins.bottom !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('bottom', { 'w:w': prev.margins.bottom.toString(), 'w:type': 'dxa' })\n );\n }\n if (prev.margins.right !== undefined) {\n marginChildren.push(\n XMLBuilder.wSelf('right', { 'w:w': prev.margins.right.toString(), 'w:type': 'dxa' })\n );\n }\n if (marginChildren.length > 0) {\n prevTcPrChildren.push(XMLBuilder.w('tcMar', undefined, marginChildren));\n }\n }\n if (prev.textDirection) {\n prevTcPrChildren.push(XMLBuilder.wSelf('textDirection', { 'w:val': prev.textDirection }));\n }\n if (prev.fitText) {\n prevTcPrChildren.push(XMLBuilder.wSelf('tcFitText'));\n }\n if (prev.verticalAlignment) {\n prevTcPrChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));\n }\n if (prev.hideMark) {\n prevTcPrChildren.push(XMLBuilder.wSelf('hideMark'));\n }\n if (prev.cnfStyle) {\n prevTcPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': prev.cnfStyle }));\n }\n }\n const prevTcPr =\n prevTcPrChildren.length > 0\n ? XMLBuilder.w('tcPr', undefined, prevTcPrChildren)\n : XMLBuilder.w('tcPr', undefined, []);\n tcPrChildren.push(XMLBuilder.w('tcPrChange', changeAttrs, [prevTcPr]));\n }\n\n // Build cell element\n const cellChildren: XMLElement[] = [];\n\n // Add cell properties if there are any\n if (tcPrChildren.length > 0) {\n cellChildren.push(XMLBuilder.w('tcPr', undefined, tcPrChildren));\n }\n\n // Add paragraphs and raw nested content in correct order\n // Raw nested content (tables, SDTs) are interspersed with paragraphs\n if (this.paragraphs.length > 0 || this.rawNestedContent.length > 0) {\n // Sort raw content by position\n const sortedRaw = [...this.rawNestedContent].sort((a, b) => a.position - b.position);\n let rawIndex = 0;\n\n for (let i = 0; i < this.paragraphs.length; i++) {\n // Insert any raw content that comes before this paragraph (position <= i)\n let rawItem = sortedRaw[rawIndex];\n while (rawIndex < sortedRaw.length && rawItem && rawItem.position <= i) {\n // Use __rawXml element for passthrough (supported by XMLBuilder)\n cellChildren.push({\n name: '__rawXml',\n rawXml: rawItem.xml,\n });\n rawIndex++;\n rawItem = sortedRaw[rawIndex];\n }\n const para = this.paragraphs[i];\n if (para) {\n cellChildren.push(para.toXML());\n }\n }\n\n // Insert any remaining raw content after all paragraphs\n while (rawIndex < sortedRaw.length) {\n const rawItem = sortedRaw[rawIndex];\n if (rawItem) {\n cellChildren.push({\n name: '__rawXml',\n rawXml: rawItem.xml,\n });\n }\n rawIndex++;\n }\n\n // If we only have raw content and no paragraphs, we need at least one empty paragraph\n // per ECMA-376 (table cell must contain at least one block-level element)\n if (this.paragraphs.length === 0) {\n cellChildren.push(new Paragraph().toXML());\n }\n } else {\n // Empty cell needs at least one empty paragraph\n cellChildren.push(new Paragraph().toXML());\n }\n\n return XMLBuilder.w('tc', undefined, cellChildren);\n }\n\n /**\n * Creates a new TableCell\n * @param formatting - Cell formatting\n * @returns New TableCell instance\n */\n static create(formatting?: CellFormatting): TableCell {\n return new TableCell(formatting);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TableGridChange.d.ts","sourceRoot":"","sources":["../../src/elements/TableGridChange.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAC;AAM3D,MAAM,WAAW,UAAU;IAEzB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,yBAAyB;IAExC,EAAE,EAAE,MAAM,CAAC;IAEX,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAKD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,YAAY,CAAe;gBAMvB,UAAU,EAAE,yBAAyB;IAUjD,KAAK,IAAI,MAAM;IAQf,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOvB,SAAS,IAAI,MAAM,GAAG,SAAS;IAO/B,OAAO,IAAI,IAAI,GAAG,SAAS;IAO3B,eAAe,IAAI,UAAU,EAAE;IAQ/B,OAAO,CAAC,UAAU;IAQlB,KAAK,IAAI,UAAU;IAqCnB,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,UAAU,EAAE,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,IAAI,GACV,eAAe;CAQnB"}
1
+ {"version":3,"file":"TableGridChange.d.ts","sourceRoot":"","sources":["../../src/elements/TableGridChange.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAC;AAM3D,MAAM,WAAW,UAAU;IAEzB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,yBAAyB;IAExC,EAAE,EAAE,MAAM,CAAC;IAEX,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAKD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,YAAY,CAAe;gBAMvB,UAAU,EAAE,yBAAyB;IAUjD,KAAK,IAAI,MAAM;IAQf,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOvB,SAAS,IAAI,MAAM,GAAG,SAAS;IAO/B,OAAO,IAAI,IAAI,GAAG,SAAS;IAO3B,eAAe,IAAI,UAAU,EAAE;IAQ/B,OAAO,CAAC,UAAU;IAQlB,KAAK,IAAI,UAAU;IAmCnB,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,UAAU,EAAE,EAC1B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,IAAI,GACV,eAAe;CAQnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableGridChange.js","sourceRoot":"","sources":["../../src/elements/TableGridChange.ts"],"names":[],"mappings":";;;AAOA,kDAA2D;AAC3D,4DAA2D;AA2B3D,MAAa,eAAe;IAClB,EAAE,CAAS;IACX,MAAM,CAAU;IAChB,IAAI,CAAQ;IACZ,YAAY,CAAe;IAMnC,YAAY,UAAqC;QAC/C,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC9C,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAMD,KAAK,CAAC,EAAU;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAMO,UAAU,CAAC,IAAU;QAC3B,OAAO,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAMD,KAAK;QACH,MAAM,UAAU,GAA2B;YACzC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAGD,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,YAAY,CAAC,IAAI,CACf,uBAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,uBAAU,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,UAAU;YACV,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC3B,CAAC;IACJ,CAAC;IAUD,MAAM,CAAC,MAAM,CACX,EAAU,EACV,YAA0B,EAC1B,MAAe,EACf,IAAW;QAEX,OAAO,IAAI,eAAe,CAAC;YACzB,EAAE;YACF,MAAM;YACN,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;YACxB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;CACF;AAnHD,0CAmHC","sourcesContent":["/**\r\n * TableGridChange - Represents tracked changes to table grid (column structure)\r\n *\r\n * Tracks changes to table column widths, additions, and deletions.\r\n * Per ECMA-376 Part 4 §17.13.5.35\r\n */\r\n\r\nimport { XMLElement, XMLBuilder } from '../xml/XMLBuilder';\r\nimport { formatDateForXml } from '../utils/dateFormatting';\r\n\r\n/**\r\n * Table grid column definition\r\n */\r\nexport interface GridColumn {\r\n /** Column width in twips */\r\n width: number;\r\n}\r\n\r\n/**\r\n * Table grid change properties\r\n */\r\nexport interface TableGridChangeProperties {\r\n /** Unique revision ID */\r\n id: number;\r\n /** Author who made the change */\r\n author?: string;\r\n /** Date when the change was made */\r\n date?: Date;\r\n /** Previous grid columns (before the change) */\r\n previousGrid: GridColumn[];\r\n}\r\n\r\n/**\r\n * Represents a tracked change to a table grid\r\n */\r\nexport class TableGridChange {\r\n private id: number;\r\n private author?: string;\r\n private date?: Date;\r\n private previousGrid: GridColumn[];\r\n\r\n /**\r\n * Creates a new TableGridChange\r\n * @param properties - Table grid change properties\r\n */\r\n constructor(properties: TableGridChangeProperties) {\r\n this.id = properties.id;\r\n this.author = properties.author;\r\n this.date = properties.date;\r\n this.previousGrid = properties.previousGrid;\r\n }\r\n\r\n /**\r\n * Gets the revision ID\r\n */\r\n getId(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * Sets the revision ID (used by RevisionManager)\r\n * @internal\r\n */\r\n setId(id: number): void {\r\n this.id = id;\r\n }\r\n\r\n /**\r\n * Gets the author\r\n */\r\n getAuthor(): string | undefined {\r\n return this.author;\r\n }\r\n\r\n /**\r\n * Gets the date\r\n */\r\n getDate(): Date | undefined {\r\n return this.date;\r\n }\r\n\r\n /**\r\n * Gets the previous grid columns\r\n */\r\n getPreviousGrid(): GridColumn[] {\r\n return [...this.previousGrid];\r\n }\r\n\r\n /**\r\n * Formats a date to ISO 8601 format for XML\r\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\r\n */\r\n private formatDate(date: Date): string {\r\n return formatDateForXml(date);\r\n }\r\n\r\n /**\r\n * Generates XML for this table grid change\r\n * @returns XMLElement representing the table grid change\r\n */\r\n toXML(): XMLElement {\r\n const attributes: Record<string, string> = {\r\n 'w:id': this.id.toString(),\r\n };\r\n\r\n if (this.author) {\r\n attributes['w:author'] = this.author;\r\n }\r\n if (this.date) {\r\n attributes['w:date'] = this.formatDate(this.date);\r\n }\r\n\r\n // Build previous grid\r\n const gridChildren: XMLElement[] = [];\r\n for (const col of this.previousGrid) {\r\n gridChildren.push(\r\n XMLBuilder.wSelf('gridCol', { 'w:w': col.width.toString() })\r\n );\r\n }\r\n\r\n const tblGridElement = XMLBuilder.w('tblGrid', undefined, gridChildren);\r\n\r\n return {\r\n name: 'w:tblGridChange',\r\n attributes,\r\n children: [tblGridElement],\r\n };\r\n }\r\n\r\n /**\r\n * Creates a table grid change\r\n * @param id - Unique revision ID\r\n * @param previousGrid - Previous grid columns\r\n * @param author - Optional author\r\n * @param date - Optional date (defaults to now)\r\n * @returns New TableGridChange instance\r\n */\r\n static create(\r\n id: number,\r\n previousGrid: GridColumn[],\r\n author?: string,\r\n date?: Date\r\n ): TableGridChange {\r\n return new TableGridChange({\r\n id,\r\n author,\r\n date: date || new Date(),\r\n previousGrid,\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TableGridChange.js","sourceRoot":"","sources":["../../src/elements/TableGridChange.ts"],"names":[],"mappings":";;;AAOA,kDAA2D;AAC3D,4DAA2D;AA2B3D,MAAa,eAAe;IAClB,EAAE,CAAS;IACX,MAAM,CAAU;IAChB,IAAI,CAAQ;IACZ,YAAY,CAAe;IAMnC,YAAY,UAAqC;QAC/C,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC9C,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAMD,KAAK,CAAC,EAAU;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAKD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAMO,UAAU,CAAC,IAAU;QAC3B,OAAO,IAAA,iCAAgB,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAMD,KAAK;QACH,MAAM,UAAU,GAA2B;YACzC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAGD,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,YAAY,CAAC,IAAI,CAAC,uBAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,cAAc,GAAG,uBAAU,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,UAAU;YACV,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC3B,CAAC;IACJ,CAAC;IAUD,MAAM,CAAC,MAAM,CACX,EAAU,EACV,YAA0B,EAC1B,MAAe,EACf,IAAW;QAEX,OAAO,IAAI,eAAe,CAAC;YACzB,EAAE;YACF,MAAM;YACN,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;YACxB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;CACF;AAjHD,0CAiHC","sourcesContent":["/**\n * TableGridChange - Represents tracked changes to table grid (column structure)\n *\n * Tracks changes to table column widths, additions, and deletions.\n * Per ECMA-376 Part 4 §17.13.5.35\n */\n\nimport { XMLElement, XMLBuilder } from '../xml/XMLBuilder';\nimport { formatDateForXml } from '../utils/dateFormatting';\n\n/**\n * Table grid column definition\n */\nexport interface GridColumn {\n /** Column width in twips */\n width: number;\n}\n\n/**\n * Table grid change properties\n */\nexport interface TableGridChangeProperties {\n /** Unique revision ID */\n id: number;\n /** Author who made the change */\n author?: string;\n /** Date when the change was made */\n date?: Date;\n /** Previous grid columns (before the change) */\n previousGrid: GridColumn[];\n}\n\n/**\n * Represents a tracked change to a table grid\n */\nexport class TableGridChange {\n private id: number;\n private author?: string;\n private date?: Date;\n private previousGrid: GridColumn[];\n\n /**\n * Creates a new TableGridChange\n * @param properties - Table grid change properties\n */\n constructor(properties: TableGridChangeProperties) {\n this.id = properties.id;\n this.author = properties.author;\n this.date = properties.date;\n this.previousGrid = properties.previousGrid;\n }\n\n /**\n * Gets the revision ID\n */\n getId(): number {\n return this.id;\n }\n\n /**\n * Sets the revision ID (used by RevisionManager)\n * @internal\n */\n setId(id: number): void {\n this.id = id;\n }\n\n /**\n * Gets the author\n */\n getAuthor(): string | undefined {\n return this.author;\n }\n\n /**\n * Gets the date\n */\n getDate(): Date | undefined {\n return this.date;\n }\n\n /**\n * Gets the previous grid columns\n */\n getPreviousGrid(): GridColumn[] {\n return [...this.previousGrid];\n }\n\n /**\n * Formats a date to ISO 8601 format for XML\n * Uses formatDateForXml() to strip milliseconds which Word does not accept.\n */\n private formatDate(date: Date): string {\n return formatDateForXml(date);\n }\n\n /**\n * Generates XML for this table grid change\n * @returns XMLElement representing the table grid change\n */\n toXML(): XMLElement {\n const attributes: Record<string, string> = {\n 'w:id': this.id.toString(),\n };\n\n if (this.author) {\n attributes['w:author'] = this.author;\n }\n if (this.date) {\n attributes['w:date'] = this.formatDate(this.date);\n }\n\n // Build previous grid\n const gridChildren: XMLElement[] = [];\n for (const col of this.previousGrid) {\n gridChildren.push(XMLBuilder.wSelf('gridCol', { 'w:w': col.width.toString() }));\n }\n\n const tblGridElement = XMLBuilder.w('tblGrid', undefined, gridChildren);\n\n return {\n name: 'w:tblGridChange',\n attributes,\n children: [tblGridElement],\n };\n }\n\n /**\n * Creates a table grid change\n * @param id - Unique revision ID\n * @param previousGrid - Previous grid columns\n * @param author - Optional author\n * @param date - Optional date (defaults to now)\n * @returns New TableGridChange instance\n */\n static create(\n id: number,\n previousGrid: GridColumn[],\n author?: string,\n date?: Date\n ): TableGridChange {\n return new TableGridChange({\n id,\n author,\n date: date || new Date(),\n previousGrid,\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../src/elements/TableOfContents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../src/elements/TableOfContents.ts"],"names":[],"mappings":"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"}
@@ -236,7 +236,7 @@ class TableOfContents {
236
236
  sdtContent.push(tocParagraph);
237
237
  const sdtWrapper = XMLBuilder_1.XMLBuilder.createSDT(sdtContent, {
238
238
  docPartGallery: 'Table of Contents',
239
- docPartUnique: true
239
+ docPartUnique: true,
240
240
  });
241
241
  return [sdtWrapper];
242
242
  }
@@ -287,7 +287,7 @@ class TableOfContents {
287
287
  if (styles.length > 0 && typeof styles[0] === 'string') {
288
288
  this.includeStyles = styles.map((styleName, index) => ({
289
289
  styleName,
290
- level: index + 1
290
+ level: index + 1,
291
291
  }));
292
292
  }
293
293
  else {
@@ -350,7 +350,7 @@ class TableOfContents {
350
350
  static createWithStyles(styles, options) {
351
351
  const stylesWithLevels = styles.map((styleName, index) => ({
352
352
  styleName,
353
- level: index + 1
353
+ level: index + 1,
354
354
  }));
355
355
  return new TableOfContents({
356
356
  ...options,
@@ -360,7 +360,7 @@ class TableOfContents {
360
360
  static createFlat(title, styles) {
361
361
  const stylesWithLevels = styles?.map((styleName, index) => ({
362
362
  styleName,
363
- level: index + 1
363
+ level: index + 1,
364
364
  }));
365
365
  return new TableOfContents({
366
366
  title: title || 'Contents',