@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,685 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __read = (this && this.__read) || function (o, n) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
14
+ if (!m) return o;
15
+ var i = m.call(o), r, ar = [], e;
16
+ try {
17
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
+ }
19
+ catch (error) { e = { error: error }; }
20
+ finally {
21
+ try {
22
+ if (r && !r.done && (m = i["return"])) m.call(i);
23
+ }
24
+ finally { if (e) throw e.error; }
25
+ }
26
+ return ar;
27
+ };
28
+ var __spread = (this && this.__spread) || function () {
29
+ for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
30
+ return ar;
31
+ };
32
+ var __values = (this && this.__values) || function (o) {
33
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
34
+ if (m) return m.call(o);
35
+ return {
36
+ next: function () {
37
+ if (o && i >= o.length) o = void 0;
38
+ return { value: o && o[i++], done: !o };
39
+ }
40
+ };
41
+ };
42
+ import { DetachedObjectError, DocxError } from '../../core/errors/docx-error';
43
+ import { FeatureInlineParagraphItem, serializeRun, TextRange, } from '../document/text-range';
44
+ import { elementChildren, isWml, wmlAttr, wmlElement, WML } from '../document/wml';
45
+ import { allocateRelationshipId, relationshipsWith, TargetMode } from '../../core/opc/relationships';
46
+ import { relationshipsForPart, withPartRelationships } from '../../core/opc/package';
47
+ import { partName } from '../../core/opc/part-name';
48
+ import { featureId, isFeatureRegistered, registerFeature, registerFeatureInlineHandler, registerFeatureMaterializeHandler, registerFeatureMultiPartHandler, visitParagraphsInDocumentOrder, } from '../../core/registry/index';
49
+ var HYPERLINKS = featureId('hyperlinks');
50
+ /**
51
+ * @private
52
+ * Transitional hyperlink relationship (ECMA-376-4 §9.2.1). */
53
+ export var HYPERLINK_RELATIONSHIP_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink';
54
+ /**
55
+ * @private
56
+ * Strict hyperlink relationship. */
57
+ export var STRICT_HYPERLINK_RELATIONSHIP_TYPE = 'http://purl.oclc.org/ooxml/officeDocument/relationships/hyperlink';
58
+ var HYPERLINK_RELATIONSHIP_TYPES = [
59
+ HYPERLINK_RELATIONSHIP_TYPE,
60
+ STRICT_HYPERLINK_RELATIONSHIP_TYPE,
61
+ ];
62
+ var R_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
63
+ var HyperlinkRunOwner = /** @class */ (function () {
64
+ function HyperlinkRunOwner() {
65
+ this.runs = [];
66
+ }
67
+ HyperlinkRunOwner.prototype.assertAttachedItem = function (target) {
68
+ if (!(target instanceof TextRange) || this.runs.indexOf(target) < 0) {
69
+ throw new DetachedObjectError('This run is no longer in its hyperlink');
70
+ }
71
+ };
72
+ HyperlinkRunOwner.prototype.appendRun = function () {
73
+ var run = new TextRange(this);
74
+ this.runs = __spread(this.runs, [run]);
75
+ return run;
76
+ };
77
+ HyperlinkRunOwner.prototype.listRuns = function () {
78
+ return this.runs;
79
+ };
80
+ HyperlinkRunOwner.prototype.detachRuns = function () {
81
+ var e_1, _a;
82
+ try {
83
+ for (var _b = __values(this.runs), _c = _b.next(); !_c.done; _c = _b.next()) {
84
+ var run = _c.value;
85
+ run.detach();
86
+ }
87
+ }
88
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
89
+ finally {
90
+ try {
91
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
92
+ }
93
+ finally { if (e_1) throw e_1.error; }
94
+ }
95
+ this.runs = [];
96
+ };
97
+ HyperlinkRunOwner.prototype.hydrateRuns = function (runs) {
98
+ var e_2, _a;
99
+ this.runs = runs;
100
+ try {
101
+ for (var runs_1 = __values(runs), runs_1_1 = runs_1.next(); !runs_1_1.done; runs_1_1 = runs_1.next()) {
102
+ var run = runs_1_1.value;
103
+ run.attach(this);
104
+ }
105
+ }
106
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
107
+ finally {
108
+ try {
109
+ if (runs_1_1 && !runs_1_1.done && (_a = runs_1.return)) _a.call(runs_1);
110
+ }
111
+ finally { if (e_2) throw e_2.error; }
112
+ }
113
+ };
114
+ return HyperlinkRunOwner;
115
+ }());
116
+ function relIdAttribute(el) {
117
+ var __ts33_0;
118
+ return ((__ts33_0 = el.attributes.find(function (a) { return a.namespaceUri === R_NS && a.localName === 'id'; })), __ts33_0 == null ? undefined : __ts33_0.value);
119
+ }
120
+ function wmlAttribute(el, localName) {
121
+ var __ts33_1;
122
+ return ((__ts33_1 = el.attributes.find(function (a) { return a.localName === localName && (a.namespaceUri === WML || a.namespaceUri === ''); })), __ts33_1 == null ? undefined : __ts33_1.value);
123
+ }
124
+ function mergePendingRelationships(existing, add) {
125
+ var e_3, _a;
126
+ if (add.length === 0) {
127
+ return existing;
128
+ }
129
+ var used = new Set(existing.items.map(function (item) { return item.id; }));
130
+ var next = __spread(existing.items);
131
+ try {
132
+ for (var add_1 = __values(add), add_1_1 = add_1.next(); !add_1_1.done; add_1_1 = add_1.next()) {
133
+ var rel = add_1_1.value;
134
+ var id = rel.id;
135
+ while (used.has(id)) {
136
+ id = allocateRelationshipId(used);
137
+ }
138
+ used.add(id);
139
+ next.push(__assign({}, rel, { id: id }));
140
+ }
141
+ }
142
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
143
+ finally {
144
+ try {
145
+ if (add_1_1 && !add_1_1.done && (_a = add_1.return)) _a.call(add_1);
146
+ }
147
+ finally { if (e_3) throw e_3.error; }
148
+ }
149
+ return relationshipsWith(next, existing.opaque);
150
+ }
151
+ function parseOnOffAttribute(raw) {
152
+ if (raw === undefined || raw === '0' || raw === 'false') {
153
+ return raw === undefined ? undefined : false;
154
+ }
155
+ return true;
156
+ }
157
+ /**
158
+ * External or anchor hyperlink (`w:hyperlink`, ECMA-376-1 §17.16.22 `CT_Hyperlink`).
159
+ *
160
+ * Nested display content is exposed as {@link Hyperlink.runs}. Non-run children are
161
+ * preserved opaquely in document order and re-emitted on save.
162
+ *
163
+ * The resolved external URL is **not** a parameterless instance property: package
164
+ * relationships live on the document catalog. Use {@link hyperlinkTarget} with the
165
+ * owning {@link WordDocument} (MVP “url” / resolved external target).
166
+ *
167
+ * @remarks
168
+ * - `relationshipId` maps `r:id` when present; new external links receive an id at
169
+ * materialize/save time.
170
+ * - `anchor`, `tooltip`, `docLocation`, `tgtFrame`, and `history` map the corresponding
171
+ * `w:hyperlink` attributes when present in the package.
172
+ * - Field-based `HYPERLINK` instructions are out of scope (separate fields module).
173
+ *
174
+ * @public
175
+ */
176
+ var Hyperlink = /** @class */ (function () {
177
+ /**
178
+ * @private
179
+ */
180
+ function Hyperlink(runOwner, items, relationshipId, anchor, tooltip, docLocation, tgtFrame, history) {
181
+ this.runOwner = runOwner;
182
+ this.items = items;
183
+ this.relationshipIdValue = relationshipId;
184
+ this.anchor = anchor;
185
+ this.tooltip = tooltip;
186
+ this.docLocation = docLocation;
187
+ this.tgtFrame = tgtFrame;
188
+ this.history = history;
189
+ }
190
+ Object.defineProperty(Hyperlink.prototype, "relationshipId", {
191
+ /**
192
+ * @private
193
+ * External relationship id (`r:id`) when present. */
194
+ get: function () {
195
+ return this.relationshipIdValue;
196
+ },
197
+ enumerable: true,
198
+ configurable: true
199
+ });
200
+ /**
201
+ * @private
202
+ */
203
+ Hyperlink.prototype.resolveRelationshipId = function (relationshipId) {
204
+ this.relationshipIdValue = relationshipId;
205
+ };
206
+ Object.defineProperty(Hyperlink.prototype, "runs", {
207
+ /**
208
+ * Visible text runs inside the hyperlink, in document order.
209
+ *
210
+ * @public
211
+ */
212
+ get: function () {
213
+ return this.runOwner.listRuns();
214
+ },
215
+ enumerable: true,
216
+ configurable: true
217
+ });
218
+ /**
219
+ * @private
220
+ */
221
+ Hyperlink.prototype.releaseContent = function () {
222
+ this.runOwner.detachRuns();
223
+ };
224
+ /**
225
+ * @private
226
+ */
227
+ Hyperlink.prototype.toOpenXml = function () {
228
+ var e_4, _a;
229
+ var attributes = [];
230
+ if (this.tgtFrame !== undefined) {
231
+ attributes.push(wmlAttr('tgtFrame', this.tgtFrame));
232
+ }
233
+ if (this.tooltip !== undefined) {
234
+ attributes.push(wmlAttr('tooltip', this.tooltip));
235
+ }
236
+ if (this.docLocation !== undefined) {
237
+ attributes.push(wmlAttr('docLocation', this.docLocation));
238
+ }
239
+ if (this.history !== undefined) {
240
+ attributes.push(wmlAttr('history', this.history ? '1' : '0'));
241
+ }
242
+ if (this.anchor !== undefined) {
243
+ attributes.push(wmlAttr('anchor', this.anchor));
244
+ }
245
+ if (this.relationshipIdValue !== undefined) {
246
+ attributes.push({
247
+ namespaceUri: R_NS,
248
+ localName: 'id',
249
+ prefix: 'r',
250
+ value: this.relationshipIdValue,
251
+ });
252
+ }
253
+ // Emit children from `items` only (document order). Opaque non-run children are
254
+ // stored once in items — do not also prepend a separate extras list (would duplicate).
255
+ var children = [];
256
+ try {
257
+ for (var _b = __values(this.items), _c = _b.next(); !_c.done; _c = _b.next()) {
258
+ var item = _c.value;
259
+ if (item.type === 'textRange') {
260
+ children.push(serializeRun(item.run));
261
+ }
262
+ else {
263
+ children.push(item.xml);
264
+ }
265
+ }
266
+ }
267
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
268
+ finally {
269
+ try {
270
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
271
+ }
272
+ finally { if (e_4) throw e_4.error; }
273
+ }
274
+ var namespaceDeclarations = this.relationshipIdValue !== undefined ? [{ prefix: 'r', namespaceUri: R_NS }] : [];
275
+ return wmlElement('hyperlink', { attributes: attributes, namespaceDeclarations: namespaceDeclarations, children: children });
276
+ };
277
+ return Hyperlink;
278
+ }());
279
+ export { Hyperlink };
280
+ /**
281
+ * Hyperlink relationships on the Main Document part.
282
+ *
283
+ * @private
284
+ * Catalog of hyperlink relationships; not part of the stable public surface.
285
+ * @private
286
+ */
287
+ var HyperlinksCatalog = /** @class */ (function () {
288
+ /**
289
+ * @private
290
+ */
291
+ function HyperlinksCatalog(byRelationshipId, dirty) {
292
+ this.byRelationshipId = byRelationshipId;
293
+ this.pendingRemovals = [];
294
+ this.pendingExternal = new Map();
295
+ this.dirty = dirty;
296
+ }
297
+ /**
298
+ * @private
299
+ */
300
+ HyperlinksCatalog.prototype.removeEntry = function (relationshipId) {
301
+ if (!this.byRelationshipId.has(relationshipId)) {
302
+ return;
303
+ }
304
+ this.byRelationshipId.delete(relationshipId);
305
+ this.pendingRemovals.push(relationshipId);
306
+ this.dirty = true;
307
+ };
308
+ /**
309
+ * @private
310
+ */
311
+ HyperlinksCatalog.prototype.isDirty = function () {
312
+ return (this.dirty ||
313
+ this.pendingRemovals.length > 0 ||
314
+ this.pendingExternal.size > 0 ||
315
+ __spread(this.byRelationshipId.values()).some(function (e) { return e.pendingRelationship !== undefined; }));
316
+ };
317
+ /**
318
+ * @private
319
+ */
320
+ HyperlinksCatalog.prototype.applyToPackage = function (pkg, mainPartName) {
321
+ var e_5, _a, e_6, _b;
322
+ var next = pkg;
323
+ var pending = __spread(this.byRelationshipId.values()).map(function (entry) { return entry.pendingRelationship; })
324
+ .filter(function (rel) { return rel !== undefined; });
325
+ if (pending.length > 0) {
326
+ var existing = relationshipsForPart(next, mainPartName);
327
+ var merged = mergePendingRelationships(existing, pending);
328
+ try {
329
+ for (var _c = __values(this.byRelationshipId.values()), _d = _c.next(); !_d.done; _d = _c.next()) {
330
+ var entry = _d.value;
331
+ entry.pendingRelationship = undefined;
332
+ }
333
+ }
334
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
335
+ finally {
336
+ try {
337
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
338
+ }
339
+ finally { if (e_5) throw e_5.error; }
340
+ }
341
+ next = withPartRelationships(next, mainPartName, merged);
342
+ }
343
+ var _loop_1 = function (relationshipId) {
344
+ next = withFilteredPartRelationshipsLocal(next, mainPartName, function (rel) { return rel.id !== relationshipId; });
345
+ };
346
+ try {
347
+ for (var _e = __values(this.pendingRemovals), _f = _e.next(); !_f.done; _f = _e.next()) {
348
+ var relationshipId = _f.value;
349
+ _loop_1(relationshipId);
350
+ }
351
+ }
352
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
353
+ finally {
354
+ try {
355
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
356
+ }
357
+ finally { if (e_6) throw e_6.error; }
358
+ }
359
+ this.pendingRemovals.length = 0;
360
+ this.dirty = false;
361
+ return next;
362
+ };
363
+ /**
364
+ * @private
365
+ */
366
+ HyperlinksCatalog.prototype.relationshipIds = function () {
367
+ return __spread(this.byRelationshipId.keys());
368
+ };
369
+ /**
370
+ * @private
371
+ */
372
+ HyperlinksCatalog.prototype.targetForRelationship = function (relationshipId) {
373
+ var __ts33_2;
374
+ return ((__ts33_2 = this.byRelationshipId.get(relationshipId)), __ts33_2 == null ? undefined : __ts33_2.target);
375
+ };
376
+ /**
377
+ * @private
378
+ * Register an external hyperlink before relationship allocation. */
379
+ HyperlinksCatalog.prototype.registerPendingExternal = function (hyperlink, target, relationshipType) {
380
+ if (relationshipType === void 0) { relationshipType = HYPERLINK_RELATIONSHIP_TYPE; }
381
+ this.pendingExternal.set(hyperlink, { target: target, relationshipType: relationshipType });
382
+ this.dirty = true;
383
+ };
384
+ /**
385
+ * @private
386
+ */
387
+ HyperlinksCatalog.prototype.pendingTargetFor = function (hyperlink) {
388
+ var __ts33_3;
389
+ return ((__ts33_3 = this.pendingExternal.get(hyperlink)), __ts33_3 == null ? undefined : __ts33_3.target);
390
+ };
391
+ /**
392
+ * @private
393
+ */
394
+ HyperlinksCatalog.prototype.materializePending = function (document) {
395
+ var _this = this;
396
+ if (this.pendingExternal.size === 0) {
397
+ return;
398
+ }
399
+ visitParagraphsInDocumentOrder(document, function (paragraph) {
400
+ var e_7, _a;
401
+ try {
402
+ for (var _b = __values(hyperlinksInParagraph(paragraph)), _c = _b.next(); !_c.done; _c = _b.next()) {
403
+ var hyperlink = _c.value;
404
+ if (hyperlink.relationshipId !== undefined) {
405
+ continue;
406
+ }
407
+ var pending_1 = _this.pendingExternal.get(hyperlink);
408
+ if (pending_1 === undefined) {
409
+ continue;
410
+ }
411
+ var relationshipId = _this.allocateExternalTarget(pending_1.target, usedRelationshipIds(document, _this), pending_1.relationshipType);
412
+ hyperlink.resolveRelationshipId(relationshipId);
413
+ _this.pendingExternal.delete(hyperlink);
414
+ }
415
+ }
416
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
417
+ finally {
418
+ try {
419
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
420
+ }
421
+ finally { if (e_7) throw e_7.error; }
422
+ }
423
+ });
424
+ };
425
+ /**
426
+ * @private
427
+ */
428
+ HyperlinksCatalog.prototype.allocateExternalTarget = function (target, usedRelIds, relationshipType) {
429
+ if (relationshipType === void 0) { relationshipType = HYPERLINK_RELATIONSHIP_TYPE; }
430
+ var relId = allocateRelationshipId(usedRelIds);
431
+ while (this.byRelationshipId.has(relId)) {
432
+ relId = allocateRelationshipId(new Set(__spread(usedRelIds, [relId])));
433
+ }
434
+ var pending = {
435
+ id: relId,
436
+ type: relationshipType,
437
+ target: target,
438
+ targetMode: TargetMode.External,
439
+ extraAttributes: [],
440
+ children: [],
441
+ };
442
+ this.byRelationshipId.set(relId, {
443
+ relationshipId: relId,
444
+ target: target,
445
+ relationshipType: relationshipType,
446
+ pendingRelationship: pending,
447
+ });
448
+ this.dirty = true;
449
+ return relId;
450
+ };
451
+ return HyperlinksCatalog;
452
+ }());
453
+ export { HyperlinksCatalog };
454
+ function parseHyperlink(element) {
455
+ var e_8, _a;
456
+ if (!isWml(element, 'hyperlink')) {
457
+ return undefined;
458
+ }
459
+ var runOwner = new HyperlinkRunOwner();
460
+ var items = [];
461
+ var parsedRuns = [];
462
+ try {
463
+ for (var _b = __values(elementChildren(element)), _c = _b.next(); !_c.done; _c = _b.next()) {
464
+ var child = _c.value;
465
+ if (isWml(child, 'r')) {
466
+ var run = TextRange.fromXml(child, runOwner);
467
+ parsedRuns.push(run);
468
+ items.push({ type: 'textRange', run: run });
469
+ continue;
470
+ }
471
+ // Non-run children stay opaque and keep order among runs via `items`.
472
+ items.push({ type: 'opaque', xml: child });
473
+ }
474
+ }
475
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
476
+ finally {
477
+ try {
478
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
479
+ }
480
+ finally { if (e_8) throw e_8.error; }
481
+ }
482
+ runOwner.hydrateRuns(parsedRuns);
483
+ if (items.every(function (item) { return item.type === 'opaque'; })) {
484
+ return undefined;
485
+ }
486
+ return new Hyperlink(runOwner, items, relIdAttribute(element), wmlAttribute(element, 'anchor'), wmlAttribute(element, 'tooltip'), wmlAttribute(element, 'docLocation'), wmlAttribute(element, 'tgtFrame'), parseOnOffAttribute(wmlAttribute(element, 'history')));
487
+ }
488
+ function loadCatalog(pkg, mainPartName) {
489
+ var e_9, _a;
490
+ var rels = relationshipsForPart(pkg, mainPartName);
491
+ var byRelationshipId = new Map();
492
+ try {
493
+ for (var _b = __values(rels.items), _c = _b.next(); !_c.done; _c = _b.next()) {
494
+ var rel = _c.value;
495
+ if (HYPERLINK_RELATIONSHIP_TYPES.indexOf(rel.type) === -1) {
496
+ continue;
497
+ }
498
+ byRelationshipId.set(rel.id, {
499
+ relationshipId: rel.id,
500
+ target: rel.target,
501
+ relationshipType: rel.type,
502
+ pendingRelationship: undefined,
503
+ });
504
+ }
505
+ }
506
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
507
+ finally {
508
+ try {
509
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
510
+ }
511
+ finally { if (e_9) throw e_9.error; }
512
+ }
513
+ return new HyperlinksCatalog(byRelationshipId, false);
514
+ }
515
+ function usedRelationshipIds(document, catalog) {
516
+ var e_10, _a, e_11, _b;
517
+ var main = partName('/word/document.xml');
518
+ var used = new Set();
519
+ try {
520
+ for (var _c = __values(relationshipsForPart(document.opcPackage(), main).items), _d = _c.next(); !_d.done; _d = _c.next()) {
521
+ var rel = _d.value;
522
+ used.add(rel.id);
523
+ }
524
+ }
525
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
526
+ finally {
527
+ try {
528
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
529
+ }
530
+ finally { if (e_10) throw e_10.error; }
531
+ }
532
+ try {
533
+ for (var _e = __values(catalog.relationshipIds()), _f = _e.next(); !_f.done; _f = _e.next()) {
534
+ var id = _f.value;
535
+ used.add(id);
536
+ }
537
+ }
538
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
539
+ finally {
540
+ try {
541
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
542
+ }
543
+ finally { if (e_11) throw e_11.error; }
544
+ }
545
+ return used;
546
+ }
547
+ function withFilteredPartRelationshipsLocal(pkg, source, keep) {
548
+ var existing = relationshipsForPart(pkg, source);
549
+ var kept = existing.items.filter(keep);
550
+ if (kept.length === existing.items.length) {
551
+ return pkg;
552
+ }
553
+ return withPartRelationships(pkg, source, relationshipsWith(kept, existing.opaque));
554
+ }
555
+ var registered = false;
556
+ /**
557
+ * @private
558
+ * Test hook */
559
+ export function resetHyperlinksFeatureForTests() {
560
+ registered = false;
561
+ }
562
+ /**
563
+ * @private
564
+ * Register hyperlink inline and relationship handlers. Idempotent. */
565
+ export function registerHyperlinksFeature() {
566
+ if (registered) {
567
+ return;
568
+ }
569
+ registered = true;
570
+ registerFeature({ id: HYPERLINKS });
571
+ registerFeatureMultiPartHandler({
572
+ featureId: HYPERLINKS,
573
+ relationshipTypes: HYPERLINK_RELATIONSHIP_TYPES,
574
+ loadParts: function (pkg, ctx) {
575
+ return loadCatalog(pkg, ctx.mainPartName);
576
+ },
577
+ });
578
+ registerFeatureMaterializeHandler({
579
+ featureId: HYPERLINKS,
580
+ materialize: function (document) {
581
+ var part = document.featurePart(HYPERLINKS);
582
+ if (part instanceof HyperlinksCatalog) {
583
+ part.materializePending(document);
584
+ }
585
+ },
586
+ });
587
+ registerFeatureInlineHandler({
588
+ featureId: HYPERLINKS,
589
+ wmlLocalName: 'hyperlink',
590
+ tryParse: function (element) {
591
+ return parseHyperlink(element);
592
+ },
593
+ });
594
+ }
595
+ /**
596
+ * Hyperlink catalog for a document.
597
+ *
598
+ * On a loaded package this is the catalog built from Main Document relationships.
599
+ * On a newly authored document there are no relationships yet, so this function
600
+ * attaches an empty catalog on first use and {@link WordDocument.saveSync | saveSync}
601
+ * materializes pending relationships into the package.
602
+ *
603
+ * @throws DocxError `feature/not-registered` when the module was not registered.
604
+ * @private
605
+ */
606
+ export function hyperlinksFor(document) {
607
+ var part = document.featurePart(HYPERLINKS);
608
+ if (part instanceof HyperlinksCatalog) {
609
+ return part;
610
+ }
611
+ if (part !== undefined) {
612
+ throw new DocxError('feature/not-registered', 'Hyperlinks feature state was replaced with an unexpected part type');
613
+ }
614
+ if (!isFeatureRegistered(HYPERLINKS)) {
615
+ throw new DocxError('feature/not-registered', 'Hyperlinks feature is not registered; call registerHyperlinksFeature() before use');
616
+ }
617
+ var created = new HyperlinksCatalog(new Map(), false);
618
+ document.setFeaturePart(HYPERLINKS, created);
619
+ return created;
620
+ }
621
+ /**
622
+ * Hyperlinks in a paragraph, in document order.
623
+ *
624
+ * @private
625
+ */
626
+ export function hyperlinksInParagraph(paragraph) {
627
+ var e_12, _a;
628
+ var found = [];
629
+ try {
630
+ for (var _b = __values(paragraph.items), _c = _b.next(); !_c.done; _c = _b.next()) {
631
+ var inline = _c.value;
632
+ if (isHyperlinkInline(inline)) {
633
+ found.push(inline.value);
634
+ }
635
+ }
636
+ }
637
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
638
+ finally {
639
+ try {
640
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
641
+ }
642
+ finally { if (e_12) throw e_12.error; }
643
+ }
644
+ return found;
645
+ }
646
+ /**
647
+ * Resolved external URL (MVP “url”) for a hyperlink, when present.
648
+ *
649
+ * Looks up the Main Document hyperlink relationship `Target` for
650
+ * {@link Hyperlink.relationshipId}, or the pending external target registered for a
651
+ * newly authored link that has not yet been materialized. Returns `undefined` for
652
+ * anchor-only internal links with no external relationship.
653
+ *
654
+ * Targets are data only — never fetched or executed (see security policy).
655
+ *
656
+ * @private
657
+ */
658
+ export function hyperlinkTarget(document, hyperlink) {
659
+ if (hyperlink.relationshipId !== undefined) {
660
+ return hyperlinksFor(document).targetForRelationship(hyperlink.relationshipId);
661
+ }
662
+ return hyperlinksFor(document).pendingTargetFor(hyperlink);
663
+ }
664
+ /**
665
+ * Remove a hyperlink inline from its paragraph and drop its external relationship on save.
666
+ *
667
+ * @private
668
+ */
669
+ export function removeHyperlink(document, paragraph, hyperlink) {
670
+ paragraph.removeFeatureInline(hyperlink);
671
+ if (hyperlink.relationshipId !== undefined) {
672
+ hyperlinksFor(document).removeEntry(hyperlink.relationshipId);
673
+ }
674
+ }
675
+ /**
676
+ * Whether paragraph inline content is a modeled hyperlink from this module.
677
+ *
678
+ * @private
679
+ */
680
+ export function isHyperlinkInline(inline) {
681
+ return (inline instanceof FeatureInlineParagraphItem &&
682
+ inline.featureId === HYPERLINKS &&
683
+ inline.value instanceof Hyperlink);
684
+ }
685
+ registerHyperlinksFeature();