@syncfusion/ej2-docx 0.0.0-stage → 35.1.40

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 (417) hide show
  1. package/.gitleaksignore +35 -0
  2. package/README.md +68 -2
  3. package/core.js +4 -0
  4. package/dist/ej2-docx.umd.min.js +11 -0
  5. package/dist/ej2-docx.umd.min.js.map +1 -0
  6. package/dist/es6/ej2-docx.es2015.js +66697 -0
  7. package/dist/es6/ej2-docx.es2015.js.map +1 -0
  8. package/dist/es6/ej2-docx.es5.js +77568 -0
  9. package/dist/es6/ej2-docx.es5.js.map +1 -0
  10. package/dist/global/ej2-docx.min.js +11 -0
  11. package/dist/global/ej2-docx.min.js.map +1 -0
  12. package/dist/global/index.d.ts +14 -0
  13. package/features.js +4 -0
  14. package/index.js +4 -0
  15. package/license +10 -0
  16. package/package.json +30 -3
  17. package/src/all.d.ts +50 -0
  18. package/src/all.js +147 -0
  19. package/src/core/compat/base64.d.ts +13 -0
  20. package/src/core/compat/base64.js +90 -0
  21. package/src/core/compat/object-compat.d.ts +30 -0
  22. package/src/core/compat/object-compat.js +40 -0
  23. package/src/core/compat/sha256.d.ts +9 -0
  24. package/src/core/compat/sha256.js +98 -0
  25. package/src/core/errors/docx-error.d.ts +89 -0
  26. package/src/core/errors/docx-error.js +138 -0
  27. package/src/core/errors/error-codes.d.ts +8 -0
  28. package/src/core/errors/error-codes.js +0 -0
  29. package/src/core/errors/index.d.ts +10 -0
  30. package/src/core/errors/index.js +9 -0
  31. package/src/core/index.d.ts +12 -0
  32. package/src/core/index.js +12 -0
  33. package/src/core/mc/alternate-content.d.ts +7 -0
  34. package/src/core/mc/alternate-content.js +67 -0
  35. package/src/core/mc/attributes.d.ts +24 -0
  36. package/src/core/mc/attributes.js +82 -0
  37. package/src/core/mc/index.d.ts +7 -0
  38. package/src/core/mc/index.js +5 -0
  39. package/src/core/mc/inspect.d.ts +16 -0
  40. package/src/core/mc/inspect.js +148 -0
  41. package/src/core/mc/namespaces.d.ts +4 -0
  42. package/src/core/mc/namespaces.js +4 -0
  43. package/src/core/mc/scope.d.ts +6 -0
  44. package/src/core/mc/scope.js +47 -0
  45. package/src/core/opc/content-types.d.ts +34 -0
  46. package/src/core/opc/content-types.js +162 -0
  47. package/src/core/opc/index.d.ts +8 -0
  48. package/src/core/opc/index.js +4 -0
  49. package/src/core/opc/package.d.ts +49 -0
  50. package/src/core/opc/package.js +324 -0
  51. package/src/core/opc/part-name.d.ts +47 -0
  52. package/src/core/opc/part-name.js +205 -0
  53. package/src/core/opc/relationships.d.ts +46 -0
  54. package/src/core/opc/relationships.js +212 -0
  55. package/src/core/preservation/index.d.ts +2 -0
  56. package/src/core/preservation/index.js +1 -0
  57. package/src/core/preservation/opaque-body.d.ts +16 -0
  58. package/src/core/preservation/opaque-body.js +69 -0
  59. package/src/core/registry/block-handlers.d.ts +30 -0
  60. package/src/core/registry/block-handlers.js +36 -0
  61. package/src/core/registry/create-defaults.d.ts +39 -0
  62. package/src/core/registry/create-defaults.js +42 -0
  63. package/src/core/registry/feature-registry.d.ts +20 -0
  64. package/src/core/registry/feature-registry.js +29 -0
  65. package/src/core/registry/index.d.ts +9 -0
  66. package/src/core/registry/index.js +8 -0
  67. package/src/core/registry/inline-handlers.d.ts +20 -0
  68. package/src/core/registry/inline-handlers.js +30 -0
  69. package/src/core/registry/materialize-handlers.d.ts +35 -0
  70. package/src/core/registry/materialize-handlers.js +75 -0
  71. package/src/core/registry/multi-part-handlers.d.ts +37 -0
  72. package/src/core/registry/multi-part-handlers.js +206 -0
  73. package/src/core/registry/package-part-handlers.d.ts +28 -0
  74. package/src/core/registry/package-part-handlers.js +190 -0
  75. package/src/core/registry/part-handlers.d.ts +24 -0
  76. package/src/core/registry/part-handlers.js +172 -0
  77. package/src/core/registry/run-leaf-handlers.d.ts +26 -0
  78. package/src/core/registry/run-leaf-handlers.js +72 -0
  79. package/src/core/security/limits.d.ts +40 -0
  80. package/src/core/security/limits.js +26 -0
  81. package/src/core/xml/index.d.ts +7 -0
  82. package/src/core/xml/index.js +3 -0
  83. package/src/core/xml/model.d.ts +66 -0
  84. package/src/core/xml/model.js +17 -0
  85. package/src/core/xml/parse.d.ts +12 -0
  86. package/src/core/xml/parse.js +382 -0
  87. package/src/core/xml/serialize.d.ts +6 -0
  88. package/src/core/xml/serialize.js +93 -0
  89. package/src/core/zip/crc32.d.ts +2 -0
  90. package/src/core/zip/crc32.js +25 -0
  91. package/src/core/zip/deflate.d.ts +6 -0
  92. package/src/core/zip/deflate.js +6 -0
  93. package/src/core/zip/index.d.ts +10 -0
  94. package/src/core/zip/index.js +4 -0
  95. package/src/core/zip/inflate-raw.d.ts +17 -0
  96. package/src/core/zip/inflate-raw.js +450 -0
  97. package/src/core/zip/names.d.ts +6 -0
  98. package/src/core/zip/names.js +52 -0
  99. package/src/core/zip/read.d.ts +8 -0
  100. package/src/core/zip/read.js +262 -0
  101. package/src/core/zip/write.d.ts +7 -0
  102. package/src/core/zip/write.js +189 -0
  103. package/src/core/zip/zip-entry.d.ts +4 -0
  104. package/src/core/zip/zip-entry.js +0 -0
  105. package/src/features/bibliography/index.d.ts +100 -0
  106. package/src/features/bibliography/index.js +290 -0
  107. package/src/features/bookmarks/index.d.ts +331 -0
  108. package/src/features/bookmarks/index.js +1009 -0
  109. package/src/features/comments/comment-extensions.d.ts +157 -0
  110. package/src/features/comments/comment-extensions.js +356 -0
  111. package/src/features/comments/index.d.ts +579 -0
  112. package/src/features/comments/index.js +1727 -0
  113. package/src/features/content-controls/index.d.ts +821 -0
  114. package/src/features/content-controls/index.js +2857 -0
  115. package/src/features/custom-xml/index.d.ts +236 -0
  116. package/src/features/custom-xml/index.js +661 -0
  117. package/src/features/document/alignment.d.ts +23 -0
  118. package/src/features/document/alignment.js +36 -0
  119. package/src/features/document/alt-chunk.d.ts +103 -0
  120. package/src/features/document/alt-chunk.js +221 -0
  121. package/src/features/document/assert-never.d.ts +1 -0
  122. package/src/features/document/assert-never.js +4 -0
  123. package/src/features/document/augmentations.d.ts +578 -0
  124. package/src/features/document/augmentations.js +0 -0
  125. package/src/features/document/body-always-on.d.ts +36 -0
  126. package/src/features/document/body-always-on.js +66 -0
  127. package/src/features/document/body-blocks.d.ts +7 -0
  128. package/src/features/document/body-blocks.js +78 -0
  129. package/src/features/document/body-item-adapters.d.ts +62 -0
  130. package/src/features/document/body-item-adapters.js +97 -0
  131. package/src/features/document/body-item-collection.d.ts +151 -0
  132. package/src/features/document/body-item-collection.js +440 -0
  133. package/src/features/document/body-item.d.ts +35 -0
  134. package/src/features/document/body-item.js +8 -0
  135. package/src/features/document/body.d.ts +150 -0
  136. package/src/features/document/body.js +263 -0
  137. package/src/features/document/character-format.d.ts +413 -0
  138. package/src/features/document/character-format.js +2054 -0
  139. package/src/features/document/color.d.ts +178 -0
  140. package/src/features/document/color.js +495 -0
  141. package/src/features/document/document.d.ts +410 -0
  142. package/src/features/document/document.js +1049 -0
  143. package/src/features/document/element-type.d.ts +68 -0
  144. package/src/features/document/element-type.js +133 -0
  145. package/src/features/document/entity-type.d.ts +92 -0
  146. package/src/features/document/entity-type.js +93 -0
  147. package/src/features/document/feature-block.d.ts +16 -0
  148. package/src/features/document/feature-block.js +0 -0
  149. package/src/features/document/feature-inline.d.ts +13 -0
  150. package/src/features/document/feature-inline.js +0 -0
  151. package/src/features/document/feature-multi-package-part.d.ts +19 -0
  152. package/src/features/document/feature-multi-package-part.js +8 -0
  153. package/src/features/document/feature-package-level-part.d.ts +18 -0
  154. package/src/features/document/feature-package-level-part.js +8 -0
  155. package/src/features/document/feature-package-part.d.ts +14 -0
  156. package/src/features/document/feature-package-part.js +0 -0
  157. package/src/features/document/feature-run-leaf.d.ts +9 -0
  158. package/src/features/document/feature-run-leaf.js +0 -0
  159. package/src/features/document/headers-footers.d.ts +206 -0
  160. package/src/features/document/headers-footers.js +384 -0
  161. package/src/features/document/index.d.ts +41 -0
  162. package/src/features/document/index.js +34 -0
  163. package/src/features/document/length.d.ts +152 -0
  164. package/src/features/document/length.js +245 -0
  165. package/src/features/document/load-options.d.ts +14 -0
  166. package/src/features/document/load-options.js +0 -0
  167. package/src/features/document/locale-ids.d.ts +227 -0
  168. package/src/features/document/locale-ids.js +485 -0
  169. package/src/features/document/on-off.d.ts +9 -0
  170. package/src/features/document/on-off.js +27 -0
  171. package/src/features/document/page-setup.d.ts +339 -0
  172. package/src/features/document/page-setup.js +244 -0
  173. package/src/features/document/paragraph-format.d.ts +880 -0
  174. package/src/features/document/paragraph-format.js +2807 -0
  175. package/src/features/document/paragraph-item-collection.d.ts +162 -0
  176. package/src/features/document/paragraph-item-collection.js +363 -0
  177. package/src/features/document/paragraph-item.d.ts +83 -0
  178. package/src/features/document/paragraph-item.js +103 -0
  179. package/src/features/document/paragraph.d.ts +435 -0
  180. package/src/features/document/paragraph.js +888 -0
  181. package/src/features/document/run.d.ts +1 -0
  182. package/src/features/document/run.js +768 -0
  183. package/src/features/document/section-partition-flatten.d.ts +124 -0
  184. package/src/features/document/section-partition-flatten.js +217 -0
  185. package/src/features/document/section-properties-model.d.ts +13 -0
  186. package/src/features/document/section-properties-model.js +0 -0
  187. package/src/features/document/section.d.ts +93 -0
  188. package/src/features/document/section.js +178 -0
  189. package/src/features/document/sections.d.ts +103 -0
  190. package/src/features/document/sections.js +217 -0
  191. package/src/features/document/sub-super-script.d.ts +23 -0
  192. package/src/features/document/sub-super-script.js +43 -0
  193. package/src/features/document/text-range.d.ts +445 -0
  194. package/src/features/document/text-range.js +1156 -0
  195. package/src/features/document/typed-body-collections.d.ts +162 -0
  196. package/src/features/document/typed-body-collections.js +371 -0
  197. package/src/features/document/underline-style.d.ts +38 -0
  198. package/src/features/document/underline-style.js +126 -0
  199. package/src/features/document/units.d.ts +8 -0
  200. package/src/features/document/units.js +7 -0
  201. package/src/features/document/wml.d.ts +16 -0
  202. package/src/features/document/wml.js +67 -0
  203. package/src/features/drawing/authoring.d.ts +27 -0
  204. package/src/features/drawing/authoring.js +271 -0
  205. package/src/features/drawing/body-pr.d.ts +271 -0
  206. package/src/features/drawing/body-pr.js +663 -0
  207. package/src/features/drawing/drawing-shape.d.ts +1192 -0
  208. package/src/features/drawing/drawing-shape.js +3239 -0
  209. package/src/features/drawing/encode-builders.d.ts +176 -0
  210. package/src/features/drawing/encode-builders.js +390 -0
  211. package/src/features/drawing/fill-format.d.ts +52 -0
  212. package/src/features/drawing/fill-format.js +124 -0
  213. package/src/features/drawing/host-codec.d.ts +632 -0
  214. package/src/features/drawing/host-codec.js +2595 -0
  215. package/src/features/drawing/index.d.ts +13 -0
  216. package/src/features/drawing/index.js +33 -0
  217. package/src/features/drawing/line-format.d.ts +76 -0
  218. package/src/features/drawing/line-format.js +343 -0
  219. package/src/features/drawing/parse-register.d.ts +50 -0
  220. package/src/features/drawing/parse-register.js +257 -0
  221. package/src/features/drawing/residual-utils.d.ts +47 -0
  222. package/src/features/drawing/residual-utils.js +290 -0
  223. package/src/features/drawing/shape-types.d.ts +433 -0
  224. package/src/features/drawing/shape-types.js +437 -0
  225. package/src/features/drawing/sp-pr.d.ts +396 -0
  226. package/src/features/drawing/sp-pr.js +610 -0
  227. package/src/features/drawing/text-frame.d.ts +90 -0
  228. package/src/features/drawing/text-frame.js +152 -0
  229. package/src/features/drawing/types.d.ts +352 -0
  230. package/src/features/drawing/types.js +60 -0
  231. package/src/features/drawing/wrap-format.d.ts +62 -0
  232. package/src/features/drawing/wrap-format.js +114 -0
  233. package/src/features/editable-ranges/index.d.ts +494 -0
  234. package/src/features/editable-ranges/index.js +1348 -0
  235. package/src/features/fields/index.d.ts +428 -0
  236. package/src/features/fields/index.js +2148 -0
  237. package/src/features/fields/paragraph-field.d.ts +187 -0
  238. package/src/features/fields/paragraph-field.js +692 -0
  239. package/src/features/font-table/font-substitution-table.d.ts +75 -0
  240. package/src/features/font-table/font-substitution-table.js +257 -0
  241. package/src/features/font-table/font-table-entry.d.ts +255 -0
  242. package/src/features/font-table/font-table-entry.js +823 -0
  243. package/src/features/font-table/font-table.d.ts +128 -0
  244. package/src/features/font-table/font-table.js +313 -0
  245. package/src/features/font-table/index.d.ts +27 -0
  246. package/src/features/font-table/index.js +48 -0
  247. package/src/features/glossary/index.d.ts +97 -0
  248. package/src/features/glossary/index.js +286 -0
  249. package/src/features/headers-footers/index.d.ts +506 -0
  250. package/src/features/headers-footers/index.js +1666 -0
  251. package/src/features/hyperlinks/index.d.ts +230 -0
  252. package/src/features/hyperlinks/index.js +685 -0
  253. package/src/features/images/caption-authoring-api.d.ts +33 -0
  254. package/src/features/images/caption-authoring-api.js +33 -0
  255. package/src/features/images/caption-enums.d.ts +52 -0
  256. package/src/features/images/caption-enums.js +141 -0
  257. package/src/features/images/caption-host.d.ts +10 -0
  258. package/src/features/images/caption-host.js +21 -0
  259. package/src/features/images/captions.d.ts +13 -0
  260. package/src/features/images/captions.js +142 -0
  261. package/src/features/images/host-codec.d.ts +103 -0
  262. package/src/features/images/host-codec.js +720 -0
  263. package/src/features/images/image-sniff.d.ts +21 -0
  264. package/src/features/images/image-sniff.js +71 -0
  265. package/src/features/images/index.d.ts +506 -0
  266. package/src/features/images/index.js +1429 -0
  267. package/src/features/images/layout-types.d.ts +232 -0
  268. package/src/features/images/layout-types.js +294 -0
  269. package/src/features/images/public-entry.d.ts +9 -0
  270. package/src/features/images/public-entry.js +9 -0
  271. package/src/features/index.d.ts +35 -0
  272. package/src/features/index.js +36 -0
  273. package/src/features/mail-merge/index.d.ts +113 -0
  274. package/src/features/mail-merge/index.js +315 -0
  275. package/src/features/notes/index.d.ts +573 -0
  276. package/src/features/notes/index.js +1725 -0
  277. package/src/features/numbering/abstract-numbering.d.ts +90 -0
  278. package/src/features/numbering/abstract-numbering.js +292 -0
  279. package/src/features/numbering/index.d.ts +182 -0
  280. package/src/features/numbering/index.js +668 -0
  281. package/src/features/numbering/list-format.d.ts +158 -0
  282. package/src/features/numbering/list-format.js +590 -0
  283. package/src/features/numbering/list-string.d.ts +7 -0
  284. package/src/features/numbering/list-string.js +423 -0
  285. package/src/features/numbering/list-style.d.ts +204 -0
  286. package/src/features/numbering/list-style.js +1084 -0
  287. package/src/features/numbering/numbering-instance.d.ts +101 -0
  288. package/src/features/numbering/numbering-instance.js +329 -0
  289. package/src/features/numbering/numbering-level.d.ts +118 -0
  290. package/src/features/numbering/numbering-level.js +501 -0
  291. package/src/features/numbering/picture-bullet.d.ts +34 -0
  292. package/src/features/numbering/picture-bullet.js +88 -0
  293. package/src/features/ole-object/catalog.d.ts +300 -0
  294. package/src/features/ole-object/catalog.js +908 -0
  295. package/src/features/ole-object/index.d.ts +526 -0
  296. package/src/features/ole-object/index.js +1421 -0
  297. package/src/features/ole-object/relationship.d.ts +27 -0
  298. package/src/features/ole-object/relationship.js +27 -0
  299. package/src/features/ole-object/typed-dom.d.ts +186 -0
  300. package/src/features/ole-object/typed-dom.js +595 -0
  301. package/src/features/properties/index.d.ts +205 -0
  302. package/src/features/properties/index.js +549 -0
  303. package/src/features/revisions/index.d.ts +204 -0
  304. package/src/features/revisions/index.js +695 -0
  305. package/src/features/sections/column-collection.d.ts +119 -0
  306. package/src/features/sections/column-collection.js +478 -0
  307. package/src/features/sections/column.d.ts +15 -0
  308. package/src/features/sections/column.js +37 -0
  309. package/src/features/sections/index.d.ts +91 -0
  310. package/src/features/sections/index.js +1096 -0
  311. package/src/features/sections/margins.d.ts +40 -0
  312. package/src/features/sections/margins.js +105 -0
  313. package/src/features/sections/page-number-style.d.ts +21 -0
  314. package/src/features/sections/page-number-style.js +62 -0
  315. package/src/features/sections/page-orientation.d.ts +10 -0
  316. package/src/features/sections/page-orientation.js +10 -0
  317. package/src/features/sections/page-setup.d.ts +435 -0
  318. package/src/features/sections/page-setup.js +1479 -0
  319. package/src/features/sections/page-size.d.ts +59 -0
  320. package/src/features/sections/page-size.js +68 -0
  321. package/src/features/sections/section-break-code.d.ts +27 -0
  322. package/src/features/sections/section-break-code.js +60 -0
  323. package/src/features/sections/section-document-association.d.ts +18 -0
  324. package/src/features/sections/section-document-association.js +31 -0
  325. package/src/features/sections/section-validation.d.ts +43 -0
  326. package/src/features/sections/section-validation.js +97 -0
  327. package/src/features/settings/attached-template.d.ts +35 -0
  328. package/src/features/settings/attached-template.js +98 -0
  329. package/src/features/settings/compat-settings.d.ts +216 -0
  330. package/src/features/settings/compat-settings.js +508 -0
  331. package/src/features/settings/document-background.d.ts +59 -0
  332. package/src/features/settings/document-background.js +131 -0
  333. package/src/features/settings/document-protection.d.ts +65 -0
  334. package/src/features/settings/document-protection.js +157 -0
  335. package/src/features/settings/document-settings-facades.d.ts +108 -0
  336. package/src/features/settings/document-settings-facades.js +312 -0
  337. package/src/features/settings/document-settings-values.d.ts +43 -0
  338. package/src/features/settings/document-settings-values.js +60 -0
  339. package/src/features/settings/footnote-properties.d.ts +211 -0
  340. package/src/features/settings/footnote-properties.js +591 -0
  341. package/src/features/settings/index.d.ts +356 -0
  342. package/src/features/settings/index.js +829 -0
  343. package/src/features/settings/settings-children.d.ts +151 -0
  344. package/src/features/settings/settings-children.js +505 -0
  345. package/src/features/settings/web-settings.d.ts +88 -0
  346. package/src/features/settings/web-settings.js +227 -0
  347. package/src/features/settings/zoom.d.ts +79 -0
  348. package/src/features/settings/zoom.js +147 -0
  349. package/src/features/styles/builtin-catalog.d.ts +159 -0
  350. package/src/features/styles/builtin-catalog.js +963 -0
  351. package/src/features/styles/builtin-resolver.d.ts +49 -0
  352. package/src/features/styles/builtin-resolver.js +165 -0
  353. package/src/features/styles/default-styles.d.ts +37 -0
  354. package/src/features/styles/default-styles.js +186 -0
  355. package/src/features/styles/default-theme.d.ts +13 -0
  356. package/src/features/styles/default-theme.js +13 -0
  357. package/src/features/styles/doc-defaults.d.ts +58 -0
  358. package/src/features/styles/doc-defaults.js +178 -0
  359. package/src/features/styles/formatting-resolver.d.ts +27 -0
  360. package/src/features/styles/formatting-resolver.js +72 -0
  361. package/src/features/styles/index.d.ts +256 -0
  362. package/src/features/styles/index.js +1325 -0
  363. package/src/features/styles/latent-styles.d.ts +68 -0
  364. package/src/features/styles/latent-styles.js +305 -0
  365. package/src/features/styles/paragraph-properties.d.ts +71 -0
  366. package/src/features/styles/paragraph-properties.js +237 -0
  367. package/src/features/styles/run-properties.d.ts +93 -0
  368. package/src/features/styles/run-properties.js +516 -0
  369. package/src/features/styles/style-base.d.ts +402 -0
  370. package/src/features/styles/style-base.js +1026 -0
  371. package/src/features/styles/style-collection.d.ts +264 -0
  372. package/src/features/styles/style-collection.js +714 -0
  373. package/src/features/styles/style-format-bridge.d.ts +64 -0
  374. package/src/features/styles/style-format-bridge.js +100 -0
  375. package/src/features/styles/style.d.ts +84 -0
  376. package/src/features/styles/style.js +375 -0
  377. package/src/features/styles/styles-with-effects.d.ts +71 -0
  378. package/src/features/styles/styles-with-effects.js +180 -0
  379. package/src/features/styles/table-style.d.ts +272 -0
  380. package/src/features/styles/table-style.js +1226 -0
  381. package/src/features/styles/theme.d.ts +126 -0
  382. package/src/features/styles/theme.js +377 -0
  383. package/src/features/tables/border-style-map.d.ts +24 -0
  384. package/src/features/tables/border-style-map.js +81 -0
  385. package/src/features/tables/borders.d.ts +126 -0
  386. package/src/features/tables/borders.js +527 -0
  387. package/src/features/tables/collections.d.ts +113 -0
  388. package/src/features/tables/collections.js +261 -0
  389. package/src/features/tables/format.d.ts +208 -0
  390. package/src/features/tables/format.js +716 -0
  391. package/src/features/tables/index.d.ts +597 -0
  392. package/src/features/tables/index.js +2386 -0
  393. package/src/features/tables/paddings.d.ts +41 -0
  394. package/src/features/tables/paddings.js +97 -0
  395. package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
  396. package/src/features/tables/tbl-pr-positioning.js +178 -0
  397. package/src/features/tables/tbl-pr.d.ts +528 -0
  398. package/src/features/tables/tbl-pr.js +1208 -0
  399. package/src/features/tables/tc-pr.d.ts +168 -0
  400. package/src/features/tables/tc-pr.js +553 -0
  401. package/src/features/tables/tr-pr.d.ts +60 -0
  402. package/src/features/tables/tr-pr.js +215 -0
  403. package/src/features/watermark/detect.d.ts +76 -0
  404. package/src/features/watermark/detect.js +219 -0
  405. package/src/features/watermark/index.d.ts +28 -0
  406. package/src/features/watermark/index.js +91 -0
  407. package/src/features/watermark/logical-store.d.ts +29 -0
  408. package/src/features/watermark/logical-store.js +31 -0
  409. package/src/features/watermark/model.d.ts +285 -0
  410. package/src/features/watermark/model.js +597 -0
  411. package/src/features/watermark/parse.d.ts +84 -0
  412. package/src/features/watermark/parse.js +815 -0
  413. package/src/features/watermark/serialize.d.ts +98 -0
  414. package/src/features/watermark/serialize.js +1517 -0
  415. package/src/global.js +1 -0
  416. package/src/index.d.ts +2 -0
  417. package/src/index.js +2 -0
@@ -0,0 +1,768 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
7
+ t[p[i]] = s[p[i]];
8
+ return t;
9
+ };
10
+ var __values = (this && this.__values) || function (o) {
11
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
12
+ if (m) return m.call(o);
13
+ return {
14
+ next: function () {
15
+ if (o && i >= o.length) o = void 0;
16
+ return { value: o && o[i++], done: !o };
17
+ }
18
+ };
19
+ };
20
+ import { DetachedObjectError, DocxError, SecurityError } from '../../core/errors/docx-error';
21
+ import { serializeFeatureRunLeaf, tryParseFeatureRunLeaf, } from '../../core/registry/run-leaf-handlers';
22
+ import { DEFAULT_RESOURCE_LIMITS } from '../../core/security/limits';
23
+ import { assertNever } from './assert-never';
24
+ import { CharacterFormat, parseCharacterFormat, } from './character-format';
25
+ import { elementChildren, isWml, textContent, wmlAttr, wmlElement, xmlSpaceIsPreserve, xmlSpacePreserve, } from './wml';
26
+ // ---------------------------------------------------------------------------
27
+ // Break leaf — ECMA-376-1 §17.3.3.1–2; CT_Br / ST_BrType / ST_BrClear
28
+ // ---------------------------------------------------------------------------
29
+ /**
30
+ * Break kind for `w:br` (`ST_BrType` plus the Line default).
31
+ *
32
+ * OOXML has no `@w:type="line"` value: a line break is a bare `w:br` (type omitted).
33
+ * Text-wrapping breaks use `@w:type="textWrapping"` and are modeled as
34
+ * {@link BreakType.TextWrappingBreak} (preferred) or as {@link BreakType.Line}
35
+ * with a non-{@link BreakClearType.None} clear (compat authoring form).
36
+ *
37
+ * Citation: ECMA-376-1 §17.3.3.1–2; transitional `wml.xsd` `CT_Br` / `ST_BrType`.
38
+ *
39
+ * @public
40
+ */
41
+ var BreakType = {
42
+ /**
43
+ * Page break.
44
+ *
45
+ * Maps to `w:br` with `@w:type="page"`. Ends the current page and continues
46
+ * on the next page of the same section.
47
+ */
48
+ Page: 'page',
49
+ /**
50
+ * Column break.
51
+ *
52
+ * Maps to `w:br` with `@w:type="column"`. Ends the current column and continues
53
+ * in the next column of a multi-column section.
54
+ */
55
+ Column: 'column',
56
+ /**
57
+ * Line break (Shift+Enter / soft break).
58
+ *
59
+ * Maps to a bare `w:br` with `@w:type` omitted (there is no `ST_BrType` value
60
+ * `"line"`). When authored with a non-{@link BreakClearType.None} clear, the
61
+ * library emits `@w:type="textWrapping"` plus `@w:clear` for compatibility
62
+ * with the older Line+clear form.
63
+ */
64
+ Line: 'line',
65
+ /**
66
+ * Text-wrapping break.
67
+ *
68
+ * Maps to `w:br` with `@w:type="textWrapping"`. Optional
69
+ * {@link BreakClearType} (default {@link BreakClearType.None}) maps to
70
+ * `@w:clear` and controls which side of floating content the break clears.
71
+ */
72
+ TextWrappingBreak: 'textWrapping',
73
+ };
74
+ /**
75
+ * Text-wrapping clear for a line or text-wrapping break (`ST_BrClear`).
76
+ *
77
+ * Valid with {@link BreakType.TextWrappingBreak} or {@link BreakType.Line}.
78
+ * Default for {@link Run.appendBreak} / {@link Run.insertBreakAt} is
79
+ * {@link BreakClearType.None}. Non-`None` values on {@link BreakType.Page} or
80
+ * {@link BreakType.Column} throw {@link DocxError} `content/invalid-break`.
81
+ *
82
+ * Citation: ECMA-376-1 §17.3.3.2; transitional `wml.xsd` `ST_BrClear`.
83
+ *
84
+ * @public
85
+ */
86
+ var BreakClearType = {
87
+ /**
88
+ * No clear (`ST_BrClear` `none`).
89
+ *
90
+ * Default. Does not emit `@w:clear` on write. On load, absent `@w:clear` and
91
+ * `@w:clear="none"` both surface as this value.
92
+ */
93
+ None: 'none',
94
+ /**
95
+ * Clear left (`@w:clear="left"`).
96
+ *
97
+ * Restart text after floating objects on the left.
98
+ */
99
+ Left: 'left',
100
+ /**
101
+ * Clear right (`@w:clear="right"`).
102
+ *
103
+ * Restart text after floating objects on the right.
104
+ */
105
+ Right: 'right',
106
+ /**
107
+ * Clear all (`@w:clear="all"`).
108
+ *
109
+ * Restart text after floating objects on both sides.
110
+ */
111
+ All: 'all',
112
+ };
113
+ function needsXmlSpacePreserve(text) {
114
+ return text.startsWith(' ') || text.endsWith(' ') || text.includes(' ') || text.includes('\n');
115
+ }
116
+ /**
117
+ * WordprocessingML run (`w:r`).
118
+ *
119
+ * Character formatting lives on {@link Run.characterFormat} only
120
+ * (`docs/specs/run-character-format.md` Rev 2 / TASK-9019).
121
+ *
122
+ * @public
123
+ */
124
+ var Run = /** @class */ (function () {
125
+ /**
126
+ * @private
127
+ */
128
+ function Run(owner) {
129
+ this.owner = owner;
130
+ this.extraAttributes = [];
131
+ this.leaves = [];
132
+ }
133
+ Object.defineProperty(Run.prototype, "characterFormat", {
134
+ /**
135
+ * Character formatting for this run (`w:rPr`). Lazily constructed; never null.
136
+ * @public
137
+ */
138
+ get: function () {
139
+ if (this.characterFormatField === undefined) {
140
+ this.characterFormatField = new CharacterFormat(this);
141
+ }
142
+ return this.characterFormatField;
143
+ },
144
+ enumerable: true,
145
+ configurable: true
146
+ });
147
+ /**
148
+ * @private
149
+ */
150
+ Run.prototype.notifyCharacterFormatMutation = function () {
151
+ this.mutate();
152
+ };
153
+ /**
154
+ * @private
155
+ */
156
+ Run.prototype.detach = function () {
157
+ this.owner = undefined;
158
+ };
159
+ /**
160
+ * @private
161
+ */
162
+ Run.prototype.attach = function (owner) {
163
+ this.owner = owner;
164
+ };
165
+ Run.prototype.mutate = function () {
166
+ if (this.owner === undefined) {
167
+ throw new DetachedObjectError('This run is no longer in a document');
168
+ }
169
+ this.owner.assertAttached(this);
170
+ };
171
+ Object.defineProperty(Run.prototype, "items", {
172
+ /** Text, tab, break, symbol, feature, and opaque leaves in order. */
173
+ get: function () {
174
+ return this.leaves;
175
+ },
176
+ enumerable: true,
177
+ configurable: true
178
+ });
179
+ /**
180
+ * @private
181
+ * Replace inner content; used by feature modules. */
182
+ Run.prototype.setLeaves = function (leaves) {
183
+ this.mutate();
184
+ this.leaves = leaves;
185
+ };
186
+ /**
187
+ * Append a symbol character (`w:sym`) to this run.
188
+ *
189
+ * @param font - Symbol font name (`w:font`), for example `"Wingdings"`.
190
+ * @param char - `ST_ShortHexNumber` hex digits for `w:char` (four hex digits, e.g. `"F0FC"`).
191
+ * @returns This run for chaining.
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * const run = paragraph.appendRun();
196
+ * run.appendSymbol('Wingdings', 'F0FC');
197
+ * ```
198
+ *
199
+ * @public
200
+ */
201
+ Run.prototype.appendSymbol = function (font, char) {
202
+ this.mutate();
203
+ this.leaves.push({ type: 'sym', font: font, char: char });
204
+ return this;
205
+ };
206
+ /**
207
+ * Append a break (`w:br`) to this run.
208
+ *
209
+ * Mapping (ECMA-376-1 §17.3.3.1–2; `ST_BrType` has no `"line"` value):
210
+ * - {@link BreakType.Page} → `@w:type="page"`
211
+ * - {@link BreakType.Column} → `@w:type="column"`
212
+ * - {@link BreakType.Line} with {@link BreakClearType.None} → bare `<w:br/>` (type omitted)
213
+ * - {@link BreakType.Line} with non-`None` clear → `@w:type="textWrapping"` + `@w:clear` (compat)
214
+ * - {@link BreakType.TextWrappingBreak} → `@w:type="textWrapping"` (+ `@w:clear` when not `None`)
215
+ *
216
+ * @param type - Break kind.
217
+ * @param clear - Text-wrapping clear; default {@link BreakClearType.None}.
218
+ * Only meaningful for Line / TextWrappingBreak.
219
+ * @returns The break leaf view (not `this`).
220
+ * @throws {@link DocxError} `content/invalid-break` if a non-`None` clear is set on Page or Column.
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * run.appendBreak(BreakType.Page);
225
+ * run.appendBreak(BreakType.TextWrappingBreak, BreakClearType.All);
226
+ * run.appendBreak(BreakType.Line, BreakClearType.All); // compat form
227
+ * ```
228
+ *
229
+ * @public
230
+ */
231
+ Run.prototype.appendBreak = function (type, clear) {
232
+ if (clear === void 0) { clear = BreakClearType.None; }
233
+ this.mutate();
234
+ var leaf = createBreakLeaf(type, clear);
235
+ this.leaves.push(leaf);
236
+ return toBreakLeafView(leaf);
237
+ };
238
+ /**
239
+ * Insert a break (`w:br`) at a leaf index in this run.
240
+ *
241
+ * Index is the position in {@link Run.items} (`0…content.length` inclusive).
242
+ *
243
+ * @param index - Leaf index at which to insert.
244
+ * @param type - Break kind.
245
+ * @param clear - Text-wrapping clear; default {@link BreakClearType.None}.
246
+ * Only meaningful for Line / TextWrappingBreak.
247
+ * @returns The break leaf view.
248
+ * @throws RangeError if `index` is out of range.
249
+ * @throws {@link DocxError} `content/invalid-break` if a non-`None` clear is set on Page or Column.
250
+ *
251
+ * @public
252
+ */
253
+ Run.prototype.insertBreakAt = function (index, type, clear) {
254
+ if (clear === void 0) { clear = BreakClearType.None; }
255
+ this.mutate();
256
+ if (index < 0 || index > this.leaves.length) {
257
+ throw new RangeError("Break leaf index " + String(index) + " is out of range");
258
+ }
259
+ var leaf = createBreakLeaf(type, clear);
260
+ this.leaves.splice(index, 0, leaf);
261
+ return toBreakLeafView(leaf);
262
+ };
263
+ Object.defineProperty(Run.prototype, "text", {
264
+ /**
265
+ * Concatenated `w:t` text. Setter replaces all run leaves with a single text leaf.
266
+ */
267
+ get: function () {
268
+ var e_1, _a;
269
+ var out = '';
270
+ try {
271
+ for (var _b = __values(this.leaves), _c = _b.next(); !_c.done; _c = _b.next()) {
272
+ var leaf = _c.value;
273
+ if (leaf.type === 'text') {
274
+ out += leaf.text;
275
+ }
276
+ }
277
+ }
278
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
279
+ finally {
280
+ try {
281
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
282
+ }
283
+ finally { if (e_1) throw e_1.error; }
284
+ }
285
+ return out;
286
+ },
287
+ set: function (value) {
288
+ this.mutate();
289
+ if (value.length > DEFAULT_RESOURCE_LIMITS.textNodeLength) {
290
+ throw new SecurityError('security/limit-exceeded', 'w:t exceeds the text node length limit');
291
+ }
292
+ this.leaves = [{ type: 'text', text: value, xmlSpacePreserve: needsXmlSpacePreserve(value) }];
293
+ },
294
+ enumerable: true,
295
+ configurable: true
296
+ });
297
+ /**
298
+ * @private
299
+ * Advanced hatch: `w:r` tree. Unstable; prefer semantic properties.
300
+ */
301
+ Run.prototype.toOpenXml = function () {
302
+ return serializeRun(this);
303
+ };
304
+ /**
305
+ * @private
306
+ */
307
+ Run.fromXml = function (el, owner) {
308
+ return parseRun(el, owner);
309
+ };
310
+ /**
311
+ * @private
312
+ */
313
+ Run.prototype.hydrate = function (data) {
314
+ this.extraAttributes = data.extraAttributes;
315
+ this.leaves = data.leaves;
316
+ var _extraAttributes = data.extraAttributes, _leaves = data.leaves, characterFormatData = __rest(data, ["extraAttributes", "leaves"]);
317
+ void _extraAttributes;
318
+ void _leaves;
319
+ this.characterFormat.hydrate(characterFormatData);
320
+ };
321
+ /**
322
+ * @private
323
+ */
324
+ Run.prototype.snapshot = function () {
325
+ var cf = this.characterFormat.snapshot();
326
+ return {
327
+ extraAttributes: this.extraAttributes,
328
+ leaves: this.leaves,
329
+ rPrExtra: cf.rPrExtra,
330
+ styleIdValue: cf.styleIdValue,
331
+ boldValue: cf.boldValue,
332
+ italicValue: cf.italicValue,
333
+ strikeValue: cf.strikeValue,
334
+ doubleStrikeValue: cf.doubleStrikeValue,
335
+ vanishValue: cf.vanishValue,
336
+ legacyHiddenValue: cf.legacyHiddenValue,
337
+ noProofValue: cf.noProofValue,
338
+ fontSizeValue: cf.fontSizeValue,
339
+ fontSizeBidiValue: cf.fontSizeBidiValue,
340
+ textColorValue: cf.textColorValue,
341
+ textColorTheme: cf.textColorTheme,
342
+ highlightValue: cf.highlightValue,
343
+ shadingValue: cf.shadingValue,
344
+ underlineStyleValue: cf.underlineStyleValue,
345
+ underlineColorValue: cf.underlineColorValue,
346
+ vertAlignValue: cf.vertAlignValue,
347
+ smallCapsValue: cf.smallCapsValue,
348
+ allCapsValue: cf.allCapsValue,
349
+ fontsValue: cf.fontsValue,
350
+ characterScaleValue: cf.characterScaleValue,
351
+ kerningValue: cf.kerningValue,
352
+ characterSpacingValue: cf.characterSpacingValue,
353
+ positionValue: cf.positionValue,
354
+ borderValue: cf.borderValue,
355
+ languageValue: cf.languageValue,
356
+ embossValue: cf.embossValue,
357
+ imprintValue: cf.imprintValue,
358
+ outlineValue: cf.outlineValue,
359
+ shadowValue: cf.shadowValue,
360
+ webHiddenValue: cf.webHiddenValue,
361
+ bidiValue: cf.bidiValue,
362
+ complexScriptValue: cf.complexScriptValue,
363
+ boldBidiValue: cf.boldBidiValue,
364
+ italicBidiValue: cf.italicBidiValue,
365
+ emphasisValue: cf.emphasisValue,
366
+ textEffectValue: cf.textEffectValue,
367
+ specVanishValue: cf.specVanishValue,
368
+ snapToGridValue: cf.snapToGridValue,
369
+ };
370
+ };
371
+ return Run;
372
+ }());
373
+ // ---------------------------------------------------------------------------
374
+ // Parse
375
+ // ---------------------------------------------------------------------------
376
+ function parseRun(el, owner) {
377
+ var e_2, _a;
378
+ var run = new Run(owner);
379
+ var extraAttributes = el.attributes;
380
+ var leaves = [];
381
+ var characterFormatData;
382
+ try {
383
+ for (var _b = __values(elementChildren(el)), _c = _b.next(); !_c.done; _c = _b.next()) {
384
+ var child = _c.value;
385
+ if (isWml(child, 'rPr')) {
386
+ characterFormatData = parseCharacterFormat(child);
387
+ continue;
388
+ }
389
+ leaves.push(parseLeaf(child));
390
+ }
391
+ }
392
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
393
+ finally {
394
+ try {
395
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
396
+ }
397
+ finally { if (e_2) throw e_2.error; }
398
+ }
399
+ if (characterFormatData !== undefined) {
400
+ run.hydrate({
401
+ extraAttributes: extraAttributes,
402
+ leaves: leaves,
403
+ rPrExtra: characterFormatData.rPrExtra,
404
+ styleIdValue: characterFormatData.styleIdValue,
405
+ boldValue: characterFormatData.boldValue,
406
+ italicValue: characterFormatData.italicValue,
407
+ strikeValue: characterFormatData.strikeValue,
408
+ doubleStrikeValue: characterFormatData.doubleStrikeValue,
409
+ vanishValue: characterFormatData.vanishValue,
410
+ legacyHiddenValue: characterFormatData.legacyHiddenValue,
411
+ noProofValue: characterFormatData.noProofValue,
412
+ fontSizeValue: characterFormatData.fontSizeValue,
413
+ fontSizeBidiValue: characterFormatData.fontSizeBidiValue,
414
+ textColorValue: characterFormatData.textColorValue,
415
+ textColorTheme: characterFormatData.textColorTheme,
416
+ highlightValue: characterFormatData.highlightValue,
417
+ shadingValue: characterFormatData.shadingValue,
418
+ underlineStyleValue: characterFormatData.underlineStyleValue,
419
+ underlineColorValue: characterFormatData.underlineColorValue,
420
+ vertAlignValue: characterFormatData.vertAlignValue,
421
+ smallCapsValue: characterFormatData.smallCapsValue,
422
+ allCapsValue: characterFormatData.allCapsValue,
423
+ fontsValue: characterFormatData.fontsValue,
424
+ characterScaleValue: characterFormatData.characterScaleValue,
425
+ kerningValue: characterFormatData.kerningValue,
426
+ characterSpacingValue: characterFormatData.characterSpacingValue,
427
+ positionValue: characterFormatData.positionValue,
428
+ borderValue: characterFormatData.borderValue,
429
+ languageValue: characterFormatData.languageValue,
430
+ embossValue: characterFormatData.embossValue,
431
+ imprintValue: characterFormatData.imprintValue,
432
+ outlineValue: characterFormatData.outlineValue,
433
+ shadowValue: characterFormatData.shadowValue,
434
+ webHiddenValue: characterFormatData.webHiddenValue,
435
+ bidiValue: characterFormatData.bidiValue,
436
+ complexScriptValue: characterFormatData.complexScriptValue,
437
+ boldBidiValue: characterFormatData.boldBidiValue,
438
+ italicBidiValue: characterFormatData.italicBidiValue,
439
+ emphasisValue: characterFormatData.emphasisValue,
440
+ textEffectValue: characterFormatData.textEffectValue,
441
+ specVanishValue: characterFormatData.specVanishValue,
442
+ snapToGridValue: characterFormatData.snapToGridValue,
443
+ });
444
+ }
445
+ else {
446
+ run.hydrate({
447
+ extraAttributes: extraAttributes,
448
+ leaves: leaves,
449
+ rPrExtra: [],
450
+ styleIdValue: undefined,
451
+ boldValue: undefined,
452
+ italicValue: undefined,
453
+ strikeValue: undefined,
454
+ doubleStrikeValue: undefined,
455
+ vanishValue: undefined,
456
+ legacyHiddenValue: undefined,
457
+ noProofValue: undefined,
458
+ fontSizeValue: undefined,
459
+ fontSizeBidiValue: undefined,
460
+ textColorValue: undefined,
461
+ textColorTheme: undefined,
462
+ highlightValue: undefined,
463
+ shadingValue: undefined,
464
+ underlineStyleValue: undefined,
465
+ underlineColorValue: undefined,
466
+ vertAlignValue: undefined,
467
+ smallCapsValue: undefined,
468
+ allCapsValue: undefined,
469
+ fontsValue: undefined,
470
+ characterScaleValue: undefined,
471
+ kerningValue: undefined,
472
+ characterSpacingValue: undefined,
473
+ positionValue: undefined,
474
+ borderValue: undefined,
475
+ languageValue: undefined,
476
+ embossValue: undefined,
477
+ imprintValue: undefined,
478
+ outlineValue: undefined,
479
+ shadowValue: undefined,
480
+ webHiddenValue: undefined,
481
+ bidiValue: undefined,
482
+ complexScriptValue: undefined,
483
+ boldBidiValue: undefined,
484
+ italicBidiValue: undefined,
485
+ emphasisValue: undefined,
486
+ textEffectValue: undefined,
487
+ specVanishValue: undefined,
488
+ snapToGridValue: undefined,
489
+ });
490
+ }
491
+ return run;
492
+ }
493
+ function parseLeaf(child) {
494
+ if (isWml(child, 't')) {
495
+ var text = textContent(child);
496
+ return {
497
+ type: 'text',
498
+ text: text,
499
+ xmlSpacePreserve: xmlSpaceIsPreserve(child) || needsXmlSpacePreserve(text),
500
+ };
501
+ }
502
+ if (isWml(child, 'tab')) {
503
+ return { type: 'tab' };
504
+ }
505
+ if (isWml(child, 'br')) {
506
+ return parseBreakLeaf(child);
507
+ }
508
+ if (isWml(child, 'cr')) {
509
+ return { type: 'cr' };
510
+ }
511
+ if (isWml(child, 'sym')) {
512
+ return parseSymLeaf(child);
513
+ }
514
+ var feature = tryParseFeatureRunLeaf(child);
515
+ if (feature !== undefined) {
516
+ return { type: 'feature', featureId: feature.featureId, value: feature.value };
517
+ }
518
+ return { type: 'opaque', xml: child };
519
+ }
520
+ /**
521
+ * Parse `w:br` (`CT_Br`: optional `w:type`, `w:clear`).
522
+ * Citation: ECMA-376-1 §17.3.3.1–2; transitional `wml.xsd` `CT_Br` / `ST_BrType` / `ST_BrClear`.
523
+ */
524
+ function parseBreakLeaf(child) {
525
+ var e_3, _a;
526
+ var breakType = BreakType.Line;
527
+ var clear;
528
+ var knownType = false;
529
+ var knownClear = false;
530
+ var typeRaw = wmlAttrValLocal(child, 'type');
531
+ if (typeRaw === 'page') {
532
+ breakType = BreakType.Page;
533
+ knownType = true;
534
+ }
535
+ else if (typeRaw === 'column') {
536
+ breakType = BreakType.Column;
537
+ knownType = true;
538
+ }
539
+ else if (typeRaw === 'textWrapping') {
540
+ breakType = BreakType.TextWrappingBreak;
541
+ knownType = true;
542
+ }
543
+ else if (typeRaw === undefined) {
544
+ // Default line break — type omitted.
545
+ knownType = true;
546
+ }
547
+ else if (typeRaw === 'line') {
548
+ // Non-schema value some producers emit; treat as Line and do not re-emit type="line".
549
+ breakType = BreakType.Line;
550
+ knownType = true;
551
+ }
552
+ var clearRaw = wmlAttrValLocal(child, 'clear');
553
+ if (breakType === BreakType.Line || breakType === BreakType.TextWrappingBreak) {
554
+ if (clearRaw === 'left') {
555
+ clear = BreakClearType.Left;
556
+ knownClear = true;
557
+ }
558
+ else if (clearRaw === 'right') {
559
+ clear = BreakClearType.Right;
560
+ knownClear = true;
561
+ }
562
+ else if (clearRaw === 'all') {
563
+ clear = BreakClearType.All;
564
+ knownClear = true;
565
+ }
566
+ else if (clearRaw === 'none') {
567
+ // Public view: BreakClearType.None. Preserve attribute in extras for round-trip.
568
+ knownClear = false;
569
+ }
570
+ }
571
+ var extras = [];
572
+ try {
573
+ for (var _b = __values(child.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
574
+ var attr = _c.value;
575
+ var isWmlAttr = attr.prefix === 'w' || attr.prefix === '';
576
+ if (isWmlAttr && attr.localName === 'type') {
577
+ if (knownType) {
578
+ continue;
579
+ }
580
+ extras.push(attr);
581
+ continue;
582
+ }
583
+ if (isWmlAttr && attr.localName === 'clear') {
584
+ if (knownClear) {
585
+ continue;
586
+ }
587
+ extras.push(attr);
588
+ continue;
589
+ }
590
+ extras.push(attr);
591
+ }
592
+ }
593
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
594
+ finally {
595
+ try {
596
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
597
+ }
598
+ finally { if (e_3) throw e_3.error; }
599
+ }
600
+ if (clear !== undefined) {
601
+ return { type: 'break', breakType: breakType, clear: clear, extras: extras };
602
+ }
603
+ return { type: 'break', breakType: breakType, extras: extras };
604
+ }
605
+ /**
606
+ * Serialize break leaf. Never emits `@w:type="line"`.
607
+ * TextWrappingBreak → `textWrapping` (+ clear when not none).
608
+ * Line + non-none clear → `textWrapping` + clear (compat); Line alone → bare `w:br`.
609
+ */
610
+ function serializeBreakLeaf(leaf) {
611
+ var e_4, _a;
612
+ var attributes = [];
613
+ if (leaf.breakType === BreakType.Page) {
614
+ attributes.push(wmlAttr('type', 'page'));
615
+ }
616
+ else if (leaf.breakType === BreakType.Column) {
617
+ attributes.push(wmlAttr('type', 'column'));
618
+ }
619
+ else if (leaf.breakType === BreakType.TextWrappingBreak) {
620
+ attributes.push(wmlAttr('type', 'textWrapping'));
621
+ if (leaf.clear !== undefined) {
622
+ attributes.push(wmlAttr('clear', leaf.clear));
623
+ }
624
+ }
625
+ else if (leaf.clear !== undefined) {
626
+ // Line + clear ⇒ textWrapping (compat authoring form); never type="line".
627
+ attributes.push(wmlAttr('type', 'textWrapping'));
628
+ attributes.push(wmlAttr('clear', leaf.clear));
629
+ }
630
+ try {
631
+ // Line without clear: omit @w:type (default line break).
632
+ for (var _b = __values(leaf.extras), _c = _b.next(); !_c.done; _c = _b.next()) {
633
+ var extra = _c.value;
634
+ attributes.push(extra);
635
+ }
636
+ }
637
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
638
+ finally {
639
+ try {
640
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
641
+ }
642
+ finally { if (e_4) throw e_4.error; }
643
+ }
644
+ return wmlElement('br', { attributes: attributes });
645
+ }
646
+ function isWrappingBreakType(type) {
647
+ return type === BreakType.Line || type === BreakType.TextWrappingBreak;
648
+ }
649
+ function createBreakLeaf(type, clear) {
650
+ if (clear === void 0) { clear = BreakClearType.None; }
651
+ if (clear !== BreakClearType.None && !isWrappingBreakType(type)) {
652
+ throw new DocxError('content/invalid-break', 'w:br @w:clear is only valid with a line / text-wrapping break');
653
+ }
654
+ // Explicit clear tokens so TS 3.3 keeps Exclude<BreakClearType, None> (no as const narrowing).
655
+ if (clear === BreakClearType.Left || clear === BreakClearType.Right || clear === BreakClearType.All) {
656
+ return { type: 'break', breakType: type, clear: clear, extras: [] };
657
+ }
658
+ return { type: 'break', breakType: type, extras: [] };
659
+ }
660
+ function toBreakLeafView(leaf) {
661
+ return {
662
+ type: 'break',
663
+ breakType: leaf.breakType,
664
+ clear: leaf.clear != null ? leaf.clear : BreakClearType.None,
665
+ };
666
+ }
667
+ /**
668
+ * Parse `w:sym` (`CT_Sym`: optional `w:font`, `w:char` as `ST_ShortHexNumber`).
669
+ * Unknown attributes → opaque whole element. Missing font/char or malformed char → opaque.
670
+ * Citation: ECMA-376-1 §17.3.3.30; transitional `wml.xsd` `CT_Sym` / `ST_ShortHexNumber`.
671
+ */
672
+ function parseSymLeaf(child) {
673
+ var e_5, _a;
674
+ try {
675
+ for (var _b = __values(child.attributes), _c = _b.next(); !_c.done; _c = _b.next()) {
676
+ var attr = _c.value;
677
+ if (attr.localName === 'font' || attr.localName === 'char') {
678
+ if (attr.prefix !== 'w' && attr.prefix !== '') {
679
+ return { type: 'opaque', xml: child };
680
+ }
681
+ continue;
682
+ }
683
+ // Any other attribute (including non-wml font/char lookalikes handled above) stays opaque.
684
+ return { type: 'opaque', xml: child };
685
+ }
686
+ }
687
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
688
+ finally {
689
+ try {
690
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
691
+ }
692
+ finally { if (e_5) throw e_5.error; }
693
+ }
694
+ if (child.children.length > 0) {
695
+ return { type: 'opaque', xml: child };
696
+ }
697
+ var font = wmlAttrValLocal(child, 'font');
698
+ var char = wmlAttrValLocal(child, 'char');
699
+ if (font === undefined || char === undefined) {
700
+ return { type: 'opaque', xml: child };
701
+ }
702
+ // ST_ShortHexNumber = xsd:hexBinary length 2 → exactly four hex digits.
703
+ if (!/^[0-9A-Fa-f]{4}$/.test(char)) {
704
+ return { type: 'opaque', xml: child };
705
+ }
706
+ return { type: 'sym', font: font, char: char };
707
+ }
708
+ function serializeLeaf(leaf) {
709
+ switch (leaf.type) {
710
+ case 'text': {
711
+ var attributes = leaf.xmlSpacePreserve ? [xmlSpacePreserve()] : [];
712
+ return wmlElement('t', {
713
+ attributes: attributes,
714
+ children: [{ kind: 'text', value: leaf.text }],
715
+ });
716
+ }
717
+ case 'tab':
718
+ return wmlElement('tab');
719
+ case 'break':
720
+ return serializeBreakLeaf(leaf);
721
+ case 'cr':
722
+ return wmlElement('cr');
723
+ case 'sym':
724
+ return wmlElement('sym', {
725
+ attributes: [wmlAttr('font', leaf.font), wmlAttr('char', leaf.char)],
726
+ });
727
+ case 'feature':
728
+ return serializeFeatureRunLeaf(leaf);
729
+ case 'opaque':
730
+ return leaf.xml;
731
+ default:
732
+ return assertNever(leaf, 'run leaf');
733
+ }
734
+ }
735
+ function wmlAttrValLocal(el, localName) {
736
+ var __ts33_0;
737
+ return ((__ts33_0 = el.attributes.find(function (a) {
738
+ return a.localName === localName && (a.prefix === 'w' || a.prefix === '');
739
+ })),
740
+ __ts33_0 == null ? undefined : __ts33_0.value);
741
+ }
742
+ /**
743
+ * Serialize a run. `w:rPr` children come from {@link CharacterFormat.buildRPrChildren}
744
+ * (Spec §7.2 order).
745
+ */
746
+ function serializeRun(run) {
747
+ var e_6, _a;
748
+ var snap = run.snapshot();
749
+ var rPrChildren = run.characterFormat.buildRPrChildren();
750
+ var children = [];
751
+ if (rPrChildren.length > 0) {
752
+ children.push(wmlElement('rPr', { children: rPrChildren }));
753
+ }
754
+ try {
755
+ for (var _b = __values(snap.leaves), _c = _b.next(); !_c.done; _c = _b.next()) {
756
+ var leaf = _c.value;
757
+ children.push(serializeLeaf(leaf));
758
+ }
759
+ }
760
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
761
+ finally {
762
+ try {
763
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
764
+ }
765
+ finally { if (e_6) throw e_6.error; }
766
+ }
767
+ return wmlElement('r', { attributes: snap.extraAttributes, children: children });
768
+ }