@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
@@ -0,0 +1,58 @@
1
+ /**
2
+ * OpenType Text Shaping Engine
3
+ *
4
+ * Provides basic text shaping for complex scripts without external dependencies.
5
+ * Covers Arabic joining, BiDi reordering, and basic Indic/Thai features.
6
+ *
7
+ * This is not a full HarfBuzz replacement — it handles the most common shaping
8
+ * requirements for document layout and rendering:
9
+ * - Arabic contextual joining (Initial/Medial/Final/Isolated forms)
10
+ * - Unicode Bidirectional Algorithm (UAX #9) simplified implementation
11
+ * - Basic Indic vowel reordering (Devanagari, Bengali, Tamil, etc.)
12
+ * - Thai/Lao mark positioning hints
13
+ *
14
+ * @stability experimental
15
+ */
16
+ /** Script classification for a text run. */
17
+ export type ScriptType = "latin" | "arabic" | "hebrew" | "devanagari" | "bengali" | "tamil" | "thai" | "lao" | "cjk" | "hangul" | "other";
18
+ /** BiDi direction for a text segment. */
19
+ export type BiDiDirection = "ltr" | "rtl";
20
+ /** A shaped glyph cluster — the output of shaping. */
21
+ export interface ShapedCluster {
22
+ /** The original characters in this cluster. */
23
+ readonly chars: string;
24
+ /** The visual form (after joining/reordering). */
25
+ readonly visual: string;
26
+ /** Advance width multiplier (1.0 = normal, 0 = zero-width). */
27
+ readonly advanceMultiplier: number;
28
+ /** Script classification. */
29
+ readonly script: ScriptType;
30
+ /** BiDi direction. */
31
+ readonly direction: BiDiDirection;
32
+ }
33
+ /** Shaping options. */
34
+ export interface ShapingOptions {
35
+ /** Base paragraph direction. Default: "ltr". */
36
+ readonly direction?: BiDiDirection;
37
+ /** Enable Arabic joining. Default: true. */
38
+ readonly arabicJoining?: boolean;
39
+ /** Enable BiDi reordering. Default: true. */
40
+ readonly bidiReorder?: boolean;
41
+ }
42
+ /**
43
+ * Shape a text string for complex script rendering.
44
+ * Returns an array of shaped clusters in visual order.
45
+ *
46
+ * @param text - The input text in logical order.
47
+ * @param options - Shaping options.
48
+ * @returns Array of shaped clusters.
49
+ */
50
+ export declare function shapeText(text: string, options?: ShapingOptions): ShapedCluster[];
51
+ /**
52
+ * Detect the dominant script of a text string.
53
+ */
54
+ export declare function detectScript(text: string): ScriptType;
55
+ /**
56
+ * Determine the BiDi direction of a text based on its first strong character.
57
+ */
58
+ export declare function detectDirection(text: string): BiDiDirection;
@@ -0,0 +1,635 @@
1
+ /**
2
+ * OpenType Text Shaping Engine
3
+ *
4
+ * Provides basic text shaping for complex scripts without external dependencies.
5
+ * Covers Arabic joining, BiDi reordering, and basic Indic/Thai features.
6
+ *
7
+ * This is not a full HarfBuzz replacement — it handles the most common shaping
8
+ * requirements for document layout and rendering:
9
+ * - Arabic contextual joining (Initial/Medial/Final/Isolated forms)
10
+ * - Unicode Bidirectional Algorithm (UAX #9) simplified implementation
11
+ * - Basic Indic vowel reordering (Devanagari, Bengali, Tamil, etc.)
12
+ * - Thai/Lao mark positioning hints
13
+ *
14
+ * @stability experimental
15
+ */
16
+ /**
17
+ * Shape a text string for complex script rendering.
18
+ * Returns an array of shaped clusters in visual order.
19
+ *
20
+ * @param text - The input text in logical order.
21
+ * @param options - Shaping options.
22
+ * @returns Array of shaped clusters.
23
+ */
24
+ export function shapeText(text, options) {
25
+ const dir = options?.direction ?? "ltr";
26
+ const doArabic = options?.arabicJoining !== false;
27
+ const doBidi = options?.bidiReorder !== false;
28
+ // Step 1: Classify characters into script runs
29
+ const runs = classifyRuns(text);
30
+ // Step 2: Apply Arabic joining
31
+ if (doArabic) {
32
+ for (const run of runs) {
33
+ if (run.script === "arabic") {
34
+ applyArabicJoining(run);
35
+ }
36
+ }
37
+ }
38
+ // Step 3: Apply BiDi reordering
39
+ let visualRuns = runs;
40
+ if (doBidi) {
41
+ visualRuns = applyBidiReorder(runs, dir);
42
+ }
43
+ // Step 4: Flatten to clusters
44
+ const clusters = [];
45
+ for (const run of visualRuns) {
46
+ for (const cluster of run.clusters) {
47
+ clusters.push(cluster);
48
+ }
49
+ }
50
+ return clusters;
51
+ }
52
+ /**
53
+ * Detect the dominant script of a text string.
54
+ */
55
+ export function detectScript(text) {
56
+ const counts = {};
57
+ for (let i = 0; i < text.length; i++) {
58
+ const code = text.codePointAt(i);
59
+ if (code > 0xffff) {
60
+ i++;
61
+ }
62
+ const script = classifyChar(code);
63
+ counts[script] = (counts[script] ?? 0) + 1;
64
+ }
65
+ let maxScript = "latin";
66
+ let maxCount = 0;
67
+ for (const [script, count] of Object.entries(counts)) {
68
+ if (count > maxCount && script !== "other") {
69
+ maxScript = script;
70
+ maxCount = count;
71
+ }
72
+ }
73
+ return maxScript;
74
+ }
75
+ /**
76
+ * Determine the BiDi direction of a text based on its first strong character.
77
+ */
78
+ export function detectDirection(text) {
79
+ for (let i = 0; i < text.length; i++) {
80
+ const code = text.codePointAt(i);
81
+ if (code > 0xffff) {
82
+ i++;
83
+ }
84
+ const script = classifyChar(code);
85
+ if (script === "arabic" || script === "hebrew") {
86
+ return "rtl";
87
+ }
88
+ if (script === "latin" || script === "cjk" || script === "hangul") {
89
+ return "ltr";
90
+ }
91
+ }
92
+ return "ltr";
93
+ }
94
+ // =============================================================================
95
+ // Character Classification
96
+ // =============================================================================
97
+ function classifyChar(code) {
98
+ // Arabic (0600-06FF, 0750-077F, 08A0-08FF, FB50-FDFF, FE70-FEFF)
99
+ if ((code >= 0x0600 && code <= 0x06ff) ||
100
+ (code >= 0x0750 && code <= 0x077f) ||
101
+ (code >= 0x08a0 && code <= 0x08ff) ||
102
+ (code >= 0xfb50 && code <= 0xfdff) ||
103
+ (code >= 0xfe70 && code <= 0xfeff)) {
104
+ return "arabic";
105
+ }
106
+ // Hebrew (0590-05FF, FB1D-FB4F)
107
+ if ((code >= 0x0590 && code <= 0x05ff) || (code >= 0xfb1d && code <= 0xfb4f)) {
108
+ return "hebrew";
109
+ }
110
+ // Devanagari (0900-097F)
111
+ if (code >= 0x0900 && code <= 0x097f) {
112
+ return "devanagari";
113
+ }
114
+ // Bengali (0980-09FF)
115
+ if (code >= 0x0980 && code <= 0x09ff) {
116
+ return "bengali";
117
+ }
118
+ // Tamil (0B80-0BFF)
119
+ if (code >= 0x0b80 && code <= 0x0bff) {
120
+ return "tamil";
121
+ }
122
+ // Thai (0E00-0E7F)
123
+ if (code >= 0x0e00 && code <= 0x0e7f) {
124
+ return "thai";
125
+ }
126
+ // Lao (0E80-0EFF)
127
+ if (code >= 0x0e80 && code <= 0x0eff) {
128
+ return "lao";
129
+ }
130
+ // CJK
131
+ if ((code >= 0x2e80 && code <= 0x9fff) ||
132
+ (code >= 0xf900 && code <= 0xfaff) ||
133
+ (code >= 0xfe30 && code <= 0xfe4f) ||
134
+ (code >= 0xff00 && code <= 0xff60) ||
135
+ (code >= 0x20000 && code <= 0x2fa1f)) {
136
+ return "cjk";
137
+ }
138
+ // Hangul (AC00-D7AF, 1100-11FF, 3130-318F)
139
+ if ((code >= 0xac00 && code <= 0xd7af) ||
140
+ (code >= 0x1100 && code <= 0x11ff) ||
141
+ (code >= 0x3130 && code <= 0x318f)) {
142
+ return "hangul";
143
+ }
144
+ // Latin (basic + supplements + extended)
145
+ if ((code >= 0x0041 && code <= 0x024f) ||
146
+ (code >= 0x1e00 && code <= 0x1eff) ||
147
+ (code >= 0x2c60 && code <= 0x2c7f)) {
148
+ return "latin";
149
+ }
150
+ return "other";
151
+ }
152
+ function classifyRuns(text) {
153
+ const runs = [];
154
+ let currentScript = null;
155
+ let currentChars = "";
156
+ for (let i = 0; i < text.length; i++) {
157
+ const code = text.codePointAt(i);
158
+ const char = String.fromCodePoint(code);
159
+ if (code > 0xffff) {
160
+ i++;
161
+ }
162
+ const script = classifyChar(code);
163
+ // Neutral characters (spaces, punctuation) inherit surrounding script
164
+ const isNeutral = script === "other" && (code === 0x20 || (code >= 0x21 && code <= 0x2f));
165
+ if (currentScript === null || (!isNeutral && script !== currentScript)) {
166
+ if (currentChars.length > 0 && currentScript !== null) {
167
+ runs.push(makeRun(currentChars, currentScript));
168
+ }
169
+ currentScript = isNeutral ? (currentScript ?? "latin") : script;
170
+ currentChars = char;
171
+ }
172
+ else {
173
+ currentChars += char;
174
+ }
175
+ }
176
+ if (currentChars.length > 0) {
177
+ runs.push(makeRun(currentChars, currentScript ?? "latin"));
178
+ }
179
+ return runs;
180
+ }
181
+ function makeRun(text, script) {
182
+ const direction = script === "arabic" || script === "hebrew" ? "rtl" : "ltr";
183
+ const clusters = [];
184
+ // For Devanagari, apply vowel matra reordering before creating clusters
185
+ if (script === "devanagari") {
186
+ const reordered = reorderDevanagariVowels(text);
187
+ for (let i = 0; i < reordered.length; i++) {
188
+ const code = reordered.codePointAt(i);
189
+ const char = String.fromCodePoint(code);
190
+ if (code > 0xffff) {
191
+ i++;
192
+ }
193
+ clusters.push({
194
+ chars: char,
195
+ visual: char,
196
+ advanceMultiplier: 1.0,
197
+ script,
198
+ direction
199
+ });
200
+ }
201
+ return { script, direction, clusters };
202
+ }
203
+ // For RTL scripts, each character becomes a cluster
204
+ // For LTR scripts, characters form individual clusters
205
+ for (let i = 0; i < text.length; i++) {
206
+ const code = text.codePointAt(i);
207
+ const char = String.fromCodePoint(code);
208
+ if (code > 0xffff) {
209
+ i++;
210
+ }
211
+ clusters.push({
212
+ chars: char,
213
+ visual: char,
214
+ advanceMultiplier: 1.0,
215
+ script,
216
+ direction
217
+ });
218
+ }
219
+ return { script, direction, clusters };
220
+ }
221
+ // =============================================================================
222
+ // Devanagari Vowel Reordering
223
+ // =============================================================================
224
+ /** Devanagari vowel sign "i" (इ मात्रा) — visually placed before the consonant. */
225
+ const DEVANAGARI_VOWEL_I = 0x093f;
226
+ /** Devanagari consonant range: Ka (U+0915) to Ha (U+0939) + additional consonants. */
227
+ function isDevanagariConsonant(code) {
228
+ return (code >= 0x0915 && code <= 0x0939) || (code >= 0x0958 && code <= 0x095f);
229
+ }
230
+ /**
231
+ * Reorder Devanagari text so that the vowel sign "i" (U+093F) is moved
232
+ * before the consonant it modifies. In Unicode logical order, the vowel sign
233
+ * is stored after the consonant, but visually it appears before it.
234
+ *
235
+ * Example: क + ि (U+0915 U+093F) → ि + क visually (U+093F U+0915 in display order)
236
+ */
237
+ function reorderDevanagariVowels(text) {
238
+ const codePoints = [];
239
+ for (let i = 0; i < text.length; i++) {
240
+ const code = text.codePointAt(i);
241
+ codePoints.push(code);
242
+ if (code > 0xffff) {
243
+ i++;
244
+ }
245
+ }
246
+ const result = [];
247
+ for (let i = 0; i < codePoints.length; i++) {
248
+ if (codePoints[i] === DEVANAGARI_VOWEL_I && i > 0 && isDevanagariConsonant(codePoints[i - 1])) {
249
+ // Move the vowel sign "i" before the preceding consonant.
250
+ // Find the start of the consonant cluster (skip over any preceding halant+consonant sequences)
251
+ let clusterStart = result.length - 1;
252
+ // Walk back over halant+consonant pairs: ...C + halant + C + halant + C is one cluster
253
+ while (clusterStart >= 2 &&
254
+ result[clusterStart - 1] === 0x094d && // Halant (virama)
255
+ isDevanagariConsonant(result[clusterStart - 2])) {
256
+ clusterStart -= 2;
257
+ }
258
+ // Insert the vowel sign before the cluster
259
+ result.splice(clusterStart, 0, DEVANAGARI_VOWEL_I);
260
+ }
261
+ else {
262
+ result.push(codePoints[i]);
263
+ }
264
+ }
265
+ return String.fromCodePoint(...result);
266
+ }
267
+ function getArabicJoiningType(code) {
268
+ // Simplified joining type classification based on Unicode data
269
+ // Full data would come from UCD ArabicJoining.txt
270
+ // Transparent marks (0610-061A, 064B-065F, 0670, 06D6-06DC, etc.)
271
+ if ((code >= 0x0610 && code <= 0x061a) ||
272
+ (code >= 0x064b && code <= 0x065f) ||
273
+ code === 0x0670 ||
274
+ (code >= 0x06d6 && code <= 0x06dc) ||
275
+ (code >= 0x06df && code <= 0x06e4) ||
276
+ (code >= 0x06e7 && code <= 0x06e8) ||
277
+ (code >= 0x06ea && code <= 0x06ed)) {
278
+ return "T";
279
+ }
280
+ // Non-joining (e.g., numbers, some special chars)
281
+ if ((code >= 0x0600 && code <= 0x0605) ||
282
+ code === 0x0608 ||
283
+ code === 0x060b ||
284
+ code === 0x0621 // Hamza (isolated)
285
+ ) {
286
+ return "U";
287
+ }
288
+ // Right-joining: Alef variants, Dal, Thal, Ra, Zain, Waw, etc.
289
+ if (code === 0x0622 || // Alef with Madda
290
+ code === 0x0623 || // Alef with Hamza Above
291
+ code === 0x0624 || // Waw with Hamza
292
+ code === 0x0625 || // Alef with Hamza Below
293
+ code === 0x0627 || // Alef
294
+ code === 0x0629 || // Teh Marbuta
295
+ code === 0x062f || // Dal
296
+ code === 0x0630 || // Thal
297
+ code === 0x0631 || // Ra
298
+ code === 0x0632 || // Zain
299
+ code === 0x0648 || // Waw
300
+ (code >= 0x0671 && code <= 0x0673) ||
301
+ (code >= 0x0675 && code <= 0x0677) ||
302
+ code === 0x0688 || // Dal with dot
303
+ code === 0x0689 ||
304
+ code === 0x068a ||
305
+ code === 0x068b ||
306
+ code === 0x068c ||
307
+ code === 0x068d ||
308
+ code === 0x068e ||
309
+ code === 0x0691 || // Ra with dot
310
+ code === 0x0692 ||
311
+ code === 0x0693 ||
312
+ code === 0x0694 ||
313
+ code === 0x0695 ||
314
+ code === 0x0696 ||
315
+ code === 0x0697 ||
316
+ code === 0x0698 || // Jeh
317
+ code === 0x0699 ||
318
+ code === 0x06c0 ||
319
+ code === 0x06c3 || // Teh Marbuta Goal
320
+ code === 0x06c5 ||
321
+ code === 0x06c6 ||
322
+ code === 0x06c7 ||
323
+ code === 0x06c8 ||
324
+ code === 0x06c9 ||
325
+ code === 0x06cb ||
326
+ code === 0x06cd ||
327
+ code === 0x06cf ||
328
+ code === 0x06d2 ||
329
+ code === 0x06d3 ||
330
+ code === 0x06d5 ||
331
+ code === 0x06ee ||
332
+ code === 0x06ef) {
333
+ return "R";
334
+ }
335
+ // Most Arabic letters in 0626-0649 range are Dual-joining
336
+ if (code >= 0x0626 && code <= 0x064a) {
337
+ return "D";
338
+ }
339
+ // Dual-joining (default for most Arabic range)
340
+ if (code >= 0x066e && code <= 0x06d1) {
341
+ return "D";
342
+ }
343
+ // Join-causing: ZWJ
344
+ if (code === 0x200d) {
345
+ return "C";
346
+ }
347
+ return "U";
348
+ }
349
+ /**
350
+ * Apply Arabic contextual joining to a run of Arabic text.
351
+ * Determines if each character should use its Initial, Medial, Final, or Isolated form.
352
+ * Also handles mandatory Lam-Alef ligatures.
353
+ */
354
+ function applyArabicJoining(run) {
355
+ const clusters = run.clusters;
356
+ // First pass: detect and apply Lam-Alef ligatures
357
+ applyLamAlefLigatures(clusters);
358
+ const len = clusters.length;
359
+ for (let i = 0; i < len; i++) {
360
+ // Skip zero-width clusters (consumed by ligature)
361
+ if (clusters[i].advanceMultiplier === 0) {
362
+ continue;
363
+ }
364
+ const code = clusters[i].chars.codePointAt(0);
365
+ const type = getArabicJoiningType(code);
366
+ if (type === "T" || type === "U") {
367
+ // Transparent marks and non-joining don't change form
368
+ continue;
369
+ }
370
+ // Find previous and next joining characters (skip transparent and zero-width)
371
+ let prevJoins = false;
372
+ for (let j = i - 1; j >= 0; j--) {
373
+ if (clusters[j].advanceMultiplier === 0) {
374
+ continue;
375
+ }
376
+ const prevCode = clusters[j].chars.codePointAt(0);
377
+ const prevType = getArabicJoiningType(prevCode);
378
+ if (prevType === "T") {
379
+ continue;
380
+ }
381
+ prevJoins = prevType === "D" || prevType === "C";
382
+ break;
383
+ }
384
+ let nextJoins = false;
385
+ for (let j = i + 1; j < len; j++) {
386
+ if (clusters[j].advanceMultiplier === 0) {
387
+ continue;
388
+ }
389
+ const nextCode = clusters[j].chars.codePointAt(0);
390
+ const nextType = getArabicJoiningType(nextCode);
391
+ if (nextType === "T") {
392
+ continue;
393
+ }
394
+ nextJoins = nextType === "D" || nextType === "C";
395
+ break;
396
+ }
397
+ // Determine contextual form
398
+ let form;
399
+ if (type === "D") {
400
+ if (prevJoins && nextJoins) {
401
+ form = "medial";
402
+ }
403
+ else if (prevJoins) {
404
+ form = "final";
405
+ }
406
+ else if (nextJoins) {
407
+ form = "initial";
408
+ }
409
+ else {
410
+ form = "isolated";
411
+ }
412
+ }
413
+ else if (type === "R") {
414
+ if (prevJoins) {
415
+ form = "final";
416
+ }
417
+ else {
418
+ form = "isolated";
419
+ }
420
+ }
421
+ else {
422
+ form = "isolated";
423
+ }
424
+ // Get the presentation form character
425
+ const presentationForm = getArabicPresentationForm(code, form);
426
+ if (presentationForm !== code) {
427
+ clusters[i].visual = String.fromCodePoint(presentationForm);
428
+ }
429
+ }
430
+ }
431
+ // Lam-Alef ligature mappings: Alef variant → [isolated ligature, final ligature]
432
+ // prettier-ignore
433
+ const LAM_ALEF_LIGATURES = {
434
+ 0x0627: [0xfefb, 0xfefc], // Lam + Alef
435
+ 0x0622: [0xfef5, 0xfef6], // Lam + Alef with Madda Above
436
+ 0x0623: [0xfef7, 0xfef8], // Lam + Alef with Hamza Above
437
+ 0x0625: [0xfef9, 0xfefa], // Lam + Alef with Hamza Below
438
+ };
439
+ /**
440
+ * Detect Lam+Alef sequences and replace them with ligature forms.
441
+ * The Lam cluster gets the ligature glyph, and the Alef cluster is marked as zero-width.
442
+ */
443
+ function applyLamAlefLigatures(clusters) {
444
+ const len = clusters.length;
445
+ for (let i = 0; i < len - 1; i++) {
446
+ const code = clusters[i].chars.codePointAt(0);
447
+ if (code !== 0x0644) {
448
+ // Not Lam
449
+ continue;
450
+ }
451
+ // Find the next non-transparent cluster
452
+ let nextIdx = -1;
453
+ for (let j = i + 1; j < len; j++) {
454
+ const nextCode = clusters[j].chars.codePointAt(0);
455
+ const nextType = getArabicJoiningType(nextCode);
456
+ if (nextType === "T") {
457
+ continue;
458
+ }
459
+ nextIdx = j;
460
+ break;
461
+ }
462
+ if (nextIdx === -1) {
463
+ continue;
464
+ }
465
+ const nextCode = clusters[nextIdx].chars.codePointAt(0);
466
+ const ligature = LAM_ALEF_LIGATURES[nextCode];
467
+ if (!ligature) {
468
+ continue;
469
+ }
470
+ // Determine if Lam is preceded by a joining character (→ use final ligature form)
471
+ let prevJoins = false;
472
+ for (let j = i - 1; j >= 0; j--) {
473
+ const prevCode = clusters[j].chars.codePointAt(0);
474
+ const prevType = getArabicJoiningType(prevCode);
475
+ if (prevType === "T") {
476
+ continue;
477
+ }
478
+ prevJoins = prevType === "D" || prevType === "C";
479
+ break;
480
+ }
481
+ const ligatureForm = prevJoins ? ligature[1] : ligature[0];
482
+ // Replace Lam cluster with the ligature
483
+ clusters[i].chars = clusters[i].chars + clusters[nextIdx].chars;
484
+ clusters[i].visual = String.fromCodePoint(ligatureForm);
485
+ // Mark Alef cluster as consumed (zero-width)
486
+ clusters[nextIdx].visual = "";
487
+ clusters[nextIdx].advanceMultiplier = 0;
488
+ }
489
+ }
490
+ /**
491
+ * Get the Arabic presentation form for a character and joining context.
492
+ * Uses Unicode Arabic Presentation Forms-B (FE70-FEFF) mappings.
493
+ */
494
+ function getArabicPresentationForm(code, form) {
495
+ // Mapping table for common Arabic letters → presentation forms
496
+ // Each entry: [isolated, final, initial, medial]
497
+ const forms = ARABIC_FORMS[code];
498
+ if (!forms) {
499
+ return code;
500
+ }
501
+ switch (form) {
502
+ case "isolated":
503
+ return forms[0];
504
+ case "final":
505
+ return forms[1] ?? code;
506
+ case "initial":
507
+ return forms[2] ?? code;
508
+ case "medial":
509
+ return forms[3] ?? code;
510
+ default:
511
+ return code;
512
+ }
513
+ }
514
+ // Arabic Presentation Forms-B mappings (code → [isolated, final, initial, medial])
515
+ // prettier-ignore
516
+ const ARABIC_FORMS = {
517
+ // --- Basic Arabic letters (U+0621-U+064A) ---
518
+ 0x0627: [0xfe8d, 0xfe8e], // Alef
519
+ 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // Ba
520
+ 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // Ta
521
+ 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // Tha
522
+ 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // Jeem
523
+ 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // Ha
524
+ 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // Kha
525
+ 0x062f: [0xfea9, 0xfeaa], // Dal
526
+ 0x0630: [0xfeab, 0xfeac], // Thal
527
+ 0x0631: [0xfead, 0xfeae], // Ra
528
+ 0x0632: [0xfeaf, 0xfeb0], // Zain
529
+ 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // Seen
530
+ 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // Sheen
531
+ 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // Sad
532
+ 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // Dad
533
+ 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // Tah
534
+ 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // Zah
535
+ 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // Ain
536
+ 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // Ghain
537
+ 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // Fa
538
+ 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // Qaf
539
+ 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // Kaf
540
+ 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // Lam
541
+ 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // Meem
542
+ 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // Noon
543
+ 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // Ha
544
+ 0x0648: [0xfeed, 0xfeee], // Waw
545
+ 0x0649: [0xfeef, 0xfef0], // Alef Maksura
546
+ 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // Ya
547
+ 0x0622: [0xfe81, 0xfe82], // Alef Madda
548
+ 0x0623: [0xfe83, 0xfe84], // Alef Hamza Above
549
+ 0x0624: [0xfe85, 0xfe86], // Waw Hamza
550
+ 0x0625: [0xfe87, 0xfe88], // Alef Hamza Below
551
+ 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // Ya Hamza
552
+ 0x0629: [0xfe93, 0xfe94], // Teh Marbuta
553
+ // --- Extended Arabic: Persian/Urdu ---
554
+ 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // Peh (پ)
555
+ 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // Tcheh (چ)
556
+ 0x0698: [0xfb8a, 0xfb8b], // Zheh (ژ) — right-joining
557
+ 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // Gaf (گ)
558
+ // --- Extended Arabic: Kurdish ---
559
+ 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // Veh (ڤ)
560
+ 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // Kurdish Kef (ک)
561
+ // --- Additional letters ---
562
+ 0x0671: [0xfb50, 0xfb51], // Alef Wasla (ٱ) — right-joining
563
+ 0x0621: [0xfe80, 0xfe80], // Hamza (ء) — non-joining (isolated only, same form for all)
564
+ 0x06c3: [0xfb84, 0xfb85], // Teh Marbuta Goal (ة) — right-joining
565
+ };
566
+ // =============================================================================
567
+ // BiDi Reordering (Simplified UAX #9)
568
+ // =============================================================================
569
+ /**
570
+ * Apply simplified Unicode BiDi Algorithm to reorder runs for visual display.
571
+ * This handles the most common case: mixing LTR and RTL text.
572
+ */
573
+ function applyBidiReorder(runs, baseDir) {
574
+ if (runs.length <= 1) {
575
+ // Single run — just reverse if RTL
576
+ if (runs.length === 1 && runs[0].direction === "rtl") {
577
+ runs[0].clusters.reverse();
578
+ }
579
+ return runs;
580
+ }
581
+ // Assign embedding levels:
582
+ // In base LTR: LTR runs get level 0, RTL runs get level 1
583
+ // In base RTL: RTL runs get level 1, LTR runs get level 2
584
+ const levels = runs.map(run => {
585
+ if (baseDir === "ltr") {
586
+ return run.direction === "rtl" ? 1 : 0;
587
+ }
588
+ else {
589
+ return run.direction === "ltr" ? 2 : 1;
590
+ }
591
+ });
592
+ // Reverse clusters within RTL runs
593
+ for (let i = 0; i < runs.length; i++) {
594
+ if (runs[i].direction === "rtl") {
595
+ runs[i].clusters.reverse();
596
+ }
597
+ }
598
+ // Find highest level. Use an iterative max — `Math.max(...levels)`
599
+ // overflows the call stack once `levels.length` exceeds ~125k (V8's
600
+ // spread-argument limit), which is reachable for legitimately long
601
+ // RTL paragraphs.
602
+ let maxLevel = 0;
603
+ for (const lv of levels) {
604
+ if (lv > maxLevel) {
605
+ maxLevel = lv;
606
+ }
607
+ }
608
+ // Reverse sequences of runs at each level from highest to lowest
609
+ const result = [...runs];
610
+ for (let level = maxLevel; level > 0; level--) {
611
+ let i = 0;
612
+ while (i < result.length) {
613
+ if (levels[i] >= level) {
614
+ // Find the extent of this sequence at this level
615
+ let j = i + 1;
616
+ while (j < result.length && levels[j] >= level) {
617
+ j++;
618
+ }
619
+ // Reverse the segment [i, j)
620
+ const segment = result.slice(i, j);
621
+ segment.reverse();
622
+ result.splice(i, j - i, ...segment);
623
+ // Also reverse corresponding levels
624
+ const levelSeg = levels.slice(i, j);
625
+ levelSeg.reverse();
626
+ levels.splice(i, j - i, ...levelSeg);
627
+ i = j;
628
+ }
629
+ else {
630
+ i++;
631
+ }
632
+ }
633
+ }
634
+ return result;
635
+ }