@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,908 @@
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
+ /**
43
+ * OLE object multi-package-part catalog (TASK-8054 embed + TASK-8055 link +
44
+ * TASK-8056 icon/preview media).
45
+ *
46
+ * Owns the embedded-package bytes for OLE objects (`word/embeddings/*`),
47
+ * external link targets, and optional icon/preview media
48
+ * (`word/media/imageN.{png|jpeg}`), mirroring the images module part
49
+ * pipeline (`registerPendingImage` → `materializePending` → `allocatePart` →
50
+ * `applyToPackage`):
51
+ *
52
+ * - **Pending registration at append** — authoring registers payload bytes
53
+ * (and optional icon bytes) against the created {@link OleObject} without
54
+ * allocating package ids; relationship ids and part names are allocated at
55
+ * save (`materializePending`).
56
+ * - **Deterministic part naming** — embeddings `word/embeddings/oleObject{N}.bin`
57
+ * (ECMA-376-1 §15.2.10); icons `word/media/image{N}.{png|jpeg}`
58
+ * (ECMA-376-1 §15.2.14; images module parity).
59
+ * - **Content type** — embed: caller-provided, else the default
60
+ * `application/vnd.openxmlformats-officedocument.oleObject`; icon: sniffed
61
+ * PNG/JPEG only.
62
+ * - **No OLE byte dedupe** — OLE storages are not content-addressable (two
63
+ * appends of identical bytes yield two distinct parts and relationships).
64
+ * - **Icon hash dedupe** — identical icon bytes share one media part and one
65
+ * image relationship (sha256; images module parity).
66
+ * - **Orphan GC at save** — a part with no referencing `w:object` in the
67
+ * document is removed together with its relationship and content-type
68
+ * override (parity with the images module).
69
+ * - **Linked objects (TASK-8055)** — external relationships only
70
+ * (`TargetMode="External"`); **no part** is created for the OLE link.
71
+ * Icon media for a link is still an internal image part.
72
+ *
73
+ * Security (`.agent/policies/security.md`): payload bytes are opaque data.
74
+ * This catalog stores, replaces, and writes them; it never parses,
75
+ * decompresses, inspects beyond length, activates, or launches anything.
76
+ * Link targets are strings only. Icon bytes are PNG/JPEG media only.
77
+ *
78
+ * @packageDocumentation
79
+ */
80
+ import { sha256Hex as sha256Digest } from '../../core/compat/sha256';
81
+ import { allocateRelationshipId, relationshipsWith, TargetMode } from '../../core/opc/relationships';
82
+ import { partByName, relationshipsForPart, withPartRelationships } from '../../core/opc/package';
83
+ import { partName, partNameKey } from '../../core/opc/part-name';
84
+ import { replaceOrAddPackagePart } from '../../core/registry/multi-part-handlers';
85
+ import { usedMainDocumentRelationshipIds } from '../../core/registry/multi-part-handlers';
86
+ import { IMAGE_RELATIONSHIP_TYPE, JPEG_CONTENT_TYPE, PNG_CONTENT_TYPE } from '../images/index';
87
+ import { OLE_OBJECT_LINK_LONG_PATH_RELATIONSHIP_TYPE, OLE_OBJECT_RELATIONSHIP_TYPE, } from './relationship';
88
+ /**
89
+ * Default content type for authored embedded-object parts (unknown binary
90
+ * storage). ECMA-376-1 §15.2.10 permits any content type; Word uses this
91
+ * token for OLE compound storages.
92
+ *
93
+ * @private
94
+ */
95
+ export var OLE_OBJECT_DEFAULT_CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.oleObject';
96
+ /** Part-name prefix for authored embedding parts (spec §Package parts). */
97
+ var EMBEDDINGS_PART_PREFIX = '/word/embeddings/oleObject';
98
+ /** Part-name extension for authored embedding parts. */
99
+ var EMBEDDINGS_PART_SUFFIX = '.bin';
100
+ /** Part-name prefix for authored icon media (images module parity). */
101
+ var MEDIA_PART_PREFIX = '/word/media/image';
102
+ /**
103
+ * Package catalog for embedded OLE object parts, linked external targets,
104
+ * and icon/preview media parts (TASK-8056).
105
+ *
106
+ * Loaded from Main-WordDocument relationships of the transitional `oleObject`
107
+ * type (and the long-path link variant on load only) plus image
108
+ * relationships whose parts are PNG/JPEG (icon media). Authored
109
+ * embeds/links/icons register pending entries that are materialized at save.
110
+ *
111
+ * @private
112
+ */
113
+ var OleObjectCatalog = /** @class */ (function () {
114
+ /**
115
+ * @private
116
+ */
117
+ function OleObjectCatalog(entries, externalByRelationshipId, iconEntries) {
118
+ var e_1, _a;
119
+ if (externalByRelationshipId === void 0) { externalByRelationshipId = new Map(); }
120
+ if (iconEntries === void 0) { iconEntries = new Map(); }
121
+ this.entries = entries;
122
+ this.byRelationshipId = new Map(__spread(entries.values()).map(function (entry) { return [entry.relationshipId, entry]; }));
123
+ this.externalByRelationshipId = externalByRelationshipId;
124
+ this.iconEntries = iconEntries;
125
+ this.iconByRelationshipId = new Map(__spread(iconEntries.values()).map(function (entry) { return [entry.relationshipId, entry]; }));
126
+ this.iconHashToRelationshipId = new Map();
127
+ try {
128
+ for (var _b = __values(iconEntries.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
129
+ var entry = _c.value;
130
+ this.iconHashToRelationshipId.set(sha256Hex(entry.data), entry.relationshipId);
131
+ }
132
+ }
133
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
134
+ finally {
135
+ try {
136
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
137
+ }
138
+ finally { if (e_1) throw e_1.error; }
139
+ }
140
+ this.pendingRemovals = [];
141
+ this.pendingExternalRemovals = [];
142
+ this.pendingIconRemovals = [];
143
+ this.pendingEmbeds = new Map();
144
+ this.pendingLinks = new Map();
145
+ this.pendingIcons = new Map();
146
+ }
147
+ /**
148
+ * Loaded + pending embedded-object entries (embedded only; linked objects
149
+ * have no part).
150
+ *
151
+ * @private
152
+ */
153
+ OleObjectCatalog.prototype.objects = function () {
154
+ return __spread(this.entries.values());
155
+ };
156
+ /**
157
+ * Payload bytes for a main-document relationship id (embedded parts only).
158
+ *
159
+ * @private
160
+ */
161
+ OleObjectCatalog.prototype.bytesForRelationship = function (relationshipId) {
162
+ var __ts33_0;
163
+ return ((__ts33_0 = this.byRelationshipId.get(relationshipId)), __ts33_0 == null ? undefined : __ts33_0.data);
164
+ };
165
+ /**
166
+ * External target string for a main-document relationship id (linked
167
+ * objects only). Returns `undefined` for embeds. The string is stored
168
+ * verbatim and is never fetched, resolved, or opened.
169
+ *
170
+ * @private
171
+ */
172
+ OleObjectCatalog.prototype.targetForRelationship = function (relationshipId) {
173
+ var __ts33_1;
174
+ return ((__ts33_1 = this.externalByRelationshipId.get(relationshipId)), __ts33_1 == null ? undefined : __ts33_1.target);
175
+ };
176
+ /**
177
+ * Icon/preview image bytes for a main-document image relationship id
178
+ * (TASK-8056). Returns `undefined` when the id is not an icon media entry.
179
+ *
180
+ * @private
181
+ */
182
+ OleObjectCatalog.prototype.iconBytesForRelationship = function (relationshipId) {
183
+ var __ts33_2;
184
+ return ((__ts33_2 = this.iconByRelationshipId.get(relationshipId)), __ts33_2 == null ? undefined : __ts33_2.data);
185
+ };
186
+ /**
187
+ * @private
188
+ * Pending payload bytes for a not-yet-materialized embed. */
189
+ OleObjectCatalog.prototype.pendingBytesFor = function (object) {
190
+ var __ts33_3;
191
+ return ((__ts33_3 = this.pendingEmbeds.get(object)), __ts33_3 == null ? undefined : __ts33_3.bytes);
192
+ };
193
+ /**
194
+ * @private
195
+ * Pending external target for a not-yet-materialized link. */
196
+ OleObjectCatalog.prototype.pendingTargetFor = function (object) {
197
+ var __ts33_4;
198
+ return ((__ts33_4 = this.pendingLinks.get(object)), __ts33_4 == null ? undefined : __ts33_4.target);
199
+ };
200
+ /**
201
+ * @private
202
+ * Pending icon bytes for a not-yet-materialized icon. */
203
+ OleObjectCatalog.prototype.pendingIconBytesFor = function (object) {
204
+ var __ts33_5;
205
+ return ((__ts33_5 = this.pendingIcons.get(object)), __ts33_5 == null ? undefined : __ts33_5.bytes);
206
+ };
207
+ /**
208
+ * @private
209
+ * Part names already owned by the catalog (embed + icon). */
210
+ OleObjectCatalog.prototype.pendingPartNames = function () {
211
+ return __spread(this.entries.keys(), this.iconEntries.keys());
212
+ };
213
+ /**
214
+ * @private
215
+ * Relationship ids already owned by the catalog
216
+ * (embed + link + icon).
217
+ */
218
+ OleObjectCatalog.prototype.pendingRelationshipIds = function () {
219
+ return __spread(this.byRelationshipId.keys(), this.externalByRelationshipId.keys(), this.iconByRelationshipId.keys());
220
+ };
221
+ /**
222
+ * @private
223
+ * Record embed intent without allocating package ids
224
+ * (images `registerPendingImage` pattern). `contentType` may be
225
+ * caller-provided or the module default.
226
+ */
227
+ OleObjectCatalog.prototype.registerPendingEmbed = function (object, bytes, contentType) {
228
+ this.pendingEmbeds.set(object, { bytes: bytes, contentType: contentType });
229
+ };
230
+ /**
231
+ * @private
232
+ * Record link intent without allocating package ids
233
+ * (hyperlinks `registerPendingExternal` pattern). Target is a stored
234
+ * string only — never fetched.
235
+ */
236
+ OleObjectCatalog.prototype.registerPendingLink = function (object, target) {
237
+ this.pendingLinks.set(object, { target: target });
238
+ };
239
+ /**
240
+ * @private
241
+ * Record icon/preview media intent without allocating package
242
+ * ids (TASK-8056; images `registerPendingImage` pattern). Bytes must
243
+ * already be sniffed as PNG or JPEG by the caller.
244
+ */
245
+ OleObjectCatalog.prototype.registerPendingIcon = function (object, bytes, contentType) {
246
+ this.pendingIcons.set(object, { bytes: bytes, contentType: contentType });
247
+ };
248
+ /**
249
+ * @private
250
+ * Drop a pending embed removed before save. */
251
+ OleObjectCatalog.prototype.discardPendingEmbed = function (object) {
252
+ this.pendingEmbeds.delete(object);
253
+ };
254
+ /**
255
+ * @private
256
+ * Drop a pending link removed before save. */
257
+ OleObjectCatalog.prototype.discardPendingLink = function (object) {
258
+ this.pendingLinks.delete(object);
259
+ };
260
+ /**
261
+ * @private
262
+ * Drop a pending icon removed before save. */
263
+ OleObjectCatalog.prototype.discardPendingIcon = function (object) {
264
+ this.pendingIcons.delete(object);
265
+ };
266
+ /**
267
+ * @private
268
+ * Replace bytes on a not-yet-materialized embed. */
269
+ OleObjectCatalog.prototype.updatePendingBytes = function (object, bytes) {
270
+ var pending = this.pendingEmbeds.get(object);
271
+ if (pending === undefined) {
272
+ throw new Error('Pending OLE object was not found');
273
+ }
274
+ this.pendingEmbeds.set(object, __assign({}, pending, { bytes: bytes }));
275
+ };
276
+ /**
277
+ * @private
278
+ * Replace bytes on a loaded entry and mark it dirty
279
+ * (byte-replace only; the library never interprets OLE storages).
280
+ */
281
+ OleObjectCatalog.prototype.replaceBytes = function (relationshipId, bytes) {
282
+ var entry = this.byRelationshipId.get(relationshipId);
283
+ if (entry === undefined) {
284
+ throw new Error("OLE object relationship " + relationshipId + " is not loaded");
285
+ }
286
+ entry.data = bytes;
287
+ entry.dirty = true;
288
+ };
289
+ /**
290
+ * @private
291
+ * Queue orphan removal of a part + relationship + content-type
292
+ * override (GC parity with the images module). For external (link-only)
293
+ * relationships, removes the relationship entry only — there is no part.
294
+ */
295
+ OleObjectCatalog.prototype.removeEntry = function (relationshipId) {
296
+ var entry = this.byRelationshipId.get(relationshipId);
297
+ if (entry !== undefined) {
298
+ this.entries.delete(entry.partName);
299
+ this.byRelationshipId.delete(relationshipId);
300
+ this.pendingRemovals.push(entry);
301
+ return;
302
+ }
303
+ if (this.externalByRelationshipId.has(relationshipId)) {
304
+ this.externalByRelationshipId.delete(relationshipId);
305
+ this.pendingExternalRemovals.push(relationshipId);
306
+ }
307
+ };
308
+ /**
309
+ * @private
310
+ * Queue removal of an icon media part + image relationship
311
+ * (TASK-8056). Shared media (hash-deduped) is removed only when this is
312
+ * the last catalog reference; callers must not remove shared icons while
313
+ * other objects still reference the same relationship id.
314
+ */
315
+ OleObjectCatalog.prototype.removeIconEntry = function (relationshipId) {
316
+ var entry = this.iconByRelationshipId.get(relationshipId);
317
+ if (entry === undefined) {
318
+ return;
319
+ }
320
+ this.iconEntries.delete(entry.partName);
321
+ this.iconByRelationshipId.delete(relationshipId);
322
+ var hash = sha256Hex(entry.data);
323
+ if (this.iconHashToRelationshipId.get(hash) === relationshipId) {
324
+ this.iconHashToRelationshipId.delete(hash);
325
+ }
326
+ this.pendingIconRemovals.push(entry);
327
+ };
328
+ /**
329
+ * @private
330
+ */
331
+ OleObjectCatalog.prototype.isDirty = function () {
332
+ var e_2, _a, e_3, _b, e_4, _c;
333
+ if (this.pendingRemovals.length > 0 ||
334
+ this.pendingExternalRemovals.length > 0 ||
335
+ this.pendingIconRemovals.length > 0 ||
336
+ this.pendingEmbeds.size > 0 ||
337
+ this.pendingLinks.size > 0 ||
338
+ this.pendingIcons.size > 0) {
339
+ return true;
340
+ }
341
+ try {
342
+ for (var _d = __values(this.entries.values()), _e = _d.next(); !_e.done; _e = _d.next()) {
343
+ var entry = _e.value;
344
+ if (entry.dirty || entry.pendingRelationship !== undefined) {
345
+ return true;
346
+ }
347
+ }
348
+ }
349
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
350
+ finally {
351
+ try {
352
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
353
+ }
354
+ finally { if (e_2) throw e_2.error; }
355
+ }
356
+ try {
357
+ for (var _f = __values(this.externalByRelationshipId.values()), _g = _f.next(); !_g.done; _g = _f.next()) {
358
+ var entry = _g.value;
359
+ if (entry.pendingRelationship !== undefined) {
360
+ return true;
361
+ }
362
+ }
363
+ }
364
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
365
+ finally {
366
+ try {
367
+ if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
368
+ }
369
+ finally { if (e_3) throw e_3.error; }
370
+ }
371
+ try {
372
+ for (var _h = __values(this.iconEntries.values()), _j = _h.next(); !_j.done; _j = _h.next()) {
373
+ var entry = _j.value;
374
+ if (entry.dirty || entry.pendingRelationship !== undefined) {
375
+ return true;
376
+ }
377
+ }
378
+ }
379
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
380
+ finally {
381
+ try {
382
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
383
+ }
384
+ finally { if (e_4) throw e_4.error; }
385
+ }
386
+ return false;
387
+ };
388
+ /**
389
+ * @private
390
+ * Allocate a new embedding part + main-document relationship
391
+ * for one pending embed (images `allocatePart` pattern; no dedupe).
392
+ */
393
+ OleObjectCatalog.prototype.allocatePart = function (bytes, contentType, usedRelIds, usedPartNames) {
394
+ var partNameValue = allocateEmbeddingPartName(usedPartNames);
395
+ var relId = allocateRelationshipId(usedRelIds);
396
+ while (this.byRelationshipId.has(relId) ||
397
+ this.externalByRelationshipId.has(relId) ||
398
+ this.iconByRelationshipId.has(relId)) {
399
+ relId = allocateRelationshipId(new Set(__spread(usedRelIds, [relId])));
400
+ }
401
+ var entry = {
402
+ partName: partNameValue,
403
+ relationshipId: relId,
404
+ relationshipType: OLE_OBJECT_RELATIONSHIP_TYPE,
405
+ contentType: contentType,
406
+ data: bytes,
407
+ dirty: true,
408
+ pendingRelationship: {
409
+ id: relId,
410
+ type: OLE_OBJECT_RELATIONSHIP_TYPE,
411
+ target: relativeTarget(partNameValue),
412
+ extraAttributes: [],
413
+ children: [],
414
+ },
415
+ };
416
+ this.entries.set(partNameValue, entry);
417
+ this.byRelationshipId.set(relId, entry);
418
+ return { entry: entry, relationshipId: relId };
419
+ };
420
+ /**
421
+ * @private
422
+ * Allocate an external oleObject relationship for one pending
423
+ * link (hyperlinks `allocateExternalTarget` pattern). No part is created.
424
+ * Always emits the transitional oleObject type — never the long-path
425
+ * accept-only variant.
426
+ */
427
+ OleObjectCatalog.prototype.allocateExternalTarget = function (target, usedRelIds) {
428
+ var relId = allocateRelationshipId(usedRelIds);
429
+ while (this.byRelationshipId.has(relId) ||
430
+ this.externalByRelationshipId.has(relId) ||
431
+ this.iconByRelationshipId.has(relId)) {
432
+ relId = allocateRelationshipId(new Set(__spread(usedRelIds, [relId])));
433
+ }
434
+ var pending = {
435
+ id: relId,
436
+ type: OLE_OBJECT_RELATIONSHIP_TYPE,
437
+ target: target,
438
+ targetMode: TargetMode.External,
439
+ extraAttributes: [],
440
+ children: [],
441
+ };
442
+ this.externalByRelationshipId.set(relId, {
443
+ relationshipId: relId,
444
+ target: target,
445
+ relationshipType: OLE_OBJECT_RELATIONSHIP_TYPE,
446
+ pendingRelationship: pending,
447
+ });
448
+ return relId;
449
+ };
450
+ /**
451
+ * @private
452
+ * Allocate (or reuse via sha256) an icon media part + image
453
+ * relationship (TASK-8056; images `allocatePart` + hash-dedupe pattern).
454
+ */
455
+ OleObjectCatalog.prototype.allocateIconPart = function (bytes, contentType, usedRelIds, usedPartNames) {
456
+ var hash = sha256Hex(bytes);
457
+ var existingId = this.iconHashToRelationshipId.get(hash);
458
+ if (existingId !== undefined) {
459
+ var existing = this.iconByRelationshipId.get(existingId);
460
+ if (existing !== undefined) {
461
+ return { entry: existing, relationshipId: existingId };
462
+ }
463
+ }
464
+ var partNameValue = allocateIconPartName(contentType, usedPartNames);
465
+ var relId = allocateRelationshipId(usedRelIds);
466
+ while (this.byRelationshipId.has(relId) ||
467
+ this.externalByRelationshipId.has(relId) ||
468
+ this.iconByRelationshipId.has(relId)) {
469
+ relId = allocateRelationshipId(new Set(__spread(usedRelIds, [relId])));
470
+ }
471
+ var entry = {
472
+ partName: partNameValue,
473
+ relationshipId: relId,
474
+ relationshipType: IMAGE_RELATIONSHIP_TYPE,
475
+ contentType: contentType,
476
+ data: bytes,
477
+ dirty: true,
478
+ pendingRelationship: {
479
+ id: relId,
480
+ type: IMAGE_RELATIONSHIP_TYPE,
481
+ target: relativeTarget(partNameValue),
482
+ extraAttributes: [],
483
+ children: [],
484
+ },
485
+ };
486
+ this.iconEntries.set(partNameValue, entry);
487
+ this.iconByRelationshipId.set(relId, entry);
488
+ this.iconHashToRelationshipId.set(hash, relId);
489
+ return { entry: entry, relationshipId: relId };
490
+ };
491
+ /**
492
+ * @private
493
+ * Allocate relationship ids (+ part names for embeds/icons) for
494
+ * pending embeds, links, and icons and resolve each object's `r:id` values
495
+ * (save-time `materializePending`). The caller supplies the modeled OLE
496
+ * objects in document order (avoids a circular import of the index listing
497
+ * helper). Objects that carry a pending registration but were not visited
498
+ * keep their registration (the next save retries); objects removed before
499
+ * save are dropped via `discardPendingEmbed` / `discardPendingLink` /
500
+ * `discardPendingIcon`.
501
+ */
502
+ OleObjectCatalog.prototype.materializePending = function (document, objects) {
503
+ var e_5, _a, e_6, _b;
504
+ if (this.pendingEmbeds.size === 0 &&
505
+ this.pendingLinks.size === 0 &&
506
+ this.pendingIcons.size === 0) {
507
+ return;
508
+ }
509
+ var usedRelIds = usedMainDocumentRelationshipIds(document);
510
+ try {
511
+ for (var _c = __values(this.pendingRelationshipIds()), _d = _c.next(); !_d.done; _d = _c.next()) {
512
+ var id = _d.value;
513
+ usedRelIds.add(id);
514
+ }
515
+ }
516
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
517
+ finally {
518
+ try {
519
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
520
+ }
521
+ finally { if (e_5) throw e_5.error; }
522
+ }
523
+ var usedPartNames = usedPartNameKeys(document, this);
524
+ try {
525
+ for (var objects_1 = __values(objects), objects_1_1 = objects_1.next(); !objects_1_1.done; objects_1_1 = objects_1.next()) {
526
+ var object = objects_1_1.value;
527
+ if (object.isPendingRelationship()) {
528
+ var pendingEmbed = this.pendingEmbeds.get(object);
529
+ if (pendingEmbed !== undefined) {
530
+ var allocated = this.allocatePart(pendingEmbed.bytes, pendingEmbed.contentType, usedRelIds, usedPartNames);
531
+ usedRelIds.add(allocated.relationshipId);
532
+ usedPartNames.add(partNameKey(allocated.entry.partName));
533
+ object.resolveRelationshipId(allocated.relationshipId);
534
+ this.pendingEmbeds.delete(object);
535
+ }
536
+ else {
537
+ var pendingLink = this.pendingLinks.get(object);
538
+ if (pendingLink !== undefined) {
539
+ var relationshipId = this.allocateExternalTarget(pendingLink.target, usedRelIds);
540
+ usedRelIds.add(relationshipId);
541
+ object.resolveRelationshipId(relationshipId);
542
+ this.pendingLinks.delete(object);
543
+ }
544
+ }
545
+ }
546
+ if (object.isPendingIcon()) {
547
+ var pendingIcon = this.pendingIcons.get(object);
548
+ if (pendingIcon !== undefined) {
549
+ var allocated = this.allocateIconPart(pendingIcon.bytes, pendingIcon.contentType, usedRelIds, usedPartNames);
550
+ usedRelIds.add(allocated.relationshipId);
551
+ usedPartNames.add(partNameKey(allocated.entry.partName));
552
+ object.resolveIconRelationshipId(allocated.relationshipId);
553
+ this.pendingIcons.delete(object);
554
+ }
555
+ }
556
+ }
557
+ }
558
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
559
+ finally {
560
+ try {
561
+ if (objects_1_1 && !objects_1_1.done && (_b = objects_1.return)) _b.call(objects_1);
562
+ }
563
+ finally { if (e_6) throw e_6.error; }
564
+ }
565
+ };
566
+ /**
567
+ * @private
568
+ */
569
+ OleObjectCatalog.prototype.applyToPackage = function (pkg, mainPartName) {
570
+ var e_7, _a, e_8, _b, e_9, _c, e_10, _d, e_11, _e, e_12, _f;
571
+ var next = pkg;
572
+ var _loop_1 = function (entry) {
573
+ if (!entry.dirty && entry.pendingRelationship === undefined) {
574
+ return "continue";
575
+ }
576
+ var rel = entry.pendingRelationship != null ? entry.pendingRelationship : relationshipsForPart(next, mainPartName).items.find(function (item) { return item.id === entry.relationshipId; });
577
+ next = replaceOrAddPackagePart(next, mainPartName, entry.partName, entry.contentType, entry.data, rel);
578
+ entry.dirty = false;
579
+ entry.pendingRelationship = undefined;
580
+ };
581
+ try {
582
+ for (var _g = __values(this.entries.values()), _h = _g.next(); !_h.done; _h = _g.next()) {
583
+ var entry = _h.value;
584
+ _loop_1(entry);
585
+ }
586
+ }
587
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
588
+ finally {
589
+ try {
590
+ if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
591
+ }
592
+ finally { if (e_7) throw e_7.error; }
593
+ }
594
+ var _loop_2 = function (entry) {
595
+ if (!entry.dirty && entry.pendingRelationship === undefined) {
596
+ return "continue";
597
+ }
598
+ var rel = entry.pendingRelationship != null ? entry.pendingRelationship : relationshipsForPart(next, mainPartName).items.find(function (item) { return item.id === entry.relationshipId; });
599
+ next = replaceOrAddPackagePart(next, mainPartName, entry.partName, entry.contentType, entry.data, rel);
600
+ entry.dirty = false;
601
+ entry.pendingRelationship = undefined;
602
+ };
603
+ try {
604
+ for (var _j = __values(this.iconEntries.values()), _k = _j.next(); !_k.done; _k = _j.next()) {
605
+ var entry = _k.value;
606
+ _loop_2(entry);
607
+ }
608
+ }
609
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
610
+ finally {
611
+ try {
612
+ if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
613
+ }
614
+ finally { if (e_8) throw e_8.error; }
615
+ }
616
+ // Merge pending external (link) relationships — no parts (hyperlinks pattern).
617
+ var pendingExternalRels = __spread(this.externalByRelationshipId.values()).map(function (entry) { return entry.pendingRelationship; })
618
+ .filter(function (rel) { return rel !== undefined; });
619
+ if (pendingExternalRels.length > 0) {
620
+ var existing = relationshipsForPart(next, mainPartName);
621
+ var merged = mergePendingRelationships(existing, pendingExternalRels);
622
+ try {
623
+ for (var _l = __values(this.externalByRelationshipId.values()), _m = _l.next(); !_m.done; _m = _l.next()) {
624
+ var entry = _m.value;
625
+ entry.pendingRelationship = undefined;
626
+ }
627
+ }
628
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
629
+ finally {
630
+ try {
631
+ if (_m && !_m.done && (_c = _l.return)) _c.call(_l);
632
+ }
633
+ finally { if (e_9) throw e_9.error; }
634
+ }
635
+ next = withPartRelationships(next, mainPartName, merged);
636
+ }
637
+ try {
638
+ for (var _o = __values(this.pendingRemovals), _p = _o.next(); !_p.done; _p = _o.next()) {
639
+ var entry = _p.value;
640
+ next = removeOleObjectPartFromPackage(next, mainPartName, entry);
641
+ }
642
+ }
643
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
644
+ finally {
645
+ try {
646
+ if (_p && !_p.done && (_d = _o.return)) _d.call(_o);
647
+ }
648
+ finally { if (e_10) throw e_10.error; }
649
+ }
650
+ this.pendingRemovals.length = 0;
651
+ try {
652
+ for (var _q = __values(this.pendingIconRemovals), _r = _q.next(); !_r.done; _r = _q.next()) {
653
+ var entry = _r.value;
654
+ next = removeOleIconPartFromPackage(next, mainPartName, entry);
655
+ }
656
+ }
657
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
658
+ finally {
659
+ try {
660
+ if (_r && !_r.done && (_e = _q.return)) _e.call(_q);
661
+ }
662
+ finally { if (e_11) throw e_11.error; }
663
+ }
664
+ this.pendingIconRemovals.length = 0;
665
+ var _loop_3 = function (relationshipId) {
666
+ next = withFilteredPartRelationshipsLocal(next, mainPartName, function (rel) { return rel.id !== relationshipId; });
667
+ };
668
+ try {
669
+ for (var _s = __values(this.pendingExternalRemovals), _t = _s.next(); !_t.done; _t = _s.next()) {
670
+ var relationshipId = _t.value;
671
+ _loop_3(relationshipId);
672
+ }
673
+ }
674
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
675
+ finally {
676
+ try {
677
+ if (_t && !_t.done && (_f = _s.return)) _f.call(_s);
678
+ }
679
+ finally { if (e_12) throw e_12.error; }
680
+ }
681
+ this.pendingExternalRemovals.length = 0;
682
+ return next;
683
+ };
684
+ return OleObjectCatalog;
685
+ }());
686
+ export { OleObjectCatalog };
687
+ function mergePendingRelationships(existing, add) {
688
+ var e_13, _a;
689
+ if (add.length === 0) {
690
+ return existing;
691
+ }
692
+ var used = new Set(existing.items.map(function (item) { return item.id; }));
693
+ var next = __spread(existing.items);
694
+ try {
695
+ for (var add_1 = __values(add), add_1_1 = add_1.next(); !add_1_1.done; add_1_1 = add_1.next()) {
696
+ var rel = add_1_1.value;
697
+ var id = rel.id;
698
+ while (used.has(id)) {
699
+ id = allocateRelationshipId(used);
700
+ }
701
+ used.add(id);
702
+ next.push(__assign({}, rel, { id: id }));
703
+ }
704
+ }
705
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
706
+ finally {
707
+ try {
708
+ if (add_1_1 && !add_1_1.done && (_a = add_1.return)) _a.call(add_1);
709
+ }
710
+ finally { if (e_13) throw e_13.error; }
711
+ }
712
+ return relationshipsWith(next, existing.opaque);
713
+ }
714
+ function relativeTarget(partNameValue) {
715
+ return partNameValue.slice('/word/'.length);
716
+ }
717
+ /** First unused `oleObject{N}.bin` part name (deterministic, no dedupe). */
718
+ function allocateEmbeddingPartName(used) {
719
+ var index = 1;
720
+ while (used.has(partNameKey("" + EMBEDDINGS_PART_PREFIX + String(index) + EMBEDDINGS_PART_SUFFIX))) {
721
+ index += 1;
722
+ }
723
+ return partName("" + EMBEDDINGS_PART_PREFIX + String(index) + EMBEDDINGS_PART_SUFFIX);
724
+ }
725
+ /** First unused `image{N}.{png|jpeg}` part name (images module parity). */
726
+ function allocateIconPartName(contentType, used) {
727
+ var ext = extensionForIconContentType(contentType);
728
+ var index = 1;
729
+ while (used.has(partNameKey("" + MEDIA_PART_PREFIX + String(index) + "." + ext))) {
730
+ index += 1;
731
+ }
732
+ return partName("" + MEDIA_PART_PREFIX + String(index) + "." + ext);
733
+ }
734
+ function extensionForIconContentType(contentType) {
735
+ return contentType === JPEG_CONTENT_TYPE ? 'jpeg' : 'png';
736
+ }
737
+ function sha256Hex(data) {
738
+ return sha256Digest(data);
739
+ }
740
+ function usedPartNameKeys(document, catalog) {
741
+ var e_14, _a, e_15, _b;
742
+ var used = new Set();
743
+ try {
744
+ for (var _c = __values(document.opcPackage().parts), _d = _c.next(); !_d.done; _d = _c.next()) {
745
+ var part = _d.value;
746
+ used.add(partNameKey(part.name));
747
+ }
748
+ }
749
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
750
+ finally {
751
+ try {
752
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
753
+ }
754
+ finally { if (e_14) throw e_14.error; }
755
+ }
756
+ try {
757
+ for (var _e = __values(catalog.pendingPartNames()), _f = _e.next(); !_f.done; _f = _e.next()) {
758
+ var name_1 = _f.value;
759
+ used.add(partNameKey(name_1));
760
+ }
761
+ }
762
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
763
+ finally {
764
+ try {
765
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
766
+ }
767
+ finally { if (e_15) throw e_15.error; }
768
+ }
769
+ return used;
770
+ }
771
+ function removeOleObjectPartFromPackage(pkg, mainPartName, entry) {
772
+ var next = withRemovedPartLocal(pkg, entry.partName);
773
+ next = withRemovedContentTypeOverrideLocal(next, entry.partName);
774
+ next = withFilteredPartRelationshipsLocal(next, mainPartName, function (rel) { return rel.id !== entry.relationshipId; });
775
+ return next;
776
+ }
777
+ function removeOleIconPartFromPackage(pkg, mainPartName, entry) {
778
+ var next = withRemovedPartLocal(pkg, entry.partName);
779
+ next = withRemovedContentTypeOverrideLocal(next, entry.partName);
780
+ next = withFilteredPartRelationshipsLocal(next, mainPartName, function (rel) { return rel.id !== entry.relationshipId; });
781
+ return next;
782
+ }
783
+ function withRemovedPartLocal(pkg, name) {
784
+ var key = partNameKey(name);
785
+ var parts = pkg.parts.filter(function (part) { return partNameKey(part.name) !== key; });
786
+ if (parts.length === pkg.parts.length) {
787
+ return pkg;
788
+ }
789
+ return __assign({}, pkg, { parts: parts });
790
+ }
791
+ function withRemovedContentTypeOverrideLocal(pkg, logicalPartName) {
792
+ return __assign({}, pkg, { contentTypes: {
793
+ records: pkg.contentTypes.records.filter(function (record) { return !(record.kind === 'override' && record.partName === logicalPartName); }),
794
+ } });
795
+ }
796
+ function withFilteredPartRelationshipsLocal(pkg, source, keep) {
797
+ var existing = relationshipsForPart(pkg, source);
798
+ var kept = existing.items.filter(keep);
799
+ if (kept.length === existing.items.length) {
800
+ return pkg;
801
+ }
802
+ return withPartRelationships(pkg, source, relationshipsWith(kept, existing.opaque));
803
+ }
804
+ function isOleObjectRelationshipType(type) {
805
+ return (type === OLE_OBJECT_RELATIONSHIP_TYPE ||
806
+ type === OLE_OBJECT_LINK_LONG_PATH_RELATIONSHIP_TYPE);
807
+ }
808
+ function isImageRelationshipType(type) {
809
+ return type === IMAGE_RELATIONSHIP_TYPE;
810
+ }
811
+ function contentTypeForIconPart(part) {
812
+ if (part.contentType === PNG_CONTENT_TYPE || part.contentType === JPEG_CONTENT_TYPE) {
813
+ return part.contentType;
814
+ }
815
+ return undefined;
816
+ }
817
+ /**
818
+ * Load the OLE-object catalog from Main-WordDocument relationships of the
819
+ * `oleObject` type (and the long-path link variant) plus PNG/JPEG image
820
+ * relationships used as OLE icon/preview media (TASK-8056).
821
+ *
822
+ * Internal oleObject targets load embedded parts; external targets load
823
+ * link target strings only (no part). Image relationships with PNG/JPEG
824
+ * content types load into the icon catalog.
825
+ *
826
+ * @private
827
+ */
828
+ export function loadOleObjectCatalog(pkg, mainPartName) {
829
+ var e_16, _a;
830
+ var rels = relationshipsForPart(pkg, mainPartName);
831
+ var entries = new Map();
832
+ var externalByRelationshipId = new Map();
833
+ var iconEntries = new Map();
834
+ try {
835
+ for (var _b = __values(rels.items), _c = _b.next(); !_c.done; _c = _b.next()) {
836
+ var rel = _c.value;
837
+ if (isOleObjectRelationshipType(rel.type)) {
838
+ // External targets are linked objects (TASK-8055); store the target string only.
839
+ if (rel.targetMode === TargetMode.External) {
840
+ externalByRelationshipId.set(rel.id, {
841
+ relationshipId: rel.id,
842
+ target: rel.target,
843
+ relationshipType: rel.type,
844
+ pendingRelationship: undefined,
845
+ });
846
+ continue;
847
+ }
848
+ // Long-path is a link-only product type; ignore internal targets for it.
849
+ if (rel.type === OLE_OBJECT_LINK_LONG_PATH_RELATIONSHIP_TYPE) {
850
+ continue;
851
+ }
852
+ var target = resolveInternalTargetLocal(rel.target, mainPartName);
853
+ var part = partByName(pkg, target);
854
+ if (part === undefined) {
855
+ continue; // dangling relationship: body parse keeps the object; GC handles the rest
856
+ }
857
+ entries.set(part.name, {
858
+ partName: part.name,
859
+ relationshipId: rel.id,
860
+ relationshipType: rel.type,
861
+ contentType: part.contentType,
862
+ data: part.data,
863
+ dirty: false,
864
+ pendingRelationship: undefined,
865
+ });
866
+ continue;
867
+ }
868
+ // TASK-8056: PNG/JPEG image relationships are candidates for icon media.
869
+ if (!isImageRelationshipType(rel.type) || rel.targetMode === TargetMode.External) {
870
+ continue;
871
+ }
872
+ var imageTarget = resolveInternalTargetLocal(rel.target, mainPartName);
873
+ var imagePart = partByName(pkg, imageTarget);
874
+ if (imagePart === undefined) {
875
+ continue;
876
+ }
877
+ var iconContentType = contentTypeForIconPart(imagePart);
878
+ if (iconContentType === undefined) {
879
+ continue;
880
+ }
881
+ iconEntries.set(imagePart.name, {
882
+ partName: imagePart.name,
883
+ relationshipId: rel.id,
884
+ relationshipType: rel.type,
885
+ contentType: iconContentType,
886
+ data: imagePart.data,
887
+ dirty: false,
888
+ pendingRelationship: undefined,
889
+ });
890
+ }
891
+ }
892
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
893
+ finally {
894
+ try {
895
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
896
+ }
897
+ finally { if (e_16) throw e_16.error; }
898
+ }
899
+ return new OleObjectCatalog(entries, externalByRelationshipId, iconEntries);
900
+ }
901
+ function resolveInternalTargetLocal(target, mainPartName) {
902
+ if (target.startsWith('/')) {
903
+ return partName(target);
904
+ }
905
+ // Relative targets resolve against the source part directory (/word/…).
906
+ var base = mainPartName.slice(0, mainPartName.lastIndexOf('/') + 1);
907
+ return partName("" + base + target);
908
+ }