@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,632 @@
1
+ /**
2
+ * Drawing shape host encode helpers (`wp:inline` / `wp:anchor` + `wps:wsp`).
3
+ *
4
+ * Schema cites:
5
+ * - ECMA-376-1 §20.4 `CT_Inline` / `CT_Anchor`, `wp:docPr` (`CT_NonVisualDrawingProps`)
6
+ * - DrawingML `a:graphic` / `a:graphicData`, `a:prstGeom` (`ST_ShapeType`)
7
+ * - [MS-ODRAWXML] wordprocessingShape (`wps:wsp`)
8
+ * - ECMA-376-3 Markup Compatibility AlternateContent Choice/Fallback
9
+ * - ECMA-376-4 VML `w:pict` / `v:shape` Fallback (Policy B dual AC; TASK-8050)
10
+ * - VML main XSD: AG_Fill (`filled`/`fillcolor`), AG_ShapeAttributes
11
+ * (`stroked`/`strokecolor`/`strokeweight`), AG_StrokeAttributes / `v:stroke`,
12
+ * CT_Textbox (`@inset`, optional `w:txbxContent`)
13
+ * - `vml-wordprocessingDrawing.xsd`: `w10:wrap` (`ST_WrapType`), `w10:anchorlock`
14
+ * - ShapeRequirements Fallback samples: style tokens, `v:stroke` joinstyle miter,
15
+ * DML `a:tailEnd type="triangle"` → VML `endarrow="block"`
16
+ *
17
+ * Anchor defaults mirror images host-codec (distL/R 114300, relativeHeight
18
+ * 251658240, layoutInCell 1, allowOverlap 1, positionH column 0, positionV
19
+ * paragraph 0, wrapNone).
20
+ *
21
+ * @packageDocumentation
22
+ */
23
+ import { BodyBlockParseContext } from '../../core/registry/block-handlers';
24
+ import { BlockContent } from '../document/paragraph';
25
+ import { Emus } from '../document/length';
26
+ import { OpenXmlElement } from '../../core/xml/index';
27
+ import { HorizontalAlignment as HorizontalAlignmentType, HorizontalOrigin as HorizontalOriginType, TextWrappingStyle as TextWrappingStyleType, TextWrappingType as TextWrappingTypeType, VerticalAlignment as VerticalAlignmentType, VerticalOrigin as VerticalOriginType } from '../images/layout-types';
28
+ import { LineCap, LineEndSize, LineEndType, LineDashing } from './sp-pr';
29
+ /**
30
+ * @private
31
+ */
32
+ export declare const WP_NS = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
33
+ /**
34
+ * @private
35
+ */
36
+ export declare const A_NS = "http://schemas.openxmlformats.org/drawingml/2006/main";
37
+ /**
38
+ * @private
39
+ */
40
+ export declare const R_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
41
+ /**
42
+ * @private
43
+ */
44
+ export declare const WPS_NS = "http://schemas.microsoft.com/office/word/2010/wordprocessingShape";
45
+ /**
46
+ * @private
47
+ */
48
+ export declare const WPG_NS = "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup";
49
+ /**
50
+ * @private
51
+ */
52
+ export declare const WPC_NS = "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas";
53
+ /**
54
+ * @private
55
+ */
56
+ export declare const VML_NS = "urn:schemas-microsoft-com:vml";
57
+ /**
58
+ * Word VML extensions namespace (`vml-wordprocessingDrawing.xsd` targetNamespace).
59
+ * Used for `w10:wrap` / `w10:anchorlock` on authored Fallback shapes.
60
+ *
61
+ * @private
62
+ */
63
+ export declare const W10_NS = "urn:schemas-microsoft-com:office:word";
64
+ /**
65
+ * @private
66
+ */
67
+ export declare const MC_NS = "http://schemas.openxmlformats.org/markup-compatibility/2006";
68
+ /**
69
+ * ST_Angle: 60000ths of a degree (ECMA-376 DrawingML `dml-main` CT_Transform2D).
70
+ * Same unit as images host-codec; local copy avoids drawing→images encode coupling.
71
+ *
72
+ * @private
73
+ */
74
+ export declare const ROTATION_UNITS_PER_DEGREE = 60000;
75
+ /**
76
+ * @private
77
+ */
78
+ export declare type DrawingHostPlacement = 'inline' | 'anchor';
79
+ /**
80
+ * @private
81
+ * Author / rebuild input for dual AC shape host. */
82
+ export interface EncodeDrawingShapeInput {
83
+ readonly placement: DrawingHostPlacement;
84
+ readonly widthEmu: Emus;
85
+ readonly heightEmu: Emus;
86
+ readonly presetGeometry: string;
87
+ readonly docPrId: number;
88
+ readonly name: string;
89
+ readonly title: string | undefined;
90
+ readonly description: string | undefined;
91
+ /** Clockwise degrees; wire `a:xfrm/@rot` = round(deg × 60000). Default 0. */
92
+ readonly rotation?: number;
93
+ /** `a:xfrm/@flipH`. Default false. */
94
+ readonly flipHorizontal?: boolean;
95
+ /** `a:xfrm/@flipV`. Default false. */
96
+ readonly flipVertical?: boolean;
97
+ /**
98
+ * `a:graphicFrameLocks/@noChangeAspect`.
99
+ * Author default true (images parity); omit locks attr when false.
100
+ */
101
+ readonly lockAspectRatio?: boolean;
102
+ /**
103
+ * Text wrapping style. `inline` forces `wp:inline`; other values force `wp:anchor`
104
+ * with the matching wrap child. Default: `inline` when placement is inline, else `none`.
105
+ */
106
+ readonly wrapping?: TextWrappingStyleType;
107
+ /** `wp:wrapSquare|wrapTight|wrapThrough/@wrapText`. Default bothSides. */
108
+ readonly wrapType?: TextWrappingTypeType;
109
+ /** `wp:inline|wp:anchor/@distT` EMU. Inline author default 0; anchor default 0. */
110
+ readonly distanceTopEmu?: Emus;
111
+ /** `wp:inline|wp:anchor/@distB` EMU. */
112
+ readonly distanceBottomEmu?: Emus;
113
+ /** `wp:inline|wp:anchor/@distL` EMU. Inline default 0; anchor default 114300. */
114
+ readonly distanceLeftEmu?: Emus;
115
+ /** `wp:inline|wp:anchor/@distR` EMU. Inline default 0; anchor default 114300. */
116
+ readonly distanceRightEmu?: Emus;
117
+ /**
118
+ * `wp:anchor/@behindDoc` (0/1). Ignored for inline hosts.
119
+ * Author default false.
120
+ */
121
+ readonly behindDocument?: boolean;
122
+ /**
123
+ * `wp:positionH/@relativeFrom` (`ST_RelFromH`). When undefined, the encoder
124
+ * falls back to the residual `@relativeFrom`, then `'column'` (images parity).
125
+ */
126
+ readonly horizontalOrigin?: HorizontalOriginType;
127
+ /**
128
+ * `wp:positionV/@relativeFrom` (`ST_RelFromV`). Fallback: residual, then
129
+ * `'paragraph'` (images parity).
130
+ */
131
+ readonly verticalOrigin?: VerticalOriginType;
132
+ /**
133
+ * `wp:positionH/wp:posOffset` EMU text. When undefined, the encoder emits the
134
+ * residual offset, else offset `0` unless {@link horizontalAlignment} is set.
135
+ * Negative values are schema-legal (`ST_PositionOffset` = xsd:int).
136
+ */
137
+ readonly horizontalPositionEmu?: Emus;
138
+ /** `wp:positionV/wp:posOffset` EMU (fallback: residual, then `0`). */
139
+ readonly verticalPositionEmu?: Emus;
140
+ /**
141
+ * `wp:positionH/wp:align` (`ST_AlignH`). XOR with posOffset per `CT_PosH`.
142
+ */
143
+ readonly horizontalAlignment?: HorizontalAlignmentType;
144
+ /**
145
+ * `wp:positionV/wp:align` (`ST_AlignV`). XOR with posOffset per `CT_PosV`.
146
+ */
147
+ readonly verticalAlignment?: VerticalAlignmentType;
148
+ /**
149
+ * `wp:anchor/@locked` (anchor position frozen for editing apps). Ignored for
150
+ * inline hosts. Author default false.
151
+ */
152
+ readonly lockAnchor?: boolean;
153
+ /** `wp:anchor/@allowOverlap`. Author default true. */
154
+ readonly allowOverlap?: boolean;
155
+ /** `wp:anchor/@layoutInCell`. Author default true. */
156
+ readonly layoutInCell?: boolean;
157
+ /**
158
+ * Explicit horizontal position mode override. When true, `wp:positionH` is
159
+ * rebuilt from {@link horizontalOrigin}/`posOffset`/`align` fields; when
160
+ * false/undefined the residual position is preserved when available.
161
+ * @private
162
+ */
163
+ readonly horizontalModeled?: boolean;
164
+ /**
165
+ * See {@link EncodeDrawingShapeInput.horizontalModeled}.
166
+ * @private
167
+ */
168
+ readonly verticalModeled?: boolean;
169
+ /**
170
+ * Fill MVP for authored/rebuilt spPr: solid sRGB or none. When undefined and
171
+ * a residual spPr fill exists, the residual fill element is preserved.
172
+ * @private
173
+ */
174
+ readonly fill?: {
175
+ readonly kind: 'solid';
176
+ readonly srgb: string;
177
+ /** DrawingML `a:alpha/@val` (0…100000). Omitted = opaque. */
178
+ readonly alpha?: number | undefined;
179
+ } | {
180
+ readonly kind: 'none';
181
+ };
182
+ /**
183
+ * Line MVP for authored/rebuilt spPr. When undefined and a residual `a:ln`
184
+ * exists, the residual line element is preserved.
185
+ * @private
186
+ */
187
+ readonly line?: {
188
+ readonly kind: 'solid';
189
+ readonly widthEmu?: Emus | undefined;
190
+ readonly srgb: string;
191
+ readonly dash?: LineDashing | undefined;
192
+ readonly cap?: LineCap | undefined;
193
+ readonly beginArrowType?: LineEndType | undefined;
194
+ readonly beginArrowSize?: LineEndSize | undefined;
195
+ readonly endArrowType?: LineEndType | undefined;
196
+ readonly endArrowSize?: LineEndSize | undefined;
197
+ } | {
198
+ readonly kind: 'none';
199
+ readonly widthEmu?: Emus | undefined;
200
+ readonly cap?: LineCap | undefined;
201
+ };
202
+ /**
203
+ * Original drawing residual for preserving wrap / position / host attrs when
204
+ * rebuild does not dirty modeled layout.
205
+ */
206
+ readonly preservedHost?: OpenXmlElement;
207
+ /**
208
+ * When true, rebuild wrap (and modeled distances / behindDoc) from input fields.
209
+ * When false and preservedHost has a matching anchor, reuse residual wrap child.
210
+ */
211
+ readonly layoutDirty?: boolean;
212
+ /**
213
+ * Serialize a text box variant: emit `wps:txbx` (with `w:txbxContent`
214
+ * children) and `wps:bodyPr` on `wps:wsp` (TASK-8049).
215
+ *
216
+ * `CT_WordprocessingShape` order: cNvPr? → cNvSpPr/cNvCnPr → spPr → style? →
217
+ * extLst? → (txbx | linkedTxbx)? → bodyPr (minOccurs 1).
218
+ * When undefined and the preserved host has a residual `wps:txbx`, the
219
+ * residual txbx is cloned verbatim (body preserved, content not rebuilt).
220
+ * @private
221
+ */
222
+ readonly txbxContent?: ReadonlyArray<OpenXmlElement> | undefined;
223
+ /**
224
+ * Modeled `wps:bodyPr` (`CT_TextBodyProperties` — TASK-8049). Always emitted
225
+ * (schema minOccurs=1) on the authored/rebuilt wsp; empty element when no
226
+ * field is modeled.
227
+ */
228
+ readonly bodyPr?: OpenXmlElement | undefined;
229
+ /**
230
+ * Nested child elements under top-level `wpg:wgp` (TASK-8051). When defined,
231
+ * {@link buildGraphic} emits `a:graphicData @uri=WPG` + `wpg:wgp` instead of
232
+ * a leaf `wps:wsp`. Empty array authors an empty group.
233
+ * @private
234
+ */
235
+ readonly groupChildElements?: ReadonlyArray<OpenXmlElement> | undefined;
236
+ }
237
+ /**
238
+ * Author / rebuild input for dual AC wordprocessing group host (TASK-8051).
239
+ * Identity lives on `wp:docPr`; children are bare nested `wps:wsp` / `wpg:grpSp`.
240
+ *
241
+ * @private
242
+ */
243
+ export interface EncodeGroupInput {
244
+ readonly placement: DrawingHostPlacement;
245
+ readonly widthEmu: Emus;
246
+ readonly heightEmu: Emus;
247
+ readonly docPrId: number;
248
+ readonly name: string;
249
+ readonly title?: string | undefined;
250
+ readonly description?: string | undefined;
251
+ readonly rotation?: number | undefined;
252
+ readonly flipHorizontal?: boolean | undefined;
253
+ readonly flipVertical?: boolean | undefined;
254
+ readonly lockAspectRatio?: boolean | undefined;
255
+ readonly wrapping?: TextWrappingStyleType | undefined;
256
+ readonly distanceTopEmu?: Emus | undefined;
257
+ readonly distanceBottomEmu?: Emus | undefined;
258
+ readonly distanceLeftEmu?: Emus | undefined;
259
+ readonly distanceRightEmu?: Emus | undefined;
260
+ readonly behindDocument?: boolean | undefined;
261
+ readonly horizontalOrigin?: HorizontalOriginType | undefined;
262
+ readonly verticalOrigin?: VerticalOriginType | undefined;
263
+ readonly horizontalPositionEmu?: Emus | undefined;
264
+ readonly verticalPositionEmu?: Emus | undefined;
265
+ readonly horizontalAlignment?: HorizontalAlignmentType | undefined;
266
+ readonly verticalAlignment?: VerticalAlignmentType | undefined;
267
+ readonly lockAnchor?: boolean | undefined;
268
+ readonly allowOverlap?: boolean | undefined;
269
+ readonly layoutInCell?: boolean | undefined;
270
+ readonly horizontalModeled?: boolean | undefined;
271
+ readonly verticalModeled?: boolean | undefined;
272
+ readonly preservedHost?: OpenXmlElement | undefined;
273
+ readonly layoutDirty?: boolean | undefined;
274
+ /** Nested bare `wps:wsp` / `wpg:grpSp` children (may be empty). */
275
+ readonly children: ReadonlyArray<OpenXmlElement>;
276
+ }
277
+ /**
278
+ * @private
279
+ * Wrap + distance state read from residual DrawingML host. */
280
+ export interface DrawingWrapState {
281
+ readonly placement: DrawingHostPlacement | undefined;
282
+ readonly wrapping: TextWrappingStyleType;
283
+ /**
284
+ * Effective `wrapText` for square/tight/through hosts.
285
+ * Absent attribute → Both; unrecognized token → Unknown; styles without wrapText → Both.
286
+ */
287
+ readonly wrapType: TextWrappingTypeType;
288
+ readonly distanceTopEmu: Emus | undefined;
289
+ readonly distanceBottomEmu: Emus | undefined;
290
+ readonly distanceLeftEmu: Emus | undefined;
291
+ readonly distanceRightEmu: Emus | undefined;
292
+ readonly behindDocument: boolean;
293
+ readonly lockAnchor: boolean;
294
+ readonly allowOverlap: boolean;
295
+ readonly layoutInCell: boolean;
296
+ readonly presetGeometry: string | undefined;
297
+ }
298
+ /**
299
+ * @private
300
+ * H/V position state read from residual DrawingML host. */
301
+ export interface DrawingPositionState {
302
+ readonly horizontalOrigin: HorizontalOriginType | undefined;
303
+ readonly verticalOrigin: VerticalOriginType | undefined;
304
+ readonly horizontalPosition: number | undefined;
305
+ readonly verticalPosition: number | undefined;
306
+ /** EMU form of {@link DrawingPositionState.horizontalPosition}. */
307
+ readonly horizontalPositionEmu: Emus | undefined;
308
+ /** EMU form of {@link DrawingPositionState.verticalPosition}. */
309
+ readonly verticalPositionEmu: Emus | undefined;
310
+ readonly horizontalAlignment: HorizontalAlignmentType | undefined;
311
+ readonly verticalAlignment: VerticalAlignmentType | undefined;
312
+ }
313
+ /**
314
+ * @private
315
+ * Identity fields patched onto residual `wp:docPr`. */
316
+ export interface DrawingDocPrIdentity {
317
+ readonly name: string | undefined;
318
+ readonly title: string | undefined;
319
+ readonly description: string | undefined;
320
+ readonly docPrId: number | undefined;
321
+ }
322
+ /**
323
+ * @private
324
+ * Layout fields for residual hydrate / layout dirty patch. */
325
+ export interface DrawingLayoutState {
326
+ readonly widthEmu: Emus | undefined;
327
+ readonly heightEmu: Emus | undefined;
328
+ readonly rotation: number;
329
+ readonly flipHorizontal: boolean;
330
+ readonly flipVertical: boolean;
331
+ readonly lockAspectRatio: boolean;
332
+ }
333
+ /**
334
+ * @private
335
+ * Layout patch payload (identity optional when only structure-adjacent). */
336
+ export interface DrawingLayoutPatch extends DrawingDocPrIdentity {
337
+ readonly widthEmu: Emus;
338
+ readonly heightEmu: Emus;
339
+ readonly rotation: number;
340
+ readonly flipHorizontal: boolean;
341
+ readonly flipVertical: boolean;
342
+ readonly lockAspectRatio: boolean;
343
+ }
344
+ /**
345
+ * @private
346
+ */
347
+ export declare function findFirstElement(root: OpenXmlElement, namespaceUri: string, localName: string): OpenXmlElement | undefined;
348
+ /**
349
+ * @private
350
+ */
351
+ export declare function attributeValue(el: OpenXmlElement, namespaceUri: string, localName: string): string | undefined;
352
+ /**
353
+ * Locate the residual `wps:spPr` for fill/line preservation on rebuild.
354
+ * Residual hosts nest `wps:spPr` under dual MC / `w:drawing` / `wp:*` /
355
+ * `a:graphic` / `wps:wsp`, so lookup is deep.
356
+ *
357
+ * @private
358
+ */
359
+ export declare function findResidualSpPr(preservedHost: OpenXmlElement | undefined): OpenXmlElement | undefined;
360
+ /**
361
+ * Build `wps:txbx` (`CT_TextboxInfo`) from serialized `w:txbxContent` children.
362
+ *
363
+ * Schema: `CT_TextboxInfo` = sequence `txbxContent` (minOccurs 1) + optional
364
+ * `extLst`; optional `@id` (default 0). `w:txbxContent` is
365
+ * `EG_BlockLevelElts` minOccurs 1 — the body must not be empty (Word authors
366
+ * at least one `w:p`; go6 author minimum matches).
367
+ *
368
+ * Cites:
369
+ * `specs/schemas/xsd/OfficeOpenXML-XMLSchema-Transitional/dml-wordprocessingDrawing.xsd`
370
+ * `CT_TxbxContent` / `CT_TextboxInfo`.
371
+ *
372
+ * @private
373
+ */
374
+ export declare function buildTxbxElement(contentChildren: ReadonlyArray<OpenXmlElement>): OpenXmlElement;
375
+ /**
376
+ * Serialize modeled `w:txbxContent` block state into `txbxContent` element
377
+ * children. Modeled paragraphs/tables/SDTs emit their DOM form; residual
378
+ * blocks (opaque XML not owned by a registered feature) pass through verbatim
379
+ * — the library never invents block OOXML it does not model.
380
+ *
381
+ * @private
382
+ */
383
+ export declare function serializeTxbxContentBlocks(blocks: ReadonlyArray<TxbxBlock>): OpenXmlElement[];
384
+ /**
385
+ * Block model alias for text box content (same core block union).
386
+ * @private
387
+ */
388
+ export declare type TxbxBlock = BlockContent;
389
+ /**
390
+ * Parse `w:txbxContent` children into core block state.
391
+ *
392
+ * Uses the same `parseBodyBlocks` path as headers/footers and table cells:
393
+ * `w:p` → modeled `Paragraph`; `w:tbl` → modeled `Table` **only when the
394
+ * tables feature is registered**; `w:sdt` → modeled SDT **only when the
395
+ * content-controls feature is registered**; everything else (and any block
396
+ * whose feature is unregistered) stays residual-opaque — never dropped, never
397
+ * invented (GO Q6; offline policy).
398
+ *
399
+ * @private
400
+ */
401
+ export declare function parseTxbxContentBlocks(txbxContent: OpenXmlElement, ctx: BodyBlockParseContext): TxbxBlock[];
402
+ /**
403
+ * Whether any `wps:wsp` under the host carries a `wps:txbx` (or `linkedTxbx`)
404
+ * child — deep walk so dual MC Choice branches resolve.
405
+ *
406
+ * @private
407
+ */
408
+ export declare function residualHasTxbx(host: OpenXmlElement | undefined): boolean;
409
+ /**
410
+ * Build top-level `wpg:wgp` group shape for graphicData (TASK-8051).
411
+ *
412
+ * Top-level wgp has no `cNvPr` (identity lives on `wp:docPr`). Nested groups
413
+ * use `wpg:grpSp` with `cNvPr` — authored via residual clone or nested
414
+ * structure paths, not this builder.
415
+ *
416
+ * Cites: [MS-ODRAWXML] §2.16.3.2 CT_WordprocessingGroup —
417
+ * `cNvGrpSpPr?`, `grpSpPr`, then `(wsp|grpSp|graphicFrame|contentPart|spTree)*`.
418
+ *
419
+ * @private
420
+ */
421
+ export declare function buildWpgGroup(input: EncodeDrawingShapeInput): OpenXmlElement;
422
+ /**
423
+ * Build a nested bare `wps:wsp` for group/canvas children (TASK-8051).
424
+ * Carries `wps:cNvPr` identity after `wps:cNvSpPr` (fixture / Word order used
425
+ * by TASK-8051 tests). No dual AC wrapper — nested children are bare wsp.
426
+ *
427
+ * @private
428
+ */
429
+ export declare function buildNestedWpsShape(input: EncodeDrawingShapeInput): OpenXmlElement;
430
+ /**
431
+ * Parse wrapping from residual host placement.
432
+ *
433
+ * @private
434
+ */
435
+ export declare function parseDrawingWrapping(host: OpenXmlElement, placement: DrawingHostPlacement): TextWrappingStyleType;
436
+ /**
437
+ * Parse `wp:wrapSquare|wrapTight|wrapThrough/@wrapText`.
438
+ * Absent → Both (schema default); wire token → token; other → Unknown.
439
+ *
440
+ * @private
441
+ */
442
+ export declare function parseWrapTextAttr(wrapEl: OpenXmlElement | undefined): TextWrappingTypeType;
443
+ /**
444
+ * Build wrap element from modeled style.
445
+ * Tight/through require wrapPolygon; without residual polygon, fall back to wrapNone
446
+ * (library does not invent polygons — images parity).
447
+ * When residual matches style but modeled wire wrapType differs, rebuild with
448
+ * corrected wrapText and preserve residual children/attrs.
449
+ *
450
+ * @private
451
+ */
452
+ export declare function buildWrapElement(wrapping: TextWrappingStyleType, residualWrap: OpenXmlElement | undefined, wrapType?: TextWrappingTypeType): OpenXmlElement;
453
+ /**
454
+ * Locate residual `wp:positionH` / `wp:positionV` children of an anchor.
455
+ *
456
+ * Children are preserved as-is (unknown `@relativeFrom` tokens or extra
457
+ * position children stay byte-identical on rebuild that does not model them).
458
+ *
459
+ * @private
460
+ */
461
+ export declare function findResidualPositions(anchor: OpenXmlElement | undefined): {
462
+ readonly positionH: OpenXmlElement | undefined;
463
+ readonly positionV: OpenXmlElement | undefined;
464
+ };
465
+ /**
466
+ * Build modeled `wp:positionH` (`CT_PosH`).
467
+ *
468
+ * Tokens: `ST_RelFromH` / `ST_AlignH` are imported, not invented (GO Q1 —
469
+ * `src/features/images/layout-types.ts`). Align XOR posOffset follows the
470
+ * `CT_PosH` schema choice. `ST_PositionOffset` is `xsd:int` (negative EMU
471
+ * legal). Default origin `'column'`; offset default `0` (images parity).
472
+ *
473
+ * @private
474
+ */
475
+ export declare function buildDrawingPositionH(input: {
476
+ readonly horizontalOrigin?: HorizontalOriginType | undefined;
477
+ readonly horizontalPositionEmu?: Emus | undefined;
478
+ readonly horizontalAlignment?: HorizontalAlignmentType | undefined;
479
+ }): OpenXmlElement;
480
+ /**
481
+ * Build modeled `wp:positionV` (`CT_PosV`). Default origin `'paragraph'`;
482
+ * offset default `0` (images parity).
483
+ *
484
+ * @private
485
+ */
486
+ export declare function buildDrawingPositionV(input: {
487
+ readonly verticalOrigin?: VerticalOriginType;
488
+ readonly verticalPositionEmu?: Emus;
489
+ readonly verticalAlignment?: VerticalAlignmentType;
490
+ }): OpenXmlElement;
491
+ /**
492
+ * Read wrapping, distances, behindDoc, and preset geometry from residual DrawingML.
493
+ *
494
+ * @private
495
+ */
496
+ export declare function readDrawingWrapState(residual: OpenXmlElement): DrawingWrapState;
497
+ /**
498
+ * Read `wp:positionH` / `wp:positionV` from residual DrawingML.
499
+ *
500
+ * Tokens are validated against images `layout-types` sets (GO Q1 import);
501
+ * unknown `@relativeFrom` or align text is dropped (not preserved into the
502
+ * typed model) so the encoder never writes an invented token.
503
+ *
504
+ * @private
505
+ */
506
+ export declare function readDrawingPositionState(residual: OpenXmlElement): DrawingPositionState;
507
+ /**
508
+ * Resolve effective placement from modeled wrap + requested placement.
509
+ * Inline wrap forces `wp:inline`; other wraps force `wp:anchor`.
510
+ *
511
+ * @private
512
+ */
513
+ export declare function effectiveDrawingPlacement(placement: DrawingHostPlacement, wrapping: TextWrappingStyleType | undefined): DrawingHostPlacement;
514
+ /**
515
+ * Resolve effective wrapping for encode. Anchor + Inline wrap coerces to None.
516
+ *
517
+ * @private
518
+ */
519
+ export declare function effectiveDrawingWrapping(placement: DrawingHostPlacement, wrapping: TextWrappingStyleType | undefined): TextWrappingStyleType;
520
+ /** True when any anchor-option field is explicitly modeled. */
521
+ /**
522
+ * Whether the caller explicitly modeled a position mode (offset or align).
523
+ * Hydrated-from-residual values do NOT count: rebuilt wire must preserve the
524
+ * residual axis bytes untouched unless the user intervened on that axis.
525
+ *
526
+ * @private
527
+ */
528
+ export declare function usedModeledPositionMode(input: EncodeDrawingShapeInput): {
529
+ readonly horizontal: boolean;
530
+ readonly vertical: boolean;
531
+ };
532
+ /**
533
+ * Read size/transform/lock from preferred DrawingML host.
534
+ * Public size prefers `wp:extent`; xfrm ext is residual until size dirty.
535
+ *
536
+ * @private
537
+ */
538
+ export declare function readDrawingLayout(root: OpenXmlElement): DrawingLayoutState;
539
+ /**
540
+ * Corpus-backed VML Fallback pict tree (Policy B dual AC — TASK-8050).
541
+ *
542
+ * Emits `w:pict` > `v:shape` with style, fill/stroke attrs, optional `v:stroke`,
543
+ * `w10:wrap` / `w10:anchorlock`, and `v:textbox` (cloned txbxContent) when modeled.
544
+ * Does not invent shapetype paths or execute VML.
545
+ *
546
+ * @private
547
+ */
548
+ export declare function buildVmlFallbackStub(input: EncodeDrawingShapeInput): OpenXmlElement;
549
+ /**
550
+ * Build `w:drawing` with `wp:inline` or `wp:anchor` host (Choice body only).
551
+ * Wrapping drives host kind: Inline ⇒ inline; other styles ⇒ anchor.
552
+ *
553
+ * @private
554
+ */
555
+ export declare function buildDrawingMlHost(input: EncodeDrawingShapeInput): OpenXmlElement;
556
+ /**
557
+ * Author dual AC root: Choice(wps DrawingML) + Fallback(VML pict tree).
558
+ * Policy B (GO Q2/Q3/Q7) — TASK-8050 corpus-backed VML Fallback.
559
+ *
560
+ * @private
561
+ */
562
+ export declare function encodeAuthoredDrawingShape(input: EncodeDrawingShapeInput): OpenXmlElement;
563
+ /**
564
+ * Author dual AC root for a wordprocessing group: Choice(wpg DrawingML) +
565
+ * Fallback(VML pict stub). Policy B — TASK-8051.
566
+ *
567
+ * Top-level graphicData uri = WPG; body is `wpg:wgp` without cNvPr.
568
+ * xmlns:wpg is declared on AlternateContent so Requires="wpg" resolves;
569
+ * xmlns:wps is kept so nested authored `wps:wsp` children resolve.
570
+ *
571
+ * @private
572
+ */
573
+ export declare function encodeAuthoredGroup(input: EncodeGroupInput): OpenXmlElement;
574
+ /**
575
+ * Locate preferred DrawingML `w:drawing` for typed reads.
576
+ * Prefer MC Choice branch when residual is AlternateContent.
577
+ *
578
+ * @private
579
+ */
580
+ export declare function preferredDrawingElement(root: OpenXmlElement): OpenXmlElement | undefined;
581
+ /**
582
+ * Read `wp:docPr` identity from preferred drawing host.
583
+ *
584
+ * @private
585
+ */
586
+ export declare function readDocPrIdentity(root: OpenXmlElement): {
587
+ name: string | undefined;
588
+ title: string | undefined;
589
+ description: string | undefined;
590
+ docPrId: number | undefined;
591
+ };
592
+ /**
593
+ * Deep-clone residual and patch `wp:docPr` identity attributes only (identity dirty).
594
+ *
595
+ * @private
596
+ */
597
+ export declare function patchResidualDocPr(residual: OpenXmlElement, identity: DrawingDocPrIdentity): OpenXmlElement;
598
+ /**
599
+ * Deep-clone residual and patch layout: `wp:extent`, `a:xfrm` (rot/flip/ext),
600
+ * `a:graphicFrameLocks/@noChangeAspect`, and optional `wp:docPr` identity.
601
+ * Preserves `wp:effectExtent` and other unmodeled siblings (layout dirty path).
602
+ *
603
+ * @private
604
+ */
605
+ export declare function patchResidualLayout(residual: OpenXmlElement, layout: DrawingLayoutPatch): OpenXmlElement;
606
+ /**
607
+ * True when root is MC AlternateContent owned by drawing (Choice with drawing, not picture/ink).
608
+ *
609
+ * @private
610
+ */
611
+ export declare function isDrawingAlternateContent(root: OpenXmlElement): boolean;
612
+ /**
613
+ * True when residual is a nested bare drawing child (`wps:wsp` or `wpg:grpSp`)
614
+ * rather than a top-level `w:drawing` / MC host (TASK-8051). Nested identity
615
+ * lives on `wps:cNvPr` / `wpg:cNvPr`, not `wp:docPr`.
616
+ *
617
+ * @private
618
+ */
619
+ export declare function isNestedDrawingResidual(root: OpenXmlElement): boolean;
620
+ /**
621
+ * Read nested `cNvPr` identity from bare `wps:wsp` / `wpg:grpSp` residual.
622
+ *
623
+ * @private
624
+ */
625
+ export declare function readCNvPrIdentity(root: OpenXmlElement): DrawingDocPrIdentity;
626
+ /**
627
+ * Deep-clone nested residual and patch `cNvPr` identity attributes only
628
+ * (identity dirty on group/canvas children — TASK-8051).
629
+ *
630
+ * @private
631
+ */
632
+ export declare function patchResidualCNvPr(residual: OpenXmlElement, identity: DrawingDocPrIdentity): OpenXmlElement;