@syncfusion/ej2-docx 0.0.0-stage → 35.1.39

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 (416) hide show
  1. package/README.md +68 -2
  2. package/core.js +4 -0
  3. package/dist/ej2-docx.umd.min.js +2 -0
  4. package/dist/ej2-docx.umd.min.js.map +1 -0
  5. package/dist/es6/ej2-docx.es2015.js +66697 -0
  6. package/dist/es6/ej2-docx.es2015.js.map +1 -0
  7. package/dist/es6/ej2-docx.es5.js +77568 -0
  8. package/dist/es6/ej2-docx.es5.js.map +1 -0
  9. package/dist/global/ej2-docx.min.js +2 -0
  10. package/dist/global/ej2-docx.min.js.map +1 -0
  11. package/dist/global/index.d.ts +5 -0
  12. package/features.js +4 -0
  13. package/index.js +4 -0
  14. package/license +10 -0
  15. package/package.json +31 -4
  16. package/src/all.d.ts +50 -0
  17. package/src/all.js +147 -0
  18. package/src/core/compat/base64.d.ts +13 -0
  19. package/src/core/compat/base64.js +90 -0
  20. package/src/core/compat/object-compat.d.ts +30 -0
  21. package/src/core/compat/object-compat.js +40 -0
  22. package/src/core/compat/sha256.d.ts +9 -0
  23. package/src/core/compat/sha256.js +98 -0
  24. package/src/core/errors/docx-error.d.ts +89 -0
  25. package/src/core/errors/docx-error.js +138 -0
  26. package/src/core/errors/error-codes.d.ts +8 -0
  27. package/src/core/errors/error-codes.js +0 -0
  28. package/src/core/errors/index.d.ts +10 -0
  29. package/src/core/errors/index.js +9 -0
  30. package/src/core/index.d.ts +12 -0
  31. package/src/core/index.js +12 -0
  32. package/src/core/mc/alternate-content.d.ts +7 -0
  33. package/src/core/mc/alternate-content.js +67 -0
  34. package/src/core/mc/attributes.d.ts +24 -0
  35. package/src/core/mc/attributes.js +82 -0
  36. package/src/core/mc/index.d.ts +7 -0
  37. package/src/core/mc/index.js +5 -0
  38. package/src/core/mc/inspect.d.ts +16 -0
  39. package/src/core/mc/inspect.js +148 -0
  40. package/src/core/mc/namespaces.d.ts +4 -0
  41. package/src/core/mc/namespaces.js +4 -0
  42. package/src/core/mc/scope.d.ts +6 -0
  43. package/src/core/mc/scope.js +47 -0
  44. package/src/core/opc/content-types.d.ts +34 -0
  45. package/src/core/opc/content-types.js +162 -0
  46. package/src/core/opc/index.d.ts +8 -0
  47. package/src/core/opc/index.js +4 -0
  48. package/src/core/opc/package.d.ts +49 -0
  49. package/src/core/opc/package.js +324 -0
  50. package/src/core/opc/part-name.d.ts +47 -0
  51. package/src/core/opc/part-name.js +205 -0
  52. package/src/core/opc/relationships.d.ts +46 -0
  53. package/src/core/opc/relationships.js +212 -0
  54. package/src/core/preservation/index.d.ts +2 -0
  55. package/src/core/preservation/index.js +1 -0
  56. package/src/core/preservation/opaque-body.d.ts +16 -0
  57. package/src/core/preservation/opaque-body.js +69 -0
  58. package/src/core/registry/block-handlers.d.ts +30 -0
  59. package/src/core/registry/block-handlers.js +36 -0
  60. package/src/core/registry/create-defaults.d.ts +39 -0
  61. package/src/core/registry/create-defaults.js +42 -0
  62. package/src/core/registry/feature-registry.d.ts +20 -0
  63. package/src/core/registry/feature-registry.js +29 -0
  64. package/src/core/registry/index.d.ts +9 -0
  65. package/src/core/registry/index.js +8 -0
  66. package/src/core/registry/inline-handlers.d.ts +20 -0
  67. package/src/core/registry/inline-handlers.js +30 -0
  68. package/src/core/registry/materialize-handlers.d.ts +35 -0
  69. package/src/core/registry/materialize-handlers.js +75 -0
  70. package/src/core/registry/multi-part-handlers.d.ts +37 -0
  71. package/src/core/registry/multi-part-handlers.js +206 -0
  72. package/src/core/registry/package-part-handlers.d.ts +28 -0
  73. package/src/core/registry/package-part-handlers.js +190 -0
  74. package/src/core/registry/part-handlers.d.ts +24 -0
  75. package/src/core/registry/part-handlers.js +172 -0
  76. package/src/core/registry/run-leaf-handlers.d.ts +26 -0
  77. package/src/core/registry/run-leaf-handlers.js +72 -0
  78. package/src/core/security/limits.d.ts +40 -0
  79. package/src/core/security/limits.js +26 -0
  80. package/src/core/xml/index.d.ts +7 -0
  81. package/src/core/xml/index.js +3 -0
  82. package/src/core/xml/model.d.ts +66 -0
  83. package/src/core/xml/model.js +17 -0
  84. package/src/core/xml/parse.d.ts +12 -0
  85. package/src/core/xml/parse.js +382 -0
  86. package/src/core/xml/serialize.d.ts +6 -0
  87. package/src/core/xml/serialize.js +93 -0
  88. package/src/core/zip/crc32.d.ts +2 -0
  89. package/src/core/zip/crc32.js +25 -0
  90. package/src/core/zip/deflate.d.ts +6 -0
  91. package/src/core/zip/deflate.js +6 -0
  92. package/src/core/zip/index.d.ts +10 -0
  93. package/src/core/zip/index.js +4 -0
  94. package/src/core/zip/inflate-raw.d.ts +17 -0
  95. package/src/core/zip/inflate-raw.js +450 -0
  96. package/src/core/zip/names.d.ts +6 -0
  97. package/src/core/zip/names.js +52 -0
  98. package/src/core/zip/read.d.ts +8 -0
  99. package/src/core/zip/read.js +262 -0
  100. package/src/core/zip/write.d.ts +7 -0
  101. package/src/core/zip/write.js +189 -0
  102. package/src/core/zip/zip-entry.d.ts +4 -0
  103. package/src/core/zip/zip-entry.js +0 -0
  104. package/src/features/bibliography/index.d.ts +100 -0
  105. package/src/features/bibliography/index.js +290 -0
  106. package/src/features/bookmarks/index.d.ts +331 -0
  107. package/src/features/bookmarks/index.js +1009 -0
  108. package/src/features/comments/comment-extensions.d.ts +157 -0
  109. package/src/features/comments/comment-extensions.js +356 -0
  110. package/src/features/comments/index.d.ts +579 -0
  111. package/src/features/comments/index.js +1727 -0
  112. package/src/features/content-controls/index.d.ts +821 -0
  113. package/src/features/content-controls/index.js +2857 -0
  114. package/src/features/custom-xml/index.d.ts +236 -0
  115. package/src/features/custom-xml/index.js +661 -0
  116. package/src/features/document/alignment.d.ts +23 -0
  117. package/src/features/document/alignment.js +36 -0
  118. package/src/features/document/alt-chunk.d.ts +103 -0
  119. package/src/features/document/alt-chunk.js +221 -0
  120. package/src/features/document/assert-never.d.ts +1 -0
  121. package/src/features/document/assert-never.js +4 -0
  122. package/src/features/document/augmentations.d.ts +578 -0
  123. package/src/features/document/augmentations.js +0 -0
  124. package/src/features/document/body-always-on.d.ts +36 -0
  125. package/src/features/document/body-always-on.js +66 -0
  126. package/src/features/document/body-blocks.d.ts +7 -0
  127. package/src/features/document/body-blocks.js +78 -0
  128. package/src/features/document/body-item-adapters.d.ts +62 -0
  129. package/src/features/document/body-item-adapters.js +97 -0
  130. package/src/features/document/body-item-collection.d.ts +151 -0
  131. package/src/features/document/body-item-collection.js +440 -0
  132. package/src/features/document/body-item.d.ts +35 -0
  133. package/src/features/document/body-item.js +8 -0
  134. package/src/features/document/body.d.ts +150 -0
  135. package/src/features/document/body.js +263 -0
  136. package/src/features/document/character-format.d.ts +413 -0
  137. package/src/features/document/character-format.js +2054 -0
  138. package/src/features/document/color.d.ts +178 -0
  139. package/src/features/document/color.js +495 -0
  140. package/src/features/document/document.d.ts +410 -0
  141. package/src/features/document/document.js +1049 -0
  142. package/src/features/document/element-type.d.ts +68 -0
  143. package/src/features/document/element-type.js +133 -0
  144. package/src/features/document/entity-type.d.ts +92 -0
  145. package/src/features/document/entity-type.js +93 -0
  146. package/src/features/document/feature-block.d.ts +16 -0
  147. package/src/features/document/feature-block.js +0 -0
  148. package/src/features/document/feature-inline.d.ts +13 -0
  149. package/src/features/document/feature-inline.js +0 -0
  150. package/src/features/document/feature-multi-package-part.d.ts +19 -0
  151. package/src/features/document/feature-multi-package-part.js +8 -0
  152. package/src/features/document/feature-package-level-part.d.ts +18 -0
  153. package/src/features/document/feature-package-level-part.js +8 -0
  154. package/src/features/document/feature-package-part.d.ts +14 -0
  155. package/src/features/document/feature-package-part.js +0 -0
  156. package/src/features/document/feature-run-leaf.d.ts +9 -0
  157. package/src/features/document/feature-run-leaf.js +0 -0
  158. package/src/features/document/headers-footers.d.ts +206 -0
  159. package/src/features/document/headers-footers.js +384 -0
  160. package/src/features/document/index.d.ts +41 -0
  161. package/src/features/document/index.js +34 -0
  162. package/src/features/document/length.d.ts +152 -0
  163. package/src/features/document/length.js +245 -0
  164. package/src/features/document/load-options.d.ts +14 -0
  165. package/src/features/document/load-options.js +0 -0
  166. package/src/features/document/locale-ids.d.ts +227 -0
  167. package/src/features/document/locale-ids.js +485 -0
  168. package/src/features/document/on-off.d.ts +9 -0
  169. package/src/features/document/on-off.js +27 -0
  170. package/src/features/document/page-setup.d.ts +339 -0
  171. package/src/features/document/page-setup.js +244 -0
  172. package/src/features/document/paragraph-format.d.ts +880 -0
  173. package/src/features/document/paragraph-format.js +2807 -0
  174. package/src/features/document/paragraph-item-collection.d.ts +162 -0
  175. package/src/features/document/paragraph-item-collection.js +363 -0
  176. package/src/features/document/paragraph-item.d.ts +83 -0
  177. package/src/features/document/paragraph-item.js +103 -0
  178. package/src/features/document/paragraph.d.ts +435 -0
  179. package/src/features/document/paragraph.js +888 -0
  180. package/src/features/document/run.d.ts +1 -0
  181. package/src/features/document/run.js +768 -0
  182. package/src/features/document/section-partition-flatten.d.ts +124 -0
  183. package/src/features/document/section-partition-flatten.js +217 -0
  184. package/src/features/document/section-properties-model.d.ts +13 -0
  185. package/src/features/document/section-properties-model.js +0 -0
  186. package/src/features/document/section.d.ts +93 -0
  187. package/src/features/document/section.js +178 -0
  188. package/src/features/document/sections.d.ts +103 -0
  189. package/src/features/document/sections.js +217 -0
  190. package/src/features/document/sub-super-script.d.ts +23 -0
  191. package/src/features/document/sub-super-script.js +43 -0
  192. package/src/features/document/text-range.d.ts +445 -0
  193. package/src/features/document/text-range.js +1156 -0
  194. package/src/features/document/typed-body-collections.d.ts +162 -0
  195. package/src/features/document/typed-body-collections.js +371 -0
  196. package/src/features/document/underline-style.d.ts +38 -0
  197. package/src/features/document/underline-style.js +126 -0
  198. package/src/features/document/units.d.ts +8 -0
  199. package/src/features/document/units.js +7 -0
  200. package/src/features/document/wml.d.ts +16 -0
  201. package/src/features/document/wml.js +67 -0
  202. package/src/features/drawing/authoring.d.ts +27 -0
  203. package/src/features/drawing/authoring.js +271 -0
  204. package/src/features/drawing/body-pr.d.ts +271 -0
  205. package/src/features/drawing/body-pr.js +663 -0
  206. package/src/features/drawing/drawing-shape.d.ts +1192 -0
  207. package/src/features/drawing/drawing-shape.js +3239 -0
  208. package/src/features/drawing/encode-builders.d.ts +176 -0
  209. package/src/features/drawing/encode-builders.js +390 -0
  210. package/src/features/drawing/fill-format.d.ts +52 -0
  211. package/src/features/drawing/fill-format.js +124 -0
  212. package/src/features/drawing/host-codec.d.ts +632 -0
  213. package/src/features/drawing/host-codec.js +2595 -0
  214. package/src/features/drawing/index.d.ts +13 -0
  215. package/src/features/drawing/index.js +33 -0
  216. package/src/features/drawing/line-format.d.ts +76 -0
  217. package/src/features/drawing/line-format.js +343 -0
  218. package/src/features/drawing/parse-register.d.ts +50 -0
  219. package/src/features/drawing/parse-register.js +257 -0
  220. package/src/features/drawing/residual-utils.d.ts +47 -0
  221. package/src/features/drawing/residual-utils.js +290 -0
  222. package/src/features/drawing/shape-types.d.ts +433 -0
  223. package/src/features/drawing/shape-types.js +437 -0
  224. package/src/features/drawing/sp-pr.d.ts +396 -0
  225. package/src/features/drawing/sp-pr.js +610 -0
  226. package/src/features/drawing/text-frame.d.ts +90 -0
  227. package/src/features/drawing/text-frame.js +152 -0
  228. package/src/features/drawing/types.d.ts +352 -0
  229. package/src/features/drawing/types.js +60 -0
  230. package/src/features/drawing/wrap-format.d.ts +62 -0
  231. package/src/features/drawing/wrap-format.js +114 -0
  232. package/src/features/editable-ranges/index.d.ts +494 -0
  233. package/src/features/editable-ranges/index.js +1348 -0
  234. package/src/features/fields/index.d.ts +428 -0
  235. package/src/features/fields/index.js +2148 -0
  236. package/src/features/fields/paragraph-field.d.ts +187 -0
  237. package/src/features/fields/paragraph-field.js +692 -0
  238. package/src/features/font-table/font-substitution-table.d.ts +75 -0
  239. package/src/features/font-table/font-substitution-table.js +257 -0
  240. package/src/features/font-table/font-table-entry.d.ts +255 -0
  241. package/src/features/font-table/font-table-entry.js +823 -0
  242. package/src/features/font-table/font-table.d.ts +128 -0
  243. package/src/features/font-table/font-table.js +313 -0
  244. package/src/features/font-table/index.d.ts +27 -0
  245. package/src/features/font-table/index.js +48 -0
  246. package/src/features/glossary/index.d.ts +97 -0
  247. package/src/features/glossary/index.js +286 -0
  248. package/src/features/headers-footers/index.d.ts +506 -0
  249. package/src/features/headers-footers/index.js +1666 -0
  250. package/src/features/hyperlinks/index.d.ts +230 -0
  251. package/src/features/hyperlinks/index.js +685 -0
  252. package/src/features/images/caption-authoring-api.d.ts +33 -0
  253. package/src/features/images/caption-authoring-api.js +33 -0
  254. package/src/features/images/caption-enums.d.ts +52 -0
  255. package/src/features/images/caption-enums.js +141 -0
  256. package/src/features/images/caption-host.d.ts +10 -0
  257. package/src/features/images/caption-host.js +21 -0
  258. package/src/features/images/captions.d.ts +13 -0
  259. package/src/features/images/captions.js +142 -0
  260. package/src/features/images/host-codec.d.ts +103 -0
  261. package/src/features/images/host-codec.js +720 -0
  262. package/src/features/images/image-sniff.d.ts +21 -0
  263. package/src/features/images/image-sniff.js +71 -0
  264. package/src/features/images/index.d.ts +506 -0
  265. package/src/features/images/index.js +1429 -0
  266. package/src/features/images/layout-types.d.ts +232 -0
  267. package/src/features/images/layout-types.js +294 -0
  268. package/src/features/images/public-entry.d.ts +9 -0
  269. package/src/features/images/public-entry.js +9 -0
  270. package/src/features/index.d.ts +35 -0
  271. package/src/features/index.js +36 -0
  272. package/src/features/mail-merge/index.d.ts +113 -0
  273. package/src/features/mail-merge/index.js +315 -0
  274. package/src/features/notes/index.d.ts +573 -0
  275. package/src/features/notes/index.js +1725 -0
  276. package/src/features/numbering/abstract-numbering.d.ts +90 -0
  277. package/src/features/numbering/abstract-numbering.js +292 -0
  278. package/src/features/numbering/index.d.ts +182 -0
  279. package/src/features/numbering/index.js +668 -0
  280. package/src/features/numbering/list-format.d.ts +158 -0
  281. package/src/features/numbering/list-format.js +590 -0
  282. package/src/features/numbering/list-string.d.ts +7 -0
  283. package/src/features/numbering/list-string.js +423 -0
  284. package/src/features/numbering/list-style.d.ts +204 -0
  285. package/src/features/numbering/list-style.js +1084 -0
  286. package/src/features/numbering/numbering-instance.d.ts +101 -0
  287. package/src/features/numbering/numbering-instance.js +329 -0
  288. package/src/features/numbering/numbering-level.d.ts +118 -0
  289. package/src/features/numbering/numbering-level.js +501 -0
  290. package/src/features/numbering/picture-bullet.d.ts +34 -0
  291. package/src/features/numbering/picture-bullet.js +88 -0
  292. package/src/features/ole-object/catalog.d.ts +300 -0
  293. package/src/features/ole-object/catalog.js +908 -0
  294. package/src/features/ole-object/index.d.ts +526 -0
  295. package/src/features/ole-object/index.js +1421 -0
  296. package/src/features/ole-object/relationship.d.ts +27 -0
  297. package/src/features/ole-object/relationship.js +27 -0
  298. package/src/features/ole-object/typed-dom.d.ts +186 -0
  299. package/src/features/ole-object/typed-dom.js +595 -0
  300. package/src/features/properties/index.d.ts +205 -0
  301. package/src/features/properties/index.js +549 -0
  302. package/src/features/revisions/index.d.ts +204 -0
  303. package/src/features/revisions/index.js +695 -0
  304. package/src/features/sections/column-collection.d.ts +119 -0
  305. package/src/features/sections/column-collection.js +478 -0
  306. package/src/features/sections/column.d.ts +15 -0
  307. package/src/features/sections/column.js +37 -0
  308. package/src/features/sections/index.d.ts +91 -0
  309. package/src/features/sections/index.js +1096 -0
  310. package/src/features/sections/margins.d.ts +40 -0
  311. package/src/features/sections/margins.js +105 -0
  312. package/src/features/sections/page-number-style.d.ts +21 -0
  313. package/src/features/sections/page-number-style.js +62 -0
  314. package/src/features/sections/page-orientation.d.ts +10 -0
  315. package/src/features/sections/page-orientation.js +10 -0
  316. package/src/features/sections/page-setup.d.ts +435 -0
  317. package/src/features/sections/page-setup.js +1479 -0
  318. package/src/features/sections/page-size.d.ts +59 -0
  319. package/src/features/sections/page-size.js +68 -0
  320. package/src/features/sections/section-break-code.d.ts +27 -0
  321. package/src/features/sections/section-break-code.js +60 -0
  322. package/src/features/sections/section-document-association.d.ts +18 -0
  323. package/src/features/sections/section-document-association.js +31 -0
  324. package/src/features/sections/section-validation.d.ts +43 -0
  325. package/src/features/sections/section-validation.js +97 -0
  326. package/src/features/settings/attached-template.d.ts +35 -0
  327. package/src/features/settings/attached-template.js +98 -0
  328. package/src/features/settings/compat-settings.d.ts +216 -0
  329. package/src/features/settings/compat-settings.js +508 -0
  330. package/src/features/settings/document-background.d.ts +59 -0
  331. package/src/features/settings/document-background.js +131 -0
  332. package/src/features/settings/document-protection.d.ts +65 -0
  333. package/src/features/settings/document-protection.js +157 -0
  334. package/src/features/settings/document-settings-facades.d.ts +108 -0
  335. package/src/features/settings/document-settings-facades.js +312 -0
  336. package/src/features/settings/document-settings-values.d.ts +43 -0
  337. package/src/features/settings/document-settings-values.js +60 -0
  338. package/src/features/settings/footnote-properties.d.ts +211 -0
  339. package/src/features/settings/footnote-properties.js +591 -0
  340. package/src/features/settings/index.d.ts +356 -0
  341. package/src/features/settings/index.js +829 -0
  342. package/src/features/settings/settings-children.d.ts +151 -0
  343. package/src/features/settings/settings-children.js +505 -0
  344. package/src/features/settings/web-settings.d.ts +88 -0
  345. package/src/features/settings/web-settings.js +227 -0
  346. package/src/features/settings/zoom.d.ts +79 -0
  347. package/src/features/settings/zoom.js +147 -0
  348. package/src/features/styles/builtin-catalog.d.ts +159 -0
  349. package/src/features/styles/builtin-catalog.js +963 -0
  350. package/src/features/styles/builtin-resolver.d.ts +49 -0
  351. package/src/features/styles/builtin-resolver.js +165 -0
  352. package/src/features/styles/default-styles.d.ts +37 -0
  353. package/src/features/styles/default-styles.js +186 -0
  354. package/src/features/styles/default-theme.d.ts +13 -0
  355. package/src/features/styles/default-theme.js +13 -0
  356. package/src/features/styles/doc-defaults.d.ts +58 -0
  357. package/src/features/styles/doc-defaults.js +178 -0
  358. package/src/features/styles/formatting-resolver.d.ts +27 -0
  359. package/src/features/styles/formatting-resolver.js +72 -0
  360. package/src/features/styles/index.d.ts +256 -0
  361. package/src/features/styles/index.js +1325 -0
  362. package/src/features/styles/latent-styles.d.ts +68 -0
  363. package/src/features/styles/latent-styles.js +305 -0
  364. package/src/features/styles/paragraph-properties.d.ts +71 -0
  365. package/src/features/styles/paragraph-properties.js +237 -0
  366. package/src/features/styles/run-properties.d.ts +93 -0
  367. package/src/features/styles/run-properties.js +516 -0
  368. package/src/features/styles/style-base.d.ts +402 -0
  369. package/src/features/styles/style-base.js +1026 -0
  370. package/src/features/styles/style-collection.d.ts +264 -0
  371. package/src/features/styles/style-collection.js +714 -0
  372. package/src/features/styles/style-format-bridge.d.ts +64 -0
  373. package/src/features/styles/style-format-bridge.js +100 -0
  374. package/src/features/styles/style.d.ts +84 -0
  375. package/src/features/styles/style.js +375 -0
  376. package/src/features/styles/styles-with-effects.d.ts +71 -0
  377. package/src/features/styles/styles-with-effects.js +180 -0
  378. package/src/features/styles/table-style.d.ts +272 -0
  379. package/src/features/styles/table-style.js +1226 -0
  380. package/src/features/styles/theme.d.ts +126 -0
  381. package/src/features/styles/theme.js +377 -0
  382. package/src/features/tables/border-style-map.d.ts +24 -0
  383. package/src/features/tables/border-style-map.js +81 -0
  384. package/src/features/tables/borders.d.ts +126 -0
  385. package/src/features/tables/borders.js +527 -0
  386. package/src/features/tables/collections.d.ts +113 -0
  387. package/src/features/tables/collections.js +261 -0
  388. package/src/features/tables/format.d.ts +208 -0
  389. package/src/features/tables/format.js +716 -0
  390. package/src/features/tables/index.d.ts +597 -0
  391. package/src/features/tables/index.js +2386 -0
  392. package/src/features/tables/paddings.d.ts +41 -0
  393. package/src/features/tables/paddings.js +97 -0
  394. package/src/features/tables/tbl-pr-positioning.d.ts +27 -0
  395. package/src/features/tables/tbl-pr-positioning.js +178 -0
  396. package/src/features/tables/tbl-pr.d.ts +528 -0
  397. package/src/features/tables/tbl-pr.js +1208 -0
  398. package/src/features/tables/tc-pr.d.ts +168 -0
  399. package/src/features/tables/tc-pr.js +553 -0
  400. package/src/features/tables/tr-pr.d.ts +60 -0
  401. package/src/features/tables/tr-pr.js +215 -0
  402. package/src/features/watermark/detect.d.ts +76 -0
  403. package/src/features/watermark/detect.js +219 -0
  404. package/src/features/watermark/index.d.ts +28 -0
  405. package/src/features/watermark/index.js +91 -0
  406. package/src/features/watermark/logical-store.d.ts +29 -0
  407. package/src/features/watermark/logical-store.js +31 -0
  408. package/src/features/watermark/model.d.ts +285 -0
  409. package/src/features/watermark/model.js +597 -0
  410. package/src/features/watermark/parse.d.ts +84 -0
  411. package/src/features/watermark/parse.js +815 -0
  412. package/src/features/watermark/serialize.d.ts +98 -0
  413. package/src/features/watermark/serialize.js +1517 -0
  414. package/src/global.js +1 -0
  415. package/src/index.d.ts +2 -0
  416. package/src/index.js +2 -0
@@ -0,0 +1,215 @@
1
+ var __values = (this && this.__values) || function (o) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
3
+ if (m) return m.call(o);
4
+ return {
5
+ next: function () {
6
+ if (o && i >= o.length) o = void 0;
7
+ return { value: o && o[i++], done: !o };
8
+ }
9
+ };
10
+ };
11
+ /**
12
+ * Typed parse/serialize helpers for `w:trPr`.
13
+ *
14
+ * Citations: Transitional `wml.xsd` `CT_TrPrBase`, `CT_Height`, `ST_HeightRule`,
15
+ * `ST_JcTable`.
16
+ */
17
+ import { parseOnOff, serializeOnOff } from '../document/on-off';
18
+ import { elementChildren, isWml, wmlAttr, wmlElement, } from '../document/wml';
19
+ import { emptyPropsToUndefined, parseCnfStyle, parseShd, parseDecimalVal, parseTableAlignment, pointToTwips, serializeCnfStyle, serializeShd, serializeTableAlignment, normalizeCnfStyle, normalizedCnfStyleHasTrue, TableRowHeightRule, twipsToPoint, upsertPropChild, wmlAttrVal } from './tbl-pr';
20
+ // TS 3.3: no `export type { ... }` — re-export interface via value import usage only.
21
+ function findWmlChild(parent, localName) {
22
+ var e_1, _a;
23
+ try {
24
+ for (var _b = __values(elementChildren(parent)), _c = _b.next(); !_c.done; _c = _b.next()) {
25
+ var child = _c.value;
26
+ if (isWml(child, localName)) {
27
+ return child;
28
+ }
29
+ }
30
+ }
31
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
32
+ finally {
33
+ try {
34
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
35
+ }
36
+ finally { if (e_1) throw e_1.error; }
37
+ }
38
+ return undefined;
39
+ }
40
+ function ensureTrPr(trPr) {
41
+ return trPr != null ? trPr : wmlElement('trPr');
42
+ }
43
+ function writeTrChild(trPr, localName, replacement) {
44
+ var next = upsertPropChild(ensureTrPr(trPr), 'trPr', localName, replacement);
45
+ return emptyPropsToUndefined(next);
46
+ }
47
+ // TS 3.3 / ES5 parity: avoid Object.values on the const map.
48
+ var HEIGHT_RULES = new Set([
49
+ TableRowHeightRule.Auto,
50
+ TableRowHeightRule.AtLeast,
51
+ TableRowHeightRule.Exact,
52
+ ]);
53
+ /**
54
+ * @private
55
+ */
56
+ export function readRowHeight(trPr) {
57
+ var __ts33_0;
58
+ if (trPr === undefined) {
59
+ return undefined;
60
+ }
61
+ var el = findWmlChild(trPr, 'trHeight');
62
+ if (el === undefined) {
63
+ return undefined;
64
+ }
65
+ var val = parseDecimalVal(wmlAttrVal(el, 'val'));
66
+ if (val === undefined) {
67
+ return undefined;
68
+ }
69
+ var ruleRaw = ((__ts33_0 = wmlAttrVal(el, 'hRule')), __ts33_0 != null ? __ts33_0 : 'auto');
70
+ if (!HEIGHT_RULES.has(ruleRaw)) {
71
+ return undefined;
72
+ }
73
+ return {
74
+ value: twipsToPoint(val),
75
+ rule: ruleRaw,
76
+ };
77
+ }
78
+ /**
79
+ * @private
80
+ */
81
+ export function writeRowHeight(trPr, height) {
82
+ if (height === undefined) {
83
+ if (trPr === undefined) {
84
+ return undefined;
85
+ }
86
+ return writeTrChild(trPr, 'trHeight', undefined);
87
+ }
88
+ var attrs = [
89
+ wmlAttr('val', String(pointToTwips(height.value))),
90
+ wmlAttr('hRule', height.rule),
91
+ ];
92
+ return writeTrChild(trPr, 'trHeight', wmlElement('trHeight', { attributes: attrs }));
93
+ }
94
+ /**
95
+ * @private
96
+ */
97
+ export function readRowCantSplit(trPr) {
98
+ if (trPr === undefined) {
99
+ return undefined;
100
+ }
101
+ var el = findWmlChild(trPr, 'cantSplit');
102
+ return el !== undefined ? parseOnOff(el) : undefined;
103
+ }
104
+ /**
105
+ * @private
106
+ */
107
+ export function writeRowCantSplit(trPr, cantSplit) {
108
+ if (cantSplit === undefined && trPr === undefined) {
109
+ return undefined;
110
+ }
111
+ return writeTrChild(trPr, 'cantSplit', cantSplit !== undefined ? serializeOnOff('cantSplit', cantSplit) : undefined);
112
+ }
113
+ /**
114
+ * @private
115
+ */
116
+ export function readRowIsHeader(trPr) {
117
+ if (trPr === undefined) {
118
+ return undefined;
119
+ }
120
+ var el = findWmlChild(trPr, 'tblHeader');
121
+ return el !== undefined ? parseOnOff(el) : undefined;
122
+ }
123
+ /**
124
+ * @private
125
+ */
126
+ export function writeRowIsHeader(trPr, isHeader) {
127
+ if (isHeader === undefined && trPr === undefined) {
128
+ return undefined;
129
+ }
130
+ return writeTrChild(trPr, 'tblHeader', isHeader !== undefined ? serializeOnOff('tblHeader', isHeader) : undefined);
131
+ }
132
+ /**
133
+ * @private
134
+ */
135
+ export function readRowAlignment(trPr) {
136
+ if (trPr === undefined) {
137
+ return undefined;
138
+ }
139
+ var el = findWmlChild(trPr, 'jc');
140
+ return el !== undefined ? parseTableAlignment(el) : undefined;
141
+ }
142
+ /**
143
+ * @private
144
+ */
145
+ export function writeRowAlignment(trPr, alignment) {
146
+ if (alignment === undefined && trPr === undefined) {
147
+ return undefined;
148
+ }
149
+ return writeTrChild(trPr, 'jc', alignment !== undefined ? serializeTableAlignment(alignment) : undefined);
150
+ }
151
+ /**
152
+ * Row shading (`w:trPr/w:shd`).
153
+ *
154
+ * @private
155
+ */
156
+ export function readRowShading(trPr) {
157
+ if (trPr === undefined) {
158
+ return undefined;
159
+ }
160
+ var el = findWmlChild(trPr, 'shd');
161
+ if (el === undefined) {
162
+ return undefined;
163
+ }
164
+ var shd = parseShd(el);
165
+ if (shd.fill === undefined && shd.color === undefined && shd.pattern === undefined) {
166
+ return undefined;
167
+ }
168
+ return shd;
169
+ }
170
+ /**
171
+ * @private
172
+ */
173
+ export function writeRowShading(trPr, shading) {
174
+ if (shading === undefined && trPr === undefined) {
175
+ return undefined;
176
+ }
177
+ return writeTrChild(trPr, 'shd', shading !== undefined ? serializeShd(shading) : undefined);
178
+ }
179
+ /**
180
+ * Row conditional formatting membership (`w:trPr/w:cnfStyle` / `CT_Cnf`).
181
+ * Preserve-only: does not recompute from table layout.
182
+ *
183
+ * Citations: ECMA-376-1 §17.4.7; Part 4 §14.3.1.1 / §14.11.9; Transitional `CT_Cnf`.
184
+ *
185
+ * @private
186
+ */
187
+ export function readRowCnfStyle(trPr) {
188
+ if (trPr === undefined) {
189
+ return undefined;
190
+ }
191
+ var el = findWmlChild(trPr, 'cnfStyle');
192
+ if (el === undefined) {
193
+ return undefined;
194
+ }
195
+ var state = parseCnfStyle(el);
196
+ var normalized = normalizeCnfStyle(state);
197
+ return normalizedCnfStyleHasTrue(normalized) ? state : undefined;
198
+ }
199
+ /**
200
+ * Write or clear row `w:cnfStyle`. Passing `undefined` removes the element.
201
+ * A supplied {@link NormalizedCnfStyle} is always written (including all-false).
202
+ *
203
+ * @private
204
+ */
205
+ export function writeRowCnfStyle(trPr, state) {
206
+ if (state === undefined) {
207
+ if (trPr === undefined) {
208
+ return undefined;
209
+ }
210
+ return writeTrChild(trPr, 'cnfStyle', undefined);
211
+ }
212
+ var existing = trPr !== undefined ? findWmlChild(trPr, 'cnfStyle') : undefined;
213
+ var normalized = normalizeCnfStyle(state);
214
+ return writeTrChild(trPr, 'cnfStyle', serializeCnfStyle(normalized, existing));
215
+ }
@@ -0,0 +1,76 @@
1
+ import { OpenXmlElement } from '../../core/xml/index';
2
+ /** VML main namespace (ECMA-376-4 VML). */
3
+ export declare const VML_NS = "urn:schemas-microsoft-com:vml";
4
+ /** Exact text watermark shapetype token (parse + dirty emit). */
5
+ export declare const TEXT_WATERMARK_TYPE = "#_x0000_t136";
6
+ /** Canonical picture watermark shapetype token (dirty emit). */
7
+ export declare const PICTURE_WATERMARK_TYPE = "#_x0000_t75";
8
+ /** Malformed but tolerated picture type (parse only; dirty normalizes to single `#`). */
9
+ export declare const PICTURE_WATERMARK_TYPE_DOUBLE_HASH = "##_x0000_t75";
10
+ /** Word DocIO / UI text watermark id prefix. */
11
+ export declare const TEXT_WATERMARK_ID_PREFIX = "PowerPlusWaterMarkObject";
12
+ /** Word DocIO / UI picture watermark id prefix. */
13
+ export declare const PICTURE_WATERMARK_ID_PREFIX = "WordPictureWatermark";
14
+ /**
15
+ * Parsed `v:shape/@style` declaration map (lower-cased keys, trimmed values).
16
+ *
17
+ * @private
18
+ */
19
+ export declare function parseVmlStyle(style: string | undefined): Map<string, string>;
20
+ /**
21
+ * Read an attribute from an element, accepting empty-namespace or a specific URI.
22
+ *
23
+ * VML attributes are commonly un-namespaced on the attribute node even when the
24
+ * element carries the VML namespace.
25
+ *
26
+ * @private
27
+ */
28
+ export declare function vmlAttribute(el: OpenXmlElement, localName: string): string | undefined;
29
+ /**
30
+ * True when `el` is a VML element with the given local name.
31
+ * @private
32
+ */
33
+ export declare function isVml(el: OpenXmlElement, localName: string): boolean;
34
+ /**
35
+ * Watermark positioning pattern shared by text (optional id) and picture
36
+ * (with negative z-index when z-index is present):
37
+ * absolute + horizontal/vertical center + both relatives margin.
38
+ *
39
+ * @private
40
+ */
41
+ export declare function hasWatermarkPositionPattern(style: ReadonlyMap<string, string>, options?: {
42
+ readonly requireNegativeZIndexWhenPresent?: boolean;
43
+ }): boolean;
44
+ /**
45
+ * True when `type` is an accepted picture watermark shapetype token.
46
+ * Allows `#_x0000_t75` and `##_x0000_t75` only (not three or more leading `#`).
47
+ *
48
+ * @private
49
+ */
50
+ export declare function isAcceptedPictureWatermarkType(type: string | undefined): boolean;
51
+ /**
52
+ * Conservative text-watermark detector for a `v:shape` element.
53
+ *
54
+ * Requires `v:textpath`, type exactly `#_x0000_t136`, and either a
55
+ * `PowerPlusWaterMarkObject*` id or the watermark positioning pattern.
56
+ * Does **not** require `z-index:-1` (verified text fixtures omit a -1 token
57
+ * or use a large negative Word z-index).
58
+ *
59
+ * Host / `w:pict` checks are the caller's responsibility (header walk).
60
+ *
61
+ * @private
62
+ */
63
+ export declare function isTextWatermarkShape(shape: OpenXmlElement): boolean;
64
+ /**
65
+ * Conservative picture-watermark detector for a `v:shape` element.
66
+ *
67
+ * Requires `v:imagedata`, type `#_x0000_t75` or `##_x0000_t75`, and either a
68
+ * `WordPictureWatermark*` id or the positioning pattern (negative z-index
69
+ * enforced when z-index is present). Type alone is insufficient (WordArt /
70
+ * ordinary pictures must not match).
71
+ *
72
+ * Host / `w:pict` checks are the caller's responsibility (header walk).
73
+ *
74
+ * @private
75
+ */
76
+ export declare function isPictureWatermarkShape(shape: OpenXmlElement): boolean;
@@ -0,0 +1,219 @@
1
+ var __values = (this && this.__values) || function (o) {
2
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
3
+ if (m) return m.call(o);
4
+ return {
5
+ next: function () {
6
+ if (o && i >= o.length) o = void 0;
7
+ return { value: o && o[i++], done: !o };
8
+ }
9
+ };
10
+ };
11
+ /**
12
+ * Conservative watermark shape detectors (TASK-8061).
13
+ *
14
+ * Prefer false negatives over false positives. Same predicates feed parse,
15
+ * replace, and remove. Normative rules:
16
+ * `docs/requirements/watermark-basic.md` (Detection).
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+ import { elementChildren } from '../document/wml';
21
+ /** VML main namespace (ECMA-376-4 VML). */
22
+ export var VML_NS = 'urn:schemas-microsoft-com:vml';
23
+ /** Exact text watermark shapetype token (parse + dirty emit). */
24
+ export var TEXT_WATERMARK_TYPE = '#_x0000_t136';
25
+ /** Canonical picture watermark shapetype token (dirty emit). */
26
+ export var PICTURE_WATERMARK_TYPE = '#_x0000_t75';
27
+ /** Malformed but tolerated picture type (parse only; dirty normalizes to single `#`). */
28
+ export var PICTURE_WATERMARK_TYPE_DOUBLE_HASH = '##_x0000_t75';
29
+ /** Word DocIO / UI text watermark id prefix. */
30
+ export var TEXT_WATERMARK_ID_PREFIX = 'PowerPlusWaterMarkObject';
31
+ /** Word DocIO / UI picture watermark id prefix. */
32
+ export var PICTURE_WATERMARK_ID_PREFIX = 'WordPictureWatermark';
33
+ /**
34
+ * Parsed `v:shape/@style` declaration map (lower-cased keys, trimmed values).
35
+ *
36
+ * @private
37
+ */
38
+ export function parseVmlStyle(style) {
39
+ var e_1, _a;
40
+ var out = new Map();
41
+ if (style === undefined || style.length === 0) {
42
+ return out;
43
+ }
44
+ try {
45
+ for (var _b = __values(style.split(';')), _c = _b.next(); !_c.done; _c = _b.next()) {
46
+ var part = _c.value;
47
+ var trimmed = part.trim();
48
+ if (trimmed.length === 0) {
49
+ continue;
50
+ }
51
+ var colon = trimmed.indexOf(':');
52
+ if (colon <= 0) {
53
+ continue;
54
+ }
55
+ var key = trimmed.slice(0, colon).trim().toLowerCase();
56
+ var value = trimmed.slice(colon + 1).trim();
57
+ if (key.length === 0) {
58
+ continue;
59
+ }
60
+ out.set(key, value);
61
+ }
62
+ }
63
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
64
+ finally {
65
+ try {
66
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
67
+ }
68
+ finally { if (e_1) throw e_1.error; }
69
+ }
70
+ return out;
71
+ }
72
+ /**
73
+ * Read an attribute from an element, accepting empty-namespace or a specific URI.
74
+ *
75
+ * VML attributes are commonly un-namespaced on the attribute node even when the
76
+ * element carries the VML namespace.
77
+ *
78
+ * @private
79
+ */
80
+ export function vmlAttribute(el, localName) {
81
+ var found = el.attributes.find(function (a) { return a.localName === localName &&
82
+ (a.namespaceUri === '' || a.namespaceUri === VML_NS); });
83
+ return found == null ? undefined : found.value;
84
+ }
85
+ /**
86
+ * True when `el` is a VML element with the given local name.
87
+ * @private
88
+ */
89
+ export function isVml(el, localName) {
90
+ return el.namespaceUri === VML_NS && el.localName === localName;
91
+ }
92
+ function hasChildLocal(el, localName) {
93
+ var e_2, _a;
94
+ try {
95
+ for (var _b = __values(elementChildren(el)), _c = _b.next(); !_c.done; _c = _b.next()) {
96
+ var child = _c.value;
97
+ if (isVml(child, localName)) {
98
+ return true;
99
+ }
100
+ }
101
+ }
102
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
103
+ finally {
104
+ try {
105
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
106
+ }
107
+ finally { if (e_2) throw e_2.error; }
108
+ }
109
+ return false;
110
+ }
111
+ /**
112
+ * Watermark positioning pattern shared by text (optional id) and picture
113
+ * (with negative z-index when z-index is present):
114
+ * absolute + horizontal/vertical center + both relatives margin.
115
+ *
116
+ * @private
117
+ */
118
+ export function hasWatermarkPositionPattern(style, options) {
119
+ var __ts33_0, __ts33_1, __ts33_2, __ts33_3, __ts33_4;
120
+ if ((((__ts33_0 = style.get('position')), __ts33_0 != null ? __ts33_0 : '')).toLowerCase() !== 'absolute') {
121
+ return false;
122
+ }
123
+ if ((((__ts33_1 = style.get('mso-position-horizontal')), __ts33_1 != null ? __ts33_1 : '')).toLowerCase() !== 'center') {
124
+ return false;
125
+ }
126
+ if ((((__ts33_2 = style.get('mso-position-vertical')), __ts33_2 != null ? __ts33_2 : '')).toLowerCase() !== 'center') {
127
+ return false;
128
+ }
129
+ if ((((__ts33_3 = style.get('mso-position-horizontal-relative')), __ts33_3 != null ? __ts33_3 : '')).toLowerCase() !== 'margin') {
130
+ return false;
131
+ }
132
+ if ((((__ts33_4 = style.get('mso-position-vertical-relative')), __ts33_4 != null ? __ts33_4 : '')).toLowerCase() !== 'margin') {
133
+ return false;
134
+ }
135
+ if ((options == null ? undefined : options.requireNegativeZIndexWhenPresent) === true) {
136
+ var zRaw = style.get('z-index');
137
+ if (zRaw !== undefined) {
138
+ var z = Number.parseFloat(zRaw);
139
+ if (!Number.isFinite(z) || z >= 0) {
140
+ return false;
141
+ }
142
+ }
143
+ }
144
+ return true;
145
+ }
146
+ /**
147
+ * True when `type` is an accepted picture watermark shapetype token.
148
+ * Allows `#_x0000_t75` and `##_x0000_t75` only (not three or more leading `#`).
149
+ *
150
+ * @private
151
+ */
152
+ export function isAcceptedPictureWatermarkType(type) {
153
+ if (type === undefined) {
154
+ return false;
155
+ }
156
+ return type === PICTURE_WATERMARK_TYPE || type === PICTURE_WATERMARK_TYPE_DOUBLE_HASH;
157
+ }
158
+ /**
159
+ * Conservative text-watermark detector for a `v:shape` element.
160
+ *
161
+ * Requires `v:textpath`, type exactly `#_x0000_t136`, and either a
162
+ * `PowerPlusWaterMarkObject*` id or the watermark positioning pattern.
163
+ * Does **not** require `z-index:-1` (verified text fixtures omit a -1 token
164
+ * or use a large negative Word z-index).
165
+ *
166
+ * Host / `w:pict` checks are the caller's responsibility (header walk).
167
+ *
168
+ * @private
169
+ */
170
+ export function isTextWatermarkShape(shape) {
171
+ var __ts33_5;
172
+ if (!isVml(shape, 'shape')) {
173
+ return false;
174
+ }
175
+ if (!hasChildLocal(shape, 'textpath')) {
176
+ return false;
177
+ }
178
+ var type = vmlAttribute(shape, 'type');
179
+ if (type !== TEXT_WATERMARK_TYPE) {
180
+ return false;
181
+ }
182
+ var id = ((__ts33_5 = vmlAttribute(shape, 'id')), __ts33_5 != null ? __ts33_5 : '');
183
+ if (id.startsWith(TEXT_WATERMARK_ID_PREFIX)) {
184
+ return true;
185
+ }
186
+ var style = parseVmlStyle(vmlAttribute(shape, 'style'));
187
+ return hasWatermarkPositionPattern(style);
188
+ }
189
+ /**
190
+ * Conservative picture-watermark detector for a `v:shape` element.
191
+ *
192
+ * Requires `v:imagedata`, type `#_x0000_t75` or `##_x0000_t75`, and either a
193
+ * `WordPictureWatermark*` id or the positioning pattern (negative z-index
194
+ * enforced when z-index is present). Type alone is insufficient (WordArt /
195
+ * ordinary pictures must not match).
196
+ *
197
+ * Host / `w:pict` checks are the caller's responsibility (header walk).
198
+ *
199
+ * @private
200
+ */
201
+ export function isPictureWatermarkShape(shape) {
202
+ var __ts33_6;
203
+ if (!isVml(shape, 'shape')) {
204
+ return false;
205
+ }
206
+ if (!hasChildLocal(shape, 'imagedata')) {
207
+ return false;
208
+ }
209
+ var type = vmlAttribute(shape, 'type');
210
+ if (!isAcceptedPictureWatermarkType(type)) {
211
+ return false;
212
+ }
213
+ var id = ((__ts33_6 = vmlAttribute(shape, 'id')), __ts33_6 != null ? __ts33_6 : '');
214
+ if (id.startsWith(PICTURE_WATERMARK_ID_PREFIX)) {
215
+ return true;
216
+ }
217
+ var style = parseVmlStyle(vmlAttribute(shape, 'style'));
218
+ return hasWatermarkPositionPattern(style, { requireNegativeZIndexWhenPresent: true });
219
+ }
@@ -0,0 +1,28 @@
1
+ export { PICTURE_WATERMARK_ID_PREFIX, PICTURE_WATERMARK_TYPE, PICTURE_WATERMARK_TYPE_DOUBLE_HASH, TEXT_WATERMARK_ID_PREFIX, TEXT_WATERMARK_TYPE, hasWatermarkPositionPattern, isAcceptedPictureWatermarkType, isVml, parseVmlStyle, vmlAttribute, } from './detect';
2
+ export * from './logical-store';
3
+ export * from './model';
4
+ export * from './parse';
5
+ export * from './serialize';
6
+ import { isPictureWatermarkShape, isTextWatermarkShape } from './detect';
7
+ import { clearLogicalWatermark, logicalWatermarkOf } from './logical-store';
8
+ import { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, PictureWatermarkOptions, SemitransparentState, TextWatermarkOptions, WatermarkShapeResidual } from './model';
9
+ export { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, isPictureWatermarkShape, isTextWatermarkShape, clearLogicalWatermark, logicalWatermarkOf, };
10
+ export { PictureWatermarkOptions, SemitransparentState, TextWatermarkOptions, WatermarkShapeResidual, };
11
+ /**
12
+ * @private
13
+ * Test hook */
14
+ export declare function resetWatermarkFeatureForTests(): void;
15
+ /**
16
+ * Register the watermark feature. Idempotent.
17
+ *
18
+ * Lazy header VML parse runs on first {@link WordDocument.watermark} get
19
+ * (TASK-8061). Dirty assignment marks the document so save materializes
20
+ * canonical watermark VML into scratch headers (TASK-8062). Remove/replace
21
+ * strips recognized watermark leaves, GCs unused header image relationships
22
+ * and unreferenced media, and never deletes header parts (TASK-8063). Picture
23
+ * media is applied via a package-level feature part after header multi-part
24
+ * writes.
25
+ *
26
+ * @private
27
+ */
28
+ export declare function registerWatermarkFeature(): void;
@@ -0,0 +1,91 @@
1
+ export { PICTURE_WATERMARK_ID_PREFIX, PICTURE_WATERMARK_TYPE, PICTURE_WATERMARK_TYPE_DOUBLE_HASH, TEXT_WATERMARK_ID_PREFIX, TEXT_WATERMARK_TYPE, hasWatermarkPositionPattern, isAcceptedPictureWatermarkType, isVml, parseVmlStyle, vmlAttribute, } from './detect';
2
+ export * from './logical-store';
3
+ export * from './model';
4
+ export * from './parse';
5
+ export * from './serialize';
6
+ /**
7
+ * Optional watermark feature module (text and picture).
8
+ *
9
+ * Public construction (TASK-8060), lazy header VML parse (TASK-8061), and
10
+ * dirty header rewrite on save (TASK-8062). Logical state is held in a module
11
+ * WeakMap so clean parse never mutates package parts.
12
+ *
13
+ * OOXML ownership: docs/ooxml-mapping/watermark.md. Requirement:
14
+ * docs/requirements/watermark-basic.md. Spec: docs/specs/watermark-basic.md.
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { WordDocument } from '../document/document';
19
+ import { featureId, registerFeature, registerFeatureMaterializeHandler, registerFeaturePackagePartHandler, } from '../../core/registry/index';
20
+ import { isPictureWatermarkShape, isTextWatermarkShape } from './detect';
21
+ import { clearLogicalWatermark, logicalWatermarkOf, setLogicalWatermark, } from './logical-store';
22
+ import { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType } from './model';
23
+ import { ensureParsedAndLogical, markWatermarkParseCompleted, resetWatermarkParseStateForTests, } from './parse';
24
+ import { loadWatermarkPackageParts, markWatermarkDirty, materializeWatermarks, resetWatermarkSerializeStateForTests, } from './serialize';
25
+ export { ImageType, PictureWatermark, TextWatermark, Watermark, WatermarkLayout, WatermarkType, isPictureWatermarkShape, isTextWatermarkShape, clearLogicalWatermark, logicalWatermarkOf, };
26
+ var WATERMARK = featureId('watermark');
27
+ var registered = false;
28
+ /**
29
+ * @private
30
+ * Test hook */
31
+ export function resetWatermarkFeatureForTests() {
32
+ registered = false;
33
+ resetWatermarkParseStateForTests();
34
+ resetWatermarkSerializeStateForTests();
35
+ }
36
+ /**
37
+ * Register the watermark feature. Idempotent.
38
+ *
39
+ * Lazy header VML parse runs on first {@link WordDocument.watermark} get
40
+ * (TASK-8061). Dirty assignment marks the document so save materializes
41
+ * canonical watermark VML into scratch headers (TASK-8062). Remove/replace
42
+ * strips recognized watermark leaves, GCs unused header image relationships
43
+ * and unreferenced media, and never deletes header parts (TASK-8063). Picture
44
+ * media is applied via a package-level feature part after header multi-part
45
+ * writes.
46
+ *
47
+ * @private
48
+ */
49
+ export function registerWatermarkFeature() {
50
+ if (registered) {
51
+ return;
52
+ }
53
+ registered = true;
54
+ registerFeature({ id: WATERMARK });
55
+ registerFeatureMaterializeHandler({
56
+ featureId: WATERMARK,
57
+ materialize: function (document) {
58
+ materializeWatermarks(document);
59
+ },
60
+ });
61
+ registerFeaturePackagePartHandler({
62
+ featureId: WATERMARK,
63
+ loadParts: function (pkg) {
64
+ return loadWatermarkPackageParts(pkg);
65
+ },
66
+ });
67
+ }
68
+ Object.defineProperty(WordDocument.prototype, 'watermark', {
69
+ configurable: true,
70
+ enumerable: false,
71
+ get: function () {
72
+ var _this = this;
73
+ ensureParsedAndLogical(this, function () { return logicalWatermarkOf(_this); }, function (value) {
74
+ setLogicalWatermark(_this, value);
75
+ });
76
+ return logicalWatermarkOf(this);
77
+ },
78
+ set: function (value) {
79
+ // Author assignment wins over a later lazy parse ensure.
80
+ // Assigning `undefined` clears the logical watermark (replaces removeWatermark()).
81
+ markWatermarkParseCompleted(this);
82
+ if (value === undefined) {
83
+ clearLogicalWatermark(this);
84
+ }
85
+ else {
86
+ setLogicalWatermark(this, value);
87
+ }
88
+ markWatermarkDirty(this);
89
+ },
90
+ });
91
+ registerWatermarkFeature();
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Logical watermark attachment store (document → watermark).
3
+ *
4
+ * Kept separate from `index.ts` and `serialize.ts` so materialize can read
5
+ * logical state without a circular import through the public barrel.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { WordDocument } from '../document/document';
10
+ import { Watermark } from './model';
11
+ /**
12
+ * Read the logical watermark attached to a document.
13
+ * Does not trigger lazy parse.
14
+ *
15
+ * @private
16
+ */
17
+ export declare function logicalWatermarkOf(document: WordDocument): Watermark | undefined;
18
+ /**
19
+ * Attach or clear the logical watermark for a document (no package I/O).
20
+ *
21
+ * @private
22
+ */
23
+ export declare function setLogicalWatermark(document: WordDocument, value: Watermark | undefined): void;
24
+ /**
25
+ * Clear logical watermark state for a single document.
26
+ *
27
+ * @private
28
+ */
29
+ export declare function clearLogicalWatermark(document: WordDocument): void;
@@ -0,0 +1,31 @@
1
+ /** Logical watermark attachment store (document → watermark). No package I/O. */
2
+ var documentWatermarks = new WeakMap();
3
+ /**
4
+ * Read the logical watermark attached to a document.
5
+ * Does not trigger lazy parse.
6
+ *
7
+ * @private
8
+ */
9
+ export function logicalWatermarkOf(document) {
10
+ return documentWatermarks.get(document);
11
+ }
12
+ /**
13
+ * Attach or clear the logical watermark for a document (no package I/O).
14
+ *
15
+ * @private
16
+ */
17
+ export function setLogicalWatermark(document, value) {
18
+ if (value === undefined) {
19
+ documentWatermarks.delete(document);
20
+ return;
21
+ }
22
+ documentWatermarks.set(document, value);
23
+ }
24
+ /**
25
+ * Clear logical watermark state for a single document.
26
+ *
27
+ * @private
28
+ */
29
+ export function clearLogicalWatermark(document) {
30
+ documentWatermarks.delete(document);
31
+ }