@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
@@ -1,4 +1,7 @@
1
1
  import {descendantNodes} from "../tools/doc_content.js"
2
+ import type {BibDB, CSL, DocSettings, ExportDoc, FidusNode, ImageDB} from "../../types.js"
3
+ import type {XmlZip} from "../tools/xml_zip.js"
4
+ import type {XMLElement} from "../tools/xml.js"
2
5
  import {DOCXExporterCitations} from "./citations.js"
3
6
  import {DOCXExporterImages} from "./images.js"
4
7
  import {DOCXExporterLists} from "./lists.js"
@@ -52,19 +55,48 @@ const DEFAULT_STYLE_FOOTNOTE_ANCHOR = `
52
55
  `
53
56
 
54
57
  export class DOCXExporterFootnotes {
58
+ doc: ExportDoc
59
+ docContent: FidusNode
60
+ settings: DocSettings
61
+ imageDB: ImageDB
62
+ bibDB: BibDB
63
+ xml: XmlZip
64
+ citations: DOCXExporterCitations
65
+ csl: CSL
66
+ lists: DOCXExporterLists
67
+ math: any
68
+ tables: any
69
+ rels: DOCXExporterRels
70
+
71
+ pmBib: FidusNode | false
72
+ fnPmJSON: FidusNode | false
73
+ images: DOCXExporterImages | null
74
+ augmentedCitations: DOCXExporterCitations | null
75
+ footnotes: FidusNode[][]
76
+ fnXML: string | null
77
+ fnRels: DOCXExporterRels | null
78
+ ctXML: XMLElement | null
79
+ styleXML: XMLElement | null
80
+ settingsXML: XMLElement | null
81
+ filePath: string
82
+ ctFilePath: string
83
+ settingsFilePath: string
84
+ styleFilePath: string
85
+ richtext: any
86
+
55
87
  constructor(
56
- doc,
57
- docContent,
58
- settings,
59
- imageDB,
60
- bibDB,
61
- xml,
62
- citations,
63
- csl,
64
- lists,
65
- math,
66
- tables,
67
- rels
88
+ doc: ExportDoc,
89
+ docContent: FidusNode,
90
+ settings: DocSettings,
91
+ imageDB: ImageDB,
92
+ bibDB: BibDB,
93
+ xml: XmlZip,
94
+ citations: DOCXExporterCitations,
95
+ csl: CSL,
96
+ lists: DOCXExporterLists,
97
+ math: any,
98
+ tables: any,
99
+ rels: DOCXExporterRels
68
100
  ) {
69
101
  this.doc = doc
70
102
  this.docContent = docContent
@@ -81,23 +113,26 @@ export class DOCXExporterFootnotes {
81
113
 
82
114
  this.pmBib = false
83
115
  this.fnPmJSON = false
84
- this.images = false
85
- this.augmentedCitations = false
116
+ this.images = null
117
+ this.augmentedCitations = null
86
118
  this.footnotes = [] // footnotes
87
- this.fnXML = false
88
- this.ctXML = false
89
- this.styleXML = false
119
+ this.fnXML = null
120
+ this.fnRels = null
121
+ this.ctXML = null
122
+ this.styleXML = null
123
+ this.settingsXML = null
90
124
  this.filePath = "word/footnotes.xml"
91
125
  this.ctFilePath = "[Content_Types].xml"
92
126
  this.settingsFilePath = "word/settings.xml"
93
127
  this.styleFilePath = "word/styles.xml"
94
128
  }
95
129
 
96
- init() {
130
+ init(): Promise<void> | Promise<undefined> {
97
131
  this.findFootnotes()
98
132
  if (
99
133
  this.footnotes.length ||
100
- (this.citations.citFm.citationType === "note" &&
134
+ (this.citations.citFm &&
135
+ this.citations.citFm.citationType === "note" &&
101
136
  this.citations.citInfos.length)
102
137
  ) {
103
138
  this.convertFootnotes()
@@ -105,7 +140,7 @@ export class DOCXExporterFootnotes {
105
140
  // Include the citinfos from the main body document so that they will be
106
141
  // used for calculating the bibliography as well
107
142
  this.augmentedCitations = new DOCXExporterCitations(
108
- this.fnPmJSON,
143
+ this.fnPmJSON as FidusNode,
109
144
  this.settings,
110
145
  this.bibDB,
111
146
  this.csl,
@@ -114,13 +149,13 @@ export class DOCXExporterFootnotes {
114
149
  )
115
150
 
116
151
  this.images = new DOCXExporterImages(
117
- this.fnPmJSON,
152
+ this.fnPmJSON as FidusNode,
118
153
  this.imageDB,
119
154
  this.xml,
120
155
  this.fnRels
121
156
  )
122
157
  this.lists = new DOCXExporterLists(
123
- this.fnPmJSON,
158
+ this.fnPmJSON as FidusNode,
124
159
  this.xml,
125
160
  this.fnRels
126
161
  )
@@ -131,10 +166,10 @@ export class DOCXExporterFootnotes {
131
166
  // Replace the main bibliography with the new one that
132
167
  // includes both citations in main document
133
168
  // and in the footnotes.
134
- this.pmBib = this.augmentedCitations.pmBib
135
- return this.fnRels.init()
169
+ this.pmBib = this.augmentedCitations!.pmBib
170
+ return this.fnRels!.init()
136
171
  })
137
- .then(() => this.images.init())
172
+ .then(() => this.images!.init())
138
173
  .then(() => this.lists.init())
139
174
  .then(() => this.initCt())
140
175
  .then(() => this.setSettings())
@@ -146,7 +181,7 @@ export class DOCXExporterFootnotes {
146
181
  }
147
182
  }
148
183
 
149
- initCt() {
184
+ initCt(): Promise<void> {
150
185
  return this.xml.getXml(this.ctFilePath).then(ctXML => {
151
186
  this.ctXML = ctXML
152
187
  this.addRelsToCt()
@@ -154,19 +189,22 @@ export class DOCXExporterFootnotes {
154
189
  })
155
190
  }
156
191
 
157
- addRelsToCt() {
192
+ addRelsToCt(): void {
193
+ if (!this.ctXML) {
194
+ return
195
+ }
158
196
  const override = this.ctXML.query("Override", {
159
197
  PartName: `/${this.filePath}`
160
198
  })
161
199
  if (!override) {
162
200
  const types = this.ctXML.query("Types")
163
- types.appendXML(
201
+ types?.appendXML(
164
202
  `<Override PartName="/${this.filePath}" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml"/>`
165
203
  )
166
204
  }
167
205
  }
168
206
 
169
- addStyles() {
207
+ addStyles(): Promise<void> {
170
208
  return this.xml.getXml(this.styleFilePath).then(styleXML => {
171
209
  this.styleXML = styleXML
172
210
  this.addStyle("Footnote", DEFAULT_STYLE_FOOTNOTE)
@@ -175,23 +213,23 @@ export class DOCXExporterFootnotes {
175
213
  })
176
214
  }
177
215
 
178
- addStyle(styleName, xml) {
179
- if (!this.styleXML.query("w:style", {"w:styleId": styleName})) {
180
- const stylesEl = this.styleXML.query("w:styles")
181
- stylesEl.appendXML(xml)
216
+ addStyle(styleName: string, xml: string): void {
217
+ if (!this.styleXML!.query("w:style", {"w:styleId": styleName})) {
218
+ const stylesEl = this.styleXML!.query("w:styles")
219
+ stylesEl?.appendXML(xml)
182
220
  }
183
221
  }
184
222
 
185
- findFootnotes() {
223
+ findFootnotes(): void {
186
224
  descendantNodes(this.docContent).forEach(node => {
187
225
  if (node.type === "footnote") {
188
- this.footnotes.push(node.attrs.footnote)
226
+ this.footnotes.push(node.attrs?.footnote as FidusNode[])
189
227
  }
190
228
  })
191
229
  }
192
230
 
193
- convertFootnotes() {
194
- const fnContent = []
231
+ convertFootnotes(): void {
232
+ const fnContent: FidusNode[] = []
195
233
  this.footnotes.forEach(footnote => {
196
234
  fnContent.push({
197
235
  type: "footnotecontainer",
@@ -204,7 +242,7 @@ export class DOCXExporterFootnotes {
204
242
  }
205
243
  }
206
244
 
207
- createXml() {
245
+ createXml(): Promise<void> {
208
246
  this.richtext = new DOCXExporterRichtext(
209
247
  this.doc,
210
248
  this.lists,
@@ -221,17 +259,18 @@ export class DOCXExporterFootnotes {
221
259
  this.rels.addFootnoteRel()
222
260
  return this.xml.getXml(this.filePath, DEFAULT_XML).then(xml => {
223
261
  const footnotesEl = xml.query("w:footnotes")
224
- footnotesEl.appendXML(this.fnXML)
225
- this.xml = xml
262
+ footnotesEl?.appendXML(this.fnXML as string)
263
+ // Note: original code reassigned this.xml to the XMLElement here;
264
+ // that is not needed and conflicts with the XmlZip type.
226
265
  })
227
266
  }
228
267
 
229
- setSettings() {
268
+ setSettings(): Promise<void> {
230
269
  return this.xml.getXml(this.settingsFilePath).then(settingsXML => {
231
270
  const footnotePr = settingsXML.query("w:footnotePr")
232
271
  if (!footnotePr) {
233
272
  const settingsEl = settingsXML.query("w:settings")
234
- settingsEl.appendXML(DEFAULT_SETTINGS_XML)
273
+ settingsEl?.appendXML(DEFAULT_SETTINGS_XML)
235
274
  }
236
275
  this.settingsXML = settingsXML
237
276
  return Promise.resolve()
@@ -0,0 +1,128 @@
1
+ import {get} from "fwtoolkit"
2
+
3
+ import type {FidusNode, ImageDB} from "../../types.js"
4
+ import {descendantNodes} from "../tools/doc_content.js"
5
+ import {svg2png} from "../tools/svg.js"
6
+ import type {XMLElement} from "../tools/xml.js"
7
+ import type {XmlZip} from "../tools/xml_zip.js"
8
+ import type {DOCXExporterRels} from "./rels.js"
9
+
10
+ interface ImageInfo {
11
+ id: number
12
+ width: number
13
+ height: number
14
+ title?: string
15
+ }
16
+
17
+ export class DOCXExporterImages {
18
+ docContent: FidusNode
19
+ imageDB: ImageDB
20
+ xml: XmlZip
21
+ rels: DOCXExporterRels
22
+
23
+ images: Record<string, ImageInfo>
24
+ ctXML: XMLElement | null
25
+
26
+ constructor(docContent: FidusNode, imageDB: ImageDB, xml: XmlZip, rels: DOCXExporterRels) {
27
+ this.docContent = docContent
28
+ this.imageDB = imageDB
29
+ this.xml = xml
30
+ this.rels = rels
31
+
32
+ this.images = {}
33
+ this.ctXML = null
34
+ }
35
+
36
+ init(): Promise<void> {
37
+ return this.xml.getXml("[Content_Types].xml").then(ctXML => {
38
+ this.ctXML = ctXML
39
+ return this.exportImages()
40
+ })
41
+ }
42
+
43
+ // add an image to the list of files
44
+ addImage(imgFileName: string, image: Blob): number {
45
+ const rId = this.rels.addImageRel(imgFileName)
46
+ this.addContentType(imgFileName.split(".").pop() || "")
47
+ this.xml.addExtraFile(`word/media/${imgFileName}`, image)
48
+ return rId
49
+ }
50
+
51
+ // add a global contenttype declaration for an image type (if needed)
52
+ addContentType(fileEnding: string): void {
53
+ if (!this.ctXML) {
54
+ return
55
+ }
56
+ const types = this.ctXML.query("Types")
57
+ if (!types) {
58
+ return
59
+ }
60
+ const contentDec = types.query("Default", {Extension: fileEnding})
61
+ if (!contentDec) {
62
+ const string = `<Default ContentType="image/${fileEnding}" Extension="${fileEnding}"/>`
63
+ types.appendXML(string)
64
+ }
65
+ }
66
+
67
+ // Find all images used in file and add these to the export zip.
68
+ // TODO: This will likely fail on image types docx doesn't support such as SVG.
69
+ // Try out and fix.
70
+ exportImages(): Promise<void> {
71
+ const usedImgs: (string | number)[] = []
72
+ descendantNodes(this.docContent).forEach(node => {
73
+ if (node.type === "image" && node.attrs?.image !== false) {
74
+ const imageId = node.attrs?.image as string | number | undefined
75
+ if (imageId !== undefined && !usedImgs.includes(imageId)) {
76
+ usedImgs.push(imageId)
77
+ }
78
+ }
79
+ })
80
+ return new Promise(resolveExportImages => {
81
+ const p: Array<Promise<void>> = []
82
+ usedImgs.forEach(image => {
83
+ const imgDBEntry = this.imageDB.db[String(image)]
84
+ if (!imgDBEntry || !imgDBEntry.image) {
85
+ return
86
+ }
87
+ p.push(
88
+ get(imgDBEntry.image as string)
89
+ .then(response => response.blob())
90
+ .then(async blob => {
91
+ if (blob.type === "image/svg+xml") {
92
+ // DOCX doesn't support SVG. Convert to PNG.
93
+ const {blob: pngBlob, width, height} = await svg2png(blob)
94
+ const wImgId = this.addImage(
95
+ (imgDBEntry.image as string)
96
+ .split("/")
97
+ .pop()!
98
+ .replace(/.svg$/g, ".png"),
99
+ pngBlob
100
+ )
101
+ this.images[String(image)] = {
102
+ id: wImgId,
103
+ width,
104
+ height,
105
+ title: imgDBEntry.title as string | undefined
106
+ }
107
+ } else {
108
+ const wImgId = this.addImage(
109
+ (imgDBEntry.image as string).split("/").pop()!,
110
+ blob
111
+ )
112
+ this.images[String(image)] = {
113
+ id: wImgId,
114
+ width: imgDBEntry.width as number,
115
+ height: imgDBEntry.height as number,
116
+ title: imgDBEntry.title as string | undefined
117
+ }
118
+ }
119
+ })
120
+ )
121
+ })
122
+
123
+ Promise.all(p).then(() => {
124
+ resolveExportImages()
125
+ })
126
+ })
127
+ }
128
+ }
@@ -1,9 +1,11 @@
1
1
  import download from "downloadjs"
2
2
 
3
3
  import {shortFileTitle} from "fwtoolkit"
4
+ import type {BibDB, CSL, ExportDoc, FidusNode, ImageDB} from "../../types.js"
4
5
  import {fixTables, removeHidden, textContent} from "../tools/doc_content.js"
5
6
  import {createSlug} from "../tools/file.js"
6
- import {XmlZip} from "../tools/xml_zip.js"
7
+ import type {XmlZip} from "../tools/xml_zip.js"
8
+ import {XmlZip as XmlZipImpl} from "../tools/xml_zip.js"
7
9
  import {DOCXExporterCitations} from "./citations.js"
8
10
  import {DOCXExporterComments} from "./comments.js"
9
11
  import {DOCXExporterFootnotes} from "./footnotes.js"
@@ -29,23 +31,39 @@ TODO:
29
31
  */
30
32
 
31
33
  export class DOCXExporter {
32
- constructor(doc, templateUrl, bibDB, imageDB, csl) {
34
+ doc: ExportDoc
35
+ templateUrl: string
36
+ bibDB: BibDB
37
+ imageDB: ImageDB
38
+ csl: CSL
39
+
40
+ docTitle: string
41
+ mimeType: string
42
+ docContent: any
43
+
44
+ constructor(
45
+ doc: ExportDoc,
46
+ templateUrl: string,
47
+ bibDB: BibDB,
48
+ imageDB: ImageDB,
49
+ csl: CSL
50
+ ) {
33
51
  this.doc = doc
34
52
  this.templateUrl = templateUrl
35
53
  this.bibDB = bibDB
36
54
  this.imageDB = imageDB
37
55
  this.csl = csl
38
56
 
39
- this.docTitle = shortFileTitle(this.doc.title, this.doc.path)
57
+ this.docTitle = shortFileTitle(this.doc.title, this.doc.path || "")
40
58
  this.mimeType =
41
59
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
42
60
  this.docContent = moveFootnoteComments(
43
- fixTables(removeHidden(this.doc.content))
61
+ fixTables(removeHidden(this.doc.content) as FidusNode)
44
62
  )
45
63
  }
46
64
 
47
- init() {
48
- const xml = new XmlZip(this.templateUrl, this.mimeType)
65
+ init(): Promise<void> {
66
+ const xml: XmlZip = new XmlZipImpl(this.templateUrl, this.mimeType)
49
67
 
50
68
  const tables = new DOCXExporterTables(xml)
51
69
  const math = new DOCXExporterMath(xml)
@@ -101,7 +119,7 @@ export class DOCXExporter {
101
119
 
102
120
  const comments = new DOCXExporterComments(
103
121
  this.docContent,
104
- this.doc.comments,
122
+ this.doc.comments || {},
105
123
  xml,
106
124
  rels,
107
125
  richtext
@@ -133,7 +151,7 @@ export class DOCXExporter {
133
151
  .then(blob => this.download(blob))
134
152
  }
135
153
 
136
- download(blob) {
154
+ download(blob: Blob): void {
137
155
  return download(
138
156
  blob,
139
157
  createSlug(this.docTitle) + ".docx",
@@ -141,16 +159,16 @@ export class DOCXExporter {
141
159
  )
142
160
  }
143
161
 
144
- getBaseMetadata() {
162
+ getBaseMetadata(): any {
145
163
  const contributors = this.docContent.content.reduce(
146
- (contributors, part) => {
164
+ (contributors: any[], part: any) => {
147
165
  if (
148
166
  part.type === "contributors_part" &&
149
167
  part.attrs.metadata &&
150
168
  part.content
151
169
  ) {
152
170
  return contributors.concat(
153
- part.content.map(node => ({
171
+ part.content.map((node: any) => ({
154
172
  ...node.attrs,
155
173
  role: part.attrs.metadata
156
174
  }))
@@ -162,21 +180,26 @@ export class DOCXExporter {
162
180
  []
163
181
  )
164
182
  return {
165
- authors: contributors.filter(c => c.role === "authors"),
183
+ authors: contributors.filter((c: any) => c.role === "authors"),
166
184
  contributors,
167
- keywords: this.docContent.content.reduce((keywords, part) => {
168
- if (
169
- part.type === "tags_part" &&
170
- part.attrs.metadata === "keywords" &&
171
- part.content
172
- ) {
173
- return keywords.concat(
174
- part.content.map(keywordNode => keywordNode.attrs.tag)
175
- )
176
- } else {
177
- return keywords
178
- }
179
- }, []),
185
+ keywords: this.docContent.content.reduce(
186
+ (keywords: string[], part: any) => {
187
+ if (
188
+ part.type === "tags_part" &&
189
+ part.attrs.metadata === "keywords" &&
190
+ part.content
191
+ ) {
192
+ return keywords.concat(
193
+ part.content.map(
194
+ (keywordNode: any) => keywordNode.attrs.tag
195
+ )
196
+ )
197
+ } else {
198
+ return keywords
199
+ }
200
+ },
201
+ []
202
+ ),
180
203
  title: textContent(this.docContent.content[0]),
181
204
  language: this.doc.settings.language,
182
205
  citationStyle: this.doc.settings.citationstyle