@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,595 @@
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 __values = (this && this.__values) || function (o) {
13
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
14
+ if (m) return m.call(o);
15
+ return {
16
+ next: function () {
17
+ if (o && i >= o.length) o = void 0;
18
+ return { value: o && o[i++], done: !o };
19
+ }
20
+ };
21
+ };
22
+ var __read = (this && this.__read) || function (o, n) {
23
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
24
+ if (!m) return o;
25
+ var i = m.call(o), r, ar = [], e;
26
+ try {
27
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
28
+ }
29
+ catch (error) { e = { error: error }; }
30
+ finally {
31
+ try {
32
+ if (r && !r.done && (m = i["return"])) m.call(i);
33
+ }
34
+ finally { if (e) throw e.error; }
35
+ }
36
+ return ar;
37
+ };
38
+ var __spread = (this && this.__spread) || function () {
39
+ for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
40
+ return ar;
41
+ };
42
+ /**
43
+ * OLE object typed DOM (TASK-8053): enums, wire-form model, and attribute /
44
+ * child patch codec over the stored `w:object` element.
45
+ *
46
+ * One semantic model over two schema-backed wire encodings:
47
+ * - **office** — `o:OLEObject` child (transitional `vml-officeDrawing.xsd`
48
+ * `CT_OLEObject`, ECMA-376-4 §19.2.2.20); what Word writes today.
49
+ * - **wml** — `w:objectEmbed` / `w:objectLink` children (transitional
50
+ * `wml.xsd` `CT_ObjectEmbed` line 1198 / `CT_ObjectLink` line 1211;
51
+ * ECMA-376-1 §17.3.3.20/§17.3.3.21).
52
+ *
53
+ * Non-negotiable (`.agent/policies/security.md`): this DOM never executes,
54
+ * activates, or fetches anything. Payload bytes are not surfaced here
55
+ * (TASK-8054 owns that decision under human GO Q1).
56
+ *
57
+ * @packageDocumentation
58
+ */
59
+ import { pointToTwips, twipsToPoint } from '../document/length';
60
+ import { objectValues } from '../../core/compat/object-compat';
61
+ import { DocxError } from '../../core/errors/index';
62
+ /**
63
+ * Office namespace for VML Office Drawing / `o:OLEObject`.
64
+ *
65
+ * Source: transitional `vml-officeDrawing.xsd` `targetNamespace`
66
+ * (`urn:schemas-microsoft-com:office:office`).
67
+ */
68
+ export var OFFICE_OLE_NAMESPACE = 'urn:schemas-microsoft-com:office:office';
69
+ /** WordprocessingML transitional namespace (local constant to avoid cycles). */
70
+ var WML_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
71
+ /**
72
+ * Kind of OLE object connection (`o:OLEObject/@Type`, `ST_OLEType`:
73
+ * `Embed` | `Link`; the WML-native form encodes the same choice as
74
+ * `w:objectEmbed` vs `w:objectLink` element selection).
75
+ *
76
+ * @private
77
+ */
78
+ export var OleLinkType = {
79
+ /** Embedded storage part (`word/embeddings/*.bin`). */
80
+ Embed: 'embed',
81
+ /** External link target (stored, never fetched). */
82
+ Link: 'link',
83
+ };
84
+ /**
85
+ * Visual representation of the object (`o:OLEObject/@DrawAspect`,
86
+ * `ST_OLEDrawAspect`: `Content` | `Icon`; WML-native `drawAspect` uses the
87
+ * lowercase tokens `content` | `icon` — both decode to this enum).
88
+ *
89
+ * @private
90
+ */
91
+ export var OleDrawAspect = {
92
+ /** Render the object's current content. */
93
+ Content: 'content',
94
+ /** Render a placeholder icon. */
95
+ Icon: 'icon',
96
+ };
97
+ /**
98
+ * Link refresh mode (`o:OLEObject/@UpdateMode`, `ST_OLEUpdateMode`:
99
+ * `Always` | `OnCall`; WML-native `updateMode`: `always` | `onCall`).
100
+ * Meaningful for linked objects only.
101
+ *
102
+ * @private
103
+ */
104
+ export var OleUpdateMode = {
105
+ /** Update automatically. */
106
+ Always: 'always',
107
+ /** Update on caller request. */
108
+ OnCall: 'onCall',
109
+ };
110
+ /** Wire-form discriminant for the office (`o:OLEObject`) encoding. */
111
+ var OFFICE_OLE_ELEMENT = 'OLEObject';
112
+ /** Wire-form discriminants for the WML-native encodings. */
113
+ var WML_EMBED_ELEMENT = 'objectEmbed';
114
+ var WML_LINK_ELEMENT = 'objectLink';
115
+ /** `ST_OLEType` tokens (office form, capitalized). */
116
+ var OLE_TYPE_TOKENS = { Embed: 'Embed', Link: 'Link' };
117
+ /** `ST_OLEDrawAspect` tokens (office form, capitalized). */
118
+ var OLE_ASPECT_TOKENS = { Content: 'Content', Icon: 'Icon' };
119
+ /** `ST_OLEUpdateMode` tokens (office form, capitalized). */
120
+ var OLE_UPDATE_TOKENS = { Always: 'Always', OnCall: 'OnCall' };
121
+ /** WML-native lowercase tokens (`ST_ObjectDrawAspect` / `ST_ObjectUpdateMode`). */
122
+ var WML_ASPECT_TOKENS = { Content: 'content', Icon: 'icon' };
123
+ var WML_UPDATE_TOKENS = { Always: 'always', OnCall: 'onCall' };
124
+ /** Element child of an {@link OpenXmlElement}. */
125
+ function elementChildren(el) {
126
+ return el.children.filter(function (c) { return c.kind === 'element'; });
127
+ }
128
+ /** Attribute value by namespace + local name. */
129
+ function attributeValue(el, namespaceUri, localName) {
130
+ var __ts33_0;
131
+ return ((__ts33_0 = el.attributes.find(function (a) { return a.namespaceUri === namespaceUri && a.localName === localName; })), __ts33_0 == null ? undefined : __ts33_0.value);
132
+ }
133
+ /**
134
+ * Resolve the OLE child of a `w:object` element and its wire form.
135
+ * Returns `undefined` when no recognized OLE child exists (the element
136
+ * stays opaque per the TASK-8022 rule).
137
+ *
138
+ * @private
139
+ */
140
+ export function resolveOleChild(element) {
141
+ var e_1, _a;
142
+ try {
143
+ for (var _b = __values(elementChildren(element)), _c = _b.next(); !_c.done; _c = _b.next()) {
144
+ var child = _c.value;
145
+ if (child.namespaceUri === OFFICE_OLE_NAMESPACE &&
146
+ child.localName === OFFICE_OLE_ELEMENT) {
147
+ return { oleElement: child, wireForm: 'office' };
148
+ }
149
+ if (child.namespaceUri === WML_NS &&
150
+ (child.localName === WML_EMBED_ELEMENT || child.localName === WML_LINK_ELEMENT)) {
151
+ return { oleElement: child, wireForm: 'wml' };
152
+ }
153
+ }
154
+ }
155
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
156
+ finally {
157
+ try {
158
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
159
+ }
160
+ finally { if (e_1) throw e_1.error; }
161
+ }
162
+ return undefined;
163
+ }
164
+ /** Initial DOM state parsed at load (no mutation). */
165
+ export function parseOleObjectDomState(element, oleElement, wireForm) {
166
+ return { element: element, oleElement: oleElement, wireForm: wireForm };
167
+ }
168
+ // ---------------------------------------------------------------------------
169
+ // Read codec (office + wml forms)
170
+ // ---------------------------------------------------------------------------
171
+ /** Read `@Type` / element choice as a typed link kind. */
172
+ export function readLinkType(state) {
173
+ if (state.wireForm === 'wml') {
174
+ return state.oleElement.localName === WML_LINK_ELEMENT ? OleLinkType.Link : OleLinkType.Embed;
175
+ }
176
+ var type = attributeValue(state.oleElement, '', 'Type');
177
+ if (type === OLE_TYPE_TOKENS.Link) {
178
+ return OleLinkType.Link;
179
+ }
180
+ if (type === OLE_TYPE_TOKENS.Embed) {
181
+ return OleLinkType.Embed;
182
+ }
183
+ return undefined; // unknown/malformed stays residual
184
+ }
185
+ /** Read `@ProgID` (office) / `@progId` (wml). */
186
+ export function readProgId(state) {
187
+ return state.wireForm === 'wml'
188
+ ? attributeValue(state.oleElement, '', 'progId')
189
+ : attributeValue(state.oleElement, '', 'ProgID');
190
+ }
191
+ /** Read `@ShapeID` (office) / `@shapeId` (wml). */
192
+ export function readShapeId(state) {
193
+ return state.wireForm === 'wml'
194
+ ? attributeValue(state.oleElement, '', 'shapeId')
195
+ : attributeValue(state.oleElement, '', 'ShapeID');
196
+ }
197
+ /** Read `@DrawAspect` / `@drawAspect` in either casing. */
198
+ export function readDrawAspect(state) {
199
+ if (state.wireForm === 'wml') {
200
+ var v_1 = attributeValue(state.oleElement, '', 'drawAspect');
201
+ if (v_1 === WML_ASPECT_TOKENS.Content) {
202
+ return OleDrawAspect.Content;
203
+ }
204
+ if (v_1 === WML_ASPECT_TOKENS.Icon) {
205
+ return OleDrawAspect.Icon;
206
+ }
207
+ return undefined;
208
+ }
209
+ var v = attributeValue(state.oleElement, '', 'DrawAspect');
210
+ if (v === OLE_ASPECT_TOKENS.Content) {
211
+ return OleDrawAspect.Content;
212
+ }
213
+ if (v === OLE_ASPECT_TOKENS.Icon) {
214
+ return OleDrawAspect.Icon;
215
+ }
216
+ return undefined;
217
+ }
218
+ /**
219
+ * Read `@ObjectID` (office form only; no WML-native counterpart — Office
220
+ * regenerates it per save and does not support it on linked objects,
221
+ * [MS-OI29500] §2.1.1834).
222
+ */
223
+ export function readObjectId(state) {
224
+ return state.wireForm === 'wml'
225
+ ? undefined
226
+ : attributeValue(state.oleElement, '', 'ObjectID');
227
+ }
228
+ /** Read `@UpdateMode` (office) / required `@updateMode` (wml link). */
229
+ export function readUpdateMode(state) {
230
+ if (state.wireForm === 'wml') {
231
+ if (state.oleElement.localName !== WML_LINK_ELEMENT) {
232
+ return undefined;
233
+ }
234
+ var v_2 = attributeValue(state.oleElement, '', 'updateMode');
235
+ if (v_2 === WML_UPDATE_TOKENS.Always) {
236
+ return OleUpdateMode.Always;
237
+ }
238
+ if (v_2 === WML_UPDATE_TOKENS.OnCall) {
239
+ return OleUpdateMode.OnCall;
240
+ }
241
+ return undefined;
242
+ }
243
+ var v = attributeValue(state.oleElement, '', 'UpdateMode');
244
+ if (v === OLE_UPDATE_TOKENS.Always) {
245
+ return OleUpdateMode.Always;
246
+ }
247
+ if (v === OLE_UPDATE_TOKENS.OnCall) {
248
+ return OleUpdateMode.OnCall;
249
+ }
250
+ return undefined;
251
+ }
252
+ /** `ST_TrueFalseBlank` parse: t/true/on → true; f/false/off/0 → false. */
253
+ function parseTrueFalseBlank(value) {
254
+ var normalized = value.trim().toLowerCase();
255
+ if (normalized === 't' || normalized === 'true' || normalized === 'on') {
256
+ return true;
257
+ }
258
+ if (normalized === 'f' || normalized === 'false' || normalized === 'off' || normalized === '0') {
259
+ return false;
260
+ }
261
+ return undefined;
262
+ }
263
+ /** True when the attribute value is the explicit-false `ST_TrueFalseBlank` form. */
264
+ function isExplicitFalse(value) {
265
+ var normalized = value.trim().toLowerCase();
266
+ return (normalized === 'f' || normalized === 'false' || normalized === 'off' || normalized === '0');
267
+ }
268
+ /**
269
+ * Read `o:LockedField` child (office) / `@lockedField` (wml link).
270
+ * Returns `undefined` when absent or unparseable (residual).
271
+ */
272
+ export function readLockedField(state) {
273
+ if (state.wireForm === 'wml') {
274
+ if (state.oleElement.localName !== WML_LINK_ELEMENT) {
275
+ return undefined;
276
+ }
277
+ var v = attributeValue(state.oleElement, '', 'lockedField');
278
+ return v === undefined ? undefined : parseTrueFalseBlank(v);
279
+ }
280
+ var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'LockedField'; });
281
+ if (child === undefined) {
282
+ return undefined;
283
+ }
284
+ var text = child.children.find(function (c) { return c.kind === 'text'; });
285
+ if (text === undefined) {
286
+ // `<o:LockedField/>` — blank parses as true per ST_TrueFalseBlank.
287
+ return true;
288
+ }
289
+ return parseTrueFalseBlank(text.value);
290
+ }
291
+ /** Read `o:LinkType` child (office form only; `ST_OLELinkType` is a string). */
292
+ export function readLinkTypeDescription(state) {
293
+ if (state.wireForm !== 'office') {
294
+ return undefined;
295
+ }
296
+ var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'LinkType'; });
297
+ var text = (child == null ? undefined : child.children).find(function (c) { return c.kind === 'text'; });
298
+ return text == null ? undefined : text.value;
299
+ }
300
+ /** Read `o:FieldCodes` child (office) / `@fieldCodes` (wml). */
301
+ export function readFieldCodes(state) {
302
+ if (state.wireForm === 'wml') {
303
+ return attributeValue(state.oleElement, '', 'fieldCodes');
304
+ }
305
+ var child = elementChildren(state.oleElement).find(function (c) { return c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === 'FieldCodes'; });
306
+ var text = (child == null ? undefined : child.children).find(function (c) { return c.kind === 'text'; });
307
+ return text == null ? undefined : text.value;
308
+ }
309
+ /**
310
+ * Parse an `ST_TwipsMeasure` value (`N` twips or `Npt` points) into points.
311
+ * Wire conversion happens only at this boundary.
312
+ */
313
+ function parseTwipsMeasureAsPoints(value) {
314
+ var trimmed = value.trim();
315
+ if (trimmed.endsWith('pt')) {
316
+ var pts = Number(trimmed.slice(0, -2));
317
+ return Number.isFinite(pts) ? pts : undefined;
318
+ }
319
+ var twips = Number(trimmed);
320
+ return Number.isFinite(twips) ? twipsToPoint(twips) : undefined;
321
+ }
322
+ /**
323
+ * Read `w:object/@dxaOrig` as points (accepts WML-qualified and unqualified
324
+ * spellings — the schema declares it unqualified; Word writes `w:`-prefixed
325
+ * in practice).
326
+ */
327
+ export function readOriginalWidth(state) {
328
+ var __ts33_1;
329
+ var v = ((__ts33_1 = attributeValue(state.element, WML_NS, 'dxaOrig')), __ts33_1 != null ? __ts33_1 : attributeValue(state.element, '', 'dxaOrig'));
330
+ return v === undefined ? undefined : parseTwipsMeasureAsPoints(v);
331
+ }
332
+ /** Read `w:object/@dyaOrig` as points (qualified/unqualified tolerant). */
333
+ export function readOriginalHeight(state) {
334
+ var __ts33_2;
335
+ var v = ((__ts33_2 = attributeValue(state.element, WML_NS, 'dyaOrig')), __ts33_2 != null ? __ts33_2 : attributeValue(state.element, '', 'dyaOrig'));
336
+ return v === undefined ? undefined : parseTwipsMeasureAsPoints(v);
337
+ }
338
+ // ---------------------------------------------------------------------------
339
+ // Write codec (patch-in-place)
340
+ // ---------------------------------------------------------------------------
341
+ /**
342
+ * Replace or remove one attribute on a cloned element, **preserving the
343
+ * original attribute position and prefix** (patch-in-place rule: attribute
344
+ * order is part of byte-stability). New attributes append at the end with
345
+ * the given prefix.
346
+ */
347
+ function withAttribute(el, namespaceUri, localName, value, prefix) {
348
+ var index = el.attributes.findIndex(function (a) { return a.namespaceUri === namespaceUri && a.localName === localName; });
349
+ if (value === undefined) {
350
+ if (index < 0) {
351
+ return el; // nothing to remove
352
+ }
353
+ return __assign({}, el, { attributes: el.attributes.filter(function (_, i) { return i !== index; }) });
354
+ }
355
+ // Preserve the existing prefix on replacement (e.g. w:dxaOrig stays
356
+ // w:-prefixed even when the caller passes ''); use the given prefix only
357
+ // for newly created attributes.
358
+ var existing = el.attributes[index];
359
+ var effectivePrefix = existing !== undefined ? existing.prefix : prefix;
360
+ var next = {
361
+ namespaceUri: namespaceUri,
362
+ localName: localName,
363
+ prefix: effectivePrefix,
364
+ value: value,
365
+ };
366
+ if (index >= 0) {
367
+ return __assign({}, el, { attributes: el.attributes.map(function (a, i) { return (i === index ? next : a); }) });
368
+ }
369
+ return __assign({}, el, { attributes: __spread(el.attributes, [next]) });
370
+ }
371
+ /**
372
+ * Replace the element's children, preserving every non-modeled child.
373
+ * The replacer receives the current element children and returns the next
374
+ * list (filter/append/remove).
375
+ */
376
+ function withChildren(el, replace) {
377
+ var next = replace(elementChildren(el));
378
+ // Keep text children (none modeled in CT_OLEObject today) before the
379
+ // element children, matching load order where both exist.
380
+ var textChildren = el.children.filter(function (c) { return c.kind === 'text'; });
381
+ return __assign({}, el, { children: __spread(textChildren, next) });
382
+ }
383
+ /** Shallow structural clone of the whole subtree (attributes preserved). */
384
+ function cloneElement(el) {
385
+ return {
386
+ kind: 'element',
387
+ namespaceUri: el.namespaceUri,
388
+ localName: el.localName,
389
+ prefix: el.prefix,
390
+ attributes: el.attributes.map(function (a) { return (__assign({}, a)); }),
391
+ namespaceDeclarations: el.namespaceDeclarations.map(function (n) { return (__assign({}, n)); }),
392
+ children: el.children.map(function (c) { return c.kind === 'element'
393
+ ? cloneElement(c)
394
+ : { kind: 'text', value: c.value }; }),
395
+ };
396
+ }
397
+ /** Error for value validation failures (mapped to `content/invalid-ole-object` by callers). */
398
+ function invalidEnum(name, value, allowed) {
399
+ throw new DocxError('content/invalid-ole-object', "Invalid OleObject " + name + " \"" + String(value) + "\"; expected one of: " + allowed.join(', '));
400
+ }
401
+ /**
402
+ * Runtime enum guard for values crossing the JS boundary (the type system
403
+ * narrows these to the union, but a JS caller can pass an arbitrary string).
404
+ * `never` via exhaustive check with the as-const member sets.
405
+ */
406
+ function assertEnumMember(name, value, members, tokens) {
407
+ var __ts33_3;
408
+ if (members.indexOf(value) === -1) {
409
+ invalidEnum(name, value, tokens);
410
+ }
411
+ return ((__ts33_3 = tokens[members.indexOf(value)]), __ts33_3 != null ? __ts33_3 : value);
412
+ }
413
+ /** Office + WML member lists, parallel to their token lists. */
414
+ var ASPECT_MEMBERS = [OleDrawAspect.Content, OleDrawAspect.Icon];
415
+ var UPDATE_MEMBERS = [OleUpdateMode.Always, OleUpdateMode.OnCall];
416
+ /** Validate + convert a draw-aspect input for the active wire form. */
417
+ function drawAspectToken(state, value) {
418
+ if (state.wireForm === 'wml') {
419
+ return assertEnumMember('drawAspect', value, ASPECT_MEMBERS, objectValues(WML_ASPECT_TOKENS));
420
+ }
421
+ return assertEnumMember('DrawAspect', value, ASPECT_MEMBERS, objectValues(OLE_ASPECT_TOKENS));
422
+ }
423
+ /** Validate + convert an update-mode input for the active wire form. */
424
+ function updateModeToken(state, value) {
425
+ if (state.wireForm === 'wml') {
426
+ return assertEnumMember('updateMode', value, UPDATE_MEMBERS, objectValues(WML_UPDATE_TOKENS));
427
+ }
428
+ return assertEnumMember('UpdateMode', value, UPDATE_MEMBERS, objectValues(OLE_UPDATE_TOKENS));
429
+ }
430
+ /**
431
+ * Format points as an `ST_TwipsMeasure` integral-twips attribute string.
432
+ * Conversion to wire units happens only at this boundary.
433
+ */
434
+ function formatPointsAsTwipsMeasure(points) {
435
+ var twips = pointToTwips(points);
436
+ if (twips <= 0 || !Number.isFinite(twips)) {
437
+ throw new DocxError('content/invalid-ole-object', 'OleObject original size must be a positive point value');
438
+ }
439
+ return String(twips);
440
+ }
441
+ /**
442
+ * Patch the DOM state with the given mutations and return the next state
443
+ * (new element + oleElement references; previous tree untouched).
444
+ *
445
+ * @private
446
+ */
447
+ export function applyOleDomMutations(state, mutations) {
448
+ var element = cloneElement(state.element);
449
+ var resolved = resolveOleChild(element);
450
+ if (resolved === undefined) {
451
+ // Defensive: callers only construct state with a resolved child.
452
+ throw new DocxError('content/invalid-ole-object', 'OLE object element lost its OLE child');
453
+ }
454
+ var oleElement = resolved.oleElement;
455
+ var nextElement = element;
456
+ var office = state.wireForm === 'office';
457
+ // All modeled attributes on o:OLEObject and w:object* WML children are
458
+ // schema-unqualified (no namespace, no prefix): `ProgID`, `DrawAspect`,
459
+ // `progId`, `dxaOrig`, … — serialize as bare localNames.
460
+ var attrNs = '';
461
+ var attrPrefix = '';
462
+ // -- w:object original-size attributes ---------------------------------
463
+ // Word writes these WML-qualified (`w:dxaOrig`); producers that emit them
464
+ // unqualified also parse (namespace ''). Create uses the 'w' prefix;
465
+ // replacement preserves whatever prefix the source carried.
466
+ if ('originalWidth' in mutations) {
467
+ nextElement = withAttribute(nextElement, WML_NS, 'dxaOrig', mutations.originalWidth === undefined
468
+ ? undefined
469
+ : formatPointsAsTwipsMeasure(mutations.originalWidth), 'w');
470
+ }
471
+ if ('originalHeight' in mutations) {
472
+ nextElement = withAttribute(nextElement, WML_NS, 'dyaOrig', mutations.originalHeight === undefined
473
+ ? undefined
474
+ : formatPointsAsTwipsMeasure(mutations.originalHeight), 'w');
475
+ }
476
+ // -- o:OLEObject / w:object* attributes --------------------------------
477
+ // Note: the WML form encodes Embed/Link in the element choice
478
+ // (w:objectEmbed vs w:objectLink); converting between element names is a
479
+ // form conversion and is out of scope (wireForm is fixed at load), so a
480
+ // `type` mutation only applies on the office form. Clearing `@Type` is
481
+ // allowed there (embed is the schema default when absent).
482
+ if ('type' in mutations && office) {
483
+ var value = mutations.type;
484
+ if (value === undefined) {
485
+ oleElement = withAttribute(oleElement, attrNs, 'Type', undefined, attrPrefix);
486
+ }
487
+ else if (value === OleLinkType.Link) {
488
+ oleElement = withAttribute(oleElement, attrNs, 'Type', OLE_TYPE_TOKENS.Link, attrPrefix);
489
+ }
490
+ else {
491
+ oleElement = withAttribute(oleElement, attrNs, 'Type', OLE_TYPE_TOKENS.Embed, attrPrefix);
492
+ }
493
+ }
494
+ if ('progId' in mutations) {
495
+ oleElement = withAttribute(oleElement, attrNs, office ? 'ProgID' : 'progId', mutations.progId, attrPrefix);
496
+ }
497
+ if ('shapeId' in mutations) {
498
+ oleElement = withAttribute(oleElement, attrNs, office ? 'ShapeID' : 'shapeId', mutations.shapeId, attrPrefix);
499
+ }
500
+ if ('drawAspect' in mutations) {
501
+ var value = mutations.drawAspect;
502
+ oleElement = withAttribute(oleElement, attrNs, office ? 'DrawAspect' : 'drawAspect', value === undefined ? undefined : drawAspectToken(state, value), attrPrefix);
503
+ }
504
+ if ('objectId' in mutations && office) {
505
+ oleElement = withAttribute(oleElement, attrNs, 'ObjectID', mutations.objectId, attrPrefix);
506
+ }
507
+ if ('updateMode' in mutations) {
508
+ var value = mutations.updateMode;
509
+ if (office || state.oleElement.localName === WML_LINK_ELEMENT) {
510
+ oleElement = withAttribute(oleElement, attrNs, office ? 'UpdateMode' : 'updateMode', value === undefined ? undefined : updateModeToken(state, value), attrPrefix);
511
+ }
512
+ }
513
+ // -- office-form children (LinkType / LockedField / FieldCodes) --------
514
+ if (office) {
515
+ oleElement = withChildren(oleElement, function (children) {
516
+ var next = children;
517
+ if ('linkTypeDescription' in mutations) {
518
+ next = setOfficeChild(next, 'LinkType', mutations.linkTypeDescription);
519
+ }
520
+ if ('lockedField' in mutations) {
521
+ next = setOfficeChild(next, 'LockedField', mutations.lockedField === undefined
522
+ ? undefined
523
+ : mutations.lockedField
524
+ ? 't'
525
+ : 'f');
526
+ }
527
+ if ('fieldCodes' in mutations) {
528
+ next = setOfficeChild(next, 'FieldCodes', mutations.fieldCodes);
529
+ }
530
+ return next;
531
+ });
532
+ }
533
+ else if ('lockedField' in mutations || 'fieldCodes' in mutations) {
534
+ // WML link form carries lockedField/fieldCodes as attributes.
535
+ if ('lockedField' in mutations) {
536
+ var value = mutations.lockedField;
537
+ oleElement = withAttribute(oleElement, attrNs, 'lockedField', value === undefined ? undefined : value ? 'true' : 'false', attrPrefix);
538
+ }
539
+ if ('fieldCodes' in mutations) {
540
+ oleElement = withAttribute(oleElement, attrNs, 'fieldCodes', mutations.fieldCodes, attrPrefix);
541
+ }
542
+ }
543
+ // Splice the patched oleElement back into the element's children.
544
+ nextElement = __assign({}, nextElement, { children: nextElement.children.map(function (c) { return c.kind === 'element' && c === resolved.oleElement ? oleElement : c; }) });
545
+ return { element: nextElement, oleElement: oleElement, wireForm: state.wireForm };
546
+ }
547
+ /**
548
+ * Set or remove one office-form child (`o:LinkType`, `o:LockedField`,
549
+ * `o:FieldCodes`) preserving relative order; the child is appended at the
550
+ * end when newly created (CT_OLEObject child sequence is
551
+ * LinkType → LockedField → FieldCodes; setters that create children
552
+ * out of order would violate the sequence, so callers set values in an
553
+ * order-independent way here by always keeping the three slots sorted).
554
+ */
555
+ function setOfficeChild(children, localName, value) {
556
+ var filtered = children.filter(function (c) { return !(c.namespaceUri === OFFICE_OLE_NAMESPACE && c.localName === localName); });
557
+ if (value === undefined) {
558
+ return filtered;
559
+ }
560
+ var created = {
561
+ kind: 'element',
562
+ namespaceUri: OFFICE_OLE_NAMESPACE,
563
+ localName: localName,
564
+ prefix: 'o',
565
+ attributes: [],
566
+ namespaceDeclarations: [],
567
+ children: [{ kind: 'text', value: value }],
568
+ };
569
+ // Re-sort the three modeled slots into schema order relative to each other.
570
+ var order = ['LinkType', 'LockedField', 'FieldCodes'];
571
+ var slot = order.indexOf(localName);
572
+ var insertAt = filtered.findIndex(function (c) {
573
+ if (c.namespaceUri !== OFFICE_OLE_NAMESPACE) {
574
+ return false;
575
+ }
576
+ var other = order.indexOf(c.localName);
577
+ return other >= 0 && other > slot;
578
+ });
579
+ if (insertAt < 0) {
580
+ return __spread(filtered, [created]);
581
+ }
582
+ return __spread(filtered.slice(0, insertAt), [created], filtered.slice(insertAt));
583
+ }
584
+ /** Exported for the class: attribute lookup helper (namespace-qualified). */
585
+ export function oleAttributeValue(el, namespaceUri, localName) {
586
+ return attributeValue(el, namespaceUri, localName);
587
+ }
588
+ /** Exported for the class: element children helper. */
589
+ export function oleElementChildren(el) {
590
+ return elementChildren(el);
591
+ }
592
+ /** Exported for the class: explicit-false detection for LockedField. */
593
+ export function oleIsExplicitFalse(value) {
594
+ return isExplicitFalse(value);
595
+ }