@cj-tech-master/excelts 9.5.4 → 9.5.5

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 (767) hide show
  1. package/dist/browser/modules/archive/compression/streaming-compress.browser.js +29 -0
  2. package/dist/browser/modules/archive/compression/streaming-compress.js +9 -0
  3. package/dist/browser/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  4. package/dist/browser/modules/archive/fs/archive-file.d.ts +8 -5
  5. package/dist/browser/modules/archive/fs/archive-file.js +78 -16
  6. package/dist/browser/modules/archive/unzip/stream.browser.js +43 -2
  7. package/dist/browser/modules/excel/chart/chart-ex-builder.js +7 -2
  8. package/dist/browser/modules/excel/chart/chart-ex-renderer.js +4 -9
  9. package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +0 -12
  10. package/dist/browser/modules/excel/chart/chart.d.ts +1 -5
  11. package/dist/browser/modules/excel/chart/chart.js +1 -7
  12. package/dist/browser/modules/excel/chart/types.d.ts +0 -6
  13. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +25 -1
  14. package/dist/browser/modules/excel/stream/workbook-reader.js +9 -0
  15. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
  16. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +228 -13
  17. package/dist/browser/modules/excel/utils/string-buf.d.ts +5 -26
  18. package/dist/browser/modules/excel/utils/string-buf.js +4 -81
  19. package/dist/browser/modules/excel/workbook.browser.js +135 -25
  20. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  21. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
  22. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +32 -8
  23. package/dist/browser/modules/excel/xlsx/xlsx.d.ts +10 -2
  24. package/dist/browser/modules/excel/xlsx/xlsx.js +9 -1
  25. package/dist/browser/modules/pdf/excel-bridge.d.ts +30 -1
  26. package/dist/browser/modules/pdf/excel-bridge.js +32 -0
  27. package/dist/browser/modules/pdf/font/metrics.d.ts +3 -52
  28. package/dist/browser/modules/pdf/font/metrics.js +3 -237
  29. package/dist/browser/modules/pdf/index.d.ts +1 -1
  30. package/dist/browser/modules/pdf/index.js +1 -1
  31. package/dist/browser/modules/pdf/render-layout-to-pdf.d.ts +66 -0
  32. package/dist/browser/modules/pdf/render-layout-to-pdf.js +647 -0
  33. package/dist/browser/modules/pdf/word-bridge.d.ts +80 -12
  34. package/dist/browser/modules/pdf/word-bridge.js +122 -274
  35. package/dist/browser/modules/stream/index.base.d.ts +2 -0
  36. package/dist/browser/modules/stream/index.base.js +2 -1
  37. package/dist/browser/modules/stream/internal/sink-adapter.d.ts +65 -0
  38. package/dist/browser/modules/stream/internal/sink-adapter.js +198 -0
  39. package/dist/browser/modules/stream/pull-stream.d.ts +19 -2
  40. package/dist/browser/modules/stream/pull-stream.js +51 -5
  41. package/dist/browser/modules/stream/types.d.ts +13 -1
  42. package/dist/browser/modules/word/advanced/diff.d.ts +61 -0
  43. package/dist/browser/modules/word/advanced/diff.js +167 -0
  44. package/dist/browser/modules/word/advanced/drawing-shapes.d.ts +269 -0
  45. package/dist/browser/modules/word/advanced/drawing-shapes.js +268 -0
  46. package/dist/browser/modules/word/advanced/field-engine.d.ts +43 -0
  47. package/dist/browser/modules/word/advanced/field-engine.js +1225 -0
  48. package/dist/browser/modules/word/advanced/glossary.d.ts +86 -0
  49. package/dist/browser/modules/word/advanced/glossary.js +79 -0
  50. package/dist/browser/modules/word/advanced/math-convert.d.ts +30 -0
  51. package/dist/browser/modules/word/advanced/math-convert.js +595 -0
  52. package/dist/browser/modules/word/advanced/ole-objects.d.ts +115 -0
  53. package/dist/browser/modules/word/advanced/ole-objects.js +271 -0
  54. package/dist/browser/modules/word/advanced/style-map.d.ts +105 -0
  55. package/dist/browser/modules/word/advanced/style-map.js +322 -0
  56. package/dist/browser/modules/word/advanced/validation.d.ts +56 -0
  57. package/dist/browser/modules/word/advanced/validation.js +1065 -0
  58. package/dist/browser/modules/word/advanced/vba-project.d.ts +91 -0
  59. package/dist/browser/modules/word/advanced/vba-project.js +265 -0
  60. package/dist/browser/modules/word/bridge/excel-bridge.d.ts +127 -0
  61. package/dist/browser/modules/word/bridge/excel-bridge.js +980 -0
  62. package/dist/browser/modules/word/builder/document-handle.d.ts +151 -0
  63. package/dist/browser/modules/word/builder/document-handle.js +664 -0
  64. package/dist/browser/modules/word/builder/paragraph-builders.d.ts +61 -0
  65. package/dist/browser/modules/word/builder/paragraph-builders.js +90 -0
  66. package/dist/browser/modules/word/builder/run-builders.d.ts +374 -0
  67. package/dist/browser/modules/word/builder/run-builders.js +600 -0
  68. package/dist/browser/modules/word/builder/table-builders.d.ts +23 -0
  69. package/dist/browser/modules/word/builder/table-builders.js +45 -0
  70. package/dist/browser/modules/word/constants.d.ts +39 -1
  71. package/dist/browser/modules/word/constants.js +109 -1
  72. package/dist/browser/modules/word/convert/conversion-ir.d.ts +210 -0
  73. package/dist/browser/modules/word/convert/conversion-ir.js +31 -0
  74. package/dist/browser/modules/word/convert/docx-to-semantic.d.ts +39 -0
  75. package/dist/browser/modules/word/convert/docx-to-semantic.js +499 -0
  76. package/dist/browser/modules/word/convert/flat-opc.d.ts +44 -0
  77. package/dist/browser/modules/word/convert/flat-opc.js +385 -0
  78. package/dist/browser/modules/word/convert/html/html-import.d.ts +50 -0
  79. package/dist/browser/modules/word/convert/html/html-import.js +1907 -0
  80. package/dist/{types/modules/word → browser/modules/word/convert/html}/html-renderer.d.ts +14 -1
  81. package/dist/{esm/modules/word → browser/modules/word/convert/html}/html-renderer.js +420 -69
  82. package/dist/browser/modules/word/convert/html/html.d.ts +15 -0
  83. package/dist/browser/modules/word/convert/html/html.js +15 -0
  84. package/dist/browser/modules/word/convert/markdown/markdown-import.d.ts +68 -0
  85. package/dist/browser/modules/word/convert/markdown/markdown-import.js +1325 -0
  86. package/dist/browser/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
  87. package/dist/browser/modules/word/convert/markdown/markdown-renderer.js +634 -0
  88. package/dist/browser/modules/word/convert/markdown/markdown.d.ts +15 -0
  89. package/dist/browser/modules/word/convert/markdown/markdown.js +15 -0
  90. package/dist/browser/modules/word/convert/odt/odt.d.ts +41 -0
  91. package/dist/browser/modules/word/convert/odt/odt.js +1932 -0
  92. package/dist/browser/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
  93. package/dist/browser/modules/word/core/color-utils.js +43 -0
  94. package/dist/browser/modules/word/core/internal-utils.d.ts +90 -0
  95. package/dist/browser/modules/word/core/internal-utils.js +209 -0
  96. package/dist/browser/modules/word/core/mapper.d.ts +44 -0
  97. package/dist/browser/modules/word/core/mapper.js +427 -0
  98. package/dist/browser/modules/word/core/opc-paths.d.ts +33 -0
  99. package/dist/browser/modules/word/core/opc-paths.js +48 -0
  100. package/dist/browser/modules/word/core/text-utils.d.ts +38 -0
  101. package/dist/browser/modules/word/core/text-utils.js +202 -0
  102. package/dist/browser/modules/word/core/walker.d.ts +119 -0
  103. package/dist/browser/modules/word/core/walker.js +570 -0
  104. package/dist/browser/modules/word/crypto.d.ts +14 -9
  105. package/dist/browser/modules/word/crypto.js +13 -7
  106. package/dist/browser/modules/word/document-io.d.ts +59 -27
  107. package/dist/browser/modules/word/document-io.js +80 -197
  108. package/dist/browser/modules/word/errors.d.ts +44 -1
  109. package/dist/browser/modules/word/errors.js +54 -2
  110. package/dist/browser/modules/word/excel.d.ts +14 -0
  111. package/dist/browser/modules/word/excel.js +13 -0
  112. package/dist/browser/modules/word/font/font-embed.d.ts +112 -0
  113. package/dist/browser/modules/word/font/font-embed.js +646 -0
  114. package/dist/{esm/modules/word → browser/modules/word/font}/font-obfuscation.js +4 -9
  115. package/dist/browser/modules/word/font/hyphenation.d.ts +65 -0
  116. package/dist/browser/modules/word/font/hyphenation.js +4210 -0
  117. package/dist/browser/modules/word/font/text-shaping.d.ts +58 -0
  118. package/dist/browser/modules/word/font/text-shaping.js +635 -0
  119. package/dist/browser/modules/word/html.d.ts +7 -6
  120. package/dist/browser/modules/word/html.js +6 -5
  121. package/dist/browser/modules/word/incremental-edit.d.ts +123 -0
  122. package/dist/browser/modules/word/incremental-edit.js +361 -0
  123. package/dist/browser/modules/word/index.base.d.ts +194 -10
  124. package/dist/browser/modules/word/index.base.js +138 -29
  125. package/dist/browser/modules/word/layout/layout-constants.d.ts +17 -0
  126. package/dist/browser/modules/word/layout/layout-constants.js +17 -0
  127. package/dist/browser/modules/word/layout/layout-full.d.ts +53 -0
  128. package/dist/browser/modules/word/layout/layout-full.js +1696 -0
  129. package/dist/browser/modules/word/layout/layout-model.d.ts +344 -0
  130. package/dist/browser/modules/word/layout/layout-model.js +16 -0
  131. package/dist/browser/modules/word/layout/layout.d.ts +63 -0
  132. package/dist/browser/modules/word/layout/layout.js +1167 -0
  133. package/dist/browser/modules/word/layout/render-page.d.ts +57 -0
  134. package/dist/browser/modules/word/layout/render-page.js +1238 -0
  135. package/dist/browser/modules/word/markdown.d.ts +14 -0
  136. package/dist/browser/modules/word/markdown.js +13 -0
  137. package/dist/browser/modules/word/patcher.d.ts +62 -0
  138. package/dist/browser/modules/word/patcher.js +537 -0
  139. package/dist/browser/modules/word/query/compat.d.ts +25 -0
  140. package/dist/browser/modules/word/query/compat.js +58 -0
  141. package/dist/browser/modules/word/query/data-binding.d.ts +22 -0
  142. package/dist/browser/modules/word/query/data-binding.js +392 -0
  143. package/dist/browser/modules/word/query/form-fields.d.ts +41 -0
  144. package/dist/browser/modules/word/query/form-fields.js +268 -0
  145. package/dist/browser/modules/word/query/format-search.d.ts +99 -0
  146. package/dist/browser/modules/word/query/format-search.js +329 -0
  147. package/dist/browser/modules/word/query/mail-merge.d.ts +25 -0
  148. package/dist/browser/modules/word/query/mail-merge.js +111 -0
  149. package/dist/browser/modules/word/query/merge.d.ts +50 -0
  150. package/dist/browser/modules/word/query/merge.js +617 -0
  151. package/dist/browser/modules/word/query/replace.d.ts +47 -0
  152. package/dist/browser/modules/word/query/replace.js +301 -0
  153. package/dist/browser/modules/word/query/revisions.d.ts +67 -0
  154. package/dist/browser/modules/word/query/revisions.js +879 -0
  155. package/dist/browser/modules/word/query/search.d.ts +129 -0
  156. package/dist/browser/modules/word/query/search.js +346 -0
  157. package/dist/browser/modules/word/query/split.d.ts +44 -0
  158. package/dist/browser/modules/word/query/split.js +135 -0
  159. package/dist/browser/modules/word/query/style-resolve.d.ts +104 -0
  160. package/dist/browser/modules/word/query/style-resolve.js +368 -0
  161. package/dist/browser/modules/word/reader/chart-parser.d.ts +20 -0
  162. package/dist/browser/modules/word/reader/chart-parser.js +810 -0
  163. package/dist/browser/modules/word/reader/comments-parser.d.ts +26 -0
  164. package/dist/browser/modules/word/reader/comments-parser.js +92 -0
  165. package/dist/browser/modules/word/reader/doc-props-parsers.d.ts +15 -0
  166. package/dist/browser/modules/word/reader/doc-props-parsers.js +190 -0
  167. package/dist/browser/modules/word/reader/docx-reader.d.ts +27 -0
  168. package/dist/browser/modules/word/reader/docx-reader.js +2557 -0
  169. package/dist/browser/modules/word/reader/drawing-helpers.d.ts +27 -0
  170. package/dist/browser/modules/word/reader/drawing-helpers.js +84 -0
  171. package/dist/browser/modules/word/reader/form-field-parser.d.ts +21 -0
  172. package/dist/browser/modules/word/reader/form-field-parser.js +82 -0
  173. package/dist/browser/modules/word/reader/image-parsers.d.ts +11 -0
  174. package/dist/browser/modules/word/reader/image-parsers.js +291 -0
  175. package/dist/browser/modules/word/reader/math-parser.d.ts +12 -0
  176. package/dist/browser/modules/word/reader/math-parser.js +422 -0
  177. package/dist/browser/modules/word/reader/metadata-parsers.d.ts +17 -0
  178. package/dist/browser/modules/word/reader/metadata-parsers.js +87 -0
  179. package/dist/browser/modules/word/reader/numbering-parser.d.ts +13 -0
  180. package/dist/browser/modules/word/reader/numbering-parser.js +166 -0
  181. package/dist/browser/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
  182. package/dist/browser/modules/word/reader/paragraph-section-parsers.js +503 -0
  183. package/dist/browser/modules/word/reader/parse-utils.d.ts +91 -0
  184. package/dist/browser/modules/word/reader/parse-utils.js +249 -0
  185. package/dist/browser/modules/word/reader/properties-parsers.d.ts +21 -0
  186. package/dist/browser/modules/word/reader/properties-parsers.js +332 -0
  187. package/dist/browser/modules/word/reader/reader-context.d.ts +69 -0
  188. package/dist/browser/modules/word/reader/reader-context.js +61 -0
  189. package/dist/browser/modules/word/reader/sdt-helpers.d.ts +29 -0
  190. package/dist/browser/modules/word/reader/sdt-helpers.js +111 -0
  191. package/dist/browser/modules/word/reader/settings-parser.d.ts +8 -0
  192. package/dist/browser/modules/word/reader/settings-parser.js +263 -0
  193. package/dist/browser/modules/word/reader/styles-parser.d.ts +12 -0
  194. package/dist/browser/modules/word/reader/styles-parser.js +147 -0
  195. package/dist/browser/modules/word/reader/table-properties-parsers.d.ts +12 -0
  196. package/dist/browser/modules/word/reader/table-properties-parsers.js +234 -0
  197. package/dist/browser/modules/word/reader/theme-parser.d.ts +8 -0
  198. package/dist/browser/modules/word/reader/theme-parser.js +167 -0
  199. package/dist/browser/modules/word/reader/watermark-parser.d.ts +15 -0
  200. package/dist/browser/modules/word/reader/watermark-parser.js +110 -0
  201. package/dist/browser/modules/word/security/cfb-reader.d.ts +37 -0
  202. package/dist/browser/modules/word/security/cfb-reader.js +410 -0
  203. package/dist/browser/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
  204. package/dist/browser/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  205. package/dist/browser/modules/word/security/document-protection.d.ts +93 -0
  206. package/dist/browser/modules/word/security/document-protection.js +201 -0
  207. package/dist/{types/modules/word → browser/modules/word/security}/encryption.d.ts +51 -4
  208. package/dist/browser/modules/word/security/encryption.js +602 -0
  209. package/dist/browser/modules/word/security/policy.d.ts +80 -0
  210. package/dist/browser/modules/word/security/policy.js +102 -0
  211. package/dist/browser/modules/word/template/template-chart.d.ts +56 -0
  212. package/dist/browser/modules/word/template/template-chart.js +167 -0
  213. package/dist/browser/modules/word/template/template-datasource.d.ts +154 -0
  214. package/dist/browser/modules/word/template/template-datasource.js +541 -0
  215. package/dist/browser/modules/word/template/template-engine.d.ts +121 -0
  216. package/dist/browser/modules/word/template/template-engine.js +1435 -0
  217. package/dist/browser/modules/word/types.d.ts +224 -25
  218. package/dist/browser/modules/word/units.d.ts +26 -0
  219. package/dist/browser/modules/word/units.js +43 -14
  220. package/dist/browser/modules/word/{writers → writer}/chart-writer.js +164 -23
  221. package/dist/browser/modules/word/writer/checkbox-writer.d.ts +17 -0
  222. package/dist/browser/modules/word/writer/checkbox-writer.js +79 -0
  223. package/dist/{types/modules/word/writers → browser/modules/word/writer}/comment-writer.d.ts +2 -1
  224. package/dist/browser/modules/word/{writers → writer}/comment-writer.js +8 -6
  225. package/dist/browser/modules/word/writer/common-parts.d.ts +57 -0
  226. package/dist/browser/modules/word/writer/common-parts.js +101 -0
  227. package/dist/{types/modules/word → browser/modules/word/writer}/content-types.d.ts +2 -2
  228. package/dist/{esm/modules/word → browser/modules/word/writer}/content-types.js +14 -6
  229. package/dist/browser/modules/word/writer/document-writer.d.ts +24 -0
  230. package/dist/browser/modules/word/writer/document-writer.js +473 -0
  231. package/dist/browser/modules/word/writer/docx-packager.d.ts +35 -0
  232. package/dist/browser/modules/word/writer/docx-packager.js +1515 -0
  233. package/dist/{types/modules/word/writers → browser/modules/word/writer}/footnote-writer.d.ts +3 -2
  234. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/footnote-writer.js +13 -10
  235. package/dist/{types/modules/word/writers → browser/modules/word/writer}/header-footer-writer.d.ts +3 -2
  236. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/header-footer-writer.js +39 -21
  237. package/dist/{types/modules/word/writers → browser/modules/word/writer}/image-writer.d.ts +1 -1
  238. package/dist/browser/modules/word/{writers → writer}/image-writer.js +11 -7
  239. package/dist/browser/modules/word/writer/math-writer.d.ts +20 -0
  240. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/math-writer.js +21 -1
  241. package/dist/browser/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
  242. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/numbering-writer.js +11 -4
  243. package/dist/browser/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
  244. package/dist/browser/modules/word/{writers → writer}/paragraph-writer.js +73 -38
  245. package/dist/browser/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
  246. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/parts-writer.js +91 -12
  247. package/dist/browser/modules/word/writer/reference-scanners.d.ts +42 -0
  248. package/dist/browser/modules/word/writer/reference-scanners.js +111 -0
  249. package/dist/browser/modules/word/writer/relationships.d.ts +52 -0
  250. package/dist/browser/modules/word/writer/relationships.js +117 -0
  251. package/dist/browser/modules/word/writer/render-context.d.ts +124 -0
  252. package/dist/browser/modules/word/writer/render-context.js +46 -0
  253. package/dist/browser/modules/word/{writers → writer}/run-writer.d.ts +10 -1
  254. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/run-writer.js +126 -24
  255. package/dist/browser/modules/word/writer/sdt-writer.d.ts +25 -0
  256. package/dist/browser/modules/word/writer/sdt-writer.js +189 -0
  257. package/dist/browser/modules/word/writer/stream-buf.d.ts +37 -0
  258. package/dist/browser/modules/word/writer/stream-buf.js +73 -0
  259. package/dist/browser/modules/word/writer/streaming-writer.d.ts +344 -0
  260. package/dist/browser/modules/word/writer/streaming-writer.js +1382 -0
  261. package/dist/browser/modules/word/writer/string-buf.d.ts +8 -0
  262. package/dist/browser/modules/word/writer/string-buf.js +7 -0
  263. package/dist/browser/modules/word/{writers → writer}/styles-writer.js +32 -1
  264. package/dist/browser/modules/word/{writers → writer}/table-writer.d.ts +2 -1
  265. package/dist/browser/modules/word/{writers → writer}/table-writer.js +94 -11
  266. package/dist/browser/modules/xml/types.d.ts +22 -0
  267. package/dist/browser/utils/crypto.browser.d.ts +3 -1
  268. package/dist/browser/utils/crypto.browser.js +3 -1
  269. package/dist/browser/utils/crypto.d.ts +4 -1
  270. package/dist/browser/utils/crypto.js +4 -1
  271. package/dist/browser/utils/font-metrics.d.ts +63 -0
  272. package/dist/browser/utils/font-metrics.js +293 -0
  273. package/dist/browser/utils/string-buf.d.ts +42 -0
  274. package/dist/browser/utils/string-buf.js +89 -0
  275. package/dist/browser/utils/theme-colors.d.ts +55 -0
  276. package/dist/browser/utils/theme-colors.js +120 -0
  277. package/dist/cjs/modules/archive/compression/streaming-compress.browser.js +29 -0
  278. package/dist/cjs/modules/archive/compression/streaming-compress.js +9 -0
  279. package/dist/cjs/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  280. package/dist/cjs/modules/archive/fs/archive-file.js +78 -16
  281. package/dist/cjs/modules/archive/unzip/stream.browser.js +43 -2
  282. package/dist/cjs/modules/excel/chart/chart-ex-builder.js +7 -2
  283. package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +4 -9
  284. package/dist/cjs/modules/excel/chart/chart.js +1 -7
  285. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +25 -1
  286. package/dist/cjs/modules/excel/stream/workbook-reader.js +9 -0
  287. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +228 -13
  288. package/dist/cjs/modules/excel/utils/string-buf.js +5 -81
  289. package/dist/cjs/modules/excel/workbook.browser.js +135 -25
  290. package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  291. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +32 -8
  292. package/dist/cjs/modules/excel/xlsx/xlsx.js +9 -1
  293. package/dist/cjs/modules/pdf/excel-bridge.js +33 -0
  294. package/dist/cjs/modules/pdf/font/metrics.js +11 -244
  295. package/dist/cjs/modules/pdf/index.js +2 -1
  296. package/dist/cjs/modules/pdf/render-layout-to-pdf.js +651 -0
  297. package/dist/cjs/modules/pdf/word-bridge.js +155 -274
  298. package/dist/cjs/modules/stream/index.base.js +4 -2
  299. package/dist/cjs/modules/stream/internal/sink-adapter.js +202 -0
  300. package/dist/cjs/modules/stream/pull-stream.js +51 -5
  301. package/dist/cjs/modules/word/advanced/diff.js +170 -0
  302. package/dist/cjs/modules/word/advanced/drawing-shapes.js +279 -0
  303. package/dist/cjs/modules/word/advanced/field-engine.js +1229 -0
  304. package/dist/cjs/modules/word/advanced/glossary.js +87 -0
  305. package/dist/cjs/modules/word/advanced/math-convert.js +599 -0
  306. package/dist/cjs/modules/word/advanced/ole-objects.js +277 -0
  307. package/dist/cjs/modules/word/advanced/style-map.js +329 -0
  308. package/dist/cjs/modules/word/advanced/validation.js +1068 -0
  309. package/dist/cjs/modules/word/advanced/vba-project.js +274 -0
  310. package/dist/cjs/modules/word/bridge/excel-bridge.js +1020 -0
  311. package/dist/cjs/modules/word/builder/document-handle.js +667 -0
  312. package/dist/cjs/modules/word/builder/paragraph-builders.js +109 -0
  313. package/dist/cjs/modules/word/builder/run-builders.js +676 -0
  314. package/dist/cjs/modules/word/builder/table-builders.js +53 -0
  315. package/dist/cjs/modules/word/constants.js +111 -2
  316. package/dist/cjs/modules/word/convert/conversion-ir.js +34 -0
  317. package/dist/cjs/modules/word/convert/docx-to-semantic.js +502 -0
  318. package/dist/cjs/modules/word/convert/flat-opc.js +390 -0
  319. package/dist/cjs/modules/word/convert/html/html-import.js +1910 -0
  320. package/dist/cjs/modules/word/{html-renderer.js → convert/html/html-renderer.js} +420 -69
  321. package/dist/cjs/modules/word/convert/html/html.js +20 -0
  322. package/dist/cjs/modules/word/convert/markdown/markdown-import.js +1329 -0
  323. package/dist/cjs/modules/word/convert/markdown/markdown-renderer.js +637 -0
  324. package/dist/cjs/modules/word/convert/markdown/markdown.js +21 -0
  325. package/dist/cjs/modules/word/convert/odt/odt.js +1936 -0
  326. package/dist/cjs/modules/word/core/color-utils.js +47 -0
  327. package/dist/cjs/modules/word/core/internal-utils.js +219 -0
  328. package/dist/cjs/modules/word/core/mapper.js +430 -0
  329. package/dist/cjs/modules/word/core/opc-paths.js +53 -0
  330. package/dist/cjs/modules/word/core/text-utils.js +210 -0
  331. package/dist/cjs/modules/word/core/walker.js +577 -0
  332. package/dist/cjs/modules/word/crypto.js +19 -8
  333. package/dist/cjs/modules/word/document-io.js +117 -197
  334. package/dist/cjs/modules/word/errors.js +59 -13
  335. package/dist/cjs/modules/word/excel.js +22 -0
  336. package/dist/cjs/modules/word/font/font-embed.js +652 -0
  337. package/dist/cjs/modules/word/{font-obfuscation.js → font/font-obfuscation.js} +4 -9
  338. package/dist/cjs/modules/word/font/hyphenation.js +4216 -0
  339. package/dist/cjs/modules/word/font/text-shaping.js +640 -0
  340. package/dist/cjs/modules/word/html.js +9 -7
  341. package/dist/cjs/modules/word/incremental-edit.js +366 -0
  342. package/dist/cjs/modules/word/index.base.js +370 -137
  343. package/dist/cjs/modules/word/layout/layout-constants.js +20 -0
  344. package/dist/cjs/modules/word/layout/layout-full.js +1699 -0
  345. package/dist/cjs/modules/word/layout/layout-model.js +17 -0
  346. package/dist/cjs/modules/word/layout/layout.js +1170 -0
  347. package/dist/cjs/modules/word/layout/render-page.js +1243 -0
  348. package/dist/cjs/modules/word/markdown.js +19 -0
  349. package/dist/cjs/modules/word/patcher.js +539 -0
  350. package/dist/cjs/modules/word/query/compat.js +61 -0
  351. package/dist/cjs/modules/word/query/data-binding.js +395 -0
  352. package/dist/cjs/modules/word/query/form-fields.js +272 -0
  353. package/dist/cjs/modules/word/query/format-search.js +334 -0
  354. package/dist/cjs/modules/word/query/mail-merge.js +114 -0
  355. package/dist/cjs/modules/word/query/merge.js +620 -0
  356. package/dist/cjs/modules/word/query/replace.js +304 -0
  357. package/dist/cjs/modules/word/query/revisions.js +885 -0
  358. package/dist/cjs/modules/word/query/search.js +361 -0
  359. package/dist/cjs/modules/word/query/split.js +138 -0
  360. package/dist/cjs/modules/word/query/style-resolve.js +374 -0
  361. package/dist/cjs/modules/word/reader/chart-parser.js +814 -0
  362. package/dist/cjs/modules/word/reader/comments-parser.js +96 -0
  363. package/dist/cjs/modules/word/reader/doc-props-parsers.js +194 -0
  364. package/dist/cjs/modules/word/reader/docx-reader.js +2560 -0
  365. package/dist/cjs/modules/word/reader/drawing-helpers.js +90 -0
  366. package/dist/cjs/modules/word/reader/form-field-parser.js +85 -0
  367. package/dist/cjs/modules/word/reader/image-parsers.js +293 -0
  368. package/dist/cjs/modules/word/reader/math-parser.js +424 -0
  369. package/dist/cjs/modules/word/reader/metadata-parsers.js +93 -0
  370. package/dist/cjs/modules/word/reader/numbering-parser.js +168 -0
  371. package/dist/cjs/modules/word/reader/paragraph-section-parsers.js +505 -0
  372. package/dist/cjs/modules/word/reader/parse-utils.js +271 -0
  373. package/dist/cjs/modules/word/reader/properties-parsers.js +338 -0
  374. package/dist/cjs/modules/word/reader/reader-context.js +66 -0
  375. package/dist/cjs/modules/word/reader/sdt-helpers.js +114 -0
  376. package/dist/cjs/modules/word/reader/settings-parser.js +265 -0
  377. package/dist/cjs/modules/word/reader/styles-parser.js +149 -0
  378. package/dist/cjs/modules/word/reader/table-properties-parsers.js +237 -0
  379. package/dist/cjs/modules/word/reader/theme-parser.js +169 -0
  380. package/dist/cjs/modules/word/reader/watermark-parser.js +113 -0
  381. package/dist/cjs/modules/word/security/cfb-reader.js +414 -0
  382. package/dist/cjs/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  383. package/dist/cjs/modules/word/security/document-protection.js +208 -0
  384. package/dist/cjs/modules/word/security/encryption.js +612 -0
  385. package/dist/cjs/modules/word/security/policy.js +106 -0
  386. package/dist/cjs/modules/word/template/template-chart.js +170 -0
  387. package/dist/cjs/modules/word/template/template-datasource.js +549 -0
  388. package/dist/cjs/modules/word/template/template-engine.js +1430 -0
  389. package/dist/cjs/modules/word/units.js +44 -14
  390. package/dist/cjs/modules/word/{writers → writer}/chart-writer.js +163 -22
  391. package/dist/cjs/modules/word/writer/checkbox-writer.js +82 -0
  392. package/dist/cjs/modules/word/{writers → writer}/comment-writer.js +8 -6
  393. package/dist/cjs/modules/word/writer/common-parts.js +104 -0
  394. package/dist/cjs/modules/word/{content-types.js → writer/content-types.js} +14 -6
  395. package/dist/cjs/modules/word/writer/document-writer.js +478 -0
  396. package/dist/cjs/modules/word/writer/docx-packager.js +1551 -0
  397. package/dist/cjs/modules/word/{writers → writer}/footnote-writer.js +13 -10
  398. package/dist/cjs/modules/word/{writers → writer}/header-footer-writer.js +38 -20
  399. package/dist/cjs/modules/word/{writers → writer}/image-writer.js +11 -7
  400. package/dist/cjs/modules/word/{writers → writer}/math-writer.js +21 -1
  401. package/dist/cjs/modules/word/{writers → writer}/numbering-writer.js +11 -4
  402. package/dist/cjs/modules/word/{writers → writer}/paragraph-writer.js +72 -37
  403. package/dist/cjs/modules/word/{writers → writer}/parts-writer.js +91 -12
  404. package/dist/cjs/modules/word/writer/reference-scanners.js +120 -0
  405. package/dist/cjs/modules/word/writer/relationships.js +124 -0
  406. package/dist/cjs/modules/word/writer/render-context.js +51 -0
  407. package/dist/cjs/modules/word/{writers → writer}/run-writer.js +127 -24
  408. package/dist/cjs/modules/word/writer/sdt-writer.js +192 -0
  409. package/dist/cjs/modules/word/writer/stream-buf.js +76 -0
  410. package/dist/cjs/modules/word/writer/streaming-writer.js +1387 -0
  411. package/dist/cjs/modules/word/writer/string-buf.js +11 -0
  412. package/dist/cjs/modules/word/{writers → writer}/styles-writer.js +32 -1
  413. package/dist/cjs/modules/word/{writers → writer}/table-writer.js +94 -11
  414. package/dist/cjs/utils/crypto.browser.js +3 -1
  415. package/dist/cjs/utils/crypto.js +4 -1
  416. package/dist/cjs/utils/font-metrics.js +303 -0
  417. package/dist/cjs/utils/string-buf.js +92 -0
  418. package/dist/cjs/utils/theme-colors.js +126 -0
  419. package/dist/esm/modules/archive/compression/streaming-compress.browser.js +29 -0
  420. package/dist/esm/modules/archive/compression/streaming-compress.js +9 -0
  421. package/dist/esm/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  422. package/dist/esm/modules/archive/fs/archive-file.js +78 -16
  423. package/dist/esm/modules/archive/unzip/stream.browser.js +43 -2
  424. package/dist/esm/modules/excel/chart/chart-ex-builder.js +7 -2
  425. package/dist/esm/modules/excel/chart/chart-ex-renderer.js +4 -9
  426. package/dist/esm/modules/excel/chart/chart.js +1 -7
  427. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +25 -1
  428. package/dist/esm/modules/excel/stream/workbook-reader.js +9 -0
  429. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +228 -13
  430. package/dist/esm/modules/excel/utils/string-buf.js +4 -81
  431. package/dist/esm/modules/excel/workbook.browser.js +135 -25
  432. package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  433. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +32 -8
  434. package/dist/esm/modules/excel/xlsx/xlsx.js +9 -1
  435. package/dist/esm/modules/pdf/excel-bridge.js +32 -0
  436. package/dist/esm/modules/pdf/font/metrics.js +3 -237
  437. package/dist/esm/modules/pdf/index.js +1 -1
  438. package/dist/esm/modules/pdf/render-layout-to-pdf.js +647 -0
  439. package/dist/esm/modules/pdf/word-bridge.js +122 -274
  440. package/dist/esm/modules/stream/index.base.js +2 -1
  441. package/dist/esm/modules/stream/internal/sink-adapter.js +198 -0
  442. package/dist/esm/modules/stream/pull-stream.js +51 -5
  443. package/dist/esm/modules/word/advanced/diff.js +167 -0
  444. package/dist/esm/modules/word/advanced/drawing-shapes.js +268 -0
  445. package/dist/esm/modules/word/advanced/field-engine.js +1225 -0
  446. package/dist/esm/modules/word/advanced/glossary.js +79 -0
  447. package/dist/esm/modules/word/advanced/math-convert.js +595 -0
  448. package/dist/esm/modules/word/advanced/ole-objects.js +271 -0
  449. package/dist/esm/modules/word/advanced/style-map.js +322 -0
  450. package/dist/esm/modules/word/advanced/validation.js +1065 -0
  451. package/dist/esm/modules/word/advanced/vba-project.js +265 -0
  452. package/dist/esm/modules/word/bridge/excel-bridge.js +980 -0
  453. package/dist/esm/modules/word/builder/document-handle.js +664 -0
  454. package/dist/esm/modules/word/builder/paragraph-builders.js +90 -0
  455. package/dist/esm/modules/word/builder/run-builders.js +600 -0
  456. package/dist/esm/modules/word/builder/table-builders.js +45 -0
  457. package/dist/esm/modules/word/constants.js +109 -1
  458. package/dist/esm/modules/word/convert/conversion-ir.js +31 -0
  459. package/dist/esm/modules/word/convert/docx-to-semantic.js +499 -0
  460. package/dist/esm/modules/word/convert/flat-opc.js +385 -0
  461. package/dist/esm/modules/word/convert/html/html-import.js +1907 -0
  462. package/dist/{browser/modules/word → esm/modules/word/convert/html}/html-renderer.js +420 -69
  463. package/dist/esm/modules/word/convert/html/html.js +15 -0
  464. package/dist/esm/modules/word/convert/markdown/markdown-import.js +1325 -0
  465. package/dist/esm/modules/word/convert/markdown/markdown-renderer.js +634 -0
  466. package/dist/esm/modules/word/convert/markdown/markdown.js +15 -0
  467. package/dist/esm/modules/word/convert/odt/odt.js +1932 -0
  468. package/dist/esm/modules/word/core/color-utils.js +43 -0
  469. package/dist/esm/modules/word/core/internal-utils.js +209 -0
  470. package/dist/esm/modules/word/core/mapper.js +427 -0
  471. package/dist/esm/modules/word/core/opc-paths.js +48 -0
  472. package/dist/esm/modules/word/core/text-utils.js +202 -0
  473. package/dist/esm/modules/word/core/walker.js +570 -0
  474. package/dist/esm/modules/word/crypto.js +13 -7
  475. package/dist/esm/modules/word/document-io.js +80 -197
  476. package/dist/esm/modules/word/errors.js +54 -2
  477. package/dist/esm/modules/word/excel.js +13 -0
  478. package/dist/esm/modules/word/font/font-embed.js +646 -0
  479. package/dist/{browser/modules/word → esm/modules/word/font}/font-obfuscation.js +4 -9
  480. package/dist/esm/modules/word/font/hyphenation.js +4210 -0
  481. package/dist/esm/modules/word/font/text-shaping.js +635 -0
  482. package/dist/esm/modules/word/html.js +6 -5
  483. package/dist/esm/modules/word/incremental-edit.js +361 -0
  484. package/dist/esm/modules/word/index.base.js +138 -29
  485. package/dist/esm/modules/word/layout/layout-constants.js +17 -0
  486. package/dist/esm/modules/word/layout/layout-full.js +1696 -0
  487. package/dist/esm/modules/word/layout/layout-model.js +16 -0
  488. package/dist/esm/modules/word/layout/layout.js +1167 -0
  489. package/dist/esm/modules/word/layout/render-page.js +1238 -0
  490. package/dist/esm/modules/word/markdown.js +13 -0
  491. package/dist/esm/modules/word/patcher.js +537 -0
  492. package/dist/esm/modules/word/query/compat.js +58 -0
  493. package/dist/esm/modules/word/query/data-binding.js +392 -0
  494. package/dist/esm/modules/word/query/form-fields.js +268 -0
  495. package/dist/esm/modules/word/query/format-search.js +329 -0
  496. package/dist/esm/modules/word/query/mail-merge.js +111 -0
  497. package/dist/esm/modules/word/query/merge.js +617 -0
  498. package/dist/esm/modules/word/query/replace.js +301 -0
  499. package/dist/esm/modules/word/query/revisions.js +879 -0
  500. package/dist/esm/modules/word/query/search.js +346 -0
  501. package/dist/esm/modules/word/query/split.js +135 -0
  502. package/dist/esm/modules/word/query/style-resolve.js +368 -0
  503. package/dist/esm/modules/word/reader/chart-parser.js +810 -0
  504. package/dist/esm/modules/word/reader/comments-parser.js +92 -0
  505. package/dist/esm/modules/word/reader/doc-props-parsers.js +190 -0
  506. package/dist/esm/modules/word/reader/docx-reader.js +2557 -0
  507. package/dist/esm/modules/word/reader/drawing-helpers.js +84 -0
  508. package/dist/esm/modules/word/reader/form-field-parser.js +82 -0
  509. package/dist/esm/modules/word/reader/image-parsers.js +291 -0
  510. package/dist/esm/modules/word/reader/math-parser.js +422 -0
  511. package/dist/esm/modules/word/reader/metadata-parsers.js +87 -0
  512. package/dist/esm/modules/word/reader/numbering-parser.js +166 -0
  513. package/dist/esm/modules/word/reader/paragraph-section-parsers.js +503 -0
  514. package/dist/esm/modules/word/reader/parse-utils.js +249 -0
  515. package/dist/esm/modules/word/reader/properties-parsers.js +332 -0
  516. package/dist/esm/modules/word/reader/reader-context.js +61 -0
  517. package/dist/esm/modules/word/reader/sdt-helpers.js +111 -0
  518. package/dist/esm/modules/word/reader/settings-parser.js +263 -0
  519. package/dist/esm/modules/word/reader/styles-parser.js +147 -0
  520. package/dist/esm/modules/word/reader/table-properties-parsers.js +234 -0
  521. package/dist/esm/modules/word/reader/theme-parser.js +167 -0
  522. package/dist/esm/modules/word/reader/watermark-parser.js +110 -0
  523. package/dist/esm/modules/word/security/cfb-reader.js +410 -0
  524. package/dist/esm/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  525. package/dist/esm/modules/word/security/document-protection.js +201 -0
  526. package/dist/esm/modules/word/security/encryption.js +602 -0
  527. package/dist/esm/modules/word/security/policy.js +102 -0
  528. package/dist/esm/modules/word/template/template-chart.js +167 -0
  529. package/dist/esm/modules/word/template/template-datasource.js +541 -0
  530. package/dist/esm/modules/word/template/template-engine.js +1435 -0
  531. package/dist/esm/modules/word/units.js +43 -14
  532. package/dist/esm/modules/word/{writers → writer}/chart-writer.js +164 -23
  533. package/dist/esm/modules/word/writer/checkbox-writer.js +79 -0
  534. package/dist/esm/modules/word/{writers → writer}/comment-writer.js +8 -6
  535. package/dist/esm/modules/word/writer/common-parts.js +101 -0
  536. package/dist/{browser/modules/word → esm/modules/word/writer}/content-types.js +14 -6
  537. package/dist/esm/modules/word/writer/document-writer.js +473 -0
  538. package/dist/esm/modules/word/writer/docx-packager.js +1515 -0
  539. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/footnote-writer.js +13 -10
  540. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/header-footer-writer.js +39 -21
  541. package/dist/esm/modules/word/{writers → writer}/image-writer.js +11 -7
  542. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/math-writer.js +21 -1
  543. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/numbering-writer.js +11 -4
  544. package/dist/esm/modules/word/{writers → writer}/paragraph-writer.js +73 -38
  545. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/parts-writer.js +91 -12
  546. package/dist/esm/modules/word/writer/reference-scanners.js +111 -0
  547. package/dist/esm/modules/word/writer/relationships.js +117 -0
  548. package/dist/esm/modules/word/writer/render-context.js +46 -0
  549. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/run-writer.js +126 -24
  550. package/dist/esm/modules/word/writer/sdt-writer.js +189 -0
  551. package/dist/esm/modules/word/writer/stream-buf.js +73 -0
  552. package/dist/esm/modules/word/writer/streaming-writer.js +1382 -0
  553. package/dist/esm/modules/word/writer/string-buf.js +7 -0
  554. package/dist/esm/modules/word/{writers → writer}/styles-writer.js +32 -1
  555. package/dist/esm/modules/word/{writers → writer}/table-writer.js +94 -11
  556. package/dist/esm/utils/crypto.browser.js +3 -1
  557. package/dist/esm/utils/crypto.js +4 -1
  558. package/dist/esm/utils/font-metrics.js +293 -0
  559. package/dist/esm/utils/string-buf.js +89 -0
  560. package/dist/esm/utils/theme-colors.js +120 -0
  561. package/dist/iife/excelts.iife.js +70692 -70337
  562. package/dist/iife/excelts.iife.js.map +1 -1
  563. package/dist/iife/excelts.iife.min.js +57 -57
  564. package/dist/types/modules/archive/fs/archive-file.d.ts +8 -5
  565. package/dist/types/modules/excel/chart/chart-ex-types.d.ts +0 -12
  566. package/dist/types/modules/excel/chart/chart.d.ts +1 -5
  567. package/dist/types/modules/excel/chart/types.d.ts +0 -6
  568. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
  569. package/dist/types/modules/excel/utils/string-buf.d.ts +5 -26
  570. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
  571. package/dist/types/modules/excel/xlsx/xlsx.d.ts +10 -2
  572. package/dist/types/modules/pdf/excel-bridge.d.ts +30 -1
  573. package/dist/types/modules/pdf/font/metrics.d.ts +3 -52
  574. package/dist/types/modules/pdf/index.d.ts +1 -1
  575. package/dist/types/modules/pdf/render-layout-to-pdf.d.ts +66 -0
  576. package/dist/types/modules/pdf/word-bridge.d.ts +80 -12
  577. package/dist/types/modules/stream/index.base.d.ts +2 -0
  578. package/dist/types/modules/stream/internal/sink-adapter.d.ts +65 -0
  579. package/dist/types/modules/stream/pull-stream.d.ts +19 -2
  580. package/dist/types/modules/stream/types.d.ts +13 -1
  581. package/dist/types/modules/word/advanced/diff.d.ts +61 -0
  582. package/dist/types/modules/word/advanced/drawing-shapes.d.ts +269 -0
  583. package/dist/types/modules/word/advanced/field-engine.d.ts +43 -0
  584. package/dist/types/modules/word/advanced/glossary.d.ts +86 -0
  585. package/dist/types/modules/word/advanced/math-convert.d.ts +30 -0
  586. package/dist/types/modules/word/advanced/ole-objects.d.ts +115 -0
  587. package/dist/types/modules/word/advanced/style-map.d.ts +105 -0
  588. package/dist/types/modules/word/advanced/validation.d.ts +56 -0
  589. package/dist/types/modules/word/advanced/vba-project.d.ts +91 -0
  590. package/dist/types/modules/word/bridge/excel-bridge.d.ts +127 -0
  591. package/dist/types/modules/word/builder/document-handle.d.ts +151 -0
  592. package/dist/types/modules/word/builder/paragraph-builders.d.ts +61 -0
  593. package/dist/types/modules/word/builder/run-builders.d.ts +374 -0
  594. package/dist/types/modules/word/builder/table-builders.d.ts +23 -0
  595. package/dist/types/modules/word/constants.d.ts +39 -1
  596. package/dist/types/modules/word/convert/conversion-ir.d.ts +210 -0
  597. package/dist/types/modules/word/convert/docx-to-semantic.d.ts +39 -0
  598. package/dist/types/modules/word/convert/flat-opc.d.ts +44 -0
  599. package/dist/types/modules/word/convert/html/html-import.d.ts +50 -0
  600. package/dist/{browser/modules/word → types/modules/word/convert/html}/html-renderer.d.ts +14 -1
  601. package/dist/types/modules/word/convert/html/html.d.ts +15 -0
  602. package/dist/types/modules/word/convert/markdown/markdown-import.d.ts +68 -0
  603. package/dist/types/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
  604. package/dist/types/modules/word/convert/markdown/markdown.d.ts +15 -0
  605. package/dist/types/modules/word/convert/odt/odt.d.ts +41 -0
  606. package/dist/types/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
  607. package/dist/types/modules/word/core/internal-utils.d.ts +90 -0
  608. package/dist/types/modules/word/core/mapper.d.ts +44 -0
  609. package/dist/types/modules/word/core/opc-paths.d.ts +33 -0
  610. package/dist/types/modules/word/core/text-utils.d.ts +38 -0
  611. package/dist/types/modules/word/core/walker.d.ts +119 -0
  612. package/dist/types/modules/word/crypto.d.ts +14 -9
  613. package/dist/types/modules/word/document-io.d.ts +59 -27
  614. package/dist/types/modules/word/errors.d.ts +44 -1
  615. package/dist/types/modules/word/excel.d.ts +14 -0
  616. package/dist/types/modules/word/font/font-embed.d.ts +112 -0
  617. package/dist/types/modules/word/font/hyphenation.d.ts +65 -0
  618. package/dist/types/modules/word/font/text-shaping.d.ts +58 -0
  619. package/dist/types/modules/word/html.d.ts +7 -6
  620. package/dist/types/modules/word/incremental-edit.d.ts +123 -0
  621. package/dist/types/modules/word/index.base.d.ts +194 -10
  622. package/dist/types/modules/word/layout/layout-constants.d.ts +17 -0
  623. package/dist/types/modules/word/layout/layout-full.d.ts +53 -0
  624. package/dist/types/modules/word/layout/layout-model.d.ts +344 -0
  625. package/dist/types/modules/word/layout/layout.d.ts +63 -0
  626. package/dist/types/modules/word/layout/render-page.d.ts +57 -0
  627. package/dist/types/modules/word/markdown.d.ts +14 -0
  628. package/dist/types/modules/word/patcher.d.ts +62 -0
  629. package/dist/types/modules/word/query/compat.d.ts +25 -0
  630. package/dist/types/modules/word/query/data-binding.d.ts +22 -0
  631. package/dist/types/modules/word/query/form-fields.d.ts +41 -0
  632. package/dist/types/modules/word/query/format-search.d.ts +99 -0
  633. package/dist/types/modules/word/query/mail-merge.d.ts +25 -0
  634. package/dist/types/modules/word/query/merge.d.ts +50 -0
  635. package/dist/types/modules/word/query/replace.d.ts +47 -0
  636. package/dist/types/modules/word/query/revisions.d.ts +67 -0
  637. package/dist/types/modules/word/query/search.d.ts +129 -0
  638. package/dist/types/modules/word/query/split.d.ts +44 -0
  639. package/dist/types/modules/word/query/style-resolve.d.ts +104 -0
  640. package/dist/types/modules/word/reader/chart-parser.d.ts +20 -0
  641. package/dist/types/modules/word/reader/comments-parser.d.ts +26 -0
  642. package/dist/types/modules/word/reader/doc-props-parsers.d.ts +15 -0
  643. package/dist/types/modules/word/reader/docx-reader.d.ts +27 -0
  644. package/dist/types/modules/word/reader/drawing-helpers.d.ts +27 -0
  645. package/dist/types/modules/word/reader/form-field-parser.d.ts +21 -0
  646. package/dist/types/modules/word/reader/image-parsers.d.ts +11 -0
  647. package/dist/types/modules/word/reader/math-parser.d.ts +12 -0
  648. package/dist/types/modules/word/reader/metadata-parsers.d.ts +17 -0
  649. package/dist/types/modules/word/reader/numbering-parser.d.ts +13 -0
  650. package/dist/types/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
  651. package/dist/types/modules/word/reader/parse-utils.d.ts +91 -0
  652. package/dist/types/modules/word/reader/properties-parsers.d.ts +21 -0
  653. package/dist/types/modules/word/reader/reader-context.d.ts +69 -0
  654. package/dist/types/modules/word/reader/sdt-helpers.d.ts +29 -0
  655. package/dist/types/modules/word/reader/settings-parser.d.ts +8 -0
  656. package/dist/types/modules/word/reader/styles-parser.d.ts +12 -0
  657. package/dist/types/modules/word/reader/table-properties-parsers.d.ts +12 -0
  658. package/dist/types/modules/word/reader/theme-parser.d.ts +8 -0
  659. package/dist/types/modules/word/reader/watermark-parser.d.ts +15 -0
  660. package/dist/types/modules/word/security/cfb-reader.d.ts +37 -0
  661. package/dist/types/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
  662. package/dist/types/modules/word/security/document-protection.d.ts +93 -0
  663. package/dist/{browser/modules/word → types/modules/word/security}/encryption.d.ts +51 -4
  664. package/dist/types/modules/word/security/policy.d.ts +80 -0
  665. package/dist/types/modules/word/template/template-chart.d.ts +56 -0
  666. package/dist/types/modules/word/template/template-datasource.d.ts +154 -0
  667. package/dist/types/modules/word/template/template-engine.d.ts +121 -0
  668. package/dist/types/modules/word/types.d.ts +224 -25
  669. package/dist/types/modules/word/units.d.ts +26 -0
  670. package/dist/types/modules/word/writer/checkbox-writer.d.ts +17 -0
  671. package/dist/{browser/modules/word/writers → types/modules/word/writer}/comment-writer.d.ts +2 -1
  672. package/dist/types/modules/word/writer/common-parts.d.ts +57 -0
  673. package/dist/{browser/modules/word → types/modules/word/writer}/content-types.d.ts +2 -2
  674. package/dist/types/modules/word/writer/document-writer.d.ts +24 -0
  675. package/dist/types/modules/word/writer/docx-packager.d.ts +35 -0
  676. package/dist/{browser/modules/word/writers → types/modules/word/writer}/footnote-writer.d.ts +3 -2
  677. package/dist/{browser/modules/word/writers → types/modules/word/writer}/header-footer-writer.d.ts +3 -2
  678. package/dist/{browser/modules/word/writers → types/modules/word/writer}/image-writer.d.ts +1 -1
  679. package/dist/types/modules/word/writer/math-writer.d.ts +20 -0
  680. package/dist/types/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
  681. package/dist/types/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
  682. package/dist/types/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
  683. package/dist/types/modules/word/writer/reference-scanners.d.ts +42 -0
  684. package/dist/types/modules/word/writer/relationships.d.ts +52 -0
  685. package/dist/types/modules/word/writer/render-context.d.ts +124 -0
  686. package/dist/types/modules/word/{writers → writer}/run-writer.d.ts +10 -1
  687. package/dist/types/modules/word/writer/sdt-writer.d.ts +25 -0
  688. package/dist/types/modules/word/writer/stream-buf.d.ts +37 -0
  689. package/dist/types/modules/word/writer/streaming-writer.d.ts +344 -0
  690. package/dist/types/modules/word/writer/string-buf.d.ts +8 -0
  691. package/dist/types/modules/word/{writers → writer}/table-writer.d.ts +2 -1
  692. package/dist/types/modules/xml/types.d.ts +22 -0
  693. package/dist/types/utils/crypto.browser.d.ts +3 -1
  694. package/dist/types/utils/crypto.d.ts +4 -1
  695. package/dist/types/utils/font-metrics.d.ts +63 -0
  696. package/dist/types/utils/string-buf.d.ts +42 -0
  697. package/dist/types/utils/theme-colors.d.ts +55 -0
  698. package/package.json +121 -39
  699. package/dist/browser/modules/word/color-utils.js +0 -94
  700. package/dist/browser/modules/word/document.d.ts +0 -657
  701. package/dist/browser/modules/word/document.js +0 -1533
  702. package/dist/browser/modules/word/docx-packager.d.ts +0 -14
  703. package/dist/browser/modules/word/docx-packager.js +0 -822
  704. package/dist/browser/modules/word/docx-reader.d.ts +0 -11
  705. package/dist/browser/modules/word/docx-reader.js +0 -4929
  706. package/dist/browser/modules/word/encryption.js +0 -274
  707. package/dist/browser/modules/word/internal-utils.d.ts +0 -23
  708. package/dist/browser/modules/word/internal-utils.js +0 -54
  709. package/dist/browser/modules/word/namespaces.d.ts +0 -159
  710. package/dist/browser/modules/word/namespaces.js +0 -189
  711. package/dist/browser/modules/word/relationships.d.ts +0 -30
  712. package/dist/browser/modules/word/relationships.js +0 -48
  713. package/dist/browser/modules/word/writers/checkbox-writer.d.ts +0 -9
  714. package/dist/browser/modules/word/writers/checkbox-writer.js +0 -42
  715. package/dist/browser/modules/word/writers/document-writer.d.ts +0 -16
  716. package/dist/browser/modules/word/writers/document-writer.js +0 -461
  717. package/dist/browser/modules/word/writers/math-writer.d.ts +0 -9
  718. package/dist/cjs/modules/word/color-utils.js +0 -97
  719. package/dist/cjs/modules/word/document.js +0 -1645
  720. package/dist/cjs/modules/word/docx-packager.js +0 -825
  721. package/dist/cjs/modules/word/docx-reader.js +0 -4932
  722. package/dist/cjs/modules/word/encryption.js +0 -282
  723. package/dist/cjs/modules/word/internal-utils.js +0 -59
  724. package/dist/cjs/modules/word/namespaces.js +0 -192
  725. package/dist/cjs/modules/word/relationships.js +0 -55
  726. package/dist/cjs/modules/word/writers/checkbox-writer.js +0 -45
  727. package/dist/cjs/modules/word/writers/document-writer.js +0 -465
  728. package/dist/esm/modules/word/color-utils.js +0 -94
  729. package/dist/esm/modules/word/document.js +0 -1533
  730. package/dist/esm/modules/word/docx-packager.js +0 -822
  731. package/dist/esm/modules/word/docx-reader.js +0 -4929
  732. package/dist/esm/modules/word/encryption.js +0 -274
  733. package/dist/esm/modules/word/internal-utils.js +0 -54
  734. package/dist/esm/modules/word/namespaces.js +0 -189
  735. package/dist/esm/modules/word/relationships.js +0 -48
  736. package/dist/esm/modules/word/writers/checkbox-writer.js +0 -42
  737. package/dist/esm/modules/word/writers/document-writer.js +0 -461
  738. package/dist/types/modules/word/document.d.ts +0 -657
  739. package/dist/types/modules/word/docx-packager.d.ts +0 -14
  740. package/dist/types/modules/word/docx-reader.d.ts +0 -11
  741. package/dist/types/modules/word/internal-utils.d.ts +0 -23
  742. package/dist/types/modules/word/namespaces.d.ts +0 -159
  743. package/dist/types/modules/word/relationships.d.ts +0 -30
  744. package/dist/types/modules/word/writers/checkbox-writer.d.ts +0 -9
  745. package/dist/types/modules/word/writers/document-writer.d.ts +0 -16
  746. package/dist/types/modules/word/writers/math-writer.d.ts +0 -9
  747. /package/dist/browser/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
  748. /package/dist/browser/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
  749. /package/dist/browser/modules/word/{writers → writer}/section-writer.d.ts +0 -0
  750. /package/dist/browser/modules/word/{writers → writer}/section-writer.js +0 -0
  751. /package/dist/browser/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
  752. /package/dist/browser/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
  753. /package/dist/browser/modules/word/{writers → writer}/textbox-writer.js +0 -0
  754. /package/dist/browser/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
  755. /package/dist/browser/modules/word/{writers → writer}/toc-writer.js +0 -0
  756. /package/dist/cjs/modules/word/{writers → writer}/section-writer.js +0 -0
  757. /package/dist/cjs/modules/word/{writers → writer}/textbox-writer.js +0 -0
  758. /package/dist/cjs/modules/word/{writers → writer}/toc-writer.js +0 -0
  759. /package/dist/esm/modules/word/{writers → writer}/section-writer.js +0 -0
  760. /package/dist/esm/modules/word/{writers → writer}/textbox-writer.js +0 -0
  761. /package/dist/esm/modules/word/{writers → writer}/toc-writer.js +0 -0
  762. /package/dist/types/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
  763. /package/dist/types/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
  764. /package/dist/types/modules/word/{writers → writer}/section-writer.d.ts +0 -0
  765. /package/dist/types/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
  766. /package/dist/types/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
  767. /package/dist/types/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
@@ -5,7 +5,8 @@
5
5
  */
6
6
  import type { XmlSink } from "../../xml/types.js";
7
7
  import type { FootnoteDef, EndnoteDef } from "../types.js";
8
+ import type { RenderHelpers } from "./render-context.js";
8
9
  /** Render word/footnotes.xml. */
9
- export declare function renderFootnotes(xml: XmlSink, footnotes: readonly FootnoteDef[]): void;
10
+ export declare function renderFootnotes(xml: XmlSink, footnotes: readonly FootnoteDef[], helpers?: RenderHelpers): void;
10
11
  /** Render word/endnotes.xml. */
11
- export declare function renderEndnotes(xml: XmlSink, endnotes: readonly EndnoteDef[]): void;
12
+ export declare function renderEndnotes(xml: XmlSink, endnotes: readonly EndnoteDef[], helpers?: RenderHelpers): void;
@@ -25,48 +25,51 @@ function renderDefaultSeparators(xml, elementName) {
25
25
  xml.closeNode();
26
26
  }
27
27
  /** Render a single footnote/endnote entry. */
28
- function renderNote(xml, elementName, note) {
28
+ function renderNote(xml, elementName, note, helpers) {
29
29
  const attrs = { "w:id": String(note.id) };
30
30
  if (note.type && note.type !== "normal") {
31
31
  attrs["w:type"] = note.type;
32
32
  }
33
33
  xml.openNode(elementName, attrs);
34
34
  for (const para of note.content) {
35
- renderParagraph(xml, para);
35
+ renderParagraph(xml, para, helpers);
36
36
  }
37
37
  xml.closeNode();
38
38
  }
39
39
  /** Render word/footnotes.xml. */
40
- export function renderFootnotes(xml, footnotes) {
40
+ export function renderFootnotes(xml, footnotes, helpers) {
41
41
  xml.openXml(STD_DOC_ATTRIBUTES);
42
42
  xml.openNode("w:footnotes", {
43
43
  "xmlns:w": NS_W,
44
44
  "xmlns:r": NS_R
45
45
  });
46
- // If the caller already provided separator entries (by having any id <= 0), use those.
47
- // Otherwise, synthesize the default separators.
48
- const hasSeparators = footnotes.some(fn => fn.id <= 0);
46
+ // If the caller already provided separator entries (identified by their
47
+ // `type` rather than a magic id range), use those. Otherwise synthesize
48
+ // the default separators. Earlier we keyed off `id <= 0`, but a caller is
49
+ // free to use id=0 for a normal note — that would silently skip the
50
+ // mandatory separators and produce an invalid document.
51
+ const hasSeparators = footnotes.some(fn => fn.type === "separator" || fn.type === "continuationSeparator");
49
52
  if (!hasSeparators) {
50
53
  renderDefaultSeparators(xml, "w:footnote");
51
54
  }
52
55
  for (const fn of footnotes) {
53
- renderNote(xml, "w:footnote", fn);
56
+ renderNote(xml, "w:footnote", fn, helpers);
54
57
  }
55
58
  xml.closeNode();
56
59
  }
57
60
  /** Render word/endnotes.xml. */
58
- export function renderEndnotes(xml, endnotes) {
61
+ export function renderEndnotes(xml, endnotes, helpers) {
59
62
  xml.openXml(STD_DOC_ATTRIBUTES);
60
63
  xml.openNode("w:endnotes", {
61
64
  "xmlns:w": NS_W,
62
65
  "xmlns:r": NS_R
63
66
  });
64
- const hasSeparators = endnotes.some(en => en.id <= 0);
67
+ const hasSeparators = endnotes.some(en => en.type === "separator" || en.type === "continuationSeparator");
65
68
  if (!hasSeparators) {
66
69
  renderDefaultSeparators(xml, "w:endnote");
67
70
  }
68
71
  for (const en of endnotes) {
69
- renderNote(xml, "w:endnote", en);
72
+ renderNote(xml, "w:endnote", en, helpers);
70
73
  }
71
74
  xml.closeNode();
72
75
  }
@@ -5,9 +5,10 @@
5
5
  */
6
6
  import type { XmlSink } from "../../xml/types.js";
7
7
  import type { HeaderFooterContent, Watermark } from "../types.js";
8
+ import type { RenderHelpers } from "./render-context.js";
8
9
  /** Render a header part (word/header{N}.xml). */
9
- export declare function renderHeader(xml: XmlSink, content: HeaderFooterContent): void;
10
+ export declare function renderHeader(xml: XmlSink, content: HeaderFooterContent, helpers?: RenderHelpers): void;
10
11
  /** Render a footer part (word/footer{N}.xml). */
11
- export declare function renderFooter(xml: XmlSink, content: HeaderFooterContent): void;
12
+ export declare function renderFooter(xml: XmlSink, content: HeaderFooterContent, helpers?: RenderHelpers): void;
12
13
  /** Render a header part containing a watermark. */
13
14
  export declare function renderWatermarkHeader(xml: XmlSink, watermark: Watermark, imageRId?: string): void;
@@ -3,38 +3,57 @@
3
3
  *
4
4
  * Renders word/header{N}.xml and word/footer{N}.xml parts.
5
5
  */
6
- import { NS_W, NS_R, NS_V, NS_O, NS_W10, STD_DOC_ATTRIBUTES } from "../constants.js";
6
+ import { NS_W, NS_R, NS_V, NS_O, NS_W10, NS_WP, NS_M, NS_W14, NS_W15, NS_WP14, NS_MC, STD_DOC_ATTRIBUTES } from "../constants.js";
7
7
  import { renderParagraph } from "./paragraph-writer.js";
8
8
  import { renderTable } from "./table-writer.js";
9
9
  /** Render content blocks (shared between header and footer). */
10
- function renderContent(xml, content) {
10
+ function renderContent(xml, content, helpers) {
11
+ let emitted = 0;
11
12
  for (const child of content.children) {
12
13
  if (child.type === "paragraph") {
13
- renderParagraph(xml, child);
14
+ renderParagraph(xml, child, helpers);
15
+ emitted++;
14
16
  }
15
17
  else if (child.type === "table") {
16
- renderTable(xml, child);
18
+ renderTable(xml, child, helpers);
19
+ emitted++;
17
20
  }
18
21
  }
22
+ // OOXML requires every header/footer part to contain at least one
23
+ // <w:p>. When the caller passes an empty children array we still emit
24
+ // a placeholder so Word does not refuse to load the package.
25
+ if (emitted === 0) {
26
+ xml.openNode("w:p");
27
+ xml.closeNode();
28
+ }
19
29
  }
30
+ /** Standard namespace attributes for header/footer parts — must include DrawingML namespaces. */
31
+ const HEADER_FOOTER_NAMESPACES = {
32
+ "xmlns:w": NS_W,
33
+ "xmlns:r": NS_R,
34
+ "xmlns:wp": NS_WP,
35
+ "xmlns:m": NS_M,
36
+ "xmlns:v": NS_V,
37
+ "xmlns:o": NS_O,
38
+ "xmlns:w10": NS_W10,
39
+ "xmlns:w14": NS_W14,
40
+ "xmlns:w15": NS_W15,
41
+ "xmlns:wp14": NS_WP14,
42
+ "xmlns:mc": NS_MC,
43
+ "mc:Ignorable": "w14 w15 wp14"
44
+ };
20
45
  /** Render a header part (word/header{N}.xml). */
21
- export function renderHeader(xml, content) {
46
+ export function renderHeader(xml, content, helpers) {
22
47
  xml.openXml(STD_DOC_ATTRIBUTES);
23
- xml.openNode("w:hdr", {
24
- "xmlns:w": NS_W,
25
- "xmlns:r": NS_R
26
- });
27
- renderContent(xml, content);
48
+ xml.openNode("w:hdr", HEADER_FOOTER_NAMESPACES);
49
+ renderContent(xml, content, helpers);
28
50
  xml.closeNode();
29
51
  }
30
52
  /** Render a footer part (word/footer{N}.xml). */
31
- export function renderFooter(xml, content) {
53
+ export function renderFooter(xml, content, helpers) {
32
54
  xml.openXml(STD_DOC_ATTRIBUTES);
33
- xml.openNode("w:ftr", {
34
- "xmlns:w": NS_W,
35
- "xmlns:r": NS_R
36
- });
37
- renderContent(xml, content);
55
+ xml.openNode("w:ftr", HEADER_FOOTER_NAMESPACES);
56
+ renderContent(xml, content, helpers);
38
57
  xml.closeNode();
39
58
  }
40
59
  /** Render a header part containing a watermark. */
@@ -47,12 +66,11 @@ export function renderWatermarkHeader(xml, watermark, imageRId) {
47
66
  "xmlns:o": NS_O,
48
67
  "xmlns:w10": NS_W10
49
68
  });
50
- // Watermark goes in a paragraph with a single pict run
69
+ // Watermark goes in a paragraph with a single pict run. Skip pPr
70
+ // entirely — emitting an empty <w:pStyle/> without @w:val is a hard
71
+ // schema violation Word rejects, and the default style is good enough
72
+ // for an auto-generated watermark header.
51
73
  xml.openNode("w:p");
52
- xml.openNode("w:pPr");
53
- xml.openNode("w:pStyle");
54
- xml.closeNode();
55
- xml.closeNode(); // pPr
56
74
  xml.openNode("w:r");
57
75
  xml.openNode("w:pict");
58
76
  if (watermark.type === "text") {
@@ -7,4 +7,4 @@
7
7
  import type { XmlSink } from "../../xml/types.js";
8
8
  import type { FloatingImage } from "../types.js";
9
9
  /** Render a floating image as a standalone paragraph with wp:anchor. */
10
- export declare function renderFloatingImage(xml: XmlSink, img: FloatingImage): void;
10
+ export declare function renderFloatingImage(xml: XmlSink, img: FloatingImage, imageRemap?: ReadonlyMap<string, string>): void;
@@ -5,10 +5,14 @@
5
5
  * with full support for rotation, flip, lock anchor, outline, and wrap margins.
6
6
  */
7
7
  import { NS_A, NS_PIC, URI_PIC, NS_ASVG, GUID_SVG } from "../constants.js";
8
+ import { DEFAULT_RELATIVE_HEIGHT, DEFAULT_WRAP_MARGIN_EMU } from "../units.js";
8
9
  /** Render a floating image as a standalone paragraph with wp:anchor. */
9
- export function renderFloatingImage(xml, img) {
10
+ export function renderFloatingImage(xml, img, imageRemap) {
10
11
  const drawingId = img.drawingId ?? 1;
11
12
  const name = img.name ?? "Picture";
13
+ // Resolve relationship id used in r:embed via packager-provided remap.
14
+ const embedRId = imageRemap?.get(img.rId) ?? img.rId;
15
+ const svgEmbedRId = img.svgRId ? (imageRemap?.get(img.svgRId) ?? img.svgRId) : undefined;
12
16
  xml.openNode("w:p");
13
17
  xml.openNode("w:r");
14
18
  xml.openNode("w:drawing");
@@ -17,10 +21,10 @@ export function renderFloatingImage(xml, img) {
17
21
  xml.openNode("wp:anchor", {
18
22
  distT: String(img.distT ?? wrapMargins?.top ?? 0),
19
23
  distB: String(img.distB ?? wrapMargins?.bottom ?? 0),
20
- distL: String(img.distL ?? wrapMargins?.left ?? 114300),
21
- distR: String(img.distR ?? wrapMargins?.right ?? 114300),
24
+ distL: String(img.distL ?? wrapMargins?.left ?? DEFAULT_WRAP_MARGIN_EMU),
25
+ distR: String(img.distR ?? wrapMargins?.right ?? DEFAULT_WRAP_MARGIN_EMU),
22
26
  simplePos: img.simplePos ? "1" : "0",
23
- relativeHeight: String(img.relativeHeight ?? 251658240),
27
+ relativeHeight: String(img.relativeHeight ?? DEFAULT_RELATIVE_HEIGHT),
24
28
  behindDoc: img.behindDoc ? "1" : "0",
25
29
  locked: img.lockAnchor ? "1" : "0",
26
30
  layoutInCell: img.layoutInCell === false ? "0" : "1",
@@ -105,19 +109,19 @@ export function renderFloatingImage(xml, img) {
105
109
  xml.openNode("pic:blipFill");
106
110
  if (img.svgRId) {
107
111
  // SVG with raster fallback: a:blip has extLst with asvg:svgBlip
108
- xml.openNode("a:blip", { "r:embed": img.rId });
112
+ xml.openNode("a:blip", { "r:embed": embedRId });
109
113
  xml.openNode("a:extLst");
110
114
  xml.openNode("a:ext", { uri: GUID_SVG });
111
115
  xml.leafNode("asvg:svgBlip", {
112
116
  "xmlns:asvg": NS_ASVG,
113
- "r:embed": img.svgRId
117
+ "r:embed": svgEmbedRId
114
118
  });
115
119
  xml.closeNode(); // a:ext
116
120
  xml.closeNode(); // a:extLst
117
121
  xml.closeNode(); // a:blip
118
122
  }
119
123
  else {
120
- xml.leafNode("a:blip", { "r:embed": img.rId });
124
+ xml.leafNode("a:blip", { "r:embed": embedRId });
121
125
  }
122
126
  // Source rectangle (crop)
123
127
  if (img.srcRect) {
@@ -0,0 +1,20 @@
1
+ /**
2
+ * DOCX Writers - Math / Equations (OMML)
3
+ *
4
+ * Renders Office Math Markup Language elements (m:oMath).
5
+ */
6
+ import type { XmlSink } from "../../xml/types.js";
7
+ import type { MathBlock } from "../types.js";
8
+ /**
9
+ * Render a math block (`m:oMathPara` containing one `m:oMath`).
10
+ *
11
+ * The OOXML schema only allows `m:oMathPara` inside a paragraph
12
+ * (`EG_PContent` includes `m:oMathPara`); it must not appear directly as
13
+ * a `EG_BlockLevelElts`. We therefore wrap it in `<w:p>` so the result is
14
+ * valid at the body level.
15
+ *
16
+ * Empty math blocks (`content.length === 0`) skip rendering altogether —
17
+ * an empty `<m:oMath/>` violates the schema (it requires at least one
18
+ * `OMathArg` child).
19
+ */
20
+ export declare function renderMathBlock(xml: XmlSink, math: MathBlock): void;
@@ -418,11 +418,31 @@ function renderMathEquationArray(xml, eqArr) {
418
418
  }
419
419
  xml.closeNode();
420
420
  }
421
- /** Render a math block (m:oMathPara > m:oMath). Body-level math. */
421
+ /**
422
+ * Render a math block (`m:oMathPara` containing one `m:oMath`).
423
+ *
424
+ * The OOXML schema only allows `m:oMathPara` inside a paragraph
425
+ * (`EG_PContent` includes `m:oMathPara`); it must not appear directly as
426
+ * a `EG_BlockLevelElts`. We therefore wrap it in `<w:p>` so the result is
427
+ * valid at the body level.
428
+ *
429
+ * Empty math blocks (`content.length === 0`) skip rendering altogether —
430
+ * an empty `<m:oMath/>` violates the schema (it requires at least one
431
+ * `OMathArg` child).
432
+ */
422
433
  export function renderMathBlock(xml, math) {
434
+ if (math.content.length === 0) {
435
+ // Emit an empty paragraph so the surrounding body still contains a
436
+ // valid block, but skip the math markup entirely.
437
+ xml.openNode("w:p");
438
+ xml.closeNode();
439
+ return;
440
+ }
441
+ xml.openNode("w:p");
423
442
  xml.openNode("m:oMathPara", { "xmlns:m": NS_M });
424
443
  xml.openNode("m:oMath");
425
444
  renderMathContents(xml, math.content);
426
445
  xml.closeNode();
427
446
  xml.closeNode();
447
+ xml.closeNode();
428
448
  }
@@ -7,4 +7,4 @@
7
7
  import type { XmlSink } from "../../xml/types.js";
8
8
  import type { AbstractNumbering, NumberingInstance, NumPicBullet } from "../types.js";
9
9
  /** Render word/numbering.xml. */
10
- export declare function renderNumbering(xml: XmlSink, abstractNums?: readonly AbstractNumbering[], instances?: readonly NumberingInstance[], numPicBullets?: readonly NumPicBullet[]): void;
10
+ export declare function renderNumbering(xml: XmlSink, abstractNums?: readonly AbstractNumbering[], instances?: readonly NumberingInstance[], numPicBullets?: readonly NumPicBullet[], rawXmlPolicy?: "preserve" | "strip" | "reject"): void;
@@ -5,6 +5,8 @@
5
5
  * Supports suffix, legal numbering style, restart levels, and level overrides.
6
6
  */
7
7
  import { NS_W, NS_R, STD_DOC_ATTRIBUTES } from "../constants.js";
8
+ import { DocxRawXmlPolicyError } from "../errors.js";
9
+ import { EMU_PER_POINT } from "../units.js";
8
10
  import { renderParagraphProperties } from "./paragraph-writer.js";
9
11
  import { renderRunProperties } from "./run-writer.js";
10
12
  /** Render a single numbering level. */
@@ -44,7 +46,7 @@ function renderLevel(xml, level) {
44
46
  xml.closeNode();
45
47
  }
46
48
  /** Render word/numbering.xml. */
47
- export function renderNumbering(xml, abstractNums, instances, numPicBullets) {
49
+ export function renderNumbering(xml, abstractNums, instances, numPicBullets, rawXmlPolicy) {
48
50
  xml.openXml(STD_DOC_ATTRIBUTES);
49
51
  xml.openNode("w:numbering", {
50
52
  "xmlns:w": NS_W,
@@ -57,8 +59,13 @@ export function renderNumbering(xml, abstractNums, instances, numPicBullets) {
57
59
  for (const pb of numPicBullets) {
58
60
  xml.openNode("w:numPicBullet", { "w:numPicBulletId": String(pb.id) });
59
61
  if (pb.rawVmlXml) {
60
- // Use raw VML for full fidelity
61
- xml.writeRaw(pb.rawVmlXml);
62
+ if (rawXmlPolicy === "reject") {
63
+ throw new DocxRawXmlPolicyError("numPicBullet.rawVmlXml");
64
+ }
65
+ if (rawXmlPolicy !== "strip") {
66
+ // Use raw VML for full fidelity
67
+ xml.writeRaw(pb.rawVmlXml);
68
+ }
62
69
  }
63
70
  else if (pb.rId) {
64
71
  // Default VML shape with image fill
@@ -75,7 +82,7 @@ export function renderNumbering(xml, abstractNums, instances, numPicBullets) {
75
82
  xml.openNode("v:shape", {
76
83
  id: `_x0000_i10${pb.id}`,
77
84
  type: "#_x0000_t75",
78
- style: `width:${pb.width ? Math.round(pb.width / 12700) : 12}pt;height:${pb.height ? Math.round(pb.height / 12700) : 12}pt`
85
+ style: `width:${pb.width ? Math.round(pb.width / EMU_PER_POINT) : 12}pt;height:${pb.height ? Math.round(pb.height / EMU_PER_POINT) : 12}pt`
79
86
  });
80
87
  xml.leafNode("v:imagedata", { "r:id": pb.rId, "o:title": "" });
81
88
  xml.closeNode();
@@ -5,9 +5,10 @@
5
5
  */
6
6
  import type { XmlSink } from "../../xml/types.js";
7
7
  import type { ParagraphProperties, Paragraph, Border } from "../types.js";
8
+ import type { RenderHelpers } from "./render-context.js";
8
9
  /** Render a single border element. */
9
10
  export declare function renderBorder(xml: XmlSink, tagName: string, border: Border): void;
10
11
  /** Render w:pPr (paragraph properties). */
11
12
  export declare function renderParagraphProperties(xml: XmlSink, pPr: ParagraphProperties, insidePropertyChange?: boolean): void;
12
13
  /** Render a w:p element. */
13
- export declare function renderParagraph(xml: XmlSink, para: Paragraph): void;
14
+ export declare function renderParagraph(xml: XmlSink, para: Paragraph, helpers?: RenderHelpers): void;
@@ -3,7 +3,9 @@
3
3
  *
4
4
  * Renders w:pPr and w:p elements including numbering, tabs, borders, etc.
5
5
  */
6
- import { renderRunProperties, renderShading, renderRun, renderBorderElement } from "./run-writer.js";
6
+ import { isRun } from "../core/text-utils.js";
7
+ import { DocxRawXmlPolicyError } from "../errors.js";
8
+ import { renderBorderElement, renderRun, renderRunProperties, renderRunPropertiesContents, renderShading } from "./run-writer.js";
7
9
  import { renderSectionProperties } from "./section-writer.js";
8
10
  /** Render a single border element. */
9
11
  export function renderBorder(xml, tagName, border) {
@@ -238,9 +240,28 @@ export function renderParagraphProperties(xml, pPr, insidePropertyChange = false
238
240
  if (pPr.cnfStyle) {
239
241
  xml.leafNode("w:cnfStyle", { "w:val": pPr.cnfStyle });
240
242
  }
241
- // Paragraph mark insertion/deletion (track changes)
242
- // These go inside a w:rPr wrapper within w:pPr
243
- if (pPr.paragraphInsertion || pPr.paragraphDeletion) {
243
+ // Paragraph property change revision — NOT recursed into when rendering previousProperties
244
+ if (!insidePropertyChange && pPr.propertyChange) {
245
+ xml.openNode("w:pPrChange", {
246
+ "w:id": String(pPr.propertyChange.revision.id),
247
+ "w:author": pPr.propertyChange.revision.author,
248
+ ...(pPr.propertyChange.revision.date ? { "w:date": pPr.propertyChange.revision.date } : {})
249
+ });
250
+ if (pPr.propertyChange.previousProperties) {
251
+ renderParagraphProperties(xml, pPr.propertyChange.previousProperties, true);
252
+ }
253
+ xml.closeNode();
254
+ }
255
+ // Paragraph mark properties (w:rPr inside w:pPr).
256
+ //
257
+ // ECMA-376 17.3.1.27 (CT_PPrBase) only allows ONE `w:rPr` child here. We
258
+ // therefore merge `paragraphInsertion` / `paragraphDeletion` (track-changes
259
+ // markers for the paragraph mark) into the same `w:rPr` as
260
+ // `markRunProperties`. Inside this single w:rPr, the schema requires
261
+ // w:ins/w:del/w:moveFrom/w:moveTo to come BEFORE the run-property children
262
+ // (per CT_ParaRPr).
263
+ const hasInsDel = !!(pPr.paragraphInsertion || pPr.paragraphDeletion);
264
+ if (hasInsDel || pPr.markRunProperties) {
244
265
  xml.openNode("w:rPr");
245
266
  if (pPr.paragraphInsertion) {
246
267
  const insAttrs = {
@@ -262,34 +283,40 @@ export function renderParagraphProperties(xml, pPr, insidePropertyChange = false
262
283
  }
263
284
  xml.leafNode("w:del", delAttrs);
264
285
  }
265
- xml.closeNode(); // w:rPr
266
- }
267
- // Paragraph property change revision — NOT recursed into when rendering previousProperties
268
- if (!insidePropertyChange && pPr.propertyChange) {
269
- xml.openNode("w:pPrChange", {
270
- "w:id": String(pPr.propertyChange.revision.id),
271
- "w:author": pPr.propertyChange.revision.author,
272
- ...(pPr.propertyChange.revision.date ? { "w:date": pPr.propertyChange.revision.date } : {})
273
- });
274
- if (pPr.propertyChange.previousProperties) {
275
- renderParagraphProperties(xml, pPr.propertyChange.previousProperties, true);
286
+ if (pPr.markRunProperties) {
287
+ renderRunPropertiesContents(xml, pPr.markRunProperties);
276
288
  }
277
- xml.closeNode();
278
- }
279
- if (pPr.markRunProperties) {
280
- renderRunProperties(xml, pPr.markRunProperties);
289
+ xml.closeNode(); // w:rPr
281
290
  }
282
291
  xml.closeNode();
283
292
  }
284
293
  /** Render a hyperlink. */
285
- function renderHyperlink(xml, link) {
294
+ function renderHyperlink(xml, link, helpers) {
286
295
  const attrs = {};
287
- if (link.rId) {
288
- attrs["r:id"] = link.rId;
296
+ // Resolve the relationship id: prefer the packager-provided WeakMap (so we
297
+ // never need the model to carry the rId), fall back to whatever the model
298
+ // already had (e.g. round-tripped DOCX where the reader populated rId).
299
+ // Resolve r:id. Prefer the packager-assigned rId from the helpers map
300
+ // (it's the only one guaranteed to exist in the rebuilt .rels file).
301
+ // Fall back to the model's `rId` only when no packager-assigned id is
302
+ // present — this happens for purely model-internal references such as
303
+ // anchor-only hyperlinks.
304
+ const resolvedRId = helpers?.hyperlinkRIds?.get(link) ?? (link.url ? undefined : link.rId);
305
+ if (resolvedRId) {
306
+ attrs["r:id"] = resolvedRId;
289
307
  }
290
308
  if (link.anchor) {
291
309
  attrs["w:anchor"] = link.anchor;
292
310
  }
311
+ // CT_Hyperlink (ECMA-376 §17.16.22) requires r:id OR w:anchor — when
312
+ // neither is present, emit the children as bare runs to avoid a schema
313
+ // violation that some validators flag.
314
+ if (!resolvedRId && !link.anchor) {
315
+ for (const run of link.children) {
316
+ renderRun(xml, run, helpers);
317
+ }
318
+ return;
319
+ }
293
320
  if (link.tooltip) {
294
321
  attrs["w:tooltip"] = link.tooltip;
295
322
  }
@@ -304,7 +331,7 @@ function renderHyperlink(xml, link) {
304
331
  }
305
332
  xml.openNode("w:hyperlink", attrs);
306
333
  for (const run of link.children) {
307
- renderRun(xml, run);
334
+ renderRun(xml, run, helpers);
308
335
  }
309
336
  xml.closeNode();
310
337
  }
@@ -344,7 +371,7 @@ function renderCommentReference(xml, cr) {
344
371
  xml.closeNode();
345
372
  }
346
373
  /** Render an inserted run (track changes). */
347
- function renderInsertedRun(xml, ins) {
374
+ function renderInsertedRun(xml, ins, helpers) {
348
375
  const attrs = {
349
376
  "w:id": String(ins.revision.id),
350
377
  "w:author": ins.revision.author
@@ -353,7 +380,7 @@ function renderInsertedRun(xml, ins) {
353
380
  attrs["w:date"] = ins.revision.date;
354
381
  }
355
382
  xml.openNode("w:ins", attrs);
356
- renderRun(xml, ins.run);
383
+ renderRun(xml, ins.run, helpers);
357
384
  xml.closeNode();
358
385
  }
359
386
  /** Render a deleted run (track changes). */
@@ -401,7 +428,7 @@ function renderDeletedRun(xml, del) {
401
428
  xml.closeNode();
402
429
  }
403
430
  /** Render a moved-from or moved-to run (track changes). */
404
- function renderMovedRun(xml, moved, wrapperTag) {
431
+ function renderMovedRun(xml, moved, wrapperTag, helpers) {
405
432
  const attrs = {
406
433
  "w:id": String(moved.revision.id),
407
434
  "w:author": moved.revision.author
@@ -410,15 +437,15 @@ function renderMovedRun(xml, moved, wrapperTag) {
410
437
  attrs["w:date"] = moved.revision.date;
411
438
  }
412
439
  xml.openNode(wrapperTag, attrs);
413
- renderRun(xml, moved.run);
440
+ renderRun(xml, moved.run, helpers);
414
441
  xml.closeNode();
415
442
  }
416
443
  /** Render a paragraph child element. */
417
- function renderParagraphChild(xml, child) {
444
+ function renderParagraphChild(xml, child, helpers) {
418
445
  if ("type" in child) {
419
446
  switch (child.type) {
420
447
  case "hyperlink":
421
- renderHyperlink(xml, child);
448
+ renderHyperlink(xml, child, helpers);
422
449
  return;
423
450
  case "bookmarkStart":
424
451
  renderBookmarkStart(xml, child);
@@ -436,16 +463,16 @@ function renderParagraphChild(xml, child) {
436
463
  renderCommentReference(xml, child);
437
464
  return;
438
465
  case "insertedRun":
439
- renderInsertedRun(xml, child);
466
+ renderInsertedRun(xml, child, helpers);
440
467
  return;
441
468
  case "deletedRun":
442
469
  renderDeletedRun(xml, child);
443
470
  return;
444
471
  case "movedFromRun":
445
- renderMovedRun(xml, child, "w:moveFrom");
472
+ renderMovedRun(xml, child, "w:moveFrom", helpers);
446
473
  return;
447
474
  case "movedToRun":
448
- renderMovedRun(xml, child, "w:moveTo");
475
+ renderMovedRun(xml, child, "w:moveTo", helpers);
449
476
  return;
450
477
  case "moveFromRangeStart":
451
478
  case "moveFromRangeEnd":
@@ -486,18 +513,26 @@ function renderParagraphChild(xml, child) {
486
513
  xml.leafNode(`w:${child.type}`, cmAttrs);
487
514
  return;
488
515
  }
516
+ case "opaqueParagraphChild": {
517
+ const policy = helpers?.rawXmlPolicy;
518
+ if (policy === "reject") {
519
+ throw new DocxRawXmlPolicyError("opaqueParagraphChild");
520
+ }
521
+ if (policy !== "strip") {
522
+ xml.writeRaw(child.rawXml);
523
+ }
524
+ return;
525
+ }
489
526
  default:
490
527
  break;
491
528
  }
492
529
  }
493
- // Run objects don't have a .type property at the union level, but we handle
494
- // them via duck typing: they have .content
495
- if ("content" in child && !("type" in child)) {
496
- renderRun(xml, child);
530
+ if (isRun(child)) {
531
+ renderRun(xml, child, helpers);
497
532
  }
498
533
  }
499
534
  /** Render a w:p element. */
500
- export function renderParagraph(xml, para) {
535
+ export function renderParagraph(xml, para, helpers) {
501
536
  const pAttrs = {};
502
537
  if (para.paraId) {
503
538
  pAttrs["w14:paraId"] = para.paraId;
@@ -510,7 +545,7 @@ export function renderParagraph(xml, para) {
510
545
  renderParagraphProperties(xml, para.properties);
511
546
  }
512
547
  for (const child of para.children) {
513
- renderParagraphChild(xml, child);
548
+ renderParagraphChild(xml, child, helpers);
514
549
  }
515
550
  xml.closeNode();
516
551
  }
@@ -7,7 +7,7 @@
7
7
  import type { XmlSink } from "../../xml/types.js";
8
8
  import type { DocumentSettings, CoreProperties, AppProperties, FontDef, DocumentBackground, CustomProperty, DocumentTheme, WebSettings, PersonInfo } from "../types.js";
9
9
  /** Render word/settings.xml. */
10
- export declare function renderSettings(xml: XmlSink, settings?: DocumentSettings): void;
10
+ export declare function renderSettings(xml: XmlSink, settings?: DocumentSettings, rawXmlPolicy?: "preserve" | "strip" | "reject"): void;
11
11
  /** Render word/fontTable.xml. */
12
12
  export declare function renderFontTable(xml: XmlSink, fonts?: readonly FontDef[]): void;
13
13
  /** Render docProps/core.xml. */
@@ -19,8 +19,8 @@ export declare function renderDocumentBackground(xml: XmlSink, bg: DocumentBackg
19
19
  /** Render docProps/custom.xml. */
20
20
  export declare function renderCustomProperties(xml: XmlSink, properties: readonly CustomProperty[]): void;
21
21
  /** Render word/theme/theme1.xml (minimal theme). */
22
- export declare function renderTheme(xml: XmlSink, theme?: DocumentTheme): void;
22
+ export declare function renderTheme(xml: XmlSink, theme?: DocumentTheme, rawXmlPolicy?: "preserve" | "strip" | "reject"): void;
23
23
  /** Render word/webSettings.xml. */
24
- export declare function renderWebSettings(xml: XmlSink, ws?: WebSettings): void;
24
+ export declare function renderWebSettings(xml: XmlSink, ws?: WebSettings, rawXmlPolicy?: "preserve" | "strip" | "reject"): void;
25
25
  /** Render word/people.xml. */
26
26
  export declare function renderPeople(xml: XmlSink, people: readonly PersonInfo[]): void;