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":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NumberingLevel - Defines formatting for a single level in a list\n *\n * A numbering level specifies how a particular list level (0-8) should be formatted,\n * including the numbering format (bullet, decimal, roman, etc.), text template,\n * alignment, and indentation.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\n\n/**\n * Word-native bullet character mappings\n *\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\n * for bullet points. These mappings ensure 100% compatibility with Word's\n * native bullet rendering.\n *\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\n */\nexport const WORD_NATIVE_BULLETS = {\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\n FILLED_BULLET: { char: '\\uF0B7', font: 'Symbol' },\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\n OPEN_CIRCLE: { char: '\\u006F', font: 'Courier New' },\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\n FILLED_SQUARE: { char: '\\uF0A7', font: 'Wingdings' },\n} as const;\n\n/**\n * Type for Word-native bullet definition\n */\nexport type WordNativeBullet = (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\n\n/**\n * Numbering format types supported by Word\n */\nexport type NumberFormat =\n | 'bullet' // Bullet character\n | 'decimal' // 1, 2, 3, ...\n | 'lowerRoman' // i, ii, iii, ...\n | 'upperRoman' // I, II, III, ...\n | 'lowerLetter' // a, b, c, ...\n | 'upperLetter' // A, B, C, ...\n | 'ordinal' // 1st, 2nd, 3rd, ...\n | 'cardinalText' // One, Two, Three, ...\n | 'ordinalText' // First, Second, Third, ...\n | 'hex' // 0x01, 0x02, ...\n | 'chicago' // *, †, ‡, §, ...\n | 'decimal zero'; // 01, 02, 03, ...\n\n/**\n * Alignment for the numbering text\n */\nexport type NumberAlignment = 'left' | 'center' | 'right' | 'start' | 'end';\n\n/**\n * Properties for creating a numbering level\n */\nexport interface NumberingLevelProperties {\n /** The level index (0-8, where 0 is the outermost level) */\n level: number;\n\n /** The numbering format */\n format: NumberFormat;\n\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\n text: string;\n\n /** Alignment of the numbering text */\n alignment?: NumberAlignment;\n\n /** Starting value (for numeric formats, default: 1) */\n start?: number;\n\n /** Left indentation in twips (can be negative for outdents into margin) */\n leftIndent?: number;\n\n /** Hanging indentation in twips (for the text after the number) */\n hangingIndent?: number;\n\n /** Font family for the numbering character (useful for bullets) */\n font?: string;\n\n /** Font size in half-points (e.g., 22 = 11pt) */\n fontSize?: number;\n\n /** Whether to show text after the number (default: true) */\n isLegalNumberingStyle?: boolean;\n\n /** Suffix after the number (tab, space, or nothing) */\n suffix?: 'tab' | 'space' | 'nothing';\n\n /** Text color in hex (without #) */\n color?: string;\n\n /** Whether the numbering text is bold */\n bold?: boolean;\n\n /** Whether the numbering text is italic */\n italic?: boolean;\n\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\n underline?: string;\n\n /**\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n * Specifies when to restart this level's numbering based on a higher-level change:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined (default): Restart when level-1 changes (standard behavior)\n */\n lvlRestart?: number;\n\n /** Paragraph style ID linked to this numbering level (w:pStyle per ECMA-376 §17.9.23) */\n pStyle?: string;\n}\n\n/**\n * Represents a single level in a numbering definition\n */\nexport class NumberingLevel {\n private properties: Required<\n Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>\n > &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;\n\n /**\n * Creates a new numbering level\n * @param properties The level properties\n */\n constructor(properties: NumberingLevelProperties) {\n // Set defaults\n this.properties = {\n level: properties.level,\n format: properties.format,\n text: properties.text,\n alignment: properties.alignment || 'left',\n start: properties.start !== undefined ? properties.start : 1,\n leftIndent:\n properties.leftIndent !== undefined ? properties.leftIndent : 720 + properties.level * 360,\n hangingIndent: properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\n font: properties.font || 'Calibri',\n fontSize: properties.fontSize || 22, // 11pt default\n isLegalNumberingStyle:\n properties.isLegalNumberingStyle !== undefined ? properties.isLegalNumberingStyle : false,\n suffix: properties.suffix || 'tab',\n color: properties.color || '000000',\n bold: properties.bold !== undefined ? properties.bold : false,\n italic: properties.italic !== undefined ? properties.italic : false,\n underline: properties.underline,\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\n pStyle: properties.pStyle,\n };\n\n this.validate();\n }\n\n /**\n * Validates the level properties\n */\n private validate(): void {\n if (this.properties.level < 0 || this.properties.level > 8) {\n throw new Error(`Level must be between 0 and 8, got ${this.properties.level}`);\n }\n\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\n // This is valid and used for hanging indents where bullets appear in margin\n\n if (this.properties.hangingIndent < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n\n if (this.properties.start < 0) {\n throw new Error('Start value must be non-negative');\n }\n }\n\n /**\n * Calculates safe indentation values for a given level based on page constraints.\n *\n * Use this instead of default indentation when working with narrow pages or\n * deep nesting levels to ensure content stays within page margins.\n *\n * @param level The level index (0-8)\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\n * @returns Safe indentation values that won't exceed available space\n *\n * @example\n * ```typescript\n * // For a narrow page (6\" wide with 0.5\" margins)\n * const indent = NumberingLevel.calculateSafeIndentation(\n * 5, // level 5\n * 8640, // 6 inches page width\n * 720, // 0.5 inch left margin\n * 720 // 0.5 inch right margin\n * );\n * ```\n */\n static calculateSafeIndentation(\n level: number,\n pageWidthTwips = 12240,\n leftMarginTwips = 1440,\n rightMarginTwips = 1440,\n minContentWidth = 2880\n ): { leftIndent: number; hangingIndent: number } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n // Calculate available content width\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\n\n // Calculate max safe indent (leave space for content)\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\n\n // Standard indentation\n const standardLeftIndent = 720 + level * 360;\n const hangingIndent = 360;\n\n // Cap at safe maximum\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\n\n return {\n leftIndent: safeLeftIndent,\n hangingIndent,\n };\n }\n\n /**\n * Gets the level index\n */\n getLevel(): number {\n return this.properties.level;\n }\n\n /**\n * Gets the numbering format\n */\n getFormat(): NumberFormat {\n return this.properties.format;\n }\n\n /**\n * Gets the level properties\n */\n getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> &\n Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'> {\n return { ...this.properties };\n }\n\n /**\n * Sets the left indentation\n * @param twips Indentation in twips\n */\n setLeftIndent(twips: number): this {\n // Note: Negative values are valid (outdent into margin) per ECMA-376\n this.properties.leftIndent = twips;\n return this;\n }\n\n /**\n * Sets the hanging indentation\n * @param twips Indentation in twips\n */\n setHangingIndent(twips: number): this {\n if (twips < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n this.properties.hangingIndent = twips;\n return this;\n }\n\n /**\n * Sets the font for the numbering character\n * @param font Font family name\n */\n setFont(font: string): this {\n this.properties.font = font;\n return this;\n }\n\n /**\n * Sets the alignment\n * @param alignment Alignment type\n */\n setAlignment(alignment: NumberAlignment): this {\n this.properties.alignment = alignment;\n return this;\n }\n\n /**\n * Sets the font size in half-points\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\n */\n setFontSize(halfPoints: number): this {\n this.properties.fontSize = halfPoints;\n return this;\n }\n\n /**\n * Sets the level text (bullet character or number template)\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\n */\n setText(text: string): this {\n this.properties.text = text;\n return this;\n }\n\n /**\n * Sets the text color\n * @param color Hex color without # (e.g., '000000' for black)\n */\n setColor(color: string): this {\n this.properties.color = color;\n return this;\n }\n\n /**\n * Sets whether the numbering text is bold\n * @param bold Whether to make bold\n */\n setBold(bold: boolean): this {\n this.properties.bold = bold;\n return this;\n }\n\n /**\n * Sets whether the numbering text is italic\n * @param italic Whether to make italic\n */\n setItalic(italic: boolean): this {\n this.properties.italic = italic;\n return this;\n }\n\n /**\n * Gets whether the numbering text is italic\n */\n getItalic(): boolean {\n return this.properties.italic ?? false;\n }\n\n /**\n * Sets the underline style for numbering text\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\n */\n setUnderline(style: string | undefined): this {\n this.properties.underline = style;\n return this;\n }\n\n /**\n * Gets the underline style\n */\n getUnderline(): string | undefined {\n return this.properties.underline;\n }\n\n /**\n * Clears the underline style\n */\n clearUnderline(): this {\n this.properties.underline = undefined;\n return this;\n }\n\n /**\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n *\n * Controls when this level's numbering restarts based on higher-level changes:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined: Restart when level-1 changes (standard/default behavior)\n *\n * @param level The level that triggers restart (0-8), or undefined for default\n * @example\n * // Level 1 that never restarts (continuous across document)\n * level1.setLvlRestart(0);\n *\n * // Level 2 that restarts when level 0 changes (not level 1)\n * level2.setLvlRestart(0);\n */\n setLvlRestart(level: number | undefined): this {\n if (level !== undefined && (level < 0 || level > 8)) {\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\n }\n this.properties.lvlRestart = level;\n return this;\n }\n\n /**\n * Gets the level restart value\n * @returns The level that triggers restart, or undefined for default behavior\n */\n getLvlRestart(): number | undefined {\n return this.properties.lvlRestart;\n }\n\n /**\n * Sets the paragraph style ID linked to this numbering level\n * Links this level to a paragraph style definition (w:pStyle per ECMA-376 §17.9.23)\n * @param styleId The paragraph style ID\n */\n setParagraphStyle(styleId: string): this {\n this.properties.pStyle = styleId;\n return this;\n }\n\n /**\n * Gets the paragraph style ID linked to this numbering level\n */\n getParagraphStyle(): string | undefined {\n return this.properties.pStyle;\n }\n\n /**\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\n * @param format The numbering format\n */\n setFormat(format: NumberFormat): this {\n this.properties.format = NumberingLevel.normalizeFormat(format);\n return this;\n }\n\n /**\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\n * Accepts both standard format names and common display shortcuts.\n */\n static normalizeFormat(format: string): NumberFormat {\n const corrections: Record<string, NumberFormat> = {\n 'a.': 'lowerLetter',\n 'A.': 'upperLetter',\n 'i.': 'lowerRoman',\n 'I.': 'upperRoman',\n '1.': 'decimal',\n };\n return (corrections[format] ?? format) as NumberFormat;\n }\n\n /**\n * Generates the WordprocessingML XML for this level\n */\n toXML(): XMLElement {\n // ECMA-376 CT_Lvl element order (§17.9.6):\n // start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlPicBulletId, legacy, lvlJc, pPr, rPr\n const children: XMLElement[] = [];\n\n // 1. Start value\n children.push(XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));\n\n // 2. Number format\n children.push(XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));\n\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n if (this.properties.lvlRestart !== undefined) {\n children.push(\n XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() })\n );\n }\n\n // 4. pStyle (paragraph style link)\n if (this.properties.pStyle) {\n children.push(XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));\n }\n\n // 5. Legal numbering style\n if (this.properties.isLegalNumberingStyle) {\n children.push(XMLBuilder.wSelf('isLgl'));\n }\n\n // 6. Suffix (what comes after the number)\n if (this.properties.suffix) {\n children.push(XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));\n }\n\n // 7. Level text (e.g., \"%1.\" or \"•\")\n children.push(XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));\n\n // 8. Alignment\n children.push(XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));\n\n // 9. Paragraph properties (indentation)\n const ind = XMLBuilder.wSelf('ind', {\n 'w:left': this.properties.leftIndent.toString(),\n 'w:hanging': this.properties.hangingIndent.toString(),\n });\n const pPr = XMLBuilder.w('pPr', undefined, [ind]);\n children.push(pPr);\n\n // 10. Run properties (font)\n const rPrChildren: XMLElement[] = [];\n\n // Font\n rPrChildren.push(\n XMLBuilder.wSelf('rFonts', {\n 'w:ascii': this.properties.font,\n 'w:hAnsi': this.properties.font,\n 'w:cs': this.properties.font,\n 'w:hint': 'default',\n })\n );\n\n // Bold\n if (this.properties.bold) {\n rPrChildren.push(XMLBuilder.wSelf('b'));\n rPrChildren.push(XMLBuilder.wSelf('bCs'));\n }\n\n // Italic\n if (this.properties.italic) {\n rPrChildren.push(XMLBuilder.wSelf('i'));\n rPrChildren.push(XMLBuilder.wSelf('iCs'));\n }\n\n // CT_RPr element order per ECMA-376 §17.3.2.28:\n // ... b, bCs, i, iCs, ... color (#19), ... sz (#24), szCs (#25), ... u (#27)\n\n // Color (#19)\n if (this.properties.color) {\n rPrChildren.push(XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));\n }\n\n // Font size (#24, #25)\n rPrChildren.push(XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));\n rPrChildren.push(XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));\n\n // Underline (#27)\n if (this.properties.underline) {\n rPrChildren.push(XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));\n }\n\n const rPr = XMLBuilder.w('rPr', undefined, rPrChildren);\n children.push(rPr);\n\n return XMLBuilder.w('lvl', { 'w:ilvl': this.properties.level.toString() }, children);\n }\n\n /**\n * Gets the recommended bullet symbol and font for a given level\n * @param level The level index (0-8)\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\n * @returns Object with symbol and font properties\n */\n static getBulletSymbolWithFont(\n level: number,\n style: 'standard' | 'circle' | 'square' | 'arrow' | 'check' | 'word-native' = 'standard'\n ): { symbol: string; font: string } {\n const bulletSets = {\n // Standard style now uses Word-native encoding for maximum compatibility\n standard: [\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n circle: [\n { symbol: '●', font: 'Calibri' }, // Level 0: Filled circle (bold)\n { symbol: '○', font: 'Calibri' }, // Level 1: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 2: Fisheye\n { symbol: '◯', font: 'Calibri' }, // Level 3: Large circle\n { symbol: '⦿', font: 'Calibri' }, // Level 4: Circled bullet\n { symbol: '○', font: 'Calibri' }, // Level 5: Empty circle\n { symbol: '●', font: 'Calibri' }, // Level 6: Filled circle\n { symbol: '○', font: 'Calibri' }, // Level 7: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 8: Fisheye\n ],\n square: [\n { symbol: '■', font: 'Calibri' }, // Level 0: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 1: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 2: Small filled square\n { symbol: '▫', font: 'Calibri' }, // Level 3: Small empty square\n { symbol: '◼', font: 'Calibri' }, // Level 4: Medium filled square\n { symbol: '◻', font: 'Calibri' }, // Level 5: Medium empty square\n { symbol: '■', font: 'Calibri' }, // Level 6: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 7: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 8: Small filled square\n ],\n arrow: [\n { symbol: '➢', font: 'Calibri' }, // Level 0: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 1: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 2: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 3: Right arrow simple\n { symbol: '➜', font: 'Calibri' }, // Level 4: Right arrow outline\n { symbol: '➢', font: 'Calibri' }, // Level 5: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 6: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 7: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 8: Right arrow simple\n ],\n check: [\n { symbol: '✓', font: 'Calibri' }, // Level 0: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 1: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 2: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 3: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 4: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 5: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 6: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 7: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 8: Checked box\n ],\n 'word-native': [\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n };\n\n const selectedSet = bulletSets[style];\n const levelIndex = level % selectedSet.length;\n const result = selectedSet[levelIndex];\n\n // Fallback to standard bullet if somehow undefined\n return result || { symbol: '•', font: 'Calibri' };\n }\n\n /**\n * Calculates the standard indentation values for a given level\n * @param level The level index (0-8)\n * @returns Object with leftIndent and hangingIndent in twips\n * @example\n * const indent = NumberingLevel.calculateStandardIndentation(0);\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\n *\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\n */\n static calculateStandardIndentation(level: number): {\n leftIndent: number;\n hangingIndent: number;\n } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n return {\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n };\n }\n\n /**\n * Gets the standard number format for a given level\n * @param level The level index (0-8)\n * @returns The recommended number format for this level\n * @example\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\n */\n static getStandardNumberFormat(level: number): NumberFormat {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n const formats: NumberFormat[] = [\n 'decimal', // Level 0: 1., 2., 3.\n 'lowerLetter', // Level 1: a., b., c.\n 'lowerRoman', // Level 2: i., ii., iii.\n 'upperLetter', // Level 3: A., B., C.\n 'upperRoman', // Level 4: I., II., III.\n ];\n\n const result = formats[level % formats.length];\n return result || 'decimal'; // Fallback to decimal (should never happen)\n }\n\n /**\n * Creates a bullet list level\n *\n * When called without parameters, uses Word-native encoding for the level:\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\n *\n * @param level The level index (0-8)\n * @param bullet Optional bullet character (defaults to Word-native for level)\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\n */\n static createBulletLevel(level: number, bullet?: string, font?: string): NumberingLevel {\n // Use Word-native defaults when not specified\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, 'standard');\n const actualBullet = bullet ?? defaults.symbol;\n const actualFont = font ?? defaults.font;\n\n return new NumberingLevel({\n level,\n format: 'bullet',\n text: actualBullet,\n alignment: 'left',\n font: actualFont,\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a decimal list level (1, 2, 3, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createDecimalLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'decimal',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower roman list level (i, ii, iii, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper roman list level (I, II, III, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower letter list level (a, b, c, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper letter list level (A, B, C, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Factory method for creating a numbering level\n * @param properties The level properties\n */\n static create(properties: NumberingLevelProperties): NumberingLevel {\n return new NumberingLevel(properties);\n }\n\n /**\n * Creates a NumberingLevel from XML element\n * @param xml The XML string of the <w:lvl> element\n * @returns NumberingLevel instance\n */\n static fromXML(xml: string): NumberingLevel {\n // Extract level index (required)\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\n if (!ilvlMatch?.[1]) {\n throw new Error('Missing required w:ilvl attribute');\n }\n const level = parseInt(ilvlMatch[1], 10);\n\n // Extract number format (required)\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!numFmtMatch?.[1]) {\n throw new Error('Missing required w:numFmt element');\n }\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\n\n // Extract level text (optional - can be empty for placeholder levels)\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : '';\n\n // Extract alignment (optional, default: left)\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const alignment = (lvlJcMatch?.[1] ? lvlJcMatch[1] : 'left') as NumberAlignment;\n\n // Extract start value (optional, default: 1)\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\n\n // Extract suffix (optional, default: tab)\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const suffix = suffixMatch?.[1] ? (suffixMatch[1] as 'tab' | 'space' | 'nothing') : 'tab';\n\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n let lvlRestart: number | undefined;\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (lvlRestartMatch?.[1]) {\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\n }\n\n // Extract pStyle (paragraph style link)\n let pStyle: string | undefined;\n const pStyleMatch = /<w:pStyle[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (pStyleMatch?.[1]) {\n pStyle = pStyleMatch[1];\n }\n\n // Extract indentation from <w:pPr><w:ind>\n let leftIndent = 720 + level * 360; // default\n let hangingIndent = 360; // default\n const indMatch = /<w:ind[^>]*\\/>/.exec(xml);\n if (indMatch) {\n const indElement = indMatch[0];\n const leftMatch = /w:left=\"([^\"]+)\"/.exec(indElement);\n const hangingMatch = /w:hanging=\"([^\"]+)\"/.exec(indElement);\n\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\n if (hangingMatch?.[1]) hangingIndent = parseInt(hangingMatch[1], 10);\n }\n\n // Extract font and size from <w:rPr>\n let font = 'Calibri';\n let fontSize = 22;\n\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\n if (rFontsMatch) {\n const rFontsElement = rFontsMatch[0];\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\n if (asciiMatch?.[1]) font = asciiMatch[1];\n }\n\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\n\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\n const bold = false;\n const italic = false;\n const underline: string | undefined = undefined;\n\n // Extract color from <w:rPr>\n let color: string | undefined;\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (colorMatch?.[1]) {\n color = colorMatch[1];\n }\n\n return new NumberingLevel({\n level,\n format,\n text,\n alignment,\n start,\n leftIndent,\n hangingIndent,\n font,\n fontSize,\n suffix,\n bold,\n italic,\n underline,\n color,\n lvlRestart,\n pStyle,\n });\n }\n}\n"]}
1
+ {"version":3,"file":"NumberingLevel.js","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NumberingLevel - Defines formatting for a single level in a list\n *\n * A numbering level specifies how a particular list level (0-8) should be formatted,\n * including the numbering format (bullet, decimal, roman, etc.), text template,\n * alignment, and indentation.\n */\n\nimport { parseOnOffAttribute } from '../utils/parsingHelpers.js';\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\n\n/**\n * Word-native bullet character mappings\n *\n * Microsoft Word uses specific fonts with Private Use Area (PUA) characters\n * for bullet points. These mappings ensure 100% compatibility with Word's\n * native bullet rendering.\n *\n * Pattern: Levels 0,3,6 = filled bullet; 1,4,7 = open circle; 2,5,8 = filled square\n */\nexport const WORD_NATIVE_BULLETS = {\n /** Filled bullet (levels 0, 3, 6) - Symbol font U+F0B7 */\n FILLED_BULLET: { char: '\\uF0B7', font: 'Symbol' },\n /** Open circle (levels 1, 4, 7) - Courier New U+006F (lowercase 'o') */\n OPEN_CIRCLE: { char: '\\u006F', font: 'Courier New' },\n /** Filled square (levels 2, 5, 8) - Wingdings U+F0A7 */\n FILLED_SQUARE: { char: '\\uF0A7', font: 'Wingdings' },\n} as const;\n\n/**\n * Type for Word-native bullet definition\n */\nexport type WordNativeBullet = (typeof WORD_NATIVE_BULLETS)[keyof typeof WORD_NATIVE_BULLETS];\n\n/**\n * Numbering format types supported by Word\n */\nexport type NumberFormat =\n | 'bullet' // Bullet character\n | 'decimal' // 1, 2, 3, ...\n | 'lowerRoman' // i, ii, iii, ...\n | 'upperRoman' // I, II, III, ...\n | 'lowerLetter' // a, b, c, ...\n | 'upperLetter' // A, B, C, ...\n | 'ordinal' // 1st, 2nd, 3rd, ...\n | 'cardinalText' // One, Two, Three, ...\n | 'ordinalText' // First, Second, Third, ...\n | 'hex' // 0x01, 0x02, ...\n | 'chicago' // *, †, ‡, §, ...\n | 'decimal zero'; // 01, 02, 03, ...\n\n/**\n * Alignment for the numbering text\n */\nexport type NumberAlignment = 'left' | 'center' | 'right' | 'start' | 'end';\n\n/**\n * Properties for creating a numbering level\n */\nexport interface NumberingLevelProperties {\n /** The level index (0-8, where 0 is the outermost level) */\n level: number;\n\n /** The numbering format */\n format: NumberFormat;\n\n /** The text template (e.g., \"%1.\" for decimal, \"•\" for bullet) */\n text: string;\n\n /** Alignment of the numbering text */\n alignment?: NumberAlignment;\n\n /** Starting value (for numeric formats, default: 1) */\n start?: number;\n\n /** Left indentation in twips (can be negative for outdents into margin) */\n leftIndent?: number;\n\n /** Hanging indentation in twips (for the text after the number) */\n hangingIndent?: number;\n\n /** Font family for the numbering character (useful for bullets) */\n font?: string;\n\n /** Font size in half-points (e.g., 22 = 11pt) */\n fontSize?: number;\n\n /** Whether to show text after the number (default: true) */\n isLegalNumberingStyle?: boolean;\n\n /** Suffix after the number (tab, space, or nothing) */\n suffix?: 'tab' | 'space' | 'nothing';\n\n /** Text color in hex (without #) */\n color?: string;\n\n /** Whether the numbering text is bold */\n bold?: boolean;\n\n /** Whether the numbering text is italic */\n italic?: boolean;\n\n /** Underline style for numbering text ('single', 'double', 'wave', 'dotted', 'dash', etc.) */\n underline?: string;\n\n /**\n * Level at which numbering should restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n * Specifies when to restart this level's numbering based on a higher-level change:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined (default): Restart when level-1 changes (standard behavior)\n */\n lvlRestart?: number;\n\n /** Paragraph style ID linked to this numbering level (w:pStyle per ECMA-376 §17.9.23) */\n pStyle?: string;\n\n /**\n * Tentative level flag (w:tentative per ECMA-376 §17.9.29).\n * When true, the level is present in the definition but not displayed by\n * default — Word uses this for the unused upper levels of a hybrid\n * multilevel list so they can be offered in the list picker without\n * polluting the visible outline. `undefined` / `false` = non-tentative.\n */\n tentative?: boolean;\n\n /**\n * Template code (w:tplc per ECMA-376 §17.9.30) — ST_ShortHexNumber.\n * An 8-character hex string Word uses to identify the level template so\n * that sibling list definitions across documents can recognise each\n * other. Preserved verbatim for round-trip fidelity.\n */\n tplc?: string;\n\n /**\n * Picture bullet reference (w:lvlPicBulletId per ECMA-376 §17.9.15) —\n * numeric ID of a `<w:numPicBullet>` definition elsewhere in\n * numbering.xml. When set, the level renders its bullet as the linked\n * picture. MUST be parsed and round-tripped or `removeOrphanedNumPicBullets`\n * will treat every `<w:numPicBullet>` as unreferenced and delete them on save.\n */\n lvlPicBulletId?: number;\n\n /**\n * Legacy Word 97-style numbering state (`<w:legacy>` per ECMA-376 §17.9.10).\n * Preserved on levels imported from documents that record legacy rendering\n * information — losing this can shift the level's indentation and bullet/\n * number spacing to Word's modern defaults on round-trip.\n */\n legacy?: LegacyNumbering;\n}\n\n/**\n * CT_LvlLegacy (ECMA-376 §17.9.10) — carries Word 97 compatibility numbering.\n * All three attributes are independently optional; presence of the element\n * without any attributes is a valid placeholder Word emits in some cases.\n */\nexport interface LegacyNumbering {\n /** w:legacy — ST_OnOff. Whether to render this level with legacy rules. */\n legacy?: boolean;\n /** w:legacySpace — ST_TwipsMeasure (non-negative). Space after the number. */\n legacySpace?: number;\n /** w:legacyIndent — ST_SignedTwipsMeasure. Indent (can be negative). */\n legacyIndent?: number;\n}\n\n/**\n * Represents a single level in a numbering definition\n */\nexport class NumberingLevel {\n private properties: Required<\n Omit<\n NumberingLevelProperties,\n 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'\n >\n > &\n Pick<\n NumberingLevelProperties,\n 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'\n >;\n\n /**\n * Creates a new numbering level\n * @param properties The level properties\n */\n constructor(properties: NumberingLevelProperties) {\n // Set defaults\n this.properties = {\n level: properties.level,\n format: properties.format,\n text: properties.text,\n alignment: properties.alignment || 'left',\n start: properties.start !== undefined ? properties.start : 1,\n leftIndent:\n properties.leftIndent !== undefined ? properties.leftIndent : 720 + properties.level * 360,\n hangingIndent: properties.hangingIndent !== undefined ? properties.hangingIndent : 360,\n font: properties.font || 'Calibri',\n fontSize: properties.fontSize || 22, // 11pt default\n isLegalNumberingStyle:\n properties.isLegalNumberingStyle !== undefined ? properties.isLegalNumberingStyle : false,\n suffix: properties.suffix || 'tab',\n color: properties.color || '000000',\n bold: properties.bold !== undefined ? properties.bold : false,\n italic: properties.italic !== undefined ? properties.italic : false,\n underline: properties.underline,\n lvlRestart: properties.lvlRestart, // undefined means default behavior (restart on level-1 change)\n pStyle: properties.pStyle,\n // Explicit false differs from undefined only at serialization time;\n // both collapse to \"not tentative\" semantically.\n tentative: properties.tentative,\n tplc: properties.tplc,\n lvlPicBulletId: properties.lvlPicBulletId,\n legacy: properties.legacy,\n };\n\n this.validate();\n }\n\n /**\n * Validates the level properties\n */\n private validate(): void {\n if (this.properties.level < 0 || this.properties.level > 8) {\n throw new Error(`Level must be between 0 and 8, got ${this.properties.level}`);\n }\n\n // Note: leftIndent CAN be negative (outdent into margin) per ECMA-376\n // This is valid and used for hanging indents where bullets appear in margin\n\n if (this.properties.hangingIndent < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n\n if (this.properties.start < 0) {\n throw new Error('Start value must be non-negative');\n }\n }\n\n /**\n * Calculates safe indentation values for a given level based on page constraints.\n *\n * Use this instead of default indentation when working with narrow pages or\n * deep nesting levels to ensure content stays within page margins.\n *\n * @param level The level index (0-8)\n * @param pageWidthTwips Page width in twips (default: 12240 = 8.5 inches)\n * @param leftMarginTwips Left margin in twips (default: 1440 = 1 inch)\n * @param rightMarginTwips Right margin in twips (default: 1440 = 1 inch)\n * @param minContentWidth Minimum content width in twips (default: 2880 = 2 inches)\n * @returns Safe indentation values that won't exceed available space\n *\n * @example\n * ```typescript\n * // For a narrow page (6\" wide with 0.5\" margins)\n * const indent = NumberingLevel.calculateSafeIndentation(\n * 5, // level 5\n * 8640, // 6 inches page width\n * 720, // 0.5 inch left margin\n * 720 // 0.5 inch right margin\n * );\n * ```\n */\n static calculateSafeIndentation(\n level: number,\n pageWidthTwips = 12240,\n leftMarginTwips = 1440,\n rightMarginTwips = 1440,\n minContentWidth = 2880\n ): { leftIndent: number; hangingIndent: number } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n // Calculate available content width\n const availableWidth = pageWidthTwips - leftMarginTwips - rightMarginTwips;\n\n // Calculate max safe indent (leave space for content)\n const maxSafeIndent = Math.max(0, availableWidth - minContentWidth);\n\n // Standard indentation\n const standardLeftIndent = 720 + level * 360;\n const hangingIndent = 360;\n\n // Cap at safe maximum\n const safeLeftIndent = Math.min(standardLeftIndent, maxSafeIndent);\n\n return {\n leftIndent: safeLeftIndent,\n hangingIndent,\n };\n }\n\n /**\n * Gets the level index\n */\n getLevel(): number {\n return this.properties.level;\n }\n\n /**\n * Gets the numbering format\n */\n getFormat(): NumberFormat {\n return this.properties.format;\n }\n\n /**\n * Gets the level properties\n */\n getProperties(): Required<\n Omit<\n NumberingLevelProperties,\n 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'\n >\n > &\n Pick<\n NumberingLevelProperties,\n 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'\n > {\n return { ...this.properties };\n }\n\n /**\n * Sets the left indentation\n * @param twips Indentation in twips\n */\n setLeftIndent(twips: number): this {\n // Note: Negative values are valid (outdent into margin) per ECMA-376\n this.properties.leftIndent = twips;\n return this;\n }\n\n /**\n * Sets the hanging indentation\n * @param twips Indentation in twips\n */\n setHangingIndent(twips: number): this {\n if (twips < 0) {\n throw new Error('Hanging indent must be non-negative');\n }\n this.properties.hangingIndent = twips;\n return this;\n }\n\n /**\n * Sets the font for the numbering character\n * @param font Font family name\n */\n setFont(font: string): this {\n this.properties.font = font;\n return this;\n }\n\n /**\n * Sets the alignment\n * @param alignment Alignment type\n */\n setAlignment(alignment: NumberAlignment): this {\n this.properties.alignment = alignment;\n return this;\n }\n\n /**\n * Sets the font size in half-points\n * @param halfPoints Font size in half-points (e.g., 24 = 12pt)\n */\n setFontSize(halfPoints: number): this {\n this.properties.fontSize = halfPoints;\n return this;\n }\n\n /**\n * Sets the level text (bullet character or number template)\n * @param text The text template (e.g., '•' for bullets, '%1.' for numbered)\n */\n setText(text: string): this {\n this.properties.text = text;\n return this;\n }\n\n /**\n * Sets the text color\n * @param color Hex color without # (e.g., '000000' for black)\n */\n setColor(color: string): this {\n this.properties.color = color;\n return this;\n }\n\n /**\n * Sets whether the numbering text is bold\n * @param bold Whether to make bold\n */\n setBold(bold: boolean): this {\n this.properties.bold = bold;\n return this;\n }\n\n /**\n * Sets whether the numbering text is italic\n * @param italic Whether to make italic\n */\n setItalic(italic: boolean): this {\n this.properties.italic = italic;\n return this;\n }\n\n /**\n * Gets whether the numbering text is italic\n */\n getItalic(): boolean {\n return this.properties.italic ?? false;\n }\n\n /**\n * Sets the underline style for numbering text\n * @param style Underline style ('single', 'double', 'wave', 'dotted', 'dash', etc.)\n */\n setUnderline(style: string | undefined): this {\n this.properties.underline = style;\n return this;\n }\n\n /**\n * Gets the underline style\n */\n getUnderline(): string | undefined {\n return this.properties.underline;\n }\n\n /**\n * Clears the underline style\n */\n clearUnderline(): this {\n this.properties.underline = undefined;\n return this;\n }\n\n /**\n * Sets the level restart behavior (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n *\n * Controls when this level's numbering restarts based on higher-level changes:\n * - 0: Never restart (continues throughout document)\n * - 1-8: Restart when the specified level changes\n * - undefined: Restart when level-1 changes (standard/default behavior)\n *\n * @param level The level that triggers restart (0-8), or undefined for default\n * @example\n * // Level 1 that never restarts (continuous across document)\n * level1.setLvlRestart(0);\n *\n * // Level 2 that restarts when level 0 changes (not level 1)\n * level2.setLvlRestart(0);\n */\n setLvlRestart(level: number | undefined): this {\n if (level !== undefined && (level < 0 || level > 8)) {\n throw new Error(`lvlRestart must be between 0 and 8, got ${level}`);\n }\n this.properties.lvlRestart = level;\n return this;\n }\n\n /**\n * Gets the level restart value\n * @returns The level that triggers restart, or undefined for default behavior\n */\n getLvlRestart(): number | undefined {\n return this.properties.lvlRestart;\n }\n\n /**\n * Sets the paragraph style ID linked to this numbering level\n * Links this level to a paragraph style definition (w:pStyle per ECMA-376 §17.9.23)\n * @param styleId The paragraph style ID\n */\n setParagraphStyle(styleId: string): this {\n this.properties.pStyle = styleId;\n return this;\n }\n\n /**\n * Gets the paragraph style ID linked to this numbering level\n */\n getParagraphStyle(): string | undefined {\n return this.properties.pStyle;\n }\n\n /**\n * Sets the numbering format (decimal, lowerLetter, bullet, etc.)\n * @param format The numbering format\n */\n setFormat(format: NumberFormat): this {\n this.properties.format = NumberingLevel.normalizeFormat(format);\n return this;\n }\n\n /**\n * Normalizes display-string format values to ECMA-376 ST_NumberFormat names.\n * Accepts both standard format names and common display shortcuts.\n */\n static normalizeFormat(format: string): NumberFormat {\n const corrections: Record<string, NumberFormat> = {\n 'a.': 'lowerLetter',\n 'A.': 'upperLetter',\n 'i.': 'lowerRoman',\n 'I.': 'upperRoman',\n '1.': 'decimal',\n };\n return (corrections[format] ?? format) as NumberFormat;\n }\n\n /**\n * Generates the WordprocessingML XML for this level\n */\n toXML(): XMLElement {\n // ECMA-376 CT_Lvl element order (§17.9.6):\n // start, numFmt, lvlRestart, pStyle, isLgl, suff, lvlText, lvlPicBulletId, legacy, lvlJc, pPr, rPr\n const children: XMLElement[] = [];\n\n // 1. Start value\n children.push(XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));\n\n // 2. Number format\n children.push(XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));\n\n // 3. Level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n if (this.properties.lvlRestart !== undefined) {\n children.push(\n XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() })\n );\n }\n\n // 4. pStyle (paragraph style link)\n if (this.properties.pStyle) {\n children.push(XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));\n }\n\n // 5. Legal numbering style\n if (this.properties.isLegalNumberingStyle) {\n children.push(XMLBuilder.wSelf('isLgl'));\n }\n\n // 6. Suffix (what comes after the number)\n if (this.properties.suffix) {\n children.push(XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));\n }\n\n // 7. Level text (e.g., \"%1.\" or \"•\")\n children.push(XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));\n\n // 7a. Picture bullet reference (w:lvlPicBulletId per §17.9.15). CT_Lvl order\n // places this AFTER lvlText and BEFORE lvlJc. Must be emitted so that\n // orphan-cleanup of <w:numPicBullet> doesn't delete the referenced bullet.\n if (this.properties.lvlPicBulletId !== undefined) {\n children.push(\n XMLBuilder.wSelf('lvlPicBulletId', {\n 'w:val': this.properties.lvlPicBulletId.toString(),\n })\n );\n }\n\n // 7b. Legacy numbering state (w:legacy per §17.9.10). CT_Lvl order places\n // this AFTER lvlPicBulletId and BEFORE lvlJc. Emit every attribute that\n // is explicitly set; omit when legacy is undefined entirely.\n if (this.properties.legacy) {\n const legacyAttrs: Record<string, string> = {};\n if (this.properties.legacy.legacy !== undefined) {\n legacyAttrs['w:legacy'] = this.properties.legacy.legacy ? '1' : '0';\n }\n if (this.properties.legacy.legacySpace !== undefined) {\n legacyAttrs['w:legacySpace'] = this.properties.legacy.legacySpace.toString();\n }\n if (this.properties.legacy.legacyIndent !== undefined) {\n legacyAttrs['w:legacyIndent'] = this.properties.legacy.legacyIndent.toString();\n }\n children.push(XMLBuilder.wSelf('legacy', legacyAttrs));\n }\n\n // 8. Alignment\n children.push(XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));\n\n // 9. Paragraph properties (indentation)\n const ind = XMLBuilder.wSelf('ind', {\n 'w:left': this.properties.leftIndent.toString(),\n 'w:hanging': this.properties.hangingIndent.toString(),\n });\n const pPr = XMLBuilder.w('pPr', undefined, [ind]);\n children.push(pPr);\n\n // 10. Run properties (font)\n const rPrChildren: XMLElement[] = [];\n\n // Font\n rPrChildren.push(\n XMLBuilder.wSelf('rFonts', {\n 'w:ascii': this.properties.font,\n 'w:hAnsi': this.properties.font,\n 'w:cs': this.properties.font,\n 'w:hint': 'default',\n })\n );\n\n // Bold\n if (this.properties.bold) {\n rPrChildren.push(XMLBuilder.wSelf('b'));\n rPrChildren.push(XMLBuilder.wSelf('bCs'));\n }\n\n // Italic\n if (this.properties.italic) {\n rPrChildren.push(XMLBuilder.wSelf('i'));\n rPrChildren.push(XMLBuilder.wSelf('iCs'));\n }\n\n // CT_RPr element order per ECMA-376 §17.3.2.28:\n // ... b, bCs, i, iCs, ... color (#19), ... sz (#24), szCs (#25), ... u (#27)\n\n // Color (#19)\n if (this.properties.color) {\n rPrChildren.push(XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));\n }\n\n // Font size (#24, #25)\n rPrChildren.push(XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));\n rPrChildren.push(XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));\n\n // Underline (#27)\n if (this.properties.underline) {\n rPrChildren.push(XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));\n }\n\n const rPr = XMLBuilder.w('rPr', undefined, rPrChildren);\n children.push(rPr);\n\n // <w:lvl> opening attributes: w:ilvl (required), plus optional w:tplc\n // (template code, §17.9.30) and w:tentative (§17.9.29). w:tentative and\n // w:tplc were both silently dropped on parse before this — so neither\n // could ever be regenerated on save.\n const lvlAttrs: Record<string, string> = { 'w:ilvl': this.properties.level.toString() };\n if (this.properties.tplc) {\n lvlAttrs['w:tplc'] = this.properties.tplc;\n }\n if (this.properties.tentative) {\n lvlAttrs['w:tentative'] = '1';\n }\n return XMLBuilder.w('lvl', lvlAttrs, children);\n }\n\n /**\n * Gets the recommended bullet symbol and font for a given level\n * @param level The level index (0-8)\n * @param style Optional bullet style ('standard', 'circle', 'square', 'arrow', 'check', 'word-native')\n * @returns Object with symbol and font properties\n */\n static getBulletSymbolWithFont(\n level: number,\n style: 'standard' | 'circle' | 'square' | 'arrow' | 'check' | 'word-native' = 'standard'\n ): { symbol: string; font: string } {\n const bulletSets = {\n // Standard style now uses Word-native encoding for maximum compatibility\n standard: [\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n circle: [\n { symbol: '●', font: 'Calibri' }, // Level 0: Filled circle (bold)\n { symbol: '○', font: 'Calibri' }, // Level 1: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 2: Fisheye\n { symbol: '◯', font: 'Calibri' }, // Level 3: Large circle\n { symbol: '⦿', font: 'Calibri' }, // Level 4: Circled bullet\n { symbol: '○', font: 'Calibri' }, // Level 5: Empty circle\n { symbol: '●', font: 'Calibri' }, // Level 6: Filled circle\n { symbol: '○', font: 'Calibri' }, // Level 7: Empty circle\n { symbol: '◉', font: 'Calibri' }, // Level 8: Fisheye\n ],\n square: [\n { symbol: '■', font: 'Calibri' }, // Level 0: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 1: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 2: Small filled square\n { symbol: '▫', font: 'Calibri' }, // Level 3: Small empty square\n { symbol: '◼', font: 'Calibri' }, // Level 4: Medium filled square\n { symbol: '◻', font: 'Calibri' }, // Level 5: Medium empty square\n { symbol: '■', font: 'Calibri' }, // Level 6: Filled square\n { symbol: '□', font: 'Calibri' }, // Level 7: Empty square\n { symbol: '▪', font: 'Calibri' }, // Level 8: Small filled square\n ],\n arrow: [\n { symbol: '➢', font: 'Calibri' }, // Level 0: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 1: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 2: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 3: Right arrow simple\n { symbol: '➜', font: 'Calibri' }, // Level 4: Right arrow outline\n { symbol: '➢', font: 'Calibri' }, // Level 5: Right arrow\n { symbol: '➣', font: 'Calibri' }, // Level 6: Right arrow filled\n { symbol: '➤', font: 'Calibri' }, // Level 7: Right arrow bold\n { symbol: '➔', font: 'Calibri' }, // Level 8: Right arrow simple\n ],\n check: [\n { symbol: '✓', font: 'Calibri' }, // Level 0: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 1: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 2: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 3: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 4: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 5: Checked box\n { symbol: '✓', font: 'Calibri' }, // Level 6: Check mark\n { symbol: '✔', font: 'Calibri' }, // Level 7: Heavy check mark\n { symbol: '☑', font: 'Calibri' }, // Level 8: Checked box\n ],\n 'word-native': [\n // Word-native bullets using PUA characters with Symbol/Wingdings fonts\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 0: Filled bullet (Symbol U+F0B7)\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 1: Open circle (Courier New U+006F)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 2: Filled square (Wingdings U+F0A7)\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 3: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 4: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 5: Filled square\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_BULLET.char,\n font: WORD_NATIVE_BULLETS.FILLED_BULLET.font,\n }, // Level 6: Filled bullet\n {\n symbol: WORD_NATIVE_BULLETS.OPEN_CIRCLE.char,\n font: WORD_NATIVE_BULLETS.OPEN_CIRCLE.font,\n }, // Level 7: Open circle\n {\n symbol: WORD_NATIVE_BULLETS.FILLED_SQUARE.char,\n font: WORD_NATIVE_BULLETS.FILLED_SQUARE.font,\n }, // Level 8: Filled square\n ],\n };\n\n const selectedSet = bulletSets[style];\n const levelIndex = level % selectedSet.length;\n const result = selectedSet[levelIndex];\n\n // Fallback to standard bullet if somehow undefined\n return result || { symbol: '•', font: 'Calibri' };\n }\n\n /**\n * Calculates the standard indentation values for a given level\n * @param level The level index (0-8)\n * @returns Object with leftIndent and hangingIndent in twips\n * @example\n * const indent = NumberingLevel.calculateStandardIndentation(0);\n * // Returns: { leftIndent: 720, hangingIndent: 360 } (0.5\" left, 0.25\" hanging)\n *\n * const indent2 = NumberingLevel.calculateStandardIndentation(2);\n * // Returns: { leftIndent: 1440, hangingIndent: 360 } (1.0\" left, 0.25\" hanging)\n */\n static calculateStandardIndentation(level: number): {\n leftIndent: number;\n hangingIndent: number;\n } {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n return {\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n };\n }\n\n /**\n * Gets the standard number format for a given level\n * @param level The level index (0-8)\n * @returns The recommended number format for this level\n * @example\n * NumberingLevel.getStandardNumberFormat(0); // 'decimal' (1., 2., 3.)\n * NumberingLevel.getStandardNumberFormat(1); // 'lowerLetter' (a., b., c.)\n * NumberingLevel.getStandardNumberFormat(2); // 'lowerRoman' (i., ii., iii.)\n * NumberingLevel.getStandardNumberFormat(3); // 'upperLetter' (A., B., C.)\n * NumberingLevel.getStandardNumberFormat(4); // 'upperRoman' (I., II., III.)\n */\n static getStandardNumberFormat(level: number): NumberFormat {\n if (level < 0 || level > 8) {\n throw new Error(`Invalid level ${level}. Level must be between 0 and 8.`);\n }\n\n const formats: NumberFormat[] = [\n 'decimal', // Level 0: 1., 2., 3.\n 'lowerLetter', // Level 1: a., b., c.\n 'lowerRoman', // Level 2: i., ii., iii.\n 'upperLetter', // Level 3: A., B., C.\n 'upperRoman', // Level 4: I., II., III.\n ];\n\n const result = formats[level % formats.length];\n return result || 'decimal'; // Fallback to decimal (should never happen)\n }\n\n /**\n * Creates a bullet list level\n *\n * When called without parameters, uses Word-native encoding for the level:\n * - Levels 0, 3, 6: Filled bullet (Symbol font, U+F0B7)\n * - Levels 1, 4, 7: Open circle (Courier New, U+006F)\n * - Levels 2, 5, 8: Filled square (Wingdings, U+F0A7)\n *\n * @param level The level index (0-8)\n * @param bullet Optional bullet character (defaults to Word-native for level)\n * @param font Optional font to use for the bullet (defaults to Word-native for level)\n */\n static createBulletLevel(level: number, bullet?: string, font?: string): NumberingLevel {\n // Use Word-native defaults when not specified\n const defaults = NumberingLevel.getBulletSymbolWithFont(level, 'standard');\n const actualBullet = bullet ?? defaults.symbol;\n const actualFont = font ?? defaults.font;\n\n return new NumberingLevel({\n level,\n format: 'bullet',\n text: actualBullet,\n alignment: 'left',\n font: actualFont,\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a decimal list level (1, 2, 3, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createDecimalLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'decimal',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower roman list level (i, ii, iii, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper roman list level (I, II, III, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperRomanLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperRoman',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates a lower letter list level (a, b, c, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createLowerLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'lowerLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Creates an upper letter list level (A, B, C, ...)\n * @param level The level index (0-8)\n * @param template The text template (default: '%1.')\n */\n static createUpperLetterLevel(level: number, template = `%${level + 1}.`): NumberingLevel {\n return new NumberingLevel({\n level,\n format: 'upperLetter',\n text: template,\n alignment: 'left',\n font: 'Verdana',\n fontSize: 24, // 12pt\n bold: false,\n color: '000000',\n leftIndent: 720 + level * 360,\n hangingIndent: 360,\n });\n }\n\n /**\n * Factory method for creating a numbering level\n * @param properties The level properties\n */\n static create(properties: NumberingLevelProperties): NumberingLevel {\n return new NumberingLevel(properties);\n }\n\n /**\n * Creates a NumberingLevel from XML element\n * @param xml The XML string of the <w:lvl> element\n * @returns NumberingLevel instance\n */\n static fromXML(xml: string): NumberingLevel {\n // Extract level index (required)\n const ilvlMatch = /<w:lvl[^>]*w:ilvl=\"([^\"]+)\"/.exec(xml);\n if (!ilvlMatch?.[1]) {\n throw new Error('Missing required w:ilvl attribute');\n }\n const level = parseInt(ilvlMatch[1], 10);\n\n // Extract attributes from the <w:lvl> opening tag specifically. Restrict\n // the regexes to the substring before the first `>` so they can't stray\n // onto a child element that happens to also carry a similarly-named attr.\n let tentative: boolean | undefined;\n let tplc: string | undefined;\n const lvlOpenEnd = xml.indexOf('>');\n if (lvlOpenEnd !== -1) {\n const lvlOpenTag = xml.substring(0, lvlOpenEnd);\n // w:tentative per ECMA-376 §17.9.29 — ST_OnOff.\n const tentativeMatch = /w:tentative\\s*=\\s*\"([^\"]*)\"/.exec(lvlOpenTag);\n if (tentativeMatch?.[1] !== undefined) {\n tentative = parseOnOffAttribute(tentativeMatch[1]);\n }\n // w:tplc per ECMA-376 §17.9.30 — ST_ShortHexNumber (8-char hex).\n const tplcMatch = /w:tplc\\s*=\\s*\"([^\"]*)\"/.exec(lvlOpenTag);\n if (tplcMatch?.[1]) {\n tplc = tplcMatch[1];\n }\n }\n\n // Extract w:lvlPicBulletId child element per ECMA-376 §17.9.15.\n // Zero is a valid ID, so use explicit check instead of truthy coercion.\n let lvlPicBulletId: number | undefined;\n const picBulletMatch = /<w:lvlPicBulletId\\s[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (picBulletMatch?.[1] !== undefined) {\n const parsed = parseInt(picBulletMatch[1], 10);\n if (!isNaN(parsed)) {\n lvlPicBulletId = parsed;\n }\n }\n\n // Extract <w:legacy> child per ECMA-376 §17.9.10. All three attributes are\n // independently optional; the element itself may be bare (a valid Word\n // placeholder). Presence of the tag at all means the level has legacy state\n // the source author wanted preserved, so we must emit it back on save even\n // if no attributes are set.\n let legacy: LegacyNumbering | undefined;\n const legacyMatch = /<w:legacy\\b([^>]*)\\/?>/.exec(xml);\n if (legacyMatch) {\n const attrs = legacyMatch[1] ?? '';\n legacy = {};\n const legacyValMatch = /\\bw:legacy\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\n if (legacyValMatch?.[1] !== undefined) {\n legacy.legacy = parseOnOffAttribute(legacyValMatch[1]);\n }\n const spaceMatch = /\\bw:legacySpace\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\n if (spaceMatch?.[1] !== undefined) {\n const parsed = parseInt(spaceMatch[1], 10);\n if (!isNaN(parsed)) legacy.legacySpace = parsed;\n }\n const indentMatch = /\\bw:legacyIndent\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\n if (indentMatch?.[1] !== undefined) {\n const parsed = parseInt(indentMatch[1], 10);\n if (!isNaN(parsed)) legacy.legacyIndent = parsed;\n }\n }\n\n // Extract number format (required)\n const numFmtMatch = /<w:numFmt[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!numFmtMatch?.[1]) {\n throw new Error('Missing required w:numFmt element');\n }\n const format = NumberingLevel.normalizeFormat(numFmtMatch[1]);\n\n // Extract level text (optional - can be empty for placeholder levels)\n const lvlTextMatch = /<w:lvlText[^>]*w:val=\"([^\"]*)\"/.exec(xml);\n const text = lvlTextMatch?.[1] !== undefined ? lvlTextMatch[1] : '';\n\n // Extract alignment (optional, default: left)\n const lvlJcMatch = /<w:lvlJc[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const alignment = (lvlJcMatch?.[1] ? lvlJcMatch[1] : 'left') as NumberAlignment;\n\n // Extract start value (optional, default: 1)\n const startMatch = /<w:start[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const start = startMatch?.[1] ? parseInt(startMatch[1], 10) : 1;\n\n // Extract suffix (optional, default: tab)\n const suffixMatch = /<w:suff[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const suffix = suffixMatch?.[1] ? (suffixMatch[1] as 'tab' | 'space' | 'nothing') : 'tab';\n\n // Extract level restart (w:lvlRestart per ECMA-376 Part 1 §17.9.11)\n let lvlRestart: number | undefined;\n const lvlRestartMatch = /<w:lvlRestart[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (lvlRestartMatch?.[1]) {\n lvlRestart = parseInt(lvlRestartMatch[1], 10);\n }\n\n // Extract pStyle (paragraph style link)\n let pStyle: string | undefined;\n const pStyleMatch = /<w:pStyle[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (pStyleMatch?.[1]) {\n pStyle = pStyleMatch[1];\n }\n\n // Extract w:isLgl (legal numbering style) per ECMA-376 §17.9.4 — CT_OnOff.\n // Previously not parsed at all, so a source document's `<w:isLgl/>` was\n // silently dropped on load and the level reverted to non-legal formatting\n // on any round-trip through docxmlater.\n let isLegalNumberingStyle: boolean | undefined;\n const isLglMatch = /<w:isLgl\\b([^>]*)\\/?>/.exec(xml);\n if (isLglMatch) {\n const attrs = isLglMatch[1] ?? '';\n const valMatch = /w:val\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\n isLegalNumberingStyle = valMatch?.[1] !== undefined ? parseOnOffAttribute(valMatch[1]) : true;\n }\n\n // Extract indentation from <w:pPr><w:ind> per ECMA-376 §17.3.1.12\n // CT_Ind. Both legacy LTR attrs (w:left / w:right) and bidi-aware\n // aliases (w:start / w:end) are valid; Word commonly emits the\n // bidi-aware form on modern documents. The previous regex read only\n // w:left / w:hanging, losing the numbering-level indent entirely on\n // any list authored or edited by a bidi-aware tool.\n //\n // The `[^>]*>` pattern (rather than `[^>]*\\/>`) also captures the\n // less-common non-self-closing form (`<w:ind …></w:ind>`).\n let leftIndent = 720 + level * 360; // default\n let hangingIndent = 360; // default\n const indMatch = /<w:ind\\b[^>]*>/.exec(xml);\n if (indMatch) {\n const indElement = indMatch[0];\n const leftMatch =\n /\\bw:start\\s*=\\s*\"([^\"]+)\"/.exec(indElement) || /\\bw:left\\s*=\\s*\"([^\"]+)\"/.exec(indElement);\n const hangingMatch = /\\bw:hanging\\s*=\\s*\"([^\"]+)\"/.exec(indElement);\n\n if (leftMatch?.[1]) leftIndent = parseInt(leftMatch[1], 10);\n if (hangingMatch?.[1]) hangingIndent = parseInt(hangingMatch[1], 10);\n }\n\n // Extract font and size from <w:rPr>\n let font = 'Calibri';\n let fontSize = 22;\n\n const rFontsMatch = /<w:rFonts[^>]*\\/>/.exec(xml);\n if (rFontsMatch) {\n const rFontsElement = rFontsMatch[0];\n const asciiMatch = /w:ascii=\"([^\"]+)\"/.exec(rFontsElement);\n if (asciiMatch?.[1]) font = asciiMatch[1];\n }\n\n const szMatch = /<w:sz[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (szMatch?.[1]) fontSize = parseInt(szMatch[1], 10);\n\n // List prefixes should never have bold, italic, or underline - ignore source XML formatting\n const bold = false;\n const italic = false;\n const underline: string | undefined = undefined;\n\n // Extract color from <w:rPr>\n let color: string | undefined;\n const colorMatch = /<w:color[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (colorMatch?.[1]) {\n color = colorMatch[1];\n }\n\n return new NumberingLevel({\n level,\n format,\n text,\n alignment,\n start,\n leftIndent,\n hangingIndent,\n font,\n fontSize,\n suffix,\n bold,\n italic,\n underline,\n color,\n lvlRestart,\n pStyle,\n isLegalNumberingStyle,\n tentative,\n tplc,\n lvlPicBulletId,\n legacy,\n });\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { XMLElement } from '../xml/XMLBuilder';
2
- import { AbstractNumbering } from './AbstractNumbering';
3
- import { NumberingInstance } from './NumberingInstance';
4
- import { NumberingLevel } from './NumberingLevel';
1
+ import { XMLElement } from '../xml/XMLBuilder.js';
2
+ import { AbstractNumbering } from './AbstractNumbering.js';
3
+ import { NumberingInstance } from './NumberingInstance.js';
4
+ import { NumberingLevel } from './NumberingLevel.js';
5
5
  export interface NumberingConsolidationOptions {
6
6
  protectedAbstractNumIds?: Set<number>;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingManager.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NumberingManager.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingManager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumberingManager = void 0;
4
- const XMLBuilder_1 = require("../xml/XMLBuilder");
5
- const AbstractNumbering_1 = require("./AbstractNumbering");
6
- const NumberingInstance_1 = require("./NumberingInstance");
7
- const logger_1 = require("../utils/logger");
4
+ const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
5
+ const AbstractNumbering_js_1 = require("./AbstractNumbering.js");
6
+ const NumberingInstance_js_1 = require("./NumberingInstance.js");
7
+ const logger_js_1 = require("../utils/logger.js");
8
8
  class NumberingManager {
9
9
  abstractNumberings;
10
10
  instances;
@@ -25,9 +25,9 @@ class NumberingManager {
25
25
  }
26
26
  }
27
27
  initializeDefaultNumberings() {
28
- const bulletAbstract = AbstractNumbering_1.AbstractNumbering.createBulletList(this.nextAbstractNumId++);
28
+ const bulletAbstract = AbstractNumbering_js_1.AbstractNumbering.createBulletList(this.nextAbstractNumId++);
29
29
  this.addAbstractNumbering(bulletAbstract);
30
- const numberedAbstract = AbstractNumbering_1.AbstractNumbering.createNumberedList(this.nextAbstractNumId++);
30
+ const numberedAbstract = AbstractNumbering_js_1.AbstractNumbering.createNumberedList(this.nextAbstractNumId++);
31
31
  this.addAbstractNumbering(numberedAbstract);
32
32
  }
33
33
  addAbstractNumbering(abstractNumbering) {
@@ -138,53 +138,53 @@ class NumberingManager {
138
138
  createBulletList(levels = 9, bullets) {
139
139
  const abstractNumId = this.nextAbstractNumId++;
140
140
  const abstractNumbering = bullets
141
- ? AbstractNumbering_1.AbstractNumbering.createBulletList(abstractNumId, levels, bullets)
142
- : AbstractNumbering_1.AbstractNumbering.createBulletList(abstractNumId, levels);
141
+ ? AbstractNumbering_js_1.AbstractNumbering.createBulletList(abstractNumId, levels, bullets)
142
+ : AbstractNumbering_js_1.AbstractNumbering.createBulletList(abstractNumId, levels);
143
143
  this.addAbstractNumbering(abstractNumbering);
144
144
  const numId = this.nextNumId++;
145
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
145
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
146
146
  this.addInstance(instance);
147
147
  return numId;
148
148
  }
149
149
  createNumberedList(levels = 9, formats) {
150
150
  const abstractNumId = this.nextAbstractNumId++;
151
151
  const abstractNumbering = formats
152
- ? AbstractNumbering_1.AbstractNumbering.createNumberedList(abstractNumId, levels, formats)
153
- : AbstractNumbering_1.AbstractNumbering.createNumberedList(abstractNumId, levels);
152
+ ? AbstractNumbering_js_1.AbstractNumbering.createNumberedList(abstractNumId, levels, formats)
153
+ : AbstractNumbering_js_1.AbstractNumbering.createNumberedList(abstractNumId, levels);
154
154
  this.addAbstractNumbering(abstractNumbering);
155
155
  const numId = this.nextNumId++;
156
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
156
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
157
157
  this.addInstance(instance);
158
158
  return numId;
159
159
  }
160
160
  createMultiLevelList() {
161
161
  const abstractNumId = this.nextAbstractNumId++;
162
- const abstractNumbering = AbstractNumbering_1.AbstractNumbering.createMultiLevelList(abstractNumId);
162
+ const abstractNumbering = AbstractNumbering_js_1.AbstractNumbering.createMultiLevelList(abstractNumId);
163
163
  this.addAbstractNumbering(abstractNumbering);
164
164
  const numId = this.nextNumId++;
165
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
165
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
166
166
  this.addInstance(instance);
167
167
  return numId;
168
168
  }
169
169
  createOutlineList() {
170
170
  const abstractNumId = this.nextAbstractNumId++;
171
- const abstractNumbering = AbstractNumbering_1.AbstractNumbering.createOutlineList(abstractNumId);
171
+ const abstractNumbering = AbstractNumbering_js_1.AbstractNumbering.createOutlineList(abstractNumId);
172
172
  this.addAbstractNumbering(abstractNumbering);
173
173
  const numId = this.nextNumId++;
174
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
174
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
175
175
  this.addInstance(instance);
176
176
  return numId;
177
177
  }
178
178
  createCustomList(levels, name) {
179
179
  const abstractNumId = this.nextAbstractNumId++;
180
- const abstractNumbering = AbstractNumbering_1.AbstractNumbering.create({
180
+ const abstractNumbering = AbstractNumbering_js_1.AbstractNumbering.create({
181
181
  abstractNumId,
182
182
  name,
183
183
  levels,
184
184
  });
185
185
  this.addAbstractNumbering(abstractNumbering);
186
186
  const numId = this.nextNumId++;
187
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
187
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
188
188
  this.addInstance(instance);
189
189
  return numId;
190
190
  }
@@ -193,7 +193,7 @@ class NumberingManager {
193
193
  throw new Error(`Abstract numbering ${abstractNumId} does not exist`);
194
194
  }
195
195
  const numId = this.nextNumId++;
196
- const instance = NumberingInstance_1.NumberingInstance.create({ numId, abstractNumId });
196
+ const instance = NumberingInstance_js_1.NumberingInstance.create({ numId, abstractNumId });
197
197
  this.addInstance(instance);
198
198
  return numId;
199
199
  }
@@ -210,7 +210,7 @@ class NumberingManager {
210
210
  }
211
211
  const abstractNumId = existingInstance.getAbstractNumId();
212
212
  const newNumId = this.nextNumId++;
213
- const newInstance = NumberingInstance_1.NumberingInstance.create({ numId: newNumId, abstractNumId });
213
+ const newInstance = NumberingInstance_js_1.NumberingInstance.create({ numId: newNumId, abstractNumId });
214
214
  newInstance.setLevelOverride(level, startValue);
215
215
  this.addInstance(newInstance);
216
216
  return newNumId;
@@ -232,17 +232,17 @@ class NumberingManager {
232
232
  hangingIndent = Math.max(0, hangingIndent);
233
233
  const instance = this.getInstance(numId);
234
234
  if (!instance) {
235
- logger_1.defaultLogger.warn(`Numbering instance ${numId} does not exist`);
235
+ logger_js_1.defaultLogger.warn(`Numbering instance ${numId} does not exist`);
236
236
  return false;
237
237
  }
238
238
  const abstractNum = this.getAbstractNumbering(instance.getAbstractNumId());
239
239
  if (!abstractNum) {
240
- logger_1.defaultLogger.warn(`Abstract numbering for instance ${numId} does not exist`);
240
+ logger_js_1.defaultLogger.warn(`Abstract numbering for instance ${numId} does not exist`);
241
241
  return false;
242
242
  }
243
243
  const numLevel = abstractNum.getLevel(level);
244
244
  if (!numLevel) {
245
- logger_1.defaultLogger.warn(`Level ${level} does not exist in abstract numbering`);
245
+ logger_js_1.defaultLogger.warn(`Level ${level} does not exist in abstract numbering`);
246
246
  return false;
247
247
  }
248
248
  numLevel.setLeftIndent(leftIndent);
@@ -252,12 +252,12 @@ class NumberingManager {
252
252
  normalizeListIndentation(numId) {
253
253
  const instance = this.getInstance(numId);
254
254
  if (!instance) {
255
- logger_1.defaultLogger.warn(`Numbering instance ${numId} does not exist`);
255
+ logger_js_1.defaultLogger.warn(`Numbering instance ${numId} does not exist`);
256
256
  return false;
257
257
  }
258
258
  const abstractNum = this.getAbstractNumbering(instance.getAbstractNumId());
259
259
  if (!abstractNum) {
260
- logger_1.defaultLogger.warn(`Abstract numbering for instance ${numId} does not exist`);
260
+ logger_js_1.defaultLogger.warn(`Abstract numbering for instance ${numId} does not exist`);
261
261
  return false;
262
262
  }
263
263
  const levels = abstractNum.getAllLevels();
@@ -384,7 +384,7 @@ class NumberingManager {
384
384
  return parts.join('::');
385
385
  }
386
386
  generateNumberingXml() {
387
- const builder = new XMLBuilder_1.XMLBuilder();
387
+ const builder = new XMLBuilder_js_1.XMLBuilder();
388
388
  const children = [];
389
389
  const abstractNumberings = this.getAllAbstractNumberings();
390
390
  abstractNumberings.forEach((abstractNum) => {
@@ -394,7 +394,7 @@ class NumberingManager {
394
394
  instances.forEach((instance) => {
395
395
  children.push(instance.toXML());
396
396
  });
397
- const numbering = XMLBuilder_1.XMLBuilder.w('numbering', {
397
+ const numbering = XMLBuilder_js_1.XMLBuilder.w('numbering', {
398
398
  'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
399
399
  'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
400
400
  }, children);
@@ -411,7 +411,7 @@ class NumberingManager {
411
411
  instances.forEach((instance) => {
412
412
  children.push(instance.toXML());
413
413
  });
414
- return XMLBuilder_1.XMLBuilder.w('numbering', {
414
+ return XMLBuilder_js_1.XMLBuilder.w('numbering', {
415
415
  'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
416
416
  'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
417
417
  }, children);