@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,815 @@
1
+ var __values = (this && this.__values) || function (o) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
3
+ if (m) return m.call(o);
4
+ return {
5
+ next: function () {
6
+ if (o && i >= o.length) o = void 0;
7
+ return { value: o && o[i++], done: !o };
8
+ }
9
+ };
10
+ };
11
+ var __read = (this && this.__read) || function (o, n) {
12
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
13
+ if (!m) return o;
14
+ var i = m.call(o), r, ar = [], e;
15
+ try {
16
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
17
+ }
18
+ catch (error) { e = { error: error }; }
19
+ finally {
20
+ try {
21
+ if (r && !r.done && (m = i["return"])) m.call(i);
22
+ }
23
+ finally { if (e) throw e.error; }
24
+ }
25
+ return ar;
26
+ };
27
+ import { OpaqueParagraphItem, OpaqueRunItem } from '../document/text-range';
28
+ import { elementChildren, isWml } from '../document/wml';
29
+ import { partByName, relationshipsForPart } from '../../core/opc/package';
30
+ import { partNameKey, resolveInternalTarget } from '../../core/opc/part-name';
31
+ import { serializeXml } from '../../core/xml/serialize';
32
+ import { objectEntries } from '../../core/compat/object-compat';
33
+ import { defaultHeader, headersFootersFor, } from '../headers-footers/index';
34
+ import { IMAGE_RELATIONSHIP_TYPE, JPEG_CONTENT_TYPE, PNG_CONTENT_TYPE, STRICT_IMAGE_RELATIONSHIP_TYPE, } from '../images/index';
35
+ import { isPictureWatermarkShape, isTextWatermarkShape, isVml, parseVmlStyle, vmlAttribute, VML_NS, } from './detect';
36
+ import { ImageType, PictureWatermark, TextWatermark, WatermarkLayout } from './model';
37
+ /** Office namespace used by `o:title` / `o:spid` on VML. */
38
+ var OFFICE_NS = 'urn:schemas-microsoft-com:office:office';
39
+ /** Office document relationships namespace (`r:id` on `v:imagedata`). */
40
+ var R_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
41
+ var IMAGE_REL_TYPES = new Set([
42
+ IMAGE_RELATIONSHIP_TYPE,
43
+ STRICT_IMAGE_RELATIONSHIP_TYPE,
44
+ ]);
45
+ /** Shape attributes consumed by the modeled text/picture surface (not residual). */
46
+ var MODELED_SHAPE_ATTRS = new Set([
47
+ 'id',
48
+ 'type',
49
+ 'style',
50
+ 'fillcolor',
51
+ 'stroked',
52
+ 'filled',
53
+ ]);
54
+ /** Style keys consumed for text/picture models. */
55
+ var MODELED_STYLE_KEYS = new Set([
56
+ 'position',
57
+ 'margin-left',
58
+ 'margin-top',
59
+ 'width',
60
+ 'height',
61
+ 'rotation',
62
+ 'z-index',
63
+ 'mso-position-horizontal',
64
+ 'mso-position-horizontal-relative',
65
+ 'mso-position-vertical',
66
+ 'mso-position-vertical-relative',
67
+ ]);
68
+ /** textpath style keys consumed as fontName / size. */
69
+ var MODELED_TEXTPATH_STYLE_KEYS = new Set(['font-family', 'font-size']);
70
+ var parseIndexByDocument = new WeakMap();
71
+ var parseCompleted = new WeakSet();
72
+ /**
73
+ * Once set, {@link applyLogicalWatermarkFromDefaultHeader} must not re-seed
74
+ * logical state from the physical index. Covers first successful apply and
75
+ * author setter / {@link WordDocument.removeWatermark} so clear is sticky.
76
+ */
77
+ var logicalSettled = new WeakSet();
78
+ /**
79
+ * @private
80
+ * Test / serialize hook: physical watermark copies by header part key.
81
+ */
82
+ export function physicalWatermarksOf(document) {
83
+ var __ts33_0, __ts33_1;
84
+ return ((__ts33_1 = ((__ts33_0 = parseIndexByDocument.get(document)), __ts33_0 == null ? undefined : __ts33_0.physicalByPartKey)), __ts33_1 != null ? __ts33_1 : new Map());
85
+ }
86
+ /**
87
+ * Mark parse complete so a later ensure does not overwrite author assignment.
88
+ * Used by the document host setter after logical attach / remove.
89
+ *
90
+ * @private
91
+ */
92
+ export function markWatermarkParseCompleted(document) {
93
+ parseCompleted.add(document);
94
+ // Author path owns logical state; never re-apply from physical headers.
95
+ logicalSettled.add(document);
96
+ if (!parseIndexByDocument.has(document)) {
97
+ parseIndexByDocument.set(document, {
98
+ physicalByPartKey: new Map(),
99
+ completed: true,
100
+ });
101
+ }
102
+ }
103
+ /**
104
+ * @private
105
+ * Reset parse bookkeeping for unit tests.
106
+ */
107
+ export function resetWatermarkParseStateForTests(document) {
108
+ if (document !== undefined) {
109
+ parseIndexByDocument.delete(document);
110
+ parseCompleted.delete(document);
111
+ logicalSettled.delete(document);
112
+ }
113
+ }
114
+ function attributeValue(el, namespaceUri, localName) {
115
+ var __ts33_2;
116
+ return ((__ts33_2 = el.attributes.find(function (a) { return a.namespaceUri === namespaceUri && a.localName === localName; })), __ts33_2 == null ? undefined : __ts33_2.value);
117
+ }
118
+ function findVmlChild(parent, localName) {
119
+ var e_1, _a;
120
+ try {
121
+ for (var _b = __values(elementChildren(parent)), _c = _b.next(); !_c.done; _c = _b.next()) {
122
+ var child = _c.value;
123
+ if (isVml(child, localName)) {
124
+ return child;
125
+ }
126
+ }
127
+ }
128
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
129
+ finally {
130
+ try {
131
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
132
+ }
133
+ finally { if (e_1) throw e_1.error; }
134
+ }
135
+ return undefined;
136
+ }
137
+ function styleExtraRecord(style, modeled) {
138
+ var e_2, _a;
139
+ var out = {};
140
+ var any = false;
141
+ try {
142
+ for (var style_1 = __values(style), style_1_1 = style_1.next(); !style_1_1.done; style_1_1 = style_1.next()) {
143
+ var _b = __read(style_1_1.value, 2), key = _b[0], value = _b[1];
144
+ if (!modeled.has(key)) {
145
+ out[key] = value;
146
+ any = true;
147
+ }
148
+ }
149
+ }
150
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
151
+ finally {
152
+ try {
153
+ if (style_1_1 && !style_1_1.done && (_a = style_1.return)) _a.call(style_1);
154
+ }
155
+ finally { if (e_2) throw e_2.error; }
156
+ }
157
+ return any ? out : undefined;
158
+ }
159
+ function attrKey(attr) {
160
+ if (attr.prefix !== '') {
161
+ return attr.prefix + ":" + attr.localName;
162
+ }
163
+ if (attr.namespaceUri !== '' && attr.namespaceUri !== VML_NS) {
164
+ return "{" + attr.namespaceUri + "}" + attr.localName;
165
+ }
166
+ return attr.localName;
167
+ }
168
+ function parsePt(raw) {
169
+ if (raw === undefined) {
170
+ return undefined;
171
+ }
172
+ var match = /^([+-]?(?:\d+(?:\.\d*)?|\.\d+))\s*pt$/i.exec(raw.trim());
173
+ if (match === null) {
174
+ var asNum = Number.parseFloat(raw);
175
+ return Number.isFinite(asNum) ? asNum : undefined;
176
+ }
177
+ var value = Number.parseFloat(match[1] != null ? match[1] : '');
178
+ return Number.isFinite(value) ? value : undefined;
179
+ }
180
+ function stripFontFamilyQuotes(raw) {
181
+ var s = raw.trim();
182
+ if ((s.startsWith('"') && s.endsWith('"')) ||
183
+ (s.startsWith("'") && s.endsWith("'"))) {
184
+ s = s.slice(1, -1);
185
+ }
186
+ return s;
187
+ }
188
+ function parseRotationDegrees(style) {
189
+ var raw = style.get('rotation');
190
+ if (raw === undefined || raw.trim() === '') {
191
+ return undefined;
192
+ }
193
+ var value = Number.parseFloat(raw);
194
+ return Number.isFinite(value) ? value : undefined;
195
+ }
196
+ function layoutFromRotation(rotation) {
197
+ if (rotation === undefined || rotation === 0) {
198
+ return { layout: WatermarkLayout.Horizontal, customRotation: undefined };
199
+ }
200
+ if (rotation === 315) {
201
+ return { layout: WatermarkLayout.Diagonal, customRotation: undefined };
202
+ }
203
+ return { layout: WatermarkLayout.Diagonal, customRotation: rotation };
204
+ }
205
+ /**
206
+ * Opacity tri-state from `v:fill/@opacity` (and only that verified signal).
207
+ * Gray fill alone is not proof. `.5` / values below full → transparent; full → opaque; absent → unknown.
208
+ */
209
+ function parseSemitransparentState(shape) {
210
+ var fill = findVmlChild(shape, 'fill');
211
+ if (fill === undefined) {
212
+ return { state: 'unknown', fillOpacity: undefined };
213
+ }
214
+ var opacity = vmlAttribute(fill, 'opacity');
215
+ if (opacity === undefined || opacity.trim() === '') {
216
+ return { state: 'unknown', fillOpacity: undefined };
217
+ }
218
+ var normalized = opacity.trim().toLowerCase();
219
+ if (normalized === '1' ||
220
+ normalized === '1.0' ||
221
+ normalized === '100%' ||
222
+ normalized === '65536f') {
223
+ return { state: 'opaque', fillOpacity: opacity };
224
+ }
225
+ var asNum = Number.parseFloat(normalized);
226
+ if (Number.isFinite(asNum)) {
227
+ if (asNum < 1) {
228
+ return { state: 'transparent', fillOpacity: opacity };
229
+ }
230
+ if (asNum === 1) {
231
+ return { state: 'opaque', fillOpacity: opacity };
232
+ }
233
+ }
234
+ return { state: 'unknown', fillOpacity: opacity };
235
+ }
236
+ function buildResidual(shape, style, textpath, textpathStyle, fillOpacity, imagedata, unresolvedImageNote) {
237
+ var e_3, _a, e_4, _b, e_5, _c, e_6, _d, e_7, _e, e_8, _f;
238
+ var residualChildrenXml = [];
239
+ var seenTextpath = false;
240
+ var seenFill = false;
241
+ var seenImagedata = false;
242
+ try {
243
+ for (var _g = __values(elementChildren(shape)), _h = _g.next(); !_h.done; _h = _g.next()) {
244
+ var child = _h.value;
245
+ if (isVml(child, 'textpath') && !seenTextpath) {
246
+ seenTextpath = true;
247
+ continue;
248
+ }
249
+ if (isVml(child, 'fill') && !seenFill) {
250
+ seenFill = true;
251
+ continue;
252
+ }
253
+ if (isVml(child, 'imagedata') && !seenImagedata) {
254
+ seenImagedata = true;
255
+ continue;
256
+ }
257
+ residualChildrenXml.push(serializeXml(child));
258
+ }
259
+ }
260
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
261
+ finally {
262
+ try {
263
+ if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
264
+ }
265
+ finally { if (e_3) throw e_3.error; }
266
+ }
267
+ var extraShapeAttributes = {};
268
+ try {
269
+ for (var _j = __values(shape.attributes), _k = _j.next(); !_k.done; _k = _j.next()) {
270
+ var attr = _k.value;
271
+ var isVmlOrEmpty = attr.namespaceUri === '' || attr.namespaceUri === VML_NS;
272
+ if (isVmlOrEmpty && MODELED_SHAPE_ATTRS.has(attr.localName)) {
273
+ continue;
274
+ }
275
+ extraShapeAttributes[attrKey(attr)] = attr.value;
276
+ }
277
+ }
278
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
279
+ finally {
280
+ try {
281
+ if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
282
+ }
283
+ finally { if (e_4) throw e_4.error; }
284
+ }
285
+ var extensions = {};
286
+ var styleExtra = styleExtraRecord(style, MODELED_STYLE_KEYS);
287
+ if (styleExtra !== undefined) {
288
+ try {
289
+ for (var _l = __values(objectEntries(styleExtra)), _m = _l.next(); !_m.done; _m = _l.next()) {
290
+ var _o = __read(_m.value, 2), k = _o[0], v = _o[1];
291
+ extensions["style." + k] = v;
292
+ }
293
+ }
294
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
295
+ finally {
296
+ try {
297
+ if (_m && !_m.done && (_c = _l.return)) _c.call(_l);
298
+ }
299
+ finally { if (e_5) throw e_5.error; }
300
+ }
301
+ }
302
+ if (textpath !== undefined) {
303
+ var textpathModeledAttrs = new Set(['string', 'on', 'style']);
304
+ try {
305
+ for (var _p = __values(textpath.attributes), _q = _p.next(); !_q.done; _q = _p.next()) {
306
+ var attr = _q.value;
307
+ var isVmlOrEmpty = attr.namespaceUri === '' || attr.namespaceUri === VML_NS;
308
+ if (isVmlOrEmpty && textpathModeledAttrs.has(attr.localName)) {
309
+ continue;
310
+ }
311
+ extensions["textpath." + attrKey(attr)] = attr.value;
312
+ }
313
+ }
314
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
315
+ finally {
316
+ try {
317
+ if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
318
+ }
319
+ finally { if (e_6) throw e_6.error; }
320
+ }
321
+ var tpStyleExtra = styleExtraRecord(textpathStyle, MODELED_TEXTPATH_STYLE_KEYS);
322
+ if (tpStyleExtra !== undefined) {
323
+ try {
324
+ for (var _r = __values(objectEntries(tpStyleExtra)), _s = _r.next(); !_s.done; _s = _r.next()) {
325
+ var _t = __read(_s.value, 2), k = _t[0], v = _t[1];
326
+ extensions["textpathStyle." + k] = v;
327
+ }
328
+ }
329
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
330
+ finally {
331
+ try {
332
+ if (_s && !_s.done && (_e = _r.return)) _e.call(_r);
333
+ }
334
+ finally { if (e_7) throw e_7.error; }
335
+ }
336
+ }
337
+ }
338
+ if (imagedata !== undefined) {
339
+ var imagedataModeled = new Set(['id', 'gain', 'blacklevel']);
340
+ try {
341
+ for (var _u = __values(imagedata.attributes), _v = _u.next(); !_v.done; _v = _u.next()) {
342
+ var attr = _v.value;
343
+ if (attr.namespaceUri === R_NS && attr.localName === 'id') {
344
+ continue;
345
+ }
346
+ var isLocal = attr.namespaceUri === '' ||
347
+ attr.namespaceUri === VML_NS ||
348
+ attr.namespaceUri === OFFICE_NS;
349
+ if (isLocal && imagedataModeled.has(attr.localName)) {
350
+ // gain/blacklevel modeled as washout; retain raw tokens for clean fidelity.
351
+ if (attr.localName === 'gain' || attr.localName === 'blacklevel') {
352
+ extensions["imagedata." + attr.localName] = attr.value;
353
+ }
354
+ continue;
355
+ }
356
+ extensions["imagedata." + attrKey(attr)] = attr.value;
357
+ }
358
+ }
359
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
360
+ finally {
361
+ try {
362
+ if (_v && !_v.done && (_f = _u.return)) _f.call(_u);
363
+ }
364
+ finally { if (e_8) throw e_8.error; }
365
+ }
366
+ }
367
+ var residual = {};
368
+ var shapeId = vmlAttribute(shape, 'id');
369
+ if (shapeId !== undefined) {
370
+ residual.shapeId = shapeId;
371
+ }
372
+ var shapeType = vmlAttribute(shape, 'type');
373
+ if (shapeType !== undefined) {
374
+ residual.shapeType = shapeType;
375
+ }
376
+ var styleAttribute = vmlAttribute(shape, 'style');
377
+ if (styleAttribute !== undefined) {
378
+ residual.styleAttribute = styleAttribute;
379
+ }
380
+ var fillcolor = vmlAttribute(shape, 'fillcolor');
381
+ if (fillcolor !== undefined) {
382
+ residual.fillcolor = fillcolor;
383
+ }
384
+ if (Object.keys(extraShapeAttributes).length > 0) {
385
+ residual.extraShapeAttributes = extraShapeAttributes;
386
+ }
387
+ if (residualChildrenXml.length > 0) {
388
+ residual.extraChildXml = residualChildrenXml;
389
+ }
390
+ if (fillOpacity !== undefined) {
391
+ residual.fillOpacity = fillOpacity;
392
+ }
393
+ if (imagedata !== undefined) {
394
+ var rid = attributeValue(imagedata, R_NS, 'id');
395
+ if (rid !== undefined) {
396
+ residual.imageRelationshipId = rid;
397
+ }
398
+ }
399
+ if (unresolvedImageNote !== undefined) {
400
+ residual.unresolvedImageNote = unresolvedImageNote;
401
+ }
402
+ if (Object.keys(extensions).length > 0) {
403
+ residual.extensions = extensions;
404
+ }
405
+ return residual;
406
+ }
407
+ /**
408
+ * @private
409
+ * Apply residual + custom rotation onto a constructed model.
410
+ */
411
+ export function attachTextParseExtras(model, residual, customRotation) {
412
+ model.setParseResidual(residual);
413
+ if (customRotation !== undefined) {
414
+ model.setCustomRotationDegrees(customRotation);
415
+ }
416
+ }
417
+ /**
418
+ * @private
419
+ */
420
+ export function attachPictureParseExtras(model, residual) {
421
+ model.setParseResidual(residual);
422
+ }
423
+ function parseTextWatermark(shape) {
424
+ var __ts33_3;
425
+ var style = parseVmlStyle(vmlAttribute(shape, 'style'));
426
+ var textpath = findVmlChild(shape, 'textpath');
427
+ var textpathStyle = parseVmlStyle(textpath === undefined ? undefined : vmlAttribute(textpath, 'style'));
428
+ var text = textpath === undefined ? '' : (((__ts33_3 = vmlAttribute(textpath, 'string')), __ts33_3 != null ? __ts33_3 : ''));
429
+ var fontRaw = textpathStyle.get('font-family');
430
+ var fontName = fontRaw === undefined ? undefined : stripFontFamilyQuotes(fontRaw);
431
+ var size = parsePt(textpathStyle.get('font-size'));
432
+ var color = vmlAttribute(shape, 'fillcolor');
433
+ var width = parsePt(style.get('width'));
434
+ var height = parsePt(style.get('height'));
435
+ var rotation = parseRotationDegrees(style);
436
+ var _a = layoutFromRotation(rotation), layout = _a.layout, customRotation = _a.customRotation;
437
+ var _b = parseSemitransparentState(shape), state = _b.state, fillOpacity = _b.fillOpacity;
438
+ var options = { layout: layout };
439
+ if (fontName !== undefined && fontName.length > 0) {
440
+ options.fontName = fontName;
441
+ }
442
+ if (size !== undefined && size > 0) {
443
+ options.size = size;
444
+ }
445
+ if (color !== undefined) {
446
+ options.color = color;
447
+ }
448
+ if (width !== undefined && width > 0) {
449
+ options.width = width;
450
+ }
451
+ if (height !== undefined && height > 0) {
452
+ options.height = height;
453
+ }
454
+ var model = new TextWatermark(text, options);
455
+ model.setSemitransparentState(state);
456
+ var residual = buildResidual(shape, style, textpath, textpathStyle, fillOpacity, undefined, undefined);
457
+ attachTextParseExtras(model, residual, customRotation);
458
+ return model;
459
+ }
460
+ function washoutFromImagedata(imagedata) {
461
+ var __ts33_4, __ts33_5, __ts33_6, __ts33_7;
462
+ // Verified Word washout on PictureWatermark.docx: gain + blacklevel on v:imagedata.
463
+ var gain = ((__ts33_5 = ((__ts33_4 = vmlAttribute(imagedata, 'gain')), __ts33_4 != null ? __ts33_4 : attributeValue(imagedata, OFFICE_NS, 'gain'))), __ts33_5 != null ? __ts33_5 : attributeValue(imagedata, '', 'gain'));
464
+ var blacklevel = ((__ts33_7 = ((__ts33_6 = vmlAttribute(imagedata, 'blacklevel')), __ts33_6 != null ? __ts33_6 : attributeValue(imagedata, OFFICE_NS, 'blacklevel'))), __ts33_7 != null ? __ts33_7 : attributeValue(imagedata, '', 'blacklevel'));
465
+ return gain !== undefined && blacklevel !== undefined;
466
+ }
467
+ function imageTypeFromContentType(contentType) {
468
+ if (contentType === undefined) {
469
+ return undefined;
470
+ }
471
+ var ct = contentType.toLowerCase();
472
+ if (ct === JPEG_CONTENT_TYPE || ct === 'image/jpg') {
473
+ return ImageType.Jpeg;
474
+ }
475
+ if (ct === PNG_CONTENT_TYPE) {
476
+ return ImageType.Png;
477
+ }
478
+ return undefined;
479
+ }
480
+ function resolvePictureBytes(pkg, headerPartName, imagedata) {
481
+ var rid = attributeValue(imagedata, R_NS, 'id');
482
+ if (rid === undefined || rid.length === 0) {
483
+ return {
484
+ bytes: undefined,
485
+ imageType: undefined,
486
+ unresolvedNote: 'missing-r-id',
487
+ relationshipId: undefined,
488
+ };
489
+ }
490
+ if (pkg === undefined) {
491
+ return {
492
+ bytes: undefined,
493
+ imageType: undefined,
494
+ unresolvedNote: 'no-package',
495
+ relationshipId: rid,
496
+ };
497
+ }
498
+ var rels;
499
+ try {
500
+ rels = relationshipsForPart(pkg, headerPartName);
501
+ }
502
+ catch (_a) {
503
+ return {
504
+ bytes: undefined,
505
+ imageType: undefined,
506
+ unresolvedNote: 'no-header-rels',
507
+ relationshipId: rid,
508
+ };
509
+ }
510
+ var rel = rels.items.find(function (item) { return item.id === rid; });
511
+ if (rel === undefined) {
512
+ return {
513
+ bytes: undefined,
514
+ imageType: undefined,
515
+ unresolvedNote: "missing-rel:" + rid,
516
+ relationshipId: rid,
517
+ };
518
+ }
519
+ if (!IMAGE_REL_TYPES.has(rel.type)) {
520
+ // Still attempt resolve; classification already matched other indicators.
521
+ }
522
+ if (/^https?:/i.test(rel.target) || /^mailto:/i.test(rel.target)) {
523
+ return {
524
+ bytes: undefined,
525
+ imageType: undefined,
526
+ unresolvedNote: 'external-target',
527
+ relationshipId: rid,
528
+ };
529
+ }
530
+ var targetName;
531
+ try {
532
+ targetName = resolveInternalTarget(rel.target, headerPartName);
533
+ }
534
+ catch (_b) {
535
+ return {
536
+ bytes: undefined,
537
+ imageType: undefined,
538
+ unresolvedNote: 'bad-target',
539
+ relationshipId: rid,
540
+ };
541
+ }
542
+ var part = partByName(pkg, targetName);
543
+ if (part === undefined) {
544
+ return {
545
+ bytes: undefined,
546
+ imageType: undefined,
547
+ unresolvedNote: "missing-part:" + targetName,
548
+ relationshipId: rid,
549
+ };
550
+ }
551
+ return {
552
+ bytes: part.data,
553
+ imageType: imageTypeFromContentType(part.contentType),
554
+ unresolvedNote: undefined,
555
+ relationshipId: rid,
556
+ };
557
+ }
558
+ function parsePictureWatermark(shape, pkg, headerPartName) {
559
+ var style = parseVmlStyle(vmlAttribute(shape, 'style'));
560
+ var imagedata = findVmlChild(shape, 'imagedata');
561
+ var width = parsePt(style.get('width'));
562
+ var height = parsePt(style.get('height'));
563
+ var washout = imagedata === undefined ? false : washoutFromImagedata(imagedata);
564
+ var resolved = imagedata === undefined
565
+ ? {
566
+ bytes: undefined,
567
+ imageType: undefined,
568
+ unresolvedNote: 'missing-imagedata',
569
+ relationshipId: undefined,
570
+ }
571
+ : resolvePictureBytes(pkg, headerPartName, imagedata);
572
+ var options = { washout: washout };
573
+ if (resolved.imageType !== undefined) {
574
+ options.imageType = resolved.imageType;
575
+ }
576
+ if (width !== undefined && width > 0) {
577
+ options.width = width;
578
+ }
579
+ if (height !== undefined && height > 0) {
580
+ options.height = height;
581
+ }
582
+ var model = new PictureWatermark(resolved.bytes, options);
583
+ if (resolved.bytes === undefined) {
584
+ model.imageData = undefined;
585
+ }
586
+ var residual = buildResidual(shape, style, undefined, new Map(), undefined, imagedata, resolved.unresolvedNote);
587
+ attachPictureParseExtras(model, residual);
588
+ return model;
589
+ }
590
+ function shapesUnderPict(pict) {
591
+ var e_9, _a;
592
+ var shapes = [];
593
+ try {
594
+ for (var _b = __values(elementChildren(pict)), _c = _b.next(); !_c.done; _c = _b.next()) {
595
+ var child = _c.value;
596
+ if (isVml(child, 'shape')) {
597
+ shapes.push(child);
598
+ }
599
+ }
600
+ }
601
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
602
+ finally {
603
+ try {
604
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
605
+ }
606
+ finally { if (e_9) throw e_9.error; }
607
+ }
608
+ return shapes;
609
+ }
610
+ function visitOpenXmlForPict(node, visit) {
611
+ var e_10, _a;
612
+ if (isWml(node, 'pict')) {
613
+ visit(node);
614
+ return;
615
+ }
616
+ try {
617
+ for (var _b = __values(elementChildren(node)), _c = _b.next(); !_c.done; _c = _b.next()) {
618
+ var child = _c.value;
619
+ visitOpenXmlForPict(child, visit);
620
+ }
621
+ }
622
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
623
+ finally {
624
+ try {
625
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
626
+ }
627
+ finally { if (e_10) throw e_10.error; }
628
+ }
629
+ }
630
+ function collectPictFromBlocks(blocks, visit) {
631
+ var e_11, _a, e_12, _b;
632
+ try {
633
+ for (var blocks_1 = __values(blocks), blocks_1_1 = blocks_1.next(); !blocks_1_1.done; blocks_1_1 = blocks_1.next()) {
634
+ var block = blocks_1_1.value;
635
+ if (block.type === 'opaque') {
636
+ visitOpenXmlForPict(block.xml, visit);
637
+ continue;
638
+ }
639
+ if (block.type === 'paragraph') {
640
+ try {
641
+ for (var _c = __values(block.paragraph.items), _d = _c.next(); !_d.done; _d = _c.next()) {
642
+ var inline = _d.value;
643
+ if (inline instanceof OpaqueParagraphItem || inline instanceof OpaqueRunItem) {
644
+ visitOpenXmlForPict(inline.xml, visit);
645
+ }
646
+ }
647
+ }
648
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
649
+ finally {
650
+ try {
651
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
652
+ }
653
+ finally { if (e_12) throw e_12.error; }
654
+ }
655
+ }
656
+ }
657
+ }
658
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
659
+ finally {
660
+ try {
661
+ if (blocks_1_1 && !blocks_1_1.done && (_a = blocks_1.return)) _a.call(blocks_1);
662
+ }
663
+ finally { if (e_11) throw e_11.error; }
664
+ }
665
+ }
666
+ /**
667
+ * Parse the first recognized watermark shape under header body blocks.
668
+ *
669
+ * @private
670
+ */
671
+ export function parseWatermarkFromHeaderBlocks(blocks, pkg, headerPartName) {
672
+ var found;
673
+ collectPictFromBlocks(blocks, function (pict) {
674
+ var e_13, _a;
675
+ if (found !== undefined) {
676
+ return;
677
+ }
678
+ try {
679
+ for (var _b = __values(shapesUnderPict(pict)), _c = _b.next(); !_c.done; _c = _b.next()) {
680
+ var shape = _c.value;
681
+ if (isTextWatermarkShape(shape)) {
682
+ found = parseTextWatermark(shape);
683
+ return;
684
+ }
685
+ if (isPictureWatermarkShape(shape)) {
686
+ found = parsePictureWatermark(shape, pkg, headerPartName);
687
+ return;
688
+ }
689
+ }
690
+ }
691
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
692
+ finally {
693
+ try {
694
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
695
+ }
696
+ finally { if (e_13) throw e_13.error; }
697
+ }
698
+ });
699
+ return found;
700
+ }
701
+ /**
702
+ * Ensure header watermarks have been scanned once for this document.
703
+ *
704
+ * Builds the physical-by-part index only. Does **not** read or write
705
+ * `document.watermark` (avoids prototype getter re-entry). Logical apply is
706
+ * {@link applyLogicalWatermarkFromDefaultHeader} / {@link ensureParsedAndLogical}.
707
+ *
708
+ * Parse does not dirty header parts or mutate Open XML trees.
709
+ *
710
+ * @private
711
+ */
712
+ export function ensureWatermarksParsed(document) {
713
+ var e_14, _a;
714
+ if (parseCompleted.has(document)) {
715
+ return;
716
+ }
717
+ parseCompleted.add(document);
718
+ var physicalByPartKey = new Map();
719
+ var catalog;
720
+ try {
721
+ catalog = headersFootersFor(document);
722
+ }
723
+ catch (_b) {
724
+ parseIndexByDocument.set(document, { physicalByPartKey: physicalByPartKey, completed: true });
725
+ return;
726
+ }
727
+ var pkg;
728
+ try {
729
+ pkg = document.opcPackage();
730
+ }
731
+ catch (_c) {
732
+ pkg = undefined;
733
+ }
734
+ var visited = new Set();
735
+ try {
736
+ for (var _d = __values(catalog.relationshipIds('header')), _e = _d.next(); !_e.done; _e = _d.next()) {
737
+ var relId = _e.value;
738
+ var entry = catalog.entryForRelationship(relId);
739
+ if (entry === undefined) {
740
+ continue;
741
+ }
742
+ var key = partNameKey(entry.partName);
743
+ if (visited.has(key)) {
744
+ continue;
745
+ }
746
+ visited.add(key);
747
+ var watermark = parseWatermarkFromHeaderBlocks(entry.blocks, pkg, entry.partName);
748
+ if (watermark !== undefined) {
749
+ physicalByPartKey.set(key, watermark);
750
+ }
751
+ }
752
+ }
753
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
754
+ finally {
755
+ try {
756
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
757
+ }
758
+ finally { if (e_14) throw e_14.error; }
759
+ }
760
+ parseIndexByDocument.set(document, { physicalByPartKey: physicalByPartKey, completed: true });
761
+ }
762
+ /**
763
+ * Apply logical watermark from default header after physical index is built.
764
+ * Separated so the document getter can call ensure then read logical without
765
+ * re-entrancy through the prototype getter mid-parse.
766
+ *
767
+ * @private
768
+ */
769
+ export function applyLogicalWatermarkFromDefaultHeader(document, getLogical, setLogical) {
770
+ // Sticky after first apply or author setter/remove — never re-seed logical.
771
+ if (logicalSettled.has(document)) {
772
+ return;
773
+ }
774
+ if (getLogical() !== undefined) {
775
+ logicalSettled.add(document);
776
+ return;
777
+ }
778
+ var index = parseIndexByDocument.get(document);
779
+ if (index === undefined) {
780
+ return;
781
+ }
782
+ var header = defaultHeader(document);
783
+ if (header === undefined) {
784
+ // Physical scan finished with no default header; settle so getters stay empty.
785
+ logicalSettled.add(document);
786
+ return;
787
+ }
788
+ var catalog;
789
+ try {
790
+ catalog = headersFootersFor(document);
791
+ }
792
+ catch (_a) {
793
+ logicalSettled.add(document);
794
+ return;
795
+ }
796
+ var entry = catalog.entryForRelationship(header.relationshipId);
797
+ if (entry === undefined) {
798
+ logicalSettled.add(document);
799
+ return;
800
+ }
801
+ var wm = index.physicalByPartKey.get(partNameKey(entry.partName));
802
+ if (wm !== undefined) {
803
+ setLogical(wm);
804
+ }
805
+ logicalSettled.add(document);
806
+ }
807
+ /**
808
+ * Full ensure + logical apply used by the document host getter.
809
+ *
810
+ * @private
811
+ */
812
+ export function ensureParsedAndLogical(document, getLogical, setLogical) {
813
+ ensureWatermarksParsed(document);
814
+ applyLogicalWatermarkFromDefaultHeader(document, getLogical, setLogical);
815
+ }