@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,823 @@
1
+ var __read = (this && this.__read) || function (o, n) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
3
+ if (!m) return o;
4
+ var i = m.call(o), r, ar = [], e;
5
+ try {
6
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
7
+ }
8
+ catch (error) { e = { error: error }; }
9
+ finally {
10
+ try {
11
+ if (r && !r.done && (m = i["return"])) m.call(i);
12
+ }
13
+ finally { if (e) throw e.error; }
14
+ }
15
+ return ar;
16
+ };
17
+ var __spread = (this && this.__spread) || function () {
18
+ for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
19
+ return ar;
20
+ };
21
+ var __values = (this && this.__values) || function (o) {
22
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
23
+ if (m) return m.call(o);
24
+ return {
25
+ next: function () {
26
+ if (o && i >= o.length) o = void 0;
27
+ return { value: o && o[i++], done: !o };
28
+ }
29
+ };
30
+ };
31
+ var _a;
32
+ import { parseOnOff, serializeOnOff } from '../document/on-off';
33
+ import { elementChildren, isWml, wmlAttr, wmlElement, wValAttribute, WML, } from '../document/wml';
34
+ import { objectValues } from '../../core/compat/object-compat';
35
+ /**
36
+ * Office WordDocument relationships namespace for `r:id` on `CT_FontRel` / `CT_Rel`
37
+ * (Transitional `wml.xsd`).
38
+ */
39
+ var OFFICE_RELATIONSHIPS_NAMESPACE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
40
+ /**
41
+ * Font family values for `w:family/@w:val` (`ST_FontFamily`, Transitional `wml.xsd`).
42
+ *
43
+ * @private
44
+ */
45
+ export var FontFamily = {
46
+ Decorative: 'decorative',
47
+ Modern: 'modern',
48
+ Roman: 'roman',
49
+ Script: 'script',
50
+ Swiss: 'swiss',
51
+ Auto: 'auto',
52
+ };
53
+ /**
54
+ * Pitch values for `w:pitch/@w:val` (`ST_Pitch`, Transitional `wml.xsd`).
55
+ *
56
+ * @private
57
+ */
58
+ export var FontPitch = {
59
+ Fixed: 'fixed',
60
+ Variable: 'variable',
61
+ Default: 'default',
62
+ };
63
+ /**
64
+ * Embedded font face slot (`w:embedRegular` / `Bold` / `Italic` / `BoldItalic`).
65
+ *
66
+ * @private
67
+ */
68
+ export var FontEmbedSlot = {
69
+ Regular: 'regular',
70
+ Bold: 'bold',
71
+ Italic: 'italic',
72
+ BoldItalic: 'boldItalic',
73
+ };
74
+ var FONT_FAMILY_VALUES = new Set(objectValues(FontFamily));
75
+ var FONT_PITCH_VALUES = new Set(objectValues(FontPitch));
76
+ var EMBED_LOCAL_BY_SLOT = (_a = {},
77
+ _a[FontEmbedSlot.Regular] = 'embedRegular',
78
+ _a[FontEmbedSlot.Bold] = 'embedBold',
79
+ _a[FontEmbedSlot.Italic] = 'embedItalic',
80
+ _a[FontEmbedSlot.BoldItalic] = 'embedBoldItalic',
81
+ _a);
82
+ var EMBED_SLOT_BY_LOCAL = {
83
+ embedRegular: FontEmbedSlot.Regular,
84
+ embedBold: FontEmbedSlot.Bold,
85
+ embedItalic: FontEmbedSlot.Italic,
86
+ embedBoldItalic: FontEmbedSlot.BoldItalic,
87
+ };
88
+ /**
89
+ * One `w:font` row in `fontTable.xml` (`CT_Font`, Transitional `wml.xsd`).
90
+ *
91
+ * Models the full schema child sequence after `w:name`:
92
+ * `altName`, `panose1`, `charset`, `family`, `notTrueType`, `pitch`, `sig`,
93
+ * `embedRegular`, `embedBold`, `embedItalic`, `embedBoldItalic`, then residual
94
+ * unknown children.
95
+ *
96
+ * Substitution remains `w:altName` (ECMA-376-1 §17.8.3.1). Embed APIs expose
97
+ * relationship metadata only; they do not author or decode ODTTF binaries.
98
+ * `clearEmbed` drops the corresponding child element (markup only); package
99
+ * orphan cleanup of the target part is not performed in this MVP.
100
+ *
101
+ * @private
102
+ */
103
+ var FontTableFont = /** @class */ (function () {
104
+ /**
105
+ * @private
106
+ */
107
+ function FontTableFont(name, options, markDirty) {
108
+ this.nameValue = name;
109
+ this.alternateNameValue = options.alternateName;
110
+ this.panoseValue = options.panose;
111
+ this.charsetValue = options.charset;
112
+ this.familyValue = options.family;
113
+ this.familyRawValue = options.familyRaw;
114
+ this.notTrueTypeValue = options.notTrueType;
115
+ this.pitchValue = options.pitch;
116
+ this.pitchRawValue = options.pitchRaw;
117
+ this.signatureValue = options.signature;
118
+ this.embeds = options.embeds !== undefined ? options.embeds.map(cloneEmbed) : [];
119
+ this.residualChildren =
120
+ options.residualChildren !== undefined ? __spread(options.residualChildren) : [];
121
+ this.extraAttributes =
122
+ options.extraAttributes !== undefined ? __spread(options.extraAttributes) : [];
123
+ this.markDirty = markDirty;
124
+ }
125
+ Object.defineProperty(FontTableFont.prototype, "name", {
126
+ /**
127
+ * Primary name from `w:font/@w:name` (stored casing preserved).
128
+ *
129
+ * @public
130
+ */
131
+ get: function () {
132
+ return this.nameValue;
133
+ },
134
+ enumerable: true,
135
+ configurable: true
136
+ });
137
+ Object.defineProperty(FontTableFont.prototype, "alternateName", {
138
+ /**
139
+ * Alternate name list as stored on `w:altName/@w:val`, or `undefined` if absent.
140
+ *
141
+ * ECMA-376-1 §17.8.3.1: comma-delimited list; writers may set a single name or a
142
+ * full list string. Assign `undefined` (or empty / whitespace-only) to remove
143
+ * `w:altName`; the font entry is kept. Empty `w:val` is never emitted.
144
+ *
145
+ * @public
146
+ */
147
+ get: function () {
148
+ return this.alternateNameValue;
149
+ },
150
+ set: function (value) {
151
+ if (value === undefined || value.trim().length === 0) {
152
+ if (this.alternateNameValue === undefined) {
153
+ return;
154
+ }
155
+ this.alternateNameValue = undefined;
156
+ this.markDirty();
157
+ return;
158
+ }
159
+ if (this.alternateNameValue === value) {
160
+ return;
161
+ }
162
+ this.alternateNameValue = value;
163
+ this.markDirty();
164
+ },
165
+ enumerable: true,
166
+ configurable: true
167
+ });
168
+ Object.defineProperty(FontTableFont.prototype, "alternateNames", {
169
+ /**
170
+ * Split {@link alternateName} on commas; empty segments (adjacent commas) dropped
171
+ * per ECMA. Empty array when no `altName`.
172
+ *
173
+ * @public
174
+ */
175
+ get: function () {
176
+ var e_1, _a;
177
+ if (this.alternateNameValue === undefined) {
178
+ return [];
179
+ }
180
+ var parts = [];
181
+ try {
182
+ for (var _b = __values(this.alternateNameValue.split(',')), _c = _b.next(); !_c.done; _c = _b.next()) {
183
+ var segment = _c.value;
184
+ var trimmed = segment.trim();
185
+ if (trimmed.length > 0) {
186
+ parts.push(trimmed);
187
+ }
188
+ }
189
+ }
190
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
191
+ finally {
192
+ try {
193
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
194
+ }
195
+ finally { if (e_1) throw e_1.error; }
196
+ }
197
+ return parts;
198
+ },
199
+ enumerable: true,
200
+ configurable: true
201
+ });
202
+ Object.defineProperty(FontTableFont.prototype, "panose", {
203
+ /**
204
+ * PANOSE-1 classification from `w:panose1/@w:val` (`ST_Panose`), or `undefined`.
205
+ * Stored as the attribute string. Assign `undefined` / empty to clear.
206
+ *
207
+ * @public
208
+ */
209
+ get: function () {
210
+ return this.panoseValue;
211
+ },
212
+ set: function (value) {
213
+ var next = normalizeOptionalString(value);
214
+ if (this.panoseValue === next) {
215
+ return;
216
+ }
217
+ this.panoseValue = next;
218
+ this.markDirty();
219
+ },
220
+ enumerable: true,
221
+ configurable: true
222
+ });
223
+ Object.defineProperty(FontTableFont.prototype, "charset", {
224
+ /**
225
+ * Character set from `w:charset/@w:val` (`ST_UcharHexNumber`), or `undefined`.
226
+ * Stored as the attribute string. Assign `undefined` / empty to clear.
227
+ *
228
+ * @public
229
+ */
230
+ get: function () {
231
+ return this.charsetValue;
232
+ },
233
+ set: function (value) {
234
+ var next = normalizeOptionalString(value);
235
+ if (this.charsetValue === next) {
236
+ return;
237
+ }
238
+ this.charsetValue = next;
239
+ this.markDirty();
240
+ },
241
+ enumerable: true,
242
+ configurable: true
243
+ });
244
+ Object.defineProperty(FontTableFont.prototype, "family", {
245
+ /**
246
+ * Font family from `w:family/@w:val` (`ST_FontFamily`), or `undefined` when
247
+ * absent or not a known enumeration value on load.
248
+ *
249
+ * @throws RangeError when assigning a string that is not a {@link FontFamily} value.
250
+ *
251
+ * @public
252
+ */
253
+ get: function () {
254
+ return this.familyValue;
255
+ },
256
+ set: function (value) {
257
+ if (value === undefined) {
258
+ if (this.familyValue === undefined && this.familyRawValue === undefined) {
259
+ return;
260
+ }
261
+ this.familyValue = undefined;
262
+ this.familyRawValue = undefined;
263
+ this.markDirty();
264
+ return;
265
+ }
266
+ assertFontFamily(value);
267
+ if (this.familyValue === value && this.familyRawValue === undefined) {
268
+ return;
269
+ }
270
+ this.familyValue = value;
271
+ this.familyRawValue = undefined;
272
+ this.markDirty();
273
+ },
274
+ enumerable: true,
275
+ configurable: true
276
+ });
277
+ Object.defineProperty(FontTableFont.prototype, "notTrueType", {
278
+ /**
279
+ * `w:notTrueType` (`CT_OnOff`). `true` when the element is present without `val`
280
+ * or with a true `ST_OnOff` value; `false` when explicitly off; `undefined` when
281
+ * the child is absent.
282
+ *
283
+ * @public
284
+ */
285
+ get: function () {
286
+ return this.notTrueTypeValue;
287
+ },
288
+ set: function (value) {
289
+ if (this.notTrueTypeValue === value) {
290
+ return;
291
+ }
292
+ this.notTrueTypeValue = value;
293
+ this.markDirty();
294
+ },
295
+ enumerable: true,
296
+ configurable: true
297
+ });
298
+ Object.defineProperty(FontTableFont.prototype, "pitch", {
299
+ /**
300
+ * Pitch from `w:pitch/@w:val` (`ST_Pitch`), or `undefined` when absent or not a
301
+ * known enumeration value on load.
302
+ *
303
+ * @throws RangeError when assigning a string that is not a {@link FontPitch} value.
304
+ *
305
+ * @public
306
+ */
307
+ get: function () {
308
+ return this.pitchValue;
309
+ },
310
+ set: function (value) {
311
+ if (value === undefined) {
312
+ if (this.pitchValue === undefined && this.pitchRawValue === undefined) {
313
+ return;
314
+ }
315
+ this.pitchValue = undefined;
316
+ this.pitchRawValue = undefined;
317
+ this.markDirty();
318
+ return;
319
+ }
320
+ assertFontPitch(value);
321
+ if (this.pitchValue === value && this.pitchRawValue === undefined) {
322
+ return;
323
+ }
324
+ this.pitchValue = value;
325
+ this.pitchRawValue = undefined;
326
+ this.markDirty();
327
+ },
328
+ enumerable: true,
329
+ configurable: true
330
+ });
331
+ Object.defineProperty(FontTableFont.prototype, "signature", {
332
+ /**
333
+ * Supported Unicode / code-page bitmasks from `w:sig` (`CT_FontSig`), or
334
+ * `undefined` when the child is absent or missing a required attribute.
335
+ *
336
+ * @public
337
+ */
338
+ get: function () {
339
+ return this.signatureValue;
340
+ },
341
+ set: function (value) {
342
+ if (value === undefined) {
343
+ if (this.signatureValue === undefined) {
344
+ return;
345
+ }
346
+ this.signatureValue = undefined;
347
+ this.markDirty();
348
+ return;
349
+ }
350
+ var next = {
351
+ usb0: value.usb0,
352
+ usb1: value.usb1,
353
+ usb2: value.usb2,
354
+ usb3: value.usb3,
355
+ csb0: value.csb0,
356
+ csb1: value.csb1,
357
+ };
358
+ if (signaturesEqual(this.signatureValue, next)) {
359
+ return;
360
+ }
361
+ this.signatureValue = next;
362
+ this.markDirty();
363
+ },
364
+ enumerable: true,
365
+ configurable: true
366
+ });
367
+ /**
368
+ * Embedded font relationship metadata for each modeled embed child present on
369
+ * this row, in schema slot order.
370
+ *
371
+ * @public
372
+ */
373
+ FontTableFont.prototype.embedRefs = function () {
374
+ return this.embeds.map(toEmbedRef);
375
+ };
376
+ /**
377
+ * Embed metadata for `slot`, or `undefined` when that child is absent.
378
+ *
379
+ * @public
380
+ */
381
+ FontTableFont.prototype.embedRef = function (slot) {
382
+ assertFontEmbedSlot(slot);
383
+ var found = this.embeds.find(function (entry) { return entry.slot === slot; });
384
+ return found === undefined ? undefined : toEmbedRef(found);
385
+ };
386
+ /**
387
+ * Drop the embed child for `slot` from this font row (markup only).
388
+ * Does not remove package parts or relationships targeted by `r:id`.
389
+ * No-op when the slot is already absent.
390
+ *
391
+ * @public
392
+ */
393
+ FontTableFont.prototype.clearEmbed = function (slot) {
394
+ assertFontEmbedSlot(slot);
395
+ var index = this.embeds.findIndex(function (entry) { return entry.slot === slot; });
396
+ if (index < 0) {
397
+ return;
398
+ }
399
+ this.embeds.splice(index, 1);
400
+ this.markDirty();
401
+ };
402
+ /**
403
+ * @private
404
+ */
405
+ FontTableFont.prototype.serialize = function () {
406
+ var e_2, _a;
407
+ var children = [];
408
+ if (this.alternateNameValue !== undefined) {
409
+ children.push(wmlElement('altName', {
410
+ attributes: [wmlAttr('val', this.alternateNameValue)],
411
+ }));
412
+ }
413
+ if (this.panoseValue !== undefined) {
414
+ children.push(wmlElement('panose1', {
415
+ attributes: [wmlAttr('val', this.panoseValue)],
416
+ }));
417
+ }
418
+ if (this.charsetValue !== undefined) {
419
+ children.push(wmlElement('charset', {
420
+ attributes: [wmlAttr('val', this.charsetValue)],
421
+ }));
422
+ }
423
+ var familyEmit = this.familyValue != null ? this.familyValue : this.familyRawValue;
424
+ if (familyEmit !== undefined) {
425
+ children.push(wmlElement('family', {
426
+ attributes: [wmlAttr('val', familyEmit)],
427
+ }));
428
+ }
429
+ if (this.notTrueTypeValue !== undefined) {
430
+ children.push(serializeOnOff('notTrueType', this.notTrueTypeValue));
431
+ }
432
+ var pitchEmit = this.pitchValue != null ? this.pitchValue : this.pitchRawValue;
433
+ if (pitchEmit !== undefined) {
434
+ children.push(wmlElement('pitch', {
435
+ attributes: [wmlAttr('val', pitchEmit)],
436
+ }));
437
+ }
438
+ if (this.signatureValue !== undefined) {
439
+ children.push(serializeSignature(this.signatureValue));
440
+ }
441
+ var _loop_1 = function (slot) {
442
+ var embed = this_1.embeds.find(function (entry) { return entry.slot === slot; });
443
+ if (embed !== undefined) {
444
+ children.push(serializeEmbed(embed));
445
+ }
446
+ };
447
+ var this_1 = this;
448
+ try {
449
+ for (var _b = __values([
450
+ FontEmbedSlot.Regular,
451
+ FontEmbedSlot.Bold,
452
+ FontEmbedSlot.Italic,
453
+ FontEmbedSlot.BoldItalic,
454
+ ]), _c = _b.next(); !_c.done; _c = _b.next()) {
455
+ var slot = _c.value;
456
+ _loop_1(slot);
457
+ }
458
+ }
459
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
460
+ finally {
461
+ try {
462
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
463
+ }
464
+ finally { if (e_2) throw e_2.error; }
465
+ }
466
+ children.push.apply(children, __spread(this.residualChildren));
467
+ var attributes = __spread([
468
+ wmlAttr('name', this.nameValue)
469
+ ], this.extraAttributes);
470
+ return wmlElement('font', { attributes: attributes, children: children });
471
+ };
472
+ return FontTableFont;
473
+ }());
474
+ export { FontTableFont };
475
+ function cloneEmbed(embed) {
476
+ return {
477
+ slot: embed.slot,
478
+ relationshipId: embed.relationshipId,
479
+ fontKey: embed.fontKey,
480
+ subsetted: embed.subsetted,
481
+ extraAttributes: __spread(embed.extraAttributes),
482
+ children: __spread(embed.children),
483
+ namespaceDeclarations: __spread(embed.namespaceDeclarations),
484
+ };
485
+ }
486
+ function toEmbedRef(embed) {
487
+ return {
488
+ slot: embed.slot,
489
+ relationshipId: embed.relationshipId,
490
+ fontKey: embed.fontKey,
491
+ subsetted: embed.subsetted,
492
+ };
493
+ }
494
+ function normalizeOptionalString(value) {
495
+ if (value === undefined || value.trim().length === 0) {
496
+ return undefined;
497
+ }
498
+ return value;
499
+ }
500
+ function assertFontFamily(value) {
501
+ if (!FONT_FAMILY_VALUES.has(value)) {
502
+ throw new RangeError("Invalid FontFamily value: " + value);
503
+ }
504
+ }
505
+ function assertFontPitch(value) {
506
+ if (!FONT_PITCH_VALUES.has(value)) {
507
+ throw new RangeError("Invalid FontPitch value: " + value);
508
+ }
509
+ }
510
+ function assertFontEmbedSlot(value) {
511
+ if (value !== FontEmbedSlot.Regular &&
512
+ value !== FontEmbedSlot.Bold &&
513
+ value !== FontEmbedSlot.Italic &&
514
+ value !== FontEmbedSlot.BoldItalic) {
515
+ throw new RangeError("Invalid FontEmbedSlot value: " + value);
516
+ }
517
+ }
518
+ function signaturesEqual(a, b) {
519
+ if (a === undefined) {
520
+ return false;
521
+ }
522
+ return (a.usb0 === b.usb0 &&
523
+ a.usb1 === b.usb1 &&
524
+ a.usb2 === b.usb2 &&
525
+ a.usb3 === b.usb3 &&
526
+ a.csb0 === b.csb0 &&
527
+ a.csb1 === b.csb1);
528
+ }
529
+ function fontNameAttribute(element) {
530
+ var found = element.attributes.find(function (attribute) { return attribute.localName === 'name' &&
531
+ (attribute.namespaceUri === WML || attribute.namespaceUri === ''); });
532
+ return found == null ? undefined : found.value;
533
+ }
534
+ function wmlNamedAttribute(element, localName) {
535
+ var found = element.attributes.find(function (attribute) { return attribute.localName === localName &&
536
+ (attribute.namespaceUri === WML || attribute.namespaceUri === ''); });
537
+ return found == null ? undefined : found.value;
538
+ }
539
+ function relationshipIdAttribute(element) {
540
+ var found = element.attributes.find(function (attribute) { return attribute.localName === 'id' &&
541
+ (attribute.namespaceUri === OFFICE_RELATIONSHIPS_NAMESPACE ||
542
+ attribute.prefix === 'r' ||
543
+ attribute.namespaceUri === ''); });
544
+ return found == null ? undefined : found.value;
545
+ }
546
+ function parseSignature(element) {
547
+ var usb0 = wmlNamedAttribute(element, 'usb0');
548
+ var usb1 = wmlNamedAttribute(element, 'usb1');
549
+ var usb2 = wmlNamedAttribute(element, 'usb2');
550
+ var usb3 = wmlNamedAttribute(element, 'usb3');
551
+ var csb0 = wmlNamedAttribute(element, 'csb0');
552
+ var csb1 = wmlNamedAttribute(element, 'csb1');
553
+ if (usb0 === undefined ||
554
+ usb1 === undefined ||
555
+ usb2 === undefined ||
556
+ usb3 === undefined ||
557
+ csb0 === undefined ||
558
+ csb1 === undefined) {
559
+ return undefined;
560
+ }
561
+ return { usb0: usb0, usb1: usb1, usb2: usb2, usb3: usb3, csb0: csb0, csb1: csb1 };
562
+ }
563
+ function serializeSignature(signature) {
564
+ return wmlElement('sig', {
565
+ attributes: [
566
+ wmlAttr('usb0', signature.usb0),
567
+ wmlAttr('usb1', signature.usb1),
568
+ wmlAttr('usb2', signature.usb2),
569
+ wmlAttr('usb3', signature.usb3),
570
+ wmlAttr('csb0', signature.csb0),
571
+ wmlAttr('csb1', signature.csb1),
572
+ ],
573
+ });
574
+ }
575
+ function parseSubsetted(element) {
576
+ var found = element.attributes.find(function (attribute) { return attribute.localName === 'subsetted' &&
577
+ (attribute.namespaceUri === WML || attribute.namespaceUri === ''); });
578
+ if (found === undefined) {
579
+ return undefined;
580
+ }
581
+ var normalized = found.value.trim().toLowerCase();
582
+ if (normalized === 'true' || normalized === '1' || normalized === 'on') {
583
+ return true;
584
+ }
585
+ if (normalized === 'false' || normalized === '0' || normalized === 'off') {
586
+ return false;
587
+ }
588
+ return undefined;
589
+ }
590
+ function parseEmbed(element, slot) {
591
+ var relationshipId = relationshipIdAttribute(element);
592
+ if (relationshipId === undefined || relationshipId.length === 0) {
593
+ return undefined;
594
+ }
595
+ var fontKeyRaw = wmlNamedAttribute(element, 'fontKey');
596
+ var fontKey = fontKeyRaw !== undefined && fontKeyRaw.trim().length > 0 ? fontKeyRaw : undefined;
597
+ var subsetted = parseSubsetted(element);
598
+ var extraAttributes = element.attributes.filter(function (attribute) {
599
+ if (attribute.localName === 'id' &&
600
+ (attribute.namespaceUri === OFFICE_RELATIONSHIPS_NAMESPACE ||
601
+ attribute.prefix === 'r' ||
602
+ attribute.namespaceUri === '')) {
603
+ return false;
604
+ }
605
+ if (attribute.localName === 'fontKey' &&
606
+ (attribute.namespaceUri === WML || attribute.namespaceUri === '')) {
607
+ return false;
608
+ }
609
+ if (attribute.localName === 'subsetted' &&
610
+ (attribute.namespaceUri === WML || attribute.namespaceUri === '')) {
611
+ return false;
612
+ }
613
+ return true;
614
+ });
615
+ return {
616
+ slot: slot,
617
+ relationshipId: relationshipId,
618
+ fontKey: fontKey,
619
+ subsetted: subsetted,
620
+ extraAttributes: extraAttributes,
621
+ children: __spread(element.children),
622
+ namespaceDeclarations: __spread(element.namespaceDeclarations),
623
+ };
624
+ }
625
+ function serializeEmbed(embed) {
626
+ var localName = EMBED_LOCAL_BY_SLOT[embed.slot];
627
+ var attributes = [
628
+ {
629
+ namespaceUri: OFFICE_RELATIONSHIPS_NAMESPACE,
630
+ localName: 'id',
631
+ prefix: 'r',
632
+ value: embed.relationshipId,
633
+ },
634
+ ];
635
+ if (embed.fontKey !== undefined) {
636
+ attributes.push(wmlAttr('fontKey', embed.fontKey));
637
+ }
638
+ if (embed.subsetted !== undefined) {
639
+ attributes.push(wmlAttr('subsetted', embed.subsetted ? 'true' : 'false'));
640
+ }
641
+ attributes.push.apply(attributes, __spread(embed.extraAttributes));
642
+ var namespaceDeclarations = embed.namespaceDeclarations.length > 0
643
+ ? __spread(embed.namespaceDeclarations) : [{ prefix: 'r', namespaceUri: OFFICE_RELATIONSHIPS_NAMESPACE }];
644
+ if (!namespaceDeclarations.some(function (declaration) { return declaration.prefix === 'r' && declaration.namespaceUri === OFFICE_RELATIONSHIPS_NAMESPACE; })) {
645
+ namespaceDeclarations.push({
646
+ prefix: 'r',
647
+ namespaceUri: OFFICE_RELATIONSHIPS_NAMESPACE,
648
+ });
649
+ }
650
+ return wmlElement(localName, {
651
+ attributes: attributes,
652
+ children: embed.children,
653
+ namespaceDeclarations: namespaceDeclarations,
654
+ });
655
+ }
656
+ function parseKnownChildren(element) {
657
+ var e_3, _a;
658
+ var alternateName;
659
+ var panose;
660
+ var charset;
661
+ var family;
662
+ var familyRaw;
663
+ var notTrueType;
664
+ var pitch;
665
+ var pitchRaw;
666
+ var signature;
667
+ var embeds = [];
668
+ var seenEmbedSlots = new Set();
669
+ var residualChildren = [];
670
+ try {
671
+ for (var _b = __values(elementChildren(element)), _c = _b.next(); !_c.done; _c = _b.next()) {
672
+ var child = _c.value;
673
+ if (isWml(child, 'altName')) {
674
+ if (alternateName === undefined) {
675
+ var val = wValAttribute(child);
676
+ if (val !== undefined && val.trim().length > 0) {
677
+ alternateName = val;
678
+ }
679
+ }
680
+ continue;
681
+ }
682
+ if (isWml(child, 'panose1')) {
683
+ if (panose === undefined) {
684
+ var val = wValAttribute(child);
685
+ if (val !== undefined && val.trim().length > 0) {
686
+ panose = val;
687
+ }
688
+ }
689
+ continue;
690
+ }
691
+ if (isWml(child, 'charset')) {
692
+ if (charset === undefined) {
693
+ var val = wValAttribute(child);
694
+ if (val !== undefined && val.trim().length > 0) {
695
+ charset = val;
696
+ }
697
+ }
698
+ continue;
699
+ }
700
+ if (isWml(child, 'family')) {
701
+ if (family === undefined && familyRaw === undefined) {
702
+ var val = wValAttribute(child);
703
+ if (val !== undefined && val.trim().length > 0) {
704
+ if (FONT_FAMILY_VALUES.has(val)) {
705
+ family = val;
706
+ }
707
+ else {
708
+ familyRaw = val;
709
+ }
710
+ }
711
+ }
712
+ continue;
713
+ }
714
+ if (isWml(child, 'notTrueType')) {
715
+ if (notTrueType === undefined) {
716
+ var parsed = parseOnOff(child);
717
+ if (parsed !== undefined) {
718
+ notTrueType = parsed;
719
+ }
720
+ }
721
+ continue;
722
+ }
723
+ if (isWml(child, 'pitch')) {
724
+ if (pitch === undefined && pitchRaw === undefined) {
725
+ var val = wValAttribute(child);
726
+ if (val !== undefined && val.trim().length > 0) {
727
+ if (FONT_PITCH_VALUES.has(val)) {
728
+ pitch = val;
729
+ }
730
+ else {
731
+ pitchRaw = val;
732
+ }
733
+ }
734
+ }
735
+ continue;
736
+ }
737
+ if (isWml(child, 'sig')) {
738
+ if (signature === undefined) {
739
+ var parsed = parseSignature(child);
740
+ if (parsed !== undefined) {
741
+ signature = parsed;
742
+ }
743
+ else {
744
+ residualChildren.push(child);
745
+ }
746
+ }
747
+ continue;
748
+ }
749
+ var embedSlot = EMBED_SLOT_BY_LOCAL[child.localName];
750
+ if (embedSlot !== undefined && isWml(child, child.localName)) {
751
+ if (!seenEmbedSlots.has(embedSlot)) {
752
+ var parsed = parseEmbed(child, embedSlot);
753
+ if (parsed !== undefined) {
754
+ embeds.push(parsed);
755
+ seenEmbedSlots.add(embedSlot);
756
+ }
757
+ else {
758
+ residualChildren.push(child);
759
+ }
760
+ }
761
+ continue;
762
+ }
763
+ residualChildren.push(child);
764
+ }
765
+ }
766
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
767
+ finally {
768
+ try {
769
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
770
+ }
771
+ finally { if (e_3) throw e_3.error; }
772
+ }
773
+ return {
774
+ alternateName: alternateName,
775
+ panose: panose,
776
+ charset: charset,
777
+ family: family,
778
+ familyRaw: familyRaw,
779
+ notTrueType: notTrueType,
780
+ pitch: pitch,
781
+ pitchRaw: pitchRaw,
782
+ signature: signature,
783
+ embeds: embeds,
784
+ residualChildren: residualChildren,
785
+ };
786
+ }
787
+ /**
788
+ * Parse one `w:font` element into a {@link FontTableFont}, or `undefined` when
789
+ * `@w:name` is missing/empty.
790
+ *
791
+ * @private
792
+ */
793
+ export function parseFontTableFont(element, markDirty) {
794
+ var name = fontNameAttribute(element);
795
+ if (name === undefined || name.length === 0) {
796
+ return undefined;
797
+ }
798
+ var parsed = parseKnownChildren(element);
799
+ var extraAttributes = element.attributes.filter(function (attribute) { return !(attribute.localName === 'name' &&
800
+ (attribute.namespaceUri === WML || attribute.namespaceUri === '')); });
801
+ return new FontTableFont(name, {
802
+ alternateName: parsed.alternateName,
803
+ panose: parsed.panose,
804
+ charset: parsed.charset,
805
+ family: parsed.family,
806
+ familyRaw: parsed.familyRaw,
807
+ notTrueType: parsed.notTrueType,
808
+ pitch: parsed.pitch,
809
+ pitchRaw: parsed.pitchRaw,
810
+ signature: parsed.signature,
811
+ embeds: parsed.embeds,
812
+ residualChildren: parsed.residualChildren,
813
+ extraAttributes: extraAttributes,
814
+ }, markDirty);
815
+ }
816
+ /**
817
+ * Create a minimal font entry (`@w:name` only).
818
+ *
819
+ * @private
820
+ */
821
+ export function createFontTableFont(name, markDirty) {
822
+ return new FontTableFont(name, {}, markDirty);
823
+ }