@fiduswriter/document 0.1.0-alpha.3 → 0.1.0-alpha.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 (582) hide show
  1. package/README.md +22 -1
  2. package/dist/bibliography/common.d.ts +10 -0
  3. package/dist/bibliography/common.d.ts.map +1 -0
  4. package/dist/bibliography/common.js +86 -0
  5. package/dist/bibliography/common.js.map +1 -0
  6. package/dist/bibliography/csl_bib.d.ts +3 -0
  7. package/dist/bibliography/csl_bib.d.ts.map +1 -0
  8. package/dist/bibliography/csl_bib.js +131 -0
  9. package/dist/bibliography/csl_bib.js.map +1 -0
  10. package/dist/citations/citeproc_sys.d.ts +12 -0
  11. package/dist/citations/citeproc_sys.d.ts.map +1 -0
  12. package/dist/citations/citeproc_sys.js +48 -0
  13. package/dist/citations/citeproc_sys.js.map +1 -0
  14. package/dist/citations/format.d.ts +40 -0
  15. package/dist/citations/format.d.ts.map +1 -0
  16. package/dist/citations/format.js +186 -0
  17. package/dist/citations/format.js.map +1 -0
  18. package/dist/editor/e2ee/encryptor.d.ts +123 -0
  19. package/dist/editor/e2ee/encryptor.d.ts.map +1 -0
  20. package/dist/editor/e2ee/encryptor.js +201 -0
  21. package/dist/editor/e2ee/encryptor.js.map +1 -0
  22. package/dist/exporter/docx/citations.d.ts +31 -0
  23. package/dist/exporter/docx/citations.d.ts.map +1 -0
  24. package/dist/exporter/docx/citations.js +171 -0
  25. package/dist/exporter/docx/citations.js.map +1 -0
  26. package/dist/exporter/docx/comments.d.ts +22 -0
  27. package/dist/exporter/docx/comments.d.ts.map +1 -0
  28. package/dist/exporter/docx/comments.js +170 -0
  29. package/dist/exporter/docx/comments.js.map +1 -0
  30. package/dist/exporter/docx/footnotes.d.ts +47 -0
  31. package/dist/exporter/docx/footnotes.d.ts.map +1 -0
  32. package/dist/exporter/docx/footnotes.js +216 -0
  33. package/dist/exporter/docx/footnotes.js.map +1 -0
  34. package/dist/exporter/docx/images.d.ts +25 -0
  35. package/dist/exporter/docx/images.d.ts.map +1 -0
  36. package/dist/exporter/docx/images.js +101 -0
  37. package/dist/exporter/docx/images.js.map +1 -0
  38. package/dist/exporter/docx/index.d.ts +16 -0
  39. package/dist/exporter/docx/index.d.ts.map +1 -0
  40. package/dist/exporter/docx/index.js +115 -0
  41. package/dist/exporter/docx/index.js.map +1 -0
  42. package/dist/exporter/docx/lists.d.ts +38 -0
  43. package/dist/exporter/docx/lists.d.ts.map +1 -0
  44. package/dist/exporter/docx/lists.js +276 -0
  45. package/dist/exporter/docx/lists.js.map +1 -0
  46. package/dist/exporter/docx/math.d.ts +13 -0
  47. package/dist/exporter/docx/math.d.ts.map +1 -0
  48. package/dist/exporter/docx/math.js +59 -0
  49. package/dist/exporter/docx/math.js.map +1 -0
  50. package/dist/exporter/docx/metadata.d.ts +17 -0
  51. package/dist/exporter/docx/metadata.d.ts.map +1 -0
  52. package/dist/exporter/docx/metadata.js +272 -0
  53. package/dist/exporter/docx/metadata.js.map +1 -0
  54. package/dist/exporter/docx/rels.d.ts +27 -0
  55. package/dist/exporter/docx/rels.d.ts.map +1 -0
  56. package/dist/exporter/docx/rels.js +183 -0
  57. package/dist/exporter/docx/rels.js.map +1 -0
  58. package/dist/exporter/docx/render.d.ts +22 -0
  59. package/dist/exporter/docx/render.d.ts.map +1 -0
  60. package/dist/exporter/docx/render.js +780 -0
  61. package/dist/exporter/docx/render.js.map +1 -0
  62. package/dist/exporter/docx/richtext.d.ts +25 -0
  63. package/dist/exporter/docx/richtext.d.ts.map +1 -0
  64. package/dist/exporter/docx/richtext.js +1070 -0
  65. package/dist/exporter/docx/richtext.js.map +1 -0
  66. package/dist/exporter/docx/tables.d.ts +16 -0
  67. package/dist/exporter/docx/tables.d.ts.map +1 -0
  68. package/dist/exporter/docx/tables.js +115 -0
  69. package/dist/exporter/docx/tables.js.map +1 -0
  70. package/dist/exporter/docx/tools.d.ts +4 -0
  71. package/dist/exporter/docx/tools.d.ts.map +1 -0
  72. package/dist/exporter/docx/tools.js +48 -0
  73. package/dist/exporter/docx/tools.js.map +1 -0
  74. package/dist/exporter/epub/index.d.ts +19 -0
  75. package/dist/exporter/epub/index.d.ts.map +1 -0
  76. package/dist/exporter/epub/index.js +109 -0
  77. package/dist/exporter/epub/index.js.map +1 -0
  78. package/dist/exporter/epub/templates.d.ts +63 -0
  79. package/dist/exporter/epub/templates.d.ts.map +1 -0
  80. package/dist/exporter/epub/templates.js +95 -0
  81. package/dist/exporter/epub/templates.js.map +1 -0
  82. package/dist/exporter/epub/tools.d.ts +13 -0
  83. package/dist/exporter/epub/tools.d.ts.map +1 -0
  84. package/{src → dist}/exporter/epub/tools.js +32 -46
  85. package/dist/exporter/epub/tools.js.map +1 -0
  86. package/dist/exporter/html/citations.d.ts +29 -0
  87. package/dist/exporter/html/citations.d.ts.map +1 -0
  88. package/dist/exporter/html/citations.js +110 -0
  89. package/dist/exporter/html/citations.js.map +1 -0
  90. package/dist/exporter/html/convert.d.ts +50 -0
  91. package/dist/exporter/html/convert.d.ts.map +1 -0
  92. package/dist/exporter/html/convert.js +750 -0
  93. package/dist/exporter/html/convert.js.map +1 -0
  94. package/dist/exporter/html/index.d.ts +64 -0
  95. package/dist/exporter/html/index.d.ts.map +1 -0
  96. package/dist/exporter/html/index.js +154 -0
  97. package/dist/exporter/html/index.js.map +1 -0
  98. package/dist/exporter/html/templates.d.ts +24 -0
  99. package/dist/exporter/html/templates.d.ts.map +1 -0
  100. package/dist/exporter/html/templates.js +21 -0
  101. package/dist/exporter/html/templates.js.map +1 -0
  102. package/dist/exporter/html/tools.d.ts +2 -0
  103. package/dist/exporter/html/tools.d.ts.map +1 -0
  104. package/dist/exporter/html/tools.js +49 -0
  105. package/dist/exporter/html/tools.js.map +1 -0
  106. package/dist/exporter/jats/bibliography.d.ts +3 -0
  107. package/dist/exporter/jats/bibliography.d.ts.map +1 -0
  108. package/dist/exporter/jats/bibliography.js +158 -0
  109. package/dist/exporter/jats/bibliography.js.map +1 -0
  110. package/dist/exporter/jats/citations.d.ts +16 -0
  111. package/dist/exporter/jats/citations.d.ts.map +1 -0
  112. package/dist/exporter/jats/citations.js +105 -0
  113. package/dist/exporter/jats/citations.js.map +1 -0
  114. package/dist/exporter/jats/convert.d.ts +41 -0
  115. package/dist/exporter/jats/convert.d.ts.map +1 -0
  116. package/dist/exporter/jats/convert.js +816 -0
  117. package/dist/exporter/jats/convert.js.map +1 -0
  118. package/dist/exporter/jats/index.d.ts +25 -0
  119. package/dist/exporter/jats/index.d.ts.map +1 -0
  120. package/dist/exporter/jats/index.js +82 -0
  121. package/dist/exporter/jats/index.js.map +1 -0
  122. package/dist/exporter/jats/templates.d.ts +18 -0
  123. package/dist/exporter/jats/templates.d.ts.map +1 -0
  124. package/dist/exporter/jats/templates.js +25 -0
  125. package/dist/exporter/jats/templates.js.map +1 -0
  126. package/dist/exporter/jats/text.d.ts +4 -0
  127. package/dist/exporter/jats/text.d.ts.map +1 -0
  128. package/dist/exporter/jats/text.js +72 -0
  129. package/dist/exporter/jats/text.js.map +1 -0
  130. package/dist/exporter/latex/convert.d.ts +24 -0
  131. package/dist/exporter/latex/convert.d.ts.map +1 -0
  132. package/dist/exporter/latex/convert.js +881 -0
  133. package/dist/exporter/latex/convert.js.map +1 -0
  134. package/dist/exporter/latex/escape_latex.d.ts +2 -0
  135. package/dist/exporter/latex/escape_latex.d.ts.map +1 -0
  136. package/dist/exporter/latex/escape_latex.js +20 -0
  137. package/dist/exporter/latex/escape_latex.js.map +1 -0
  138. package/dist/exporter/latex/index.d.ts +24 -0
  139. package/dist/exporter/latex/index.d.ts.map +1 -0
  140. package/dist/exporter/latex/index.js +67 -0
  141. package/dist/exporter/latex/index.js.map +1 -0
  142. package/dist/exporter/latex/readme.d.ts +2 -0
  143. package/dist/exporter/latex/readme.d.ts.map +1 -0
  144. package/dist/exporter/latex/readme.js +23 -0
  145. package/dist/exporter/latex/readme.js.map +1 -0
  146. package/dist/exporter/native/copy.d.ts +30 -0
  147. package/dist/exporter/native/copy.d.ts.map +1 -0
  148. package/dist/exporter/native/copy.js +151 -0
  149. package/dist/exporter/native/copy.js.map +1 -0
  150. package/dist/exporter/native/file.d.ts +12 -0
  151. package/dist/exporter/native/file.d.ts.map +1 -0
  152. package/dist/exporter/native/file.js +38 -0
  153. package/dist/exporter/native/file.js.map +1 -0
  154. package/dist/exporter/native/index.d.ts +5 -0
  155. package/dist/exporter/native/index.d.ts.map +1 -0
  156. package/dist/exporter/native/index.js +5 -0
  157. package/dist/exporter/native/index.js.map +1 -0
  158. package/dist/exporter/native/revision.d.ts +18 -0
  159. package/dist/exporter/native/revision.d.ts.map +1 -0
  160. package/dist/exporter/native/revision.js +39 -0
  161. package/dist/exporter/native/revision.js.map +1 -0
  162. package/dist/exporter/native/shrink.d.ts +36 -0
  163. package/dist/exporter/native/shrink.d.ts.map +1 -0
  164. package/dist/exporter/native/shrink.js +124 -0
  165. package/dist/exporter/native/shrink.js.map +1 -0
  166. package/dist/exporter/native/zip.d.ts +25 -0
  167. package/dist/exporter/native/zip.d.ts.map +1 -0
  168. package/dist/exporter/native/zip.js +56 -0
  169. package/dist/exporter/native/zip.js.map +1 -0
  170. package/dist/exporter/odt/citations.d.ts +21 -0
  171. package/dist/exporter/odt/citations.d.ts.map +1 -0
  172. package/dist/exporter/odt/citations.js +104 -0
  173. package/dist/exporter/odt/citations.js.map +1 -0
  174. package/dist/exporter/odt/footnotes.d.ts +31 -0
  175. package/dist/exporter/odt/footnotes.d.ts.map +1 -0
  176. package/dist/exporter/odt/footnotes.js +129 -0
  177. package/dist/exporter/odt/footnotes.js.map +1 -0
  178. package/dist/exporter/odt/images.d.ts +25 -0
  179. package/dist/exporter/odt/images.d.ts.map +1 -0
  180. package/dist/exporter/odt/images.js +106 -0
  181. package/dist/exporter/odt/images.js.map +1 -0
  182. package/dist/exporter/odt/index.d.ts +17 -0
  183. package/dist/exporter/odt/index.d.ts.map +1 -0
  184. package/dist/exporter/odt/index.js +108 -0
  185. package/dist/exporter/odt/index.js.map +1 -0
  186. package/dist/exporter/odt/math.d.ts +15 -0
  187. package/dist/exporter/odt/math.d.ts.map +1 -0
  188. package/dist/exporter/odt/math.js +71 -0
  189. package/dist/exporter/odt/math.js.map +1 -0
  190. package/dist/exporter/odt/metadata.d.ts +18 -0
  191. package/dist/exporter/odt/metadata.d.ts.map +1 -0
  192. package/dist/exporter/odt/metadata.js +224 -0
  193. package/dist/exporter/odt/metadata.js.map +1 -0
  194. package/dist/exporter/odt/render.d.ts +26 -0
  195. package/dist/exporter/odt/render.d.ts.map +1 -0
  196. package/dist/exporter/odt/render.js +651 -0
  197. package/dist/exporter/odt/render.js.map +1 -0
  198. package/dist/exporter/odt/richtext.d.ts +22 -0
  199. package/dist/exporter/odt/richtext.d.ts.map +1 -0
  200. package/dist/exporter/odt/richtext.js +743 -0
  201. package/dist/exporter/odt/richtext.js.map +1 -0
  202. package/dist/exporter/odt/styles.d.ts +41 -0
  203. package/dist/exporter/odt/styles.d.ts.map +1 -0
  204. package/dist/exporter/odt/styles.js +370 -0
  205. package/dist/exporter/odt/styles.js.map +1 -0
  206. package/dist/exporter/odt/track.d.ts +18 -0
  207. package/dist/exporter/odt/track.d.ts.map +1 -0
  208. package/dist/exporter/odt/track.js +66 -0
  209. package/dist/exporter/odt/track.js.map +1 -0
  210. package/dist/exporter/pandoc/citations.d.ts +23 -0
  211. package/dist/exporter/pandoc/citations.d.ts.map +1 -0
  212. package/dist/exporter/pandoc/citations.js +99 -0
  213. package/dist/exporter/pandoc/citations.js.map +1 -0
  214. package/dist/exporter/pandoc/convert.d.ts +19 -0
  215. package/dist/exporter/pandoc/convert.d.ts.map +1 -0
  216. package/dist/exporter/pandoc/convert.js +886 -0
  217. package/dist/exporter/pandoc/convert.js.map +1 -0
  218. package/dist/exporter/pandoc/index.d.ts +25 -0
  219. package/dist/exporter/pandoc/index.d.ts.map +1 -0
  220. package/dist/exporter/pandoc/index.js +79 -0
  221. package/dist/exporter/pandoc/index.js.map +1 -0
  222. package/dist/exporter/pandoc/readme.d.ts +2 -0
  223. package/dist/exporter/pandoc/readme.d.ts.map +1 -0
  224. package/dist/exporter/pandoc/readme.js +8 -0
  225. package/dist/exporter/pandoc/readme.js.map +1 -0
  226. package/dist/exporter/pandoc/tools.d.ts +22 -0
  227. package/dist/exporter/pandoc/tools.d.ts.map +1 -0
  228. package/dist/exporter/pandoc/tools.js +52 -0
  229. package/dist/exporter/pandoc/tools.js.map +1 -0
  230. package/dist/exporter/print/index.d.ts +20 -0
  231. package/dist/exporter/print/index.d.ts.map +1 -0
  232. package/dist/exporter/print/index.js +142 -0
  233. package/dist/exporter/print/index.js.map +1 -0
  234. package/dist/exporter/tools/doc_content.d.ts +6 -0
  235. package/dist/exporter/tools/doc_content.d.ts.map +1 -0
  236. package/dist/exporter/tools/doc_content.js +130 -0
  237. package/dist/exporter/tools/doc_content.js.map +1 -0
  238. package/dist/exporter/tools/file.d.ts +2 -0
  239. package/dist/exporter/tools/file.d.ts.map +1 -0
  240. package/dist/exporter/tools/file.js +10 -0
  241. package/dist/exporter/tools/file.js.map +1 -0
  242. package/dist/exporter/tools/json.d.ts +7 -0
  243. package/dist/exporter/tools/json.d.ts.map +1 -0
  244. package/dist/exporter/tools/json.js +82 -0
  245. package/dist/exporter/tools/json.js.map +1 -0
  246. package/dist/exporter/tools/svg.d.ts +8 -0
  247. package/dist/exporter/tools/svg.d.ts.map +1 -0
  248. package/dist/exporter/tools/svg.js +26 -0
  249. package/dist/exporter/tools/svg.js.map +1 -0
  250. package/dist/exporter/tools/xml.d.ts +42 -0
  251. package/dist/exporter/tools/xml.d.ts.map +1 -0
  252. package/dist/exporter/tools/xml.js +467 -0
  253. package/dist/exporter/tools/xml.js.map +1 -0
  254. package/dist/exporter/tools/xml_zip.d.ts +21 -0
  255. package/dist/exporter/tools/xml_zip.d.ts.map +1 -0
  256. package/dist/exporter/tools/xml_zip.js +92 -0
  257. package/dist/exporter/tools/xml_zip.js.map +1 -0
  258. package/dist/exporter/tools/zip.d.ts +35 -0
  259. package/dist/exporter/tools/zip.d.ts.map +1 -0
  260. package/dist/exporter/tools/zip.js +78 -0
  261. package/dist/exporter/tools/zip.js.map +1 -0
  262. package/dist/exporter/tools/zotero_csl.d.ts +23 -0
  263. package/dist/exporter/tools/zotero_csl.d.ts.map +1 -0
  264. package/dist/exporter/tools/zotero_csl.js +78 -0
  265. package/dist/exporter/tools/zotero_csl.js.map +1 -0
  266. package/dist/importer/citations.d.ts +28 -0
  267. package/dist/importer/citations.d.ts.map +1 -0
  268. package/dist/importer/citations.js +68 -0
  269. package/dist/importer/citations.js.map +1 -0
  270. package/dist/importer/docx/citations.d.ts +43 -0
  271. package/dist/importer/docx/citations.d.ts.map +1 -0
  272. package/dist/importer/docx/citations.js +81 -0
  273. package/dist/importer/docx/citations.js.map +1 -0
  274. package/dist/importer/docx/convert.d.ts +150 -0
  275. package/dist/importer/docx/convert.d.ts.map +1 -0
  276. package/dist/importer/docx/convert.js +1243 -0
  277. package/dist/importer/docx/convert.js.map +1 -0
  278. package/dist/importer/docx/helpers.d.ts +2 -0
  279. package/dist/importer/docx/helpers.d.ts.map +1 -0
  280. package/dist/importer/docx/helpers.js +10 -0
  281. package/dist/importer/docx/helpers.js.map +1 -0
  282. package/dist/importer/docx/index.d.ts +27 -0
  283. package/dist/importer/docx/index.d.ts.map +1 -0
  284. package/dist/importer/docx/index.js +77 -0
  285. package/dist/importer/docx/index.js.map +1 -0
  286. package/dist/importer/docx/omml2mathml.d.ts +6 -0
  287. package/dist/importer/docx/omml2mathml.d.ts.map +1 -0
  288. package/dist/importer/docx/omml2mathml.js +1146 -0
  289. package/dist/importer/docx/omml2mathml.js.map +1 -0
  290. package/dist/importer/docx/parse.d.ts +96 -0
  291. package/dist/importer/docx/parse.d.ts.map +1 -0
  292. package/dist/importer/docx/parse.js +681 -0
  293. package/dist/importer/docx/parse.js.map +1 -0
  294. package/dist/importer/native/extract_template.d.ts +6 -0
  295. package/dist/importer/native/extract_template.d.ts.map +1 -0
  296. package/dist/importer/native/extract_template.js +80 -0
  297. package/dist/importer/native/extract_template.js.map +1 -0
  298. package/dist/importer/native/file.d.ts +37 -0
  299. package/dist/importer/native/file.d.ts.map +1 -0
  300. package/dist/importer/native/file.js +162 -0
  301. package/dist/importer/native/file.js.map +1 -0
  302. package/dist/importer/native/get_images.d.ts +21 -0
  303. package/dist/importer/native/get_images.d.ts.map +1 -0
  304. package/dist/importer/native/get_images.js +58 -0
  305. package/dist/importer/native/get_images.js.map +1 -0
  306. package/dist/importer/native/importer.d.ts +41 -0
  307. package/dist/importer/native/importer.d.ts.map +1 -0
  308. package/dist/importer/native/importer.js +170 -0
  309. package/dist/importer/native/importer.js.map +1 -0
  310. package/dist/importer/native/index.d.ts +7 -0
  311. package/dist/importer/native/index.d.ts.map +1 -0
  312. package/dist/importer/native/index.js +7 -0
  313. package/dist/importer/native/index.js.map +1 -0
  314. package/dist/importer/native/update.d.ts +7 -0
  315. package/dist/importer/native/update.d.ts.map +1 -0
  316. package/dist/importer/native/update.js +27 -0
  317. package/dist/importer/native/update.js.map +1 -0
  318. package/dist/importer/native/update_template.d.ts +12 -0
  319. package/dist/importer/native/update_template.d.ts.map +1 -0
  320. package/dist/importer/native/update_template.js +19 -0
  321. package/dist/importer/native/update_template.js.map +1 -0
  322. package/dist/importer/odt/citations.d.ts +27 -0
  323. package/dist/importer/odt/citations.d.ts.map +1 -0
  324. package/dist/importer/odt/citations.js +57 -0
  325. package/dist/importer/odt/citations.js.map +1 -0
  326. package/dist/importer/odt/convert.d.ts +146 -0
  327. package/dist/importer/odt/convert.d.ts.map +1 -0
  328. package/dist/importer/odt/convert.js +1530 -0
  329. package/dist/importer/odt/convert.js.map +1 -0
  330. package/dist/importer/odt/index.d.ts +30 -0
  331. package/dist/importer/odt/index.d.ts.map +1 -0
  332. package/dist/importer/odt/index.js +124 -0
  333. package/dist/importer/odt/index.js.map +1 -0
  334. package/dist/importer/pandoc/convert.d.ts +32 -0
  335. package/dist/importer/pandoc/convert.d.ts.map +1 -0
  336. package/dist/importer/pandoc/convert.js +790 -0
  337. package/dist/importer/pandoc/convert.js.map +1 -0
  338. package/dist/importer/pandoc/helpers.d.ts +5 -0
  339. package/dist/importer/pandoc/helpers.d.ts.map +1 -0
  340. package/dist/importer/pandoc/helpers.js +73 -0
  341. package/dist/importer/pandoc/helpers.js.map +1 -0
  342. package/dist/importer/pandoc/index.d.ts +31 -0
  343. package/dist/importer/pandoc/index.d.ts.map +1 -0
  344. package/dist/importer/pandoc/index.js +114 -0
  345. package/dist/importer/pandoc/index.js.map +1 -0
  346. package/dist/importer/registry.d.ts +21 -0
  347. package/dist/importer/registry.d.ts.map +1 -0
  348. package/dist/importer/registry.js +41 -0
  349. package/dist/importer/registry.js.map +1 -0
  350. package/dist/importer/zip_analyzer.d.ts +31 -0
  351. package/dist/importer/zip_analyzer.d.ts.map +1 -0
  352. package/dist/importer/zip_analyzer.js +89 -0
  353. package/dist/importer/zip_analyzer.js.map +1 -0
  354. package/dist/index.d.ts +2 -0
  355. package/dist/index.d.ts.map +1 -0
  356. package/dist/index.js +2 -0
  357. package/dist/index.js.map +1 -0
  358. package/dist/mathlive/opf_includes.d.ts +2 -0
  359. package/dist/mathlive/opf_includes.d.ts.map +1 -0
  360. package/dist/mathlive/opf_includes.js +25 -0
  361. package/dist/mathlive/opf_includes.js.map +1 -0
  362. package/dist/schema/common/annotate.d.ts +47 -0
  363. package/dist/schema/common/annotate.d.ts.map +1 -0
  364. package/dist/schema/common/annotate.js +75 -0
  365. package/dist/schema/common/annotate.js.map +1 -0
  366. package/dist/schema/common/base.d.ts +91 -0
  367. package/dist/schema/common/base.d.ts.map +1 -0
  368. package/dist/schema/common/base.js +109 -0
  369. package/dist/schema/common/base.js.map +1 -0
  370. package/dist/schema/common/citation.d.ts +30 -0
  371. package/dist/schema/common/citation.d.ts.map +1 -0
  372. package/dist/schema/common/citation.js +61 -0
  373. package/dist/schema/common/citation.js.map +1 -0
  374. package/dist/schema/common/equation.d.ts +17 -0
  375. package/dist/schema/common/equation.d.ts.map +1 -0
  376. package/dist/schema/common/equation.js +32 -0
  377. package/dist/schema/common/equation.js.map +1 -0
  378. package/dist/schema/common/figure.d.ts +87 -0
  379. package/dist/schema/common/figure.d.ts.map +1 -0
  380. package/dist/schema/common/figure.js +178 -0
  381. package/dist/schema/common/figure.js.map +1 -0
  382. package/dist/schema/common/heading.d.ts +9 -0
  383. package/dist/schema/common/heading.d.ts.map +1 -0
  384. package/dist/schema/common/heading.js +41 -0
  385. package/dist/schema/common/heading.js.map +1 -0
  386. package/dist/schema/common/index.d.ts +11 -0
  387. package/dist/schema/common/index.d.ts.map +1 -0
  388. package/dist/schema/common/index.js +11 -0
  389. package/dist/schema/common/index.js.map +1 -0
  390. package/dist/schema/common/list.d.ts +63 -0
  391. package/dist/schema/common/list.d.ts.map +1 -0
  392. package/dist/schema/common/list.js +92 -0
  393. package/dist/schema/common/list.js.map +1 -0
  394. package/dist/schema/common/reference.d.ts +70 -0
  395. package/dist/schema/common/reference.d.ts.map +1 -0
  396. package/dist/schema/common/reference.js +97 -0
  397. package/dist/schema/common/reference.js.map +1 -0
  398. package/dist/schema/common/table.d.ts +76 -0
  399. package/dist/schema/common/table.d.ts.map +1 -0
  400. package/dist/schema/common/table.js +86 -0
  401. package/dist/schema/common/table.js.map +1 -0
  402. package/dist/schema/common/track.d.ts +117 -0
  403. package/dist/schema/common/track.d.ts.map +1 -0
  404. package/{src → dist}/schema/common/track.js +44 -49
  405. package/dist/schema/common/track.js.map +1 -0
  406. package/dist/schema/const.d.ts +3 -0
  407. package/dist/schema/const.d.ts.map +1 -0
  408. package/{src → dist}/schema/const.js +3 -3
  409. package/dist/schema/const.js.map +1 -0
  410. package/dist/schema/convert.d.ts +3 -0
  411. package/dist/schema/convert.d.ts.map +1 -0
  412. package/dist/schema/convert.js +1215 -0
  413. package/dist/schema/convert.js.map +1 -0
  414. package/dist/schema/document/content.d.ts +110 -0
  415. package/dist/schema/document/content.d.ts.map +1 -0
  416. package/dist/schema/document/content.js +177 -0
  417. package/dist/schema/document/content.js.map +1 -0
  418. package/dist/schema/document/index.d.ts +795 -0
  419. package/dist/schema/document/index.d.ts.map +1 -0
  420. package/dist/schema/document/index.js +68 -0
  421. package/dist/schema/document/index.js.map +1 -0
  422. package/dist/schema/document/structure.d.ts +164 -0
  423. package/dist/schema/document/structure.d.ts.map +1 -0
  424. package/dist/schema/document/structure.js +445 -0
  425. package/dist/schema/document/structure.js.map +1 -0
  426. package/dist/schema/export.d.ts +7 -0
  427. package/dist/schema/export.d.ts.map +1 -0
  428. package/dist/schema/export.js +17 -0
  429. package/dist/schema/export.js.map +1 -0
  430. package/dist/schema/footnotes.d.ts +454 -0
  431. package/dist/schema/footnotes.d.ts.map +1 -0
  432. package/dist/schema/footnotes.js +90 -0
  433. package/dist/schema/footnotes.js.map +1 -0
  434. package/dist/schema/footnotes_convert.d.ts +5 -0
  435. package/dist/schema/footnotes_convert.d.ts.map +1 -0
  436. package/dist/schema/footnotes_convert.js +30 -0
  437. package/dist/schema/footnotes_convert.js.map +1 -0
  438. package/dist/schema/i18n.d.ts +55 -0
  439. package/dist/schema/i18n.d.ts.map +1 -0
  440. package/{src → dist}/schema/i18n.js +14 -23
  441. package/dist/schema/i18n.js.map +1 -0
  442. package/dist/schema/index.d.ts +6 -0
  443. package/dist/schema/index.d.ts.map +1 -0
  444. package/dist/schema/index.js +6 -0
  445. package/dist/schema/index.js.map +1 -0
  446. package/dist/schema/mini_json.d.ts +4 -0
  447. package/dist/schema/mini_json.d.ts.map +1 -0
  448. package/{src → dist}/schema/mini_json.js +19 -28
  449. package/dist/schema/mini_json.js.map +1 -0
  450. package/dist/schema/text.d.ts +3 -0
  451. package/dist/schema/text.d.ts.map +1 -0
  452. package/dist/schema/text.js +23 -0
  453. package/dist/schema/text.js.map +1 -0
  454. package/dist/types.d.ts +281 -0
  455. package/dist/types.d.ts.map +1 -0
  456. package/dist/types.js +9 -0
  457. package/dist/types.js.map +1 -0
  458. package/package.json +51 -16
  459. package/scripts/export-schema.js +1 -1
  460. package/src/bibliography/{common.js → common.ts} +15 -12
  461. package/src/bibliography/{csl_bib.js → csl_bib.ts} +16 -15
  462. package/src/citations/{citeproc_sys.js → citeproc_sys.ts} +26 -6
  463. package/src/citations/{format.js → format.ts} +80 -24
  464. package/src/editor/e2ee/{encryptor.js → encryptor.ts} +76 -44
  465. package/src/exporter/docx/{citations.js → citations.ts} +51 -23
  466. package/src/exporter/docx/{comments.js → comments.ts} +69 -26
  467. package/src/exporter/docx/{footnotes.js → footnotes.ts} +81 -42
  468. package/src/exporter/docx/images.ts +128 -0
  469. package/src/exporter/docx/{index.js → index.ts} +48 -25
  470. package/src/exporter/docx/{lists.js → lists.ts} +89 -46
  471. package/src/exporter/docx/{math.js → math.ts} +29 -9
  472. package/src/exporter/docx/{metadata.js → metadata.ts} +78 -42
  473. package/src/exporter/docx/{rels.js → rels.ts} +71 -50
  474. package/src/exporter/docx/{render.js → render.ts} +124 -87
  475. package/src/exporter/docx/{richtext.js → richtext.ts} +107 -84
  476. package/src/exporter/docx/{tables.js → tables.ts} +33 -23
  477. package/src/exporter/docx/{tools.js → tools.ts} +4 -3
  478. package/src/exporter/epub/{index.js → index.ts} +44 -15
  479. package/src/exporter/epub/{templates.js → templates.ts} +71 -7
  480. package/src/exporter/epub/tools.ts +102 -0
  481. package/src/exporter/html/{citations.js → citations.ts} +79 -31
  482. package/src/exporter/html/{convert.js → convert.ts} +118 -71
  483. package/src/exporter/html/{index.js → index.ts} +63 -29
  484. package/src/exporter/html/{templates.js → templates.ts} +22 -2
  485. package/src/exporter/html/{tools.js → tools.ts} +9 -6
  486. package/src/exporter/jats/bibliography.ts +199 -0
  487. package/src/exporter/jats/{citations.js → citations.ts} +56 -20
  488. package/src/exporter/jats/{convert.js → convert.ts} +72 -53
  489. package/src/exporter/jats/index.ts +132 -0
  490. package/src/exporter/jats/{templates.js → templates.ts} +19 -3
  491. package/src/exporter/jats/{text.js → text.ts} +8 -6
  492. package/src/exporter/latex/{convert.js → convert.ts} +160 -125
  493. package/src/exporter/latex/{escape_latex.js → escape_latex.ts} +1 -1
  494. package/src/exporter/latex/{index.js → index.ts} +27 -12
  495. package/src/exporter/latex/{readme.js → readme.ts} +2 -2
  496. package/src/exporter/native/copy.ts +231 -0
  497. package/src/exporter/native/file.ts +65 -0
  498. package/src/exporter/native/index.ts +4 -0
  499. package/src/exporter/native/revision.ts +76 -0
  500. package/src/exporter/native/{shrink.js → shrink.ts} +64 -29
  501. package/src/exporter/native/zip.ts +85 -0
  502. package/src/exporter/odt/{citations.js → citations.ts} +35 -15
  503. package/src/exporter/odt/{footnotes.js → footnotes.ts} +53 -30
  504. package/src/exporter/odt/images.ts +135 -0
  505. package/src/exporter/odt/{index.js → index.ts} +49 -27
  506. package/src/exporter/odt/{math.js → math.ts} +38 -9
  507. package/src/exporter/odt/{metadata.js → metadata.ts} +54 -29
  508. package/src/exporter/odt/{render.js → render.ts} +89 -60
  509. package/src/exporter/odt/{richtext.js → richtext.ts} +102 -72
  510. package/src/exporter/odt/{styles.js → styles.ts} +98 -66
  511. package/src/exporter/odt/{track.js → track.ts} +22 -6
  512. package/src/exporter/pandoc/{citations.js → citations.ts} +31 -15
  513. package/src/exporter/pandoc/{convert.js → convert.ts} +98 -79
  514. package/src/exporter/pandoc/{index.js → index.ts} +36 -13
  515. package/src/exporter/pandoc/{readme.js → readme.ts} +0 -1
  516. package/src/exporter/pandoc/{tools.js → tools.ts} +28 -5
  517. package/src/exporter/print/{index.js → index.ts} +38 -19
  518. package/src/exporter/tools/{doc_content.js → doc_content.ts} +34 -24
  519. package/src/exporter/tools/{file.js → file.ts} +1 -1
  520. package/src/exporter/tools/{json.js → json.ts} +30 -19
  521. package/src/exporter/tools/{svg.js → svg.ts} +9 -3
  522. package/src/exporter/tools/{xml.js → xml.ts} +187 -138
  523. package/src/exporter/tools/{xml_zip.js → xml_zip.ts} +19 -11
  524. package/src/exporter/tools/{zip.js → zip.ts} +35 -11
  525. package/src/exporter/tools/{zotero_csl.js → zotero_csl.ts} +35 -18
  526. package/src/global.d.ts +13 -0
  527. package/src/importer/citations.ts +116 -0
  528. package/src/importer/docx/{citations.js → citations.ts} +22 -37
  529. package/src/importer/docx/{convert.js → convert.ts} +176 -141
  530. package/src/importer/docx/{helpers.js → helpers.ts} +1 -1
  531. package/src/importer/docx/index.ts +124 -0
  532. package/src/importer/docx/{omml2mathml.js → omml2mathml.ts} +154 -176
  533. package/src/importer/docx/{parse.js → parse.ts} +103 -81
  534. package/src/importer/native/extract_template.ts +83 -0
  535. package/src/importer/native/file.ts +282 -0
  536. package/src/importer/native/get_images.ts +82 -0
  537. package/src/importer/native/importer.ts +244 -0
  538. package/src/importer/native/index.ts +6 -0
  539. package/src/importer/native/{update.js → update.ts} +13 -5
  540. package/src/importer/native/update_template.ts +32 -0
  541. package/src/importer/odt/{citations.js → citations.ts} +17 -29
  542. package/src/importer/odt/{convert.js → convert.ts} +261 -237
  543. package/src/importer/odt/index.ts +202 -0
  544. package/src/importer/pandoc/{convert.js → convert.ts} +116 -94
  545. package/src/importer/pandoc/{helpers.js → helpers.ts} +24 -12
  546. package/src/importer/pandoc/index.ts +171 -0
  547. package/src/importer/registry.ts +69 -0
  548. package/src/importer/{zip_analyzer.js → zip_analyzer.ts} +44 -18
  549. package/src/mathlive/{opf_includes.js → opf_includes.ts} +1 -1
  550. package/src/modules.d.ts +40 -0
  551. package/src/schema/common/{annotate.js → annotate.ts} +10 -8
  552. package/src/schema/common/{base.js → base.ts} +12 -10
  553. package/src/schema/common/{citation.js → citation.ts} +17 -8
  554. package/src/schema/common/{equation.js → equation.ts} +6 -4
  555. package/src/schema/common/{figure.js → figure.ts} +43 -23
  556. package/src/schema/common/{heading.js → heading.ts} +7 -5
  557. package/src/schema/common/{list.js → list.ts} +15 -13
  558. package/src/schema/common/{reference.js → reference.ts} +14 -12
  559. package/src/schema/common/{table.js → table.ts} +16 -14
  560. package/src/schema/common/track.ts +201 -0
  561. package/src/schema/const.ts +58 -0
  562. package/src/schema/{convert.js → convert.ts} +6 -2
  563. package/src/schema/document/{content.js → content.ts} +22 -20
  564. package/src/schema/document/{structure.js → structure.ts} +15 -9
  565. package/src/schema/{export.js → export.ts} +4 -2
  566. package/src/schema/{footnotes.js → footnotes.ts} +11 -8
  567. package/src/schema/{footnotes_convert.js → footnotes_convert.ts} +11 -8
  568. package/src/schema/i18n.ts +601 -0
  569. package/src/schema/mini_json.ts +60 -0
  570. package/src/schema/{text.js → text.ts} +6 -2
  571. package/src/types.ts +314 -0
  572. package/jest.config.js +0 -24
  573. package/src/exporter/docx/images.js +0 -101
  574. package/src/exporter/jats/bibliography.js +0 -183
  575. package/src/exporter/jats/index.js +0 -92
  576. package/src/exporter/odt/images.js +0 -115
  577. package/src/importer/citations.js +0 -129
  578. package/src/importer/native/get_images.js +0 -76
  579. /package/src/{index.js → index.ts} +0 -0
  580. /package/src/schema/common/{index.js → index.ts} +0 -0
  581. /package/src/schema/document/{index.js → index.ts} +0 -0
  582. /package/src/schema/{index.js → index.ts} +0 -0
@@ -0,0 +1,1146 @@
1
+ // Converted version of https://github.com/scienceai/omml2mathml/blob/master/index.js
2
+ // that works with our xml dom.
3
+ import { xmlDOM } from "../../exporter/tools/xml.js";
4
+ const MATH_NS = "http://www.w3.org/1998/Math/MathML";
5
+ // Regular expression matching mathematical operators
6
+ const oprx = /[\+\-\*\/\^\&\|\!\~\<\>\=\:\u2208\u2209\u220B\u220C\u2218\u2219\u221D\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222A\u222B\u222C\u222D\u2234\u2235\u2236\u2237\u2238\u2239\u223A\u223B\u223C\u223D\u223E\u223F\u2240\u2241\u2242\u2243\u2244\u2245\u2246\u2247\u2248\u2249\u224A\u224B\u224C\u224D\u224E\u224F\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225A\u225B\u225C\u225D\u225E\u225F\u2260\u2261\u2262\u2263\u2264\u2265\u2266\u2267\u2268\u2269\u226A\u226B\u226C\u226D\u226E\u226F\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227A\u227B\u227C\u227D\u227E\u227F\u2280\u2281\u2282\u2283\u2284\u2285\u2286\u2287\u2288\u2289\u228A\u228B\u228C\u228D\u228E\u228F\u2290\u2291\u2292\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229A\u229B\u229C\u229D\u229E\u229F\u22A0\u22A1\u22A2\u22A3\u22A4\u22A5\u22A6\u22A7\u22A8\u22A9\u22AA\u22AB\u22AC\u22AD\u22AE\u22AF\u22B0\u22B1\u22B2\u22B3\u22B4\u22B5\u22B6\u22B7\u22B8\u22B9\u22BA\u22BB\u22BC\u22BD\u22C0\u22C1\u22C2\u22C3\u22C4\u22C5\u22C6\u22C7\u22C8\u22C9\u22CA\u22CB\u22CC\u22CD\u22CE\u22CF\u22D0\u22D1\u22D2\u22D3\u22D4\u22D5\u22D6\u22D7\u22D8\u22D9\u22DA\u22DB\u22DC\u22DD\u22DE\u22DF\u22E0\u22E1\u22E2\u22E3\u22E4\u22E5\u22E6\u22E7\u22E8\u22E9\u22EA\u22EB\u22EC\u22ED\u22EE\u22EF\u22F0\u22F1\u22F2\u22F3\u22F4\u22F5\u22F6\u22F7\u22F8\u22F9\u22FA\u22FB\u22FC\u22FD\u22FE\u22FF]/;
7
+ /**
8
+ * Converts OMML to MathML
9
+ */
10
+ export function omml2mathml(omml) {
11
+ // Create the root math element
12
+ const math = xmlDOM(`<math xmlns="${MATH_NS}" display="inline"></math>`);
13
+ // Process the OMML document
14
+ processOMML(omml, math);
15
+ return math;
16
+ }
17
+ /**
18
+ * Process the OMML document and convert to MathML
19
+ */
20
+ function processOMML(omml, math) {
21
+ // Handle different OMML elements
22
+ if (omml.tagName === "m:oMathPara") {
23
+ math.setAttribute("display", "block");
24
+ omml.queryAll("m:oMath").forEach((omath) => {
25
+ processOMML(omath, math);
26
+ });
27
+ }
28
+ else if (omml.tagName === "m:oMath") {
29
+ const mrow = createMathElement("mrow", {}, math);
30
+ processChildren(omml, mrow);
31
+ }
32
+ else {
33
+ processElement(omml, math);
34
+ }
35
+ }
36
+ /**
37
+ * Process an OMML element and create corresponding MathML
38
+ */
39
+ function processElement(element, parent) {
40
+ if (!element || !element.tagName) {
41
+ return;
42
+ }
43
+ switch (element.tagName) {
44
+ case "m:f":
45
+ processFraction(element, parent);
46
+ break;
47
+ case "m:r":
48
+ processRun(element, parent);
49
+ break;
50
+ case "m:limLow":
51
+ processLimLow(element, parent);
52
+ break;
53
+ case "m:limUpp":
54
+ processLimUpp(element, parent);
55
+ break;
56
+ case "m:sSub":
57
+ processSubscript(element, parent);
58
+ break;
59
+ case "m:sSup":
60
+ processSuperscript(element, parent);
61
+ break;
62
+ case "m:sSubSup":
63
+ processSubSuperscript(element, parent);
64
+ break;
65
+ case "m:sPre":
66
+ processPreScript(element, parent);
67
+ break;
68
+ case "m:m":
69
+ processMatrix(element, parent);
70
+ break;
71
+ case "m:rad":
72
+ processRadical(element, parent);
73
+ break;
74
+ case "m:nary":
75
+ processNary(element, parent);
76
+ break;
77
+ case "m:d":
78
+ processDelimiter(element, parent);
79
+ break;
80
+ case "m:eqArr":
81
+ processEqArr(element, parent);
82
+ break;
83
+ case "m:func":
84
+ processFunction(element, parent);
85
+ break;
86
+ case "m:acc":
87
+ processAccent(element, parent);
88
+ break;
89
+ case "m:groupChr":
90
+ processGroupChar(element, parent);
91
+ break;
92
+ case "m:borderBox":
93
+ processBorderBox(element, parent);
94
+ break;
95
+ case "m:bar":
96
+ processBar(element, parent);
97
+ break;
98
+ case "m:phant":
99
+ processPhantom(element, parent);
100
+ break;
101
+ case "m:e":
102
+ case "m:den":
103
+ case "m:num":
104
+ case "m:lim":
105
+ case "m:sup":
106
+ case "m:sub":
107
+ processArgument(element, parent);
108
+ break;
109
+ default:
110
+ // Process children for unhandled elements
111
+ processChildren(element, parent);
112
+ }
113
+ }
114
+ /**
115
+ * Process all children of an element
116
+ */
117
+ function processChildren(element, parent) {
118
+ if (!element || !element.children) {
119
+ return;
120
+ }
121
+ element.children.forEach((child) => {
122
+ if (typeof child === "object") {
123
+ processElement(child, parent);
124
+ }
125
+ });
126
+ }
127
+ /**
128
+ * Create a MathML element with specified attributes
129
+ */
130
+ function createMathElement(tag, attrs = {}, parent = null) {
131
+ const elem = xmlDOM(`<${tag}></${tag}>`);
132
+ // Set attributes
133
+ Object.entries(attrs).forEach(([key, value]) => {
134
+ if (value !== undefined && value !== "") {
135
+ elem.setAttribute(key, value);
136
+ }
137
+ });
138
+ if (parent) {
139
+ parent.appendChild(elem);
140
+ }
141
+ return elem;
142
+ }
143
+ /**
144
+ * Process a fraction element
145
+ */
146
+ function processFraction(element, parent) {
147
+ const type = getAttr(element, "m:fPr/m:type", "m:val") || "";
148
+ if (type.toLowerCase() === "lin") {
149
+ const mrow = createMathElement("mrow", {}, parent);
150
+ const numRow = createMathElement("mrow", {}, mrow);
151
+ const num = element.query("m:num");
152
+ if (num) {
153
+ processElement(num, numRow);
154
+ }
155
+ const mo = createMathElement("mo", {}, mrow);
156
+ mo.textContent = "/";
157
+ const denRow = createMathElement("mrow", {}, mrow);
158
+ const den = element.query("m:den");
159
+ if (den) {
160
+ processElement(den, denRow);
161
+ }
162
+ }
163
+ else {
164
+ const attr = getFracProps(type.toLowerCase());
165
+ const mfrac = createMathElement("mfrac", attr, parent);
166
+ const numRow = createMathElement("mrow", {}, mfrac);
167
+ const num = element.query("m:num");
168
+ if (num) {
169
+ processElement(num, numRow);
170
+ }
171
+ const denRow = createMathElement("mrow", {}, mfrac);
172
+ const den = element.query("m:den");
173
+ if (den) {
174
+ processElement(den, denRow);
175
+ }
176
+ }
177
+ }
178
+ /**
179
+ * Process a run of text
180
+ */
181
+ function processRun(element, parent) {
182
+ const nor = forceFalse(getAttr(element, "m:rPr/m:nor", "m:val") || "false");
183
+ if (nor) {
184
+ const mtext = createMathElement("mtext", {}, parent);
185
+ const textContent = element
186
+ .queryAll("m:t")
187
+ .map((t) => t.textContent)
188
+ .join("");
189
+ mtext.textContent = nbsp(textContent);
190
+ }
191
+ else {
192
+ element.queryAll("m:t").forEach((t) => {
193
+ const toParse = t.textContent;
194
+ const scr = getAttr(element, "m:rPr/m:scr", "m:val");
195
+ const sty = getAttr(element, "m:rPr/m:sty", "m:val");
196
+ parseMT(element, parent, {
197
+ toParse,
198
+ scr,
199
+ sty,
200
+ nor: false
201
+ });
202
+ });
203
+ }
204
+ }
205
+ /**
206
+ * Process a lower limit element
207
+ */
208
+ function processLimLow(element, parent) {
209
+ const munder = createMathElement("munder", {}, parent);
210
+ const row1 = createMathElement("mrow", {}, munder);
211
+ const row2 = createMathElement("mrow", {}, munder);
212
+ const e = element.query("m:e");
213
+ if (e) {
214
+ processElement(e, row1);
215
+ }
216
+ const lim = element.query("m:lim");
217
+ if (lim) {
218
+ processElement(lim, row2);
219
+ }
220
+ }
221
+ /**
222
+ * Process an upper limit element
223
+ */
224
+ function processLimUpp(element, parent) {
225
+ const mover = createMathElement("mover", {}, parent);
226
+ const row1 = createMathElement("mrow", {}, mover);
227
+ const row2 = createMathElement("mrow", {}, mover);
228
+ const e = element.query("m:e");
229
+ if (e) {
230
+ processElement(e, row1);
231
+ }
232
+ const lim = element.query("m:lim");
233
+ if (lim) {
234
+ processElement(lim, row2);
235
+ }
236
+ }
237
+ /**
238
+ * Process a subscript element
239
+ */
240
+ function processSubscript(element, parent) {
241
+ const msub = createMathElement("msub", {}, parent);
242
+ const row1 = createMathElement("mrow", {}, msub);
243
+ const row2 = createMathElement("mrow", {}, msub);
244
+ const e = element.query("m:e");
245
+ if (e) {
246
+ processElement(e, row1);
247
+ }
248
+ const sub = element.query("m:sub");
249
+ if (sub) {
250
+ processElement(sub, row2);
251
+ }
252
+ }
253
+ /**
254
+ * Process a superscript element
255
+ */
256
+ function processSuperscript(element, parent) {
257
+ const msup = createMathElement("msup", {}, parent);
258
+ const row1 = createMathElement("mrow", {}, msup);
259
+ const row2 = createMathElement("mrow", {}, msup);
260
+ const e = element.query("m:e");
261
+ if (e) {
262
+ processElement(e, row1);
263
+ }
264
+ const sup = element.query("m:sup");
265
+ if (sup) {
266
+ processElement(sup, row2);
267
+ }
268
+ }
269
+ /**
270
+ * Process a subscript-superscript element
271
+ */
272
+ function processSubSuperscript(element, parent) {
273
+ const msubsup = createMathElement("msubsup", {}, parent);
274
+ const row1 = createMathElement("mrow", {}, msubsup);
275
+ const row2 = createMathElement("mrow", {}, msubsup);
276
+ const row3 = createMathElement("mrow", {}, msubsup);
277
+ const e = element.query("m:e");
278
+ if (e) {
279
+ processElement(e, row1);
280
+ }
281
+ const sub = element.query("m:sub");
282
+ if (sub) {
283
+ processElement(sub, row2);
284
+ }
285
+ const sup = element.query("m:sup");
286
+ if (sup) {
287
+ processElement(sup, row3);
288
+ }
289
+ }
290
+ /**
291
+ * Process a prescripted element
292
+ */
293
+ function processPreScript(element, parent) {
294
+ const mmultiscripts = createMathElement("mmultiscripts", {}, parent);
295
+ const row = createMathElement("mrow", {}, mmultiscripts);
296
+ const e = element.query("m:e");
297
+ if (e) {
298
+ processElement(e, row);
299
+ }
300
+ createMathElement("mprescripts", {}, mmultiscripts);
301
+ const sub = element.query("m:sub");
302
+ outputScript(mmultiscripts, sub);
303
+ const sup = element.query("m:sup");
304
+ outputScript(mmultiscripts, sup);
305
+ }
306
+ /**
307
+ * Process a matrix element
308
+ */
309
+ function processMatrix(element, parent) {
310
+ const mcjc = getAttr(element, "m:mPr/m:mcs/m:mc/m:mcPr/m:mcJc", "m:val");
311
+ const attrs = {};
312
+ if (mcjc && mcjc.toLowerCase() !== "center") {
313
+ attrs.columnalign = mcjc.toLowerCase();
314
+ }
315
+ const mtable = createMathElement("mtable", attrs, parent);
316
+ element.queryAll("m:mr").forEach((mr) => {
317
+ const mtr = createMathElement("mtr", {}, mtable);
318
+ mr.queryAll("m:e").forEach((me) => {
319
+ const mtd = createMathElement("mtd", {}, mtr);
320
+ processElement(me, mtd);
321
+ });
322
+ });
323
+ }
324
+ /**
325
+ * Process a radical element
326
+ */
327
+ function processRadical(element, parent) {
328
+ const degHide = forceFalse(getAttr(element, "m:radPr/m:degHide", "m:val") || "false");
329
+ if (degHide) {
330
+ const msqrt = createMathElement("msqrt", {}, parent);
331
+ const e = element.query("m:e");
332
+ if (e) {
333
+ processElement(e, msqrt);
334
+ }
335
+ }
336
+ else {
337
+ const mroot = createMathElement("mroot", {}, parent);
338
+ const row1 = createMathElement("mrow", {}, mroot);
339
+ const row2 = createMathElement("mrow", {}, mroot);
340
+ const e = element.query("m:e");
341
+ if (e) {
342
+ processElement(e, row1);
343
+ }
344
+ const deg = element.query("m:deg");
345
+ if (deg) {
346
+ processElement(deg, row2);
347
+ }
348
+ }
349
+ }
350
+ /**
351
+ * Process an n-ary operator element
352
+ */
353
+ function processNary(element, parent) {
354
+ const subHide = forceFalse(getAttr(element, "m:naryPr/m:subHide", "m:val") || "false");
355
+ const supHide = forceFalse(getAttr(element, "m:naryPr/m:supHide", "m:val") || "false");
356
+ const limLocSubSup = (getAttr(element, "m:naryPr/m:limLoc", "m:val") || "").toLowerCase() ===
357
+ "" ||
358
+ (getAttr(element, "m:naryPr/m:limLoc", "m:val") || "").toLowerCase() ===
359
+ "subsup";
360
+ const grow = forceFalse(getAttr(element, "m:naryPr/m:grow", "m:val") || "false");
361
+ const mrow = createMathElement("mrow", {}, parent);
362
+ if (supHide && subHide) {
363
+ outputNAryMO(element, mrow, grow);
364
+ }
365
+ else if (subHide) {
366
+ const outer = createMathElement(limLocSubSup ? "msup" : "mover", {}, mrow);
367
+ outputNAryMO(element, outer, grow);
368
+ const suprow = createMathElement("mrow", {}, outer);
369
+ const sup = element.query("m:sup");
370
+ if (sup) {
371
+ processElement(sup, suprow);
372
+ }
373
+ }
374
+ else if (supHide) {
375
+ const outer = createMathElement(limLocSubSup ? "msub" : "munder", {}, mrow);
376
+ outputNAryMO(element, outer, grow);
377
+ const subrow = createMathElement("mrow", {}, outer);
378
+ const sub = element.query("m:sub");
379
+ if (sub) {
380
+ processElement(sub, subrow);
381
+ }
382
+ }
383
+ else {
384
+ const outer = createMathElement(limLocSubSup ? "msubsup" : "munderover", {}, mrow);
385
+ outputNAryMO(element, outer, grow);
386
+ const subrow1 = createMathElement("mrow", {}, outer);
387
+ const sub = element.query("m:sub");
388
+ if (sub) {
389
+ processElement(sub, subrow1);
390
+ }
391
+ const subrow2 = createMathElement("mrow", {}, outer);
392
+ const sup = element.query("m:sup");
393
+ if (sup) {
394
+ processElement(sup, subrow2);
395
+ }
396
+ }
397
+ const erow = createMathElement("mrow", {}, mrow);
398
+ const e = element.query("m:e");
399
+ if (e) {
400
+ processElement(e, erow);
401
+ }
402
+ }
403
+ /**
404
+ * Process a delimiter element
405
+ */
406
+ function processDelimiter(element, parent) {
407
+ const begChr = getAttr(element, "m:dPr/m:begChr", "m:val");
408
+ const endChr = getAttr(element, "m:dPr/m:endChr", "m:val");
409
+ const sepChr = getAttr(element, "m:dPr/m:sepChr", "m:val") || "|";
410
+ const attr = {};
411
+ if (begChr !== undefined && begChr !== "(") {
412
+ attr.open = begChr;
413
+ }
414
+ if (endChr !== undefined && endChr !== ")") {
415
+ attr.close = endChr;
416
+ }
417
+ if (sepChr !== ",") {
418
+ attr.separators = sepChr;
419
+ }
420
+ const mfenced = createMathElement("mfenced", attr, parent);
421
+ element.queryAll("m:e").forEach((me) => {
422
+ const row = createMathElement("mrow", {}, mfenced);
423
+ processElement(me, row);
424
+ });
425
+ }
426
+ /**
427
+ * Process an equation array element
428
+ */
429
+ function processEqArr(element, parent) {
430
+ const mtable = createMathElement("mtable", {}, parent);
431
+ element.queryAll("m:e").forEach((me) => {
432
+ const mtr = createMathElement("mtr", {}, mtable);
433
+ const mtd = createMathElement("mtd", {}, mtr);
434
+ const scrLvl = getAttr(me, "m:argPr/m:scrLvl", "m:val");
435
+ const outer = scrLvl !== "0" && scrLvl
436
+ ? createMathElement("mrow", {}, mtd)
437
+ : createMathElement("mstyle", { scriptlevel: scrLvl }, mtd);
438
+ createMathElement("maligngroup", {}, outer);
439
+ const firstChild = me.children[0];
440
+ if (firstChild) {
441
+ createEqArrRow(outer, element, firstChild, 1);
442
+ }
443
+ });
444
+ }
445
+ /**
446
+ * Process a function element
447
+ */
448
+ function processFunction(element, parent) {
449
+ const outer = createMathElement("mrow", {}, parent);
450
+ const row1 = createMathElement("mrow", {}, outer);
451
+ element.queryAll("m:fName").forEach((fn) => {
452
+ processElement(fn, row1);
453
+ });
454
+ const mo = createMathElement("mo", {}, outer);
455
+ mo.textContent = "\u2061"; // Function application
456
+ const row2 = createMathElement("mrow", {}, outer);
457
+ const e = element.query("m:e");
458
+ if (e) {
459
+ processElement(e, row2);
460
+ }
461
+ }
462
+ /**
463
+ * Process an accent element
464
+ */
465
+ function processAccent(element, parent) {
466
+ const mover = createMathElement("mover", { accent: "true" }, parent);
467
+ const row = createMathElement("mrow", {}, mover);
468
+ const e = element.query("m:e");
469
+ if (e) {
470
+ processElement(e, row);
471
+ }
472
+ const acc = (getAttr(element, "m:accPr/m:chr", "m:val") || "\u0302").substr(0, 1);
473
+ const nonComb = toNonCombining(acc);
474
+ if (acc.length === 0) {
475
+ createMathElement("mo", {}, mover);
476
+ }
477
+ else {
478
+ const nor = forceFalse(getAttr(element, "m:rPr/m:nor", "m:val") || "false");
479
+ parseMT(element, mover, {
480
+ toParse: nonComb,
481
+ scr: getAttr(element, "m:e/*/m:rPr/m:scr", "m:val"),
482
+ sty: getAttr(element, "m:e/*/m:rPr/m:sty", "m:val"),
483
+ nor
484
+ });
485
+ }
486
+ }
487
+ /**
488
+ * Process a group character element
489
+ */
490
+ function processGroupChar(element, parent) {
491
+ const lastGroupChrPr = element.query("m:groupChrPr");
492
+ if (!lastGroupChrPr) {
493
+ return;
494
+ }
495
+ const pos = (getAttr(lastGroupChrPr, "m:pos", "m:val") || "").toLowerCase();
496
+ const vertJc = (getAttr(lastGroupChrPr, "m:vertJc", "m:val") || "").toLowerCase();
497
+ const chr = getAttr(lastGroupChrPr, "m:chr", "m:val") || "\u23DF";
498
+ const mkMrow = (p) => {
499
+ const mrow = createMathElement("mrow", {}, p);
500
+ const e = element.query("m:e");
501
+ if (e) {
502
+ processElement(e, mrow);
503
+ }
504
+ return mrow;
505
+ };
506
+ const mkMo = (p) => {
507
+ const mo = createMathElement("mo", {}, p);
508
+ mo.textContent = chr.substr(0, 1);
509
+ return mo;
510
+ };
511
+ if (pos === "top") {
512
+ if (vertJc === "bot") {
513
+ const outer = createMathElement("mover", { accent: "false" }, parent);
514
+ mkMrow(outer);
515
+ mkMo(outer);
516
+ }
517
+ else {
518
+ const outer = createMathElement("munder", { accentunder: "false" }, parent);
519
+ mkMo(outer);
520
+ mkMrow(outer);
521
+ }
522
+ }
523
+ else {
524
+ if (vertJc === "bot") {
525
+ const outer = createMathElement("mover", { accent: "false" }, parent);
526
+ mkMo(outer);
527
+ mkMrow(outer);
528
+ }
529
+ else {
530
+ const outer = createMathElement("munder", { accentunder: "false" }, parent);
531
+ mkMrow(outer);
532
+ mkMo(outer);
533
+ }
534
+ }
535
+ }
536
+ /**
537
+ * Process a border box element
538
+ */
539
+ function processBorderBox(element, parent) {
540
+ const hideTop = forceTrue(getAttr(element, "m:borderBoxPr/m:hideTop", "m:val") || "false");
541
+ const hideBot = forceTrue(getAttr(element, "m:borderBoxPr/m:hideBot", "m:val") || "false");
542
+ const hideLeft = forceTrue(getAttr(element, "m:borderBoxPr/m:hideLeft", "m:val") || "false");
543
+ const hideRight = forceTrue(getAttr(element, "m:borderBoxPr/m:hideRight", "m:val") || "false");
544
+ const strikeH = forceTrue(getAttr(element, "m:borderBoxPr/m:strikeH", "m:val") || "false");
545
+ const strikeV = forceTrue(getAttr(element, "m:borderBoxPr/m:strikeV", "m:val") || "false");
546
+ const strikeBLTR = forceTrue(getAttr(element, "m:borderBoxPr/m:strikeBLTR", "m:val") || "false");
547
+ const strikeTLBR = forceTrue(getAttr(element, "m:borderBoxPr/m:strikeTLBR", "m:val") || "false");
548
+ let outer;
549
+ if (hideTop &&
550
+ hideBot &&
551
+ hideLeft &&
552
+ hideRight &&
553
+ !strikeH &&
554
+ !strikeV &&
555
+ !strikeBLTR &&
556
+ !strikeTLBR) {
557
+ outer = createMathElement("mrow", {}, parent);
558
+ }
559
+ else {
560
+ const notation = createMEnclodeNotation({
561
+ hideTop,
562
+ hideBot,
563
+ hideLeft,
564
+ hideRight,
565
+ strikeH,
566
+ strikeV,
567
+ strikeBLTR,
568
+ strikeTLBR
569
+ });
570
+ outer = createMathElement("menclose", notation, parent);
571
+ }
572
+ const e = element.query("m:e");
573
+ if (e) {
574
+ processElement(e, outer);
575
+ }
576
+ }
577
+ /**
578
+ * Process a bar element
579
+ */
580
+ function processBar(element, parent) {
581
+ const pos = (getAttr(element, "m:barPr/m:pos", "m:val") || "").toLowerCase();
582
+ if (pos === "top") {
583
+ const outer = createMathElement("mover", { accent: "false" }, parent);
584
+ const row = createMathElement("mrow", {}, outer);
585
+ const mo = createMathElement("mo", {}, outer);
586
+ const e = element.query("m:e");
587
+ if (e) {
588
+ processElement(e, row);
589
+ }
590
+ mo.textContent = "\u00af"; // Macron
591
+ }
592
+ else {
593
+ const outer = createMathElement("munder", { underaccent: "false" }, parent);
594
+ const row = createMathElement("mrow", {}, outer);
595
+ const mo = createMathElement("mo", {}, outer);
596
+ const e = element.query("m:e");
597
+ if (e) {
598
+ processElement(e, row);
599
+ }
600
+ mo.textContent = "\u005f"; // Underscore
601
+ }
602
+ }
603
+ /**
604
+ * Process a phantom element
605
+ */
606
+ function processPhantom(element, parent) {
607
+ const zeroWid = forceFalse(getAttr(element, "m:phantPr/m:zeroWid", "m:val") || "false");
608
+ const zeroAsc = forceFalse(getAttr(element, "m:phantPr/m:zeroAsc", "m:val") || "false");
609
+ const zeroDesc = forceFalse(getAttr(element, "m:phantPr/m:zeroDesc", "m:val") || "false");
610
+ const showVal = forceFalse(getAttr(element, "m:phantPr/m:show", "m:val") || "false");
611
+ let container;
612
+ if (showVal) {
613
+ container = createMathElement("mpadded", createMPaddedAttr({ zeroWid, zeroAsc, zeroDesc }), parent);
614
+ }
615
+ else if (!zeroWid && !zeroAsc && !zeroDesc) {
616
+ container = createMathElement("mphantom", {}, parent);
617
+ }
618
+ else {
619
+ const phant = createMathElement("mphantom", {}, parent);
620
+ container = createMathElement("mpadded", createMPaddedAttr({ zeroWid, zeroAsc, zeroDesc }), phant);
621
+ }
622
+ const row = createMathElement("mrow", {}, container);
623
+ const e = element.query("m:e");
624
+ if (e) {
625
+ processElement(e, row);
626
+ }
627
+ }
628
+ /**
629
+ * Process an argument element
630
+ */
631
+ function processArgument(element, parent) {
632
+ const scriptlevel = getAttr(element, "m:argPr/m:scrLvl", "m:val");
633
+ if (!scriptlevel) {
634
+ processChildren(element, parent);
635
+ }
636
+ else {
637
+ const style = createMathElement("mstyle", { scriptlevel }, parent);
638
+ processChildren(element, style);
639
+ }
640
+ }
641
+ /**
642
+ * Get attribute value from an element using a simplified XPath-like path
643
+ */
644
+ function getAttr(element, path, attrName) {
645
+ if (!element) {
646
+ return "";
647
+ }
648
+ const parts = path.split("/");
649
+ let current = element;
650
+ for (let i = 0; i < parts.length; i++) {
651
+ if (!current) {
652
+ return "";
653
+ }
654
+ const part = parts[i];
655
+ if (part.includes("[last()]")) {
656
+ const tagName = part.replace("[last()]", "");
657
+ const elements = current.queryAll(tagName);
658
+ current = elements.length ? elements[elements.length - 1] : null;
659
+ }
660
+ else if (part.includes("[")) {
661
+ const match = part.match(/([^[]+)\[(\d+)\]/);
662
+ if (match) {
663
+ const tagName = match[1];
664
+ const index = parseInt(match[2], 10) - 1;
665
+ const elements = current.queryAll(tagName);
666
+ current = elements[index] || null;
667
+ }
668
+ else {
669
+ current = current.query(part) || null;
670
+ }
671
+ }
672
+ else {
673
+ current = current.query(part) || null;
674
+ }
675
+ }
676
+ return current ? String(current.getAttribute(attrName) || "") : "";
677
+ }
678
+ /**
679
+ * Output a script element, or "none" if not provided
680
+ */
681
+ function outputScript(parent, element) {
682
+ if (element) {
683
+ const row = createMathElement("mrow", {}, parent);
684
+ processElement(element, row);
685
+ }
686
+ else {
687
+ createMathElement("none", {}, parent);
688
+ }
689
+ }
690
+ /**
691
+ * Output an n-ary operator
692
+ */
693
+ function outputNAryMO(element, parent, grow = false) {
694
+ const mo = createMathElement("mo", { stretchy: grow ? "true" : "false" }, parent);
695
+ const val = getAttr(element, "m:naryPr/m:chr", "m:val");
696
+ mo.textContent = val || "\u222b"; // Integral symbol by default
697
+ }
698
+ /**
699
+ * Create an equation array row
700
+ */
701
+ function createEqArrRow(parent, src, cur, align) {
702
+ if (!cur) {
703
+ return;
704
+ }
705
+ if (cur.tagName === "m:r") {
706
+ const allMt = cur
707
+ .queryAll("m:t")
708
+ .map((t) => t.textContent)
709
+ .join("");
710
+ const nor = forceFalse(getAttr(cur, "m:rPr/m:nor", "m:val") || "false");
711
+ parseEqArrMr(parent, {
712
+ toParse: allMt,
713
+ scr: getAttr(cur, "m:rPr/m:scr", "m:val"),
714
+ sty: getAttr(cur, "m:rPr/m:sty", "m:val"),
715
+ nor,
716
+ align
717
+ });
718
+ }
719
+ else {
720
+ processElement(cur, parent);
721
+ }
722
+ // Get the next sibling if available
723
+ const siblings = cur.parentElement ? cur.parentElement.children : [];
724
+ const index = siblings.indexOf(cur);
725
+ const nextSibling = index < siblings.length - 1 ? siblings[index + 1] : null;
726
+ if (nextSibling) {
727
+ const allMt = cur
728
+ .queryAll("m:t")
729
+ .map((t) => t.textContent)
730
+ .join("");
731
+ const amp = countAmp(allMt);
732
+ createEqArrRow(parent, src, nextSibling, (align + (amp % 2)) % 2);
733
+ }
734
+ }
735
+ /**
736
+ * Parse equation array run text
737
+ */
738
+ function parseEqArrMr(parent, { toParse = "", scr, sty, nor, align }) {
739
+ if (!toParse.length) {
740
+ return;
741
+ }
742
+ if (toParse[0] === "&") {
743
+ createMathElement(align ? "malignmark" : "maligngroup", {}, parent);
744
+ parseEqArrMr(parent, {
745
+ toParse: toParse.substr(1),
746
+ align: align ? 0 : 1,
747
+ scr,
748
+ sty,
749
+ nor
750
+ });
751
+ }
752
+ else {
753
+ const firstOper = rxIndexOf(toParse, oprx);
754
+ const firstNum = rxIndexOf(toParse, /\d/);
755
+ const startsWithOper = firstOper === 1;
756
+ const startsWithNum = firstNum === 1;
757
+ if (!startsWithOper && !startsWithNum) {
758
+ if (!nor) {
759
+ const mi = createMathElement("mi", tokenAttributes({
760
+ scr,
761
+ sty,
762
+ nor,
763
+ charToPrint: 1,
764
+ tokenType: "mi"
765
+ }), parent);
766
+ mi.textContent = nbsp(toParse.substr(0, 1));
767
+ }
768
+ else {
769
+ const mt = createMathElement("mtext", {}, parent);
770
+ mt.textContent = nbsp(toParse.substr(0, 1));
771
+ }
772
+ parseEqArrMr(parent, {
773
+ toParse: toParse.substr(1),
774
+ scr,
775
+ sty,
776
+ nor,
777
+ align
778
+ });
779
+ }
780
+ else if (startsWithOper) {
781
+ if (!nor) {
782
+ const mo = createMathElement("mo", tokenAttributes({
783
+ nor,
784
+ charToPrint: 1,
785
+ tokenType: "mo"
786
+ }), parent);
787
+ mo.textContent = toParse.substr(0, 1);
788
+ }
789
+ else {
790
+ const mt = createMathElement("mtext", {}, parent);
791
+ mt.textContent = toParse.substr(0, 1);
792
+ }
793
+ parseEqArrMr(parent, {
794
+ toParse: toParse.substr(1),
795
+ scr,
796
+ sty,
797
+ nor,
798
+ align
799
+ });
800
+ }
801
+ else {
802
+ const num = numStart(toParse);
803
+ if (!nor) {
804
+ const mn = createMathElement("mn", tokenAttributes({
805
+ sty: "p",
806
+ nor,
807
+ charToPrint: 1,
808
+ tokenType: "mn"
809
+ }), parent);
810
+ mn.textContent = num;
811
+ }
812
+ else {
813
+ const mt = createMathElement("mtext", {}, parent);
814
+ mt.textContent = num;
815
+ }
816
+ parseEqArrMr(parent, {
817
+ toParse: toParse.substr(num.length),
818
+ scr,
819
+ sty,
820
+ nor,
821
+ align
822
+ });
823
+ }
824
+ }
825
+ }
826
+ /**
827
+ * Parse math text
828
+ */
829
+ function parseMT(ctx, parent, { toParse = "", scr, sty, nor }) {
830
+ if (!toParse.length) {
831
+ return;
832
+ }
833
+ const firstOper = rxIndexOf(toParse, oprx);
834
+ const firstNum = rxIndexOf(toParse, /\d/);
835
+ const startsWithOper = firstOper === 1;
836
+ const startsWithNum = firstNum === 1;
837
+ if (!startsWithOper && !startsWithNum) {
838
+ let charToPrint = 1;
839
+ // Check if we're in a function name
840
+ const inFuncName = ctx.closest("m:fName") !== null;
841
+ if (inFuncName) {
842
+ if (!firstOper && !firstNum) {
843
+ charToPrint = toParse.length;
844
+ }
845
+ else {
846
+ charToPrint =
847
+ Math.min(firstOper || Number.MAX_VALUE, firstNum || Number.MAX_VALUE) - 1;
848
+ }
849
+ }
850
+ const mi = createMathElement("mi", tokenAttributes({
851
+ scr,
852
+ sty,
853
+ nor,
854
+ charToPrint,
855
+ tokenType: "mi"
856
+ }), parent);
857
+ mi.textContent = nbsp(toParse.substr(0, charToPrint));
858
+ parseMT(ctx, parent, {
859
+ toParse: toParse.substr(charToPrint),
860
+ scr,
861
+ sty,
862
+ nor
863
+ });
864
+ }
865
+ else if (startsWithOper) {
866
+ const mo = createMathElement("mo", tokenAttributes({
867
+ nor,
868
+ tokenType: "mo"
869
+ }), parent);
870
+ mo.textContent = toParse.substr(0, 1);
871
+ parseMT(ctx, parent, {
872
+ toParse: toParse.substr(1),
873
+ scr,
874
+ sty,
875
+ nor
876
+ });
877
+ }
878
+ else {
879
+ const num = numStart(toParse);
880
+ const mn = createMathElement("mn", tokenAttributes({
881
+ scr,
882
+ sty: "p",
883
+ nor,
884
+ tokenType: "mn"
885
+ }), parent);
886
+ mn.textContent = num;
887
+ parseMT(ctx, parent, {
888
+ toParse: toParse.substr(num.length),
889
+ scr,
890
+ sty,
891
+ nor
892
+ });
893
+ }
894
+ }
895
+ /**
896
+ * Find the index of a regex match in a string
897
+ */
898
+ function rxIndexOf(str, rx) {
899
+ const re = rx.exec(str);
900
+ if (!re) {
901
+ return 0;
902
+ }
903
+ return re.index + 1;
904
+ }
905
+ /**
906
+ * Get the start of a number in a string
907
+ */
908
+ function numStart(str) {
909
+ if (!str) {
910
+ return "";
911
+ }
912
+ const match = str.match(/^(\d+)/);
913
+ return match ? match[1] : "";
914
+ }
915
+ /**
916
+ * Count ampersands in a string
917
+ */
918
+ function countAmp(str) {
919
+ return ((str || "").match(/&/g) || []).length;
920
+ }
921
+ /**
922
+ * Convert a combining character to its non-combining equivalent
923
+ */
924
+ function toNonCombining(ch) {
925
+ const combiMap = {
926
+ "\u0306": "\u02D8", // breve
927
+ "\u032e": "\u02D8", // breve below
928
+ "\u0312": "\u00B8", // cedilla
929
+ "\u0327": "\u00B8", // cedilla
930
+ "\u0300": "\u0060", // grave
931
+ "\u0316": "\u0060", // grave below
932
+ "\u0305": "\u002D", // macron/overbar
933
+ "\u0332": "\u002D", // macron/underbar
934
+ "\u0323": "\u002E", // dot below
935
+ "\u0307": "\u02D9", // dot above
936
+ "\u030B": "\u02DD", // double acute
937
+ "\u0317": "\u00B4", // acute below
938
+ "\u0301": "\u00B4", // acute
939
+ "\u0330": "\u007E", // tilde below
940
+ "\u0303": "\u007E", // tilde
941
+ "\u0324": "\u00A8", // diaeresis below
942
+ "\u0308": "\u00A8", // diaeresis
943
+ "\u032C": "\u02C7", // caron below
944
+ "\u030C": "\u02C7", // caron
945
+ "\u0302": "\u005E", // circumflex
946
+ "\u032D": "\u005E", // circumflex below
947
+ "\u20D7": "\u2192", // vector/right arrow
948
+ "\u20EF": "\u2192", // vector/right arrow below
949
+ "\u20D6": "\u2190", // left arrow
950
+ "\u20EE": "\u2190" // left arrow below
951
+ };
952
+ return combiMap[ch] || ch;
953
+ }
954
+ /**
955
+ * Create MathML token attributes based on token settings
956
+ */
957
+ function tokenAttributes(options) {
958
+ const { scr, sty, nor, charToPrint = 0, tokenType } = options;
959
+ const attr = {};
960
+ if (nor) {
961
+ attr.mathvariant = "normal";
962
+ }
963
+ else {
964
+ let mathvariant;
965
+ const fontweight = sty === "b" || sty === "bi" ? "bold" : "normal";
966
+ const fontstyle = sty === "b" || sty === "p" ? "normal" : "italic";
967
+ if (tokenType !== "mn") {
968
+ if (scr === "monospace") {
969
+ mathvariant = "monospace";
970
+ }
971
+ else if (scr === "sans-serif" && sty === "i") {
972
+ mathvariant = "sans-serif-italic";
973
+ }
974
+ else if (scr === "sans-serif" && sty === "b") {
975
+ mathvariant = "bold-sans-serif";
976
+ }
977
+ else if (scr === "sans-serif" && sty === "bi") {
978
+ mathvariant = "sans-serif-bold-italic";
979
+ }
980
+ else if (scr === "sans-serif") {
981
+ mathvariant = "sans-serif";
982
+ }
983
+ else if (scr === "fraktur" && (sty === "b" || sty === "i")) {
984
+ mathvariant = "bold-fraktur";
985
+ }
986
+ else if (scr === "fraktur") {
987
+ mathvariant = "fraktur";
988
+ }
989
+ else if (scr === "double-struck") {
990
+ mathvariant = "double-struck";
991
+ }
992
+ else if (scr === "script" && (sty === "b" || sty === "i")) {
993
+ mathvariant = "bold-script";
994
+ }
995
+ else if (scr === "script") {
996
+ mathvariant = "script";
997
+ }
998
+ else if (scr === "roman" || !scr) {
999
+ if (sty === "b") {
1000
+ mathvariant = "bold";
1001
+ }
1002
+ else if (sty === "i") {
1003
+ mathvariant = "italic";
1004
+ }
1005
+ else if (sty === "p") {
1006
+ mathvariant = "normal";
1007
+ }
1008
+ else if (sty === "bi") {
1009
+ mathvariant = "bold-italic";
1010
+ }
1011
+ }
1012
+ }
1013
+ if (tokenType === "mo" && mathvariant !== "normal") {
1014
+ return attr;
1015
+ }
1016
+ if (tokenType === "mi" &&
1017
+ charToPrint === 1 &&
1018
+ (mathvariant === "italic" || !mathvariant)) {
1019
+ return attr;
1020
+ }
1021
+ if (tokenType === "mi" &&
1022
+ charToPrint > 1 &&
1023
+ (mathvariant === "italic" || !mathvariant)) {
1024
+ attr.mathvariant = "italic";
1025
+ }
1026
+ else if (mathvariant && mathvariant !== "italic") {
1027
+ attr.mathvariant = mathvariant;
1028
+ }
1029
+ else {
1030
+ if (fontstyle === "italic" &&
1031
+ !(tokenType === "mi" && charToPrint === 1)) {
1032
+ attr.fontstyle = "italic";
1033
+ }
1034
+ if (fontweight === "bold") {
1035
+ attr.fontweight = "bold";
1036
+ }
1037
+ }
1038
+ }
1039
+ return attr;
1040
+ }
1041
+ /**
1042
+ * Create menclose notation attribute value
1043
+ */
1044
+ function createMEnclodeNotation({ hideTop, hideBot, hideLeft, hideRight, strikeH, strikeV, strikeBLTR, strikeTLBR }) {
1045
+ const notation = [];
1046
+ if (!hideTop && !hideBot && !hideLeft && !hideRight) {
1047
+ notation.push("box");
1048
+ }
1049
+ else {
1050
+ if (!hideTop) {
1051
+ notation.push("top");
1052
+ }
1053
+ if (!hideBot) {
1054
+ notation.push("bottom");
1055
+ }
1056
+ if (!hideLeft) {
1057
+ notation.push("left");
1058
+ }
1059
+ if (!hideRight) {
1060
+ notation.push("right");
1061
+ }
1062
+ }
1063
+ if (strikeH) {
1064
+ notation.push("horizontalstrike");
1065
+ }
1066
+ if (strikeV) {
1067
+ notation.push("verticalstrike");
1068
+ }
1069
+ if (strikeBLTR) {
1070
+ notation.push("updiagonalstrike");
1071
+ }
1072
+ if (strikeTLBR) {
1073
+ notation.push("downdiagonalstrike");
1074
+ }
1075
+ return { notation: notation.join(" ") };
1076
+ }
1077
+ /**
1078
+ * Create mpadded attributes
1079
+ */
1080
+ function createMPaddedAttr({ zeroWid, zeroAsc, zeroDesc }) {
1081
+ const attr = {};
1082
+ if (zeroWid) {
1083
+ attr.width = "0in";
1084
+ }
1085
+ if (zeroAsc) {
1086
+ attr.height = "0in";
1087
+ }
1088
+ if (zeroDesc) {
1089
+ attr.depth = "0in";
1090
+ }
1091
+ return attr;
1092
+ }
1093
+ /**
1094
+ * Get fraction properties
1095
+ */
1096
+ function getFracProps(type) {
1097
+ if (type === "skw" || type === "lin") {
1098
+ return { bevelled: "true" };
1099
+ }
1100
+ if (type === "nobar") {
1101
+ return { linethickness: "0pt" };
1102
+ }
1103
+ return {};
1104
+ }
1105
+ /**
1106
+ * Replace spaces with non-breaking spaces
1107
+ */
1108
+ function nbsp(str) {
1109
+ if (!str) {
1110
+ return "";
1111
+ }
1112
+ return str.replace(/\s/g, "\u00a0");
1113
+ }
1114
+ /**
1115
+ * Parse a boolean value
1116
+ */
1117
+ function tf(str) {
1118
+ if (str == null) {
1119
+ return;
1120
+ }
1121
+ const lower = String(str).toLowerCase();
1122
+ if (lower === "on" || lower === "1" || lower === "true") {
1123
+ return true;
1124
+ }
1125
+ if (lower === "off" || lower === "0" || lower === "false") {
1126
+ return false;
1127
+ }
1128
+ return undefined;
1129
+ }
1130
+ /**
1131
+ * Force a value to be true unless explicitly false
1132
+ */
1133
+ function forceFalse(str) {
1134
+ const res = tf(str);
1135
+ if (res === false) {
1136
+ return false;
1137
+ }
1138
+ return true;
1139
+ }
1140
+ /**
1141
+ * Force a value to be false unless explicitly true
1142
+ */
1143
+ function forceTrue(str) {
1144
+ return tf(str) || false;
1145
+ }
1146
+ //# sourceMappingURL=omml2mathml.js.map