docxmlater 10.4.1 → 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 +74 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +605 -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 +2056 -1073
  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 +461 -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 +2180 -617
  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
@@ -2,17 +2,18 @@
2
2
  * TableCell - Represents a cell in a table
3
3
  */
4
4
 
5
- import { deepClone } from '../utils/deepClone';
6
- import { formatDateForXml } from '../utils/dateFormatting';
7
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
8
- import { Paragraph, TextDirection } from './Paragraph';
9
- import { Revision } from './Revision';
5
+ import { deepClone } from '../utils/deepClone.js';
6
+ import { formatDateForXml } from '../utils/dateFormatting.js';
7
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
8
+ import { Paragraph, TextDirection } from './Paragraph.js';
9
+ import { Revision } from './Revision.js';
10
10
  import {
11
11
  BorderStyle as CommonBorderStyle,
12
+ FullBorderStyle as CommonFullBorderStyle,
12
13
  CellVerticalAlignment as CommonCellVerticalAlignment,
13
14
  ShadingConfig,
14
15
  buildShadingAttributes,
15
- } from './CommonTypes';
16
+ } from './CommonTypes.js';
16
17
 
17
18
  // ============================================================================
18
19
  // RE-EXPORTED TYPES (for backward compatibility)
@@ -25,11 +26,13 @@ import {
25
26
  export type BorderStyle = CommonBorderStyle;
26
27
 
27
28
  /**
28
- * Cell border definition
29
- * @see CommonTypes.BorderDefinition
29
+ * Cell border definition. `style` uses FullBorderStyle (25+ ST_Border
30
+ * values per ECMA-376 §17.18.2) — cell borders support the full
31
+ * multi-line-gap / triple / inset / outset set, not just the narrow
32
+ * 6-value BorderStyle subset.
30
33
  */
31
34
  export interface CellBorder {
32
- style?: BorderStyle;
35
+ style?: CommonFullBorderStyle;
33
36
  size?: number; // Size in eighths of a point
34
37
  color?: string; // Hex color without #
35
38
  }
@@ -137,11 +140,11 @@ export class TableCell {
137
140
  /** Raw nested content (tables, SDTs) stored as XML for passthrough */
138
141
  private rawNestedContent: RawNestedContent[] = [];
139
142
  /** Parent row reference (if cell is inside a table row) */
140
- private _parentRow?: import('./TableRow').TableRow;
143
+ private _parentRow?: import('./TableRow.js').TableRow;
141
144
  /** Table cell revision (w:cellIns, w:cellDel, w:cellMerge) per ECMA-376 Part 1 §17.13.5.4-5.6 */
142
145
  private cellRevision?: Revision;
143
146
  /** Tracking context for automatic change tracking */
144
- private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
147
+ private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
145
148
  /** Table cell property change tracking (w:tcPrChange) */
146
149
  private tcPrChange?: TcPrChange;
147
150
 
@@ -158,7 +161,7 @@ export class TableCell {
158
161
  * Called by Document when track changes is enabled.
159
162
  * @internal
160
163
  */
161
- _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
164
+ _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
162
165
  this.trackingContext = context;
163
166
  }
164
167
 
@@ -343,8 +346,8 @@ export class TableCell {
343
346
  * console.log(`Cell has ${fields.length} fields`);
344
347
  * ```
345
348
  */
346
- getFields(): (import('./Field').Field | import('./Field').ComplexField)[] {
347
- const fields: (import('./Field').Field | import('./Field').ComplexField)[] = [];
349
+ getFields(): (import('./Field.js').Field | import('./Field.js').ComplexField)[] {
350
+ const fields: (import('./Field.js').Field | import('./Field.js').ComplexField)[] = [];
348
351
  for (const para of this.paragraphs) {
349
352
  fields.push(...para.getFields());
350
353
  }
@@ -374,8 +377,8 @@ export class TableCell {
374
377
  * ```
375
378
  */
376
379
  findFields(
377
- predicate: (field: import('./Field').Field | import('./Field').ComplexField) => boolean
378
- ): (import('./Field').Field | import('./Field').ComplexField)[] {
380
+ predicate: (field: import('./Field.js').Field | import('./Field.js').ComplexField) => boolean
381
+ ): (import('./Field.js').Field | import('./Field.js').ComplexField)[] {
379
382
  return this.getFields().filter(predicate);
380
383
  }
381
384
 
@@ -822,7 +825,7 @@ export class TableCell {
822
825
  * cell.setTextAlignment('center');
823
826
  * ```
824
827
  */
825
- setTextAlignment(alignment: import('./Paragraph').ParagraphAlignment): this {
828
+ setTextAlignment(alignment: import('./Paragraph.js').ParagraphAlignment): this {
826
829
  for (const para of this.paragraphs) {
827
830
  para.setAlignment(alignment);
828
831
  }
@@ -1263,7 +1266,7 @@ export class TableCell {
1263
1266
  * Called by TableRow when adding cells.
1264
1267
  * @internal
1265
1268
  */
1266
- _setParentRow(row: import('./TableRow').TableRow | undefined): void {
1269
+ _setParentRow(row: import('./TableRow.js').TableRow | undefined): void {
1267
1270
  this._parentRow = row;
1268
1271
  }
1269
1272
 
@@ -1271,7 +1274,7 @@ export class TableCell {
1271
1274
  * Gets the parent row reference for this cell.
1272
1275
  * @internal
1273
1276
  */
1274
- _getParentRow(): import('./TableRow').TableRow | undefined {
1277
+ _getParentRow(): import('./TableRow.js').TableRow | undefined {
1275
1278
  return this._parentRow;
1276
1279
  }
1277
1280
 
@@ -1415,9 +1418,14 @@ export class TableCell {
1415
1418
  }
1416
1419
  }
1417
1420
 
1418
- // noWrap
1419
- if (this.formatting.noWrap) {
1420
- tcPrChildren.push(XMLBuilder.wSelf('noWrap'));
1421
+ // noWrap — OnOffOnlyType (ST_OnOffOnly accepts only "on"/"off"). Emit "off" to
1422
+ // preserve an explicit-false override vs. style inheritance.
1423
+ if (this.formatting.noWrap !== undefined) {
1424
+ if (this.formatting.noWrap) {
1425
+ tcPrChildren.push(XMLBuilder.wSelf('noWrap'));
1426
+ } else {
1427
+ tcPrChildren.push(XMLBuilder.wSelf('noWrap', { 'w:val': 'off' }));
1428
+ }
1421
1429
  }
1422
1430
 
1423
1431
  // tcMar - cell margins (ordered per CT_TcMar: top, left, bottom, right)
@@ -1472,9 +1480,13 @@ export class TableCell {
1472
1480
  );
1473
1481
  }
1474
1482
 
1475
- // tcFitText
1476
- if (this.formatting.fitText) {
1477
- tcPrChildren.push(XMLBuilder.wSelf('tcFitText'));
1483
+ // tcFitText — OnOffOnlyType
1484
+ if (this.formatting.fitText !== undefined) {
1485
+ if (this.formatting.fitText) {
1486
+ tcPrChildren.push(XMLBuilder.wSelf('tcFitText'));
1487
+ } else {
1488
+ tcPrChildren.push(XMLBuilder.wSelf('tcFitText', { 'w:val': 'off' }));
1489
+ }
1478
1490
  }
1479
1491
 
1480
1492
  // vAlign - vertical alignment
@@ -1486,9 +1498,13 @@ export class TableCell {
1486
1498
  );
1487
1499
  }
1488
1500
 
1489
- // hideMark
1490
- if (this.formatting.hideMark) {
1491
- tcPrChildren.push(XMLBuilder.wSelf('hideMark'));
1501
+ // hideMark — OnOffOnlyType
1502
+ if (this.formatting.hideMark !== undefined) {
1503
+ if (this.formatting.hideMark) {
1504
+ tcPrChildren.push(XMLBuilder.wSelf('hideMark'));
1505
+ } else {
1506
+ tcPrChildren.push(XMLBuilder.wSelf('hideMark', { 'w:val': 'off' }));
1507
+ }
1492
1508
  }
1493
1509
 
1494
1510
  // Note: w:headers (cell headers for accessibility) is defined in ECMA-376 Part 1 §17.4.26
@@ -1586,8 +1602,12 @@ export class TableCell {
1586
1602
  prevTcPrChildren.push(XMLBuilder.wSelf('shd', shadingAttrs));
1587
1603
  }
1588
1604
  }
1589
- if (prev.noWrap) {
1590
- prevTcPrChildren.push(XMLBuilder.wSelf('noWrap'));
1605
+ if (prev.noWrap !== undefined) {
1606
+ if (prev.noWrap) {
1607
+ prevTcPrChildren.push(XMLBuilder.wSelf('noWrap'));
1608
+ } else {
1609
+ prevTcPrChildren.push(XMLBuilder.wSelf('noWrap', { 'w:val': 'off' }));
1610
+ }
1591
1611
  }
1592
1612
  if (prev.margins) {
1593
1613
  const marginChildren: XMLElement[] = [];
@@ -1618,14 +1638,22 @@ export class TableCell {
1618
1638
  if (prev.textDirection) {
1619
1639
  prevTcPrChildren.push(XMLBuilder.wSelf('textDirection', { 'w:val': prev.textDirection }));
1620
1640
  }
1621
- if (prev.fitText) {
1622
- prevTcPrChildren.push(XMLBuilder.wSelf('tcFitText'));
1641
+ if (prev.fitText !== undefined) {
1642
+ if (prev.fitText) {
1643
+ prevTcPrChildren.push(XMLBuilder.wSelf('tcFitText'));
1644
+ } else {
1645
+ prevTcPrChildren.push(XMLBuilder.wSelf('tcFitText', { 'w:val': 'off' }));
1646
+ }
1623
1647
  }
1624
1648
  if (prev.verticalAlignment) {
1625
1649
  prevTcPrChildren.push(XMLBuilder.wSelf('vAlign', { 'w:val': prev.verticalAlignment }));
1626
1650
  }
1627
- if (prev.hideMark) {
1628
- prevTcPrChildren.push(XMLBuilder.wSelf('hideMark'));
1651
+ if (prev.hideMark !== undefined) {
1652
+ if (prev.hideMark) {
1653
+ prevTcPrChildren.push(XMLBuilder.wSelf('hideMark'));
1654
+ } else {
1655
+ prevTcPrChildren.push(XMLBuilder.wSelf('hideMark', { 'w:val': 'off' }));
1656
+ }
1629
1657
  }
1630
1658
  }
1631
1659
  const prevTcPr =
@@ -5,7 +5,7 @@
5
5
  * Per ECMA-376 Part 4 §17.13.5.35
6
6
  */
7
7
 
8
- import { XMLElement, XMLBuilder } from '../xml/XMLBuilder';
8
+ import { XMLElement, XMLBuilder } from '../xml/XMLBuilder.js';
9
9
 
10
10
  /**
11
11
  * Table grid column definition
@@ -5,7 +5,7 @@
5
5
  * based on heading styles (Heading1, Heading2, etc.) in the document.
6
6
  */
7
7
 
8
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
8
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
9
9
 
10
10
  /**
11
11
  * TOC properties
@@ -8,8 +8,8 @@
8
8
  * so this wrapper handles the XML generation properly.
9
9
  */
10
10
 
11
- import { TableOfContents } from './TableOfContents';
12
- import { XMLElement } from '../xml/XMLBuilder';
11
+ import { TableOfContents } from './TableOfContents.js';
12
+ import { XMLElement } from '../xml/XMLBuilder.js';
13
13
 
14
14
  /**
15
15
  * Represents a Table of Contents element in a document body
@@ -2,16 +2,17 @@
2
2
  * TableRow - Represents a row in a table
3
3
  */
4
4
 
5
- import { deepClone } from '../utils/deepClone';
6
- import { TableCell } from './TableCell';
7
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
8
- import { TableBorders } from './Table';
5
+ import { deepClone } from '../utils/deepClone.js';
6
+ import { TableCell } from './TableCell.js';
7
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
8
+ import { TableBorders } from './Table.js';
9
9
  import {
10
10
  BasicShadingPattern,
11
11
  RowJustification as CommonRowJustification,
12
12
  ShadingConfig,
13
- } from './CommonTypes';
14
- import { defaultLogger } from '../utils/logger';
13
+ buildShadingAttributes,
14
+ } from './CommonTypes.js';
15
+ import { defaultLogger } from '../utils/logger.js';
15
16
 
16
17
  // ============================================================================
17
18
  // RE-EXPORTED TYPES (for backward compatibility)
@@ -75,6 +76,30 @@ export interface RowFormatting {
75
76
  cellSpacingType?: string; // Cell spacing type (dxa, pct)
76
77
  cnfStyle?: string; // Conditional formatting bitmask (per ECMA-376 §17.3.1.8)
77
78
  divId?: number; // HTML div association (per ECMA-376 §17.4.9)
79
+ /**
80
+ * Tracked row insertion (w:ins inside w:trPr) — ECMA-376 §17.13.5.19.
81
+ * Marks the entire row as inserted as part of a tracked revision. String
82
+ * fields for consistency with `TrPrChange`.
83
+ */
84
+ rowInsertion?: RowTrackChange;
85
+ /**
86
+ * Tracked row deletion (w:del inside w:trPr) — ECMA-376 §17.13.5.14.
87
+ * Marks the entire row as deleted as part of a tracked revision.
88
+ */
89
+ rowDeletion?: RowTrackChange;
90
+ }
91
+
92
+ /**
93
+ * Track-change metadata for row-level w:ins / w:del (CT_TrackChange).
94
+ * Per ECMA-376 Part 1 §17.13.5: each requires author + date; id per ST_DecimalNumber.
95
+ */
96
+ export interface RowTrackChange {
97
+ /** Unique revision id (ST_DecimalNumber, represented as string to match TrPrChange) */
98
+ id: string;
99
+ /** Author of the revision (required per schema) */
100
+ author: string;
101
+ /** ISO-8601 date string of the revision */
102
+ date: string;
78
103
  }
79
104
 
80
105
  /**
@@ -95,9 +120,9 @@ export class TableRow {
95
120
  private cells: TableCell[] = [];
96
121
  private formatting: RowFormatting;
97
122
  /** Parent table reference (if row is inside a table) */
98
- private _parentTable?: import('./Table').Table;
123
+ private _parentTable?: import('./Table.js').Table;
99
124
  /** Tracking context for automatic change tracking */
100
- private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
125
+ private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
101
126
  /** Table row property change tracking (w:trPrChange) */
102
127
  private trPrChange?: TrPrChange;
103
128
 
@@ -123,7 +148,7 @@ export class TableRow {
123
148
  * Called by Document when track changes is enabled.
124
149
  * @internal
125
150
  */
126
- _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
151
+ _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
127
152
  this.trackingContext = context;
128
153
  }
129
154
 
@@ -148,6 +173,38 @@ export class TableRow {
148
173
  this.trPrChange = undefined;
149
174
  }
150
175
 
176
+ /**
177
+ * Gets tracked row-insertion metadata (w:ins inside w:trPr).
178
+ * Per ECMA-376 Part 1 §17.13.5.19.
179
+ */
180
+ getRowInsertion(): RowTrackChange | undefined {
181
+ return this.formatting.rowInsertion;
182
+ }
183
+
184
+ /**
185
+ * Sets tracked row-insertion metadata. Pass undefined to clear.
186
+ */
187
+ setRowInsertion(change: RowTrackChange | undefined): this {
188
+ this.formatting.rowInsertion = change;
189
+ return this;
190
+ }
191
+
192
+ /**
193
+ * Gets tracked row-deletion metadata (w:del inside w:trPr).
194
+ * Per ECMA-376 Part 1 §17.13.5.14.
195
+ */
196
+ getRowDeletion(): RowTrackChange | undefined {
197
+ return this.formatting.rowDeletion;
198
+ }
199
+
200
+ /**
201
+ * Sets tracked row-deletion metadata. Pass undefined to clear.
202
+ */
203
+ setRowDeletion(change: RowTrackChange | undefined): this {
204
+ this.formatting.rowDeletion = change;
205
+ return this;
206
+ }
207
+
151
208
  /**
152
209
  * Adds a cell to the row
153
210
  * @param cell - Cell to add
@@ -653,7 +710,7 @@ export class TableRow {
653
710
  * Called by Table when adding rows.
654
711
  * @internal
655
712
  */
656
- _setParentTable(table: import('./Table').Table | undefined): void {
713
+ _setParentTable(table: import('./Table.js').Table | undefined): void {
657
714
  this._parentTable = table;
658
715
  }
659
716
 
@@ -661,7 +718,7 @@ export class TableRow {
661
718
  * Gets the parent table reference for this row.
662
719
  * @internal
663
720
  */
664
- _getParentTable(): import('./Table').Table | undefined {
721
+ _getParentTable(): import('./Table.js').Table | undefined {
665
722
  return this._parentTable;
666
723
  }
667
724
 
@@ -683,9 +740,18 @@ export class TableRow {
683
740
  );
684
741
  }
685
742
 
686
- // Add table justification exception (w:jc)
743
+ // Add table justification exception (w:jc). Per §17.4.29 CT_JcTable the
744
+ // ISO/ECMA spec allows five values (start, center, end, left, right),
745
+ // but the Open XML SDK's `TableJustification` class (used for jc inside
746
+ // tblPrEx AND trPr) only accepts Center/Left/Right via the narrower
747
+ // `TableRowAlignmentValues` enum. Map bidi-aware spellings down to
748
+ // their LTR equivalents so output passes strict validation. (Same
749
+ // mapping as the trPr path — see `project_sdk_rowjc_narrower_than_spec`
750
+ // memory and iteration 67.)
687
751
  if (exceptions.justification) {
688
- children.push(XMLBuilder.wSelf('jc', { 'w:val': exceptions.justification }));
752
+ const jcMap: Record<string, string> = { start: 'left', end: 'right' };
753
+ const jcVal = jcMap[exceptions.justification] || exceptions.justification;
754
+ children.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));
689
755
  }
690
756
 
691
757
  // Add cell spacing exception (w:tblCellSpacing)
@@ -716,21 +782,18 @@ export class TableRow {
716
782
  }
717
783
  }
718
784
 
719
- // Add shading exception (w:shd)
785
+ // Add shading exception (w:shd). `w:val` is REQUIRED on CT_Shd per
786
+ // ECMA-376 §17.3.1.31 — use the shared helper so callers that set
787
+ // only `fill` (no `pattern`) still produce a validator-clean
788
+ // `<w:shd w:val="clear" w:fill="…"/>` rather than an invalid
789
+ // `<w:shd w:fill="…"/>` missing the required attribute.
720
790
  if (exceptions.shading) {
721
- const shdAttrs: Record<string, string> = {};
722
- if (exceptions.shading.pattern) shdAttrs['w:val'] = exceptions.shading.pattern;
723
- if (exceptions.shading.color) shdAttrs['w:color'] = exceptions.shading.color;
724
- if (exceptions.shading.fill) shdAttrs['w:fill'] = exceptions.shading.fill;
725
- if (exceptions.shading.themeColor) shdAttrs['w:themeColor'] = exceptions.shading.themeColor;
726
- if (exceptions.shading.themeFill) shdAttrs['w:themeFill'] = exceptions.shading.themeFill;
727
- if (exceptions.shading.themeFillShade)
728
- shdAttrs['w:themeFillShade'] = exceptions.shading.themeFillShade;
729
- if (exceptions.shading.themeFillTint)
730
- shdAttrs['w:themeFillTint'] = exceptions.shading.themeFillTint;
731
- if (exceptions.shading.themeShade) shdAttrs['w:themeShade'] = exceptions.shading.themeShade;
732
- if (exceptions.shading.themeTint) shdAttrs['w:themeTint'] = exceptions.shading.themeTint;
733
- children.push(XMLBuilder.w('shd', shdAttrs));
791
+ const shdAttrs = buildShadingAttributes(exceptions.shading);
792
+ // wSelf so the emitted shd is self-closing (matches all other shd
793
+ // emission in the codebase). The previous `XMLBuilder.w(...)` call
794
+ // produced `<w:shd>…</w:shd>` with no children — structurally ok
795
+ // but inconsistent with the rest of the serializer.
796
+ children.push(XMLBuilder.wSelf('shd', shdAttrs));
734
797
  }
735
798
 
736
799
  return children;
@@ -756,14 +819,29 @@ export class TableRow {
756
819
  const border = borders[name];
757
820
  if (border) {
758
821
  const attrs: Record<string, string | number> = {};
759
- if (border.style) attrs['w:val'] = border.style;
822
+ // CT_Border §17.18.2 requires w:val (ST_Border). Default to "nil"
823
+ // when caller didn't specify a style — otherwise strict OOXML
824
+ // validation fails with "The required attribute 'val' is missing."
825
+ attrs['w:val'] = border.style ?? 'nil';
760
826
  if (border.size !== undefined) attrs['w:sz'] = border.size;
761
827
  if (border.space !== undefined) attrs['w:space'] = border.space;
762
828
  if (border.color) attrs['w:color'] = border.color;
763
-
764
- if (Object.keys(attrs).length > 0) {
765
- children.push(XMLBuilder.wSelf(name, attrs));
766
- }
829
+ // Full CT_Border attribute set (§17.18.2) for themed-border fidelity
830
+ // on tblPrEx borders.
831
+ const b = border as {
832
+ themeColor?: string;
833
+ themeTint?: string;
834
+ themeShade?: string;
835
+ shadow?: boolean;
836
+ frame?: boolean;
837
+ };
838
+ if (b.themeColor) attrs['w:themeColor'] = b.themeColor;
839
+ if (b.themeTint) attrs['w:themeTint'] = b.themeTint;
840
+ if (b.themeShade) attrs['w:themeShade'] = b.themeShade;
841
+ if (b.shadow !== undefined) attrs['w:shadow'] = b.shadow ? '1' : '0';
842
+ if (b.frame !== undefined) attrs['w:frame'] = b.frame ? '1' : '0';
843
+
844
+ children.push(XMLBuilder.wSelf(name, attrs));
767
845
  }
768
846
  }
769
847
 
@@ -821,9 +899,15 @@ export class TableRow {
821
899
  );
822
900
  }
823
901
 
824
- // 7. cantSplit
825
- if (this.formatting.cantSplit) {
826
- trPrChildren.push(XMLBuilder.wSelf('cantSplit'));
902
+ // 7. cantSplit — OnOffOnlyType (not CT_OnOff); ST_OnOffOnly only accepts "on"/"off".
903
+ // Emit "off" for explicit false so an override of a style-inherited cantSplit=true
904
+ // survives round-trip. "0"/"false" would fail OOXML schema validation here.
905
+ if (this.formatting.cantSplit !== undefined) {
906
+ if (this.formatting.cantSplit) {
907
+ trPrChildren.push(XMLBuilder.wSelf('cantSplit'));
908
+ } else {
909
+ trPrChildren.push(XMLBuilder.wSelf('cantSplit', { 'w:val': 'off' }));
910
+ }
827
911
  }
828
912
 
829
913
  // 8. trHeight
@@ -837,9 +921,13 @@ export class TableRow {
837
921
  trPrChildren.push(XMLBuilder.wSelf('trHeight', attrs));
838
922
  }
839
923
 
840
- // 9. tblHeader
841
- if (this.formatting.isHeader) {
842
- trPrChildren.push(XMLBuilder.wSelf('tblHeader'));
924
+ // 9. tblHeader — OnOffOnlyType
925
+ if (this.formatting.isHeader !== undefined) {
926
+ if (this.formatting.isHeader) {
927
+ trPrChildren.push(XMLBuilder.wSelf('tblHeader'));
928
+ } else {
929
+ trPrChildren.push(XMLBuilder.wSelf('tblHeader', { 'w:val': 'off' }));
930
+ }
843
931
  }
844
932
 
845
933
  // 10. tblCellSpacing
@@ -852,16 +940,60 @@ export class TableRow {
852
940
  );
853
941
  }
854
942
 
855
- // 11. jc (map 'start'/'end' to valid ST_JcTable values)
943
+ // 11. jc CT_JcTable per ECMA-376 §17.4.28. The ISO/ECMA spec's
944
+ // ST_JcTable §17.18.45 lists five values (start, center, end, left,
945
+ // right), but the Open XML SDK's row-level TableRowAlignmentValues
946
+ // (and by extension the strict OOXML validator) accepts only three:
947
+ // center / left / right. We therefore map the bidi-aware spellings
948
+ // down to their LTR equivalents on emission. The mapping IS lossy —
949
+ // a row authored with `w:val="start"` in an RTL section will lose
950
+ // its RTL-awareness on round-trip — but emitting start/end directly
951
+ // fails validation. See `project_sdk_rowjc_narrower_than_spec.md`.
856
952
  if (this.formatting.justification) {
857
953
  const jcMap: Record<string, string> = { start: 'left', end: 'right' };
858
954
  const jcVal = jcMap[this.formatting.justification] || this.formatting.justification;
859
955
  trPrChildren.push(XMLBuilder.wSelf('jc', { 'w:val': jcVal }));
860
956
  }
861
957
 
862
- // 12. hidden
863
- if (this.formatting.hidden) {
864
- trPrChildren.push(XMLBuilder.wSelf('hidden'));
958
+ // 12. hidden — OnOffType (full CT_OnOff); emit "false" for explicit override
959
+ if (this.formatting.hidden !== undefined) {
960
+ if (this.formatting.hidden) {
961
+ trPrChildren.push(XMLBuilder.wSelf('hidden'));
962
+ } else {
963
+ trPrChildren.push(XMLBuilder.wSelf('hidden', { 'w:val': 'false' }));
964
+ }
965
+ }
966
+
967
+ // Tracked row insertion / deletion per CT_TrPr (§17.4.79):
968
+ // <xsd:extension base="CT_TrPrBase">
969
+ // <xsd:sequence>
970
+ // <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/>
971
+ // <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/>
972
+ // <xsd:element name="trPrChange" type="CT_TrPrChange" minOccurs="0"/>
973
+ // </xsd:sequence>
974
+ // </xsd:extension>
975
+ // These markers must appear AFTER the CT_TrPrBase children (cnfStyle..hidden)
976
+ // and BEFORE w:trPrChange — they're how Word records that the entire row
977
+ // was inserted or deleted as a tracked revision.
978
+ if (this.formatting.rowInsertion) {
979
+ const ins = this.formatting.rowInsertion;
980
+ trPrChildren.push(
981
+ XMLBuilder.wSelf('ins', {
982
+ 'w:id': ins.id,
983
+ 'w:author': ins.author,
984
+ 'w:date': ins.date,
985
+ })
986
+ );
987
+ }
988
+ if (this.formatting.rowDeletion) {
989
+ const del = this.formatting.rowDeletion;
990
+ trPrChildren.push(
991
+ XMLBuilder.wSelf('del', {
992
+ 'w:id': del.id,
993
+ 'w:author': del.author,
994
+ 'w:date': del.date,
995
+ })
996
+ );
865
997
  }
866
998
 
867
999
  // Add table row property change (w:trPrChange) per ECMA-376 Part 1 §17.13.5.38
@@ -906,16 +1038,24 @@ export class TableRow {
906
1038
  })
907
1039
  );
908
1040
  }
909
- if (prev.cantSplit) {
910
- prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));
1041
+ if (prev.cantSplit !== undefined) {
1042
+ if (prev.cantSplit) {
1043
+ prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit'));
1044
+ } else {
1045
+ prevTrPrChildren.push(XMLBuilder.wSelf('cantSplit', { 'w:val': 'off' }));
1046
+ }
911
1047
  }
912
1048
  if (prev.height !== undefined) {
913
1049
  const heightAttrs: Record<string, string | number> = { 'w:val': prev.height };
914
1050
  if (prev.heightRule) heightAttrs['w:hRule'] = prev.heightRule;
915
1051
  prevTrPrChildren.push(XMLBuilder.wSelf('trHeight', heightAttrs));
916
1052
  }
917
- if (prev.isHeader) {
918
- prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));
1053
+ if (prev.isHeader !== undefined) {
1054
+ if (prev.isHeader) {
1055
+ prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader'));
1056
+ } else {
1057
+ prevTrPrChildren.push(XMLBuilder.wSelf('tblHeader', { 'w:val': 'off' }));
1058
+ }
919
1059
  }
920
1060
  if (prev.cellSpacing !== undefined) {
921
1061
  prevTrPrChildren.push(
@@ -931,8 +1071,12 @@ export class TableRow {
931
1071
  XMLBuilder.wSelf('jc', { 'w:val': jcPrevMap[prev.justification] || prev.justification })
932
1072
  );
933
1073
  }
934
- if (prev.hidden) {
935
- prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));
1074
+ if (prev.hidden !== undefined) {
1075
+ if (prev.hidden) {
1076
+ prevTrPrChildren.push(XMLBuilder.wSelf('hidden'));
1077
+ } else {
1078
+ prevTrPrChildren.push(XMLBuilder.wSelf('hidden', { 'w:val': 'false' }));
1079
+ }
936
1080
  }
937
1081
  }
938
1082
  const prevTrPr = XMLBuilder.w('trPr', undefined, prevTrPrChildren);
@@ -8,17 +8,17 @@
8
8
  * text boxes in Word documents use the wps:wsp element with wps:txbx content.
9
9
  */
10
10
 
11
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
12
- import { UNITS } from '../utils/units';
13
- import { Paragraph } from './Paragraph';
11
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
12
+ import { UNITS } from '../utils/units.js';
13
+ import { Paragraph } from './Paragraph.js';
14
14
  import {
15
15
  ImagePosition,
16
16
  ImageAnchor,
17
17
  PositionAnchor,
18
18
  HorizontalAlignment,
19
19
  VerticalAlignment,
20
- } from './Image';
21
- import { BorderDefinition } from './Paragraph';
20
+ } from './Image.js';
21
+ import { BorderDefinition } from './Paragraph.js';
22
22
 
23
23
  /**
24
24
  * TextBox margins configuration
@@ -6,9 +6,9 @@
6
6
  * paragraphs in the document.
7
7
  */
8
8
 
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
- import { NumberingLevel } from './NumberingLevel';
11
- import { defaultLogger } from '../utils/logger';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
+ import { NumberingLevel } from './NumberingLevel.js';
11
+ import { defaultLogger } from '../utils/logger.js';
12
12
 
13
13
  /**
14
14
  * Properties for creating an abstract numbering definition
@@ -6,8 +6,8 @@
6
6
  * abstract numbering, creating separate list sequences.
7
7
  */
8
8
 
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
- import { NumberingLevel } from './NumberingLevel';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
+ import { NumberingLevel } from './NumberingLevel.js';
11
11
 
12
12
  /**
13
13
  * Properties for creating a numbering instance