docxmlater 10.4.1 → 11.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/README.md +3 -3
  2. package/dist/constants/legacyCompatFlags.d.ts +1 -1
  3. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  4. package/dist/constants/legacyCompatFlags.js.map +1 -1
  5. package/dist/core/Document.d.ts +74 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +605 -414
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +11 -10
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +19 -19
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentEvents.d.ts +39 -0
  14. package/dist/core/DocumentEvents.d.ts.map +1 -0
  15. package/dist/core/DocumentEvents.js +51 -0
  16. package/dist/core/DocumentEvents.js.map +1 -0
  17. package/dist/core/DocumentGenerator.d.ts +11 -11
  18. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  19. package/dist/core/DocumentGenerator.js +72 -52
  20. package/dist/core/DocumentGenerator.js.map +1 -1
  21. package/dist/core/DocumentParser.d.ts +15 -15
  22. package/dist/core/DocumentParser.d.ts.map +1 -1
  23. package/dist/core/DocumentParser.js +2056 -1073
  24. package/dist/core/DocumentParser.js.map +1 -1
  25. package/dist/core/DocumentValidator.d.ts +3 -3
  26. package/dist/core/DocumentValidator.d.ts.map +1 -1
  27. package/dist/core/DocumentValidator.js +31 -31
  28. package/dist/core/DocumentValidator.js.map +1 -1
  29. package/dist/core/ElementRegistry.d.ts +22 -0
  30. package/dist/core/ElementRegistry.d.ts.map +1 -0
  31. package/dist/core/ElementRegistry.js +27 -0
  32. package/dist/core/ElementRegistry.js.map +1 -0
  33. package/dist/core/Relationship.js +4 -4
  34. package/dist/core/Relationship.js.map +1 -1
  35. package/dist/core/RelationshipManager.d.ts +1 -1
  36. package/dist/core/RelationshipManager.d.ts.map +1 -1
  37. package/dist/core/RelationshipManager.js +32 -32
  38. package/dist/core/RelationshipManager.js.map +1 -1
  39. package/dist/elements/AlternateContent.d.ts +1 -1
  40. package/dist/elements/AlternateContent.d.ts.map +1 -1
  41. package/dist/elements/AlternateContent.js.map +1 -1
  42. package/dist/elements/Bookmark.d.ts +6 -1
  43. package/dist/elements/Bookmark.d.ts.map +1 -1
  44. package/dist/elements/Bookmark.js +19 -3
  45. package/dist/elements/Bookmark.js.map +1 -1
  46. package/dist/elements/BookmarkManager.d.ts +1 -1
  47. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  48. package/dist/elements/BookmarkManager.js +7 -7
  49. package/dist/elements/BookmarkManager.js.map +1 -1
  50. package/dist/elements/Comment.d.ts +2 -2
  51. package/dist/elements/Comment.d.ts.map +1 -1
  52. package/dist/elements/Comment.js +4 -4
  53. package/dist/elements/Comment.js.map +1 -1
  54. package/dist/elements/CommentManager.d.ts +2 -2
  55. package/dist/elements/CommentManager.d.ts.map +1 -1
  56. package/dist/elements/CommentManager.js +9 -9
  57. package/dist/elements/CommentManager.js.map +1 -1
  58. package/dist/elements/CommonTypes.d.ts +9 -4
  59. package/dist/elements/CommonTypes.d.ts.map +1 -1
  60. package/dist/elements/CommonTypes.js +1 -0
  61. package/dist/elements/CommonTypes.js.map +1 -1
  62. package/dist/elements/CustomXml.d.ts +1 -1
  63. package/dist/elements/CustomXml.d.ts.map +1 -1
  64. package/dist/elements/CustomXml.js.map +1 -1
  65. package/dist/elements/Endnote.d.ts +2 -2
  66. package/dist/elements/Endnote.d.ts.map +1 -1
  67. package/dist/elements/Endnote.js +9 -9
  68. package/dist/elements/Endnote.js.map +1 -1
  69. package/dist/elements/EndnoteManager.d.ts +1 -1
  70. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  71. package/dist/elements/EndnoteManager.js +11 -11
  72. package/dist/elements/EndnoteManager.js.map +1 -1
  73. package/dist/elements/Field.d.ts +9 -5
  74. package/dist/elements/Field.d.ts.map +1 -1
  75. package/dist/elements/Field.js +21 -9
  76. package/dist/elements/Field.js.map +1 -1
  77. package/dist/elements/FieldHelpers.d.ts +1 -1
  78. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  79. package/dist/elements/FieldHelpers.js +10 -10
  80. package/dist/elements/FieldHelpers.js.map +1 -1
  81. package/dist/elements/Footer.d.ts +3 -3
  82. package/dist/elements/Footer.d.ts.map +1 -1
  83. package/dist/elements/Footer.js +5 -5
  84. package/dist/elements/Footer.js.map +1 -1
  85. package/dist/elements/Footnote.d.ts +2 -2
  86. package/dist/elements/Footnote.d.ts.map +1 -1
  87. package/dist/elements/Footnote.js +9 -9
  88. package/dist/elements/Footnote.js.map +1 -1
  89. package/dist/elements/FootnoteManager.d.ts +1 -1
  90. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  91. package/dist/elements/FootnoteManager.js +11 -11
  92. package/dist/elements/FootnoteManager.js.map +1 -1
  93. package/dist/elements/Header.d.ts +3 -3
  94. package/dist/elements/Header.d.ts.map +1 -1
  95. package/dist/elements/Header.js +5 -5
  96. package/dist/elements/Header.js.map +1 -1
  97. package/dist/elements/HeaderFooterManager.d.ts +2 -2
  98. package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
  99. package/dist/elements/HeaderFooterManager.js.map +1 -1
  100. package/dist/elements/Hyperlink.d.ts +5 -5
  101. package/dist/elements/Hyperlink.d.ts.map +1 -1
  102. package/dist/elements/Hyperlink.js +29 -29
  103. package/dist/elements/Hyperlink.js.map +1 -1
  104. package/dist/elements/Image.d.ts +1 -1
  105. package/dist/elements/Image.d.ts.map +1 -1
  106. package/dist/elements/Image.js +67 -67
  107. package/dist/elements/Image.js.map +1 -1
  108. package/dist/elements/ImageManager.d.ts +1 -1
  109. package/dist/elements/ImageManager.d.ts.map +1 -1
  110. package/dist/elements/ImageManager.js +4 -4
  111. package/dist/elements/ImageManager.js.map +1 -1
  112. package/dist/elements/ImageRun.d.ts +3 -3
  113. package/dist/elements/ImageRun.d.ts.map +1 -1
  114. package/dist/elements/ImageRun.js +2 -2
  115. package/dist/elements/ImageRun.js.map +1 -1
  116. package/dist/elements/MathElement.d.ts +1 -1
  117. package/dist/elements/MathElement.d.ts.map +1 -1
  118. package/dist/elements/MathElement.js.map +1 -1
  119. package/dist/elements/Paragraph.d.ts +34 -19
  120. package/dist/elements/Paragraph.d.ts.map +1 -1
  121. package/dist/elements/Paragraph.js +286 -231
  122. package/dist/elements/Paragraph.js.map +1 -1
  123. package/dist/elements/PreservedElement.d.ts +1 -1
  124. package/dist/elements/PreservedElement.d.ts.map +1 -1
  125. package/dist/elements/PreservedElement.js.map +1 -1
  126. package/dist/elements/PropertyChangeTypes.d.ts +2 -2
  127. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  128. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  129. package/dist/elements/RangeMarker.d.ts +14 -1
  130. package/dist/elements/RangeMarker.d.ts.map +1 -1
  131. package/dist/elements/RangeMarker.js +46 -8
  132. package/dist/elements/RangeMarker.js.map +1 -1
  133. package/dist/elements/RegisteredBodyElement.d.ts +15 -0
  134. package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
  135. package/dist/elements/RegisteredBodyElement.js +44 -0
  136. package/dist/elements/RegisteredBodyElement.js.map +1 -0
  137. package/dist/elements/Revision.d.ts +8 -8
  138. package/dist/elements/Revision.d.ts.map +1 -1
  139. package/dist/elements/Revision.js +12 -12
  140. package/dist/elements/Revision.js.map +1 -1
  141. package/dist/elements/RevisionContent.d.ts +3 -3
  142. package/dist/elements/RevisionContent.d.ts.map +1 -1
  143. package/dist/elements/RevisionContent.js.map +1 -1
  144. package/dist/elements/RevisionManager.d.ts +2 -2
  145. package/dist/elements/RevisionManager.d.ts.map +1 -1
  146. package/dist/elements/RevisionManager.js +2 -2
  147. package/dist/elements/RevisionManager.js.map +1 -1
  148. package/dist/elements/Run.d.ts +16 -10
  149. package/dist/elements/Run.d.ts.map +1 -1
  150. package/dist/elements/Run.js +199 -173
  151. package/dist/elements/Run.js.map +1 -1
  152. package/dist/elements/Section.d.ts +4 -2
  153. package/dist/elements/Section.d.ts.map +1 -1
  154. package/dist/elements/Section.js +152 -145
  155. package/dist/elements/Section.js.map +1 -1
  156. package/dist/elements/Shape.d.ts +3 -3
  157. package/dist/elements/Shape.d.ts.map +1 -1
  158. package/dist/elements/Shape.js +12 -12
  159. package/dist/elements/Shape.js.map +1 -1
  160. package/dist/elements/StructuredDocumentTag.d.ts +3 -3
  161. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  162. package/dist/elements/StructuredDocumentTag.js +39 -39
  163. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  164. package/dist/elements/Table.d.ts +16 -10
  165. package/dist/elements/Table.d.ts.map +1 -1
  166. package/dist/elements/Table.js +118 -89
  167. package/dist/elements/Table.js.map +1 -1
  168. package/dist/elements/TableCell.d.ts +11 -11
  169. package/dist/elements/TableCell.d.ts.map +1 -1
  170. package/dist/elements/TableCell.js +108 -78
  171. package/dist/elements/TableCell.js.map +1 -1
  172. package/dist/elements/TableGridChange.d.ts +1 -1
  173. package/dist/elements/TableGridChange.d.ts.map +1 -1
  174. package/dist/elements/TableGridChange.js +3 -3
  175. package/dist/elements/TableGridChange.js.map +1 -1
  176. package/dist/elements/TableOfContents.d.ts +1 -1
  177. package/dist/elements/TableOfContents.d.ts.map +1 -1
  178. package/dist/elements/TableOfContents.js +2 -2
  179. package/dist/elements/TableOfContents.js.map +1 -1
  180. package/dist/elements/TableOfContentsElement.d.ts +2 -2
  181. package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
  182. package/dist/elements/TableOfContentsElement.js +5 -5
  183. package/dist/elements/TableOfContentsElement.js.map +1 -1
  184. package/dist/elements/TableRow.d.ts +18 -7
  185. package/dist/elements/TableRow.d.ts.map +1 -1
  186. package/dist/elements/TableRow.js +127 -74
  187. package/dist/elements/TableRow.js.map +1 -1
  188. package/dist/elements/TextBox.d.ts +4 -4
  189. package/dist/elements/TextBox.d.ts.map +1 -1
  190. package/dist/elements/TextBox.js +6 -6
  191. package/dist/elements/TextBox.js.map +1 -1
  192. package/dist/esm/constants/legacyCompatFlags.js +97 -0
  193. package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
  194. package/dist/esm/constants/limits.js +36 -0
  195. package/dist/esm/constants/limits.js.map +1 -0
  196. package/dist/esm/core/Document.js +8498 -0
  197. package/dist/esm/core/Document.js.map +1 -0
  198. package/dist/esm/core/DocumentContent.js +190 -0
  199. package/dist/esm/core/DocumentContent.js.map +1 -0
  200. package/dist/esm/core/DocumentEvents.js +47 -0
  201. package/dist/esm/core/DocumentEvents.js.map +1 -0
  202. package/dist/esm/core/DocumentGenerator.js +764 -0
  203. package/dist/esm/core/DocumentGenerator.js.map +1 -0
  204. package/dist/esm/core/DocumentIdManager.js +67 -0
  205. package/dist/esm/core/DocumentIdManager.js.map +1 -0
  206. package/dist/esm/core/DocumentParser.js +8760 -0
  207. package/dist/esm/core/DocumentParser.js.map +1 -0
  208. package/dist/esm/core/DocumentValidator.js +222 -0
  209. package/dist/esm/core/DocumentValidator.js.map +1 -0
  210. package/dist/esm/core/ElementRegistry.js +24 -0
  211. package/dist/esm/core/ElementRegistry.js.map +1 -0
  212. package/dist/esm/core/Relationship.js +177 -0
  213. package/dist/esm/core/Relationship.js.map +1 -0
  214. package/dist/esm/core/RelationshipManager.js +202 -0
  215. package/dist/esm/core/RelationshipManager.js.map +1 -0
  216. package/dist/esm/elements/AlternateContent.js +19 -0
  217. package/dist/esm/elements/AlternateContent.js.map +1 -0
  218. package/dist/esm/elements/Bookmark.js +115 -0
  219. package/dist/esm/elements/Bookmark.js.map +1 -0
  220. package/dist/esm/elements/BookmarkManager.js +99 -0
  221. package/dist/esm/elements/BookmarkManager.js.map +1 -0
  222. package/dist/esm/elements/Comment.js +181 -0
  223. package/dist/esm/elements/Comment.js.map +1 -0
  224. package/dist/esm/elements/CommentManager.js +233 -0
  225. package/dist/esm/elements/CommentManager.js.map +1 -0
  226. package/dist/esm/elements/CommonTypes.js +106 -0
  227. package/dist/esm/elements/CommonTypes.js.map +1 -0
  228. package/dist/esm/elements/CustomXml.js +19 -0
  229. package/dist/esm/elements/CustomXml.js.map +1 -0
  230. package/dist/esm/elements/Endnote.js +107 -0
  231. package/dist/esm/elements/Endnote.js.map +1 -0
  232. package/dist/esm/elements/EndnoteManager.js +119 -0
  233. package/dist/esm/elements/EndnoteManager.js.map +1 -0
  234. package/dist/esm/elements/Field.js +856 -0
  235. package/dist/esm/elements/Field.js.map +1 -0
  236. package/dist/esm/elements/FieldHelpers.js +134 -0
  237. package/dist/esm/elements/FieldHelpers.js.map +1 -0
  238. package/dist/esm/elements/FontManager.js +158 -0
  239. package/dist/esm/elements/FontManager.js.map +1 -0
  240. package/dist/esm/elements/Footer.js +141 -0
  241. package/dist/esm/elements/Footer.js.map +1 -0
  242. package/dist/esm/elements/Footnote.js +107 -0
  243. package/dist/esm/elements/Footnote.js.map +1 -0
  244. package/dist/esm/elements/FootnoteManager.js +119 -0
  245. package/dist/esm/elements/FootnoteManager.js.map +1 -0
  246. package/dist/esm/elements/Header.js +141 -0
  247. package/dist/esm/elements/Header.js.map +1 -0
  248. package/dist/esm/elements/HeaderFooterManager.js +87 -0
  249. package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
  250. package/dist/esm/elements/Hyperlink.js +586 -0
  251. package/dist/esm/elements/Hyperlink.js.map +1 -0
  252. package/dist/esm/elements/Image.js +1288 -0
  253. package/dist/esm/elements/Image.js.map +1 -0
  254. package/dist/esm/elements/ImageManager.js +223 -0
  255. package/dist/esm/elements/ImageManager.js.map +1 -0
  256. package/dist/esm/elements/ImageRun.js +29 -0
  257. package/dist/esm/elements/ImageRun.js.map +1 -0
  258. package/dist/esm/elements/MathElement.js +37 -0
  259. package/dist/esm/elements/MathElement.js.map +1 -0
  260. package/dist/esm/elements/Paragraph.js +2308 -0
  261. package/dist/esm/elements/Paragraph.js.map +1 -0
  262. package/dist/esm/elements/PreservedElement.js +29 -0
  263. package/dist/esm/elements/PreservedElement.js.map +1 -0
  264. package/dist/esm/elements/PropertyChangeTypes.js +53 -0
  265. package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
  266. package/dist/esm/elements/RangeMarker.js +219 -0
  267. package/dist/esm/elements/RangeMarker.js.map +1 -0
  268. package/dist/esm/elements/RegisteredBodyElement.js +40 -0
  269. package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
  270. package/dist/esm/elements/Revision.js +498 -0
  271. package/dist/esm/elements/Revision.js.map +1 -0
  272. package/dist/esm/elements/RevisionContent.js +18 -0
  273. package/dist/esm/elements/RevisionContent.js.map +1 -0
  274. package/dist/esm/elements/RevisionManager.js +486 -0
  275. package/dist/esm/elements/RevisionManager.js.map +1 -0
  276. package/dist/esm/elements/Run.js +1465 -0
  277. package/dist/esm/elements/Run.js.map +1 -0
  278. package/dist/esm/elements/Section.js +978 -0
  279. package/dist/esm/elements/Section.js.map +1 -0
  280. package/dist/esm/elements/Shape.js +493 -0
  281. package/dist/esm/elements/Shape.js.map +1 -0
  282. package/dist/esm/elements/StructuredDocumentTag.js +471 -0
  283. package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
  284. package/dist/esm/elements/Table.js +1456 -0
  285. package/dist/esm/elements/Table.js.map +1 -0
  286. package/dist/esm/elements/TableCell.js +835 -0
  287. package/dist/esm/elements/TableCell.js.map +1 -0
  288. package/dist/esm/elements/TableGridChange.js +52 -0
  289. package/dist/esm/elements/TableGridChange.js.map +1 -0
  290. package/dist/esm/elements/TableOfContents.js +389 -0
  291. package/dist/esm/elements/TableOfContents.js.map +1 -0
  292. package/dist/esm/elements/TableOfContentsElement.js +29 -0
  293. package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
  294. package/dist/esm/elements/TableRow.js +555 -0
  295. package/dist/esm/elements/TableRow.js.map +1 -0
  296. package/dist/esm/elements/TextBox.js +459 -0
  297. package/dist/esm/elements/TextBox.js.map +1 -0
  298. package/dist/esm/formatting/AbstractNumbering.js +325 -0
  299. package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
  300. package/dist/esm/formatting/NumberingInstance.js +150 -0
  301. package/dist/esm/formatting/NumberingInstance.js.map +1 -0
  302. package/dist/esm/formatting/NumberingLevel.js +608 -0
  303. package/dist/esm/formatting/NumberingLevel.js.map +1 -0
  304. package/dist/esm/formatting/NumberingManager.js +423 -0
  305. package/dist/esm/formatting/NumberingManager.js.map +1 -0
  306. package/dist/esm/formatting/Style.js +1151 -0
  307. package/dist/esm/formatting/Style.js.map +1 -0
  308. package/dist/esm/formatting/StylesManager.js +557 -0
  309. package/dist/esm/formatting/StylesManager.js.map +1 -0
  310. package/dist/esm/helpers/CleanupHelper.js +350 -0
  311. package/dist/esm/helpers/CleanupHelper.js.map +1 -0
  312. package/dist/esm/images/ImageOptimizer.js +161 -0
  313. package/dist/esm/images/ImageOptimizer.js.map +1 -0
  314. package/dist/esm/index.js +75 -0
  315. package/dist/esm/index.js.map +1 -0
  316. package/dist/esm/internal.js +16 -0
  317. package/dist/esm/internal.js.map +1 -0
  318. package/dist/esm/managers/DrawingManager.js +163 -0
  319. package/dist/esm/managers/DrawingManager.js.map +1 -0
  320. package/dist/esm/package.json +3 -0
  321. package/dist/esm/processors/ChangelogGenerator.js +970 -0
  322. package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
  323. package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
  324. package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
  325. package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
  326. package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
  327. package/dist/esm/processors/MoveOperationHelper.js +57 -0
  328. package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
  329. package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
  330. package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
  331. package/dist/esm/processors/RevisionWalker.js +278 -0
  332. package/dist/esm/processors/RevisionWalker.js.map +1 -0
  333. package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
  334. package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
  335. package/dist/esm/processors/ShadingResolver.js +66 -0
  336. package/dist/esm/processors/ShadingResolver.js.map +1 -0
  337. package/dist/esm/processors/acceptRevisions.js +416 -0
  338. package/dist/esm/processors/acceptRevisions.js.map +1 -0
  339. package/dist/esm/processors/cnfStyleDecoder.js +89 -0
  340. package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
  341. package/dist/esm/processors/stripTrackedChanges.js +201 -0
  342. package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
  343. package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
  344. package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
  345. package/dist/esm/tracking/TrackingContext.js +2 -0
  346. package/dist/esm/tracking/TrackingContext.js.map +1 -0
  347. package/dist/esm/types/compatibility-types.js +8 -0
  348. package/dist/esm/types/compatibility-types.js.map +1 -0
  349. package/dist/esm/types/document-types.js +2 -0
  350. package/dist/esm/types/document-types.js.map +1 -0
  351. package/dist/esm/types/formatting.js +2 -0
  352. package/dist/esm/types/formatting.js.map +1 -0
  353. package/dist/esm/types/list-types.js +2 -0
  354. package/dist/esm/types/list-types.js.map +1 -0
  355. package/dist/esm/types/settings-types.js +2 -0
  356. package/dist/esm/types/settings-types.js.map +1 -0
  357. package/dist/esm/types/styleConfig.js +2 -0
  358. package/dist/esm/types/styleConfig.js.map +1 -0
  359. package/dist/esm/utils/KeyedRegistry.js +32 -0
  360. package/dist/esm/utils/KeyedRegistry.js.map +1 -0
  361. package/dist/esm/utils/corruptionDetection.js +155 -0
  362. package/dist/esm/utils/corruptionDetection.js.map +1 -0
  363. package/dist/esm/utils/dateFormatting.js +4 -0
  364. package/dist/esm/utils/dateFormatting.js.map +1 -0
  365. package/dist/esm/utils/deepClone.js +40 -0
  366. package/dist/esm/utils/deepClone.js.map +1 -0
  367. package/dist/esm/utils/deepEqual.js +47 -0
  368. package/dist/esm/utils/deepEqual.js.map +1 -0
  369. package/dist/esm/utils/diagnostics.js +69 -0
  370. package/dist/esm/utils/diagnostics.js.map +1 -0
  371. package/dist/esm/utils/errorHandling.js +36 -0
  372. package/dist/esm/utils/errorHandling.js.map +1 -0
  373. package/dist/esm/utils/formatting.js +93 -0
  374. package/dist/esm/utils/formatting.js.map +1 -0
  375. package/dist/esm/utils/list-detection.js +148 -0
  376. package/dist/esm/utils/list-detection.js.map +1 -0
  377. package/dist/esm/utils/logger.js +205 -0
  378. package/dist/esm/utils/logger.js.map +1 -0
  379. package/dist/esm/utils/parsingHelpers.js +56 -0
  380. package/dist/esm/utils/parsingHelpers.js.map +1 -0
  381. package/dist/esm/utils/textDiff.js +42 -0
  382. package/dist/esm/utils/textDiff.js.map +1 -0
  383. package/dist/esm/utils/units.js +152 -0
  384. package/dist/esm/utils/units.js.map +1 -0
  385. package/dist/esm/utils/validation.js +285 -0
  386. package/dist/esm/utils/validation.js.map +1 -0
  387. package/dist/esm/utils/xmlSanitization.js +54 -0
  388. package/dist/esm/utils/xmlSanitization.js.map +1 -0
  389. package/dist/esm/validation/RevisionAutoFixer.js +340 -0
  390. package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
  391. package/dist/esm/validation/RevisionValidator.js +240 -0
  392. package/dist/esm/validation/RevisionValidator.js.map +1 -0
  393. package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
  394. package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
  395. package/dist/esm/validation/ValidationRules.js +92 -0
  396. package/dist/esm/validation/ValidationRules.js.map +1 -0
  397. package/dist/esm/validation/index.js +4 -0
  398. package/dist/esm/validation/index.js.map +1 -0
  399. package/dist/esm/xml/XMLBuilder.js +434 -0
  400. package/dist/esm/xml/XMLBuilder.js.map +1 -0
  401. package/dist/esm/xml/XMLParser.js +486 -0
  402. package/dist/esm/xml/XMLParser.js.map +1 -0
  403. package/dist/esm/zip/ZipHandler.js +298 -0
  404. package/dist/esm/zip/ZipHandler.js.map +1 -0
  405. package/dist/esm/zip/ZipReader.js +147 -0
  406. package/dist/esm/zip/ZipReader.js.map +1 -0
  407. package/dist/esm/zip/ZipWriter.js +199 -0
  408. package/dist/esm/zip/ZipWriter.js.map +1 -0
  409. package/dist/esm/zip/errors.js +43 -0
  410. package/dist/esm/zip/errors.js.map +1 -0
  411. package/dist/esm/zip/types.js +31 -0
  412. package/dist/esm/zip/types.js.map +1 -0
  413. package/dist/formatting/AbstractNumbering.d.ts +2 -2
  414. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  415. package/dist/formatting/AbstractNumbering.js +33 -33
  416. package/dist/formatting/AbstractNumbering.js.map +1 -1
  417. package/dist/formatting/NumberingInstance.d.ts +2 -2
  418. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  419. package/dist/formatting/NumberingInstance.js +7 -7
  420. package/dist/formatting/NumberingInstance.js.map +1 -1
  421. package/dist/formatting/NumberingLevel.d.ts +11 -2
  422. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  423. package/dist/formatting/NumberingLevel.js +111 -25
  424. package/dist/formatting/NumberingLevel.js.map +1 -1
  425. package/dist/formatting/NumberingManager.d.ts +4 -4
  426. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  427. package/dist/formatting/NumberingManager.js +28 -28
  428. package/dist/formatting/NumberingManager.js.map +1 -1
  429. package/dist/formatting/Style.d.ts +14 -7
  430. package/dist/formatting/Style.d.ts.map +1 -1
  431. package/dist/formatting/Style.js +309 -112
  432. package/dist/formatting/Style.js.map +1 -1
  433. package/dist/formatting/StylesManager.d.ts +2 -2
  434. package/dist/formatting/StylesManager.d.ts.map +1 -1
  435. package/dist/formatting/StylesManager.js +52 -52
  436. package/dist/formatting/StylesManager.js.map +1 -1
  437. package/dist/helpers/CleanupHelper.d.ts +1 -1
  438. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  439. package/dist/helpers/CleanupHelper.js +15 -15
  440. package/dist/helpers/CleanupHelper.js.map +1 -1
  441. package/dist/index.d.ts +81 -90
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +286 -317
  444. package/dist/index.js.map +1 -1
  445. package/dist/internal.d.ts +16 -0
  446. package/dist/internal.d.ts.map +1 -0
  447. package/dist/internal.js +42 -0
  448. package/dist/internal.js.map +1 -0
  449. package/dist/managers/DrawingManager.d.ts +3 -3
  450. package/dist/managers/DrawingManager.d.ts.map +1 -1
  451. package/dist/managers/DrawingManager.js +12 -12
  452. package/dist/managers/DrawingManager.js.map +1 -1
  453. package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
  454. package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
  455. package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
  456. package/dist/processors/ChangelogGenerator.js.map +1 -0
  457. package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
  458. package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
  459. package/dist/processors/CompatibilityUpgrader.js.map +1 -0
  460. package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
  461. package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
  462. package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
  463. package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
  464. package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
  465. package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
  466. package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
  467. package/dist/processors/MoveOperationHelper.js.map +1 -0
  468. package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
  469. package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
  470. package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
  471. package/dist/processors/RevisionAwareProcessor.js.map +1 -0
  472. package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
  473. package/dist/processors/RevisionWalker.d.ts.map +1 -0
  474. package/dist/{utils → processors}/RevisionWalker.js +28 -0
  475. package/dist/processors/RevisionWalker.js.map +1 -0
  476. package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
  477. package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
  478. package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
  479. package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
  480. package/dist/processors/ShadingResolver.d.ts +6 -0
  481. package/dist/processors/ShadingResolver.d.ts.map +1 -0
  482. package/dist/{utils → processors}/ShadingResolver.js +2 -2
  483. package/dist/processors/ShadingResolver.js.map +1 -0
  484. package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
  485. package/dist/processors/acceptRevisions.d.ts.map +1 -0
  486. package/dist/{utils → processors}/acceptRevisions.js +24 -4
  487. package/dist/processors/acceptRevisions.js.map +1 -0
  488. package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
  489. package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
  490. package/dist/processors/cnfStyleDecoder.js.map +1 -0
  491. package/dist/processors/stripTrackedChanges.d.ts +3 -0
  492. package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
  493. package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
  494. package/dist/processors/stripTrackedChanges.js.map +1 -0
  495. package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
  496. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  497. package/dist/tracking/DocumentTrackingContext.js +38 -43
  498. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  499. package/dist/tracking/TrackingContext.d.ts +8 -8
  500. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  501. package/dist/tracking/TrackingContext.js.map +1 -1
  502. package/dist/types/document-types.d.ts +28 -0
  503. package/dist/types/document-types.d.ts.map +1 -0
  504. package/dist/types/document-types.js +3 -0
  505. package/dist/types/document-types.js.map +1 -0
  506. package/dist/types/formatting.d.ts +4 -4
  507. package/dist/types/formatting.d.ts.map +1 -1
  508. package/dist/types/formatting.js.map +1 -1
  509. package/dist/types/settings-types.d.ts +6 -0
  510. package/dist/types/settings-types.d.ts.map +1 -1
  511. package/dist/types/settings-types.js.map +1 -1
  512. package/dist/utils/KeyedRegistry.d.ts +13 -0
  513. package/dist/utils/KeyedRegistry.d.ts.map +1 -0
  514. package/dist/utils/KeyedRegistry.js +36 -0
  515. package/dist/utils/KeyedRegistry.js.map +1 -0
  516. package/dist/utils/corruptionDetection.d.ts +1 -1
  517. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  518. package/dist/utils/corruptionDetection.js +4 -4
  519. package/dist/utils/corruptionDetection.js.map +1 -1
  520. package/dist/utils/deepEqual.d.ts +2 -0
  521. package/dist/utils/deepEqual.d.ts.map +1 -0
  522. package/dist/utils/deepEqual.js +50 -0
  523. package/dist/utils/deepEqual.js.map +1 -0
  524. package/dist/utils/list-detection.d.ts +2 -2
  525. package/dist/utils/list-detection.d.ts.map +1 -1
  526. package/dist/utils/list-detection.js.map +1 -1
  527. package/dist/utils/parsingHelpers.d.ts +1 -1
  528. package/dist/utils/parsingHelpers.d.ts.map +1 -1
  529. package/dist/utils/parsingHelpers.js +2 -2
  530. package/dist/utils/parsingHelpers.js.map +1 -1
  531. package/dist/utils/validation.js +7 -7
  532. package/dist/utils/validation.js.map +1 -1
  533. package/dist/utils/xmlSanitization.js +2 -2
  534. package/dist/utils/xmlSanitization.js.map +1 -1
  535. package/dist/validation/RevisionAutoFixer.d.ts +4 -4
  536. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  537. package/dist/validation/RevisionAutoFixer.js +11 -11
  538. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  539. package/dist/validation/RevisionValidator.d.ts +5 -4
  540. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  541. package/dist/validation/RevisionValidator.js +29 -30
  542. package/dist/validation/RevisionValidator.js.map +1 -1
  543. package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
  544. package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
  545. package/dist/validation/ValidationRuleRegistry.js +43 -0
  546. package/dist/validation/ValidationRuleRegistry.js.map +1 -0
  547. package/dist/validation/index.d.ts +3 -3
  548. package/dist/validation/index.d.ts.map +1 -1
  549. package/dist/validation/index.js +10 -10
  550. package/dist/validation/index.js.map +1 -1
  551. package/dist/xml/XMLBuilder.d.ts +6 -1
  552. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  553. package/dist/xml/XMLBuilder.js +11 -6
  554. package/dist/xml/XMLBuilder.js.map +1 -1
  555. package/dist/xml/XMLParser.js +6 -6
  556. package/dist/xml/XMLParser.js.map +1 -1
  557. package/dist/zip/ZipHandler.d.ts +1 -1
  558. package/dist/zip/ZipHandler.d.ts.map +1 -1
  559. package/dist/zip/ZipHandler.js +8 -8
  560. package/dist/zip/ZipHandler.js.map +1 -1
  561. package/dist/zip/ZipReader.d.ts +1 -1
  562. package/dist/zip/ZipReader.d.ts.map +1 -1
  563. package/dist/zip/ZipReader.js +14 -14
  564. package/dist/zip/ZipReader.js.map +1 -1
  565. package/dist/zip/ZipWriter.d.ts +1 -1
  566. package/dist/zip/ZipWriter.d.ts.map +1 -1
  567. package/dist/zip/ZipWriter.js +10 -10
  568. package/dist/zip/ZipWriter.js.map +1 -1
  569. package/package.json +20 -4
  570. package/src/constants/legacyCompatFlags.ts +1 -1
  571. package/src/core/Document.ts +461 -167
  572. package/src/core/DocumentContent.ts +14 -11
  573. package/src/core/DocumentEvents.ts +90 -0
  574. package/src/core/DocumentGenerator.ts +49 -22
  575. package/src/core/DocumentParser.ts +2180 -617
  576. package/src/core/DocumentValidator.ts +7 -7
  577. package/src/core/ElementRegistry.ts +69 -0
  578. package/src/core/Relationship.ts +1 -1
  579. package/src/core/RelationshipManager.ts +4 -4
  580. package/src/elements/AlternateContent.ts +1 -1
  581. package/src/elements/Bookmark.ts +52 -4
  582. package/src/elements/BookmarkManager.ts +2 -2
  583. package/src/elements/Comment.ts +3 -3
  584. package/src/elements/CommentManager.ts +4 -4
  585. package/src/elements/CommonTypes.ts +45 -7
  586. package/src/elements/CustomXml.ts +1 -1
  587. package/src/elements/Endnote.ts +2 -2
  588. package/src/elements/EndnoteManager.ts +3 -3
  589. package/src/elements/Field.ts +44 -10
  590. package/src/elements/FieldHelpers.ts +2 -2
  591. package/src/elements/Footer.ts +4 -4
  592. package/src/elements/Footnote.ts +2 -2
  593. package/src/elements/FootnoteManager.ts +3 -3
  594. package/src/elements/Header.ts +4 -4
  595. package/src/elements/HeaderFooterManager.ts +2 -2
  596. package/src/elements/Hyperlink.ts +16 -12
  597. package/src/elements/Image.ts +3 -3
  598. package/src/elements/ImageManager.ts +2 -2
  599. package/src/elements/ImageRun.ts +3 -3
  600. package/src/elements/MathElement.ts +1 -1
  601. package/src/elements/Paragraph.ts +221 -88
  602. package/src/elements/PreservedElement.ts +1 -1
  603. package/src/elements/PropertyChangeTypes.ts +2 -2
  604. package/src/elements/RangeMarker.ts +153 -12
  605. package/src/elements/RegisteredBodyElement.ts +52 -0
  606. package/src/elements/Revision.ts +14 -14
  607. package/src/elements/RevisionContent.ts +3 -3
  608. package/src/elements/RevisionManager.ts +3 -3
  609. package/src/elements/Run.ts +221 -94
  610. package/src/elements/Section.ts +136 -69
  611. package/src/elements/Shape.ts +4 -4
  612. package/src/elements/StructuredDocumentTag.ts +3 -3
  613. package/src/elements/Table.ts +91 -27
  614. package/src/elements/TableCell.ts +62 -34
  615. package/src/elements/TableGridChange.ts +1 -1
  616. package/src/elements/TableOfContents.ts +1 -1
  617. package/src/elements/TableOfContentsElement.ts +2 -2
  618. package/src/elements/TableRow.ts +192 -48
  619. package/src/elements/TextBox.ts +5 -5
  620. package/src/formatting/AbstractNumbering.ts +3 -3
  621. package/src/formatting/NumberingInstance.ts +2 -2
  622. package/src/formatting/NumberingLevel.ts +201 -10
  623. package/src/formatting/NumberingManager.ts +5 -5
  624. package/src/formatting/Style.ts +382 -86
  625. package/src/formatting/StylesManager.ts +4 -4
  626. package/src/helpers/CleanupHelper.ts +6 -6
  627. package/src/index.ts +118 -127
  628. package/src/internal.ts +79 -0
  629. package/src/managers/DrawingManager.ts +3 -3
  630. package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
  631. package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
  632. package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
  633. package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
  634. package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
  635. package/src/{utils → processors}/RevisionWalker.ts +42 -1
  636. package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
  637. package/src/{utils → processors}/ShadingResolver.ts +5 -5
  638. package/src/{utils → processors}/acceptRevisions.ts +77 -9
  639. package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
  640. package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
  641. package/src/tracking/DocumentTrackingContext.ts +12 -14
  642. package/src/tracking/TrackingContext.ts +8 -8
  643. package/src/types/document-types.ts +53 -0
  644. package/src/types/formatting.ts +4 -4
  645. package/src/types/settings-types.ts +32 -0
  646. package/src/utils/KeyedRegistry.ts +41 -0
  647. package/src/utils/corruptionDetection.ts +2 -2
  648. package/src/utils/deepEqual.ts +58 -0
  649. package/src/utils/list-detection.ts +2 -2
  650. package/src/utils/parsingHelpers.ts +11 -3
  651. package/src/utils/validation.ts +3 -3
  652. package/src/utils/xmlSanitization.ts +1 -1
  653. package/src/validation/RevisionAutoFixer.ts +5 -5
  654. package/src/validation/RevisionValidator.ts +39 -28
  655. package/src/validation/ValidationRuleRegistry.ts +86 -0
  656. package/src/validation/index.ts +3 -3
  657. package/src/xml/XMLBuilder.ts +13 -3
  658. package/src/xml/XMLParser.ts +2 -2
  659. package/src/zip/ZipHandler.ts +4 -4
  660. package/src/zip/ZipReader.ts +3 -3
  661. package/src/zip/ZipWriter.ts +3 -3
  662. package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
  663. package/dist/utils/ChangelogGenerator.js.map +0 -1
  664. package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
  665. package/dist/utils/CompatibilityUpgrader.js.map +0 -1
  666. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
  667. package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
  668. package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
  669. package/dist/utils/MoveOperationHelper.js.map +0 -1
  670. package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
  671. package/dist/utils/RevisionAwareProcessor.js.map +0 -1
  672. package/dist/utils/RevisionWalker.d.ts.map +0 -1
  673. package/dist/utils/RevisionWalker.js.map +0 -1
  674. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
  675. package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
  676. package/dist/utils/ShadingResolver.d.ts +0 -6
  677. package/dist/utils/ShadingResolver.d.ts.map +0 -1
  678. package/dist/utils/ShadingResolver.js.map +0 -1
  679. package/dist/utils/acceptRevisions.d.ts.map +0 -1
  680. package/dist/utils/acceptRevisions.js.map +0 -1
  681. package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
  682. package/dist/utils/cnfStyleDecoder.js.map +0 -1
  683. package/dist/utils/stripTrackedChanges.d.ts +0 -3
  684. package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
  685. package/dist/utils/stripTrackedChanges.js.map +0 -1
  686. package/src/__tests__/helper-methods.test.ts +0 -512
  687. package/src/constants/CLAUDE.md +0 -28
  688. package/src/core/CLAUDE.md +0 -113
  689. package/src/elements/CLAUDE.md +0 -142
  690. package/src/formatting/CLAUDE.md +0 -78
  691. package/src/managers/CLAUDE.md +0 -47
  692. package/src/tracking/CLAUDE.md +0 -30
  693. package/src/types/CLAUDE.md +0 -39
  694. package/src/utils/CLAUDE.md +0 -168
  695. package/src/validation/CLAUDE.md +0 -40
  696. package/src/xml/CLAUDE.md +0 -65
  697. package/src/zip/CLAUDE.md +0 -55
  698. /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
  699. /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractNumbering.js","sourceRoot":"","sources":["../../src/formatting/AbstractNumbering.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AbstractNumbering - Defines a multi-level numbering scheme\n *\n * An abstract numbering definition is a template that defines up to 9 levels of\n * list formatting. It's referenced by numbering instances which link it to actual\n * paragraphs in the document.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { NumberingLevel } from './NumberingLevel';\nimport { defaultLogger } from '../utils/logger';\n\n/**\n * Properties for creating an abstract numbering definition\n */\nexport interface AbstractNumberingProperties {\n /** Unique identifier for this abstract numbering */\n abstractNumId: number;\n\n /** Optional name for the numbering scheme */\n name?: string;\n\n /** The numbering levels (up to 9 levels, 0-8) */\n levels?: NumberingLevel[];\n\n /** Optional multiLevel type (0 = single level, 1 = multilevel) */\n multiLevelType?: number;\n\n /** Optional link to a numbering style definition (ECMA-376 §17.9.21) */\n numStyleLink?: string;\n\n /** Optional link to a style that uses this abstract numbering (ECMA-376 §17.9.27) */\n styleLink?: string;\n\n /** Template code (ECMA-376 §17.9.30) - 8-char hex string identifying the template */\n tmpl?: string;\n\n /** Namespace-scoped unique ID (ECMA-376 §17.9.17) - 8-char hex string */\n nsid?: string;\n}\n\n/**\n * Represents an abstract numbering definition\n *\n * Abstract numbering defines the template for a multi-level list. Each instance\n * of a list in the document references an abstract numbering definition.\n */\nexport class AbstractNumbering {\n private abstractNumId: number;\n private name?: string;\n private levels: Map<number, NumberingLevel>;\n private multiLevelType: number;\n private numStyleLink?: string;\n private styleLink?: string;\n private tmpl?: string;\n private nsid?: string;\n\n /**\n * Creates a new abstract numbering definition\n * @param idOrProps The abstract numbering ID (number) or properties object\n * @param name Optional name (if first param is a number)\n */\n constructor(idOrProps: number | AbstractNumberingProperties, name?: string) {\n // Support both simple (numId) and object constructor patterns\n if (typeof idOrProps === 'number') {\n // Simple constructor: new AbstractNumbering(id)\n this.abstractNumId = idOrProps;\n this.name = name;\n this.levels = new Map();\n this.multiLevelType = 1; // default multilevel\n this.nsid = AbstractNumbering.generateNsid();\n } else {\n // Object constructor: new AbstractNumbering({ abstractNumId, ... })\n const properties = idOrProps;\n this.abstractNumId = properties.abstractNumId;\n this.name = properties.name;\n this.levels = new Map();\n this.multiLevelType = properties.multiLevelType !== undefined ? properties.multiLevelType : 1;\n this.numStyleLink = properties.numStyleLink;\n this.styleLink = properties.styleLink;\n this.tmpl = properties.tmpl;\n this.nsid = properties.nsid ?? AbstractNumbering.generateNsid();\n\n if (properties.levels) {\n properties.levels.forEach((level) => {\n this.addLevel(level);\n });\n }\n }\n\n this.validate();\n }\n\n /**\n * Validates the abstract numbering\n */\n private validate(): void {\n if (this.abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n\n if (this.levels.size > 9) {\n throw new Error('Cannot have more than 9 levels (0-8)');\n }\n }\n\n /**\n * Gets the abstract numbering ID\n */\n getAbstractNumId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Alias for getAbstractNumId for backward compatibility\n */\n getId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Gets the namespace-scoped unique ID (ECMA-376 §17.9.17)\n */\n getNsid(): string | undefined {\n return this.nsid;\n }\n\n /**\n * Sets the namespace-scoped unique ID\n */\n setNsid(nsid: string): void {\n this.nsid = nsid;\n }\n\n /**\n * Generates a random 8-character uppercase hex nsid value\n */\n private static generateNsid(): string {\n const hex = Math.floor(Math.random() * 0xffffffff)\n .toString(16)\n .toUpperCase()\n .padStart(8, '0');\n return hex;\n }\n\n /**\n * Gets the name\n */\n getName(): string | undefined {\n return this.name;\n }\n\n /**\n * Sets the name\n * @param name The numbering scheme name\n */\n setName(name: string): this {\n this.name = name;\n return this;\n }\n\n /**\n * Gets the multi-level type\n */\n getMultiLevelType(): string {\n if (this.multiLevelType === 1) {\n return 'multilevel';\n } else if (this.multiLevelType === 2) {\n return 'hybridMultilevel';\n } else {\n return 'singleLevel';\n }\n }\n\n /**\n * Sets the multi-level type\n * @param type The multi-level type ('multilevel' or 'singleLevel')\n */\n setMultiLevelType(type: 'multilevel' | 'singleLevel' | 'hybridMultilevel'): this {\n if (type === 'multilevel') {\n this.multiLevelType = 1;\n } else if (type === 'hybridMultilevel') {\n this.multiLevelType = 2;\n } else {\n this.multiLevelType = 0;\n }\n return this;\n }\n\n /**\n * Gets the numStyleLink (reference to a numbering style definition)\n */\n getNumStyleLink(): string | undefined {\n return this.numStyleLink;\n }\n\n /**\n * Sets the numStyleLink\n * @param link The numbering style name\n */\n setNumStyleLink(link: string | undefined): this {\n this.numStyleLink = link;\n return this;\n }\n\n /**\n * Gets the styleLink (reference to a style that uses this abstract numbering)\n */\n getStyleLink(): string | undefined {\n return this.styleLink;\n }\n\n /**\n * Sets the styleLink\n * @param link The style name\n */\n setStyleLink(link: string | undefined): this {\n this.styleLink = link;\n return this;\n }\n\n /**\n * Gets the template code (w:tmpl per ECMA-376 §17.9.30)\n */\n getTemplate(): string | undefined {\n return this.tmpl;\n }\n\n /**\n * Sets the template code\n * @param tmpl 8-char hex string identifying the template\n */\n setTemplate(tmpl: string): this {\n this.tmpl = tmpl;\n return this;\n }\n\n /**\n * Adds a numbering level\n * @param level The numbering level to add\n */\n addLevel(level: NumberingLevel): this {\n const levelIndex = level.getLevel();\n\n if (levelIndex < 0 || levelIndex > 8) {\n throw new Error(`Level must be between 0 and 8, got ${levelIndex}`);\n }\n\n this.levels.set(levelIndex, level);\n return this;\n }\n\n /**\n * Adds multiple numbering levels at once\n * @param levels The numbering levels to add\n */\n addLevels(levels: NumberingLevel[]): this {\n levels.forEach((level) => this.addLevel(level));\n return this;\n }\n\n /**\n * Gets a numbering level by index\n * @param levelIndex The level index (0-8)\n */\n getLevel(levelIndex: number): NumberingLevel | undefined {\n return this.levels.get(levelIndex);\n }\n\n /**\n * Gets all levels\n */\n getAllLevels(): NumberingLevel[] {\n return Array.from(this.levels.values()).sort((a, b) => a.getLevel() - b.getLevel());\n }\n\n /**\n * Alias for getAllLevels for backward compatibility\n */\n getLevels(): NumberingLevel[] {\n return this.getAllLevels();\n }\n\n /**\n * Gets the number of levels defined\n */\n getLevelCount(): number {\n return this.levels.size;\n }\n\n /**\n * Checks if a level exists\n * @param levelIndex The level index (0-8)\n */\n hasLevel(levelIndex: number): boolean {\n return this.levels.has(levelIndex);\n }\n\n /**\n * Removes a level\n * @param levelIndex The level index (0-8)\n */\n removeLevel(levelIndex: number): boolean {\n return this.levels.delete(levelIndex);\n }\n\n /**\n * Generates the WordprocessingML XML for this abstract numbering\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // CT_AbstractNum order per ECMA-376: nsid → multiLevelType → tmpl → name → styleLink → numStyleLink → lvl*\n\n // 1. nsid (ECMA-376 §17.9.17) — namespace-scoped unique identifier\n if (this.nsid) {\n children.push(XMLBuilder.wSelf('nsid', { 'w:val': this.nsid }));\n }\n\n // 2. multiLevelType\n let multiLevelTypeValue: string;\n if (this.multiLevelType === 1) {\n multiLevelTypeValue = 'multilevel';\n } else if (this.multiLevelType === 2) {\n multiLevelTypeValue = 'hybridMultilevel';\n } else {\n multiLevelTypeValue = 'singleLevel';\n }\n\n children.push(\n XMLBuilder.wSelf('multiLevelType', {\n 'w:val': multiLevelTypeValue,\n })\n );\n\n // Add template code (position 3 per CT_AbstractNum)\n if (this.tmpl) {\n children.push(XMLBuilder.wSelf('tmpl', { 'w:val': this.tmpl }));\n }\n\n // Add name if present\n if (this.name) {\n children.push(XMLBuilder.wSelf('name', { 'w:val': this.name }));\n }\n\n // Add styleLink / numStyleLink if present\n if (this.styleLink) {\n children.push(XMLBuilder.wSelf('styleLink', { 'w:val': this.styleLink }));\n }\n if (this.numStyleLink) {\n children.push(XMLBuilder.wSelf('numStyleLink', { 'w:val': this.numStyleLink }));\n }\n\n // Add all levels in order\n const sortedLevels = this.getAllLevels();\n sortedLevels.forEach((level) => {\n children.push(level.toXML());\n });\n\n // If no levels defined, add a default level 0\n if (sortedLevels.length === 0) {\n children.push(NumberingLevel.createDecimalLevel(0).toXML());\n }\n\n return XMLBuilder.w(\n 'abstractNum',\n { 'w:abstractNumId': this.abstractNumId.toString() },\n children\n );\n }\n\n /**\n * Creates a bullet list abstract numbering with specified levels\n *\n * Uses Calibri font for better UI compatibility. For advanced bullet symbol selection,\n * use NumberingLevel.getBulletSymbolWithFont() to get recommended symbol/font pairs.\n *\n * @param abstractNumId The abstract numbering ID\n * @param levels Number of levels (default: 9)\n * @param bullets Array of bullet characters (default: ['•', '○', '▪'])\n *\n * @example\n * // Standard bullet list\n * const bulletList = AbstractNumbering.createBulletList(1);\n *\n * @example\n * // Custom bullets using helper method\n * const bullets = [];\n * for (let i = 0; i < 9; i++) {\n * const { symbol } = NumberingLevel.getBulletSymbolWithFont(i, 'square');\n * bullets.push(symbol);\n * }\n * const squareList = AbstractNumbering.createBulletList(2, 9, bullets);\n */\n static createBulletList(\n abstractNumId: number,\n levels = 9,\n bullets?: string[] // Optional: custom bullets. If not provided, uses Word-native encoding\n ): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Bullet List',\n multiLevelType: 1,\n });\n\n for (let i = 0; i < levels && i < 9; i++) {\n if (bullets && bullets.length > 0) {\n // Custom bullets provided - use them with default font\n const bullet = bullets[i % bullets.length] || '•';\n abstractNum.addLevel(NumberingLevel.createBulletLevel(i, bullet));\n } else {\n // No custom bullets - use Word-native encoding (correct font per level)\n abstractNum.addLevel(NumberingLevel.createBulletLevel(i));\n }\n }\n\n return abstractNum;\n }\n\n /**\n * Creates a numbered list abstract numbering with specified levels\n * @param abstractNumId The abstract numbering ID\n * @param levels Number of levels (default: 9)\n * @param formats Array of formats for each level\n */\n static createNumberedList(\n abstractNumId: number,\n levels = 9,\n formats: ('decimal' | 'lowerLetter' | 'lowerRoman' | 'upperLetter' | 'upperRoman')[] = [\n 'decimal',\n 'lowerLetter',\n 'lowerRoman',\n 'upperLetter',\n 'upperRoman',\n ]\n ): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Numbered List',\n multiLevelType: 1,\n });\n\n for (let i = 0; i < levels && i < 9; i++) {\n const format = formats[i % formats.length] || 'decimal';\n const template = `%${i + 1}.`;\n\n let level: NumberingLevel;\n switch (format) {\n case 'lowerLetter':\n level = NumberingLevel.createLowerLetterLevel(i, template);\n break;\n case 'lowerRoman':\n level = NumberingLevel.createLowerRomanLevel(i, template);\n break;\n case 'upperLetter':\n level = NumberingLevel.createUpperLetterLevel(i, template);\n break;\n case 'upperRoman':\n level = NumberingLevel.createUpperRomanLevel(i, template);\n break;\n case 'decimal':\n default:\n level = NumberingLevel.createDecimalLevel(i, template);\n break;\n }\n\n abstractNum.addLevel(level);\n }\n\n return abstractNum;\n }\n\n /**\n * Creates a multi-level list with mixed formats\n * @param abstractNumId The abstract numbering ID\n */\n static createMultiLevelList(abstractNumId: number): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Multi-Level List',\n multiLevelType: 1,\n });\n\n // Level 0: 1, 2, 3, ...\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(0, '%1.'));\n\n // Level 1: a, b, c, ...\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(1, '%2.'));\n\n // Level 2: i, ii, iii, ...\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(2, '%3.'));\n\n // Level 3: 1, 2, 3, ... (with more indent)\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(3, '%4.'));\n\n return abstractNum;\n }\n\n /**\n * Creates an outline list abstract numbering\n * @param abstractNumId The abstract numbering ID\n */\n static createOutlineList(abstractNumId: number): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Outline List',\n multiLevelType: 1,\n });\n\n // Level 0: I, II, III, ...\n abstractNum.addLevel(NumberingLevel.createUpperRomanLevel(0, '%1.'));\n\n // Level 1: A, B, C, ...\n abstractNum.addLevel(NumberingLevel.createUpperLetterLevel(1, '%2.'));\n\n // Level 2: 1, 2, 3, ...\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(2, '%3.'));\n\n // Level 3: a, b, c, ...\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(3, '%4.'));\n\n // Level 4: i, ii, iii, ...\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(4, '%5.'));\n\n // Level 5: A, B, C, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createUpperLetterLevel(5, '%6.'));\n\n // Level 6: 1, 2, 3, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(6, '%7.'));\n\n // Level 7: a, b, c, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(7, '%8.'));\n\n // Level 8: i, ii, iii, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(8, '%9.'));\n\n return abstractNum;\n }\n\n /**\n * Factory method for creating an abstract numbering definition\n * @param properties The abstract numbering properties\n */\n static create(properties: AbstractNumberingProperties): AbstractNumbering {\n return new AbstractNumbering(properties);\n }\n\n /**\n * Creates an AbstractNumbering from XML element\n * @param xml The XML string of the <w:abstractNum> element\n * @returns AbstractNumbering instance\n */\n static fromXML(xml: string): AbstractNumbering {\n // Extract abstractNumId (required)\n const abstractNumIdMatch = /<w:abstractNum[^>]*w:abstractNumId=\"([^\"]+)\"/.exec(xml);\n if (!abstractNumIdMatch?.[1]) {\n throw new Error('Missing required w:abstractNumId attribute');\n }\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\n\n // Extract name (optional)\n const nameMatch = /<w:name[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const name = nameMatch?.[1] ? nameMatch[1] : undefined;\n\n // Extract multiLevelType (optional)\n // Values: \"singleLevel\" = 0, \"multilevel\" = 1, \"hybridMultilevel\" = 2\n const multiLevelTypeMatch = /<w:multiLevelType[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n let multiLevelType = 1; // default to multilevel\n if (multiLevelTypeMatch?.[1]) {\n const value = multiLevelTypeMatch[1];\n if (value === 'singleLevel') multiLevelType = 0;\n else if (value === 'multilevel') multiLevelType = 1;\n else if (value === 'hybridMultilevel') multiLevelType = 2;\n }\n\n // Extract numStyleLink (optional, ECMA-376 §17.9.21)\n const numStyleLinkMatch = /<w:numStyleLink[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const numStyleLink = numStyleLinkMatch?.[1] || undefined;\n\n // Extract styleLink (optional, ECMA-376 §17.9.27)\n const styleLinkMatch = /<w:styleLink[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const styleLink = styleLinkMatch?.[1] || undefined;\n\n // Extract template code (optional, ECMA-376 §17.9.30)\n const tmplMatch = /<w:tmpl[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const tmpl = tmplMatch?.[1] || undefined;\n\n // Extract nsid (optional, ECMA-376 §17.9.17) — 8-char hex namespace ID\n const nsidMatch = /<w:nsid[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const nsid = nsidMatch?.[1] || undefined;\n\n // Create abstract numbering\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name,\n multiLevelType,\n numStyleLink,\n styleLink,\n tmpl,\n nsid,\n });\n\n // Extract and parse all levels\n const lvlRegex = /<w:lvl[^>]*>[\\s\\S]*?<\\/w:lvl>/g;\n const lvlMatches = xml.match(lvlRegex);\n\n if (lvlMatches) {\n for (const lvlXml of lvlMatches) {\n try {\n const level = NumberingLevel.fromXML(lvlXml);\n abstractNum.addLevel(level);\n } catch (error: unknown) {\n // Skip malformed levels but continue parsing\n defaultLogger.warn(`Failed to parse level: ${error}`);\n }\n }\n }\n\n return abstractNum;\n }\n}\n"]}
1
+ {"version":3,"file":"AbstractNumbering.js","sourceRoot":"","sources":["../../src/formatting/AbstractNumbering.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AbstractNumbering - Defines a multi-level numbering scheme\n *\n * An abstract numbering definition is a template that defines up to 9 levels of\n * list formatting. It's referenced by numbering instances which link it to actual\n * paragraphs in the document.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { NumberingLevel } from './NumberingLevel.js';\nimport { defaultLogger } from '../utils/logger.js';\n\n/**\n * Properties for creating an abstract numbering definition\n */\nexport interface AbstractNumberingProperties {\n /** Unique identifier for this abstract numbering */\n abstractNumId: number;\n\n /** Optional name for the numbering scheme */\n name?: string;\n\n /** The numbering levels (up to 9 levels, 0-8) */\n levels?: NumberingLevel[];\n\n /** Optional multiLevel type (0 = single level, 1 = multilevel) */\n multiLevelType?: number;\n\n /** Optional link to a numbering style definition (ECMA-376 §17.9.21) */\n numStyleLink?: string;\n\n /** Optional link to a style that uses this abstract numbering (ECMA-376 §17.9.27) */\n styleLink?: string;\n\n /** Template code (ECMA-376 §17.9.30) - 8-char hex string identifying the template */\n tmpl?: string;\n\n /** Namespace-scoped unique ID (ECMA-376 §17.9.17) - 8-char hex string */\n nsid?: string;\n}\n\n/**\n * Represents an abstract numbering definition\n *\n * Abstract numbering defines the template for a multi-level list. Each instance\n * of a list in the document references an abstract numbering definition.\n */\nexport class AbstractNumbering {\n private abstractNumId: number;\n private name?: string;\n private levels: Map<number, NumberingLevel>;\n private multiLevelType: number;\n private numStyleLink?: string;\n private styleLink?: string;\n private tmpl?: string;\n private nsid?: string;\n\n /**\n * Creates a new abstract numbering definition\n * @param idOrProps The abstract numbering ID (number) or properties object\n * @param name Optional name (if first param is a number)\n */\n constructor(idOrProps: number | AbstractNumberingProperties, name?: string) {\n // Support both simple (numId) and object constructor patterns\n if (typeof idOrProps === 'number') {\n // Simple constructor: new AbstractNumbering(id)\n this.abstractNumId = idOrProps;\n this.name = name;\n this.levels = new Map();\n this.multiLevelType = 1; // default multilevel\n this.nsid = AbstractNumbering.generateNsid();\n } else {\n // Object constructor: new AbstractNumbering({ abstractNumId, ... })\n const properties = idOrProps;\n this.abstractNumId = properties.abstractNumId;\n this.name = properties.name;\n this.levels = new Map();\n this.multiLevelType = properties.multiLevelType !== undefined ? properties.multiLevelType : 1;\n this.numStyleLink = properties.numStyleLink;\n this.styleLink = properties.styleLink;\n this.tmpl = properties.tmpl;\n this.nsid = properties.nsid ?? AbstractNumbering.generateNsid();\n\n if (properties.levels) {\n properties.levels.forEach((level) => {\n this.addLevel(level);\n });\n }\n }\n\n this.validate();\n }\n\n /**\n * Validates the abstract numbering\n */\n private validate(): void {\n if (this.abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n\n if (this.levels.size > 9) {\n throw new Error('Cannot have more than 9 levels (0-8)');\n }\n }\n\n /**\n * Gets the abstract numbering ID\n */\n getAbstractNumId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Alias for getAbstractNumId for backward compatibility\n */\n getId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Gets the namespace-scoped unique ID (ECMA-376 §17.9.17)\n */\n getNsid(): string | undefined {\n return this.nsid;\n }\n\n /**\n * Sets the namespace-scoped unique ID\n */\n setNsid(nsid: string): void {\n this.nsid = nsid;\n }\n\n /**\n * Generates a random 8-character uppercase hex nsid value\n */\n private static generateNsid(): string {\n const hex = Math.floor(Math.random() * 0xffffffff)\n .toString(16)\n .toUpperCase()\n .padStart(8, '0');\n return hex;\n }\n\n /**\n * Gets the name\n */\n getName(): string | undefined {\n return this.name;\n }\n\n /**\n * Sets the name\n * @param name The numbering scheme name\n */\n setName(name: string): this {\n this.name = name;\n return this;\n }\n\n /**\n * Gets the multi-level type\n */\n getMultiLevelType(): string {\n if (this.multiLevelType === 1) {\n return 'multilevel';\n } else if (this.multiLevelType === 2) {\n return 'hybridMultilevel';\n } else {\n return 'singleLevel';\n }\n }\n\n /**\n * Sets the multi-level type\n * @param type The multi-level type ('multilevel' or 'singleLevel')\n */\n setMultiLevelType(type: 'multilevel' | 'singleLevel' | 'hybridMultilevel'): this {\n if (type === 'multilevel') {\n this.multiLevelType = 1;\n } else if (type === 'hybridMultilevel') {\n this.multiLevelType = 2;\n } else {\n this.multiLevelType = 0;\n }\n return this;\n }\n\n /**\n * Gets the numStyleLink (reference to a numbering style definition)\n */\n getNumStyleLink(): string | undefined {\n return this.numStyleLink;\n }\n\n /**\n * Sets the numStyleLink\n * @param link The numbering style name\n */\n setNumStyleLink(link: string | undefined): this {\n this.numStyleLink = link;\n return this;\n }\n\n /**\n * Gets the styleLink (reference to a style that uses this abstract numbering)\n */\n getStyleLink(): string | undefined {\n return this.styleLink;\n }\n\n /**\n * Sets the styleLink\n * @param link The style name\n */\n setStyleLink(link: string | undefined): this {\n this.styleLink = link;\n return this;\n }\n\n /**\n * Gets the template code (w:tmpl per ECMA-376 §17.9.30)\n */\n getTemplate(): string | undefined {\n return this.tmpl;\n }\n\n /**\n * Sets the template code\n * @param tmpl 8-char hex string identifying the template\n */\n setTemplate(tmpl: string): this {\n this.tmpl = tmpl;\n return this;\n }\n\n /**\n * Adds a numbering level\n * @param level The numbering level to add\n */\n addLevel(level: NumberingLevel): this {\n const levelIndex = level.getLevel();\n\n if (levelIndex < 0 || levelIndex > 8) {\n throw new Error(`Level must be between 0 and 8, got ${levelIndex}`);\n }\n\n this.levels.set(levelIndex, level);\n return this;\n }\n\n /**\n * Adds multiple numbering levels at once\n * @param levels The numbering levels to add\n */\n addLevels(levels: NumberingLevel[]): this {\n levels.forEach((level) => this.addLevel(level));\n return this;\n }\n\n /**\n * Gets a numbering level by index\n * @param levelIndex The level index (0-8)\n */\n getLevel(levelIndex: number): NumberingLevel | undefined {\n return this.levels.get(levelIndex);\n }\n\n /**\n * Gets all levels\n */\n getAllLevels(): NumberingLevel[] {\n return Array.from(this.levels.values()).sort((a, b) => a.getLevel() - b.getLevel());\n }\n\n /**\n * Alias for getAllLevels for backward compatibility\n */\n getLevels(): NumberingLevel[] {\n return this.getAllLevels();\n }\n\n /**\n * Gets the number of levels defined\n */\n getLevelCount(): number {\n return this.levels.size;\n }\n\n /**\n * Checks if a level exists\n * @param levelIndex The level index (0-8)\n */\n hasLevel(levelIndex: number): boolean {\n return this.levels.has(levelIndex);\n }\n\n /**\n * Removes a level\n * @param levelIndex The level index (0-8)\n */\n removeLevel(levelIndex: number): boolean {\n return this.levels.delete(levelIndex);\n }\n\n /**\n * Generates the WordprocessingML XML for this abstract numbering\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // CT_AbstractNum order per ECMA-376: nsid → multiLevelType → tmpl → name → styleLink → numStyleLink → lvl*\n\n // 1. nsid (ECMA-376 §17.9.17) — namespace-scoped unique identifier\n if (this.nsid) {\n children.push(XMLBuilder.wSelf('nsid', { 'w:val': this.nsid }));\n }\n\n // 2. multiLevelType\n let multiLevelTypeValue: string;\n if (this.multiLevelType === 1) {\n multiLevelTypeValue = 'multilevel';\n } else if (this.multiLevelType === 2) {\n multiLevelTypeValue = 'hybridMultilevel';\n } else {\n multiLevelTypeValue = 'singleLevel';\n }\n\n children.push(\n XMLBuilder.wSelf('multiLevelType', {\n 'w:val': multiLevelTypeValue,\n })\n );\n\n // Add template code (position 3 per CT_AbstractNum)\n if (this.tmpl) {\n children.push(XMLBuilder.wSelf('tmpl', { 'w:val': this.tmpl }));\n }\n\n // Add name if present\n if (this.name) {\n children.push(XMLBuilder.wSelf('name', { 'w:val': this.name }));\n }\n\n // Add styleLink / numStyleLink if present\n if (this.styleLink) {\n children.push(XMLBuilder.wSelf('styleLink', { 'w:val': this.styleLink }));\n }\n if (this.numStyleLink) {\n children.push(XMLBuilder.wSelf('numStyleLink', { 'w:val': this.numStyleLink }));\n }\n\n // Add all levels in order\n const sortedLevels = this.getAllLevels();\n sortedLevels.forEach((level) => {\n children.push(level.toXML());\n });\n\n // If no levels defined, add a default level 0\n if (sortedLevels.length === 0) {\n children.push(NumberingLevel.createDecimalLevel(0).toXML());\n }\n\n return XMLBuilder.w(\n 'abstractNum',\n { 'w:abstractNumId': this.abstractNumId.toString() },\n children\n );\n }\n\n /**\n * Creates a bullet list abstract numbering with specified levels\n *\n * Uses Calibri font for better UI compatibility. For advanced bullet symbol selection,\n * use NumberingLevel.getBulletSymbolWithFont() to get recommended symbol/font pairs.\n *\n * @param abstractNumId The abstract numbering ID\n * @param levels Number of levels (default: 9)\n * @param bullets Array of bullet characters (default: ['•', '○', '▪'])\n *\n * @example\n * // Standard bullet list\n * const bulletList = AbstractNumbering.createBulletList(1);\n *\n * @example\n * // Custom bullets using helper method\n * const bullets = [];\n * for (let i = 0; i < 9; i++) {\n * const { symbol } = NumberingLevel.getBulletSymbolWithFont(i, 'square');\n * bullets.push(symbol);\n * }\n * const squareList = AbstractNumbering.createBulletList(2, 9, bullets);\n */\n static createBulletList(\n abstractNumId: number,\n levels = 9,\n bullets?: string[] // Optional: custom bullets. If not provided, uses Word-native encoding\n ): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Bullet List',\n multiLevelType: 1,\n });\n\n for (let i = 0; i < levels && i < 9; i++) {\n if (bullets && bullets.length > 0) {\n // Custom bullets provided - use them with default font\n const bullet = bullets[i % bullets.length] || '•';\n abstractNum.addLevel(NumberingLevel.createBulletLevel(i, bullet));\n } else {\n // No custom bullets - use Word-native encoding (correct font per level)\n abstractNum.addLevel(NumberingLevel.createBulletLevel(i));\n }\n }\n\n return abstractNum;\n }\n\n /**\n * Creates a numbered list abstract numbering with specified levels\n * @param abstractNumId The abstract numbering ID\n * @param levels Number of levels (default: 9)\n * @param formats Array of formats for each level\n */\n static createNumberedList(\n abstractNumId: number,\n levels = 9,\n formats: ('decimal' | 'lowerLetter' | 'lowerRoman' | 'upperLetter' | 'upperRoman')[] = [\n 'decimal',\n 'lowerLetter',\n 'lowerRoman',\n 'upperLetter',\n 'upperRoman',\n ]\n ): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Numbered List',\n multiLevelType: 1,\n });\n\n for (let i = 0; i < levels && i < 9; i++) {\n const format = formats[i % formats.length] || 'decimal';\n const template = `%${i + 1}.`;\n\n let level: NumberingLevel;\n switch (format) {\n case 'lowerLetter':\n level = NumberingLevel.createLowerLetterLevel(i, template);\n break;\n case 'lowerRoman':\n level = NumberingLevel.createLowerRomanLevel(i, template);\n break;\n case 'upperLetter':\n level = NumberingLevel.createUpperLetterLevel(i, template);\n break;\n case 'upperRoman':\n level = NumberingLevel.createUpperRomanLevel(i, template);\n break;\n case 'decimal':\n default:\n level = NumberingLevel.createDecimalLevel(i, template);\n break;\n }\n\n abstractNum.addLevel(level);\n }\n\n return abstractNum;\n }\n\n /**\n * Creates a multi-level list with mixed formats\n * @param abstractNumId The abstract numbering ID\n */\n static createMultiLevelList(abstractNumId: number): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Multi-Level List',\n multiLevelType: 1,\n });\n\n // Level 0: 1, 2, 3, ...\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(0, '%1.'));\n\n // Level 1: a, b, c, ...\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(1, '%2.'));\n\n // Level 2: i, ii, iii, ...\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(2, '%3.'));\n\n // Level 3: 1, 2, 3, ... (with more indent)\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(3, '%4.'));\n\n return abstractNum;\n }\n\n /**\n * Creates an outline list abstract numbering\n * @param abstractNumId The abstract numbering ID\n */\n static createOutlineList(abstractNumId: number): AbstractNumbering {\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name: 'Outline List',\n multiLevelType: 1,\n });\n\n // Level 0: I, II, III, ...\n abstractNum.addLevel(NumberingLevel.createUpperRomanLevel(0, '%1.'));\n\n // Level 1: A, B, C, ...\n abstractNum.addLevel(NumberingLevel.createUpperLetterLevel(1, '%2.'));\n\n // Level 2: 1, 2, 3, ...\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(2, '%3.'));\n\n // Level 3: a, b, c, ...\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(3, '%4.'));\n\n // Level 4: i, ii, iii, ...\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(4, '%5.'));\n\n // Level 5: A, B, C, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createUpperLetterLevel(5, '%6.'));\n\n // Level 6: 1, 2, 3, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createDecimalLevel(6, '%7.'));\n\n // Level 7: a, b, c, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createLowerLetterLevel(7, '%8.'));\n\n // Level 8: i, ii, iii, ... (repeating)\n abstractNum.addLevel(NumberingLevel.createLowerRomanLevel(8, '%9.'));\n\n return abstractNum;\n }\n\n /**\n * Factory method for creating an abstract numbering definition\n * @param properties The abstract numbering properties\n */\n static create(properties: AbstractNumberingProperties): AbstractNumbering {\n return new AbstractNumbering(properties);\n }\n\n /**\n * Creates an AbstractNumbering from XML element\n * @param xml The XML string of the <w:abstractNum> element\n * @returns AbstractNumbering instance\n */\n static fromXML(xml: string): AbstractNumbering {\n // Extract abstractNumId (required)\n const abstractNumIdMatch = /<w:abstractNum[^>]*w:abstractNumId=\"([^\"]+)\"/.exec(xml);\n if (!abstractNumIdMatch?.[1]) {\n throw new Error('Missing required w:abstractNumId attribute');\n }\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\n\n // Extract name (optional)\n const nameMatch = /<w:name[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const name = nameMatch?.[1] ? nameMatch[1] : undefined;\n\n // Extract multiLevelType (optional)\n // Values: \"singleLevel\" = 0, \"multilevel\" = 1, \"hybridMultilevel\" = 2\n const multiLevelTypeMatch = /<w:multiLevelType[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n let multiLevelType = 1; // default to multilevel\n if (multiLevelTypeMatch?.[1]) {\n const value = multiLevelTypeMatch[1];\n if (value === 'singleLevel') multiLevelType = 0;\n else if (value === 'multilevel') multiLevelType = 1;\n else if (value === 'hybridMultilevel') multiLevelType = 2;\n }\n\n // Extract numStyleLink (optional, ECMA-376 §17.9.21)\n const numStyleLinkMatch = /<w:numStyleLink[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const numStyleLink = numStyleLinkMatch?.[1] || undefined;\n\n // Extract styleLink (optional, ECMA-376 §17.9.27)\n const styleLinkMatch = /<w:styleLink[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const styleLink = styleLinkMatch?.[1] || undefined;\n\n // Extract template code (optional, ECMA-376 §17.9.30)\n const tmplMatch = /<w:tmpl[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const tmpl = tmplMatch?.[1] || undefined;\n\n // Extract nsid (optional, ECMA-376 §17.9.17) — 8-char hex namespace ID\n const nsidMatch = /<w:nsid[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n const nsid = nsidMatch?.[1] || undefined;\n\n // Create abstract numbering\n const abstractNum = new AbstractNumbering({\n abstractNumId,\n name,\n multiLevelType,\n numStyleLink,\n styleLink,\n tmpl,\n nsid,\n });\n\n // Extract and parse all levels\n const lvlRegex = /<w:lvl[^>]*>[\\s\\S]*?<\\/w:lvl>/g;\n const lvlMatches = xml.match(lvlRegex);\n\n if (lvlMatches) {\n for (const lvlXml of lvlMatches) {\n try {\n const level = NumberingLevel.fromXML(lvlXml);\n abstractNum.addLevel(level);\n } catch (error: unknown) {\n // Skip malformed levels but continue parsing\n defaultLogger.warn(`Failed to parse level: ${error}`);\n }\n }\n }\n\n return abstractNum;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { XMLElement } from '../xml/XMLBuilder';
2
- import { NumberingLevel } from './NumberingLevel';
1
+ import { XMLElement } from '../xml/XMLBuilder.js';
2
+ import { NumberingLevel } from './NumberingLevel.js';
3
3
  export interface NumberingInstanceProperties {
4
4
  numId: number;
5
5
  abstractNumId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingInstance.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,MAAM,WAAW,2BAA2B;IAE1C,KAAK,EAAE,MAAM,CAAC;IAGd,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,kBAAkB,CAAqC;gBAOnD,YAAY,EAAE,MAAM,GAAG,2BAA2B,EAAE,aAAa,CAAC,EAAE,MAAM;IAiBtF,OAAO,CAAC,QAAQ;IAahB,QAAQ,IAAI,MAAM;IAOlB,gBAAgB,IAAI,MAAM;IAQ1B,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAW7C,KAAK,IAAI,MAAM;IAQf,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAYxC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAkBzD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYnD,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAWnE,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAO/D,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAOpD,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3C,KAAK,IAAI,UAAU;IA0CnB,MAAM,CAAC,MAAM,CACX,iBAAiB,EAAE,2BAA2B,GAAG,MAAM,EACvD,aAAa,CAAC,EAAE,MAAM,GACrB,iBAAiB;IAYpB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;CAgD/C"}
1
+ {"version":3,"file":"NumberingInstance.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,MAAM,WAAW,2BAA2B;IAE1C,KAAK,EAAE,MAAM,CAAC;IAGd,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,kBAAkB,CAAqC;gBAOnD,YAAY,EAAE,MAAM,GAAG,2BAA2B,EAAE,aAAa,CAAC,EAAE,MAAM;IAiBtF,OAAO,CAAC,QAAQ;IAahB,QAAQ,IAAI,MAAM;IAOlB,gBAAgB,IAAI,MAAM;IAQ1B,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAW7C,KAAK,IAAI,MAAM;IAQf,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAYxC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAkBzD,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYnD,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAWnE,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAO/D,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAOpD,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3C,KAAK,IAAI,UAAU;IA0CnB,MAAM,CAAC,MAAM,CACX,iBAAiB,EAAE,2BAA2B,GAAG,MAAM,EACvD,aAAa,CAAC,EAAE,MAAM,GACrB,iBAAiB;IAYpB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB;CAgD/C"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumberingInstance = void 0;
4
- const XMLBuilder_1 = require("../xml/XMLBuilder");
5
- const NumberingLevel_1 = require("./NumberingLevel");
4
+ const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
5
+ const NumberingLevel_js_1 = require("./NumberingLevel.js");
6
6
  class NumberingInstance {
7
7
  numId;
8
8
  abstractNumId;
@@ -82,20 +82,20 @@ class NumberingInstance {
82
82
  }
83
83
  toXML() {
84
84
  const children = [];
85
- children.push(XMLBuilder_1.XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() }));
85
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() }));
86
86
  for (const [level, startValue] of this.levelOverrides) {
87
87
  if (this.fullLevelOverrides.has(level))
88
88
  continue;
89
89
  children.push({
90
90
  name: 'w:lvlOverride',
91
91
  attributes: { 'w:ilvl': level.toString() },
92
- children: [XMLBuilder_1.XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })],
92
+ children: [XMLBuilder_js_1.XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })],
93
93
  });
94
94
  }
95
95
  for (const [level, levelDef] of this.fullLevelOverrides) {
96
96
  const overrideChildren = [];
97
97
  if (this.levelOverrides.has(level)) {
98
- overrideChildren.push(XMLBuilder_1.XMLBuilder.wSelf('startOverride', { 'w:val': this.levelOverrides.get(level).toString() }));
98
+ overrideChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('startOverride', { 'w:val': this.levelOverrides.get(level).toString() }));
99
99
  }
100
100
  overrideChildren.push(levelDef.toXML());
101
101
  children.push({
@@ -104,7 +104,7 @@ class NumberingInstance {
104
104
  children: overrideChildren,
105
105
  });
106
106
  }
107
- return XMLBuilder_1.XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);
107
+ return XMLBuilder_js_1.XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);
108
108
  }
109
109
  static create(propertiesOrNumId, abstractNumId) {
110
110
  if (typeof propertiesOrNumId === 'number') {
@@ -140,7 +140,7 @@ class NumberingInstance {
140
140
  const lvlMatch = /<w:lvl[^>]*>[\s\S]*?<\/w:lvl>/.exec(content);
141
141
  if (lvlMatch) {
142
142
  try {
143
- const levelDef = NumberingLevel_1.NumberingLevel.fromXML(lvlMatch[0]);
143
+ const levelDef = NumberingLevel_js_1.NumberingLevel.fromXML(lvlMatch[0]);
144
144
  instance.setFullLevelOverride(level, levelDef);
145
145
  }
146
146
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingInstance.js","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NumberingInstance - Links paragraphs to abstract numbering definitions\n *\n * A numbering instance references an abstract numbering definition and provides\n * the actual numId that paragraphs use. Multiple instances can reference the same\n * abstract numbering, creating separate list sequences.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder';\nimport { NumberingLevel } from './NumberingLevel';\n\n/**\n * Properties for creating a numbering instance\n */\nexport interface NumberingInstanceProperties {\n /** Unique numbering instance ID (numId) */\n numId: number;\n\n /** Reference to the abstract numbering definition */\n abstractNumId: number;\n}\n\n/**\n * Represents a numbering instance\n *\n * Numbering instances link paragraphs to abstract numbering definitions.\n * Each instance creates a separate numbering sequence in the document.\n */\nexport class NumberingInstance {\n private numId: number;\n private abstractNumId: number;\n private levelOverrides = new Map<number, number>();\n private fullLevelOverrides = new Map<number, NumberingLevel>();\n\n /**\n * Creates a new numbering instance\n * @param numIdOrProps The numbering instance ID or properties object\n * @param abstractNumId The abstract numbering ID (if first param is a number)\n */\n constructor(numIdOrProps: number | NumberingInstanceProperties, abstractNumId?: number) {\n if (typeof numIdOrProps === 'number') {\n // Support simple constructor: new NumberingInstance(numId, abstractNumId)\n this.numId = numIdOrProps;\n this.abstractNumId = abstractNumId ?? 0;\n } else {\n // Support object constructor: new NumberingInstance({ numId, abstractNumId })\n this.numId = numIdOrProps.numId;\n this.abstractNumId = numIdOrProps.abstractNumId;\n }\n\n this.validate();\n }\n\n /**\n * Validates the numbering instance\n */\n private validate(): void {\n if (this.numId < 0) {\n throw new Error('Numbering instance ID must be non-negative');\n }\n\n if (this.abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n }\n\n /**\n * Gets the numbering instance ID\n */\n getNumId(): number {\n return this.numId;\n }\n\n /**\n * Gets the abstract numbering ID\n */\n getAbstractNumId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Sets the abstract numbering ID this instance references\n * @param abstractNumId The new abstract numbering ID\n */\n setAbstractNumId(abstractNumId: number): this {\n if (abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n this.abstractNumId = abstractNumId;\n return this;\n }\n\n /**\n * Alias for getNumId for backward compatibility\n */\n getId(): number {\n return this.numId;\n }\n\n /**\n * Gets level overrides\n * Returns a map of level indices to their override starting values\n */\n getLevelOverrides(): Map<number, number> {\n return new Map(this.levelOverrides);\n }\n\n /**\n * Sets level override for a specific level\n * Overrides the starting value for a particular numbering level\n *\n * @param level The level index (0-based)\n * @param startValue The starting value for this level\n * @returns This instance for method chaining\n */\n setLevelOverride(level: number, startValue: number): this {\n if (level < 0) {\n throw new Error('Level index must be non-negative');\n }\n if (startValue < 0) {\n throw new Error('Start value must be non-negative');\n }\n\n this.levelOverrides.set(level, startValue);\n return this;\n }\n\n /**\n * Clears a level override for a specific level\n *\n * @param level The level index to clear\n * @returns This instance for method chaining\n */\n clearLevelOverride(level: number): this {\n this.levelOverrides.delete(level);\n return this;\n }\n\n /**\n * Gets the override value for a specific level, if set\n *\n * @param level The level index\n * @returns The override starting value, or undefined if not set\n */\n getLevelOverride(level: number): number | undefined {\n return this.levelOverrides.get(level);\n }\n\n /**\n * Sets a full level definition override for a specific level\n * This replaces the entire level definition from the abstract numbering\n * (ECMA-376 §17.9.8 - w:lvlOverride with full w:lvl child)\n *\n * @param level The level index (0-based)\n * @param levelDef The full NumberingLevel definition to use as override\n */\n setFullLevelOverride(level: number, levelDef: NumberingLevel): this {\n if (level < 0) {\n throw new Error('Level index must be non-negative');\n }\n this.fullLevelOverrides.set(level, levelDef);\n return this;\n }\n\n /**\n * Gets a full level definition override for a specific level\n */\n getFullLevelOverride(level: number): NumberingLevel | undefined {\n return this.fullLevelOverrides.get(level);\n }\n\n /**\n * Gets all full level definition overrides\n */\n getFullLevelOverrides(): Map<number, NumberingLevel> {\n return new Map(this.fullLevelOverrides);\n }\n\n /**\n * Clears a full level override\n */\n clearFullLevelOverride(level: number): this {\n this.fullLevelOverrides.delete(level);\n return this;\n }\n\n /**\n * Generates the WordprocessingML XML for this numbering instance\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // Reference to abstract numbering\n children.push(XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() }));\n\n // Add level overrides if any are set\n for (const [level, startValue] of this.levelOverrides) {\n // Skip levels that have a full level override (they take precedence)\n if (this.fullLevelOverrides.has(level)) continue;\n children.push({\n name: 'w:lvlOverride',\n attributes: { 'w:ilvl': level.toString() },\n children: [XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })],\n });\n }\n\n // Add full level overrides\n for (const [level, levelDef] of this.fullLevelOverrides) {\n const overrideChildren: XMLElement[] = [];\n // Include startOverride if also set for this level\n if (this.levelOverrides.has(level)) {\n overrideChildren.push(\n XMLBuilder.wSelf('startOverride', { 'w:val': this.levelOverrides.get(level)!.toString() })\n );\n }\n overrideChildren.push(levelDef.toXML());\n children.push({\n name: 'w:lvlOverride',\n attributes: { 'w:ilvl': level.toString() },\n children: overrideChildren,\n });\n }\n\n return XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);\n }\n\n /**\n * Factory method for creating a numbering instance\n * @param propertiesOrNumId The instance properties object, or numId (number)\n * @param abstractNumId The abstract numbering ID (if first param is a number)\n */\n static create(\n propertiesOrNumId: NumberingInstanceProperties | number,\n abstractNumId?: number\n ): NumberingInstance {\n if (typeof propertiesOrNumId === 'number') {\n return new NumberingInstance(propertiesOrNumId, abstractNumId);\n }\n return new NumberingInstance(propertiesOrNumId);\n }\n\n /**\n * Creates a NumberingInstance from XML element\n * @param xml The XML string of the <w:num> element\n * @returns NumberingInstance instance\n */\n static fromXML(xml: string): NumberingInstance {\n // Extract numId (required)\n const numIdMatch = /<w:num[^>]*w:numId=\"([^\"]+)\"/.exec(xml);\n if (!numIdMatch?.[1]) {\n throw new Error('Missing required w:numId attribute');\n }\n const numId = parseInt(numIdMatch[1], 10);\n\n // Extract abstractNumId (required)\n const abstractNumIdMatch = /<w:abstractNumId[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!abstractNumIdMatch?.[1]) {\n throw new Error('Missing required w:abstractNumId element');\n }\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\n\n const instance = new NumberingInstance({\n numId,\n abstractNumId,\n });\n\n // Parse level overrides (w:lvlOverride)\n const lvlOverrideRegex = /<w:lvlOverride[^>]*w:ilvl=\"(\\d+)\"[^>]*>([\\s\\S]*?)<\\/w:lvlOverride>/g;\n let match: RegExpExecArray | null;\n while ((match = lvlOverrideRegex.exec(xml)) !== null) {\n const levelStr = match[1]!;\n const content = match[2]!;\n const level = parseInt(levelStr, 10);\n\n // Check for startOverride\n const startOverrideMatch = /<w:startOverride[^>]*w:val=\"([^\"]+)\"/.exec(content);\n if (startOverrideMatch?.[1]) {\n instance.setLevelOverride(level, parseInt(startOverrideMatch[1], 10));\n }\n\n // Check for full w:lvl element\n const lvlMatch = /<w:lvl[^>]*>[\\s\\S]*?<\\/w:lvl>/.exec(content);\n if (lvlMatch) {\n try {\n const levelDef = NumberingLevel.fromXML(lvlMatch[0]);\n instance.setFullLevelOverride(level, levelDef);\n } catch {\n // Skip invalid level definitions\n }\n }\n }\n\n return instance;\n }\n}\n"]}
1
+ {"version":3,"file":"NumberingInstance.js","sourceRoot":"","sources":["../../src/formatting/NumberingInstance.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * NumberingInstance - Links paragraphs to abstract numbering definitions\n *\n * A numbering instance references an abstract numbering definition and provides\n * the actual numId that paragraphs use. Multiple instances can reference the same\n * abstract numbering, creating separate list sequences.\n */\n\nimport { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';\nimport { NumberingLevel } from './NumberingLevel.js';\n\n/**\n * Properties for creating a numbering instance\n */\nexport interface NumberingInstanceProperties {\n /** Unique numbering instance ID (numId) */\n numId: number;\n\n /** Reference to the abstract numbering definition */\n abstractNumId: number;\n}\n\n/**\n * Represents a numbering instance\n *\n * Numbering instances link paragraphs to abstract numbering definitions.\n * Each instance creates a separate numbering sequence in the document.\n */\nexport class NumberingInstance {\n private numId: number;\n private abstractNumId: number;\n private levelOverrides = new Map<number, number>();\n private fullLevelOverrides = new Map<number, NumberingLevel>();\n\n /**\n * Creates a new numbering instance\n * @param numIdOrProps The numbering instance ID or properties object\n * @param abstractNumId The abstract numbering ID (if first param is a number)\n */\n constructor(numIdOrProps: number | NumberingInstanceProperties, abstractNumId?: number) {\n if (typeof numIdOrProps === 'number') {\n // Support simple constructor: new NumberingInstance(numId, abstractNumId)\n this.numId = numIdOrProps;\n this.abstractNumId = abstractNumId ?? 0;\n } else {\n // Support object constructor: new NumberingInstance({ numId, abstractNumId })\n this.numId = numIdOrProps.numId;\n this.abstractNumId = numIdOrProps.abstractNumId;\n }\n\n this.validate();\n }\n\n /**\n * Validates the numbering instance\n */\n private validate(): void {\n if (this.numId < 0) {\n throw new Error('Numbering instance ID must be non-negative');\n }\n\n if (this.abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n }\n\n /**\n * Gets the numbering instance ID\n */\n getNumId(): number {\n return this.numId;\n }\n\n /**\n * Gets the abstract numbering ID\n */\n getAbstractNumId(): number {\n return this.abstractNumId;\n }\n\n /**\n * Sets the abstract numbering ID this instance references\n * @param abstractNumId The new abstract numbering ID\n */\n setAbstractNumId(abstractNumId: number): this {\n if (abstractNumId < 0) {\n throw new Error('Abstract numbering ID must be non-negative');\n }\n this.abstractNumId = abstractNumId;\n return this;\n }\n\n /**\n * Alias for getNumId for backward compatibility\n */\n getId(): number {\n return this.numId;\n }\n\n /**\n * Gets level overrides\n * Returns a map of level indices to their override starting values\n */\n getLevelOverrides(): Map<number, number> {\n return new Map(this.levelOverrides);\n }\n\n /**\n * Sets level override for a specific level\n * Overrides the starting value for a particular numbering level\n *\n * @param level The level index (0-based)\n * @param startValue The starting value for this level\n * @returns This instance for method chaining\n */\n setLevelOverride(level: number, startValue: number): this {\n if (level < 0) {\n throw new Error('Level index must be non-negative');\n }\n if (startValue < 0) {\n throw new Error('Start value must be non-negative');\n }\n\n this.levelOverrides.set(level, startValue);\n return this;\n }\n\n /**\n * Clears a level override for a specific level\n *\n * @param level The level index to clear\n * @returns This instance for method chaining\n */\n clearLevelOverride(level: number): this {\n this.levelOverrides.delete(level);\n return this;\n }\n\n /**\n * Gets the override value for a specific level, if set\n *\n * @param level The level index\n * @returns The override starting value, or undefined if not set\n */\n getLevelOverride(level: number): number | undefined {\n return this.levelOverrides.get(level);\n }\n\n /**\n * Sets a full level definition override for a specific level\n * This replaces the entire level definition from the abstract numbering\n * (ECMA-376 §17.9.8 - w:lvlOverride with full w:lvl child)\n *\n * @param level The level index (0-based)\n * @param levelDef The full NumberingLevel definition to use as override\n */\n setFullLevelOverride(level: number, levelDef: NumberingLevel): this {\n if (level < 0) {\n throw new Error('Level index must be non-negative');\n }\n this.fullLevelOverrides.set(level, levelDef);\n return this;\n }\n\n /**\n * Gets a full level definition override for a specific level\n */\n getFullLevelOverride(level: number): NumberingLevel | undefined {\n return this.fullLevelOverrides.get(level);\n }\n\n /**\n * Gets all full level definition overrides\n */\n getFullLevelOverrides(): Map<number, NumberingLevel> {\n return new Map(this.fullLevelOverrides);\n }\n\n /**\n * Clears a full level override\n */\n clearFullLevelOverride(level: number): this {\n this.fullLevelOverrides.delete(level);\n return this;\n }\n\n /**\n * Generates the WordprocessingML XML for this numbering instance\n */\n toXML(): XMLElement {\n const children: XMLElement[] = [];\n\n // Reference to abstract numbering\n children.push(XMLBuilder.wSelf('abstractNumId', { 'w:val': this.abstractNumId.toString() }));\n\n // Add level overrides if any are set\n for (const [level, startValue] of this.levelOverrides) {\n // Skip levels that have a full level override (they take precedence)\n if (this.fullLevelOverrides.has(level)) continue;\n children.push({\n name: 'w:lvlOverride',\n attributes: { 'w:ilvl': level.toString() },\n children: [XMLBuilder.wSelf('startOverride', { 'w:val': startValue.toString() })],\n });\n }\n\n // Add full level overrides\n for (const [level, levelDef] of this.fullLevelOverrides) {\n const overrideChildren: XMLElement[] = [];\n // Include startOverride if also set for this level\n if (this.levelOverrides.has(level)) {\n overrideChildren.push(\n XMLBuilder.wSelf('startOverride', { 'w:val': this.levelOverrides.get(level)!.toString() })\n );\n }\n overrideChildren.push(levelDef.toXML());\n children.push({\n name: 'w:lvlOverride',\n attributes: { 'w:ilvl': level.toString() },\n children: overrideChildren,\n });\n }\n\n return XMLBuilder.w('num', { 'w:numId': this.numId.toString() }, children);\n }\n\n /**\n * Factory method for creating a numbering instance\n * @param propertiesOrNumId The instance properties object, or numId (number)\n * @param abstractNumId The abstract numbering ID (if first param is a number)\n */\n static create(\n propertiesOrNumId: NumberingInstanceProperties | number,\n abstractNumId?: number\n ): NumberingInstance {\n if (typeof propertiesOrNumId === 'number') {\n return new NumberingInstance(propertiesOrNumId, abstractNumId);\n }\n return new NumberingInstance(propertiesOrNumId);\n }\n\n /**\n * Creates a NumberingInstance from XML element\n * @param xml The XML string of the <w:num> element\n * @returns NumberingInstance instance\n */\n static fromXML(xml: string): NumberingInstance {\n // Extract numId (required)\n const numIdMatch = /<w:num[^>]*w:numId=\"([^\"]+)\"/.exec(xml);\n if (!numIdMatch?.[1]) {\n throw new Error('Missing required w:numId attribute');\n }\n const numId = parseInt(numIdMatch[1], 10);\n\n // Extract abstractNumId (required)\n const abstractNumIdMatch = /<w:abstractNumId[^>]*w:val=\"([^\"]+)\"/.exec(xml);\n if (!abstractNumIdMatch?.[1]) {\n throw new Error('Missing required w:abstractNumId element');\n }\n const abstractNumId = parseInt(abstractNumIdMatch[1], 10);\n\n const instance = new NumberingInstance({\n numId,\n abstractNumId,\n });\n\n // Parse level overrides (w:lvlOverride)\n const lvlOverrideRegex = /<w:lvlOverride[^>]*w:ilvl=\"(\\d+)\"[^>]*>([\\s\\S]*?)<\\/w:lvlOverride>/g;\n let match: RegExpExecArray | null;\n while ((match = lvlOverrideRegex.exec(xml)) !== null) {\n const levelStr = match[1]!;\n const content = match[2]!;\n const level = parseInt(levelStr, 10);\n\n // Check for startOverride\n const startOverrideMatch = /<w:startOverride[^>]*w:val=\"([^\"]+)\"/.exec(content);\n if (startOverrideMatch?.[1]) {\n instance.setLevelOverride(level, parseInt(startOverrideMatch[1], 10));\n }\n\n // Check for full w:lvl element\n const lvlMatch = /<w:lvl[^>]*>[\\s\\S]*?<\\/w:lvl>/.exec(content);\n if (lvlMatch) {\n try {\n const levelDef = NumberingLevel.fromXML(lvlMatch[0]);\n instance.setFullLevelOverride(level, levelDef);\n } catch {\n // Skip invalid level definitions\n }\n }\n }\n\n return instance;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { XMLElement } from '../xml/XMLBuilder';
1
+ import { XMLElement } from '../xml/XMLBuilder.js';
2
2
  export declare const WORD_NATIVE_BULLETS: {
3
3
  readonly FILLED_BULLET: {
4
4
  readonly char: "";
@@ -34,6 +34,15 @@ export interface NumberingLevelProperties {
34
34
  underline?: string;
35
35
  lvlRestart?: number;
36
36
  pStyle?: string;
37
+ tentative?: boolean;
38
+ tplc?: string;
39
+ lvlPicBulletId?: number;
40
+ legacy?: LegacyNumbering;
41
+ }
42
+ export interface LegacyNumbering {
43
+ legacy?: boolean;
44
+ legacySpace?: number;
45
+ legacyIndent?: number;
37
46
  }
38
47
  export declare class NumberingLevel {
39
48
  private properties;
@@ -45,7 +54,7 @@ export declare class NumberingLevel {
45
54
  };
46
55
  getLevel(): number;
47
56
  getFormat(): NumberFormat;
48
- getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle'>;
57
+ getProperties(): Required<Omit<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'>> & Pick<NumberingLevelProperties, 'lvlRestart' | 'underline' | 'pStyle' | 'tentative' | 'tplc' | 'lvlPicBulletId' | 'legacy'>;
49
58
  setLeftIndent(twips: number): this;
50
59
  setHangingIndent(twips: number): this;
51
60
  setFont(font: string): this;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberingLevel.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NumberingLevel.d.ts","sourceRoot":"","sources":["../../src/formatting/NumberingLevel.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumberingLevel = exports.WORD_NATIVE_BULLETS = void 0;
4
- const XMLBuilder_1 = require("../xml/XMLBuilder");
4
+ const parsingHelpers_js_1 = require("../utils/parsingHelpers.js");
5
+ const XMLBuilder_js_1 = require("../xml/XMLBuilder.js");
5
6
  exports.WORD_NATIVE_BULLETS = {
6
7
  FILLED_BULLET: { char: '\uF0B7', font: 'Symbol' },
7
8
  OPEN_CIRCLE: { char: '\u006F', font: 'Courier New' },
@@ -28,6 +29,10 @@ class NumberingLevel {
28
29
  underline: properties.underline,
29
30
  lvlRestart: properties.lvlRestart,
30
31
  pStyle: properties.pStyle,
32
+ tentative: properties.tentative,
33
+ tplc: properties.tplc,
34
+ lvlPicBulletId: properties.lvlPicBulletId,
35
+ legacy: properties.legacy,
31
36
  };
32
37
  this.validate();
33
38
  }
@@ -151,54 +156,79 @@ class NumberingLevel {
151
156
  }
152
157
  toXML() {
153
158
  const children = [];
154
- children.push(XMLBuilder_1.XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));
155
- children.push(XMLBuilder_1.XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));
159
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('start', { 'w:val': this.properties.start.toString() }));
160
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('numFmt', { 'w:val': this.properties.format }));
156
161
  if (this.properties.lvlRestart !== undefined) {
157
- children.push(XMLBuilder_1.XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() }));
162
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('lvlRestart', { 'w:val': this.properties.lvlRestart.toString() }));
158
163
  }
159
164
  if (this.properties.pStyle) {
160
- children.push(XMLBuilder_1.XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));
165
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('pStyle', { 'w:val': this.properties.pStyle }));
161
166
  }
162
167
  if (this.properties.isLegalNumberingStyle) {
163
- children.push(XMLBuilder_1.XMLBuilder.wSelf('isLgl'));
168
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('isLgl'));
164
169
  }
165
170
  if (this.properties.suffix) {
166
- children.push(XMLBuilder_1.XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));
171
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('suff', { 'w:val': this.properties.suffix }));
167
172
  }
168
- children.push(XMLBuilder_1.XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));
169
- children.push(XMLBuilder_1.XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));
170
- const ind = XMLBuilder_1.XMLBuilder.wSelf('ind', {
173
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('lvlText', { 'w:val': this.properties.text }));
174
+ if (this.properties.lvlPicBulletId !== undefined) {
175
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('lvlPicBulletId', {
176
+ 'w:val': this.properties.lvlPicBulletId.toString(),
177
+ }));
178
+ }
179
+ if (this.properties.legacy) {
180
+ const legacyAttrs = {};
181
+ if (this.properties.legacy.legacy !== undefined) {
182
+ legacyAttrs['w:legacy'] = this.properties.legacy.legacy ? '1' : '0';
183
+ }
184
+ if (this.properties.legacy.legacySpace !== undefined) {
185
+ legacyAttrs['w:legacySpace'] = this.properties.legacy.legacySpace.toString();
186
+ }
187
+ if (this.properties.legacy.legacyIndent !== undefined) {
188
+ legacyAttrs['w:legacyIndent'] = this.properties.legacy.legacyIndent.toString();
189
+ }
190
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('legacy', legacyAttrs));
191
+ }
192
+ children.push(XMLBuilder_js_1.XMLBuilder.wSelf('lvlJc', { 'w:val': this.properties.alignment }));
193
+ const ind = XMLBuilder_js_1.XMLBuilder.wSelf('ind', {
171
194
  'w:left': this.properties.leftIndent.toString(),
172
195
  'w:hanging': this.properties.hangingIndent.toString(),
173
196
  });
174
- const pPr = XMLBuilder_1.XMLBuilder.w('pPr', undefined, [ind]);
197
+ const pPr = XMLBuilder_js_1.XMLBuilder.w('pPr', undefined, [ind]);
175
198
  children.push(pPr);
176
199
  const rPrChildren = [];
177
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('rFonts', {
200
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('rFonts', {
178
201
  'w:ascii': this.properties.font,
179
202
  'w:hAnsi': this.properties.font,
180
203
  'w:cs': this.properties.font,
181
204
  'w:hint': 'default',
182
205
  }));
183
206
  if (this.properties.bold) {
184
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('b'));
185
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('bCs'));
207
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('b'));
208
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('bCs'));
186
209
  }
187
210
  if (this.properties.italic) {
188
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('i'));
189
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('iCs'));
211
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('i'));
212
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('iCs'));
190
213
  }
191
214
  if (this.properties.color) {
192
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));
215
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('color', { 'w:val': this.properties.color }));
193
216
  }
194
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));
195
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));
217
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('sz', { 'w:val': this.properties.fontSize.toString() }));
218
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('szCs', { 'w:val': this.properties.fontSize.toString() }));
196
219
  if (this.properties.underline) {
197
- rPrChildren.push(XMLBuilder_1.XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));
220
+ rPrChildren.push(XMLBuilder_js_1.XMLBuilder.wSelf('u', { 'w:val': this.properties.underline }));
198
221
  }
199
- const rPr = XMLBuilder_1.XMLBuilder.w('rPr', undefined, rPrChildren);
222
+ const rPr = XMLBuilder_js_1.XMLBuilder.w('rPr', undefined, rPrChildren);
200
223
  children.push(rPr);
201
- return XMLBuilder_1.XMLBuilder.w('lvl', { 'w:ilvl': this.properties.level.toString() }, children);
224
+ const lvlAttrs = { 'w:ilvl': this.properties.level.toString() };
225
+ if (this.properties.tplc) {
226
+ lvlAttrs['w:tplc'] = this.properties.tplc;
227
+ }
228
+ if (this.properties.tentative) {
229
+ lvlAttrs['w:tentative'] = '1';
230
+ }
231
+ return XMLBuilder_js_1.XMLBuilder.w('lvl', lvlAttrs, children);
202
232
  }
203
233
  static getBulletSymbolWithFont(level, style = 'standard') {
204
234
  const bulletSets = {
@@ -447,6 +477,50 @@ class NumberingLevel {
447
477
  throw new Error('Missing required w:ilvl attribute');
448
478
  }
449
479
  const level = parseInt(ilvlMatch[1], 10);
480
+ let tentative;
481
+ let tplc;
482
+ const lvlOpenEnd = xml.indexOf('>');
483
+ if (lvlOpenEnd !== -1) {
484
+ const lvlOpenTag = xml.substring(0, lvlOpenEnd);
485
+ const tentativeMatch = /w:tentative\s*=\s*"([^"]*)"/.exec(lvlOpenTag);
486
+ if (tentativeMatch?.[1] !== undefined) {
487
+ tentative = (0, parsingHelpers_js_1.parseOnOffAttribute)(tentativeMatch[1]);
488
+ }
489
+ const tplcMatch = /w:tplc\s*=\s*"([^"]*)"/.exec(lvlOpenTag);
490
+ if (tplcMatch?.[1]) {
491
+ tplc = tplcMatch[1];
492
+ }
493
+ }
494
+ let lvlPicBulletId;
495
+ const picBulletMatch = /<w:lvlPicBulletId\s[^>]*w:val="([^"]+)"/.exec(xml);
496
+ if (picBulletMatch?.[1] !== undefined) {
497
+ const parsed = parseInt(picBulletMatch[1], 10);
498
+ if (!isNaN(parsed)) {
499
+ lvlPicBulletId = parsed;
500
+ }
501
+ }
502
+ let legacy;
503
+ const legacyMatch = /<w:legacy\b([^>]*)\/?>/.exec(xml);
504
+ if (legacyMatch) {
505
+ const attrs = legacyMatch[1] ?? '';
506
+ legacy = {};
507
+ const legacyValMatch = /\bw:legacy\s*=\s*"([^"]*)"/.exec(attrs);
508
+ if (legacyValMatch?.[1] !== undefined) {
509
+ legacy.legacy = (0, parsingHelpers_js_1.parseOnOffAttribute)(legacyValMatch[1]);
510
+ }
511
+ const spaceMatch = /\bw:legacySpace\s*=\s*"([^"]*)"/.exec(attrs);
512
+ if (spaceMatch?.[1] !== undefined) {
513
+ const parsed = parseInt(spaceMatch[1], 10);
514
+ if (!isNaN(parsed))
515
+ legacy.legacySpace = parsed;
516
+ }
517
+ const indentMatch = /\bw:legacyIndent\s*=\s*"([^"]*)"/.exec(attrs);
518
+ if (indentMatch?.[1] !== undefined) {
519
+ const parsed = parseInt(indentMatch[1], 10);
520
+ if (!isNaN(parsed))
521
+ legacy.legacyIndent = parsed;
522
+ }
523
+ }
450
524
  const numFmtMatch = /<w:numFmt[^>]*w:val="([^"]+)"/.exec(xml);
451
525
  if (!numFmtMatch?.[1]) {
452
526
  throw new Error('Missing required w:numFmt element');
@@ -470,13 +544,20 @@ class NumberingLevel {
470
544
  if (pStyleMatch?.[1]) {
471
545
  pStyle = pStyleMatch[1];
472
546
  }
547
+ let isLegalNumberingStyle;
548
+ const isLglMatch = /<w:isLgl\b([^>]*)\/?>/.exec(xml);
549
+ if (isLglMatch) {
550
+ const attrs = isLglMatch[1] ?? '';
551
+ const valMatch = /w:val\s*=\s*"([^"]*)"/.exec(attrs);
552
+ isLegalNumberingStyle = valMatch?.[1] !== undefined ? (0, parsingHelpers_js_1.parseOnOffAttribute)(valMatch[1]) : true;
553
+ }
473
554
  let leftIndent = 720 + level * 360;
474
555
  let hangingIndent = 360;
475
- const indMatch = /<w:ind[^>]*\/>/.exec(xml);
556
+ const indMatch = /<w:ind\b[^>]*>/.exec(xml);
476
557
  if (indMatch) {
477
558
  const indElement = indMatch[0];
478
- const leftMatch = /w:left="([^"]+)"/.exec(indElement);
479
- const hangingMatch = /w:hanging="([^"]+)"/.exec(indElement);
559
+ const leftMatch = /\bw:start\s*=\s*"([^"]+)"/.exec(indElement) || /\bw:left\s*=\s*"([^"]+)"/.exec(indElement);
560
+ const hangingMatch = /\bw:hanging\s*=\s*"([^"]+)"/.exec(indElement);
480
561
  if (leftMatch?.[1])
481
562
  leftIndent = parseInt(leftMatch[1], 10);
482
563
  if (hangingMatch?.[1])
@@ -519,6 +600,11 @@ class NumberingLevel {
519
600
  color,
520
601
  lvlRestart,
521
602
  pStyle,
603
+ isLegalNumberingStyle,
604
+ tentative,
605
+ tplc,
606
+ lvlPicBulletId,
607
+ legacy,
522
608
  });
523
609
  }
524
610
  }