@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
@@ -1,1645 +0,0 @@
1
- "use strict";
2
- /**
3
- * DOCX Module - Document Builder
4
- *
5
- * High-level fluent API for constructing DOCX documents programmatically.
6
- * Provides convenience methods for common operations including comments,
7
- * track changes, TOC, math, text boxes, checkboxes, and custom properties.
8
- *
9
- * This file has NO static imports from docx-packager or docx-reader,
10
- * ensuring that importing builder helpers does not pull in archive/xml code.
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.resolveThemeColor = exports.Document = void 0;
14
- exports.text = text;
15
- exports.bold = bold;
16
- exports.italic = italic;
17
- exports.pageBreak = pageBreak;
18
- exports.lineBreak = lineBreak;
19
- exports.columnBreak = columnBreak;
20
- exports.tab = tab;
21
- exports.positionalTab = positionalTab;
22
- exports.ruby = ruby;
23
- exports.carriageReturn = carriageReturn;
24
- exports.noBreakHyphen = noBreakHyphen;
25
- exports.softHyphen = softHyphen;
26
- exports.field = field;
27
- exports.pageNumberField = pageNumberField;
28
- exports.totalPagesField = totalPagesField;
29
- exports.sectionPagesField = sectionPagesField;
30
- exports.sectionField = sectionField;
31
- exports.dateField = dateField;
32
- exports.sequenceField = sequenceField;
33
- exports.timeField = timeField;
34
- exports.authorField = authorField;
35
- exports.titleField = titleField;
36
- exports.subjectField = subjectField;
37
- exports.keywordsField = keywordsField;
38
- exports.fileNameField = fileNameField;
39
- exports.fileSizeField = fileSizeField;
40
- exports.styleRefField = styleRefField;
41
- exports.refField = refField;
42
- exports.pageRefField = pageRefField;
43
- exports.noteRefField = noteRefField;
44
- exports.hyperlinkField = hyperlinkField;
45
- exports.quoteField = quoteField;
46
- exports.tocField = tocField;
47
- exports.tcField = tcField;
48
- exports.indexEntryField = indexEntryField;
49
- exports.indexField = indexField;
50
- exports.ifField = ifField;
51
- exports.includeTextField = includeTextField;
52
- exports.includePictureField = includePictureField;
53
- exports.formTextField = formTextField;
54
- exports.formCheckboxField = formCheckboxField;
55
- exports.formDropdownField = formDropdownField;
56
- exports.paragraph = paragraph;
57
- exports.textParagraph = textParagraph;
58
- exports.heading = heading;
59
- exports.hyperlink = hyperlink;
60
- exports.bookmarkStart = bookmarkStart;
61
- exports.bookmarkEnd = bookmarkEnd;
62
- exports.commentRangeStart = commentRangeStart;
63
- exports.commentRangeEnd = commentRangeEnd;
64
- exports.commentReference = commentReference;
65
- exports.insertedRun = insertedRun;
66
- exports.deletedRun = deletedRun;
67
- exports.movedFromRun = movedFromRun;
68
- exports.movedToRun = movedToRun;
69
- exports.moveFromRangeStart = moveFromRangeStart;
70
- exports.moveFromRangeEnd = moveFromRangeEnd;
71
- exports.moveToRangeStart = moveToRangeStart;
72
- exports.moveToRangeEnd = moveToRangeEnd;
73
- exports.checkBox = checkBox;
74
- exports.mathBlock = mathBlock;
75
- exports.mathRun = mathRun;
76
- exports.mathFraction = mathFraction;
77
- exports.mathSqrt = mathSqrt;
78
- exports.mathRoot = mathRoot;
79
- exports.mathSum = mathSum;
80
- exports.mathIntegral = mathIntegral;
81
- exports.mathProduct = mathProduct;
82
- exports.mathSuperScript = mathSuperScript;
83
- exports.mathSubScript = mathSubScript;
84
- exports.mathSubSuperScript = mathSubSuperScript;
85
- exports.mathPreSubSuperScript = mathPreSubSuperScript;
86
- exports.mathPhantom = mathPhantom;
87
- exports.mathGroupChar = mathGroupChar;
88
- exports.mathBorderBox = mathBorderBox;
89
- exports.mathDelimiter = mathDelimiter;
90
- exports.mathNary = mathNary;
91
- exports.mathFunction = mathFunction;
92
- exports.mathLimit = mathLimit;
93
- exports.mathMatrix = mathMatrix;
94
- exports.mathAccent = mathAccent;
95
- exports.mathBar = mathBar;
96
- exports.mathBox = mathBox;
97
- exports.mathEquationArray = mathEquationArray;
98
- exports.symbol = symbol;
99
- exports.floatingImage = floatingImage;
100
- exports.drawingShape = drawingShape;
101
- exports.chart = chart;
102
- exports.structuredDocumentTag = structuredDocumentTag;
103
- exports.border = border;
104
- exports.gridBorders = gridBorders;
105
- exports.cell = cell;
106
- exports.row = row;
107
- exports.table = table;
108
- exports.simpleTable = simpleTable;
109
- exports.paragraphCount = paragraphCount;
110
- exports.countWords = countWords;
111
- exports.getHeadings = getHeadings;
112
- exports.findBookmark = findBookmark;
113
- exports.findComment = findComment;
114
- exports.listImages = listImages;
115
- exports.listTables = listTables;
116
- exports.listHyperlinks = listHyperlinks;
117
- exports.tableCount = tableCount;
118
- exports.extractText = extractText;
119
- exports.searchText = searchText;
120
- exports.replaceText = replaceText;
121
- exports.mailMerge = mailMerge;
122
- // =============================================================================
123
- // Helper Builders
124
- // =============================================================================
125
- /** Create a text run. */
126
- function text(content, properties) {
127
- return { properties, content: [{ type: "text", text: content }] };
128
- }
129
- /** Create a bold text run. */
130
- function bold(content, properties) {
131
- return text(content, { ...properties, bold: true });
132
- }
133
- /** Create an italic text run. */
134
- function italic(content, properties) {
135
- return text(content, { ...properties, italic: true });
136
- }
137
- /** Create a run with a page break. */
138
- function pageBreak() {
139
- return { content: [{ type: "break", breakType: "page" }] };
140
- }
141
- /** Create a run with a line break. */
142
- function lineBreak() {
143
- return { content: [{ type: "break" }] };
144
- }
145
- /** Create a run with a column break. */
146
- function columnBreak() {
147
- return { content: [{ type: "break", breakType: "column" }] };
148
- }
149
- /** Create a tab run. */
150
- function tab() {
151
- return { content: [{ type: "tab" }] };
152
- }
153
- /** Create a positional tab (w:ptab). */
154
- function positionalTab(options) {
155
- return {
156
- content: [
157
- {
158
- type: "ptab",
159
- alignment: options.alignment,
160
- relativeTo: options.relativeTo,
161
- leader: options.leader
162
- }
163
- ]
164
- };
165
- }
166
- /**
167
- * Create a ruby (phonetic guide) run — e.g. Japanese furigana or Chinese pinyin.
168
- *
169
- * @param baseText - The main text being annotated.
170
- * @param rubyText - The phonetic text shown above the base.
171
- * @param properties - Optional ruby properties (alignment, font size, language).
172
- */
173
- function ruby(baseText, rubyText, properties) {
174
- const normalize = (v) => {
175
- if (typeof v === "string") {
176
- return [text(v)];
177
- }
178
- if (Array.isArray(v)) {
179
- return v;
180
- }
181
- return [v];
182
- };
183
- return {
184
- content: [
185
- {
186
- type: "ruby",
187
- properties,
188
- baseText: normalize(baseText),
189
- rubyText: normalize(rubyText)
190
- }
191
- ]
192
- };
193
- }
194
- /** Create a carriage return run. */
195
- function carriageReturn() {
196
- return { content: [{ type: "carriageReturn" }] };
197
- }
198
- /** Create a no-break hyphen run. */
199
- function noBreakHyphen() {
200
- return { content: [{ type: "noBreakHyphen" }] };
201
- }
202
- /** Create a soft hyphen run. */
203
- function softHyphen() {
204
- return { content: [{ type: "softHyphen" }] };
205
- }
206
- /** Create a run with a field code. */
207
- function field(instruction, cachedValue) {
208
- return { content: [{ type: "field", instruction, cachedValue }] };
209
- }
210
- /** Create a PAGE field (current page number). */
211
- function pageNumberField(cachedValue) {
212
- return field(" PAGE ", cachedValue ?? "1");
213
- }
214
- /** Create a NUMPAGES field (total page count). */
215
- function totalPagesField(cachedValue) {
216
- return field(" NUMPAGES ", cachedValue ?? "1");
217
- }
218
- /** Create a SECTIONPAGES field (pages in section). */
219
- function sectionPagesField(cachedValue) {
220
- return field(" SECTIONPAGES ", cachedValue ?? "1");
221
- }
222
- /** Create a SECTION field (current section number). */
223
- function sectionField(cachedValue) {
224
- return field(" SECTION ", cachedValue ?? "1");
225
- }
226
- /** Create a DATE field. */
227
- function dateField(format, cachedValue) {
228
- const fmt = format ?? "yyyy-MM-dd";
229
- return field(` DATE \\@ "${fmt}" `, cachedValue);
230
- }
231
- /** Create a SEQ (sequence) field for numbering figures, tables, etc. */
232
- function sequenceField(identifier, options) {
233
- let instruction = ` SEQ ${identifier} `;
234
- if (options?.hide) {
235
- instruction += "\\h ";
236
- }
237
- return field(instruction, options?.cachedValue);
238
- }
239
- /** Create a TIME field (current time). */
240
- function timeField(format, cachedValue) {
241
- const fmt = format ?? "HH:mm:ss";
242
- return field(` TIME \\@ "${fmt}" `, cachedValue);
243
- }
244
- /** Create an AUTHOR field. */
245
- function authorField(cachedValue) {
246
- return field(" AUTHOR ", cachedValue);
247
- }
248
- /** Create a TITLE field. */
249
- function titleField(cachedValue) {
250
- return field(" TITLE ", cachedValue);
251
- }
252
- /** Create a SUBJECT field. */
253
- function subjectField(cachedValue) {
254
- return field(" SUBJECT ", cachedValue);
255
- }
256
- /** Create a KEYWORDS field. */
257
- function keywordsField(cachedValue) {
258
- return field(" KEYWORDS ", cachedValue);
259
- }
260
- /** Create a FILENAME field. */
261
- function fileNameField(options) {
262
- const instruction = options?.includePath ? " FILENAME \\p " : " FILENAME ";
263
- return field(instruction, options?.cachedValue);
264
- }
265
- /** Create a FILESIZE field. */
266
- function fileSizeField(cachedValue) {
267
- return field(" FILESIZE ", cachedValue);
268
- }
269
- /**
270
- * Create a STYLEREF field (references text from nearest paragraph with given style).
271
- *
272
- * Commonly used in headers to show current chapter/section heading.
273
- */
274
- function styleRefField(styleName, options) {
275
- let instruction = ` STYLEREF "${styleName}" `;
276
- if (options?.fromBottom) {
277
- instruction += "\\l ";
278
- }
279
- if (options?.insertParagraphNumber) {
280
- instruction += "\\n ";
281
- }
282
- if (options?.insertPosition) {
283
- instruction += "\\p ";
284
- }
285
- if (options?.suppressNonNumeric) {
286
- instruction += "\\t ";
287
- }
288
- return field(instruction, options?.cachedValue);
289
- }
290
- /**
291
- * Create a REF field (references a bookmark).
292
- */
293
- function refField(bookmarkName, options) {
294
- let instruction = ` REF ${bookmarkName} `;
295
- if (options?.insertNumber) {
296
- instruction += "\\n ";
297
- }
298
- if (options?.hyperlink) {
299
- instruction += "\\h ";
300
- }
301
- if (options?.paragraphNumber) {
302
- instruction += "\\w ";
303
- }
304
- if (options?.relativeParagraphNumber) {
305
- instruction += "\\r ";
306
- }
307
- if (options?.fullContext) {
308
- instruction += "\\w ";
309
- }
310
- if (options?.suppressNonDelimiter) {
311
- instruction += "\\t ";
312
- }
313
- return field(instruction, options?.cachedValue);
314
- }
315
- /** Create a PAGEREF field (references page of bookmark). */
316
- function pageRefField(bookmarkName, options) {
317
- let instruction = ` PAGEREF ${bookmarkName} `;
318
- if (options?.hyperlink) {
319
- instruction += "\\h ";
320
- }
321
- if (options?.relativePosition) {
322
- instruction += "\\p ";
323
- }
324
- return field(instruction, options?.cachedValue);
325
- }
326
- /** Create a NOTEREF field (references a footnote/endnote). */
327
- function noteRefField(bookmarkName, options) {
328
- let instruction = ` NOTEREF ${bookmarkName} `;
329
- if (options?.hyperlink) {
330
- instruction += "\\h ";
331
- }
332
- if (options?.insertNumberFormat) {
333
- instruction += "\\f ";
334
- }
335
- return field(instruction, options?.cachedValue);
336
- }
337
- /** Create a HYPERLINK field (alternative to w:hyperlink element). */
338
- function hyperlinkField(target, options) {
339
- let instruction = ` HYPERLINK "${target}" `;
340
- if (options?.anchor) {
341
- instruction += `\\l "${options.anchor}" `;
342
- }
343
- if (options?.newWindow) {
344
- instruction += "\\n ";
345
- }
346
- if (options?.tooltip) {
347
- instruction += `\\o "${options.tooltip}" `;
348
- }
349
- return field(instruction, options?.cachedValue ?? options?.displayText);
350
- }
351
- /** Create a QUOTE field (literal text). */
352
- function quoteField(text, cachedValue) {
353
- return field(` QUOTE "${text}" `, cachedValue ?? text);
354
- }
355
- /**
356
- * Create a TOC field for table of contents.
357
- *
358
- * @param options - TOC options.
359
- */
360
- function tocField(options) {
361
- let instruction = " TOC ";
362
- if (options?.headingLevels) {
363
- instruction += `\\o "${options.headingLevels}" `;
364
- }
365
- if (options?.styles && options.styles.length > 0) {
366
- instruction += `\\t "${options.styles.join(";")}" `;
367
- }
368
- if (options?.tcLevels) {
369
- instruction += `\\f ${options.tcLevels} `;
370
- }
371
- if (options?.hyperlink) {
372
- instruction += "\\h ";
373
- }
374
- if (options?.rightAlignedPageNumbers) {
375
- instruction += "\\z ";
376
- }
377
- if (options?.tabLeader) {
378
- instruction += `\\p "${options.tabLeader}" `;
379
- }
380
- if (options?.noPageNumbers) {
381
- instruction += "\\n ";
382
- }
383
- if (options?.captionIdentifier) {
384
- instruction += `\\c "${options.captionIdentifier}" `;
385
- }
386
- return field(instruction, options?.cachedValue);
387
- }
388
- /** Create a TC (table of contents entry) field. */
389
- function tcField(text, options) {
390
- let instruction = ` TC "${text}" `;
391
- if (options?.level !== undefined) {
392
- instruction += `\\l ${options.level} `;
393
- }
394
- if (options?.suppressPageNumber) {
395
- instruction += "\\n ";
396
- }
397
- return field(instruction, options?.cachedValue);
398
- }
399
- /** Create an XE (index entry) field. */
400
- function indexEntryField(text, options) {
401
- let instruction = ` XE "${text}" `;
402
- if (options?.bold) {
403
- instruction += "\\b ";
404
- }
405
- if (options?.italic) {
406
- instruction += "\\i ";
407
- }
408
- return field(instruction, options?.cachedValue);
409
- }
410
- /** Create an INDEX field (renders index from XE entries). */
411
- function indexField(options) {
412
- let instruction = " INDEX ";
413
- if (options?.bookmark) {
414
- instruction += `\\b ${options.bookmark} `;
415
- }
416
- if (options?.columns) {
417
- instruction += `\\c ${options.columns} `;
418
- }
419
- if (options?.entryType) {
420
- instruction += `\\f "${options.entryType}" `;
421
- }
422
- return field(instruction, options?.cachedValue);
423
- }
424
- /** Create an IF field (conditional content). */
425
- function ifField(condition, trueText, falseText, cachedValue) {
426
- return field(` IF ${condition} "${trueText}" "${falseText}" `, cachedValue);
427
- }
428
- /** Create an INCLUDETEXT field (includes external file content). */
429
- function includeTextField(filePath, options) {
430
- let instruction = ` INCLUDETEXT "${filePath}" `;
431
- if (options?.bookmark) {
432
- instruction += `${options.bookmark} `;
433
- }
434
- return field(instruction, options?.cachedValue);
435
- }
436
- /** Create an INCLUDEPICTURE field. */
437
- function includePictureField(filePath, cachedValue) {
438
- return field(` INCLUDEPICTURE "${filePath}" `, cachedValue);
439
- }
440
- /** Create a FORMTEXT field (legacy text form field). */
441
- function formTextField(cachedValue) {
442
- return field(" FORMTEXT ", cachedValue);
443
- }
444
- /** Create a FORMCHECKBOX field (legacy checkbox form field). */
445
- function formCheckboxField(cachedValue) {
446
- return field(" FORMCHECKBOX ", cachedValue);
447
- }
448
- /** Create a FORMDROPDOWN field (legacy dropdown form field). */
449
- function formDropdownField(cachedValue) {
450
- return field(" FORMDROPDOWN ", cachedValue);
451
- }
452
- /** Create a paragraph. */
453
- function paragraph(children, properties) {
454
- return { type: "paragraph", properties, children };
455
- }
456
- /** Create a simple text paragraph. */
457
- function textParagraph(content, properties) {
458
- const { run: runProps, ...pProps } = properties ?? {};
459
- return paragraph([text(content, runProps)], Object.keys(pProps).length > 0 ? pProps : undefined);
460
- }
461
- /** Create a heading paragraph. */
462
- function heading(content, level) {
463
- return paragraph([text(content)], { style: `Heading${level}` });
464
- }
465
- /** Create a hyperlink. */
466
- function hyperlink(linkText, options) {
467
- return {
468
- type: "hyperlink",
469
- rId: options.rId,
470
- url: options.url,
471
- anchor: options.anchor,
472
- tooltip: options.tooltip,
473
- children: [text(linkText, options.properties ?? { color: "0563C1", underline: "single" })]
474
- };
475
- }
476
- /** Create a bookmark start. */
477
- function bookmarkStart(id, name) {
478
- return { type: "bookmarkStart", id, name };
479
- }
480
- /** Create a bookmark end. */
481
- function bookmarkEnd(id) {
482
- return { type: "bookmarkEnd", id };
483
- }
484
- /** Create a comment range start marker. */
485
- function commentRangeStart(id) {
486
- return { type: "commentRangeStart", id };
487
- }
488
- /** Create a comment range end marker. */
489
- function commentRangeEnd(id) {
490
- return { type: "commentRangeEnd", id };
491
- }
492
- /** Create a comment reference (inside paragraph children). */
493
- function commentReference(id) {
494
- return { type: "commentReference", id };
495
- }
496
- /** Create an inserted run (track changes). */
497
- function insertedRun(run, revision) {
498
- return { type: "insertedRun", revision, run };
499
- }
500
- /** Create a deleted run (track changes). */
501
- function deletedRun(run, revision) {
502
- return { type: "deletedRun", revision, run };
503
- }
504
- /** Create a moved-from run (track changes — source of a move). */
505
- function movedFromRun(run, revision) {
506
- return { type: "movedFromRun", revision, run };
507
- }
508
- /** Create a moved-to run (track changes — destination of a move). */
509
- function movedToRun(run, revision) {
510
- return { type: "movedToRun", revision, run };
511
- }
512
- /** Create a move range start marker. */
513
- function moveFromRangeStart(id, author, options) {
514
- return { type: "moveFromRangeStart", id, author, date: options?.date, name: options?.name };
515
- }
516
- /** Create a move range end marker. */
517
- function moveFromRangeEnd(id) {
518
- return { type: "moveFromRangeEnd", id };
519
- }
520
- /** Create a move-to range start marker. */
521
- function moveToRangeStart(id, author, options) {
522
- return { type: "moveToRangeStart", id, author, date: options?.date, name: options?.name };
523
- }
524
- /** Create a move-to range end marker. */
525
- function moveToRangeEnd(id) {
526
- return { type: "moveToRangeEnd", id };
527
- }
528
- /** Create a checkbox. */
529
- function checkBox(options) {
530
- return {
531
- type: "checkBox",
532
- checked: options?.checked,
533
- checkedState: options?.checkedState,
534
- uncheckedState: options?.uncheckedState
535
- };
536
- }
537
- // =============================================================================
538
- // Math Builders
539
- // =============================================================================
540
- /** Create a math block. */
541
- function mathBlock(content) {
542
- return { type: "math", content };
543
- }
544
- /** Create a math text run. */
545
- function mathRun(mathText, properties) {
546
- return { type: "mathRun", text: mathText, properties };
547
- }
548
- /** Create a math fraction. */
549
- function mathFraction(numerator, denominator, fractionType) {
550
- return { type: "mathFraction", fractionType, numerator, denominator };
551
- }
552
- /** Create a math square root. */
553
- function mathSqrt(content) {
554
- return { type: "mathRadical", content, hideDegree: true };
555
- }
556
- /** Create a math nth root. */
557
- function mathRoot(degree, content) {
558
- return { type: "mathRadical", degree, content };
559
- }
560
- /** Create a math summation. */
561
- function mathSum(content, sub, sup) {
562
- return { type: "mathNary", char: "\u2211", sub, sup, content };
563
- }
564
- /** Create a math integral. */
565
- function mathIntegral(content, sub, sup) {
566
- return { type: "mathNary", char: "\u222B", sub, sup, content };
567
- }
568
- /** Create a math product. */
569
- function mathProduct(content, sub, sup) {
570
- return { type: "mathNary", char: "\u220F", sub, sup, content };
571
- }
572
- /** Create a math superscript. */
573
- function mathSuperScript(base, superScript) {
574
- return { type: "mathSuperScript", base, superScript };
575
- }
576
- /** Create a math subscript. */
577
- function mathSubScript(base, subScript) {
578
- return { type: "mathSubScript", base, subScript };
579
- }
580
- /** Create a math sub-superscript. */
581
- function mathSubSuperScript(base, subScript, superScript) {
582
- return { type: "mathSubSuperScript", base, subScript, superScript };
583
- }
584
- /** Create a math pre-sub-superscript (subscript/superscript before the base). */
585
- function mathPreSubSuperScript(base, preSubScript, preSuperScript) {
586
- return { type: "mathPreSubSuperScript", base, preSubScript, preSuperScript };
587
- }
588
- /** Create a math phantom (invisible expression that takes up space). */
589
- function mathPhantom(content, options) {
590
- return { type: "mathPhantom", content, ...options };
591
- }
592
- /** Create a math group character (e.g. a horizontal brace over an expression). */
593
- function mathGroupChar(base, options) {
594
- return { type: "mathGroupChar", base, ...options };
595
- }
596
- /** Create a math border box (draw borders around / strike through an expression). */
597
- function mathBorderBox(content, options) {
598
- return { type: "mathBorderBox", content, ...options };
599
- }
600
- /** Create a math delimiter (parentheses, brackets, etc.). */
601
- function mathDelimiter(content, options) {
602
- return {
603
- type: "mathDelimiter",
604
- beginChar: options?.beginChar,
605
- endChar: options?.endChar,
606
- separatorChar: options?.separatorChar,
607
- content
608
- };
609
- }
610
- /** Create a math n-ary operator (sum, integral, product, etc.). */
611
- function mathNary(char, content, sub, sup) {
612
- return { type: "mathNary", char, sub, sup, content };
613
- }
614
- /** Create a math function (sin, cos, lim, etc.). */
615
- function mathFunction(name, content) {
616
- return { type: "mathFunction", name, content };
617
- }
618
- /** Create a math limit (upper or lower). */
619
- function mathLimit(base, limit, limitType = "lower") {
620
- return { type: "mathLimit", base, limit, limitType };
621
- }
622
- /** Create a math matrix. */
623
- function mathMatrix(rows) {
624
- return { type: "mathMatrix", rows };
625
- }
626
- /** Create a math accent (hat, tilde, etc.). */
627
- function mathAccent(content, char) {
628
- return { type: "mathAccent", content, char };
629
- }
630
- /** Create a math bar (overbar/underbar). */
631
- function mathBar(content, position) {
632
- return { type: "mathBar", content, position: position ?? "top" };
633
- }
634
- /** Create a math box. */
635
- function mathBox(content) {
636
- return { type: "mathBox", content };
637
- }
638
- /** Create a math equation array. */
639
- function mathEquationArray(rows) {
640
- return { type: "mathEquationArray", rows };
641
- }
642
- /** Create a symbol run. */
643
- function symbol(font, char, properties) {
644
- return { properties, content: [{ type: "symbol", font, char }] };
645
- }
646
- /** Create a floating image (body-level). */
647
- function floatingImage(options) {
648
- return {
649
- type: "floatingImage",
650
- rId: options.rId,
651
- width: options.width,
652
- height: options.height,
653
- horizontalPosition: options.horizontalPosition ?? { relativeTo: "column", offset: 0 },
654
- verticalPosition: options.verticalPosition ?? { relativeTo: "paragraph", offset: 0 },
655
- wrap: options.wrap ?? { style: "square" },
656
- altText: options.altText,
657
- name: options.name,
658
- behindDoc: options.behindDoc,
659
- lockAnchor: options.lockAnchor,
660
- layoutInCell: options.layoutInCell,
661
- allowOverlap: options.allowOverlap,
662
- simplePos: options.simplePos,
663
- distT: options.distT,
664
- distB: options.distB,
665
- distL: options.distL,
666
- distR: options.distR,
667
- rotation: options.rotation,
668
- flipHorizontal: options.flipHorizontal,
669
- flipVertical: options.flipVertical,
670
- srcRect: options.srcRect
671
- };
672
- }
673
- /** Create a DrawingML shape. */
674
- function drawingShape(options) {
675
- return {
676
- type: "drawingShape",
677
- shapeType: options.shapeType,
678
- width: options.width,
679
- height: options.height,
680
- fillColor: options.fillColor,
681
- noFill: options.noFill,
682
- outlineColor: options.outlineColor,
683
- outlineWidth: options.outlineWidth,
684
- noOutline: options.noOutline,
685
- textContent: options.textContent,
686
- altText: options.altText,
687
- name: options.name,
688
- horizontalPosition: options.horizontalPosition ?? { relativeTo: "column", offset: 0 },
689
- verticalPosition: options.verticalPosition ?? { relativeTo: "paragraph", offset: 0 },
690
- wrap: options.wrap ?? { style: "square" },
691
- behindDoc: options.behindDoc,
692
- rotation: options.rotation
693
- };
694
- }
695
- /** Create a chart content block. */
696
- function chart(options) {
697
- return {
698
- type: "chart",
699
- chart: {
700
- type: options.type,
701
- series: options.series,
702
- title: options.title,
703
- legend: options.legend,
704
- categoryAxis: options.categoryAxis,
705
- valueAxis: options.valueAxis,
706
- plotAreaColor: options.plotAreaColor,
707
- chartAreaColor: options.chartAreaColor,
708
- view3d: options.view3d,
709
- style: options.style,
710
- width: options.width,
711
- height: options.height
712
- },
713
- altText: options.altText,
714
- name: options.name
715
- };
716
- }
717
- /** Create a structured document tag (content control). */
718
- function structuredDocumentTag(content, properties) {
719
- return { type: "sdt", properties: properties ?? {}, content };
720
- }
721
- // =============================================================================
722
- // Table Builders
723
- // =============================================================================
724
- /** Shorthand border. */
725
- function border(style = "single", size = 4, color = "auto") {
726
- return { style, size, space: 0, color };
727
- }
728
- /** Create standard grid borders for a table. */
729
- function gridBorders(size = 4, color = "auto") {
730
- const b = border("single", size, color);
731
- return { top: b, left: b, bottom: b, right: b, insideH: b, insideV: b };
732
- }
733
- /** Create a table cell. */
734
- function cell(content, properties) {
735
- if (typeof content === "string") {
736
- return { properties, content: [textParagraph(content)] };
737
- }
738
- return { properties, content };
739
- }
740
- /** Create a table row. */
741
- function row(cells, properties) {
742
- return { properties, cells };
743
- }
744
- /** Create a table. */
745
- function table(rows, properties, columnWidths) {
746
- return { type: "table", properties, columnWidths, rows };
747
- }
748
- /** Create a simple table from a 2D string array. */
749
- function simpleTable(data, options) {
750
- const opts = { headerRow: true, borders: true, ...options };
751
- const tableRows = data.map((rowData, rowIndex) => {
752
- const cells = rowData.map(cellText => cell(cellText));
753
- return row(cells, rowIndex === 0 && opts.headerRow ? { tableHeader: true } : undefined);
754
- });
755
- return table(tableRows, {
756
- width: opts.width ?? { value: 5000, type: "pct" },
757
- borders: opts.borders ? gridBorders() : undefined
758
- }, opts.columnWidths);
759
- }
760
- /** Cast internal state to opaque handle. */
761
- function _toHandle(state) {
762
- return state;
763
- }
764
- /** Cast opaque handle back to internal state. */
765
- function _toState(handle) {
766
- return handle;
767
- }
768
- /**
769
- * Namespace of free functions for building DOCX documents.
770
- *
771
- * Replaces the former `DocumentBuilder` class with tree-shakeable free functions.
772
- * Each function operates on an opaque `DocumentHandle`.
773
- *
774
- * @example
775
- * ```ts
776
- * const doc = Document.create();
777
- * Document.addHeading(doc, "Hello World", 1);
778
- * Document.addParagraph(doc, "This is a paragraph.");
779
- * Document.addTable(doc, [["Name", "Age"], ["Alice", "30"]]);
780
- * const bytes = await Document.toBuffer(doc);
781
- * ```
782
- */
783
- exports.Document = {
784
- /** Create a new document handle. */
785
- create() {
786
- return _toHandle({
787
- body: [],
788
- styles: [],
789
- abstractNumberings: [],
790
- numberingInstances: [],
791
- headers: new Map(),
792
- footers: new Map(),
793
- footnotes: [],
794
- endnotes: [],
795
- images: [],
796
- fonts: [],
797
- comments: [],
798
- customProperties: [],
799
- nextImageId: 1,
800
- nextFootnoteId: 1,
801
- nextEndnoteId: 1,
802
- nextBookmarkId: 0,
803
- nextAbstractNumId: 0,
804
- nextNumId: 1,
805
- nextDrawingId: 1,
806
- nextCommentId: 0
807
- });
808
- },
809
- /** Add raw body content. */
810
- addContent(doc, content) {
811
- _toState(doc).body.push(content);
812
- },
813
- /** Add a paragraph with runs. */
814
- addParagraphElement(doc, para) {
815
- _toState(doc).body.push(para);
816
- },
817
- /** Add a simple text paragraph. */
818
- addParagraph(doc, content, properties) {
819
- _toState(doc).body.push(textParagraph(content, properties));
820
- },
821
- /** Add a heading. */
822
- addHeading(doc, content, level = 1) {
823
- _toState(doc).body.push(heading(content, level));
824
- },
825
- /** Add a page break. */
826
- addPageBreak(doc) {
827
- _toState(doc).body.push(paragraph([pageBreak()]));
828
- },
829
- /** Add a table from a 2D array. */
830
- addTable(doc, data, options) {
831
- _toState(doc).body.push(simpleTable(data, options));
832
- },
833
- /** Add a table element. */
834
- addTableElement(doc, tbl) {
835
- _toState(doc).body.push(tbl);
836
- },
837
- /** Add an inline image. Returns the image relationship ID and drawing ID. */
838
- addImage(doc, data, mediaType, width, height, options) {
839
- const s = _toState(doc);
840
- const fileName = `image${s.nextImageId}.${mediaType}`;
841
- const rId = `__img_${s.nextImageId}`;
842
- const drawingId = s.nextDrawingId++;
843
- s.images.push({ data, mediaType, fileName, rId });
844
- s.body.push(paragraph([
845
- {
846
- content: [
847
- {
848
- type: "image",
849
- rId,
850
- width,
851
- height,
852
- altText: options?.altText,
853
- name: options?.name ?? `Picture ${s.nextImageId}`,
854
- drawingId
855
- }
856
- ]
857
- }
858
- ]));
859
- s.nextImageId++;
860
- return { rId, drawingId };
861
- },
862
- /** Add a floating image. Returns the image relationship ID. */
863
- addFloatingImage(doc, data, mediaType, width, height, options) {
864
- const s = _toState(doc);
865
- const fileName = `image${s.nextImageId}.${mediaType}`;
866
- const rId = `__img_${s.nextImageId}`;
867
- s.images.push({ data, mediaType, fileName, rId });
868
- s.body.push(floatingImage({
869
- rId,
870
- width,
871
- height,
872
- altText: options?.altText,
873
- name: options?.name ?? `Picture ${s.nextImageId}`,
874
- horizontalPosition: options?.horizontalPosition,
875
- verticalPosition: options?.verticalPosition,
876
- wrap: options?.wrap,
877
- behindDoc: options?.behindDoc,
878
- lockAnchor: options?.lockAnchor,
879
- layoutInCell: options?.layoutInCell,
880
- allowOverlap: options?.allowOverlap,
881
- distT: options?.distT,
882
- distB: options?.distB,
883
- distL: options?.distL,
884
- distR: options?.distR,
885
- rotation: options?.rotation,
886
- flipHorizontal: options?.flipHorizontal,
887
- flipVertical: options?.flipVertical
888
- }));
889
- s.nextImageId++;
890
- return rId;
891
- },
892
- /** Add a custom font definition. */
893
- addFont(doc, font) {
894
- _toState(doc).fonts.push(font);
895
- },
896
- /** Set a text watermark on the document. */
897
- setWatermark(doc, watermark) {
898
- _toState(doc).watermark = watermark;
899
- },
900
- /** Add a footnote. Returns the footnote ID. */
901
- addFootnote(doc, content) {
902
- const s = _toState(doc);
903
- const id = s.nextFootnoteId++;
904
- const paras = typeof content === "string" ? [textParagraph(content)] : content;
905
- s.footnotes.push({ id, content: paras });
906
- return id;
907
- },
908
- /** Add an endnote. Returns the endnote ID. */
909
- addEndnote(doc, content) {
910
- const s = _toState(doc);
911
- const id = s.nextEndnoteId++;
912
- const paras = typeof content === "string" ? [textParagraph(content)] : content;
913
- s.endnotes.push({ id, content: paras });
914
- return id;
915
- },
916
- /** Add a comment. Returns the comment ID. */
917
- addComment(doc, author, content, options) {
918
- const s = _toState(doc);
919
- const id = s.nextCommentId++;
920
- const paras = typeof content === "string" ? [textParagraph(content)] : content;
921
- s.comments.push({
922
- id,
923
- author,
924
- date: options?.date,
925
- initials: options?.initials,
926
- content: paras
927
- });
928
- return id;
929
- },
930
- /** Add a Table of Contents. */
931
- addTableOfContents(doc, options) {
932
- _toState(doc).body.push({
933
- type: "tableOfContents",
934
- headingStyleRange: options?.headingStyleRange ?? "1-3",
935
- hyperlink: options?.hyperlink ?? true,
936
- ...options
937
- });
938
- },
939
- /** Add a math equation block. */
940
- addMath(doc, content) {
941
- _toState(doc).body.push(mathBlock(content));
942
- },
943
- /** Add a text box. */
944
- addTextBox(doc, content, options) {
945
- const paras = typeof content === "string" ? [textParagraph(content)] : content;
946
- _toState(doc).body.push({
947
- type: "textBox",
948
- content: paras,
949
- width: options?.width,
950
- height: options?.height,
951
- stroke: options?.stroke,
952
- fill: options?.fill
953
- });
954
- },
955
- /** Add a bullet list. */
956
- addBulletList(doc, items, level = 0) {
957
- const s = _toState(doc);
958
- // Create abstract numbering for bullets if not exists
959
- let bulletAbsId = s.abstractNumberings.find(a => a.levels[0]?.format === "bullet")?.abstractNumId;
960
- if (bulletAbsId === undefined) {
961
- bulletAbsId = s.nextAbstractNumId++;
962
- s.abstractNumberings.push({
963
- abstractNumId: bulletAbsId,
964
- multiLevelType: "hybridMultilevel",
965
- levels: [
966
- {
967
- level: 0,
968
- start: 1,
969
- format: "bullet",
970
- text: "\uF0B7",
971
- justification: "left",
972
- paragraphProperties: { indent: { left: 720, hanging: 360 } },
973
- runProperties: { font: { ascii: "Symbol", hAnsi: "Symbol" } }
974
- },
975
- {
976
- level: 1,
977
- start: 1,
978
- format: "bullet",
979
- text: "o",
980
- justification: "left",
981
- paragraphProperties: { indent: { left: 1440, hanging: 360 } },
982
- runProperties: { font: { ascii: "Courier New", hAnsi: "Courier New" } }
983
- },
984
- {
985
- level: 2,
986
- start: 1,
987
- format: "bullet",
988
- text: "\uF0A7",
989
- justification: "left",
990
- paragraphProperties: { indent: { left: 2160, hanging: 360 } },
991
- runProperties: { font: { ascii: "Wingdings", hAnsi: "Wingdings" } }
992
- }
993
- ]
994
- });
995
- s.numberingInstances.push({
996
- numId: s.nextNumId++,
997
- abstractNumId: bulletAbsId
998
- });
999
- }
1000
- const numId = s.numberingInstances.find(n => n.abstractNumId === bulletAbsId).numId;
1001
- for (const item of items) {
1002
- s.body.push(textParagraph(item, { numbering: { numId, level } }));
1003
- }
1004
- },
1005
- /** Add a numbered list. */
1006
- addNumberedList(doc, items, level = 0) {
1007
- const s = _toState(doc);
1008
- let numAbsId = s.abstractNumberings.find(a => a.levels[0]?.format === "decimal")?.abstractNumId;
1009
- if (numAbsId === undefined) {
1010
- numAbsId = s.nextAbstractNumId++;
1011
- s.abstractNumberings.push({
1012
- abstractNumId: numAbsId,
1013
- multiLevelType: "hybridMultilevel",
1014
- levels: [
1015
- {
1016
- level: 0,
1017
- start: 1,
1018
- format: "decimal",
1019
- text: "%1.",
1020
- justification: "left",
1021
- paragraphProperties: { indent: { left: 720, hanging: 360 } }
1022
- },
1023
- {
1024
- level: 1,
1025
- start: 1,
1026
- format: "lowerLetter",
1027
- text: "%2.",
1028
- justification: "left",
1029
- paragraphProperties: { indent: { left: 1440, hanging: 360 } }
1030
- },
1031
- {
1032
- level: 2,
1033
- start: 1,
1034
- format: "lowerRoman",
1035
- text: "%3.",
1036
- justification: "right",
1037
- paragraphProperties: { indent: { left: 2160, hanging: 180 } }
1038
- }
1039
- ]
1040
- });
1041
- s.numberingInstances.push({
1042
- numId: s.nextNumId++,
1043
- abstractNumId: numAbsId
1044
- });
1045
- }
1046
- const numId = s.numberingInstances.find(n => n.abstractNumId === numAbsId).numId;
1047
- for (const item of items) {
1048
- s.body.push(textParagraph(item, { numbering: { numId, level } }));
1049
- }
1050
- },
1051
- /** Set section properties (page size, margins, etc.). */
1052
- setSectionProperties(doc, props) {
1053
- _toState(doc).sectionProperties = props;
1054
- },
1055
- /** Set document defaults. */
1056
- setDocDefaults(doc, defaults) {
1057
- _toState(doc).docDefaults = defaults;
1058
- },
1059
- /** Add a style definition. */
1060
- addStyle(doc, style) {
1061
- _toState(doc).styles.push(style);
1062
- },
1063
- /** Set default styles (Normal, Heading1-6, Hyperlink, etc.). */
1064
- useDefaultStyles(doc) {
1065
- const s = _toState(doc);
1066
- s.docDefaults = {
1067
- runProperties: {
1068
- font: { ascii: "Calibri", hAnsi: "Calibri", eastAsia: "SimSun", cs: "Times New Roman" },
1069
- size: 22,
1070
- sizeCs: 22,
1071
- language: { val: "en-US" }
1072
- },
1073
- paragraphProperties: {
1074
- spacing: { after: 160, line: 259, lineRule: "auto" }
1075
- }
1076
- };
1077
- s.styles.push({ type: "paragraph", styleId: "Normal", name: "Normal", isDefault: true, qFormat: true }, {
1078
- type: "paragraph",
1079
- styleId: "Heading1",
1080
- name: "heading 1",
1081
- basedOn: "Normal",
1082
- next: "Normal",
1083
- qFormat: true,
1084
- uiPriority: 9,
1085
- paragraphProperties: {
1086
- keepNext: true,
1087
- keepLines: true,
1088
- spacing: { before: 240, after: 0 }
1089
- },
1090
- runProperties: { font: "Calibri Light", color: "2F5496", size: 32 }
1091
- }, {
1092
- type: "paragraph",
1093
- styleId: "Heading2",
1094
- name: "heading 2",
1095
- basedOn: "Normal",
1096
- next: "Normal",
1097
- qFormat: true,
1098
- uiPriority: 9,
1099
- paragraphProperties: { keepNext: true, keepLines: true, spacing: { before: 40, after: 0 } },
1100
- runProperties: { font: "Calibri Light", color: "2F5496", size: 26 }
1101
- }, {
1102
- type: "paragraph",
1103
- styleId: "Heading3",
1104
- name: "heading 3",
1105
- basedOn: "Normal",
1106
- next: "Normal",
1107
- qFormat: true,
1108
- uiPriority: 9,
1109
- paragraphProperties: { keepNext: true, keepLines: true, spacing: { before: 40, after: 0 } },
1110
- runProperties: { font: "Calibri Light", color: "1F3763", size: 24 }
1111
- }, {
1112
- type: "character",
1113
- styleId: "Hyperlink",
1114
- name: "Hyperlink",
1115
- uiPriority: 99,
1116
- runProperties: { color: "0563C1", underline: "single" }
1117
- }, {
1118
- type: "table",
1119
- styleId: "TableGrid",
1120
- name: "Table Grid",
1121
- basedOn: "TableNormal",
1122
- uiPriority: 39,
1123
- tableProperties: { borders: gridBorders(4, "auto") }
1124
- });
1125
- },
1126
- /** Set a header for the given type. */
1127
- setHeader(doc, type, content) {
1128
- _toState(doc).headers.set(type, { content });
1129
- },
1130
- /** Set a footer for the given type. */
1131
- setFooter(doc, type, content) {
1132
- _toState(doc).footers.set(type, { content });
1133
- },
1134
- /** Set document settings. */
1135
- setSettings(doc, settings) {
1136
- _toState(doc).settings = settings;
1137
- },
1138
- /** Set core properties (metadata). */
1139
- setCoreProperties(doc, props) {
1140
- _toState(doc).coreProperties = props;
1141
- },
1142
- /** Set application properties. */
1143
- setAppProperties(doc, props) {
1144
- _toState(doc).appProperties = props;
1145
- },
1146
- /** Set document background. */
1147
- setBackground(doc, background) {
1148
- _toState(doc).background = background;
1149
- },
1150
- /** Add a custom document property. */
1151
- addCustomProperty(doc, name, value) {
1152
- _toState(doc).customProperties.push({ name, value });
1153
- },
1154
- /** Add a section break with properties. */
1155
- addSectionBreak(doc, props) {
1156
- const s = _toState(doc);
1157
- // Insert as the last paragraph's section properties
1158
- if (s.body.length > 0) {
1159
- const last = s.body[s.body.length - 1];
1160
- if (last.type === "paragraph") {
1161
- const existingProps = last.properties ?? {};
1162
- s.body[s.body.length - 1] = {
1163
- ...last,
1164
- properties: { ...existingProps, sectionProperties: props }
1165
- };
1166
- return;
1167
- }
1168
- }
1169
- // If no previous paragraph, add an empty one with section properties
1170
- s.body.push(paragraph([], { sectionProperties: props }));
1171
- },
1172
- /** Get next available bookmark ID. */
1173
- nextBookmarkId(doc) {
1174
- return _toState(doc).nextBookmarkId++;
1175
- },
1176
- /** Build the DocxDocument model from the handle. */
1177
- build(doc) {
1178
- const s = _toState(doc);
1179
- return {
1180
- body: s.body,
1181
- sectionProperties: s.sectionProperties ?? {
1182
- pageSize: { width: 12240, height: 15840 },
1183
- margins: { top: 1440, right: 1440, bottom: 1440, left: 1440 }
1184
- },
1185
- styles: s.styles.length > 0 ? s.styles : undefined,
1186
- docDefaults: s.docDefaults,
1187
- abstractNumberings: s.abstractNumberings.length > 0 ? s.abstractNumberings : undefined,
1188
- numberingInstances: s.numberingInstances.length > 0 ? s.numberingInstances : undefined,
1189
- headers: s.headers.size > 0 ? s.headers : undefined,
1190
- footers: s.footers.size > 0 ? s.footers : undefined,
1191
- footnotes: s.footnotes.length > 0 ? s.footnotes : undefined,
1192
- endnotes: s.endnotes.length > 0 ? s.endnotes : undefined,
1193
- images: s.images.length > 0 ? s.images : undefined,
1194
- fonts: s.fonts.length > 0 ? s.fonts : undefined,
1195
- settings: s.settings,
1196
- coreProperties: s.coreProperties,
1197
- appProperties: s.appProperties,
1198
- comments: s.comments.length > 0 ? s.comments : undefined,
1199
- background: s.background,
1200
- customProperties: s.customProperties.length > 0 ? s.customProperties : undefined,
1201
- watermark: s.watermark
1202
- };
1203
- }
1204
- };
1205
- // =============================================================================
1206
- // Theme Color Resolution (re-export from color-utils for backward compat)
1207
- // =============================================================================
1208
- var color_utils_1 = require("./color-utils");
1209
- Object.defineProperty(exports, "resolveThemeColor", { enumerable: true, get: function () { return color_utils_1.resolveThemeColor; } });
1210
- /** Extract concatenated plain text from a paragraph's runs. */
1211
- function paragraphText(para) {
1212
- let text = "";
1213
- for (const child of para.children) {
1214
- if ("content" in child && Array.isArray(child.content)) {
1215
- for (const c of child.content) {
1216
- if ("type" in c && c.type === "text" && "text" in c) {
1217
- text += c.text;
1218
- }
1219
- }
1220
- }
1221
- }
1222
- return text;
1223
- }
1224
- // =============================================================================
1225
- // Document Query API (read-only helpers)
1226
- // =============================================================================
1227
- /**
1228
- * Count all top-level paragraphs in the document body.
1229
- */
1230
- function paragraphCount(doc) {
1231
- let count = 0;
1232
- for (const block of doc.body) {
1233
- if (block.type === "paragraph") {
1234
- count++;
1235
- }
1236
- }
1237
- return count;
1238
- }
1239
- /**
1240
- * Count words across all paragraphs in the document body.
1241
- * Uses simple whitespace splitting; for East Asian text, each CJK character
1242
- * is counted as one "word" to approximate meaningful unit count.
1243
- */
1244
- function countWords(doc) {
1245
- let count = 0;
1246
- const cjkRe = /[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/g;
1247
- const walkParagraphs = (blocks) => {
1248
- for (const block of blocks) {
1249
- if (block.type === "paragraph") {
1250
- const text = paragraphText(block);
1251
- // Count CJK chars + latin word-like tokens
1252
- const cjkCount = (text.match(cjkRe) ?? []).length;
1253
- const latin = text.replace(cjkRe, " ").trim();
1254
- const latinCount = latin ? latin.split(/\s+/).length : 0;
1255
- count += cjkCount + latinCount;
1256
- }
1257
- else if (block.type === "table") {
1258
- for (const row of block.rows) {
1259
- for (const cell of row.cells) {
1260
- walkParagraphs(cell.content);
1261
- }
1262
- }
1263
- }
1264
- else if (block.type === "sdt") {
1265
- const filtered = block.content.filter(c => "type" in c && (c.type === "paragraph" || c.type === "table"));
1266
- walkParagraphs(filtered);
1267
- }
1268
- }
1269
- };
1270
- walkParagraphs(doc.body);
1271
- return count;
1272
- }
1273
- /**
1274
- * Extract the heading outline from a document.
1275
- *
1276
- * Matches paragraphs whose style is `Heading1` through `Heading9` (case-insensitive),
1277
- * or whose `outlineLevel` property is set (0-8).
1278
- */
1279
- function getHeadings(doc) {
1280
- const out = [];
1281
- doc.body.forEach((block, i) => {
1282
- if (block.type !== "paragraph") {
1283
- return;
1284
- }
1285
- const style = block.properties?.style;
1286
- const styleMatch = style ? /^Heading\s*(\d)$/i.exec(style) : null;
1287
- let level;
1288
- if (styleMatch) {
1289
- level = parseInt(styleMatch[1], 10);
1290
- }
1291
- else if (block.properties?.outlineLevel !== undefined && block.properties.outlineLevel < 9) {
1292
- level = block.properties.outlineLevel + 1;
1293
- }
1294
- if (level !== undefined && level >= 1 && level <= 9) {
1295
- out.push({
1296
- level,
1297
- text: paragraphText(block),
1298
- paragraphIndex: i,
1299
- style
1300
- });
1301
- }
1302
- });
1303
- return out;
1304
- }
1305
- /**
1306
- * Find a bookmark by name.
1307
- *
1308
- * @returns The bookmark start marker + its location, or `undefined` if not found.
1309
- */
1310
- function findBookmark(doc, name) {
1311
- for (let i = 0; i < doc.body.length; i++) {
1312
- const block = doc.body[i];
1313
- if (block.type !== "paragraph") {
1314
- continue;
1315
- }
1316
- for (let j = 0; j < block.children.length; j++) {
1317
- const ch = block.children[j];
1318
- if ("type" in ch && ch.type === "bookmarkStart" && ch.name === name) {
1319
- return { bookmark: ch, paragraphIndex: i, childIndex: j };
1320
- }
1321
- }
1322
- }
1323
- return undefined;
1324
- }
1325
- /**
1326
- * Find a comment by its ID.
1327
- */
1328
- function findComment(doc, id) {
1329
- return doc.comments?.find(c => c.id === id);
1330
- }
1331
- /**
1332
- * List all images registered in the document.
1333
- */
1334
- function listImages(doc) {
1335
- return doc.images ?? [];
1336
- }
1337
- /**
1338
- * List all tables in the document body (top-level only).
1339
- */
1340
- function listTables(doc) {
1341
- return doc.body.filter((b) => b.type === "table");
1342
- }
1343
- /**
1344
- * Collect all hyperlinks in the document body.
1345
- */
1346
- function listHyperlinks(doc) {
1347
- const out = [];
1348
- const walk = (children) => {
1349
- for (const ch of children) {
1350
- if ("type" in ch && ch.type === "hyperlink") {
1351
- out.push(ch);
1352
- walk(ch.children);
1353
- }
1354
- }
1355
- };
1356
- for (const block of doc.body) {
1357
- if (block.type === "paragraph") {
1358
- walk(block.children);
1359
- }
1360
- }
1361
- return out;
1362
- }
1363
- /**
1364
- * Get the total number of tables (top-level) and nested tables.
1365
- */
1366
- function tableCount(doc) {
1367
- let count = 0;
1368
- const walk = (blocks) => {
1369
- for (const block of blocks) {
1370
- if (block.type === "table") {
1371
- count++;
1372
- for (const row of block.rows) {
1373
- for (const cell of row.cells) {
1374
- walk(cell.content);
1375
- }
1376
- }
1377
- }
1378
- }
1379
- };
1380
- walk(doc.body);
1381
- return count;
1382
- }
1383
- /**
1384
- * Extract plain text from the entire document body.
1385
- *
1386
- * Paragraphs are separated by `\n`. Tables render as tab-separated cell text.
1387
- */
1388
- function extractText(doc) {
1389
- const lines = [];
1390
- const walk = (blocks) => {
1391
- for (const block of blocks) {
1392
- if (block.type === "paragraph") {
1393
- lines.push(paragraphText(block));
1394
- }
1395
- else if (block.type === "table") {
1396
- for (const row of block.rows) {
1397
- const cellTexts = [];
1398
- for (const cell of row.cells) {
1399
- const cellLines = [];
1400
- walk(cell.content);
1401
- // collect last paragraphs text
1402
- cellTexts.push(cellLines.join(" "));
1403
- }
1404
- lines.push(cellTexts.join("\t"));
1405
- }
1406
- }
1407
- }
1408
- };
1409
- walk(doc.body);
1410
- return lines.join("\n");
1411
- }
1412
- /**
1413
- * Search for text occurrences in a document's body paragraphs.
1414
- *
1415
- * @param doc - The document model to search.
1416
- * @param query - String or RegExp to search for.
1417
- * @returns Array of search results.
1418
- */
1419
- function searchText(doc, query) {
1420
- const results = [];
1421
- for (let i = 0; i < doc.body.length; i++) {
1422
- const block = doc.body[i];
1423
- if (block.type !== "paragraph") {
1424
- continue;
1425
- }
1426
- const text = paragraphText(block);
1427
- if (typeof query === "string") {
1428
- let idx = text.indexOf(query);
1429
- while (idx !== -1) {
1430
- results.push({ paragraphIndex: i, match: query, offset: idx });
1431
- idx = text.indexOf(query, idx + 1);
1432
- }
1433
- }
1434
- else {
1435
- const re = new RegExp(query.source, query.flags.includes("g") ? query.flags : query.flags + "g");
1436
- let m;
1437
- while ((m = re.exec(text)) !== null) {
1438
- results.push({ paragraphIndex: i, match: m[0], offset: m.index });
1439
- if (!re.global) {
1440
- break;
1441
- }
1442
- }
1443
- }
1444
- }
1445
- return results;
1446
- }
1447
- /**
1448
- * Replace text in a document's body paragraphs (mutates the document).
1449
- *
1450
- * Performs simple text replacement within run content. Each run's text content
1451
- * is individually searched and replaced. For cross-run matches, the paragraph
1452
- * text is reconstructed and split back into runs.
1453
- *
1454
- * @param doc - The document model to modify (mutated in place).
1455
- * @param search - String or RegExp to find.
1456
- * @param replacement - Replacement string (supports $1, $2 etc. for RegExp).
1457
- * @returns Number of replacements made.
1458
- */
1459
- function replaceText(doc, search, replacement) {
1460
- let count = 0;
1461
- for (const block of doc.body) {
1462
- if (block.type !== "paragraph") {
1463
- continue;
1464
- }
1465
- count += replaceInParagraph(block, search, replacement);
1466
- }
1467
- return count;
1468
- }
1469
- // =============================================================================
1470
- // Mail Merge
1471
- // =============================================================================
1472
- /** Regex to parse MERGEFIELD instruction: MERGEFIELD "FieldName" or MERGEFIELD FieldName */
1473
- const MERGEFIELD_RE = /^\s*MERGEFIELD\s+(?:"([^"]+)"|(\S+))/i;
1474
- /**
1475
- * Execute a mail merge: replace all MERGEFIELD fields in the document with values from the data map.
1476
- *
1477
- * Fields not found in the data map are left unchanged (or optionally cleared).
1478
- *
1479
- * @param doc - The document to modify (mutated in place).
1480
- * @param data - Map of field names to replacement values.
1481
- * @param options - Optional settings.
1482
- * @returns The number of fields replaced.
1483
- */
1484
- function mailMerge(doc, data, options) {
1485
- let count = 0;
1486
- const removeUnmatched = options?.removeUnmatched ?? false;
1487
- // Process body
1488
- for (const block of doc.body) {
1489
- if (block.type === "paragraph") {
1490
- count += mergeFieldsInParagraph(block, data, removeUnmatched);
1491
- }
1492
- else if (block.type === "table") {
1493
- count += mergeFieldsInTable(block, data, removeUnmatched);
1494
- }
1495
- else if (block.type === "sdt") {
1496
- for (const sdtChild of block.content) {
1497
- if ("type" in sdtChild && sdtChild.type === "paragraph") {
1498
- count += mergeFieldsInParagraph(sdtChild, data, removeUnmatched);
1499
- }
1500
- else if ("type" in sdtChild && sdtChild.type === "table") {
1501
- count += mergeFieldsInTable(sdtChild, data, removeUnmatched);
1502
- }
1503
- }
1504
- }
1505
- }
1506
- // Process headers and footers
1507
- if (doc.headers) {
1508
- for (const [, header] of doc.headers) {
1509
- count += mergeFieldsInHeaderFooter(header.content, data, removeUnmatched);
1510
- }
1511
- }
1512
- if (doc.footers) {
1513
- for (const [, footer] of doc.footers) {
1514
- count += mergeFieldsInHeaderFooter(footer.content, data, removeUnmatched);
1515
- }
1516
- }
1517
- return count;
1518
- }
1519
- function mergeFieldsInTable(table, data, removeUnmatched) {
1520
- let count = 0;
1521
- for (const row of table.rows) {
1522
- for (const cell of row.cells) {
1523
- for (const block of cell.content) {
1524
- if (block.type === "paragraph") {
1525
- count += mergeFieldsInParagraph(block, data, removeUnmatched);
1526
- }
1527
- else if (block.type === "table") {
1528
- count += mergeFieldsInTable(block, data, removeUnmatched);
1529
- }
1530
- }
1531
- }
1532
- }
1533
- return count;
1534
- }
1535
- function mergeFieldsInHeaderFooter(content, data, removeUnmatched) {
1536
- let count = 0;
1537
- for (const child of content.children) {
1538
- if (child.type === "paragraph") {
1539
- count += mergeFieldsInParagraph(child, data, removeUnmatched);
1540
- }
1541
- else if (child.type === "table") {
1542
- count += mergeFieldsInTable(child, data, removeUnmatched);
1543
- }
1544
- }
1545
- return count;
1546
- }
1547
- function mergeFieldsInParagraph(para, data, removeUnmatched) {
1548
- let count = 0;
1549
- const children = para.children;
1550
- for (let i = 0; i < children.length; i++) {
1551
- const child = children[i];
1552
- if (!("content" in child) || !Array.isArray(child.content)) {
1553
- continue;
1554
- }
1555
- const run = child;
1556
- const content = run.content;
1557
- for (let j = 0; j < content.length; j++) {
1558
- const c = content[j];
1559
- if (c.type !== "field") {
1560
- continue;
1561
- }
1562
- const match = MERGEFIELD_RE.exec(c.instruction);
1563
- if (!match) {
1564
- continue;
1565
- }
1566
- const fieldName = match[1] ?? match[2];
1567
- if (fieldName in data) {
1568
- // Replace field with text
1569
- content[j] = { type: "text", text: data[fieldName] };
1570
- count++;
1571
- }
1572
- else if (removeUnmatched) {
1573
- // Remove unmatched field
1574
- content[j] = { type: "text", text: "" };
1575
- count++;
1576
- }
1577
- }
1578
- }
1579
- return count;
1580
- }
1581
- /** Replace text within a single paragraph. */
1582
- function replaceInParagraph(para, search, replacement) {
1583
- // First try simple per-run replacement
1584
- let count = 0;
1585
- for (const child of para.children) {
1586
- if (!("content" in child) || !Array.isArray(child.content)) {
1587
- continue;
1588
- }
1589
- for (const c of child.content) {
1590
- if (!("type" in c) || c.type !== "text" || !("text" in c)) {
1591
- continue;
1592
- }
1593
- const before = c.text;
1594
- const after = typeof search === "string"
1595
- ? replaceAll(before, search, replacement)
1596
- : before.replace(search, replacement);
1597
- if (after !== before) {
1598
- c.text = after;
1599
- count += typeof search === "string" ? countOccurrences(before, search) : 1;
1600
- }
1601
- }
1602
- }
1603
- // If no per-run matches, try cross-run replacement
1604
- if (count === 0) {
1605
- const fullText = paragraphText(para);
1606
- const newText = typeof search === "string"
1607
- ? replaceAll(fullText, search, replacement)
1608
- : fullText.replace(search, replacement);
1609
- if (newText !== fullText) {
1610
- // Rebuild: put all text into first text run, clear others
1611
- let placed = false;
1612
- for (const child of para.children) {
1613
- if (!("content" in child) || !Array.isArray(child.content)) {
1614
- continue;
1615
- }
1616
- for (const c of child.content) {
1617
- if (!("type" in c) || c.type !== "text" || !("text" in c)) {
1618
- continue;
1619
- }
1620
- if (!placed) {
1621
- c.text = newText;
1622
- placed = true;
1623
- }
1624
- else {
1625
- c.text = "";
1626
- }
1627
- }
1628
- }
1629
- count = typeof search === "string" ? countOccurrences(fullText, search) : 1;
1630
- }
1631
- }
1632
- return count;
1633
- }
1634
- function replaceAll(str, search, replacement) {
1635
- if (search === "") {
1636
- return str;
1637
- }
1638
- return str.replaceAll(search, replacement);
1639
- }
1640
- function countOccurrences(str, search) {
1641
- if (search === "") {
1642
- return 0;
1643
- }
1644
- return str.split(search).length - 1;
1645
- }