@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,1479 @@
1
+ import { BorderStyle, LineNumberingMode, PageBorderOffsetFrom, PageBordersApplyType, PageOrientation, PageNumberStyle, PrinterPaperTray, SizeF, VerticalAlignment, } from '../document/page-setup';
2
+ import { Color, colorFromWire, colorToHexWire } from '../document/color';
3
+ import { pointToTwips } from '../document/length';
4
+ import { serializeOnOff } from '../document/on-off';
5
+ import { wmlAttr, wmlElement } from '../document/wml';
6
+ import { featureId, isFeatureRegistered } from '../../core/registry/index';
7
+ import { ColumnCollection } from './column-collection';
8
+ import { Margins } from './margins';
9
+ import { PageSize } from './page-size';
10
+ import { breakCodeToWire, SectionBreakCode } from './section-break-code';
11
+ import { ownerDocumentOf } from './section-document-association';
12
+ import { sectionsError, validatePageNumberStyle, validatePageOrientation, validatePositiveInteger, validateSectionBreakCode, validateSectionLength, validateNonNegativeInteger, } from './section-validation';
13
+ // Re-export public contracts consumed alongside the live PageSetup class.
14
+ export { BorderStyle, LineNumberingMode, PageBorderOffsetFrom, PageBordersApplyType, PageOrientation, PageNumberStyle, PrinterPaperTray, SizeF, VerticalAlignment, };
15
+ /** Office WordDocument relationships namespace for `r:id` on `CT_Rel`. */
16
+ var RELATIONSHIPS_OFFICE_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
17
+ var SETTINGS_FEATURE_ID = 'settings';
18
+ var BORDER_STYLE_VALUES = new Set([
19
+ BorderStyle.Nil,
20
+ BorderStyle.None,
21
+ BorderStyle.Single,
22
+ BorderStyle.Thick,
23
+ BorderStyle.Double,
24
+ BorderStyle.Dotted,
25
+ BorderStyle.Dashed,
26
+ BorderStyle.DotDash,
27
+ BorderStyle.DotDotDash,
28
+ BorderStyle.Triple,
29
+ BorderStyle.ThinThickSmallGap,
30
+ BorderStyle.ThickThinSmallGap,
31
+ BorderStyle.ThinThickThinSmallGap,
32
+ BorderStyle.ThinThickMediumGap,
33
+ BorderStyle.ThickThinMediumGap,
34
+ BorderStyle.ThinThickThinMediumGap,
35
+ BorderStyle.ThinThickLargeGap,
36
+ BorderStyle.ThickThinLargeGap,
37
+ BorderStyle.ThinThickThinLargeGap,
38
+ BorderStyle.Wave,
39
+ BorderStyle.DoubleWave,
40
+ BorderStyle.DashSmallGap,
41
+ BorderStyle.DashDotStroked,
42
+ BorderStyle.ThreeDEmboss,
43
+ BorderStyle.ThreeDEngrave,
44
+ BorderStyle.Outset,
45
+ BorderStyle.Inset,
46
+ ]);
47
+ /**
48
+ * Live page-border edge — public surface is {@link space} only.
49
+ *
50
+ * @public
51
+ */
52
+ var PageBorder = /** @class */ (function () {
53
+ /**
54
+ * @private
55
+ */
56
+ function PageBorder() {
57
+ this.spaceValue = 0;
58
+ this.styleValue = BorderStyle.None;
59
+ this.colorWireValue = 'auto';
60
+ this.widthPointsValue = 0.5;
61
+ }
62
+ Object.defineProperty(PageBorder.prototype, "space", {
63
+ get: function () {
64
+ return this.spaceValue;
65
+ },
66
+ set: function (value) {
67
+ if (!Number.isInteger(value) || value < 0 || value > 31) {
68
+ throw sectionsError('borders.space must be an integer in 0…31');
69
+ }
70
+ this.spaceValue = value;
71
+ },
72
+ enumerable: true,
73
+ configurable: true
74
+ });
75
+ Object.defineProperty(PageBorder.prototype, "style", {
76
+ /**
77
+ * @private
78
+ */
79
+ get: function () {
80
+ return this.styleValue;
81
+ },
82
+ enumerable: true,
83
+ configurable: true
84
+ });
85
+ Object.defineProperty(PageBorder.prototype, "colorWire", {
86
+ /**
87
+ * @private
88
+ */
89
+ get: function () {
90
+ return this.colorWireValue;
91
+ },
92
+ enumerable: true,
93
+ configurable: true
94
+ });
95
+ Object.defineProperty(PageBorder.prototype, "widthPoints", {
96
+ /**
97
+ * @private
98
+ */
99
+ get: function () {
100
+ return this.widthPointsValue;
101
+ },
102
+ enumerable: true,
103
+ configurable: true
104
+ });
105
+ /**
106
+ * @private
107
+ */
108
+ PageBorder.prototype.applyCommon = function (style, colorWire, widthPoints) {
109
+ this.styleValue = style;
110
+ this.colorWireValue = colorWire;
111
+ this.widthPointsValue = widthPoints;
112
+ };
113
+ /**
114
+ * @private
115
+ */
116
+ PageBorder.prototype.loadFromParsed = function (edge) {
117
+ this.styleValue = borderStyleFromWire(edge.style);
118
+ this.colorWireValue = edge.color;
119
+ this.widthPointsValue = edge.widthPoints;
120
+ this.spaceValue = Math.round(edge.offsetPoints);
121
+ };
122
+ /**
123
+ * @private
124
+ */
125
+ PageBorder.prototype.toParsed = function () {
126
+ if (!isActiveBorderStyle(this.styleValue)) {
127
+ return undefined;
128
+ }
129
+ return {
130
+ style: this.styleValue,
131
+ widthPoints: this.widthPointsValue,
132
+ offsetPoints: this.spaceValue,
133
+ color: this.colorWireValue,
134
+ };
135
+ };
136
+ /**
137
+ * @private
138
+ */
139
+ PageBorder.prototype.cloneInto = function (target) {
140
+ target.spaceValue = this.spaceValue;
141
+ target.styleValue = this.styleValue;
142
+ target.colorWireValue = this.colorWireValue;
143
+ target.widthPointsValue = this.widthPointsValue;
144
+ };
145
+ return PageBorder;
146
+ }());
147
+ export { PageBorder };
148
+ /**
149
+ * Live page borders — common style/color/width plus four edges.
150
+ *
151
+ * @public
152
+ */
153
+ var PageBorders = /** @class */ (function () {
154
+ /**
155
+ * @private
156
+ */
157
+ function PageBorders() {
158
+ this.borderTypeValue = BorderStyle.None;
159
+ this.colorPublicValue = Color.Black;
160
+ this.colorWireOverride = undefined;
161
+ this.lineWidthValue = 0.5;
162
+ this.topEdge = new PageBorder();
163
+ this.bottomEdge = new PageBorder();
164
+ this.leftEdge = new PageBorder();
165
+ this.rightEdge = new PageBorder();
166
+ this.applyToValue = 'allPages';
167
+ this.measureFromValue = 'text';
168
+ this.zOrderValue = 'front';
169
+ }
170
+ Object.defineProperty(PageBorders.prototype, "borderType", {
171
+ get: function () {
172
+ return this.borderTypeValue;
173
+ },
174
+ set: function (value) {
175
+ this.borderTypeValue = validateBorderStyle(value, 'borders.borderType');
176
+ this.stampCommonToEdges();
177
+ },
178
+ enumerable: true,
179
+ configurable: true
180
+ });
181
+ Object.defineProperty(PageBorders.prototype, "color", {
182
+ get: function () {
183
+ return this.colorPublicValue;
184
+ },
185
+ set: function (value) {
186
+ if (typeof value !== 'number' || Color[value] === undefined) {
187
+ throw sectionsError('borders.color must be a Color enum value');
188
+ }
189
+ this.colorPublicValue = value;
190
+ this.colorWireOverride = undefined;
191
+ this.stampCommonToEdges();
192
+ },
193
+ enumerable: true,
194
+ configurable: true
195
+ });
196
+ Object.defineProperty(PageBorders.prototype, "lineWidth", {
197
+ get: function () {
198
+ return this.lineWidthValue;
199
+ },
200
+ set: function (value) {
201
+ this.lineWidthValue = validateBorderWidth(value, 'borders.lineWidth');
202
+ this.stampCommonToEdges();
203
+ },
204
+ enumerable: true,
205
+ configurable: true
206
+ });
207
+ Object.defineProperty(PageBorders.prototype, "top", {
208
+ get: function () {
209
+ return this.topEdge;
210
+ },
211
+ enumerable: true,
212
+ configurable: true
213
+ });
214
+ Object.defineProperty(PageBorders.prototype, "bottom", {
215
+ get: function () {
216
+ return this.bottomEdge;
217
+ },
218
+ enumerable: true,
219
+ configurable: true
220
+ });
221
+ Object.defineProperty(PageBorders.prototype, "left", {
222
+ get: function () {
223
+ return this.leftEdge;
224
+ },
225
+ enumerable: true,
226
+ configurable: true
227
+ });
228
+ Object.defineProperty(PageBorders.prototype, "right", {
229
+ get: function () {
230
+ return this.rightEdge;
231
+ },
232
+ enumerable: true,
233
+ configurable: true
234
+ });
235
+ Object.defineProperty(PageBorders.prototype, "applyTo", {
236
+ /**
237
+ * @private
238
+ */
239
+ get: function () {
240
+ return this.applyToValue;
241
+ },
242
+ enumerable: true,
243
+ configurable: true
244
+ });
245
+ /**
246
+ * @private
247
+ */
248
+ PageBorders.prototype.setApplyTo = function (value) {
249
+ this.applyToValue = value;
250
+ };
251
+ Object.defineProperty(PageBorders.prototype, "measureFrom", {
252
+ /**
253
+ * @private
254
+ */
255
+ get: function () {
256
+ return this.measureFromValue;
257
+ },
258
+ enumerable: true,
259
+ configurable: true
260
+ });
261
+ /**
262
+ * @private
263
+ */
264
+ PageBorders.prototype.setMeasureFrom = function (value) {
265
+ this.measureFromValue = value;
266
+ };
267
+ Object.defineProperty(PageBorders.prototype, "zOrder", {
268
+ /**
269
+ * @private
270
+ */
271
+ get: function () {
272
+ return this.zOrderValue;
273
+ },
274
+ enumerable: true,
275
+ configurable: true
276
+ });
277
+ /**
278
+ * @private
279
+ */
280
+ PageBorders.prototype.loadFromParsed = function (bag) {
281
+ this.applyToValue = bag.applyTo;
282
+ this.measureFromValue = bag.measureFrom;
283
+ this.zOrderValue = bag.zOrder;
284
+ if (bag.top !== undefined) {
285
+ this.topEdge.loadFromParsed(bag.top);
286
+ }
287
+ if (bag.left !== undefined) {
288
+ this.leftEdge.loadFromParsed(bag.left);
289
+ }
290
+ if (bag.bottom !== undefined) {
291
+ this.bottomEdge.loadFromParsed(bag.bottom);
292
+ }
293
+ if (bag.right !== undefined) {
294
+ this.rightEdge.loadFromParsed(bag.right);
295
+ }
296
+ var ref = bag.top !== undefined
297
+ ? bag.top
298
+ : bag.left !== undefined
299
+ ? bag.left
300
+ : bag.bottom !== undefined
301
+ ? bag.bottom
302
+ : bag.right;
303
+ if (ref !== undefined) {
304
+ this.borderTypeValue = borderStyleFromWire(ref.style);
305
+ var mapped = colorFromWire(ref.color);
306
+ if (mapped !== undefined) {
307
+ this.colorPublicValue = mapped;
308
+ this.colorWireOverride = undefined;
309
+ }
310
+ else {
311
+ this.colorPublicValue = Color.Black;
312
+ this.colorWireOverride = ref.color;
313
+ }
314
+ this.lineWidthValue = ref.widthPoints;
315
+ }
316
+ };
317
+ /**
318
+ * @private
319
+ */
320
+ PageBorders.prototype.toParsed = function () {
321
+ var top = this.topEdge.toParsed();
322
+ var left = this.leftEdge.toParsed();
323
+ var bottom = this.bottomEdge.toParsed();
324
+ var right = this.rightEdge.toParsed();
325
+ var hasEdge = top !== undefined ||
326
+ left !== undefined ||
327
+ bottom !== undefined ||
328
+ right !== undefined;
329
+ var hasContainerOpts = this.applyToValue !== 'allPages' ||
330
+ this.measureFromValue !== 'text' ||
331
+ this.zOrderValue !== 'front';
332
+ if (!hasEdge && !hasContainerOpts) {
333
+ return undefined;
334
+ }
335
+ return {
336
+ applyTo: this.applyToValue,
337
+ measureFrom: this.measureFromValue,
338
+ zOrder: this.zOrderValue,
339
+ top: top,
340
+ left: left,
341
+ bottom: bottom,
342
+ right: right,
343
+ };
344
+ };
345
+ /**
346
+ * @private
347
+ */
348
+ PageBorders.prototype.copyFrom = function (source) {
349
+ this.borderTypeValue = source.borderTypeValue;
350
+ this.colorPublicValue = source.colorPublicValue;
351
+ this.colorWireOverride = source.colorWireOverride;
352
+ this.lineWidthValue = source.lineWidthValue;
353
+ this.applyToValue = source.applyToValue;
354
+ this.measureFromValue = source.measureFromValue;
355
+ this.zOrderValue = source.zOrderValue;
356
+ source.topEdge.cloneInto(this.topEdge);
357
+ source.bottomEdge.cloneInto(this.bottomEdge);
358
+ source.leftEdge.cloneInto(this.leftEdge);
359
+ source.rightEdge.cloneInto(this.rightEdge);
360
+ };
361
+ PageBorders.prototype.stampCommonToEdges = function () {
362
+ var wire = this.resolveColorWire();
363
+ this.topEdge.applyCommon(this.borderTypeValue, wire, this.lineWidthValue);
364
+ this.bottomEdge.applyCommon(this.borderTypeValue, wire, this.lineWidthValue);
365
+ this.leftEdge.applyCommon(this.borderTypeValue, wire, this.lineWidthValue);
366
+ this.rightEdge.applyCommon(this.borderTypeValue, wire, this.lineWidthValue);
367
+ };
368
+ PageBorders.prototype.resolveColorWire = function () {
369
+ if (this.colorWireOverride !== undefined && this.colorWireOverride.length > 0) {
370
+ return this.colorWireOverride;
371
+ }
372
+ if (this.colorPublicValue === Color.Transparent) {
373
+ return 'auto';
374
+ }
375
+ var hex = colorToHexWire(this.colorPublicValue);
376
+ return hex.length > 0 ? hex : 'auto';
377
+ };
378
+ return PageBorders;
379
+ }());
380
+ export { PageBorders };
381
+ /**
382
+ * Live section page setup (`CT_SectPr` model) — public surface per architecture §§4–12.
383
+ *
384
+ * Implements the core {@link PageSetupContract} public contract and internal
385
+ * {@link SectionPropertiesModel} for dual-hold serialization.
386
+ *
387
+ * @public
388
+ */
389
+ var PageSetup = /** @class */ (function () {
390
+ /**
391
+ * @private
392
+ */
393
+ function PageSetup() {
394
+ this.attributes = [];
395
+ this.prefix = [];
396
+ this.suffix = [];
397
+ this.headerFooterReferencesValue = [];
398
+ this.breakCodeValue = SectionBreakCode.NewPage;
399
+ this.pageSizeValue = new SizeF(PageSize.Letter.width, PageSize.Letter.height);
400
+ this.orientationValue = PageOrientation.Portrait;
401
+ this.marginsValue = new Margins(72, 72, 72, 72);
402
+ this.headerDistanceValue = 36;
403
+ this.footerDistanceValue = 36;
404
+ this.gutterValue = 0;
405
+ this.firstPageTrayValue = undefined;
406
+ this.otherPagesTrayValue = undefined;
407
+ this.paperSourcePresent = false;
408
+ this.bordersValue = new PageBorders();
409
+ this.lineNumberingPresent = false;
410
+ this.lineNumberingDistanceFromTextValue = 0;
411
+ this.lineNumberingModeValue = LineNumberingMode.RestartPage;
412
+ // Public API is one-based; OOXML `w:lnNumType/@w:start` is zero-based.
413
+ this.lineNumberingStartValueValue = 1;
414
+ this.lineNumberingStepValue = 1;
415
+ this.pageStartingNumberValue = 1;
416
+ this.restartPageNumberingValue = false;
417
+ this.pageNumberStyleValue = PageNumberStyle.Arabic;
418
+ this.chapterNumberingValue = undefined;
419
+ this.pageNumberingPresent = false;
420
+ this.columnsValue = new ColumnCollection();
421
+ this.verticalAlignmentValue = VerticalAlignment.Top;
422
+ this.bidiValue = false;
423
+ this.differentFirstPageValue = false;
424
+ var self = this;
425
+ this.pageSizeValue.setChangeListener(function (width, height) {
426
+ validateSectionLength(width, 'pageSize.width');
427
+ validateSectionLength(height, 'pageSize.height');
428
+ self.orientationValue =
429
+ height >= width
430
+ ? PageOrientation.Portrait
431
+ : PageOrientation.Landscape;
432
+ });
433
+ }
434
+ /**
435
+ * US Letter defaults (architecture § letter factory).
436
+ *
437
+ * @private
438
+ */
439
+ PageSetup.createDefaultLetter = function () {
440
+ return new PageSetup();
441
+ };
442
+ /**
443
+ * Atomic load-path construction — does not call public setters in sequence
444
+ * (avoids orientation last-write-wins side effects during parse).
445
+ *
446
+ * @private
447
+ */
448
+ PageSetup.createFromParsedValues = function (values) {
449
+ var setup = new PageSetup();
450
+ if (values.attributes !== undefined) {
451
+ setup.attributes = values.attributes.slice();
452
+ }
453
+ if (values.prefix !== undefined) {
454
+ setup.prefix = values.prefix.slice();
455
+ }
456
+ if (values.suffix !== undefined) {
457
+ setup.suffix = values.suffix.slice();
458
+ }
459
+ if (values.headerFooterReferences !== undefined) {
460
+ setup.headerFooterReferencesValue = values.headerFooterReferences.slice();
461
+ }
462
+ if (values.breakCode !== undefined) {
463
+ setup.breakCodeValue = values.breakCode;
464
+ }
465
+ validateSectionLength(values.pageWidth, 'pageSize.width');
466
+ validateSectionLength(values.pageHeight, 'pageSize.height');
467
+ setup.pageSizeValue.replace(values.pageWidth, values.pageHeight, false);
468
+ if (values.orientation !== undefined) {
469
+ setup.orientationValue = validatePageOrientation(values.orientation);
470
+ }
471
+ else {
472
+ setup.orientationValue =
473
+ values.pageHeight >= values.pageWidth
474
+ ? PageOrientation.Portrait
475
+ : PageOrientation.Landscape;
476
+ }
477
+ setup.marginsValue.replace(values.marginLeft, values.marginTop, values.marginRight, values.marginBottom);
478
+ if (values.headerDistance !== undefined) {
479
+ setup.headerDistanceValue = validateSectionLength(values.headerDistance, 'headerDistance');
480
+ }
481
+ if (values.footerDistance !== undefined) {
482
+ setup.footerDistanceValue = validateSectionLength(values.footerDistance, 'footerDistance');
483
+ }
484
+ if (values.gutter !== undefined) {
485
+ setup.gutterValue = validateSectionLength(values.gutter, 'gutter');
486
+ }
487
+ if (values.paperSource !== undefined) {
488
+ var paper = assertPaperSource(values.paperSource);
489
+ setup.firstPageTrayValue = paper.firstPageTray;
490
+ setup.otherPagesTrayValue = paper.otherPagesTray;
491
+ setup.paperSourcePresent =
492
+ paper.firstPageTray !== undefined || paper.otherPagesTray !== undefined;
493
+ }
494
+ if (values.pageBorders !== undefined) {
495
+ var bag = assertPageBorders(values.pageBorders);
496
+ setup.bordersValue.loadFromParsed(bag);
497
+ }
498
+ if (values.lineNumbering !== undefined) {
499
+ var ln = assertLineNumbering(values.lineNumbering);
500
+ setup.lineNumberingPresent = true;
501
+ setup.lineNumberingStepValue = ln.countBy;
502
+ setup.lineNumberingModeValue =
503
+ ln.restart === undefined || ln.restart === 'newPage'
504
+ ? LineNumberingMode.RestartPage
505
+ : ln.restart === 'newSection'
506
+ ? LineNumberingMode.RestartSection
507
+ : LineNumberingMode.Continuous;
508
+ // Parse bag `startAt` is wire (zero-based). Public API is one-based.
509
+ // Absent `w:start` matches the schema default of 0 → API 1.
510
+ setup.lineNumberingStartValueValue =
511
+ ln.startAt !== undefined ? ln.startAt + 1 : 1;
512
+ setup.lineNumberingDistanceFromTextValue =
513
+ ln.distanceFromText !== undefined ? ln.distanceFromText : 0;
514
+ }
515
+ if (values.pageStartingNumber !== undefined) {
516
+ setup.pageStartingNumberValue = validatePositiveInteger(values.pageStartingNumber, 'pageStartingNumber');
517
+ }
518
+ if (values.restartPageNumbering !== undefined) {
519
+ setup.restartPageNumberingValue = values.restartPageNumbering === true;
520
+ }
521
+ if (values.pageNumberStyle !== undefined) {
522
+ setup.pageNumberStyleValue = validatePageNumberStyle(values.pageNumberStyle);
523
+ }
524
+ if (values.chapterNumbering !== undefined) {
525
+ setup.chapterNumberingValue = assertChapterNumbering(values.chapterNumbering);
526
+ }
527
+ if (values.pageNumberingPresent === true ||
528
+ values.pageStartingNumber !== undefined ||
529
+ values.restartPageNumbering === true ||
530
+ values.pageNumberStyle !== undefined ||
531
+ values.chapterNumbering !== undefined) {
532
+ setup.pageNumberingPresent = true;
533
+ }
534
+ if (values.columns !== undefined) {
535
+ var src = values.columns;
536
+ setup.columnsValue.replaceFromParsed({
537
+ equalWidth: src.equalWidth,
538
+ separator: src.separator,
539
+ spacing: src.spacing,
540
+ count: src.count,
541
+ columns: Array.from(src).map(function (c) { return ({ width: c.width, space: c.spacing }); }),
542
+ });
543
+ }
544
+ if (values.verticalAlignment !== undefined) {
545
+ setup.verticalAlignmentValue = assertVerticalAlignment(values.verticalAlignment);
546
+ }
547
+ if (values.bidi !== undefined) {
548
+ setup.bidiValue = values.bidi === true;
549
+ }
550
+ if (values.differentFirstPage !== undefined) {
551
+ setup.differentFirstPageValue = values.differentFirstPage === true;
552
+ }
553
+ return setup;
554
+ };
555
+ /**
556
+ * @private
557
+ */
558
+ PageSetup.prototype.cloneDeep = function () {
559
+ var clone = PageSetup.createFromParsedValues({
560
+ attributes: this.attributes,
561
+ prefix: this.prefix,
562
+ suffix: this.suffix,
563
+ headerFooterReferences: this.headerFooterReferencesValue,
564
+ breakCode: this.breakCodeValue,
565
+ pageWidth: this.pageSizeValue.width,
566
+ pageHeight: this.pageSizeValue.height,
567
+ orientation: this.orientationValue,
568
+ marginLeft: this.marginsValue.left,
569
+ marginTop: this.marginsValue.top,
570
+ marginRight: this.marginsValue.right,
571
+ marginBottom: this.marginsValue.bottom,
572
+ headerDistance: this.headerDistanceValue,
573
+ footerDistance: this.footerDistanceValue,
574
+ gutter: this.gutterValue,
575
+ paperSource: this.snapshotPaperSource(),
576
+ pageBorders: this.bordersValue.toParsed(),
577
+ lineNumbering: this.snapshotLineNumbering(),
578
+ pageStartingNumber: this.pageStartingNumberValue,
579
+ restartPageNumbering: this.restartPageNumberingValue,
580
+ pageNumberStyle: this.pageNumberStyleValue,
581
+ chapterNumbering: this.chapterNumberingValue,
582
+ bidi: this.bidiValue,
583
+ pageNumberingPresent: this.pageNumberingPresent,
584
+ columns: this.columnsValue.cloneDeep(),
585
+ verticalAlignment: this.verticalAlignmentValue,
586
+ differentFirstPage: this.differentFirstPageValue,
587
+ });
588
+ // Preserve independent edge state when common props alone would not reconstruct it.
589
+ clone.bordersValue.copyFrom(this.bordersValue);
590
+ return clone;
591
+ };
592
+ Object.defineProperty(PageSetup.prototype, "orientation", {
593
+ // —— public surface ——
594
+ /**
595
+ * Page orientation. Setter swaps width/height only when needed (architecture §7).
596
+ */
597
+ get: function () {
598
+ return this.orientationValue;
599
+ },
600
+ set: function (value) {
601
+ var next = validatePageOrientation(value);
602
+ if (next === this.orientationValue) {
603
+ return;
604
+ }
605
+ var w = this.pageSizeValue.width;
606
+ var h = this.pageSizeValue.height;
607
+ if (next === PageOrientation.Landscape) {
608
+ if (w < h) {
609
+ this.pageSizeValue.replace(h, w, false);
610
+ }
611
+ }
612
+ else {
613
+ if (h < w) {
614
+ this.pageSizeValue.replace(h, w, false);
615
+ }
616
+ }
617
+ this.orientationValue = next;
618
+ },
619
+ enumerable: true,
620
+ configurable: true
621
+ });
622
+ Object.defineProperty(PageSetup.prototype, "pageSize", {
623
+ /**
624
+ * Live page size (stable identity). Setter copies width/height and derives orientation.
625
+ */
626
+ get: function () {
627
+ return this.pageSizeValue;
628
+ },
629
+ set: function (value) {
630
+ if (value == null || typeof value.width !== 'number' || typeof value.height !== 'number') {
631
+ throw sectionsError('pageSize must provide numeric width and height');
632
+ }
633
+ var width = validateSectionLength(value.width, 'pageSize.width');
634
+ var height = validateSectionLength(value.height, 'pageSize.height');
635
+ this.pageSizeValue.replace(width, height, true);
636
+ },
637
+ enumerable: true,
638
+ configurable: true
639
+ });
640
+ Object.defineProperty(PageSetup.prototype, "margins", {
641
+ /**
642
+ * Live margins instance (stable identity for the life of this PageSetup).
643
+ */
644
+ get: function () {
645
+ return this.marginsValue;
646
+ },
647
+ enumerable: true,
648
+ configurable: true
649
+ });
650
+ Object.defineProperty(PageSetup.prototype, "headerDistance", {
651
+ /**
652
+ * Distance from page top to header (`w:pgMar/@w:header`), points.
653
+ */
654
+ get: function () {
655
+ return this.headerDistanceValue;
656
+ },
657
+ set: function (value) {
658
+ this.headerDistanceValue = validateSectionLength(value, 'headerDistance');
659
+ },
660
+ enumerable: true,
661
+ configurable: true
662
+ });
663
+ Object.defineProperty(PageSetup.prototype, "footerDistance", {
664
+ /**
665
+ * Distance from page bottom to footer (`w:pgMar/@w:footer`), points.
666
+ */
667
+ get: function () {
668
+ return this.footerDistanceValue;
669
+ },
670
+ set: function (value) {
671
+ this.footerDistanceValue = validateSectionLength(value, 'footerDistance');
672
+ },
673
+ enumerable: true,
674
+ configurable: true
675
+ });
676
+ Object.defineProperty(PageSetup.prototype, "borders", {
677
+ /**
678
+ * Live page borders (stable identity).
679
+ */
680
+ get: function () {
681
+ return this.bordersValue;
682
+ },
683
+ enumerable: true,
684
+ configurable: true
685
+ });
686
+ Object.defineProperty(PageSetup.prototype, "firstPageTray", {
687
+ /**
688
+ * First-page printer tray (`w:paperSrc/@w:first`).
689
+ */
690
+ get: function () {
691
+ return (this.firstPageTrayValue !== undefined
692
+ ? this.firstPageTrayValue
693
+ : PrinterPaperTray.DefaultBin);
694
+ },
695
+ set: function (value) {
696
+ this.firstPageTrayValue = validateNonNegativeInteger(value, 'firstPageTray');
697
+ this.paperSourcePresent = true;
698
+ },
699
+ enumerable: true,
700
+ configurable: true
701
+ });
702
+ Object.defineProperty(PageSetup.prototype, "otherPagesTray", {
703
+ /**
704
+ * Other-pages printer tray (`w:paperSrc/@w:other`).
705
+ */
706
+ get: function () {
707
+ return (this.otherPagesTrayValue !== undefined
708
+ ? this.otherPagesTrayValue
709
+ : PrinterPaperTray.DefaultBin);
710
+ },
711
+ set: function (value) {
712
+ this.otherPagesTrayValue = validateNonNegativeInteger(value, 'otherPagesTray');
713
+ this.paperSourcePresent = true;
714
+ },
715
+ enumerable: true,
716
+ configurable: true
717
+ });
718
+ Object.defineProperty(PageSetup.prototype, "differentFirstPage", {
719
+ /**
720
+ * Different first page (`w:titlePg`).
721
+ */
722
+ get: function () {
723
+ return this.differentFirstPageValue;
724
+ },
725
+ set: function (value) {
726
+ this.differentFirstPageValue = value === true;
727
+ },
728
+ enumerable: true,
729
+ configurable: true
730
+ });
731
+ Object.defineProperty(PageSetup.prototype, "differentOddAndEvenPages", {
732
+ /**
733
+ * Different odd and even pages — document-scoped via settings `w:evenAndOddHeaders`.
734
+ */
735
+ get: function () {
736
+ var __ts33_3;
737
+ var document = ownerDocumentOf(this);
738
+ if (document === undefined || !isFeatureRegistered(SETTINGS_FEATURE_ID)) {
739
+ return false;
740
+ }
741
+ try {
742
+ var settingsPart = document.featurePart(featureId(SETTINGS_FEATURE_ID));
743
+ if (settingsPart === undefined) {
744
+ return false;
745
+ }
746
+ var evenAndOdd = ((__ts33_3 = settingsPart.evenAndOddHeaders), __ts33_3 == null ? undefined : __ts33_3());
747
+ return evenAndOdd === true;
748
+ }
749
+ catch (_err) {
750
+ return false;
751
+ }
752
+ },
753
+ set: function (value) {
754
+ if (!isFeatureRegistered(SETTINGS_FEATURE_ID)) {
755
+ throw sectionsError('differentOddAndEvenPages requires the settings feature (import @syncfusion/ej2-docx/settings)');
756
+ }
757
+ var document = ownerDocumentOf(this);
758
+ if (document === undefined) {
759
+ throw sectionsError('differentOddAndEvenPages requires page setup associated with a document (use section.pageSetup on a document section)');
760
+ }
761
+ var settingsPart = document.featurePart(featureId(SETTINGS_FEATURE_ID));
762
+ if (settingsPart === undefined ||
763
+ typeof settingsPart.setEvenAndOddHeaders !==
764
+ 'function') {
765
+ throw sectionsError('settings part was not loaded; register settings before WordDocument.open or ensure settings is imported');
766
+ }
767
+ settingsPart.setEvenAndOddHeaders(value ? true : undefined);
768
+ },
769
+ enumerable: true,
770
+ configurable: true
771
+ });
772
+ Object.defineProperty(PageSetup.prototype, "pageStartingNumber", {
773
+ /**
774
+ * Starting page number when restart is enabled (`w:pgNumType/@w:start`).
775
+ */
776
+ get: function () {
777
+ return this.pageStartingNumberValue;
778
+ },
779
+ set: function (value) {
780
+ this.pageStartingNumberValue = validatePositiveInteger(value, 'pageStartingNumber');
781
+ this.pageNumberingPresent = true;
782
+ },
783
+ enumerable: true,
784
+ configurable: true
785
+ });
786
+ Object.defineProperty(PageSetup.prototype, "restartPageNumbering", {
787
+ /**
788
+ * When `true`, write `w:start` with {@link pageStartingNumber}; when `false`, omit start.
789
+ */
790
+ get: function () {
791
+ return this.restartPageNumberingValue;
792
+ },
793
+ set: function (value) {
794
+ this.restartPageNumberingValue = value === true;
795
+ this.pageNumberingPresent = true;
796
+ },
797
+ enumerable: true,
798
+ configurable: true
799
+ });
800
+ Object.defineProperty(PageSetup.prototype, "pageNumberStyle", {
801
+ /**
802
+ * Page number format (`w:pgNumType/@w:fmt`). Always emitted when numbering state is set.
803
+ */
804
+ get: function () {
805
+ return this.pageNumberStyleValue;
806
+ },
807
+ set: function (value) {
808
+ this.pageNumberStyleValue = validatePageNumberStyle(value);
809
+ this.pageNumberingPresent = true;
810
+ },
811
+ enumerable: true,
812
+ configurable: true
813
+ });
814
+ Object.defineProperty(PageSetup.prototype, "lineNumberingDistanceFromText", {
815
+ /**
816
+ * Distance from text to line numbers (`w:lnNumType/@w:distance`), points.
817
+ */
818
+ get: function () {
819
+ return this.lineNumberingDistanceFromTextValue;
820
+ },
821
+ set: function (value) {
822
+ this.lineNumberingDistanceFromTextValue = validateSectionLength(value, 'lineNumberingDistanceFromText');
823
+ this.lineNumberingPresent = true;
824
+ },
825
+ enumerable: true,
826
+ configurable: true
827
+ });
828
+ Object.defineProperty(PageSetup.prototype, "lineNumberingMode", {
829
+ /**
830
+ * Line-number restart mode (`w:lnNumType/@w:restart`).
831
+ */
832
+ get: function () {
833
+ return this.lineNumberingModeValue;
834
+ },
835
+ set: function (value) {
836
+ this.lineNumberingModeValue = validateLineNumberingMode(value);
837
+ this.lineNumberingPresent = true;
838
+ },
839
+ enumerable: true,
840
+ configurable: true
841
+ });
842
+ Object.defineProperty(PageSetup.prototype, "lineNumberingStartValue", {
843
+ /**
844
+ * Line-number start value (one-based public API).
845
+ *
846
+ * Maps to zero-based `w:lnNumType/@w:start` as `wire = api - 1`.
847
+ * Example: API `1` ↔ `w:start="0"`.
848
+ */
849
+ get: function () {
850
+ return this.lineNumberingStartValueValue;
851
+ },
852
+ set: function (value) {
853
+ this.lineNumberingStartValueValue = validatePositiveInteger(value, 'lineNumberingStartValue');
854
+ this.lineNumberingPresent = true;
855
+ },
856
+ enumerable: true,
857
+ configurable: true
858
+ });
859
+ Object.defineProperty(PageSetup.prototype, "lineNumberingStep", {
860
+ /**
861
+ * Line-number count-by step (`w:lnNumType/@w:countBy`).
862
+ */
863
+ get: function () {
864
+ return this.lineNumberingStepValue;
865
+ },
866
+ set: function (value) {
867
+ if (!Number.isInteger(value) || value < 1) {
868
+ throw sectionsError('lineNumberingStep must be an integer ≥ 1');
869
+ }
870
+ this.lineNumberingStepValue = value;
871
+ this.lineNumberingPresent = true;
872
+ },
873
+ enumerable: true,
874
+ configurable: true
875
+ });
876
+ Object.defineProperty(PageSetup.prototype, "breakCode", {
877
+ // —— internal (Section / feature bridges) ——
878
+ /**
879
+ * Section break kind. Public on {@link Section}; kept here for serialize.
880
+ *
881
+ * @private
882
+ */
883
+ get: function () {
884
+ return this.breakCodeValue;
885
+ },
886
+ /**
887
+ * @private
888
+ */
889
+ set: function (value) {
890
+ this.breakCodeValue = validateSectionBreakCode(value);
891
+ },
892
+ enumerable: true,
893
+ configurable: true
894
+ });
895
+ Object.defineProperty(PageSetup.prototype, "columns", {
896
+ /**
897
+ * Text columns collection (Section exposes the same instance).
898
+ *
899
+ * @private
900
+ */
901
+ get: function () {
902
+ return this.columnsValue;
903
+ },
904
+ enumerable: true,
905
+ configurable: true
906
+ });
907
+ Object.defineProperty(PageSetup.prototype, "headerFooterReferences", {
908
+ /**
909
+ * @private
910
+ */
911
+ get: function () {
912
+ return this.headerFooterReferencesValue;
913
+ },
914
+ enumerable: true,
915
+ configurable: true
916
+ });
917
+ PageSetup.prototype.headerFooterReferenceId = function (kindOrTarget, refType) {
918
+ var __ts33_0;
919
+ var target = resolveHeaderFooterTarget(kindOrTarget, refType);
920
+ return ((__ts33_0 = this.headerFooterReferencesValue.find(function (ref) { return ref.kind === target.kind && ref.refType === target.refType; })), __ts33_0 == null ? undefined : __ts33_0.relationshipId);
921
+ };
922
+ PageSetup.prototype.setHeaderFooterReference = function (kindOrTarget, refTypeOrId, relationshipId) {
923
+ var target;
924
+ var id;
925
+ if (isHeaderFooterTarget(kindOrTarget)) {
926
+ target = kindOrTarget;
927
+ id = typeof refTypeOrId === 'string' ? refTypeOrId : undefined;
928
+ }
929
+ else {
930
+ var refType = refTypeOrId === 'default' || refTypeOrId === 'first' || refTypeOrId === 'even'
931
+ ? refTypeOrId
932
+ : undefined;
933
+ target = resolveHeaderFooterTarget(kindOrTarget, refType);
934
+ id = relationshipId;
935
+ }
936
+ var next = this.headerFooterReferencesValue.filter(function (ref) { return !(ref.kind === target.kind && ref.refType === target.refType); });
937
+ if (id !== undefined) {
938
+ next.push({ kind: target.kind, refType: target.refType, relationshipId: id });
939
+ }
940
+ this.headerFooterReferencesValue = next;
941
+ };
942
+ Object.defineProperty(PageSetup.prototype, "gutter", {
943
+ /**Gutter margin (`w:pgMar/@w:gutter`), points.
944
+ */
945
+ get: function () {
946
+ return this.gutterValue;
947
+ },
948
+ set: function (value) {
949
+ this.gutterValue = validateSectionLength(value, 'gutter');
950
+ },
951
+ enumerable: true,
952
+ configurable: true
953
+ });
954
+ Object.defineProperty(PageSetup.prototype, "verticalAlignment", {
955
+ /**
956
+ * Vertical text alignment on the page (`w:vAlign` / `ST_VerticalJc`).
957
+ */
958
+ get: function () {
959
+ return this.verticalAlignmentValue;
960
+ },
961
+ set: function (value) {
962
+ this.verticalAlignmentValue = assertVerticalAlignment(value);
963
+ },
964
+ enumerable: true,
965
+ configurable: true
966
+ });
967
+ Object.defineProperty(PageSetup.prototype, "bidi", {
968
+ /**
969
+ * Right-to-left section layout (`w:bidi`, ECMA-376-1 §17.6.1).
970
+ */
971
+ get: function () {
972
+ return this.bidiValue;
973
+ },
974
+ set: function (value) {
975
+ this.bidiValue = value === true;
976
+ },
977
+ enumerable: true,
978
+ configurable: true
979
+ });
980
+ Object.defineProperty(PageSetup.prototype, "pageBorderOffsetFrom", {
981
+ /**
982
+ * Page border offset origin (`w:pgBorders/@w:offsetFrom`).
983
+ */
984
+ get: function () {
985
+ return this.bordersValue.measureFrom === 'page'
986
+ ? PageBorderOffsetFrom.PageEdge
987
+ : PageBorderOffsetFrom.Text;
988
+ },
989
+ set: function (value) {
990
+ if (value === PageBorderOffsetFrom.PageEdge) {
991
+ this.bordersValue.setMeasureFrom('page');
992
+ return;
993
+ }
994
+ if (value === PageBorderOffsetFrom.Text) {
995
+ this.bordersValue.setMeasureFrom('text');
996
+ return;
997
+ }
998
+ throw sectionsError('pageBorderOffsetFrom is invalid');
999
+ },
1000
+ enumerable: true,
1001
+ configurable: true
1002
+ });
1003
+ Object.defineProperty(PageSetup.prototype, "pageBordersApplyType", {
1004
+ /**
1005
+ * Which pages receive page borders (`w:pgBorders/@w:display`).
1006
+ */
1007
+ get: function () {
1008
+ var apply = this.bordersValue.applyTo;
1009
+ if (apply === 'firstPage') {
1010
+ return PageBordersApplyType.FirstPage;
1011
+ }
1012
+ if (apply === 'notFirstPage') {
1013
+ return PageBordersApplyType.NotFirstPage;
1014
+ }
1015
+ return PageBordersApplyType.AllPages;
1016
+ },
1017
+ set: function (value) {
1018
+ if (value === PageBordersApplyType.FirstPage) {
1019
+ this.bordersValue.setApplyTo('firstPage');
1020
+ return;
1021
+ }
1022
+ if (value === PageBordersApplyType.NotFirstPage) {
1023
+ this.bordersValue.setApplyTo('notFirstPage');
1024
+ return;
1025
+ }
1026
+ if (value === PageBordersApplyType.AllPages) {
1027
+ this.bordersValue.setApplyTo('allPages');
1028
+ return;
1029
+ }
1030
+ throw sectionsError('pageBordersApplyType is invalid');
1031
+ },
1032
+ enumerable: true,
1033
+ configurable: true
1034
+ });
1035
+ Object.defineProperty(PageSetup.prototype, "chapterNumbering", {
1036
+ /**
1037
+ * @private
1038
+ */
1039
+ get: function () {
1040
+ return this.chapterNumberingValue;
1041
+ },
1042
+ /**
1043
+ * @private
1044
+ */
1045
+ set: function (value) {
1046
+ this.chapterNumberingValue =
1047
+ value === undefined ? undefined : assertChapterNumbering(value);
1048
+ if (value !== undefined) {
1049
+ this.pageNumberingPresent = true;
1050
+ }
1051
+ },
1052
+ enumerable: true,
1053
+ configurable: true
1054
+ });
1055
+ /**
1056
+ * @private
1057
+ */
1058
+ PageSetup.prototype.snapshotPaperSource = function () {
1059
+ if (!this.paperSourcePresent) {
1060
+ return undefined;
1061
+ }
1062
+ if (this.firstPageTrayValue === undefined && this.otherPagesTrayValue === undefined) {
1063
+ return undefined;
1064
+ }
1065
+ return {
1066
+ firstPageTray: this.firstPageTrayValue,
1067
+ otherPagesTray: this.otherPagesTrayValue,
1068
+ };
1069
+ };
1070
+ /**
1071
+ * @private
1072
+ */
1073
+ PageSetup.prototype.snapshotLineNumbering = function () {
1074
+ if (!this.lineNumberingPresent) {
1075
+ return undefined;
1076
+ }
1077
+ var restartWire = this.lineNumberingModeValue === LineNumberingMode.RestartPage
1078
+ ? undefined
1079
+ : this.lineNumberingModeValue;
1080
+ // Public API is one-based; parse/serialize bag uses wire zero-based start.
1081
+ // Omit when wire would be 0 (API default 1) — matches common Word omission.
1082
+ var wireStart = this.lineNumberingStartValueValue - 1;
1083
+ return {
1084
+ countBy: this.lineNumberingStepValue,
1085
+ restart: restartWire,
1086
+ startAt: wireStart !== 0 ? wireStart : undefined,
1087
+ distanceFromText: this.lineNumberingDistanceFromTextValue !== 0
1088
+ ? this.lineNumberingDistanceFromTextValue
1089
+ : undefined,
1090
+ };
1091
+ };
1092
+ /**
1093
+ * Serialize `w:sectPr` in EG_SectPrContents order.
1094
+ *
1095
+ * @private
1096
+ */
1097
+ PageSetup.prototype.toOpenXml = function () {
1098
+ var children = [];
1099
+ for (var i = 0; i < this.headerFooterReferencesValue.length; i++) {
1100
+ children.push(serializeHeaderFooterReference(this.headerFooterReferencesValue[i]));
1101
+ }
1102
+ for (var p = 0; p < this.prefix.length; p++) {
1103
+ children.push(this.prefix[p]);
1104
+ }
1105
+ var wire = breakCodeToWire(this.breakCodeValue);
1106
+ if (wire !== 'newPage') {
1107
+ children.push(wmlElement('type', { attributes: [wmlAttr('val', wire)] }));
1108
+ }
1109
+ children.push(serializePageSize(this.pageSizeValue.width, this.pageSizeValue.height, this.orientationValue));
1110
+ children.push(serializePageMargins(this.marginsValue.top, this.marginsValue.right, this.marginsValue.bottom, this.marginsValue.left, this.headerDistanceValue, this.footerDistanceValue, this.gutterValue));
1111
+ var paperBag = this.snapshotPaperSource();
1112
+ if (paperBag !== undefined) {
1113
+ var paperSrcEl = serializePaperSource(paperBag);
1114
+ if (paperSrcEl !== undefined) {
1115
+ children.push(paperSrcEl);
1116
+ }
1117
+ }
1118
+ var bordersBag = this.bordersValue.toParsed();
1119
+ if (bordersBag !== undefined) {
1120
+ var bordersEl = serializePageBorders(bordersBag);
1121
+ if (bordersEl !== undefined) {
1122
+ children.push(bordersEl);
1123
+ }
1124
+ }
1125
+ var lineBag = this.snapshotLineNumbering();
1126
+ if (lineBag !== undefined) {
1127
+ children.push(serializeLineNumbering(lineBag));
1128
+ }
1129
+ if (this.pageNumberingPresent) {
1130
+ children.push(serializePageNumbering(this.pageNumberStyleValue, this.restartPageNumberingValue ? this.pageStartingNumberValue : undefined, this.chapterNumberingValue));
1131
+ }
1132
+ var colsEl = this.columnsValue.toOpenXmlElement();
1133
+ if (colsEl !== undefined) {
1134
+ children.push(colsEl);
1135
+ }
1136
+ if (this.verticalAlignmentValue !== VerticalAlignment.Top) {
1137
+ children.push(wmlElement('vAlign', {
1138
+ attributes: [wmlAttr('val', this.verticalAlignmentValue)],
1139
+ }));
1140
+ }
1141
+ if (this.bidiValue) {
1142
+ children.push(serializeOnOff('bidi', true));
1143
+ }
1144
+ if (this.differentFirstPageValue) {
1145
+ children.push(serializeOnOff('titlePg', true));
1146
+ }
1147
+ for (var s = 0; s < this.suffix.length; s++) {
1148
+ children.push(this.suffix[s]);
1149
+ }
1150
+ var namespaceDeclarations = this.headerFooterReferencesValue.length > 0
1151
+ ? [{ prefix: 'r', namespaceUri: RELATIONSHIPS_OFFICE_NS }]
1152
+ : [];
1153
+ return wmlElement('sectPr', {
1154
+ attributes: this.attributes,
1155
+ namespaceDeclarations: namespaceDeclarations,
1156
+ children: children,
1157
+ });
1158
+ };
1159
+ return PageSetup;
1160
+ }());
1161
+ export { PageSetup };
1162
+ /**
1163
+ * @private
1164
+ * Default letter section factory (replaces `defaultLetterSection`).
1165
+ */
1166
+ export function defaultLetterPageSetup() {
1167
+ return PageSetup.createDefaultLetter();
1168
+ }
1169
+ // —— helpers ——
1170
+ function isHeaderFooterTarget(value) {
1171
+ if (typeof value !== 'object' || value === null) {
1172
+ return false;
1173
+ }
1174
+ var record = value;
1175
+ return ((record.kind === 'header' || record.kind === 'footer') &&
1176
+ (record.refType === 'default' || record.refType === 'first' || record.refType === 'even'));
1177
+ }
1178
+ function resolveHeaderFooterTarget(kindOrTarget, refType) {
1179
+ if (isHeaderFooterTarget(kindOrTarget)) {
1180
+ return kindOrTarget;
1181
+ }
1182
+ if (refType === undefined) {
1183
+ throw sectionsError('header/footer refType is required');
1184
+ }
1185
+ return { kind: kindOrTarget, refType: refType };
1186
+ }
1187
+ function serializeHeaderFooterReference(ref) {
1188
+ var localName = ref.kind === 'header' ? 'headerReference' : 'footerReference';
1189
+ return wmlElement(localName, {
1190
+ attributes: [
1191
+ {
1192
+ namespaceUri: RELATIONSHIPS_OFFICE_NS,
1193
+ localName: 'id',
1194
+ prefix: 'r',
1195
+ value: ref.relationshipId,
1196
+ },
1197
+ wmlAttr('type', ref.refType),
1198
+ ],
1199
+ });
1200
+ }
1201
+ function serializePageSize(width, height, orientation) {
1202
+ var attrs = [
1203
+ wmlAttr('w', String(pointToTwips(width))),
1204
+ wmlAttr('h', String(pointToTwips(height))),
1205
+ ];
1206
+ if (orientation === PageOrientation.Landscape) {
1207
+ attrs.push(wmlAttr('orient', 'landscape'));
1208
+ }
1209
+ return wmlElement('pgSz', { attributes: attrs });
1210
+ }
1211
+ function serializePageMargins(top, right, bottom, left, header, footer, gutter) {
1212
+ return wmlElement('pgMar', {
1213
+ attributes: [
1214
+ wmlAttr('top', String(pointToTwips(top))),
1215
+ wmlAttr('right', String(pointToTwips(right))),
1216
+ wmlAttr('bottom', String(pointToTwips(bottom))),
1217
+ wmlAttr('left', String(pointToTwips(left))),
1218
+ wmlAttr('header', String(pointToTwips(header))),
1219
+ wmlAttr('footer', String(pointToTwips(footer))),
1220
+ wmlAttr('gutter', String(pointToTwips(gutter))),
1221
+ ],
1222
+ });
1223
+ }
1224
+ function serializePaperSource(value) {
1225
+ var attrs = [];
1226
+ if (value.firstPageTray !== undefined) {
1227
+ attrs.push(wmlAttr('first', String(value.firstPageTray)));
1228
+ }
1229
+ if (value.otherPagesTray !== undefined) {
1230
+ attrs.push(wmlAttr('other', String(value.otherPagesTray)));
1231
+ }
1232
+ if (attrs.length === 0) {
1233
+ return undefined;
1234
+ }
1235
+ return wmlElement('paperSrc', { attributes: attrs });
1236
+ }
1237
+ function serializeLineNumbering(value) {
1238
+ var attrs = [wmlAttr('countBy', String(value.countBy))];
1239
+ if (value.restart !== undefined && value.restart !== 'newPage') {
1240
+ attrs.push(wmlAttr('restart', value.restart));
1241
+ }
1242
+ if (value.startAt !== undefined) {
1243
+ attrs.push(wmlAttr('start', String(value.startAt)));
1244
+ }
1245
+ if (value.distanceFromText !== undefined) {
1246
+ attrs.push(wmlAttr('distance', String(pointToTwips(value.distanceFromText))));
1247
+ }
1248
+ return wmlElement('lnNumType', { attributes: attrs });
1249
+ }
1250
+ function serializePageNumbering(format, startAt, chapter) {
1251
+ var attrs = [wmlAttr('fmt', format)];
1252
+ if (startAt !== undefined) {
1253
+ attrs.push(wmlAttr('start', String(startAt)));
1254
+ }
1255
+ if (chapter !== undefined) {
1256
+ attrs.push(wmlAttr('chapStyle', String(chapter.headingLevel)));
1257
+ if (chapter.separator !== 'hyphen') {
1258
+ attrs.push(wmlAttr('chapSep', chapter.separator));
1259
+ }
1260
+ }
1261
+ return wmlElement('pgNumType', { attributes: attrs });
1262
+ }
1263
+ function isActiveBorderStyle(style) {
1264
+ return style !== BorderStyle.None && style !== BorderStyle.Nil;
1265
+ }
1266
+ function isActiveBorderEdge(edge) {
1267
+ if (edge === undefined) {
1268
+ return false;
1269
+ }
1270
+ return edge.style !== 'none' && edge.style !== 'nil';
1271
+ }
1272
+ function serializePageBorderEdge(localName, edge) {
1273
+ if (!isActiveBorderEdge(edge)) {
1274
+ return undefined;
1275
+ }
1276
+ var sz = Math.round(edge.widthPoints * 8);
1277
+ var attrs = [
1278
+ wmlAttr('val', edge.style),
1279
+ wmlAttr('sz', String(sz)),
1280
+ wmlAttr('space', String(Math.round(edge.offsetPoints))),
1281
+ ];
1282
+ if (edge.color !== 'auto') {
1283
+ attrs.push(wmlAttr('color', edge.color));
1284
+ }
1285
+ return wmlElement(localName, { attributes: attrs });
1286
+ }
1287
+ function serializePageBorders(value) {
1288
+ var children = [];
1289
+ var top = value.top === undefined ? undefined : serializePageBorderEdge('top', value.top);
1290
+ var left = value.left === undefined ? undefined : serializePageBorderEdge('left', value.left);
1291
+ var bottom = value.bottom === undefined ? undefined : serializePageBorderEdge('bottom', value.bottom);
1292
+ var right = value.right === undefined ? undefined : serializePageBorderEdge('right', value.right);
1293
+ if (top !== undefined) {
1294
+ children.push(top);
1295
+ }
1296
+ if (left !== undefined) {
1297
+ children.push(left);
1298
+ }
1299
+ if (bottom !== undefined) {
1300
+ children.push(bottom);
1301
+ }
1302
+ if (right !== undefined) {
1303
+ children.push(right);
1304
+ }
1305
+ var attrs = [];
1306
+ if (value.zOrder !== 'front') {
1307
+ attrs.push(wmlAttr('zOrder', value.zOrder));
1308
+ }
1309
+ if (value.applyTo !== 'allPages') {
1310
+ attrs.push(wmlAttr('display', value.applyTo));
1311
+ }
1312
+ if (value.measureFrom !== 'text') {
1313
+ attrs.push(wmlAttr('offsetFrom', value.measureFrom));
1314
+ }
1315
+ if (children.length === 0 && attrs.length === 0) {
1316
+ return undefined;
1317
+ }
1318
+ return wmlElement('pgBorders', { attributes: attrs, children: children });
1319
+ }
1320
+ function assertPaperSource(value) {
1321
+ var firstPageTray = value.firstPageTray === undefined
1322
+ ? undefined
1323
+ : validateNonNegativeInteger(value.firstPageTray, 'firstPageTray');
1324
+ var otherPagesTray = value.otherPagesTray === undefined
1325
+ ? undefined
1326
+ : validateNonNegativeInteger(value.otherPagesTray, 'otherPagesTray');
1327
+ return { firstPageTray: firstPageTray, otherPagesTray: otherPagesTray };
1328
+ }
1329
+ function assertLineNumbering(value) {
1330
+ if (!Number.isInteger(value.countBy) || value.countBy < 1) {
1331
+ throw sectionsError('lineNumberingStep must be an integer ≥ 1');
1332
+ }
1333
+ var restart = value.restart;
1334
+ if (restart !== undefined) {
1335
+ switch (restart) {
1336
+ case 'newPage':
1337
+ case 'newSection':
1338
+ case 'continuous':
1339
+ break;
1340
+ default: {
1341
+ var _exhaustive = restart;
1342
+ void _exhaustive;
1343
+ throw sectionsError("lineNumbering.restart must be 'newPage', 'newSection', or 'continuous'");
1344
+ }
1345
+ }
1346
+ }
1347
+ // Parse-bag `startAt` is zero-based wire (`w:lnNumType/@w:start`).
1348
+ if (value.startAt !== undefined && (!Number.isInteger(value.startAt) || value.startAt < 0)) {
1349
+ throw sectionsError('lineNumbering wire startAt must be an integer ≥ 0');
1350
+ }
1351
+ var distanceFromText = value.distanceFromText === undefined
1352
+ ? undefined
1353
+ : validateSectionLength(value.distanceFromText, 'lineNumberingDistanceFromText');
1354
+ return {
1355
+ countBy: value.countBy,
1356
+ restart: restart,
1357
+ startAt: value.startAt,
1358
+ distanceFromText: distanceFromText,
1359
+ };
1360
+ }
1361
+ function assertChapterNumbering(value) {
1362
+ var headingLevel = value.headingLevel;
1363
+ if (!Number.isInteger(headingLevel) || headingLevel < 1 || headingLevel > 9) {
1364
+ throw sectionsError('chapterNumbering.headingLevel must be an integer in 1…9');
1365
+ }
1366
+ var separator = value.separator;
1367
+ switch (separator) {
1368
+ case 'hyphen':
1369
+ case 'period':
1370
+ case 'colon':
1371
+ case 'emDash':
1372
+ case 'enDash':
1373
+ break;
1374
+ default: {
1375
+ var _exhaustive = separator;
1376
+ void _exhaustive;
1377
+ throw sectionsError('chapterNumbering.separator is invalid');
1378
+ }
1379
+ }
1380
+ return { headingLevel: headingLevel, separator: separator };
1381
+ }
1382
+ function assertVerticalAlignment(value) {
1383
+ switch (value) {
1384
+ case VerticalAlignment.Top:
1385
+ case 'top':
1386
+ return VerticalAlignment.Top;
1387
+ case VerticalAlignment.Center:
1388
+ case 'center':
1389
+ return VerticalAlignment.Center;
1390
+ case VerticalAlignment.Both:
1391
+ case 'both':
1392
+ return VerticalAlignment.Both;
1393
+ case VerticalAlignment.Bottom:
1394
+ case 'bottom':
1395
+ return VerticalAlignment.Bottom;
1396
+ default: {
1397
+ throw sectionsError('verticalAlignment must be a valid VerticalAlignment value');
1398
+ }
1399
+ }
1400
+ }
1401
+ function assertPageBorderEdge(edge, label) {
1402
+ if (typeof edge.widthPoints !== 'number' ||
1403
+ Number.isNaN(edge.widthPoints) ||
1404
+ edge.widthPoints < 0.25 ||
1405
+ edge.widthPoints > 12) {
1406
+ throw sectionsError(label + ".widthPoints must be in 0.25\u201312");
1407
+ }
1408
+ if (typeof edge.offsetPoints !== 'number' ||
1409
+ Number.isNaN(edge.offsetPoints) ||
1410
+ edge.offsetPoints < 0 ||
1411
+ edge.offsetPoints > 31) {
1412
+ throw sectionsError(label + ".offsetPoints must be in 0\u202631");
1413
+ }
1414
+ if (!BORDER_STYLE_VALUES.has(edge.style)) {
1415
+ throw sectionsError(label + ".style is not a supported border style");
1416
+ }
1417
+ if (typeof edge.color !== 'string' || edge.color.length === 0) {
1418
+ throw sectionsError(label + ".color must be a non-empty string");
1419
+ }
1420
+ return edge;
1421
+ }
1422
+ function assertPageBorders(value) {
1423
+ var applyTo = value.applyTo;
1424
+ if (applyTo !== 'allPages' && applyTo !== 'firstPage' && applyTo !== 'notFirstPage') {
1425
+ throw sectionsError('pageBorders.applyTo is invalid');
1426
+ }
1427
+ var measureFrom = value.measureFrom;
1428
+ if (measureFrom !== 'text' && measureFrom !== 'page') {
1429
+ throw sectionsError('pageBorders.measureFrom is invalid');
1430
+ }
1431
+ var zOrder = value.zOrder;
1432
+ if (zOrder !== 'front' && zOrder !== 'back') {
1433
+ throw sectionsError('pageBorders.zOrder is invalid');
1434
+ }
1435
+ return {
1436
+ applyTo: applyTo,
1437
+ measureFrom: measureFrom,
1438
+ zOrder: zOrder,
1439
+ top: value.top === undefined ? undefined : assertPageBorderEdge(value.top, 'pageBorders.top'),
1440
+ left: value.left === undefined ? undefined : assertPageBorderEdge(value.left, 'pageBorders.left'),
1441
+ bottom: value.bottom === undefined
1442
+ ? undefined
1443
+ : assertPageBorderEdge(value.bottom, 'pageBorders.bottom'),
1444
+ right: value.right === undefined
1445
+ ? undefined
1446
+ : assertPageBorderEdge(value.right, 'pageBorders.right'),
1447
+ };
1448
+ }
1449
+ function validateBorderStyle(value, label) {
1450
+ if (!BORDER_STYLE_VALUES.has(value)) {
1451
+ throw sectionsError(label + " must be a valid BorderStyle value");
1452
+ }
1453
+ return value;
1454
+ }
1455
+ function validateBorderWidth(value, label) {
1456
+ if (typeof value !== 'number' || Number.isNaN(value) || value < 0.25 || value > 12) {
1457
+ throw sectionsError(label + " must be in 0.25\u201312 points");
1458
+ }
1459
+ return value;
1460
+ }
1461
+ function validateLineNumberingMode(value) {
1462
+ switch (value) {
1463
+ case LineNumberingMode.Continuous:
1464
+ case LineNumberingMode.RestartPage:
1465
+ case LineNumberingMode.RestartSection:
1466
+ return value;
1467
+ default: {
1468
+ var _exhaustive = value;
1469
+ void _exhaustive;
1470
+ throw sectionsError('lineNumberingMode is invalid');
1471
+ }
1472
+ }
1473
+ }
1474
+ function borderStyleFromWire(style) {
1475
+ if (BORDER_STYLE_VALUES.has(style)) {
1476
+ return style;
1477
+ }
1478
+ return BorderStyle.None;
1479
+ }