docxmlater 10.4.0 → 11.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/README.md +3 -3
  2. package/dist/constants/legacyCompatFlags.d.ts +1 -1
  3. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  4. package/dist/constants/legacyCompatFlags.js.map +1 -1
  5. package/dist/core/Document.d.ts +75 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +618 -414
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +11 -10
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +19 -19
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentEvents.d.ts +39 -0
  14. package/dist/core/DocumentEvents.d.ts.map +1 -0
  15. package/dist/core/DocumentEvents.js +51 -0
  16. package/dist/core/DocumentEvents.js.map +1 -0
  17. package/dist/core/DocumentGenerator.d.ts +11 -11
  18. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  19. package/dist/core/DocumentGenerator.js +72 -52
  20. package/dist/core/DocumentGenerator.js.map +1 -1
  21. package/dist/core/DocumentParser.d.ts +15 -15
  22. package/dist/core/DocumentParser.d.ts.map +1 -1
  23. package/dist/core/DocumentParser.js +2100 -1076
  24. package/dist/core/DocumentParser.js.map +1 -1
  25. package/dist/core/DocumentValidator.d.ts +3 -3
  26. package/dist/core/DocumentValidator.d.ts.map +1 -1
  27. package/dist/core/DocumentValidator.js +31 -31
  28. package/dist/core/DocumentValidator.js.map +1 -1
  29. package/dist/core/ElementRegistry.d.ts +22 -0
  30. package/dist/core/ElementRegistry.d.ts.map +1 -0
  31. package/dist/core/ElementRegistry.js +27 -0
  32. package/dist/core/ElementRegistry.js.map +1 -0
  33. package/dist/core/Relationship.js +4 -4
  34. package/dist/core/Relationship.js.map +1 -1
  35. package/dist/core/RelationshipManager.d.ts +1 -1
  36. package/dist/core/RelationshipManager.d.ts.map +1 -1
  37. package/dist/core/RelationshipManager.js +32 -32
  38. package/dist/core/RelationshipManager.js.map +1 -1
  39. package/dist/elements/AlternateContent.d.ts +1 -1
  40. package/dist/elements/AlternateContent.d.ts.map +1 -1
  41. package/dist/elements/AlternateContent.js.map +1 -1
  42. package/dist/elements/Bookmark.d.ts +6 -1
  43. package/dist/elements/Bookmark.d.ts.map +1 -1
  44. package/dist/elements/Bookmark.js +19 -3
  45. package/dist/elements/Bookmark.js.map +1 -1
  46. package/dist/elements/BookmarkManager.d.ts +1 -1
  47. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  48. package/dist/elements/BookmarkManager.js +7 -7
  49. package/dist/elements/BookmarkManager.js.map +1 -1
  50. package/dist/elements/Comment.d.ts +2 -2
  51. package/dist/elements/Comment.d.ts.map +1 -1
  52. package/dist/elements/Comment.js +4 -4
  53. package/dist/elements/Comment.js.map +1 -1
  54. package/dist/elements/CommentManager.d.ts +2 -2
  55. package/dist/elements/CommentManager.d.ts.map +1 -1
  56. package/dist/elements/CommentManager.js +9 -9
  57. package/dist/elements/CommentManager.js.map +1 -1
  58. package/dist/elements/CommonTypes.d.ts +9 -4
  59. package/dist/elements/CommonTypes.d.ts.map +1 -1
  60. package/dist/elements/CommonTypes.js +1 -0
  61. package/dist/elements/CommonTypes.js.map +1 -1
  62. package/dist/elements/CustomXml.d.ts +1 -1
  63. package/dist/elements/CustomXml.d.ts.map +1 -1
  64. package/dist/elements/CustomXml.js.map +1 -1
  65. package/dist/elements/Endnote.d.ts +2 -2
  66. package/dist/elements/Endnote.d.ts.map +1 -1
  67. package/dist/elements/Endnote.js +9 -9
  68. package/dist/elements/Endnote.js.map +1 -1
  69. package/dist/elements/EndnoteManager.d.ts +1 -1
  70. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  71. package/dist/elements/EndnoteManager.js +11 -11
  72. package/dist/elements/EndnoteManager.js.map +1 -1
  73. package/dist/elements/Field.d.ts +9 -5
  74. package/dist/elements/Field.d.ts.map +1 -1
  75. package/dist/elements/Field.js +21 -9
  76. package/dist/elements/Field.js.map +1 -1
  77. package/dist/elements/FieldHelpers.d.ts +1 -1
  78. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  79. package/dist/elements/FieldHelpers.js +10 -10
  80. package/dist/elements/FieldHelpers.js.map +1 -1
  81. package/dist/elements/Footer.d.ts +3 -3
  82. package/dist/elements/Footer.d.ts.map +1 -1
  83. package/dist/elements/Footer.js +5 -5
  84. package/dist/elements/Footer.js.map +1 -1
  85. package/dist/elements/Footnote.d.ts +2 -2
  86. package/dist/elements/Footnote.d.ts.map +1 -1
  87. package/dist/elements/Footnote.js +9 -9
  88. package/dist/elements/Footnote.js.map +1 -1
  89. package/dist/elements/FootnoteManager.d.ts +1 -1
  90. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  91. package/dist/elements/FootnoteManager.js +11 -11
  92. package/dist/elements/FootnoteManager.js.map +1 -1
  93. package/dist/elements/Header.d.ts +3 -3
  94. package/dist/elements/Header.d.ts.map +1 -1
  95. package/dist/elements/Header.js +5 -5
  96. package/dist/elements/Header.js.map +1 -1
  97. package/dist/elements/HeaderFooterManager.d.ts +2 -2
  98. package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
  99. package/dist/elements/HeaderFooterManager.js.map +1 -1
  100. package/dist/elements/Hyperlink.d.ts +5 -5
  101. package/dist/elements/Hyperlink.d.ts.map +1 -1
  102. package/dist/elements/Hyperlink.js +29 -29
  103. package/dist/elements/Hyperlink.js.map +1 -1
  104. package/dist/elements/Image.d.ts +1 -1
  105. package/dist/elements/Image.d.ts.map +1 -1
  106. package/dist/elements/Image.js +67 -67
  107. package/dist/elements/Image.js.map +1 -1
  108. package/dist/elements/ImageManager.d.ts +1 -1
  109. package/dist/elements/ImageManager.d.ts.map +1 -1
  110. package/dist/elements/ImageManager.js +4 -4
  111. package/dist/elements/ImageManager.js.map +1 -1
  112. package/dist/elements/ImageRun.d.ts +3 -3
  113. package/dist/elements/ImageRun.d.ts.map +1 -1
  114. package/dist/elements/ImageRun.js +2 -2
  115. package/dist/elements/ImageRun.js.map +1 -1
  116. package/dist/elements/MathElement.d.ts +1 -1
  117. package/dist/elements/MathElement.d.ts.map +1 -1
  118. package/dist/elements/MathElement.js.map +1 -1
  119. package/dist/elements/Paragraph.d.ts +34 -19
  120. package/dist/elements/Paragraph.d.ts.map +1 -1
  121. package/dist/elements/Paragraph.js +286 -231
  122. package/dist/elements/Paragraph.js.map +1 -1
  123. package/dist/elements/PreservedElement.d.ts +1 -1
  124. package/dist/elements/PreservedElement.d.ts.map +1 -1
  125. package/dist/elements/PreservedElement.js.map +1 -1
  126. package/dist/elements/PropertyChangeTypes.d.ts +2 -2
  127. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  128. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  129. package/dist/elements/RangeMarker.d.ts +14 -1
  130. package/dist/elements/RangeMarker.d.ts.map +1 -1
  131. package/dist/elements/RangeMarker.js +46 -8
  132. package/dist/elements/RangeMarker.js.map +1 -1
  133. package/dist/elements/RegisteredBodyElement.d.ts +15 -0
  134. package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
  135. package/dist/elements/RegisteredBodyElement.js +44 -0
  136. package/dist/elements/RegisteredBodyElement.js.map +1 -0
  137. package/dist/elements/Revision.d.ts +8 -8
  138. package/dist/elements/Revision.d.ts.map +1 -1
  139. package/dist/elements/Revision.js +12 -12
  140. package/dist/elements/Revision.js.map +1 -1
  141. package/dist/elements/RevisionContent.d.ts +3 -3
  142. package/dist/elements/RevisionContent.d.ts.map +1 -1
  143. package/dist/elements/RevisionContent.js.map +1 -1
  144. package/dist/elements/RevisionManager.d.ts +2 -2
  145. package/dist/elements/RevisionManager.d.ts.map +1 -1
  146. package/dist/elements/RevisionManager.js +2 -2
  147. package/dist/elements/RevisionManager.js.map +1 -1
  148. package/dist/elements/Run.d.ts +16 -10
  149. package/dist/elements/Run.d.ts.map +1 -1
  150. package/dist/elements/Run.js +199 -173
  151. package/dist/elements/Run.js.map +1 -1
  152. package/dist/elements/Section.d.ts +4 -2
  153. package/dist/elements/Section.d.ts.map +1 -1
  154. package/dist/elements/Section.js +152 -145
  155. package/dist/elements/Section.js.map +1 -1
  156. package/dist/elements/Shape.d.ts +3 -3
  157. package/dist/elements/Shape.d.ts.map +1 -1
  158. package/dist/elements/Shape.js +12 -12
  159. package/dist/elements/Shape.js.map +1 -1
  160. package/dist/elements/StructuredDocumentTag.d.ts +3 -3
  161. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  162. package/dist/elements/StructuredDocumentTag.js +39 -39
  163. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  164. package/dist/elements/Table.d.ts +16 -10
  165. package/dist/elements/Table.d.ts.map +1 -1
  166. package/dist/elements/Table.js +118 -89
  167. package/dist/elements/Table.js.map +1 -1
  168. package/dist/elements/TableCell.d.ts +11 -11
  169. package/dist/elements/TableCell.d.ts.map +1 -1
  170. package/dist/elements/TableCell.js +108 -78
  171. package/dist/elements/TableCell.js.map +1 -1
  172. package/dist/elements/TableGridChange.d.ts +1 -1
  173. package/dist/elements/TableGridChange.d.ts.map +1 -1
  174. package/dist/elements/TableGridChange.js +3 -3
  175. package/dist/elements/TableGridChange.js.map +1 -1
  176. package/dist/elements/TableOfContents.d.ts +1 -1
  177. package/dist/elements/TableOfContents.d.ts.map +1 -1
  178. package/dist/elements/TableOfContents.js +2 -2
  179. package/dist/elements/TableOfContents.js.map +1 -1
  180. package/dist/elements/TableOfContentsElement.d.ts +2 -2
  181. package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
  182. package/dist/elements/TableOfContentsElement.js +5 -5
  183. package/dist/elements/TableOfContentsElement.js.map +1 -1
  184. package/dist/elements/TableRow.d.ts +18 -7
  185. package/dist/elements/TableRow.d.ts.map +1 -1
  186. package/dist/elements/TableRow.js +127 -74
  187. package/dist/elements/TableRow.js.map +1 -1
  188. package/dist/elements/TextBox.d.ts +4 -4
  189. package/dist/elements/TextBox.d.ts.map +1 -1
  190. package/dist/elements/TextBox.js +6 -6
  191. package/dist/elements/TextBox.js.map +1 -1
  192. package/dist/esm/constants/legacyCompatFlags.js +97 -0
  193. package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
  194. package/dist/esm/constants/limits.js +36 -0
  195. package/dist/esm/constants/limits.js.map +1 -0
  196. package/dist/esm/core/Document.js +8498 -0
  197. package/dist/esm/core/Document.js.map +1 -0
  198. package/dist/esm/core/DocumentContent.js +190 -0
  199. package/dist/esm/core/DocumentContent.js.map +1 -0
  200. package/dist/esm/core/DocumentEvents.js +47 -0
  201. package/dist/esm/core/DocumentEvents.js.map +1 -0
  202. package/dist/esm/core/DocumentGenerator.js +764 -0
  203. package/dist/esm/core/DocumentGenerator.js.map +1 -0
  204. package/dist/esm/core/DocumentIdManager.js +67 -0
  205. package/dist/esm/core/DocumentIdManager.js.map +1 -0
  206. package/dist/esm/core/DocumentParser.js +8760 -0
  207. package/dist/esm/core/DocumentParser.js.map +1 -0
  208. package/dist/esm/core/DocumentValidator.js +222 -0
  209. package/dist/esm/core/DocumentValidator.js.map +1 -0
  210. package/dist/esm/core/ElementRegistry.js +24 -0
  211. package/dist/esm/core/ElementRegistry.js.map +1 -0
  212. package/dist/esm/core/Relationship.js +177 -0
  213. package/dist/esm/core/Relationship.js.map +1 -0
  214. package/dist/esm/core/RelationshipManager.js +202 -0
  215. package/dist/esm/core/RelationshipManager.js.map +1 -0
  216. package/dist/esm/elements/AlternateContent.js +19 -0
  217. package/dist/esm/elements/AlternateContent.js.map +1 -0
  218. package/dist/esm/elements/Bookmark.js +115 -0
  219. package/dist/esm/elements/Bookmark.js.map +1 -0
  220. package/dist/esm/elements/BookmarkManager.js +99 -0
  221. package/dist/esm/elements/BookmarkManager.js.map +1 -0
  222. package/dist/esm/elements/Comment.js +181 -0
  223. package/dist/esm/elements/Comment.js.map +1 -0
  224. package/dist/esm/elements/CommentManager.js +233 -0
  225. package/dist/esm/elements/CommentManager.js.map +1 -0
  226. package/dist/esm/elements/CommonTypes.js +106 -0
  227. package/dist/esm/elements/CommonTypes.js.map +1 -0
  228. package/dist/esm/elements/CustomXml.js +19 -0
  229. package/dist/esm/elements/CustomXml.js.map +1 -0
  230. package/dist/esm/elements/Endnote.js +107 -0
  231. package/dist/esm/elements/Endnote.js.map +1 -0
  232. package/dist/esm/elements/EndnoteManager.js +119 -0
  233. package/dist/esm/elements/EndnoteManager.js.map +1 -0
  234. package/dist/esm/elements/Field.js +856 -0
  235. package/dist/esm/elements/Field.js.map +1 -0
  236. package/dist/esm/elements/FieldHelpers.js +134 -0
  237. package/dist/esm/elements/FieldHelpers.js.map +1 -0
  238. package/dist/esm/elements/FontManager.js +158 -0
  239. package/dist/esm/elements/FontManager.js.map +1 -0
  240. package/dist/esm/elements/Footer.js +141 -0
  241. package/dist/esm/elements/Footer.js.map +1 -0
  242. package/dist/esm/elements/Footnote.js +107 -0
  243. package/dist/esm/elements/Footnote.js.map +1 -0
  244. package/dist/esm/elements/FootnoteManager.js +119 -0
  245. package/dist/esm/elements/FootnoteManager.js.map +1 -0
  246. package/dist/esm/elements/Header.js +141 -0
  247. package/dist/esm/elements/Header.js.map +1 -0
  248. package/dist/esm/elements/HeaderFooterManager.js +87 -0
  249. package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
  250. package/dist/esm/elements/Hyperlink.js +586 -0
  251. package/dist/esm/elements/Hyperlink.js.map +1 -0
  252. package/dist/esm/elements/Image.js +1288 -0
  253. package/dist/esm/elements/Image.js.map +1 -0
  254. package/dist/esm/elements/ImageManager.js +223 -0
  255. package/dist/esm/elements/ImageManager.js.map +1 -0
  256. package/dist/esm/elements/ImageRun.js +29 -0
  257. package/dist/esm/elements/ImageRun.js.map +1 -0
  258. package/dist/esm/elements/MathElement.js +37 -0
  259. package/dist/esm/elements/MathElement.js.map +1 -0
  260. package/dist/esm/elements/Paragraph.js +2308 -0
  261. package/dist/esm/elements/Paragraph.js.map +1 -0
  262. package/dist/esm/elements/PreservedElement.js +29 -0
  263. package/dist/esm/elements/PreservedElement.js.map +1 -0
  264. package/dist/esm/elements/PropertyChangeTypes.js +53 -0
  265. package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
  266. package/dist/esm/elements/RangeMarker.js +219 -0
  267. package/dist/esm/elements/RangeMarker.js.map +1 -0
  268. package/dist/esm/elements/RegisteredBodyElement.js +40 -0
  269. package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
  270. package/dist/esm/elements/Revision.js +498 -0
  271. package/dist/esm/elements/Revision.js.map +1 -0
  272. package/dist/esm/elements/RevisionContent.js +18 -0
  273. package/dist/esm/elements/RevisionContent.js.map +1 -0
  274. package/dist/esm/elements/RevisionManager.js +486 -0
  275. package/dist/esm/elements/RevisionManager.js.map +1 -0
  276. package/dist/esm/elements/Run.js +1465 -0
  277. package/dist/esm/elements/Run.js.map +1 -0
  278. package/dist/esm/elements/Section.js +978 -0
  279. package/dist/esm/elements/Section.js.map +1 -0
  280. package/dist/esm/elements/Shape.js +493 -0
  281. package/dist/esm/elements/Shape.js.map +1 -0
  282. package/dist/esm/elements/StructuredDocumentTag.js +471 -0
  283. package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
  284. package/dist/esm/elements/Table.js +1456 -0
  285. package/dist/esm/elements/Table.js.map +1 -0
  286. package/dist/esm/elements/TableCell.js +835 -0
  287. package/dist/esm/elements/TableCell.js.map +1 -0
  288. package/dist/esm/elements/TableGridChange.js +52 -0
  289. package/dist/esm/elements/TableGridChange.js.map +1 -0
  290. package/dist/esm/elements/TableOfContents.js +389 -0
  291. package/dist/esm/elements/TableOfContents.js.map +1 -0
  292. package/dist/esm/elements/TableOfContentsElement.js +29 -0
  293. package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
  294. package/dist/esm/elements/TableRow.js +555 -0
  295. package/dist/esm/elements/TableRow.js.map +1 -0
  296. package/dist/esm/elements/TextBox.js +459 -0
  297. package/dist/esm/elements/TextBox.js.map +1 -0
  298. package/dist/esm/formatting/AbstractNumbering.js +325 -0
  299. package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
  300. package/dist/esm/formatting/NumberingInstance.js +150 -0
  301. package/dist/esm/formatting/NumberingInstance.js.map +1 -0
  302. package/dist/esm/formatting/NumberingLevel.js +608 -0
  303. package/dist/esm/formatting/NumberingLevel.js.map +1 -0
  304. package/dist/esm/formatting/NumberingManager.js +423 -0
  305. package/dist/esm/formatting/NumberingManager.js.map +1 -0
  306. package/dist/esm/formatting/Style.js +1151 -0
  307. package/dist/esm/formatting/Style.js.map +1 -0
  308. package/dist/esm/formatting/StylesManager.js +557 -0
  309. package/dist/esm/formatting/StylesManager.js.map +1 -0
  310. package/dist/esm/helpers/CleanupHelper.js +350 -0
  311. package/dist/esm/helpers/CleanupHelper.js.map +1 -0
  312. package/dist/esm/images/ImageOptimizer.js +161 -0
  313. package/dist/esm/images/ImageOptimizer.js.map +1 -0
  314. package/dist/esm/index.js +75 -0
  315. package/dist/esm/index.js.map +1 -0
  316. package/dist/esm/internal.js +16 -0
  317. package/dist/esm/internal.js.map +1 -0
  318. package/dist/esm/managers/DrawingManager.js +163 -0
  319. package/dist/esm/managers/DrawingManager.js.map +1 -0
  320. package/dist/esm/package.json +3 -0
  321. package/dist/esm/processors/ChangelogGenerator.js +970 -0
  322. package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
  323. package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
  324. package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
  325. package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
  326. package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
  327. package/dist/esm/processors/MoveOperationHelper.js +57 -0
  328. package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
  329. package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
  330. package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
  331. package/dist/esm/processors/RevisionWalker.js +278 -0
  332. package/dist/esm/processors/RevisionWalker.js.map +1 -0
  333. package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
  334. package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
  335. package/dist/esm/processors/ShadingResolver.js +66 -0
  336. package/dist/esm/processors/ShadingResolver.js.map +1 -0
  337. package/dist/esm/processors/acceptRevisions.js +416 -0
  338. package/dist/esm/processors/acceptRevisions.js.map +1 -0
  339. package/dist/esm/processors/cnfStyleDecoder.js +89 -0
  340. package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
  341. package/dist/esm/processors/stripTrackedChanges.js +201 -0
  342. package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
  343. package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
  344. package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
  345. package/dist/esm/tracking/TrackingContext.js +2 -0
  346. package/dist/esm/tracking/TrackingContext.js.map +1 -0
  347. package/dist/esm/types/compatibility-types.js +8 -0
  348. package/dist/esm/types/compatibility-types.js.map +1 -0
  349. package/dist/esm/types/document-types.js +2 -0
  350. package/dist/esm/types/document-types.js.map +1 -0
  351. package/dist/esm/types/formatting.js +2 -0
  352. package/dist/esm/types/formatting.js.map +1 -0
  353. package/dist/esm/types/list-types.js +2 -0
  354. package/dist/esm/types/list-types.js.map +1 -0
  355. package/dist/esm/types/settings-types.js +2 -0
  356. package/dist/esm/types/settings-types.js.map +1 -0
  357. package/dist/esm/types/styleConfig.js +2 -0
  358. package/dist/esm/types/styleConfig.js.map +1 -0
  359. package/dist/esm/utils/KeyedRegistry.js +32 -0
  360. package/dist/esm/utils/KeyedRegistry.js.map +1 -0
  361. package/dist/esm/utils/corruptionDetection.js +155 -0
  362. package/dist/esm/utils/corruptionDetection.js.map +1 -0
  363. package/dist/esm/utils/dateFormatting.js +4 -0
  364. package/dist/esm/utils/dateFormatting.js.map +1 -0
  365. package/dist/esm/utils/deepClone.js +40 -0
  366. package/dist/esm/utils/deepClone.js.map +1 -0
  367. package/dist/esm/utils/deepEqual.js +47 -0
  368. package/dist/esm/utils/deepEqual.js.map +1 -0
  369. package/dist/esm/utils/diagnostics.js +69 -0
  370. package/dist/esm/utils/diagnostics.js.map +1 -0
  371. package/dist/esm/utils/errorHandling.js +36 -0
  372. package/dist/esm/utils/errorHandling.js.map +1 -0
  373. package/dist/esm/utils/formatting.js +93 -0
  374. package/dist/esm/utils/formatting.js.map +1 -0
  375. package/dist/esm/utils/list-detection.js +148 -0
  376. package/dist/esm/utils/list-detection.js.map +1 -0
  377. package/dist/esm/utils/logger.js +205 -0
  378. package/dist/esm/utils/logger.js.map +1 -0
  379. package/dist/esm/utils/parsingHelpers.js +56 -0
  380. package/dist/esm/utils/parsingHelpers.js.map +1 -0
  381. package/dist/esm/utils/textDiff.js +42 -0
  382. package/dist/esm/utils/textDiff.js.map +1 -0
  383. package/dist/esm/utils/units.js +152 -0
  384. package/dist/esm/utils/units.js.map +1 -0
  385. package/dist/esm/utils/validation.js +285 -0
  386. package/dist/esm/utils/validation.js.map +1 -0
  387. package/dist/esm/utils/xmlSanitization.js +54 -0
  388. package/dist/esm/utils/xmlSanitization.js.map +1 -0
  389. package/dist/esm/validation/RevisionAutoFixer.js +340 -0
  390. package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
  391. package/dist/esm/validation/RevisionValidator.js +240 -0
  392. package/dist/esm/validation/RevisionValidator.js.map +1 -0
  393. package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
  394. package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
  395. package/dist/esm/validation/ValidationRules.js +92 -0
  396. package/dist/esm/validation/ValidationRules.js.map +1 -0
  397. package/dist/esm/validation/index.js +4 -0
  398. package/dist/esm/validation/index.js.map +1 -0
  399. package/dist/esm/xml/XMLBuilder.js +434 -0
  400. package/dist/esm/xml/XMLBuilder.js.map +1 -0
  401. package/dist/esm/xml/XMLParser.js +486 -0
  402. package/dist/esm/xml/XMLParser.js.map +1 -0
  403. package/dist/esm/zip/ZipHandler.js +298 -0
  404. package/dist/esm/zip/ZipHandler.js.map +1 -0
  405. package/dist/esm/zip/ZipReader.js +147 -0
  406. package/dist/esm/zip/ZipReader.js.map +1 -0
  407. package/dist/esm/zip/ZipWriter.js +199 -0
  408. package/dist/esm/zip/ZipWriter.js.map +1 -0
  409. package/dist/esm/zip/errors.js +43 -0
  410. package/dist/esm/zip/errors.js.map +1 -0
  411. package/dist/esm/zip/types.js +31 -0
  412. package/dist/esm/zip/types.js.map +1 -0
  413. package/dist/formatting/AbstractNumbering.d.ts +2 -2
  414. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  415. package/dist/formatting/AbstractNumbering.js +33 -33
  416. package/dist/formatting/AbstractNumbering.js.map +1 -1
  417. package/dist/formatting/NumberingInstance.d.ts +2 -2
  418. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  419. package/dist/formatting/NumberingInstance.js +7 -7
  420. package/dist/formatting/NumberingInstance.js.map +1 -1
  421. package/dist/formatting/NumberingLevel.d.ts +11 -2
  422. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  423. package/dist/formatting/NumberingLevel.js +111 -25
  424. package/dist/formatting/NumberingLevel.js.map +1 -1
  425. package/dist/formatting/NumberingManager.d.ts +4 -4
  426. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  427. package/dist/formatting/NumberingManager.js +28 -28
  428. package/dist/formatting/NumberingManager.js.map +1 -1
  429. package/dist/formatting/Style.d.ts +14 -7
  430. package/dist/formatting/Style.d.ts.map +1 -1
  431. package/dist/formatting/Style.js +309 -112
  432. package/dist/formatting/Style.js.map +1 -1
  433. package/dist/formatting/StylesManager.d.ts +2 -2
  434. package/dist/formatting/StylesManager.d.ts.map +1 -1
  435. package/dist/formatting/StylesManager.js +52 -52
  436. package/dist/formatting/StylesManager.js.map +1 -1
  437. package/dist/helpers/CleanupHelper.d.ts +1 -1
  438. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  439. package/dist/helpers/CleanupHelper.js +15 -15
  440. package/dist/helpers/CleanupHelper.js.map +1 -1
  441. package/dist/index.d.ts +81 -90
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +286 -317
  444. package/dist/index.js.map +1 -1
  445. package/dist/internal.d.ts +16 -0
  446. package/dist/internal.d.ts.map +1 -0
  447. package/dist/internal.js +42 -0
  448. package/dist/internal.js.map +1 -0
  449. package/dist/managers/DrawingManager.d.ts +3 -3
  450. package/dist/managers/DrawingManager.d.ts.map +1 -1
  451. package/dist/managers/DrawingManager.js +12 -12
  452. package/dist/managers/DrawingManager.js.map +1 -1
  453. package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
  454. package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
  455. package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
  456. package/dist/processors/ChangelogGenerator.js.map +1 -0
  457. package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
  458. package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
  459. package/dist/processors/CompatibilityUpgrader.js.map +1 -0
  460. package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
  461. package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
  462. package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
  463. package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
  464. package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
  465. package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
  466. package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
  467. package/dist/processors/MoveOperationHelper.js.map +1 -0
  468. package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
  469. package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
  470. package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
  471. package/dist/processors/RevisionAwareProcessor.js.map +1 -0
  472. package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
  473. package/dist/processors/RevisionWalker.d.ts.map +1 -0
  474. package/dist/{utils → processors}/RevisionWalker.js +28 -0
  475. package/dist/processors/RevisionWalker.js.map +1 -0
  476. package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
  477. package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
  478. package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
  479. package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
  480. package/dist/processors/ShadingResolver.d.ts +6 -0
  481. package/dist/processors/ShadingResolver.d.ts.map +1 -0
  482. package/dist/{utils → processors}/ShadingResolver.js +2 -2
  483. package/dist/processors/ShadingResolver.js.map +1 -0
  484. package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
  485. package/dist/processors/acceptRevisions.d.ts.map +1 -0
  486. package/dist/{utils → processors}/acceptRevisions.js +24 -4
  487. package/dist/processors/acceptRevisions.js.map +1 -0
  488. package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
  489. package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
  490. package/dist/processors/cnfStyleDecoder.js.map +1 -0
  491. package/dist/processors/stripTrackedChanges.d.ts +3 -0
  492. package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
  493. package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
  494. package/dist/processors/stripTrackedChanges.js.map +1 -0
  495. package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
  496. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  497. package/dist/tracking/DocumentTrackingContext.js +38 -43
  498. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  499. package/dist/tracking/TrackingContext.d.ts +8 -8
  500. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  501. package/dist/tracking/TrackingContext.js.map +1 -1
  502. package/dist/types/document-types.d.ts +28 -0
  503. package/dist/types/document-types.d.ts.map +1 -0
  504. package/dist/types/document-types.js +3 -0
  505. package/dist/types/document-types.js.map +1 -0
  506. package/dist/types/formatting.d.ts +4 -4
  507. package/dist/types/formatting.d.ts.map +1 -1
  508. package/dist/types/formatting.js.map +1 -1
  509. package/dist/types/settings-types.d.ts +6 -0
  510. package/dist/types/settings-types.d.ts.map +1 -1
  511. package/dist/types/settings-types.js.map +1 -1
  512. package/dist/utils/KeyedRegistry.d.ts +13 -0
  513. package/dist/utils/KeyedRegistry.d.ts.map +1 -0
  514. package/dist/utils/KeyedRegistry.js +36 -0
  515. package/dist/utils/KeyedRegistry.js.map +1 -0
  516. package/dist/utils/corruptionDetection.d.ts +1 -1
  517. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  518. package/dist/utils/corruptionDetection.js +4 -4
  519. package/dist/utils/corruptionDetection.js.map +1 -1
  520. package/dist/utils/deepEqual.d.ts +2 -0
  521. package/dist/utils/deepEqual.d.ts.map +1 -0
  522. package/dist/utils/deepEqual.js +50 -0
  523. package/dist/utils/deepEqual.js.map +1 -0
  524. package/dist/utils/list-detection.d.ts +2 -2
  525. package/dist/utils/list-detection.d.ts.map +1 -1
  526. package/dist/utils/list-detection.js.map +1 -1
  527. package/dist/utils/parsingHelpers.d.ts +1 -1
  528. package/dist/utils/parsingHelpers.d.ts.map +1 -1
  529. package/dist/utils/parsingHelpers.js +2 -2
  530. package/dist/utils/parsingHelpers.js.map +1 -1
  531. package/dist/utils/validation.js +7 -7
  532. package/dist/utils/validation.js.map +1 -1
  533. package/dist/utils/xmlSanitization.js +2 -2
  534. package/dist/utils/xmlSanitization.js.map +1 -1
  535. package/dist/validation/RevisionAutoFixer.d.ts +4 -4
  536. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  537. package/dist/validation/RevisionAutoFixer.js +11 -11
  538. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  539. package/dist/validation/RevisionValidator.d.ts +5 -4
  540. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  541. package/dist/validation/RevisionValidator.js +29 -30
  542. package/dist/validation/RevisionValidator.js.map +1 -1
  543. package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
  544. package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
  545. package/dist/validation/ValidationRuleRegistry.js +43 -0
  546. package/dist/validation/ValidationRuleRegistry.js.map +1 -0
  547. package/dist/validation/index.d.ts +3 -3
  548. package/dist/validation/index.d.ts.map +1 -1
  549. package/dist/validation/index.js +10 -10
  550. package/dist/validation/index.js.map +1 -1
  551. package/dist/xml/XMLBuilder.d.ts +6 -1
  552. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  553. package/dist/xml/XMLBuilder.js +11 -6
  554. package/dist/xml/XMLBuilder.js.map +1 -1
  555. package/dist/xml/XMLParser.js +6 -6
  556. package/dist/xml/XMLParser.js.map +1 -1
  557. package/dist/zip/ZipHandler.d.ts +1 -1
  558. package/dist/zip/ZipHandler.d.ts.map +1 -1
  559. package/dist/zip/ZipHandler.js +8 -8
  560. package/dist/zip/ZipHandler.js.map +1 -1
  561. package/dist/zip/ZipReader.d.ts +1 -1
  562. package/dist/zip/ZipReader.d.ts.map +1 -1
  563. package/dist/zip/ZipReader.js +14 -14
  564. package/dist/zip/ZipReader.js.map +1 -1
  565. package/dist/zip/ZipWriter.d.ts +1 -1
  566. package/dist/zip/ZipWriter.d.ts.map +1 -1
  567. package/dist/zip/ZipWriter.js +10 -10
  568. package/dist/zip/ZipWriter.js.map +1 -1
  569. package/package.json +20 -4
  570. package/src/constants/legacyCompatFlags.ts +1 -1
  571. package/src/core/Document.ts +478 -167
  572. package/src/core/DocumentContent.ts +14 -11
  573. package/src/core/DocumentEvents.ts +90 -0
  574. package/src/core/DocumentGenerator.ts +49 -22
  575. package/src/core/DocumentParser.ts +2235 -620
  576. package/src/core/DocumentValidator.ts +7 -7
  577. package/src/core/ElementRegistry.ts +69 -0
  578. package/src/core/Relationship.ts +1 -1
  579. package/src/core/RelationshipManager.ts +4 -4
  580. package/src/elements/AlternateContent.ts +1 -1
  581. package/src/elements/Bookmark.ts +52 -4
  582. package/src/elements/BookmarkManager.ts +2 -2
  583. package/src/elements/Comment.ts +3 -3
  584. package/src/elements/CommentManager.ts +4 -4
  585. package/src/elements/CommonTypes.ts +45 -7
  586. package/src/elements/CustomXml.ts +1 -1
  587. package/src/elements/Endnote.ts +2 -2
  588. package/src/elements/EndnoteManager.ts +3 -3
  589. package/src/elements/Field.ts +44 -10
  590. package/src/elements/FieldHelpers.ts +2 -2
  591. package/src/elements/Footer.ts +4 -4
  592. package/src/elements/Footnote.ts +2 -2
  593. package/src/elements/FootnoteManager.ts +3 -3
  594. package/src/elements/Header.ts +4 -4
  595. package/src/elements/HeaderFooterManager.ts +2 -2
  596. package/src/elements/Hyperlink.ts +16 -12
  597. package/src/elements/Image.ts +3 -3
  598. package/src/elements/ImageManager.ts +2 -2
  599. package/src/elements/ImageRun.ts +3 -3
  600. package/src/elements/MathElement.ts +1 -1
  601. package/src/elements/Paragraph.ts +221 -88
  602. package/src/elements/PreservedElement.ts +1 -1
  603. package/src/elements/PropertyChangeTypes.ts +2 -2
  604. package/src/elements/RangeMarker.ts +153 -12
  605. package/src/elements/RegisteredBodyElement.ts +52 -0
  606. package/src/elements/Revision.ts +14 -14
  607. package/src/elements/RevisionContent.ts +3 -3
  608. package/src/elements/RevisionManager.ts +3 -3
  609. package/src/elements/Run.ts +221 -94
  610. package/src/elements/Section.ts +136 -69
  611. package/src/elements/Shape.ts +4 -4
  612. package/src/elements/StructuredDocumentTag.ts +3 -3
  613. package/src/elements/Table.ts +91 -27
  614. package/src/elements/TableCell.ts +62 -34
  615. package/src/elements/TableGridChange.ts +1 -1
  616. package/src/elements/TableOfContents.ts +1 -1
  617. package/src/elements/TableOfContentsElement.ts +2 -2
  618. package/src/elements/TableRow.ts +192 -48
  619. package/src/elements/TextBox.ts +5 -5
  620. package/src/formatting/AbstractNumbering.ts +3 -3
  621. package/src/formatting/NumberingInstance.ts +2 -2
  622. package/src/formatting/NumberingLevel.ts +201 -10
  623. package/src/formatting/NumberingManager.ts +5 -5
  624. package/src/formatting/Style.ts +382 -86
  625. package/src/formatting/StylesManager.ts +4 -4
  626. package/src/helpers/CleanupHelper.ts +6 -6
  627. package/src/index.ts +118 -127
  628. package/src/internal.ts +79 -0
  629. package/src/managers/DrawingManager.ts +3 -3
  630. package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
  631. package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
  632. package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
  633. package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
  634. package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
  635. package/src/{utils → processors}/RevisionWalker.ts +42 -1
  636. package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
  637. package/src/{utils → processors}/ShadingResolver.ts +5 -5
  638. package/src/{utils → processors}/acceptRevisions.ts +77 -9
  639. package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
  640. package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
  641. package/src/tracking/DocumentTrackingContext.ts +12 -14
  642. package/src/tracking/TrackingContext.ts +8 -8
  643. package/src/types/document-types.ts +53 -0
  644. package/src/types/formatting.ts +4 -4
  645. package/src/types/settings-types.ts +32 -0
  646. package/src/utils/KeyedRegistry.ts +41 -0
  647. package/src/utils/corruptionDetection.ts +2 -2
  648. package/src/utils/deepEqual.ts +58 -0
  649. package/src/utils/list-detection.ts +2 -2
  650. package/src/utils/parsingHelpers.ts +11 -3
  651. package/src/utils/validation.ts +3 -3
  652. package/src/utils/xmlSanitization.ts +1 -1
  653. package/src/validation/RevisionAutoFixer.ts +5 -5
  654. package/src/validation/RevisionValidator.ts +39 -28
  655. package/src/validation/ValidationRuleRegistry.ts +86 -0
  656. package/src/validation/index.ts +3 -3
  657. package/src/xml/XMLBuilder.ts +13 -3
  658. package/src/xml/XMLParser.ts +2 -2
  659. package/src/zip/ZipHandler.ts +4 -4
  660. package/src/zip/ZipReader.ts +3 -3
  661. package/src/zip/ZipWriter.ts +3 -3
  662. package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
  663. package/dist/utils/ChangelogGenerator.js.map +0 -1
  664. package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
  665. package/dist/utils/CompatibilityUpgrader.js.map +0 -1
  666. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
  667. package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
  668. package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
  669. package/dist/utils/MoveOperationHelper.js.map +0 -1
  670. package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
  671. package/dist/utils/RevisionAwareProcessor.js.map +0 -1
  672. package/dist/utils/RevisionWalker.d.ts.map +0 -1
  673. package/dist/utils/RevisionWalker.js.map +0 -1
  674. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
  675. package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
  676. package/dist/utils/ShadingResolver.d.ts +0 -6
  677. package/dist/utils/ShadingResolver.d.ts.map +0 -1
  678. package/dist/utils/ShadingResolver.js.map +0 -1
  679. package/dist/utils/acceptRevisions.d.ts.map +0 -1
  680. package/dist/utils/acceptRevisions.js.map +0 -1
  681. package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
  682. package/dist/utils/cnfStyleDecoder.js.map +0 -1
  683. package/dist/utils/stripTrackedChanges.d.ts +0 -3
  684. package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
  685. package/dist/utils/stripTrackedChanges.js.map +0 -1
  686. package/src/__tests__/helper-methods.test.ts +0 -512
  687. package/src/constants/CLAUDE.md +0 -28
  688. package/src/core/CLAUDE.md +0 -113
  689. package/src/elements/CLAUDE.md +0 -142
  690. package/src/formatting/CLAUDE.md +0 -78
  691. package/src/managers/CLAUDE.md +0 -47
  692. package/src/tracking/CLAUDE.md +0 -30
  693. package/src/types/CLAUDE.md +0 -39
  694. package/src/utils/CLAUDE.md +0 -168
  695. package/src/validation/CLAUDE.md +0 -40
  696. package/src/xml/CLAUDE.md +0 -65
  697. package/src/zip/CLAUDE.md +0 -55
  698. /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
  699. /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TableRow - Represents a row in a table\n */\n\nimport { deepClone } from '../utils/deepClone';\nimport { TableCell } from './TableCell';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { TableBorders } from './Table';\nimport {\n BasicShadingPattern,\n RowJustification as CommonRowJustification,\n ShadingConfig,\n} from './CommonTypes';\nimport { defaultLogger } from '../utils/logger';\n\n// ============================================================================\n// RE-EXPORTED TYPES (for backward compatibility)\n// ============================================================================\n\n/**\n * Row justification/alignment options\n * @see CommonTypes.RowJustification\n */\nexport type RowJustification = CommonRowJustification;\n\n/**\n * Shading pattern values per ECMA-376\n * @see CommonTypes.BasicShadingPattern for the canonical definition\n */\nexport type ShadingPattern = BasicShadingPattern;\n\n/**\n * Shading configuration\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type Shading = ShadingConfig;\n\n/**\n * Table property exceptions - overrides table-level properties for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n */\nexport interface TablePropertyExceptions {\n /** Border overrides for this row */\n borders?: TableBorders;\n /** Shading override for this row */\n shading?: Shading;\n /** Cell spacing override in twips */\n cellSpacing?: number;\n /** Table width override in twips */\n width?: number;\n /** Table indentation override in twips */\n indentation?: number;\n /** Table justification override */\n justification?: RowJustification;\n}\n\n/**\n * Row formatting options\n */\nexport interface RowFormatting {\n height?: number; // Height in twips\n heightRule?: 'auto' | 'exact' | 'atLeast';\n isHeader?: boolean; // Whether this is a header row\n cantSplit?: boolean; // Prevent row from breaking across pages\n justification?: RowJustification; // Row justification/alignment\n hidden?: boolean; // Hide row\n gridBefore?: number; // Grid columns before first cell\n gridAfter?: number; // Grid columns after last cell\n tablePropertyExceptions?: TablePropertyExceptions; // Table property exceptions for this row\n wBefore?: number; // Width before row in twips (per ECMA-376 §17.4.83)\n wBeforeType?: string; // Width before type (dxa, pct, auto)\n wAfter?: number; // Width after row in twips (per ECMA-376 §17.4.82)\n wAfterType?: string; // Width after type (dxa, pct, auto)\n cellSpacing?: number; // Row-level cell spacing override in twips\n cellSpacingType?: string; // Cell spacing type (dxa, pct)\n cnfStyle?: string; // Conditional formatting bitmask (per ECMA-376 §17.3.1.8)\n divId?: number; // HTML div association (per ECMA-376 §17.4.9)\n}\n\n/**\n * Table row property change tracking (w:trPrChange)\n * Per ECMA-376 Part 1 §17.13.5.38\n */\nexport interface TrPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\n/**\n * Represents a table row\n */\nexport class TableRow {\n private cells: TableCell[] = [];\n private formatting: RowFormatting;\n /** Parent table reference (if row is inside a table) */\n private _parentTable?: import('./Table').Table;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext').TrackingContext;\n /** Table row property change tracking (w:trPrChange) */\n private trPrChange?: TrPrChange;\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create (optional)\n * @param formatting - Row formatting options\n */\n constructor(cellCount?: number, formatting: RowFormatting = {}) {\n this.formatting = formatting;\n\n if (cellCount !== undefined && cellCount > 0) {\n for (let i = 0; i < cellCount; i++) {\n const cell = new TableCell();\n cell._setParentRow(this);\n this.cells.push(cell);\n }\n }\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the table row property change tracking info\n */\n getTrPrChange(): TrPrChange | undefined {\n return this.trPrChange;\n }\n\n /**\n * Sets the table row property change tracking info\n */\n setTrPrChange(change: TrPrChange | undefined): void {\n this.trPrChange = change;\n }\n\n /**\n * Clears the table row property change tracking\n */\n clearTrPrChange(): void {\n this.trPrChange = undefined;\n }\n\n /**\n * Adds a cell to the row\n * @param cell - Cell to add\n * @returns This row for chaining\n */\n addCell(cell: TableCell): this {\n this.cells.push(cell);\n cell._setParentRow(this);\n return this;\n }\n\n /**\n * Creates and adds a new cell\n * @param text - Optional text content for the cell\n * @returns The created cell\n */\n createCell(text?: string): TableCell {\n const cell = new TableCell();\n if (text) {\n cell.createParagraph(text);\n }\n this.cells.push(cell);\n cell._setParentRow(this);\n return cell;\n }\n\n /**\n * Gets a cell by index\n * @param index - Cell index (0-based)\n * @returns The cell at the index, or undefined\n */\n getCell(index: number): TableCell | undefined {\n return this.cells[index];\n }\n\n /**\n * Inserts a cell at the specified index\n * @param index - Position to insert (0-based)\n * @param cell - Cell to insert\n */\n insertCellAt(index: number, cell: TableCell): void {\n this.cells.splice(index, 0, cell);\n cell._setParentRow(this);\n }\n\n /**\n * Removes and returns the cell at the specified index\n * @param index - Position to remove (0-based)\n * @returns The removed cell, or undefined if index is out of bounds\n */\n removeCellAt(index: number): TableCell | undefined {\n if (index < 0 || index >= this.cells.length) return undefined;\n const removed = this.cells.splice(index, 1);\n const cell = removed[0];\n if (cell) cell._setParentRow(undefined);\n return cell;\n }\n\n /**\n * Gets all cells in the row\n * @returns Array of cells\n */\n getCells(): TableCell[] {\n return [...this.cells];\n }\n\n /**\n * Gets the number of cells in the row\n * @returns Number of cells\n */\n getCellCount(): number {\n return this.cells.length;\n }\n\n /**\n * Calculates the total grid span of the row (considering column spans)\n *\n * For tables with merged cells, this returns the number of logical columns\n * this row spans based on the columnSpan values of each cell.\n *\n * @returns Total grid span (sum of all cell spans, where unspanned cells count as 1)\n *\n * @example\n * ```typescript\n * // Row with 3 cells, middle one spanning 2 columns\n * const row = new TableRow();\n * row.createCell('A'); // span = 1\n * row.createCell('B').setColumnSpan(2); // span = 2\n * row.createCell('C'); // span = 1\n * row.getTotalGridSpan(); // Returns 4\n * ```\n */\n getTotalGridSpan(): number {\n let totalSpan = 0;\n for (const cell of this.cells) {\n const formatting = cell.getFormatting();\n totalSpan += formatting.columnSpan || 1;\n }\n return totalSpan;\n }\n\n /**\n * Validates the row's grid alignment\n *\n * Checks if the total grid span matches the expected column count.\n * Logs a warning if there's a mismatch, which can indicate:\n * - Missing cells (grid span < expected)\n * - Extra cells (grid span > expected)\n * - Incorrect columnSpan values\n *\n * @param expectedColumns - Expected number of columns in the table grid\n * @returns Object with validation result and details\n *\n * @example\n * ```typescript\n * const result = row.validateGridAlignment(4);\n * if (!result.isValid) {\n * console.log(result.message); // \"Row has 3 grid columns but expected 4\"\n * }\n * ```\n */\n validateGridAlignment(expectedColumns: number): {\n isValid: boolean;\n actualSpan: number;\n message?: string;\n } {\n const actualSpan = this.getTotalGridSpan();\n\n if (actualSpan === expectedColumns) {\n return { isValid: true, actualSpan };\n }\n\n const message =\n `Row grid alignment mismatch: has ${actualSpan} grid columns but expected ${expectedColumns}. ` +\n `Cell count: ${this.cells.length}. ` +\n (actualSpan < expectedColumns\n ? 'Missing cells or incorrect columnSpan values.'\n : 'Extra cells or excessive columnSpan values.');\n\n defaultLogger.warn(`[TableRow] ${message}`);\n\n return {\n isValid: false,\n actualSpan,\n message,\n };\n }\n\n /**\n * Sets row height\n * @param twips - Height in twips\n * @param rule - Height rule\n * @returns This row for chaining\n */\n setHeight(twips: number, rule: RowFormatting['heightRule'] = 'atLeast'): this {\n const prevHeight = this.formatting.height;\n const prevRule = this.formatting.heightRule;\n this.formatting.height = twips;\n this.formatting.heightRule = rule;\n if (this.trackingContext?.isEnabled()) {\n if (prevHeight !== twips) {\n this.trackingContext.trackTableChange(this, 'height', prevHeight, twips);\n }\n if (prevRule !== rule) {\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\n }\n }\n return this;\n }\n\n /**\n * Sets the height rule independently of the height value.\n * Per ECMA-376 §17.18.33, valid values are \"auto\", \"atLeast\", \"exact\".\n * When undefined, the w:hRule attribute is omitted (defaults to \"auto\" per spec).\n * @param rule - Height rule, or undefined to omit (use spec default \"auto\")\n * @returns This row for chaining\n */\n setHeightRule(rule: RowFormatting['heightRule']): this {\n const prevRule = this.formatting.heightRule;\n this.formatting.heightRule = rule;\n if (this.trackingContext?.isEnabled() && prevRule !== rule) {\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\n }\n return this;\n }\n\n /**\n * Clears the row height, allowing Word to auto-size the row based on content\n * @returns This row for chaining\n */\n clearHeight(): this {\n delete this.formatting.height;\n delete this.formatting.heightRule;\n return this;\n }\n\n /**\n * Sets whether this is a header row\n * @param isHeader - Whether this is a header row\n * @returns This row for chaining\n */\n setHeader(isHeader = true): this {\n const prev = this.formatting.isHeader;\n this.formatting.isHeader = isHeader;\n if (this.trackingContext?.isEnabled() && prev !== isHeader) {\n this.trackingContext.trackTableChange(this, 'isHeader', prev, isHeader);\n }\n return this;\n }\n\n /**\n * Sets whether row can split across pages\n * @param cantSplit - Whether to prevent splitting\n * @returns This row for chaining\n */\n setCantSplit(cantSplit = true): this {\n const prev = this.formatting.cantSplit;\n this.formatting.cantSplit = cantSplit;\n if (this.trackingContext?.isEnabled() && prev !== cantSplit) {\n this.trackingContext.trackTableChange(this, 'cantSplit', prev, cantSplit);\n }\n return this;\n }\n\n /**\n * Sets row justification/alignment\n * Per ECMA-376 Part 1 §17.4.79 (w:jc)\n * @param alignment - Row justification ('left' | 'center' | 'right' | 'start' | 'end')\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setJustification('center'); // Center-align the entire row\n * ```\n */\n setJustification(alignment: RowJustification): this {\n const prev = this.formatting.justification;\n this.formatting.justification = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackTableChange(this, 'justification', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets whether row is hidden\n * Per ECMA-376 Part 1 §17.4.23 (w:hidden)\n * @param hidden - Whether to hide the row\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setHidden(true); // Hide this row from display\n * ```\n */\n setHidden(hidden = true): this {\n const prev = this.formatting.hidden;\n this.formatting.hidden = hidden;\n if (this.trackingContext?.isEnabled() && prev !== hidden) {\n this.trackingContext.trackTableChange(this, 'hidden', prev, hidden);\n }\n return this;\n }\n\n /**\n * Sets grid columns before first cell\n * Per ECMA-376 Part 1 §17.4.15 (w:gridBefore)\n * Specifies number of grid columns that must be skipped before the first cell\n * @param columns - Number of grid columns to skip before first cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridBefore(2); // Skip 2 columns before first cell\n * ```\n */\n setGridBefore(columns: number): this {\n const prev = this.formatting.gridBefore;\n this.formatting.gridBefore = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridBefore', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets grid columns after last cell\n * Per ECMA-376 Part 1 §17.4.14 (w:gridAfter)\n * Specifies number of grid columns that must be left after the last cell\n * @param columns - Number of grid columns to leave after last cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridAfter(1); // Leave 1 column after last cell\n * ```\n */\n setGridAfter(columns: number): this {\n const prev = this.formatting.gridAfter;\n this.formatting.gridAfter = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridAfter', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets table property exceptions for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n *\n * Allows this row to override table-level properties like borders, shading, and cell spacing.\n * Typically used when merging tables or preserving formatting from legacy documents.\n *\n * @param exceptions - Table property exceptions configuration\n * @returns This row for chaining\n * @example\n * ```typescript\n * // Override borders for this row\n * row.setTablePropertyExceptions({\n * borders: {\n * top: { style: 'single', size: 8, color: 'FF0000' },\n * bottom: { style: 'single', size: 8, color: 'FF0000' }\n * },\n * shading: { fill: 'FFFF00', pattern: 'clear' }\n * });\n * ```\n */\n setTablePropertyExceptions(exceptions: TablePropertyExceptions): this {\n const prev = this.formatting.tablePropertyExceptions;\n this.formatting.tablePropertyExceptions = exceptions;\n if (this.trackingContext?.isEnabled() && prev !== exceptions) {\n this.trackingContext.trackTableChange(this, 'tablePropertyExceptions', prev, exceptions);\n }\n return this;\n }\n\n /**\n * Sets width before row (w:wBefore) per ECMA-376 Part 1 §17.4.83\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWBefore(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wBefore;\n const prevType = this.formatting.wBeforeType;\n this.formatting.wBefore = width;\n this.formatting.wBeforeType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wBefore', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wBeforeType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets width after row (w:wAfter) per ECMA-376 Part 1 §17.4.82\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWAfter(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wAfter;\n const prevType = this.formatting.wAfterType;\n this.formatting.wAfter = width;\n this.formatting.wAfterType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wAfter', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wAfterType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets row-level cell spacing override (w:tblCellSpacing on row)\n * @param spacing - Cell spacing in twips\n * @param type - Spacing type (dxa, pct)\n * @returns This row for chaining\n */\n setRowCellSpacing(spacing: number, type = 'dxa'): this {\n const prevSpacing = this.formatting.cellSpacing;\n const prevType = this.formatting.cellSpacingType;\n this.formatting.cellSpacing = spacing;\n this.formatting.cellSpacingType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevSpacing !== spacing) {\n this.trackingContext.trackTableChange(this, 'cellSpacing', prevSpacing, spacing);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'cellSpacingType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets conditional formatting bitmask for this row (w:cnfStyle)\n * Per ECMA-376 Part 1 §17.3.1.8\n * @param cnfStyle - Binary string (e.g., '100000000000' for firstRow)\n * @returns This row for chaining\n */\n setCnfStyle(cnfStyle: string): this {\n const prev = this.formatting.cnfStyle;\n this.formatting.cnfStyle = cnfStyle;\n if (this.trackingContext?.isEnabled() && prev !== cnfStyle) {\n this.trackingContext.trackTableChange(this, 'cnfStyle', prev, cnfStyle);\n }\n return this;\n }\n\n /**\n * Sets the HTML div ID for web round-trip\n * Per ECMA-376 Part 1 §17.4.9\n * @param id - Div ID number\n * @returns This row for chaining\n */\n setDivId(id: number): this {\n this.formatting.divId = id;\n return this;\n }\n\n /**\n * Gets the HTML div ID\n * @returns Div ID or undefined\n */\n getDivId(): number | undefined {\n return this.formatting.divId;\n }\n\n /**\n * Gets table property exceptions\n * @returns Table property exceptions or undefined\n */\n getTablePropertyExceptions(): TablePropertyExceptions | undefined {\n return this.formatting.tablePropertyExceptions;\n }\n\n /**\n * Gets the row formatting\n * @returns Row formatting\n */\n getFormatting(): RowFormatting {\n return { ...this.formatting };\n }\n\n // ============================================================================\n // Individual Formatting Getters\n // ============================================================================\n\n /**\n * Gets the row height in twips\n * @returns Height in twips or undefined if not set\n */\n getHeight(): number | undefined {\n return this.formatting.height;\n }\n\n /**\n * Gets the row height rule\n * @returns Height rule ('auto', 'exact', 'atLeast') or undefined\n */\n getHeightRule(): string | undefined {\n return this.formatting.heightRule;\n }\n\n /**\n * Checks if this row is marked as a header row\n * @returns True if this is a header row\n */\n getIsHeader(): boolean {\n return this.formatting.isHeader ?? false;\n }\n\n /**\n * Gets whether the row can split across pages\n * @returns True if row cannot split\n */\n getCantSplit(): boolean {\n return this.formatting.cantSplit ?? false;\n }\n\n /**\n * Gets the row justification (alignment)\n * @returns Justification ('left', 'center', 'right') or undefined\n */\n getJustification(): string | undefined {\n return this.formatting.justification;\n }\n\n /**\n * Checks if this row is hidden\n * @returns True if row is hidden\n */\n isHidden(): boolean {\n return this.formatting.hidden ?? false;\n }\n\n /**\n * Sets the parent table reference for this row.\n * Called by Table when adding rows.\n * @internal\n */\n _setParentTable(table: import('./Table').Table | undefined): void {\n this._parentTable = table;\n }\n\n /**\n * Gets the parent table reference for this row.\n * @internal\n */\n _getParentTable(): import('./Table').Table | undefined {\n return this._parentTable;\n }\n\n /**\n * Builds XML for table property exceptions\n * Per ECMA-376 Part 1 §17.4.61\n * @private\n */\n private buildTablePropertyExceptionsXML(exceptions: TablePropertyExceptions): XMLElement[] {\n const children: XMLElement[] = [];\n\n // Add table width exception (w:tblW)\n if (exceptions.width !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblW', {\n 'w:w': exceptions.width,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table justification exception (w:jc)\n if (exceptions.justification) {\n children.push(XMLBuilder.wSelf('jc', { 'w:val': exceptions.justification }));\n }\n\n // Add cell spacing exception (w:tblCellSpacing)\n if (exceptions.cellSpacing !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': exceptions.cellSpacing,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table indentation exception (w:tblInd)\n if (exceptions.indentation !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblInd', {\n 'w:w': exceptions.indentation,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table borders exception (w:tblBorders)\n if (exceptions.borders) {\n const borderChildren = this.buildBordersXML(exceptions.borders);\n if (borderChildren.length > 0) {\n children.push(XMLBuilder.w('tblBorders', undefined, borderChildren));\n }\n }\n\n // Add shading exception (w:shd)\n if (exceptions.shading) {\n const shdAttrs: Record<string, string> = {};\n if (exceptions.shading.pattern) shdAttrs['w:val'] = exceptions.shading.pattern;\n if (exceptions.shading.color) shdAttrs['w:color'] = exceptions.shading.color;\n if (exceptions.shading.fill) shdAttrs['w:fill'] = exceptions.shading.fill;\n if (exceptions.shading.themeColor) shdAttrs['w:themeColor'] = exceptions.shading.themeColor;\n if (exceptions.shading.themeFill) shdAttrs['w:themeFill'] = exceptions.shading.themeFill;\n if (exceptions.shading.themeFillShade)\n shdAttrs['w:themeFillShade'] = exceptions.shading.themeFillShade;\n if (exceptions.shading.themeFillTint)\n shdAttrs['w:themeFillTint'] = exceptions.shading.themeFillTint;\n if (exceptions.shading.themeShade) shdAttrs['w:themeShade'] = exceptions.shading.themeShade;\n if (exceptions.shading.themeTint) shdAttrs['w:themeTint'] = exceptions.shading.themeTint;\n children.push(XMLBuilder.w('shd', shdAttrs));\n }\n\n return children;\n }\n\n /**\n * Builds XML for table borders\n * @private\n */\n private buildBordersXML(borders: TableBorders): XMLElement[] {\n const children: XMLElement[] = [];\n\n const borderNames: (keyof TableBorders)[] = [\n 'top',\n 'left',\n 'bottom',\n 'right',\n 'insideH',\n 'insideV',\n ];\n\n for (const name of borderNames) {\n const border = borders[name];\n if (border) {\n const attrs: Record<string, string | number> = {};\n if (border.style) attrs['w:val'] = border.style;\n if (border.size !== undefined) attrs['w:sz'] = border.size;\n if (border.space !== undefined) attrs['w:space'] = border.space;\n if (border.color) attrs['w:color'] = border.color;\n\n if (Object.keys(attrs).length > 0) {\n children.push(XMLBuilder.wSelf(name, attrs));\n }\n }\n }\n\n return children;\n }\n\n /**\n * Converts the row to WordprocessingML XML element\n * @returns XMLElement representing the row\n */\n toXML(): XMLElement {\n const trPrChildren: XMLElement[] = [];\n\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n\n // 1. cnfStyle (conditional formatting bitmask)\n if (this.formatting.cnfStyle) {\n trPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': this.formatting.cnfStyle }));\n }\n\n // 2. divId\n if (this.formatting.divId !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': this.formatting.divId }));\n }\n\n // 3. gridBefore\n if (this.formatting.gridBefore !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': this.formatting.gridBefore }));\n }\n\n // 4. gridAfter\n if (this.formatting.gridAfter !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': this.formatting.gridAfter }));\n }\n\n // 5. wBefore\n if (this.formatting.wBefore !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': this.formatting.wBefore,\n 'w:type': this.formatting.wBeforeType || 'dxa',\n })\n );\n }\n\n // 6. wAfter\n if (this.formatting.wAfter !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': this.formatting.wAfter,\n 'w:type': this.formatting.wAfterType || 'dxa',\n })\n );\n }\n\n // 7. cantSplit\n if (this.formatting.cantSplit) {\n trPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n }\n\n // 8. trHeight\n if (this.formatting.height !== undefined) {\n const attrs: Record<string, string | number> = {\n 'w:val': this.formatting.height,\n };\n if (this.formatting.heightRule) {\n attrs['w:hRule'] = this.formatting.heightRule;\n }\n trPrChildren.push(XMLBuilder.wSelf('trHeight', attrs));\n }\n\n // 9. tblHeader\n if (this.formatting.isHeader) {\n trPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n }\n\n // 10. tblCellSpacing\n if (this.formatting.cellSpacing !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': this.formatting.cellSpacing,\n 'w:type': this.formatting.cellSpacingType || 'dxa',\n })\n );\n }\n\n // 11. jc (map 'start'/'end' to valid ST_JcTable values)\n if (this.formatting.justification) {\n const jcMap: Record<string, string> = { start: 'left', end: 'right' };\n const jcVal = jcMap[this.formatting.justification] || this.formatting.justification;\n trPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));\n }\n\n // 12. hidden\n if (this.formatting.hidden) {\n trPrChildren.push(XMLBuilder.wSelf('hidden'));\n }\n\n // Add table row property change (w:trPrChange) per ECMA-376 Part 1 §17.13.5.38\n // Must be last child of w:trPr\n if (this.trPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.trPrChange.id,\n 'w:author': this.trPrChange.author,\n 'w:date': this.trPrChange.date,\n };\n const prevTrPrChildren: XMLElement[] = [];\n const prev = this.trPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n if (prev.cnfStyle) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': prev.cnfStyle }));\n }\n if (prev.divId !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': prev.divId }));\n }\n if (prev.gridBefore !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': prev.gridBefore }));\n }\n if (prev.gridAfter !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': prev.gridAfter }));\n }\n if (prev.wBefore !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': prev.wBefore,\n 'w:type': prev.wBeforeType || 'dxa',\n })\n );\n }\n if (prev.wAfter !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': prev.wAfter,\n 'w:type': prev.wAfterType || 'dxa',\n })\n );\n }\n if (prev.cantSplit) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n }\n if (prev.height !== undefined) {\n const heightAttrs: Record<string, string | number> = { 'w:val': prev.height };\n if (prev.heightRule) heightAttrs['w:hRule'] = prev.heightRule;\n prevTrPrChildren.push(XMLBuilder.wSelf('trHeight', heightAttrs));\n }\n if (prev.isHeader) {\n prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n }\n if (prev.cellSpacing !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': prev.cellSpacing,\n 'w:type': prev.cellSpacingType || 'dxa',\n })\n );\n }\n if (prev.justification) {\n const jcPrevMap: Record<string, string> = { start: 'left', end: 'right' };\n prevTrPrChildren.push(\n XMLBuilder.wSelf('jc', { 'w:val': jcPrevMap[prev.justification] || prev.justification })\n );\n }\n if (prev.hidden) {\n prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));\n }\n }\n const prevTrPr = XMLBuilder.w('trPr', undefined, prevTrPrChildren);\n trPrChildren.push(XMLBuilder.w('trPrChange', changeAttrs, [prevTrPr]));\n }\n\n // Build row element\n // Per ECMA-376 §17.4.78 (CT_Row): tblPrEx → trPr → tc*\n const rowChildren: XMLElement[] = [];\n\n // Add table property exceptions (tblPrEx) - must come BEFORE trPr per CT_Row\n if (this.formatting.tablePropertyExceptions) {\n const tblPrExChildren = this.buildTablePropertyExceptionsXML(\n this.formatting.tablePropertyExceptions\n );\n if (tblPrExChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('tblPrEx', undefined, tblPrExChildren));\n }\n }\n\n // Add row properties if there are any\n if (trPrChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('trPr', undefined, trPrChildren));\n }\n\n // Add all cells - each cell is independent\n // Note: gridSpan (columnSpan) means a single cell spans multiple columns in the grid,\n // it does NOT mean subsequent cells should be skipped. Each cell in the array\n // represents a distinct cell that should be output to the XML.\n for (const cell of this.cells) {\n rowChildren.push(cell.toXML());\n }\n\n return XMLBuilder.w('tr', undefined, rowChildren);\n }\n\n /**\n * Gets the text content of all cells as a string array\n *\n * @returns Array of cell text values\n *\n * @example\n * ```typescript\n * const values = row.toArray(); // ['Alice', '30', 'NYC']\n * ```\n */\n toArray(): string[] {\n return this.cells.map((cell) => cell.getText());\n }\n\n /**\n * Gets the concatenated text of all cells, separated by a delimiter\n *\n * @param separator - Separator between cell texts (default: tab)\n * @returns Concatenated cell text\n *\n * @example\n * ```typescript\n * console.log(row.getText()); // \"Alice\\t30\\tNYC\"\n * console.log(row.getText(', ')); // \"Alice, 30, NYC\"\n * ```\n */\n getText(separator = '\\t'): string {\n return this.cells.map((cell) => cell.getText()).join(separator);\n }\n\n /**\n * Creates a deep clone of this row\n *\n * Copies all cells (via TableCell.clone()), formatting, and property change\n * tracking. The clone is independent of the original. Parent table reference\n * is NOT copied (set by Table.addRow/insertRow).\n *\n * @returns New TableRow instance with the same structure and content\n *\n * @example\n * ```typescript\n * const row = new TableRow(3);\n * row.getCell(0)?.createParagraph('Cell A');\n * row.setHeader(true);\n *\n * const copy = row.clone();\n * copy.getCell(0)?.createParagraph('Modified');\n * // Original row unchanged\n * ```\n */\n clone(): TableRow {\n const clonedRow = new TableRow(0, deepClone(this.formatting));\n\n for (const cell of this.cells) {\n clonedRow.addCell(cell.clone());\n }\n\n if (this.trPrChange) {\n clonedRow.setTrPrChange(deepClone(this.trPrChange));\n }\n\n return clonedRow;\n }\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create\n * @param formatting - Row formatting\n * @returns New TableRow instance\n */\n static create(cellCount?: number, formatting?: RowFormatting): TableRow {\n return new TableRow(cellCount, formatting);\n }\n}\n"]}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../src/elements/TableRow.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TableRow - Represents a row in a table\n */\n\nimport { deepClone } from '../utils/deepClone.js';\nimport { TableCell } from './TableCell.js';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { TableBorders } from './Table.js';\nimport {\n BasicShadingPattern,\n RowJustification as CommonRowJustification,\n ShadingConfig,\n buildShadingAttributes,\n} from './CommonTypes.js';\nimport { defaultLogger } from '../utils/logger.js';\n\n// ============================================================================\n// RE-EXPORTED TYPES (for backward compatibility)\n// ============================================================================\n\n/**\n * Row justification/alignment options\n * @see CommonTypes.RowJustification\n */\nexport type RowJustification = CommonRowJustification;\n\n/**\n * Shading pattern values per ECMA-376\n * @see CommonTypes.BasicShadingPattern for the canonical definition\n */\nexport type ShadingPattern = BasicShadingPattern;\n\n/**\n * Shading configuration\n * @see ShadingConfig in CommonTypes.ts for the canonical definition\n */\nexport type Shading = ShadingConfig;\n\n/**\n * Table property exceptions - overrides table-level properties for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n */\nexport interface TablePropertyExceptions {\n /** Border overrides for this row */\n borders?: TableBorders;\n /** Shading override for this row */\n shading?: Shading;\n /** Cell spacing override in twips */\n cellSpacing?: number;\n /** Table width override in twips */\n width?: number;\n /** Table indentation override in twips */\n indentation?: number;\n /** Table justification override */\n justification?: RowJustification;\n}\n\n/**\n * Row formatting options\n */\nexport interface RowFormatting {\n height?: number; // Height in twips\n heightRule?: 'auto' | 'exact' | 'atLeast';\n isHeader?: boolean; // Whether this is a header row\n cantSplit?: boolean; // Prevent row from breaking across pages\n justification?: RowJustification; // Row justification/alignment\n hidden?: boolean; // Hide row\n gridBefore?: number; // Grid columns before first cell\n gridAfter?: number; // Grid columns after last cell\n tablePropertyExceptions?: TablePropertyExceptions; // Table property exceptions for this row\n wBefore?: number; // Width before row in twips (per ECMA-376 §17.4.83)\n wBeforeType?: string; // Width before type (dxa, pct, auto)\n wAfter?: number; // Width after row in twips (per ECMA-376 §17.4.82)\n wAfterType?: string; // Width after type (dxa, pct, auto)\n cellSpacing?: number; // Row-level cell spacing override in twips\n cellSpacingType?: string; // Cell spacing type (dxa, pct)\n cnfStyle?: string; // Conditional formatting bitmask (per ECMA-376 §17.3.1.8)\n divId?: number; // HTML div association (per ECMA-376 §17.4.9)\n /**\n * Tracked row insertion (w:ins inside w:trPr) — ECMA-376 §17.13.5.19.\n * Marks the entire row as inserted as part of a tracked revision. String\n * fields for consistency with `TrPrChange`.\n */\n rowInsertion?: RowTrackChange;\n /**\n * Tracked row deletion (w:del inside w:trPr) — ECMA-376 §17.13.5.14.\n * Marks the entire row as deleted as part of a tracked revision.\n */\n rowDeletion?: RowTrackChange;\n}\n\n/**\n * Track-change metadata for row-level w:ins / w:del (CT_TrackChange).\n * Per ECMA-376 Part 1 §17.13.5: each requires author + date; id per ST_DecimalNumber.\n */\nexport interface RowTrackChange {\n /** Unique revision id (ST_DecimalNumber, represented as string to match TrPrChange) */\n id: string;\n /** Author of the revision (required per schema) */\n author: string;\n /** ISO-8601 date string of the revision */\n date: string;\n}\n\n/**\n * Table row property change tracking (w:trPrChange)\n * Per ECMA-376 Part 1 §17.13.5.38\n */\nexport interface TrPrChange {\n author: string;\n date: string;\n id: string;\n previousProperties: Record<string, any>;\n}\n\n/**\n * Represents a table row\n */\nexport class TableRow {\n private cells: TableCell[] = [];\n private formatting: RowFormatting;\n /** Parent table reference (if row is inside a table) */\n private _parentTable?: import('./Table.js').Table;\n /** Tracking context for automatic change tracking */\n private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;\n /** Table row property change tracking (w:trPrChange) */\n private trPrChange?: TrPrChange;\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create (optional)\n * @param formatting - Row formatting options\n */\n constructor(cellCount?: number, formatting: RowFormatting = {}) {\n this.formatting = formatting;\n\n if (cellCount !== undefined && cellCount > 0) {\n for (let i = 0; i < cellCount; i++) {\n const cell = new TableCell();\n cell._setParentRow(this);\n this.cells.push(cell);\n }\n }\n }\n\n /**\n * Sets the tracking context for automatic change tracking.\n * Called by Document when track changes is enabled.\n * @internal\n */\n _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {\n this.trackingContext = context;\n }\n\n /**\n * Gets the table row property change tracking info\n */\n getTrPrChange(): TrPrChange | undefined {\n return this.trPrChange;\n }\n\n /**\n * Sets the table row property change tracking info\n */\n setTrPrChange(change: TrPrChange | undefined): void {\n this.trPrChange = change;\n }\n\n /**\n * Clears the table row property change tracking\n */\n clearTrPrChange(): void {\n this.trPrChange = undefined;\n }\n\n /**\n * Gets tracked row-insertion metadata (w:ins inside w:trPr).\n * Per ECMA-376 Part 1 §17.13.5.19.\n */\n getRowInsertion(): RowTrackChange | undefined {\n return this.formatting.rowInsertion;\n }\n\n /**\n * Sets tracked row-insertion metadata. Pass undefined to clear.\n */\n setRowInsertion(change: RowTrackChange | undefined): this {\n this.formatting.rowInsertion = change;\n return this;\n }\n\n /**\n * Gets tracked row-deletion metadata (w:del inside w:trPr).\n * Per ECMA-376 Part 1 §17.13.5.14.\n */\n getRowDeletion(): RowTrackChange | undefined {\n return this.formatting.rowDeletion;\n }\n\n /**\n * Sets tracked row-deletion metadata. Pass undefined to clear.\n */\n setRowDeletion(change: RowTrackChange | undefined): this {\n this.formatting.rowDeletion = change;\n return this;\n }\n\n /**\n * Adds a cell to the row\n * @param cell - Cell to add\n * @returns This row for chaining\n */\n addCell(cell: TableCell): this {\n this.cells.push(cell);\n cell._setParentRow(this);\n return this;\n }\n\n /**\n * Creates and adds a new cell\n * @param text - Optional text content for the cell\n * @returns The created cell\n */\n createCell(text?: string): TableCell {\n const cell = new TableCell();\n if (text) {\n cell.createParagraph(text);\n }\n this.cells.push(cell);\n cell._setParentRow(this);\n return cell;\n }\n\n /**\n * Gets a cell by index\n * @param index - Cell index (0-based)\n * @returns The cell at the index, or undefined\n */\n getCell(index: number): TableCell | undefined {\n return this.cells[index];\n }\n\n /**\n * Inserts a cell at the specified index\n * @param index - Position to insert (0-based)\n * @param cell - Cell to insert\n */\n insertCellAt(index: number, cell: TableCell): void {\n this.cells.splice(index, 0, cell);\n cell._setParentRow(this);\n }\n\n /**\n * Removes and returns the cell at the specified index\n * @param index - Position to remove (0-based)\n * @returns The removed cell, or undefined if index is out of bounds\n */\n removeCellAt(index: number): TableCell | undefined {\n if (index < 0 || index >= this.cells.length) return undefined;\n const removed = this.cells.splice(index, 1);\n const cell = removed[0];\n if (cell) cell._setParentRow(undefined);\n return cell;\n }\n\n /**\n * Gets all cells in the row\n * @returns Array of cells\n */\n getCells(): TableCell[] {\n return [...this.cells];\n }\n\n /**\n * Gets the number of cells in the row\n * @returns Number of cells\n */\n getCellCount(): number {\n return this.cells.length;\n }\n\n /**\n * Calculates the total grid span of the row (considering column spans)\n *\n * For tables with merged cells, this returns the number of logical columns\n * this row spans based on the columnSpan values of each cell.\n *\n * @returns Total grid span (sum of all cell spans, where unspanned cells count as 1)\n *\n * @example\n * ```typescript\n * // Row with 3 cells, middle one spanning 2 columns\n * const row = new TableRow();\n * row.createCell('A'); // span = 1\n * row.createCell('B').setColumnSpan(2); // span = 2\n * row.createCell('C'); // span = 1\n * row.getTotalGridSpan(); // Returns 4\n * ```\n */\n getTotalGridSpan(): number {\n let totalSpan = 0;\n for (const cell of this.cells) {\n const formatting = cell.getFormatting();\n totalSpan += formatting.columnSpan || 1;\n }\n return totalSpan;\n }\n\n /**\n * Validates the row's grid alignment\n *\n * Checks if the total grid span matches the expected column count.\n * Logs a warning if there's a mismatch, which can indicate:\n * - Missing cells (grid span < expected)\n * - Extra cells (grid span > expected)\n * - Incorrect columnSpan values\n *\n * @param expectedColumns - Expected number of columns in the table grid\n * @returns Object with validation result and details\n *\n * @example\n * ```typescript\n * const result = row.validateGridAlignment(4);\n * if (!result.isValid) {\n * console.log(result.message); // \"Row has 3 grid columns but expected 4\"\n * }\n * ```\n */\n validateGridAlignment(expectedColumns: number): {\n isValid: boolean;\n actualSpan: number;\n message?: string;\n } {\n const actualSpan = this.getTotalGridSpan();\n\n if (actualSpan === expectedColumns) {\n return { isValid: true, actualSpan };\n }\n\n const message =\n `Row grid alignment mismatch: has ${actualSpan} grid columns but expected ${expectedColumns}. ` +\n `Cell count: ${this.cells.length}. ` +\n (actualSpan < expectedColumns\n ? 'Missing cells or incorrect columnSpan values.'\n : 'Extra cells or excessive columnSpan values.');\n\n defaultLogger.warn(`[TableRow] ${message}`);\n\n return {\n isValid: false,\n actualSpan,\n message,\n };\n }\n\n /**\n * Sets row height\n * @param twips - Height in twips\n * @param rule - Height rule\n * @returns This row for chaining\n */\n setHeight(twips: number, rule: RowFormatting['heightRule'] = 'atLeast'): this {\n const prevHeight = this.formatting.height;\n const prevRule = this.formatting.heightRule;\n this.formatting.height = twips;\n this.formatting.heightRule = rule;\n if (this.trackingContext?.isEnabled()) {\n if (prevHeight !== twips) {\n this.trackingContext.trackTableChange(this, 'height', prevHeight, twips);\n }\n if (prevRule !== rule) {\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\n }\n }\n return this;\n }\n\n /**\n * Sets the height rule independently of the height value.\n * Per ECMA-376 §17.18.33, valid values are \"auto\", \"atLeast\", \"exact\".\n * When undefined, the w:hRule attribute is omitted (defaults to \"auto\" per spec).\n * @param rule - Height rule, or undefined to omit (use spec default \"auto\")\n * @returns This row for chaining\n */\n setHeightRule(rule: RowFormatting['heightRule']): this {\n const prevRule = this.formatting.heightRule;\n this.formatting.heightRule = rule;\n if (this.trackingContext?.isEnabled() && prevRule !== rule) {\n this.trackingContext.trackTableChange(this, 'heightRule', prevRule, rule);\n }\n return this;\n }\n\n /**\n * Clears the row height, allowing Word to auto-size the row based on content\n * @returns This row for chaining\n */\n clearHeight(): this {\n delete this.formatting.height;\n delete this.formatting.heightRule;\n return this;\n }\n\n /**\n * Sets whether this is a header row\n * @param isHeader - Whether this is a header row\n * @returns This row for chaining\n */\n setHeader(isHeader = true): this {\n const prev = this.formatting.isHeader;\n this.formatting.isHeader = isHeader;\n if (this.trackingContext?.isEnabled() && prev !== isHeader) {\n this.trackingContext.trackTableChange(this, 'isHeader', prev, isHeader);\n }\n return this;\n }\n\n /**\n * Sets whether row can split across pages\n * @param cantSplit - Whether to prevent splitting\n * @returns This row for chaining\n */\n setCantSplit(cantSplit = true): this {\n const prev = this.formatting.cantSplit;\n this.formatting.cantSplit = cantSplit;\n if (this.trackingContext?.isEnabled() && prev !== cantSplit) {\n this.trackingContext.trackTableChange(this, 'cantSplit', prev, cantSplit);\n }\n return this;\n }\n\n /**\n * Sets row justification/alignment\n * Per ECMA-376 Part 1 §17.4.79 (w:jc)\n * @param alignment - Row justification ('left' | 'center' | 'right' | 'start' | 'end')\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setJustification('center'); // Center-align the entire row\n * ```\n */\n setJustification(alignment: RowJustification): this {\n const prev = this.formatting.justification;\n this.formatting.justification = alignment;\n if (this.trackingContext?.isEnabled() && prev !== alignment) {\n this.trackingContext.trackTableChange(this, 'justification', prev, alignment);\n }\n return this;\n }\n\n /**\n * Sets whether row is hidden\n * Per ECMA-376 Part 1 §17.4.23 (w:hidden)\n * @param hidden - Whether to hide the row\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setHidden(true); // Hide this row from display\n * ```\n */\n setHidden(hidden = true): this {\n const prev = this.formatting.hidden;\n this.formatting.hidden = hidden;\n if (this.trackingContext?.isEnabled() && prev !== hidden) {\n this.trackingContext.trackTableChange(this, 'hidden', prev, hidden);\n }\n return this;\n }\n\n /**\n * Sets grid columns before first cell\n * Per ECMA-376 Part 1 §17.4.15 (w:gridBefore)\n * Specifies number of grid columns that must be skipped before the first cell\n * @param columns - Number of grid columns to skip before first cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridBefore(2); // Skip 2 columns before first cell\n * ```\n */\n setGridBefore(columns: number): this {\n const prev = this.formatting.gridBefore;\n this.formatting.gridBefore = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridBefore', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets grid columns after last cell\n * Per ECMA-376 Part 1 §17.4.14 (w:gridAfter)\n * Specifies number of grid columns that must be left after the last cell\n * @param columns - Number of grid columns to leave after last cell\n * @returns This row for chaining\n * @example\n * ```typescript\n * row.setGridAfter(1); // Leave 1 column after last cell\n * ```\n */\n setGridAfter(columns: number): this {\n const prev = this.formatting.gridAfter;\n this.formatting.gridAfter = columns;\n if (this.trackingContext?.isEnabled() && prev !== columns) {\n this.trackingContext.trackTableChange(this, 'gridAfter', prev, columns);\n }\n return this;\n }\n\n /**\n * Sets table property exceptions for this row\n * Per ECMA-376 Part 1 §17.4.61 (w:tblPrEx)\n *\n * Allows this row to override table-level properties like borders, shading, and cell spacing.\n * Typically used when merging tables or preserving formatting from legacy documents.\n *\n * @param exceptions - Table property exceptions configuration\n * @returns This row for chaining\n * @example\n * ```typescript\n * // Override borders for this row\n * row.setTablePropertyExceptions({\n * borders: {\n * top: { style: 'single', size: 8, color: 'FF0000' },\n * bottom: { style: 'single', size: 8, color: 'FF0000' }\n * },\n * shading: { fill: 'FFFF00', pattern: 'clear' }\n * });\n * ```\n */\n setTablePropertyExceptions(exceptions: TablePropertyExceptions): this {\n const prev = this.formatting.tablePropertyExceptions;\n this.formatting.tablePropertyExceptions = exceptions;\n if (this.trackingContext?.isEnabled() && prev !== exceptions) {\n this.trackingContext.trackTableChange(this, 'tablePropertyExceptions', prev, exceptions);\n }\n return this;\n }\n\n /**\n * Sets width before row (w:wBefore) per ECMA-376 Part 1 §17.4.83\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWBefore(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wBefore;\n const prevType = this.formatting.wBeforeType;\n this.formatting.wBefore = width;\n this.formatting.wBeforeType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wBefore', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wBeforeType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets width after row (w:wAfter) per ECMA-376 Part 1 §17.4.82\n * @param width - Width in twips\n * @param type - Width type (dxa, pct, auto)\n * @returns This row for chaining\n */\n setWAfter(width: number, type = 'dxa'): this {\n const prevWidth = this.formatting.wAfter;\n const prevType = this.formatting.wAfterType;\n this.formatting.wAfter = width;\n this.formatting.wAfterType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevWidth !== width) {\n this.trackingContext.trackTableChange(this, 'wAfter', prevWidth, width);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'wAfterType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets row-level cell spacing override (w:tblCellSpacing on row)\n * @param spacing - Cell spacing in twips\n * @param type - Spacing type (dxa, pct)\n * @returns This row for chaining\n */\n setRowCellSpacing(spacing: number, type = 'dxa'): this {\n const prevSpacing = this.formatting.cellSpacing;\n const prevType = this.formatting.cellSpacingType;\n this.formatting.cellSpacing = spacing;\n this.formatting.cellSpacingType = type;\n if (this.trackingContext?.isEnabled()) {\n if (prevSpacing !== spacing) {\n this.trackingContext.trackTableChange(this, 'cellSpacing', prevSpacing, spacing);\n }\n if (prevType !== type) {\n this.trackingContext.trackTableChange(this, 'cellSpacingType', prevType, type);\n }\n }\n return this;\n }\n\n /**\n * Sets conditional formatting bitmask for this row (w:cnfStyle)\n * Per ECMA-376 Part 1 §17.3.1.8\n * @param cnfStyle - Binary string (e.g., '100000000000' for firstRow)\n * @returns This row for chaining\n */\n setCnfStyle(cnfStyle: string): this {\n const prev = this.formatting.cnfStyle;\n this.formatting.cnfStyle = cnfStyle;\n if (this.trackingContext?.isEnabled() && prev !== cnfStyle) {\n this.trackingContext.trackTableChange(this, 'cnfStyle', prev, cnfStyle);\n }\n return this;\n }\n\n /**\n * Sets the HTML div ID for web round-trip\n * Per ECMA-376 Part 1 §17.4.9\n * @param id - Div ID number\n * @returns This row for chaining\n */\n setDivId(id: number): this {\n this.formatting.divId = id;\n return this;\n }\n\n /**\n * Gets the HTML div ID\n * @returns Div ID or undefined\n */\n getDivId(): number | undefined {\n return this.formatting.divId;\n }\n\n /**\n * Gets table property exceptions\n * @returns Table property exceptions or undefined\n */\n getTablePropertyExceptions(): TablePropertyExceptions | undefined {\n return this.formatting.tablePropertyExceptions;\n }\n\n /**\n * Gets the row formatting\n * @returns Row formatting\n */\n getFormatting(): RowFormatting {\n return { ...this.formatting };\n }\n\n // ============================================================================\n // Individual Formatting Getters\n // ============================================================================\n\n /**\n * Gets the row height in twips\n * @returns Height in twips or undefined if not set\n */\n getHeight(): number | undefined {\n return this.formatting.height;\n }\n\n /**\n * Gets the row height rule\n * @returns Height rule ('auto', 'exact', 'atLeast') or undefined\n */\n getHeightRule(): string | undefined {\n return this.formatting.heightRule;\n }\n\n /**\n * Checks if this row is marked as a header row\n * @returns True if this is a header row\n */\n getIsHeader(): boolean {\n return this.formatting.isHeader ?? false;\n }\n\n /**\n * Gets whether the row can split across pages\n * @returns True if row cannot split\n */\n getCantSplit(): boolean {\n return this.formatting.cantSplit ?? false;\n }\n\n /**\n * Gets the row justification (alignment)\n * @returns Justification ('left', 'center', 'right') or undefined\n */\n getJustification(): string | undefined {\n return this.formatting.justification;\n }\n\n /**\n * Checks if this row is hidden\n * @returns True if row is hidden\n */\n isHidden(): boolean {\n return this.formatting.hidden ?? false;\n }\n\n /**\n * Sets the parent table reference for this row.\n * Called by Table when adding rows.\n * @internal\n */\n _setParentTable(table: import('./Table.js').Table | undefined): void {\n this._parentTable = table;\n }\n\n /**\n * Gets the parent table reference for this row.\n * @internal\n */\n _getParentTable(): import('./Table.js').Table | undefined {\n return this._parentTable;\n }\n\n /**\n * Builds XML for table property exceptions\n * Per ECMA-376 Part 1 §17.4.61\n * @private\n */\n private buildTablePropertyExceptionsXML(exceptions: TablePropertyExceptions): XMLElement[] {\n const children: XMLElement[] = [];\n\n // Add table width exception (w:tblW)\n if (exceptions.width !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblW', {\n 'w:w': exceptions.width,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table justification exception (w:jc). Per §17.4.29 CT_JcTable the\n // ISO/ECMA spec allows five values (start, center, end, left, right),\n // but the Open XML SDK's `TableJustification` class (used for jc inside\n // tblPrEx AND trPr) only accepts Center/Left/Right via the narrower\n // `TableRowAlignmentValues` enum. Map bidi-aware spellings down to\n // their LTR equivalents so output passes strict validation. (Same\n // mapping as the trPr path — see `project_sdk_rowjc_narrower_than_spec`\n // memory and iteration 67.)\n if (exceptions.justification) {\n const jcMap: Record<string, string> = { start: 'left', end: 'right' };\n const jcVal = jcMap[exceptions.justification] || exceptions.justification;\n children.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));\n }\n\n // Add cell spacing exception (w:tblCellSpacing)\n if (exceptions.cellSpacing !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': exceptions.cellSpacing,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table indentation exception (w:tblInd)\n if (exceptions.indentation !== undefined) {\n children.push(\n XMLBuilder.wSelf('tblInd', {\n 'w:w': exceptions.indentation,\n 'w:type': 'dxa',\n })\n );\n }\n\n // Add table borders exception (w:tblBorders)\n if (exceptions.borders) {\n const borderChildren = this.buildBordersXML(exceptions.borders);\n if (borderChildren.length > 0) {\n children.push(XMLBuilder.w('tblBorders', undefined, borderChildren));\n }\n }\n\n // Add shading exception (w:shd). `w:val` is REQUIRED on CT_Shd per\n // ECMA-376 §17.3.1.31 — use the shared helper so callers that set\n // only `fill` (no `pattern`) still produce a validator-clean\n // `<w:shd w:val=\"clear\" w:fill=\"…\"/>` rather than an invalid\n // `<w:shd w:fill=\"…\"/>` missing the required attribute.\n if (exceptions.shading) {\n const shdAttrs = buildShadingAttributes(exceptions.shading);\n // wSelf so the emitted shd is self-closing (matches all other shd\n // emission in the codebase). The previous `XMLBuilder.w(...)` call\n // produced `<w:shd>…</w:shd>` with no children — structurally ok\n // but inconsistent with the rest of the serializer.\n children.push(XMLBuilder.wSelf('shd', shdAttrs));\n }\n\n return children;\n }\n\n /**\n * Builds XML for table borders\n * @private\n */\n private buildBordersXML(borders: TableBorders): XMLElement[] {\n const children: XMLElement[] = [];\n\n const borderNames: (keyof TableBorders)[] = [\n 'top',\n 'left',\n 'bottom',\n 'right',\n 'insideH',\n 'insideV',\n ];\n\n for (const name of borderNames) {\n const border = borders[name];\n if (border) {\n const attrs: Record<string, string | number> = {};\n // CT_Border §17.18.2 requires w:val (ST_Border). Default to \"nil\"\n // when caller didn't specify a style — otherwise strict OOXML\n // validation fails with \"The required attribute 'val' is missing.\"\n attrs['w:val'] = border.style ?? 'nil';\n if (border.size !== undefined) attrs['w:sz'] = border.size;\n if (border.space !== undefined) attrs['w:space'] = border.space;\n if (border.color) attrs['w:color'] = border.color;\n // Full CT_Border attribute set (§17.18.2) for themed-border fidelity\n // on tblPrEx borders.\n const b = border as {\n themeColor?: string;\n themeTint?: string;\n themeShade?: string;\n shadow?: boolean;\n frame?: boolean;\n };\n if (b.themeColor) attrs['w:themeColor'] = b.themeColor;\n if (b.themeTint) attrs['w:themeTint'] = b.themeTint;\n if (b.themeShade) attrs['w:themeShade'] = b.themeShade;\n if (b.shadow !== undefined) attrs['w:shadow'] = b.shadow ? '1' : '0';\n if (b.frame !== undefined) attrs['w:frame'] = b.frame ? '1' : '0';\n\n children.push(XMLBuilder.wSelf(name, attrs));\n }\n }\n\n return children;\n }\n\n /**\n * Converts the row to WordprocessingML XML element\n * @returns XMLElement representing the row\n */\n toXML(): XMLElement {\n const trPrChildren: XMLElement[] = [];\n\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n\n // 1. cnfStyle (conditional formatting bitmask)\n if (this.formatting.cnfStyle) {\n trPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': this.formatting.cnfStyle }));\n }\n\n // 2. divId\n if (this.formatting.divId !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': this.formatting.divId }));\n }\n\n // 3. gridBefore\n if (this.formatting.gridBefore !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': this.formatting.gridBefore }));\n }\n\n // 4. gridAfter\n if (this.formatting.gridAfter !== undefined) {\n trPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': this.formatting.gridAfter }));\n }\n\n // 5. wBefore\n if (this.formatting.wBefore !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': this.formatting.wBefore,\n 'w:type': this.formatting.wBeforeType || 'dxa',\n })\n );\n }\n\n // 6. wAfter\n if (this.formatting.wAfter !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': this.formatting.wAfter,\n 'w:type': this.formatting.wAfterType || 'dxa',\n })\n );\n }\n\n // 7. cantSplit — OnOffOnlyType (not CT_OnOff); ST_OnOffOnly only accepts \"on\"/\"off\".\n // Emit \"off\" for explicit false so an override of a style-inherited cantSplit=true\n // survives round-trip. \"0\"/\"false\" would fail OOXML schema validation here.\n if (this.formatting.cantSplit !== undefined) {\n if (this.formatting.cantSplit) {\n trPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n } else {\n trPrChildren.push(XMLBuilder.wSelf('cantSplit', { 'w:val': 'off' }));\n }\n }\n\n // 8. trHeight\n if (this.formatting.height !== undefined) {\n const attrs: Record<string, string | number> = {\n 'w:val': this.formatting.height,\n };\n if (this.formatting.heightRule) {\n attrs['w:hRule'] = this.formatting.heightRule;\n }\n trPrChildren.push(XMLBuilder.wSelf('trHeight', attrs));\n }\n\n // 9. tblHeader — OnOffOnlyType\n if (this.formatting.isHeader !== undefined) {\n if (this.formatting.isHeader) {\n trPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n } else {\n trPrChildren.push(XMLBuilder.wSelf('tblHeader', { 'w:val': 'off' }));\n }\n }\n\n // 10. tblCellSpacing\n if (this.formatting.cellSpacing !== undefined) {\n trPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': this.formatting.cellSpacing,\n 'w:type': this.formatting.cellSpacingType || 'dxa',\n })\n );\n }\n\n // 11. jc — CT_JcTable per ECMA-376 §17.4.28. The ISO/ECMA spec's\n // ST_JcTable §17.18.45 lists five values (start, center, end, left,\n // right), but the Open XML SDK's row-level TableRowAlignmentValues\n // (and by extension the strict OOXML validator) accepts only three:\n // center / left / right. We therefore map the bidi-aware spellings\n // down to their LTR equivalents on emission. The mapping IS lossy —\n // a row authored with `w:val=\"start\"` in an RTL section will lose\n // its RTL-awareness on round-trip — but emitting start/end directly\n // fails validation. See `project_sdk_rowjc_narrower_than_spec.md`.\n if (this.formatting.justification) {\n const jcMap: Record<string, string> = { start: 'left', end: 'right' };\n const jcVal = jcMap[this.formatting.justification] || this.formatting.justification;\n trPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));\n }\n\n // 12. hidden — OnOffType (full CT_OnOff); emit \"false\" for explicit override\n if (this.formatting.hidden !== undefined) {\n if (this.formatting.hidden) {\n trPrChildren.push(XMLBuilder.wSelf('hidden'));\n } else {\n trPrChildren.push(XMLBuilder.wSelf('hidden', { 'w:val': 'false' }));\n }\n }\n\n // Tracked row insertion / deletion per CT_TrPr (§17.4.79):\n // <xsd:extension base=\"CT_TrPrBase\">\n // <xsd:sequence>\n // <xsd:element name=\"ins\" type=\"CT_TrackChange\" minOccurs=\"0\"/>\n // <xsd:element name=\"del\" type=\"CT_TrackChange\" minOccurs=\"0\"/>\n // <xsd:element name=\"trPrChange\" type=\"CT_TrPrChange\" minOccurs=\"0\"/>\n // </xsd:sequence>\n // </xsd:extension>\n // These markers must appear AFTER the CT_TrPrBase children (cnfStyle..hidden)\n // and BEFORE w:trPrChange — they're how Word records that the entire row\n // was inserted or deleted as a tracked revision.\n if (this.formatting.rowInsertion) {\n const ins = this.formatting.rowInsertion;\n trPrChildren.push(\n XMLBuilder.wSelf('ins', {\n 'w:id': ins.id,\n 'w:author': ins.author,\n 'w:date': ins.date,\n })\n );\n }\n if (this.formatting.rowDeletion) {\n const del = this.formatting.rowDeletion;\n trPrChildren.push(\n XMLBuilder.wSelf('del', {\n 'w:id': del.id,\n 'w:author': del.author,\n 'w:date': del.date,\n })\n );\n }\n\n // Add table row property change (w:trPrChange) per ECMA-376 Part 1 §17.13.5.38\n // Must be last child of w:trPr\n if (this.trPrChange) {\n const changeAttrs: Record<string, string | number> = {\n 'w:id': this.trPrChange.id,\n 'w:author': this.trPrChange.author,\n 'w:date': this.trPrChange.date,\n };\n const prevTrPrChildren: XMLElement[] = [];\n const prev = this.trPrChange.previousProperties;\n if (prev) {\n // Ordered per CT_TrPr (ECMA-376 §17.4.79):\n // cnfStyle → divId → gridBefore → gridAfter → wBefore → wAfter →\n // cantSplit → trHeight → tblHeader → tblCellSpacing → jc → hidden\n if (prev.cnfStyle) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cnfStyle', { 'w:val': prev.cnfStyle }));\n }\n if (prev.divId !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('divId', { 'w:val': prev.divId }));\n }\n if (prev.gridBefore !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridBefore', { 'w:val': prev.gridBefore }));\n }\n if (prev.gridAfter !== undefined) {\n prevTrPrChildren.push(XMLBuilder.wSelf('gridAfter', { 'w:val': prev.gridAfter }));\n }\n if (prev.wBefore !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wBefore', {\n 'w:w': prev.wBefore,\n 'w:type': prev.wBeforeType || 'dxa',\n })\n );\n }\n if (prev.wAfter !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('wAfter', {\n 'w:w': prev.wAfter,\n 'w:type': prev.wAfterType || 'dxa',\n })\n );\n }\n if (prev.cantSplit !== undefined) {\n if (prev.cantSplit) {\n prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));\n } else {\n prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit', { 'w:val': 'off' }));\n }\n }\n if (prev.height !== undefined) {\n const heightAttrs: Record<string, string | number> = { 'w:val': prev.height };\n if (prev.heightRule) heightAttrs['w:hRule'] = prev.heightRule;\n prevTrPrChildren.push(XMLBuilder.wSelf('trHeight', heightAttrs));\n }\n if (prev.isHeader !== undefined) {\n if (prev.isHeader) {\n prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));\n } else {\n prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader', { 'w:val': 'off' }));\n }\n }\n if (prev.cellSpacing !== undefined) {\n prevTrPrChildren.push(\n XMLBuilder.wSelf('tblCellSpacing', {\n 'w:w': prev.cellSpacing,\n 'w:type': prev.cellSpacingType || 'dxa',\n })\n );\n }\n if (prev.justification) {\n const jcPrevMap: Record<string, string> = { start: 'left', end: 'right' };\n prevTrPrChildren.push(\n XMLBuilder.wSelf('jc', { 'w:val': jcPrevMap[prev.justification] || prev.justification })\n );\n }\n if (prev.hidden !== undefined) {\n if (prev.hidden) {\n prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));\n } else {\n prevTrPrChildren.push(XMLBuilder.wSelf('hidden', { 'w:val': 'false' }));\n }\n }\n }\n const prevTrPr = XMLBuilder.w('trPr', undefined, prevTrPrChildren);\n trPrChildren.push(XMLBuilder.w('trPrChange', changeAttrs, [prevTrPr]));\n }\n\n // Build row element\n // Per ECMA-376 §17.4.78 (CT_Row): tblPrEx → trPr → tc*\n const rowChildren: XMLElement[] = [];\n\n // Add table property exceptions (tblPrEx) - must come BEFORE trPr per CT_Row\n if (this.formatting.tablePropertyExceptions) {\n const tblPrExChildren = this.buildTablePropertyExceptionsXML(\n this.formatting.tablePropertyExceptions\n );\n if (tblPrExChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('tblPrEx', undefined, tblPrExChildren));\n }\n }\n\n // Add row properties if there are any\n if (trPrChildren.length > 0) {\n rowChildren.push(XMLBuilder.w('trPr', undefined, trPrChildren));\n }\n\n // Add all cells - each cell is independent\n // Note: gridSpan (columnSpan) means a single cell spans multiple columns in the grid,\n // it does NOT mean subsequent cells should be skipped. Each cell in the array\n // represents a distinct cell that should be output to the XML.\n for (const cell of this.cells) {\n rowChildren.push(cell.toXML());\n }\n\n return XMLBuilder.w('tr', undefined, rowChildren);\n }\n\n /**\n * Gets the text content of all cells as a string array\n *\n * @returns Array of cell text values\n *\n * @example\n * ```typescript\n * const values = row.toArray(); // ['Alice', '30', 'NYC']\n * ```\n */\n toArray(): string[] {\n return this.cells.map((cell) => cell.getText());\n }\n\n /**\n * Gets the concatenated text of all cells, separated by a delimiter\n *\n * @param separator - Separator between cell texts (default: tab)\n * @returns Concatenated cell text\n *\n * @example\n * ```typescript\n * console.log(row.getText()); // \"Alice\\t30\\tNYC\"\n * console.log(row.getText(', ')); // \"Alice, 30, NYC\"\n * ```\n */\n getText(separator = '\\t'): string {\n return this.cells.map((cell) => cell.getText()).join(separator);\n }\n\n /**\n * Creates a deep clone of this row\n *\n * Copies all cells (via TableCell.clone()), formatting, and property change\n * tracking. The clone is independent of the original. Parent table reference\n * is NOT copied (set by Table.addRow/insertRow).\n *\n * @returns New TableRow instance with the same structure and content\n *\n * @example\n * ```typescript\n * const row = new TableRow(3);\n * row.getCell(0)?.createParagraph('Cell A');\n * row.setHeader(true);\n *\n * const copy = row.clone();\n * copy.getCell(0)?.createParagraph('Modified');\n * // Original row unchanged\n * ```\n */\n clone(): TableRow {\n const clonedRow = new TableRow(0, deepClone(this.formatting));\n\n for (const cell of this.cells) {\n clonedRow.addCell(cell.clone());\n }\n\n if (this.trPrChange) {\n clonedRow.setTrPrChange(deepClone(this.trPrChange));\n }\n\n return clonedRow;\n }\n\n /**\n * Creates a new TableRow\n * @param cellCount - Number of cells to create\n * @param formatting - Row formatting\n * @returns New TableRow instance\n */\n static create(cellCount?: number, formatting?: RowFormatting): TableRow {\n return new TableRow(cellCount, formatting);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { XMLElement } from '../xml/XMLBuilder';
2
- import { Paragraph } from './Paragraph';
3
- import { ImagePosition, ImageAnchor, PositionAnchor, HorizontalAlignment, VerticalAlignment } from './Image';
4
- import { BorderDefinition } from './Paragraph';
1
+ import { XMLElement } from '../xml/XMLBuilder.js';
2
+ import { Paragraph } from './Paragraph.js';
3
+ import { ImagePosition, ImageAnchor, PositionAnchor, HorizontalAlignment, VerticalAlignment } from './Image.js';
4
+ import { BorderDefinition } from './Paragraph.js';
5
5
  export interface TextBoxMargins {
6
6
  top: number;
7
7
  bottom: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextBox.d.ts","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TextBox = void 0;
4
- const XMLBuilder_1 = require("../xml/XMLBuilder");
5
- const units_1 = require("../utils/units");
4
+ const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
5
+ const units_js_1 = require("../utils/units.js");
6
6
  class TextBox {
7
7
  width;
8
8
  height;
@@ -103,7 +103,7 @@ class TextBox {
103
103
  }
104
104
  toXML() {
105
105
  const textboxElement = this.isFloating() ? this.createAnchor() : this.createInline();
106
- return XMLBuilder_1.XMLBuilder.w('drawing', undefined, [textboxElement]);
106
+ return XMLBuilder_js_1.XMLBuilder.w('drawing', undefined, [textboxElement]);
107
107
  }
108
108
  createInline() {
109
109
  const children = [];
@@ -387,7 +387,7 @@ class TextBox {
387
387
  }
388
388
  if (this.borders?.size !== undefined) {
389
389
  const lnAttrs = {
390
- w: (this.borders.size * units_1.UNITS.EMUS_PER_POINT).toString(),
390
+ w: (this.borders.size * units_js_1.UNITS.EMUS_PER_POINT).toString(),
391
391
  };
392
392
  const lnChildren = [];
393
393
  lnChildren.push({
@@ -439,8 +439,8 @@ class TextBox {
439
439
  {
440
440
  name: 'w:txbxContent',
441
441
  children: [
442
- XMLBuilder_1.XMLBuilder.w('p', undefined, [
443
- XMLBuilder_1.XMLBuilder.w('r', undefined, [XMLBuilder_1.XMLBuilder.w('t', undefined, [''])]),
442
+ XMLBuilder_js_1.XMLBuilder.w('p', undefined, [
443
+ XMLBuilder_js_1.XMLBuilder.w('r', undefined, [XMLBuilder_js_1.XMLBuilder.w('t', undefined, [''])]),
444
444
  ]),
445
445
  ],
446
446
  },
@@ -1 +1 @@
1
- {"version":3,"file":"TextBox.js","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TextBox - Represents a floating text box in a Word document\n *\n * Text boxes use DrawingML (a:) and WordprocessingML Drawing (wp:) namespaces,\n * plus WordprocessingShape (wps:) namespace for Word 2010+ features.\n *\n * Per ECMA-376 Part 4 (Transitional) and Office Open XML extensions,\n * text boxes in Word documents use the wps:wsp element with wps:txbx content.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { UNITS } from '../utils/units';\nimport { Paragraph } from './Paragraph';\nimport {\n ImagePosition,\n ImageAnchor,\n PositionAnchor,\n HorizontalAlignment,\n VerticalAlignment,\n} from './Image';\nimport { BorderDefinition } from './Paragraph';\n\n/**\n * TextBox margins configuration\n */\nexport interface TextBoxMargins {\n /** Top margin in EMUs */\n top: number;\n /** Bottom margin in EMUs */\n bottom: number;\n /** Left margin in EMUs */\n left: number;\n /** Right margin in EMUs */\n right: number;\n}\n\n/**\n * TextBox fill configuration\n */\nexport interface TextBoxFill {\n /** Fill color in hex (e.g., 'F0F0F0') */\n color: string;\n /** Transparency percentage (0-100) */\n transparency?: number;\n}\n\n/**\n * TextBox properties\n */\nexport interface TextBoxProperties {\n /** Width in EMUs */\n width: number;\n /** Height in EMUs */\n height: number;\n /** Paragraphs within the text box */\n paragraphs?: Paragraph[];\n /** Position configuration */\n position?: ImagePosition;\n /** Anchor configuration */\n anchor?: ImageAnchor;\n /** Fill color and transparency */\n fill?: TextBoxFill;\n /** Border configuration */\n borders?: BorderDefinition;\n /** Internal margins */\n margins?: TextBoxMargins;\n /** TextBox name */\n name?: string;\n /** TextBox description (for accessibility) */\n description?: string;\n}\n\n/**\n * Represents a floating text box\n */\nexport class TextBox {\n private width: number;\n private height: number;\n private paragraphs: Paragraph[] = [];\n private position?: ImagePosition;\n private anchor?: ImageAnchor;\n private fill?: TextBoxFill;\n private borders?: BorderDefinition;\n private margins?: TextBoxMargins;\n private name: string;\n private description: string;\n private docPrId = 1;\n\n /**\n * Creates a new text box\n * @param properties TextBox properties\n * @private Use static factory methods instead (create)\n */\n private constructor(properties: TextBoxProperties) {\n this.width = properties.width;\n this.height = properties.height;\n if (properties.paragraphs) {\n this.paragraphs = properties.paragraphs;\n }\n this.position = properties.position;\n this.anchor = properties.anchor;\n this.fill = properties.fill;\n this.borders = properties.borders;\n this.margins = properties.margins;\n this.name = properties.name || 'TextBox';\n this.description = properties.description || '';\n }\n\n /**\n * Factory method for creating a text box\n * @param width Width in EMUs\n * @param height Height in EMUs\n * @returns New TextBox instance\n * @example\n * const textbox = TextBox.create(inchesToEmus(3), inchesToEmus(2));\n */\n static create(width: number, height: number): TextBox {\n return new TextBox({ width, height });\n }\n\n /**\n * Gets the width in EMUs\n * @returns Width\n */\n getWidth(): number {\n return this.width;\n }\n\n /**\n * Gets the height in EMUs\n * @returns Height\n */\n getHeight(): number {\n return this.height;\n }\n\n /**\n * Adds a paragraph to the text box\n * @param paragraph Paragraph to add\n * @returns This text box for chaining\n */\n addParagraph(paragraph: Paragraph): this {\n this.paragraphs.push(paragraph);\n return this;\n }\n\n /**\n * Gets all paragraphs\n * @returns Array of paragraphs\n */\n getParagraphs(): Paragraph[] {\n return this.paragraphs;\n }\n\n /**\n * Sets text box position (for floating text boxes)\n * @param horizontal Horizontal positioning configuration\n * @param vertical Vertical positioning configuration\n * @returns This text box for chaining\n */\n setPosition(\n horizontal: { anchor: PositionAnchor; offset?: number; alignment?: HorizontalAlignment },\n vertical: { anchor: PositionAnchor; offset?: number; alignment?: VerticalAlignment }\n ): this {\n this.position = { horizontal, vertical };\n return this;\n }\n\n /**\n * Gets the position configuration\n * @returns Position or undefined\n */\n getPosition(): ImagePosition | undefined {\n return this.position;\n }\n\n /**\n * Sets anchor configuration\n * @param options Anchor configuration\n * @returns This text box for chaining\n */\n setAnchor(options: ImageAnchor): this {\n this.anchor = options;\n return this;\n }\n\n /**\n * Gets the anchor configuration\n * @returns Anchor configuration or undefined\n */\n getAnchor(): ImageAnchor | undefined {\n return this.anchor;\n }\n\n /**\n * Sets the fill color\n * @param color Fill color in hex\n * @param transparency Optional transparency percentage (0-100)\n * @returns This text box for chaining\n */\n setFill(color: string, transparency?: number): this {\n this.fill = { color, transparency };\n return this;\n }\n\n /**\n * Gets the fill configuration\n * @returns Fill or undefined\n */\n getFill(): TextBoxFill | undefined {\n return this.fill;\n }\n\n /**\n * Sets the borders\n * @param borders Border configuration\n * @returns This text box for chaining\n */\n setBorders(borders: BorderDefinition): this {\n this.borders = borders;\n return this;\n }\n\n /**\n * Gets the borders configuration\n * @returns Borders or undefined\n */\n getBorders(): BorderDefinition | undefined {\n return this.borders;\n }\n\n /**\n * Sets internal margins\n * @param margins Margin configuration\n * @returns This text box for chaining\n */\n setMargins(margins: TextBoxMargins): this {\n this.margins = margins;\n return this;\n }\n\n /**\n * Gets the margins configuration\n * @returns Margins or undefined\n */\n getMargins(): TextBoxMargins | undefined {\n return this.margins;\n }\n\n /**\n * Sets the text box name\n * @param name TextBox name\n * @returns This text box for chaining\n */\n setName(name: string): this {\n this.name = name;\n return this;\n }\n\n /**\n * Gets the text box name\n * @returns TextBox name\n */\n getName(): string {\n return this.name;\n }\n\n /**\n * Sets the text box description (for accessibility)\n * @param description TextBox description\n * @returns This text box for chaining\n */\n setDescription(description: string): this {\n this.description = description;\n return this;\n }\n\n /**\n * Gets the text box description\n * @returns TextBox description\n */\n getDescription(): string {\n return this.description;\n }\n\n /**\n * Sets the docPr ID (drawing object ID)\n * @param id Document property ID\n * @returns This text box for chaining\n */\n setDocPrId(id: number): this {\n this.docPrId = id;\n return this;\n }\n\n /**\n * Checks if this text box is floating (has anchor or position configuration)\n * @returns True if floating, false if inline\n */\n isFloating(): boolean {\n return this.anchor !== undefined || this.position !== undefined;\n }\n\n /**\n * Generates DrawingML XML for the text box\n * Creates either inline or floating (anchor) text box based on configuration\n * @returns XML element representing the text box\n */\n toXML(): XMLElement {\n // Text boxes are typically floating, but support inline as well\n const textboxElement = this.isFloating() ? this.createAnchor() : this.createInline();\n\n // Create the drawing structure\n return XMLBuilder.w('drawing', undefined, [textboxElement]);\n }\n\n /**\n * Creates the wp:inline element for inline text boxes\n * @private\n */\n private createInline(): XMLElement {\n const children: XMLElement[] = [];\n\n // Extent (size)\n children.push({\n name: 'wp:extent',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n });\n\n // Effect extent\n children.push({\n name: 'wp:effectExtent',\n attributes: {\n l: '0',\n t: '0',\n r: '0',\n b: '0',\n },\n selfClosing: true,\n });\n\n // Document properties\n children.push({\n name: 'wp:docPr',\n attributes: {\n id: this.docPrId.toString(),\n name: this.name,\n descr: this.description,\n },\n selfClosing: true,\n });\n\n // Non-visual graphic frame properties\n children.push({\n name: 'wp:cNvGraphicFramePr',\n selfClosing: true,\n });\n\n // Graphic data (the text box)\n children.push(this.createGraphic());\n\n return {\n name: 'wp:inline',\n attributes: {\n distT: '0',\n distB: '0',\n distL: '0',\n distR: '0',\n },\n children,\n };\n }\n\n /**\n * Creates the wp:anchor element for floating text boxes\n * @private\n */\n private createAnchor(): XMLElement {\n const children: XMLElement[] = [];\n\n const anchorConfig = this.anchor || {\n behindDoc: false,\n locked: false,\n layoutInCell: true,\n allowOverlap: false,\n relativeHeight: 251658240,\n };\n\n // Position H (horizontal)\n if (this.position) {\n const posH = this.position.horizontal;\n const posHChildren: XMLElement[] = [];\n\n if (posH.offset !== undefined) {\n posHChildren.push({\n name: 'wp:posOffset',\n children: [posH.offset.toString()],\n });\n } else if (posH.alignment) {\n posHChildren.push({\n name: 'wp:align',\n children: [posH.alignment],\n });\n }\n\n children.push({\n name: 'wp:positionH',\n attributes: {\n relativeFrom: posH.anchor,\n },\n children: posHChildren,\n });\n }\n\n // Position V (vertical)\n if (this.position) {\n const posV = this.position.vertical;\n const posVChildren: XMLElement[] = [];\n\n if (posV.offset !== undefined) {\n posVChildren.push({\n name: 'wp:posOffset',\n children: [posV.offset.toString()],\n });\n } else if (posV.alignment) {\n posVChildren.push({\n name: 'wp:align',\n children: [posV.alignment],\n });\n }\n\n children.push({\n name: 'wp:positionV',\n attributes: {\n relativeFrom: posV.anchor,\n },\n children: posVChildren,\n });\n }\n\n // Extent (size)\n children.push({\n name: 'wp:extent',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n });\n\n // Effect extent\n children.push({\n name: 'wp:effectExtent',\n attributes: {\n l: '0',\n t: '0',\n r: '0',\n b: '0',\n },\n selfClosing: true,\n });\n\n // Wrap square (default for text boxes)\n children.push({\n name: 'wp:wrapSquare',\n attributes: {\n wrapText: 'bothSides',\n },\n selfClosing: true,\n });\n\n // Document properties\n children.push({\n name: 'wp:docPr',\n attributes: {\n id: this.docPrId.toString(),\n name: this.name,\n descr: this.description,\n },\n selfClosing: true,\n });\n\n // Non-visual graphic frame properties\n children.push({\n name: 'wp:cNvGraphicFramePr',\n selfClosing: true,\n });\n\n // Graphic data (the text box)\n children.push(this.createGraphic());\n\n return {\n name: 'wp:anchor',\n attributes: {\n distT: '0',\n distB: '0',\n distL: '0',\n distR: '0',\n simplePos: '0',\n relativeHeight: anchorConfig.relativeHeight.toString(),\n behindDoc: anchorConfig.behindDoc ? '1' : '0',\n locked: anchorConfig.locked ? '1' : '0',\n layoutInCell: anchorConfig.layoutInCell ? '1' : '0',\n allowOverlap: anchorConfig.allowOverlap ? '1' : '0',\n },\n children,\n };\n }\n\n /**\n * Creates the a:graphic element containing the text box\n * @private\n */\n private createGraphic(): XMLElement {\n return {\n name: 'a:graphic',\n attributes: {\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n },\n children: [\n {\n name: 'a:graphicData',\n attributes: {\n uri: 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n },\n children: [this.createWps()],\n },\n ],\n };\n }\n\n /**\n * Creates the wps:wsp element (WordprocessingShape for text box)\n * @private\n */\n private createWps(): XMLElement {\n const children: XMLElement[] = [];\n\n // Non-visual shape properties\n children.push({\n name: 'wps:cNvSpPr',\n attributes: {\n 'xmlns:wps': 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n txBox: '1', // Indicates this is a text box\n },\n selfClosing: true,\n });\n\n // Shape properties (size, fill, borders)\n children.push(this.createSpPr());\n\n // Text box content\n children.push(this.createTextBoxContent());\n\n // Body properties (margins/insets)\n children.push(this.createBodyPr());\n\n return {\n name: 'wps:wsp',\n attributes: {\n 'xmlns:wps': 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n },\n children,\n };\n }\n\n /**\n * Creates the wps:bodyPr element (text body properties including margins)\n * Per ECMA-376 Part 4, bodyPr specifies inset margins via lIns/tIns/rIns/bIns attributes\n * @private\n */\n private createBodyPr(): XMLElement {\n const attrs: Record<string, string> = {\n rot: '0',\n vert: 'horz',\n wrap: 'square',\n anchor: 't',\n };\n\n // Add margin insets if set\n if (this.margins) {\n if (this.margins.left !== undefined) attrs.lIns = this.margins.left.toString();\n if (this.margins.top !== undefined) attrs.tIns = this.margins.top.toString();\n if (this.margins.right !== undefined) attrs.rIns = this.margins.right.toString();\n if (this.margins.bottom !== undefined) attrs.bIns = this.margins.bottom.toString();\n }\n\n return {\n name: 'wps:bodyPr',\n attributes: attrs,\n selfClosing: true,\n };\n }\n\n /**\n * Creates the wps:spPr element (shape properties for text box)\n * @private\n */\n private createSpPr(): XMLElement {\n const children: XMLElement[] = [];\n\n // Transform (position and size)\n children.push({\n name: 'a:xfrm',\n children: [\n {\n name: 'a:off',\n attributes: { x: '0', y: '0' },\n selfClosing: true,\n },\n {\n name: 'a:ext',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n },\n ],\n });\n\n // Preset geometry (rectangle for text box)\n children.push({\n name: 'a:prstGeom',\n attributes: {\n prst: 'rect',\n },\n children: [\n {\n name: 'a:avLst',\n selfClosing: true,\n },\n ],\n });\n\n // Fill\n if (this.fill) {\n const fillChildren: XMLElement[] = [];\n\n // Transparency\n if (this.fill.transparency !== undefined) {\n const alpha = 100 - this.fill.transparency;\n fillChildren.push({\n name: 'a:alpha',\n attributes: {\n val: Math.round(alpha * 1000).toString(),\n },\n selfClosing: true,\n });\n }\n\n children.push({\n name: 'a:solidFill',\n children: [\n {\n name: 'a:srgbClr',\n attributes: {\n val: this.fill.color.toUpperCase(),\n },\n ...(fillChildren.length > 0 ? { children: fillChildren } : { selfClosing: true }),\n },\n ],\n });\n } else {\n // No fill (transparent background)\n children.push({\n name: 'a:noFill',\n selfClosing: true,\n });\n }\n\n // Borders\n if (this.borders?.size !== undefined) {\n const lnAttrs: Record<string, string> = {\n w: (this.borders.size * UNITS.EMUS_PER_POINT).toString(), // Convert points to EMUs\n };\n\n const lnChildren: XMLElement[] = [];\n\n // Border color\n lnChildren.push({\n name: 'a:solidFill',\n children: [\n {\n name: 'a:srgbClr',\n attributes: {\n val: (this.borders.color || '000000').toUpperCase(),\n },\n selfClosing: true,\n },\n ],\n });\n\n // Border style\n if (this.borders.style && this.borders.style !== 'single') {\n const dashMap: Record<string, string> = {\n dash: 'dash',\n dot: 'dot',\n dashDot: 'dashDot',\n dashDotDot: 'lgDashDotDot',\n };\n const dashStyle = dashMap[this.borders.style] || 'solid';\n if (dashStyle !== 'solid') {\n lnChildren.push({\n name: 'a:prstDash',\n attributes: {\n val: dashStyle,\n },\n selfClosing: true,\n });\n }\n }\n\n children.push({\n name: 'a:ln',\n attributes: lnAttrs,\n children: lnChildren,\n });\n }\n\n return {\n name: 'wps:spPr',\n children,\n };\n }\n\n /**\n * Creates the wps:txbx element (text box content)\n * @private\n */\n private createTextBoxContent(): XMLElement {\n if (this.paragraphs.length === 0) {\n // Empty text box - create empty paragraph\n return {\n name: 'wps:txbx',\n children: [\n {\n name: 'w:txbxContent',\n children: [\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.w('t', undefined, [''])]),\n ]),\n ],\n },\n ],\n };\n }\n\n // Convert paragraphs to XML\n const paragraphXml = this.paragraphs.map((p) => p.toXML());\n\n return {\n name: 'wps:txbx',\n children: [\n {\n name: 'w:txbxContent',\n children: paragraphXml,\n },\n ],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"TextBox.js","sourceRoot":"","sources":["../../src/elements/TextBox.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TextBox - Represents a floating text box in a Word document\n *\n * Text boxes use DrawingML (a:) and WordprocessingML Drawing (wp:) namespaces,\n * plus WordprocessingShape (wps:) namespace for Word 2010+ features.\n *\n * Per ECMA-376 Part 4 (Transitional) and Office Open XML extensions,\n * text boxes in Word documents use the wps:wsp element with wps:txbx content.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { UNITS } from '../utils/units.js';\nimport { Paragraph } from './Paragraph.js';\nimport {\n ImagePosition,\n ImageAnchor,\n PositionAnchor,\n HorizontalAlignment,\n VerticalAlignment,\n} from './Image.js';\nimport { BorderDefinition } from './Paragraph.js';\n\n/**\n * TextBox margins configuration\n */\nexport interface TextBoxMargins {\n /** Top margin in EMUs */\n top: number;\n /** Bottom margin in EMUs */\n bottom: number;\n /** Left margin in EMUs */\n left: number;\n /** Right margin in EMUs */\n right: number;\n}\n\n/**\n * TextBox fill configuration\n */\nexport interface TextBoxFill {\n /** Fill color in hex (e.g., 'F0F0F0') */\n color: string;\n /** Transparency percentage (0-100) */\n transparency?: number;\n}\n\n/**\n * TextBox properties\n */\nexport interface TextBoxProperties {\n /** Width in EMUs */\n width: number;\n /** Height in EMUs */\n height: number;\n /** Paragraphs within the text box */\n paragraphs?: Paragraph[];\n /** Position configuration */\n position?: ImagePosition;\n /** Anchor configuration */\n anchor?: ImageAnchor;\n /** Fill color and transparency */\n fill?: TextBoxFill;\n /** Border configuration */\n borders?: BorderDefinition;\n /** Internal margins */\n margins?: TextBoxMargins;\n /** TextBox name */\n name?: string;\n /** TextBox description (for accessibility) */\n description?: string;\n}\n\n/**\n * Represents a floating text box\n */\nexport class TextBox {\n private width: number;\n private height: number;\n private paragraphs: Paragraph[] = [];\n private position?: ImagePosition;\n private anchor?: ImageAnchor;\n private fill?: TextBoxFill;\n private borders?: BorderDefinition;\n private margins?: TextBoxMargins;\n private name: string;\n private description: string;\n private docPrId = 1;\n\n /**\n * Creates a new text box\n * @param properties TextBox properties\n * @private Use static factory methods instead (create)\n */\n private constructor(properties: TextBoxProperties) {\n this.width = properties.width;\n this.height = properties.height;\n if (properties.paragraphs) {\n this.paragraphs = properties.paragraphs;\n }\n this.position = properties.position;\n this.anchor = properties.anchor;\n this.fill = properties.fill;\n this.borders = properties.borders;\n this.margins = properties.margins;\n this.name = properties.name || 'TextBox';\n this.description = properties.description || '';\n }\n\n /**\n * Factory method for creating a text box\n * @param width Width in EMUs\n * @param height Height in EMUs\n * @returns New TextBox instance\n * @example\n * const textbox = TextBox.create(inchesToEmus(3), inchesToEmus(2));\n */\n static create(width: number, height: number): TextBox {\n return new TextBox({ width, height });\n }\n\n /**\n * Gets the width in EMUs\n * @returns Width\n */\n getWidth(): number {\n return this.width;\n }\n\n /**\n * Gets the height in EMUs\n * @returns Height\n */\n getHeight(): number {\n return this.height;\n }\n\n /**\n * Adds a paragraph to the text box\n * @param paragraph Paragraph to add\n * @returns This text box for chaining\n */\n addParagraph(paragraph: Paragraph): this {\n this.paragraphs.push(paragraph);\n return this;\n }\n\n /**\n * Gets all paragraphs\n * @returns Array of paragraphs\n */\n getParagraphs(): Paragraph[] {\n return this.paragraphs;\n }\n\n /**\n * Sets text box position (for floating text boxes)\n * @param horizontal Horizontal positioning configuration\n * @param vertical Vertical positioning configuration\n * @returns This text box for chaining\n */\n setPosition(\n horizontal: { anchor: PositionAnchor; offset?: number; alignment?: HorizontalAlignment },\n vertical: { anchor: PositionAnchor; offset?: number; alignment?: VerticalAlignment }\n ): this {\n this.position = { horizontal, vertical };\n return this;\n }\n\n /**\n * Gets the position configuration\n * @returns Position or undefined\n */\n getPosition(): ImagePosition | undefined {\n return this.position;\n }\n\n /**\n * Sets anchor configuration\n * @param options Anchor configuration\n * @returns This text box for chaining\n */\n setAnchor(options: ImageAnchor): this {\n this.anchor = options;\n return this;\n }\n\n /**\n * Gets the anchor configuration\n * @returns Anchor configuration or undefined\n */\n getAnchor(): ImageAnchor | undefined {\n return this.anchor;\n }\n\n /**\n * Sets the fill color\n * @param color Fill color in hex\n * @param transparency Optional transparency percentage (0-100)\n * @returns This text box for chaining\n */\n setFill(color: string, transparency?: number): this {\n this.fill = { color, transparency };\n return this;\n }\n\n /**\n * Gets the fill configuration\n * @returns Fill or undefined\n */\n getFill(): TextBoxFill | undefined {\n return this.fill;\n }\n\n /**\n * Sets the borders\n * @param borders Border configuration\n * @returns This text box for chaining\n */\n setBorders(borders: BorderDefinition): this {\n this.borders = borders;\n return this;\n }\n\n /**\n * Gets the borders configuration\n * @returns Borders or undefined\n */\n getBorders(): BorderDefinition | undefined {\n return this.borders;\n }\n\n /**\n * Sets internal margins\n * @param margins Margin configuration\n * @returns This text box for chaining\n */\n setMargins(margins: TextBoxMargins): this {\n this.margins = margins;\n return this;\n }\n\n /**\n * Gets the margins configuration\n * @returns Margins or undefined\n */\n getMargins(): TextBoxMargins | undefined {\n return this.margins;\n }\n\n /**\n * Sets the text box name\n * @param name TextBox name\n * @returns This text box for chaining\n */\n setName(name: string): this {\n this.name = name;\n return this;\n }\n\n /**\n * Gets the text box name\n * @returns TextBox name\n */\n getName(): string {\n return this.name;\n }\n\n /**\n * Sets the text box description (for accessibility)\n * @param description TextBox description\n * @returns This text box for chaining\n */\n setDescription(description: string): this {\n this.description = description;\n return this;\n }\n\n /**\n * Gets the text box description\n * @returns TextBox description\n */\n getDescription(): string {\n return this.description;\n }\n\n /**\n * Sets the docPr ID (drawing object ID)\n * @param id Document property ID\n * @returns This text box for chaining\n */\n setDocPrId(id: number): this {\n this.docPrId = id;\n return this;\n }\n\n /**\n * Checks if this text box is floating (has anchor or position configuration)\n * @returns True if floating, false if inline\n */\n isFloating(): boolean {\n return this.anchor !== undefined || this.position !== undefined;\n }\n\n /**\n * Generates DrawingML XML for the text box\n * Creates either inline or floating (anchor) text box based on configuration\n * @returns XML element representing the text box\n */\n toXML(): XMLElement {\n // Text boxes are typically floating, but support inline as well\n const textboxElement = this.isFloating() ? this.createAnchor() : this.createInline();\n\n // Create the drawing structure\n return XMLBuilder.w('drawing', undefined, [textboxElement]);\n }\n\n /**\n * Creates the wp:inline element for inline text boxes\n * @private\n */\n private createInline(): XMLElement {\n const children: XMLElement[] = [];\n\n // Extent (size)\n children.push({\n name: 'wp:extent',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n });\n\n // Effect extent\n children.push({\n name: 'wp:effectExtent',\n attributes: {\n l: '0',\n t: '0',\n r: '0',\n b: '0',\n },\n selfClosing: true,\n });\n\n // Document properties\n children.push({\n name: 'wp:docPr',\n attributes: {\n id: this.docPrId.toString(),\n name: this.name,\n descr: this.description,\n },\n selfClosing: true,\n });\n\n // Non-visual graphic frame properties\n children.push({\n name: 'wp:cNvGraphicFramePr',\n selfClosing: true,\n });\n\n // Graphic data (the text box)\n children.push(this.createGraphic());\n\n return {\n name: 'wp:inline',\n attributes: {\n distT: '0',\n distB: '0',\n distL: '0',\n distR: '0',\n },\n children,\n };\n }\n\n /**\n * Creates the wp:anchor element for floating text boxes\n * @private\n */\n private createAnchor(): XMLElement {\n const children: XMLElement[] = [];\n\n const anchorConfig = this.anchor || {\n behindDoc: false,\n locked: false,\n layoutInCell: true,\n allowOverlap: false,\n relativeHeight: 251658240,\n };\n\n // Position H (horizontal)\n if (this.position) {\n const posH = this.position.horizontal;\n const posHChildren: XMLElement[] = [];\n\n if (posH.offset !== undefined) {\n posHChildren.push({\n name: 'wp:posOffset',\n children: [posH.offset.toString()],\n });\n } else if (posH.alignment) {\n posHChildren.push({\n name: 'wp:align',\n children: [posH.alignment],\n });\n }\n\n children.push({\n name: 'wp:positionH',\n attributes: {\n relativeFrom: posH.anchor,\n },\n children: posHChildren,\n });\n }\n\n // Position V (vertical)\n if (this.position) {\n const posV = this.position.vertical;\n const posVChildren: XMLElement[] = [];\n\n if (posV.offset !== undefined) {\n posVChildren.push({\n name: 'wp:posOffset',\n children: [posV.offset.toString()],\n });\n } else if (posV.alignment) {\n posVChildren.push({\n name: 'wp:align',\n children: [posV.alignment],\n });\n }\n\n children.push({\n name: 'wp:positionV',\n attributes: {\n relativeFrom: posV.anchor,\n },\n children: posVChildren,\n });\n }\n\n // Extent (size)\n children.push({\n name: 'wp:extent',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n });\n\n // Effect extent\n children.push({\n name: 'wp:effectExtent',\n attributes: {\n l: '0',\n t: '0',\n r: '0',\n b: '0',\n },\n selfClosing: true,\n });\n\n // Wrap square (default for text boxes)\n children.push({\n name: 'wp:wrapSquare',\n attributes: {\n wrapText: 'bothSides',\n },\n selfClosing: true,\n });\n\n // Document properties\n children.push({\n name: 'wp:docPr',\n attributes: {\n id: this.docPrId.toString(),\n name: this.name,\n descr: this.description,\n },\n selfClosing: true,\n });\n\n // Non-visual graphic frame properties\n children.push({\n name: 'wp:cNvGraphicFramePr',\n selfClosing: true,\n });\n\n // Graphic data (the text box)\n children.push(this.createGraphic());\n\n return {\n name: 'wp:anchor',\n attributes: {\n distT: '0',\n distB: '0',\n distL: '0',\n distR: '0',\n simplePos: '0',\n relativeHeight: anchorConfig.relativeHeight.toString(),\n behindDoc: anchorConfig.behindDoc ? '1' : '0',\n locked: anchorConfig.locked ? '1' : '0',\n layoutInCell: anchorConfig.layoutInCell ? '1' : '0',\n allowOverlap: anchorConfig.allowOverlap ? '1' : '0',\n },\n children,\n };\n }\n\n /**\n * Creates the a:graphic element containing the text box\n * @private\n */\n private createGraphic(): XMLElement {\n return {\n name: 'a:graphic',\n attributes: {\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n },\n children: [\n {\n name: 'a:graphicData',\n attributes: {\n uri: 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n },\n children: [this.createWps()],\n },\n ],\n };\n }\n\n /**\n * Creates the wps:wsp element (WordprocessingShape for text box)\n * @private\n */\n private createWps(): XMLElement {\n const children: XMLElement[] = [];\n\n // Non-visual shape properties\n children.push({\n name: 'wps:cNvSpPr',\n attributes: {\n 'xmlns:wps': 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n txBox: '1', // Indicates this is a text box\n },\n selfClosing: true,\n });\n\n // Shape properties (size, fill, borders)\n children.push(this.createSpPr());\n\n // Text box content\n children.push(this.createTextBoxContent());\n\n // Body properties (margins/insets)\n children.push(this.createBodyPr());\n\n return {\n name: 'wps:wsp',\n attributes: {\n 'xmlns:wps': 'http://schemas.microsoft.com/office/word/2010/wordprocessingShape',\n },\n children,\n };\n }\n\n /**\n * Creates the wps:bodyPr element (text body properties including margins)\n * Per ECMA-376 Part 4, bodyPr specifies inset margins via lIns/tIns/rIns/bIns attributes\n * @private\n */\n private createBodyPr(): XMLElement {\n const attrs: Record<string, string> = {\n rot: '0',\n vert: 'horz',\n wrap: 'square',\n anchor: 't',\n };\n\n // Add margin insets if set\n if (this.margins) {\n if (this.margins.left !== undefined) attrs.lIns = this.margins.left.toString();\n if (this.margins.top !== undefined) attrs.tIns = this.margins.top.toString();\n if (this.margins.right !== undefined) attrs.rIns = this.margins.right.toString();\n if (this.margins.bottom !== undefined) attrs.bIns = this.margins.bottom.toString();\n }\n\n return {\n name: 'wps:bodyPr',\n attributes: attrs,\n selfClosing: true,\n };\n }\n\n /**\n * Creates the wps:spPr element (shape properties for text box)\n * @private\n */\n private createSpPr(): XMLElement {\n const children: XMLElement[] = [];\n\n // Transform (position and size)\n children.push({\n name: 'a:xfrm',\n children: [\n {\n name: 'a:off',\n attributes: { x: '0', y: '0' },\n selfClosing: true,\n },\n {\n name: 'a:ext',\n attributes: {\n cx: this.width.toString(),\n cy: this.height.toString(),\n },\n selfClosing: true,\n },\n ],\n });\n\n // Preset geometry (rectangle for text box)\n children.push({\n name: 'a:prstGeom',\n attributes: {\n prst: 'rect',\n },\n children: [\n {\n name: 'a:avLst',\n selfClosing: true,\n },\n ],\n });\n\n // Fill\n if (this.fill) {\n const fillChildren: XMLElement[] = [];\n\n // Transparency\n if (this.fill.transparency !== undefined) {\n const alpha = 100 - this.fill.transparency;\n fillChildren.push({\n name: 'a:alpha',\n attributes: {\n val: Math.round(alpha * 1000).toString(),\n },\n selfClosing: true,\n });\n }\n\n children.push({\n name: 'a:solidFill',\n children: [\n {\n name: 'a:srgbClr',\n attributes: {\n val: this.fill.color.toUpperCase(),\n },\n ...(fillChildren.length > 0 ? { children: fillChildren } : { selfClosing: true }),\n },\n ],\n });\n } else {\n // No fill (transparent background)\n children.push({\n name: 'a:noFill',\n selfClosing: true,\n });\n }\n\n // Borders\n if (this.borders?.size !== undefined) {\n const lnAttrs: Record<string, string> = {\n w: (this.borders.size * UNITS.EMUS_PER_POINT).toString(), // Convert points to EMUs\n };\n\n const lnChildren: XMLElement[] = [];\n\n // Border color\n lnChildren.push({\n name: 'a:solidFill',\n children: [\n {\n name: 'a:srgbClr',\n attributes: {\n val: (this.borders.color || '000000').toUpperCase(),\n },\n selfClosing: true,\n },\n ],\n });\n\n // Border style\n if (this.borders.style && this.borders.style !== 'single') {\n const dashMap: Record<string, string> = {\n dash: 'dash',\n dot: 'dot',\n dashDot: 'dashDot',\n dashDotDot: 'lgDashDotDot',\n };\n const dashStyle = dashMap[this.borders.style] || 'solid';\n if (dashStyle !== 'solid') {\n lnChildren.push({\n name: 'a:prstDash',\n attributes: {\n val: dashStyle,\n },\n selfClosing: true,\n });\n }\n }\n\n children.push({\n name: 'a:ln',\n attributes: lnAttrs,\n children: lnChildren,\n });\n }\n\n return {\n name: 'wps:spPr',\n children,\n };\n }\n\n /**\n * Creates the wps:txbx element (text box content)\n * @private\n */\n private createTextBoxContent(): XMLElement {\n if (this.paragraphs.length === 0) {\n // Empty text box - create empty paragraph\n return {\n name: 'wps:txbx',\n children: [\n {\n name: 'w:txbxContent',\n children: [\n XMLBuilder.w('p', undefined, [\n XMLBuilder.w('r', undefined, [XMLBuilder.w('t', undefined, [''])]),\n ]),\n ],\n },\n ],\n };\n }\n\n // Convert paragraphs to XML\n const paragraphXml = this.paragraphs.map((p) => p.toXML());\n\n return {\n name: 'wps:txbx',\n children: [\n {\n name: 'w:txbxContent',\n children: paragraphXml,\n },\n ],\n };\n }\n}\n"]}
@@ -0,0 +1,97 @@
1
+ export const LEGACY_COMPAT_ELEMENTS = [
2
+ 'w:useSingleBorderforContiguousCells',
3
+ 'w:wpJustification',
4
+ 'w:noTabHangInd',
5
+ 'w:noLeading',
6
+ 'w:spaceForUL',
7
+ 'w:noColumnBalance',
8
+ 'w:balanceSingleByteDoubleByteWidth',
9
+ 'w:noExtraLineSpacing',
10
+ 'w:doNotLeaveBackslashAlone',
11
+ 'w:ulTrailSpace',
12
+ 'w:doNotExpandShiftReturn',
13
+ 'w:spacingInWholePoints',
14
+ 'w:lineWrapLikeWord6',
15
+ 'w:printBodyTextBeforeHeader',
16
+ 'w:printColBlack',
17
+ 'w:wpSpaceWidth',
18
+ 'w:showBreaksInFrames',
19
+ 'w:subFontBySize',
20
+ 'w:suppressBottomSpacing',
21
+ 'w:suppressTopSpacing',
22
+ 'w:suppressSpacingAtTopOfPage',
23
+ 'w:suppressTopSpacingWP',
24
+ 'w:suppressSpBfAfterPgBrk',
25
+ 'w:swapBordersFacingPages',
26
+ 'w:convMailMergeEsc',
27
+ 'w:truncateFontHeightsLikeWP6',
28
+ 'w:mwSmallCaps',
29
+ 'w:usePrinterMetrics',
30
+ 'w:doNotSuppressParagraphBorders',
31
+ 'w:wrapTrailSpaces',
32
+ 'w:footnoteLayoutLikeWW8',
33
+ 'w:shapeLayoutLikeWW8',
34
+ 'w:alignTablesRowByRow',
35
+ 'w:forgetLastTabAlignment',
36
+ 'w:adjustLineHeightInTable',
37
+ 'w:autoSpaceLikeWord95',
38
+ 'w:noSpaceRaiseLower',
39
+ 'w:doNotUseHTMLParagraphAutoSpacing',
40
+ 'w:layoutRawTableWidth',
41
+ 'w:layoutTableRowsApart',
42
+ 'w:useWord97LineBreakRules',
43
+ 'w:doNotBreakWrappedTables',
44
+ 'w:doNotSnapToGridInCell',
45
+ 'w:selectFldWithFirstOrLastChar',
46
+ 'w:applyBreakingRules',
47
+ 'w:doNotWrapTextWithPunct',
48
+ 'w:doNotUseEastAsianBreakRules',
49
+ 'w:useWord2002TableStyleRules',
50
+ 'w:growAutofit',
51
+ 'w:useFELayout',
52
+ 'w:useNormalStyleForList',
53
+ 'w:doNotUseIndentAsNumberingTabStop',
54
+ 'w:useAltKinsokuLineBreakRules',
55
+ 'w:allowSpaceOfSameStyleInTable',
56
+ 'w:doNotSuppressIndentation',
57
+ 'w:doNotAutofitConstrainedTables',
58
+ 'w:autofitToFirstFixedWidthCell',
59
+ 'w:underlineTabInNumList',
60
+ 'w:displayHangulFixedWidth',
61
+ 'w:splitPgBreakAndParaMark',
62
+ 'w:doNotVertAlignCellWithSp',
63
+ 'w:doNotBreakConstrainedForcedTable',
64
+ 'w:doNotVertAlignInTxbx',
65
+ 'w:useAnsiKerningPairs',
66
+ 'w:cachedColBalance',
67
+ ];
68
+ export const LEGACY_COMPAT_ELEMENT_NAMES = new Set(LEGACY_COMPAT_ELEMENTS.map((e) => e.replace('w:', '')));
69
+ export const MODERN_COMPAT_SETTINGS = [
70
+ {
71
+ name: 'compatibilityMode',
72
+ uri: 'http://schemas.microsoft.com/office/word',
73
+ val: '15',
74
+ },
75
+ {
76
+ name: 'overrideTableStyleFontSizeAndJustification',
77
+ uri: 'http://schemas.microsoft.com/office/word',
78
+ val: '1',
79
+ },
80
+ {
81
+ name: 'enableOpenTypeFeatures',
82
+ uri: 'http://schemas.microsoft.com/office/word',
83
+ val: '1',
84
+ },
85
+ {
86
+ name: 'doNotFlipMirrorIndents',
87
+ uri: 'http://schemas.microsoft.com/office/word',
88
+ val: '1',
89
+ },
90
+ {
91
+ name: 'differentiateMultirowTableHeaders',
92
+ uri: 'http://schemas.microsoft.com/office/word',
93
+ val: '1',
94
+ },
95
+ ];
96
+ export const MS_WORD_COMPAT_URI = 'http://schemas.microsoft.com/office/word';
97
+ //# sourceMappingURL=legacyCompatFlags.js.map