@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,85 @@
1
+ import {ZipFileCreator} from "../tools/zip.js"
2
+ import {FW_DOCUMENT_VERSION} from "../../schema/index.js"
3
+
4
+ import type {TemplateFiles} from "../../types.js"
5
+
6
+ export class ZipFidus {
7
+ docId: string | number
8
+ doc: Record<string, unknown>
9
+ shrunkImageDB: Record<string, Record<string, unknown>>
10
+ shrunkBibDB: Record<string, Record<string, unknown>>
11
+ httpFiles: Array<{url: string; filename: string}>
12
+ includeTemplate: boolean
13
+ token: string | boolean
14
+ getTemplateFiles?: (
15
+ docId: string | number,
16
+ token: string | boolean
17
+ ) => Promise<TemplateFiles>
18
+
19
+ textFiles: Array<{filename: string; contents: string}> = []
20
+
21
+ constructor(
22
+ docId: string | number,
23
+ doc: Record<string, unknown>,
24
+ shrunkImageDB: Record<string, Record<string, unknown>>,
25
+ shrunkBibDB: Record<string, Record<string, unknown>>,
26
+ httpFiles: Array<{url: string; filename: string}>,
27
+ includeTemplate = true,
28
+ token: string | boolean = false,
29
+ getTemplateFiles?: (
30
+ docId: string | number,
31
+ token: string | boolean
32
+ ) => Promise<TemplateFiles>
33
+ ) {
34
+ this.docId = docId
35
+ this.doc = doc
36
+ this.shrunkImageDB = shrunkImageDB
37
+ this.shrunkBibDB = shrunkBibDB
38
+ this.httpFiles = httpFiles
39
+ this.includeTemplate = includeTemplate
40
+ this.token = token
41
+ this.getTemplateFiles = getTemplateFiles
42
+
43
+ this.textFiles = [
44
+ {
45
+ filename: "document.json",
46
+ contents: JSON.stringify(this.doc)
47
+ },
48
+ {
49
+ filename: "images.json",
50
+ contents: JSON.stringify(this.shrunkImageDB)
51
+ },
52
+ {
53
+ filename: "bibliography.json",
54
+ contents: JSON.stringify(this.shrunkBibDB)
55
+ },
56
+ {
57
+ filename: "filetype-version",
58
+ contents: FW_DOCUMENT_VERSION
59
+ }
60
+ ]
61
+ }
62
+
63
+ init(): Promise<Blob> {
64
+ if (!this.includeTemplate || !this.getTemplateFiles) {
65
+ return this.createZip()
66
+ }
67
+ return this.getTemplateFiles(this.docId, this.token).then(
68
+ ({textFiles, httpFiles}) => {
69
+ this.textFiles = this.textFiles.concat(textFiles)
70
+ this.httpFiles = this.httpFiles.concat(httpFiles)
71
+ return this.createZip()
72
+ }
73
+ )
74
+ }
75
+
76
+ createZip(): Promise<Blob> {
77
+ const zipper = new ZipFileCreator(
78
+ this.textFiles,
79
+ this.httpFiles,
80
+ [],
81
+ "application/fidus+zip"
82
+ )
83
+ return zipper.init()
84
+ }
85
+ }
@@ -3,10 +3,26 @@ import {DOMParser, DOMSerializer} from "prosemirror-model"
3
3
  import {cslBibSchema} from "../../bibliography/csl_bib.js"
4
4
  import {FormatCitations} from "../../citations/format.js"
5
5
  import {fnSchema} from "../../schema/footnotes.js"
6
+ import type {BibDB, CSL, DocSettings, FidusNode} from "../../types.js"
6
7
  import {descendantNodes} from "../tools/doc_content.js"
8
+ import type {ODTExporterStyles} from "./styles.js"
7
9
 
8
10
  export class ODTExporterCitations {
9
- constructor(docContent, settings, styles, bibDB, csl, origCitInfos = []) {
11
+ docContent: FidusNode
12
+ settings: DocSettings
13
+ styles: ODTExporterStyles
14
+ bibDB: BibDB
15
+ csl: CSL
16
+ // If citInfos were found in a previous run, they are stored here
17
+ // (for example: first citations in main document, then in footnotes)
18
+ origCitInfos: Record<string, unknown>[]
19
+ citInfos: Record<string, unknown>[]
20
+ citationTexts: string[]
21
+ pmCits: FidusNode[]
22
+ citFm: FormatCitations | false
23
+ pmBib: FidusNode | false
24
+
25
+ constructor(docContent: FidusNode, settings: DocSettings, styles: ODTExporterStyles, bibDB: BibDB, csl: CSL, origCitInfos: Record<string, unknown>[] = []) {
10
26
  this.docContent = docContent
11
27
  this.settings = settings
12
28
  this.styles = styles
@@ -22,13 +38,13 @@ export class ODTExporterCitations {
22
38
  this.pmBib = false
23
39
  }
24
40
 
25
- init() {
41
+ init(): Promise<void> {
26
42
  return this.formatCitations()
27
43
  }
28
44
 
29
45
  // Citations are highly interdependent -- so we need to format them all
30
46
  // together before laying out the document.
31
- formatCitations() {
47
+ formatCitations(): Promise<void> {
32
48
  if (this.origCitInfos.length) {
33
49
  // Initial citInfos are taken from a previous run to include in
34
50
  // bibliography, and they are removed before spitting out the
@@ -38,21 +54,22 @@ export class ODTExporterCitations {
38
54
  }
39
55
 
40
56
  descendantNodes(this.docContent).forEach(node => {
41
- if (node.type === "citation") {
57
+ if (node.type === "citation" && node.attrs) {
42
58
  this.citInfos.push(JSON.parse(JSON.stringify(node.attrs)))
43
59
  }
44
60
  })
45
- this.citFm = new FormatCitations(
61
+ const citFm = new FormatCitations(
46
62
  this.csl,
47
- this.citInfos,
48
- this.settings.citationstyle,
63
+ this.citInfos as any,
64
+ this.settings.citationstyle || "",
49
65
  "",
50
66
  this.bibDB,
51
67
  false,
52
68
  this.settings.language
53
69
  )
54
- return this.citFm.init().then(() => {
55
- this.citationTexts = this.citFm.citationTexts
70
+ this.citFm = citFm
71
+ return (citFm.init() as Promise<void>).then(() => {
72
+ this.citationTexts = citFm.citationTexts
56
73
  if (this.origCitInfos.length) {
57
74
  // Remove all citation texts originating from original starting citInfos
58
75
  this.citationTexts.splice(0, this.origCitInfos.length)
@@ -62,7 +79,10 @@ export class ODTExporterCitations {
62
79
  })
63
80
  }
64
81
 
65
- convertCitations() {
82
+ convertCitations(): void {
83
+ if (!this.citFm) {
84
+ return
85
+ }
66
86
  // There could be some formatting in the citations, so we parse them through the PM schema for final formatting.
67
87
  // We need to put the citations each in a paragraph so that it works with
68
88
  // the fiduswriter schema and so that the converter doesn't mash them together.
@@ -77,25 +97,25 @@ export class ODTExporterCitations {
77
97
  const fnNode = fnSchema.nodeFromJSON({type: "footnotecontainer"})
78
98
  const serializer = DOMSerializer.fromSchema(fnSchema)
79
99
  const dom = serializer.serializeNode(fnNode)
80
- dom.innerHTML = citationsHTML
100
+ ;(dom as HTMLElement).innerHTML = citationsHTML
81
101
  this.pmCits = DOMParser.fromSchema(fnSchema)
82
102
  .parse(dom, {topNode: fnNode})
83
- .toJSON().content
103
+ .toJSON().content as FidusNode[]
84
104
  } else {
85
105
  this.pmCits = []
86
106
  }
87
107
 
88
108
  // Now we do the same for the bibliography.
89
- const cslBib = this.citFm.bibliography
109
+ const cslBib = this.citFm!.bibliography
90
110
  if (cslBib && cslBib[1].length > 0) {
91
111
  this.styles.addReferenceStyle(cslBib[0])
92
112
  const bibNode = cslBibSchema.nodeFromJSON({type: "cslbib"})
93
113
  const serializer = DOMSerializer.fromSchema(cslBibSchema)
94
114
  const dom = serializer.serializeNode(bibNode)
95
- dom.innerHTML = cslBib[1].join("")
115
+ ;(dom as HTMLElement).innerHTML = cslBib[1].join("")
96
116
  this.pmBib = DOMParser.fromSchema(cslBibSchema)
97
117
  .parse(dom, {topNode: bibNode})
98
- .toJSON()
118
+ .toJSON() as FidusNode
99
119
  }
100
120
  }
101
121
  }
@@ -1,6 +1,10 @@
1
1
  import {descendantNodes} from "../tools/doc_content.js"
2
+ import type {BibDB, CSL, DocSettings, FidusNode, ImageDB} from "../../types.js"
3
+ import type {XMLElement} from "../tools/xml.js"
4
+ import type {XmlZip} from "../tools/xml_zip.js"
2
5
  import {ODTExporterCitations} from "./citations.js"
3
6
  import {ODTExporterImages} from "./images.js"
7
+ import type {ODTExporterStyles} from "./styles.js"
4
8
 
5
9
  const DEFAULT_STYLE_FOOTNOTE = `
6
10
  <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
@@ -23,15 +27,32 @@ const DEFAULT_STYLE_FOOTNOTE_CONFIGURATION = `
23
27
  `
24
28
 
25
29
  export class ODTExporterFootnotes {
30
+ docContent: FidusNode
31
+ settings: DocSettings
32
+ xml: XmlZip
33
+ bodyCitations: ODTExporterCitations
34
+ styles: ODTExporterStyles
35
+ bibDB: BibDB
36
+ imageDB: ImageDB
37
+ csl: CSL
38
+
39
+ pmBib: FidusNode | false
40
+ fnPmJSON: FidusNode | false
41
+ images: ODTExporterImages | null
42
+ citations: ODTExporterCitations | null
43
+ footnotes: FidusNode[][]
44
+ styleFilePath: string
45
+ styleXml: XMLElement | null
46
+
26
47
  constructor(
27
- docContent,
28
- settings,
29
- xml,
30
- bodyCitations,
31
- styles,
32
- bibDB,
33
- imageDB,
34
- csl
48
+ docContent: FidusNode,
49
+ settings: DocSettings,
50
+ xml: XmlZip,
51
+ bodyCitations: ODTExporterCitations,
52
+ styles: ODTExporterStyles,
53
+ bibDB: BibDB,
54
+ imageDB: ImageDB,
55
+ csl: CSL
35
56
  ) {
36
57
  this.docContent = docContent
37
58
  this.settings = settings
@@ -44,24 +65,26 @@ export class ODTExporterFootnotes {
44
65
 
45
66
  this.pmBib = false
46
67
  this.fnPmJSON = false
47
- this.images = false
48
- this.citations = false
68
+ this.images = null
69
+ this.citations = null
49
70
  this.footnotes = []
50
71
  this.styleFilePath = "styles.xml"
72
+ this.styleXml = null
51
73
  }
52
74
 
53
- init() {
75
+ init(): Promise<void> | Promise<undefined> {
54
76
  this.findFootnotes()
55
77
  if (
56
78
  this.footnotes.length ||
57
- (this.bodyCitations.citFm.citationType === "note" &&
79
+ (this.bodyCitations.citFm &&
80
+ this.bodyCitations.citFm.citationType === "note" &&
58
81
  this.bodyCitations.citInfos.length)
59
82
  ) {
60
83
  this.convertFootnotes()
61
84
  // Include the citinfos from the main document so that they will be
62
85
  // used for calculating the bibliography as well
63
86
  this.citations = new ODTExporterCitations(
64
- this.fnPmJSON,
87
+ this.fnPmJSON as FidusNode,
65
88
  this.settings,
66
89
  this.styles,
67
90
  this.bibDB,
@@ -69,7 +92,7 @@ export class ODTExporterFootnotes {
69
92
  this.bodyCitations.citInfos
70
93
  )
71
94
  this.images = new ODTExporterImages(
72
- this.fnPmJSON,
95
+ this.fnPmJSON as FidusNode,
73
96
  this.xml,
74
97
  this.imageDB
75
98
  )
@@ -79,8 +102,8 @@ export class ODTExporterFootnotes {
79
102
  .then(() => {
80
103
  // Replace the main bibliography with the new one that includes
81
104
  // both citations in main document and in the footnotes.
82
- this.pmBib = this.citations.pmBib
83
- return this.images.init()
105
+ this.pmBib = this.citations!.pmBib
106
+ return this.images!.init()
84
107
  })
85
108
  .then(() => {
86
109
  return this.addStyles()
@@ -91,7 +114,7 @@ export class ODTExporterFootnotes {
91
114
  }
92
115
  }
93
116
 
94
- addStyles() {
117
+ addStyles(): Promise<void> {
95
118
  return this.xml.getXml(this.styleFilePath).then(styleXml => {
96
119
  this.styleXml = styleXml
97
120
  this.addStyle("Footnote", DEFAULT_STYLE_FOOTNOTE)
@@ -102,37 +125,37 @@ export class ODTExporterFootnotes {
102
125
  })
103
126
  }
104
127
 
105
- addStyle(styleName, xml) {
106
- if (!this.styleXml.query("style:style", {"style:name": styleName})) {
107
- const stylesEl = this.styleXml.query("office:styles")
108
- stylesEl.appendXML(xml)
128
+ addStyle(styleName: string, xml: string): void {
129
+ if (!this.styleXml!.query("style:style", {"style:name": styleName})) {
130
+ const stylesEl = this.styleXml!.query("office:styles")
131
+ stylesEl?.appendXML(xml)
109
132
  }
110
133
  }
111
134
 
112
- setStyleConfig() {
113
- const oldFnStyleConfigEl = this.styleXml.query(
135
+ setStyleConfig(): void {
136
+ const oldFnStyleConfigEl = this.styleXml!.query(
114
137
  "text:notes-configuration",
115
138
  {
116
139
  "text:note-class": "footnote"
117
140
  }
118
141
  )
119
142
  if (oldFnStyleConfigEl) {
120
- oldFnStyleConfigEl.parentElement.removeChild(oldFnStyleConfigEl)
143
+ oldFnStyleConfigEl.parentElement!.removeChild(oldFnStyleConfigEl)
121
144
  }
122
- const stylesEl = this.styleXml.query("office:styles")
123
- stylesEl.appendXML(DEFAULT_STYLE_FOOTNOTE_CONFIGURATION)
145
+ const stylesEl = this.styleXml!.query("office:styles")
146
+ stylesEl?.appendXML(DEFAULT_STYLE_FOOTNOTE_CONFIGURATION)
124
147
  }
125
148
 
126
- findFootnotes() {
149
+ findFootnotes(): void {
127
150
  descendantNodes(this.docContent).forEach(node => {
128
151
  if (node.type === "footnote") {
129
- this.footnotes.push(node.attrs.footnote)
152
+ this.footnotes.push(node.attrs?.footnote as FidusNode[])
130
153
  }
131
154
  })
132
155
  }
133
156
 
134
- convertFootnotes() {
135
- const fnContent = []
157
+ convertFootnotes(): void {
158
+ const fnContent: FidusNode[] = []
136
159
  this.footnotes.forEach(footnote => {
137
160
  fnContent.push({
138
161
  type: "footnotecontainer",
@@ -0,0 +1,135 @@
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
+
9
+ interface ImageInfo {
10
+ id: string
11
+ width: number
12
+ height: number
13
+ title?: string
14
+ type: string
15
+ svg: string | null
16
+ }
17
+
18
+ export class ODTExporterImages {
19
+ docContent: FidusNode
20
+ xml: XmlZip
21
+ imageDB: ImageDB
22
+ images: Record<string, ImageInfo>
23
+ manifestXml: XMLElement | null
24
+
25
+ constructor(docContent: FidusNode, xml: XmlZip, imageDB: ImageDB) {
26
+ this.docContent = docContent
27
+ this.xml = xml
28
+ this.imageDB = imageDB
29
+ this.images = {}
30
+ this.manifestXml = null
31
+ }
32
+
33
+ init(): Promise<void> {
34
+ return this.xml.getXml("META-INF/manifest.xml").then(manifestXml => {
35
+ this.manifestXml = manifestXml
36
+ return this.exportImages()
37
+ })
38
+ }
39
+
40
+ // add an image to the list of files
41
+ addImage(imgFileName: string, image: Blob): string {
42
+ imgFileName = this.addFileToManifest(imgFileName)
43
+ this.xml.addExtraFile(`Pictures/${imgFileName}`, image)
44
+ return imgFileName
45
+ }
46
+
47
+ // add a an image file to the manifest
48
+ addFileToManifest(imgFileName: string): string {
49
+ const fileNameParts = imgFileName.split(".")
50
+ const fileNameEnding = fileNameParts.pop() || ""
51
+ const fileNameStart = fileNameParts.join(".")
52
+ const manifestEl = this.manifestXml!.query("manifest:manifest")
53
+ let imgManifest = manifestEl?.query("manifest:file-entry", {
54
+ "manifest:full-path": `Pictures/${imgFileName}`
55
+ })
56
+ let counter = 0
57
+ while (imgManifest) {
58
+ // Name exists already, we change the name until we get a file name not yet included in manifest.
59
+ imgFileName = `${fileNameStart}_${counter++}.${fileNameEnding}`
60
+ imgManifest = manifestEl?.query("manifest:file-entry", {
61
+ "manifest:full-path": `Pictures/${imgFileName}`
62
+ })
63
+ }
64
+ const string = ` <manifest:file-entry manifest:full-path="Pictures/${imgFileName}" manifest:media-type="image/${fileNameEnding}"/>`
65
+ manifestEl?.appendXML(string)
66
+ return imgFileName
67
+ }
68
+
69
+ // Find all images used in file and add these to the export zip.
70
+ // TODO: This will likely fail on image types odt doesn't support such as
71
+ // SVG. Try out and fix.
72
+ exportImages(): Promise<void> {
73
+ const usedImgs: (string | number)[] = []
74
+
75
+ descendantNodes(this.docContent).forEach(node => {
76
+ if (node.type === "image" && node.attrs?.image !== false) {
77
+ const imageId = node.attrs?.image as string | number | undefined
78
+ if (imageId !== undefined && !usedImgs.includes(imageId)) {
79
+ usedImgs.push(imageId)
80
+ }
81
+ }
82
+ })
83
+
84
+ return new Promise(resolveExportImages => {
85
+ const p: Array<Promise<void>> = []
86
+
87
+ usedImgs.forEach(image => {
88
+ const imgDBEntry = this.imageDB.db[String(image)]
89
+ if (!imgDBEntry || !imgDBEntry.image) {
90
+ return
91
+ }
92
+ p.push(
93
+ get(imgDBEntry.image as string)
94
+ .then(response => response.blob())
95
+ .then(async blob => {
96
+ const wImgId = this.addImage(
97
+ (imgDBEntry.image as string).split("/").pop()!,
98
+ blob
99
+ )
100
+ if (blob.type === "image/svg+xml") {
101
+ // Add PNG version in addition to SVG
102
+ const {blob: pngBlob, width, height} = await svg2png(blob)
103
+ const pngWImgId = this.addImage(
104
+ (imgDBEntry.image as string)
105
+ .split("/")
106
+ .pop()!
107
+ .replace(/.svg$/g, ".png"),
108
+ pngBlob
109
+ )
110
+ this.images[String(image)] = {
111
+ id: pngWImgId,
112
+ width,
113
+ height,
114
+ title: imgDBEntry.title as string | undefined,
115
+ type: blob.type,
116
+ svg: wImgId
117
+ }
118
+ } else {
119
+ this.images[String(image)] = {
120
+ id: wImgId,
121
+ width: imgDBEntry.width as number,
122
+ height: imgDBEntry.height as number,
123
+ title: imgDBEntry.title as string | undefined,
124
+ type: blob.type,
125
+ svg: null
126
+ }
127
+ }
128
+ })
129
+ )
130
+ })
131
+
132
+ Promise.all(p).then(() => resolveExportImages())
133
+ })
134
+ }
135
+ }
@@ -1,11 +1,11 @@
1
1
  import download from "downloadjs"
2
2
 
3
3
  import {shortFileTitle} from "fwtoolkit"
4
-
4
+ import type {BibDB, CSL, ExportDoc, FidusNode, ImageDB} from "../../types.js"
5
5
  import {fixTables, removeHidden, textContent} from "../tools/doc_content.js"
6
6
  import {createSlug} from "../tools/file.js"
7
- import {XmlZip} from "../tools/xml_zip.js"
8
-
7
+ import type {XmlZip} from "../tools/xml_zip.js"
8
+ import {XmlZip as XmlZipImpl} from "../tools/xml_zip.js"
9
9
  import {ODTExporterCitations} from "./citations.js"
10
10
  import {ODTExporterFootnotes} from "./footnotes.js"
11
11
  import {ODTExporterImages} from "./images.js"
@@ -27,7 +27,24 @@ TODO:
27
27
  */
28
28
 
29
29
  export class ODTExporter {
30
- constructor(doc, templateUrl, bibDB, imageDB, csl) {
30
+ doc: ExportDoc
31
+ templateUrl: string
32
+ bibDB: BibDB
33
+ imageDB: ImageDB
34
+ csl: CSL
35
+
36
+ pmCits: any
37
+ docContent: any
38
+ docTitle: string
39
+ mimeType: string
40
+
41
+ constructor(
42
+ doc: ExportDoc,
43
+ templateUrl: string,
44
+ bibDB: BibDB,
45
+ imageDB: ImageDB,
46
+ csl: CSL
47
+ ) {
31
48
  this.doc = doc
32
49
  this.templateUrl = templateUrl
33
50
  this.bibDB = bibDB
@@ -35,13 +52,13 @@ export class ODTExporter {
35
52
  this.csl = csl
36
53
 
37
54
  this.pmCits = false
38
- this.docContent = fixTables(removeHidden(this.doc.content))
39
- this.docTitle = shortFileTitle(this.doc.title, this.doc.path)
55
+ this.docContent = fixTables(removeHidden(this.doc.content) as FidusNode)
56
+ this.docTitle = shortFileTitle(this.doc.title, this.doc.path || "")
40
57
  this.mimeType = "application/vnd.oasis.opendocument.text"
41
58
  }
42
59
 
43
- init() {
44
- const xml = new XmlZip(this.templateUrl, this.mimeType)
60
+ init(): Promise<void> {
61
+ const xml: XmlZip = new XmlZipImpl(this.templateUrl, this.mimeType)
45
62
  const styles = new ODTExporterStyles(xml)
46
63
  const math = new ODTExporterMath(xml)
47
64
  const tracks = new ODTExporterTracks(xml)
@@ -73,7 +90,7 @@ export class ODTExporter {
73
90
  const images = new ODTExporterImages(this.docContent, xml, this.imageDB)
74
91
 
75
92
  const richtext = new ODTExporterRichtext(
76
- this.doc.comments,
93
+ this.doc.comments || {},
77
94
  this.doc.settings,
78
95
  styles,
79
96
  tracks,
@@ -108,16 +125,16 @@ export class ODTExporter {
108
125
  .then(blob => this.download(blob))
109
126
  }
110
127
 
111
- getBaseMetadata() {
128
+ getBaseMetadata(): any {
112
129
  const contributors = this.docContent.content.reduce(
113
- (contributors, part) => {
130
+ (contributors: any[], part: any) => {
114
131
  if (
115
132
  part.type === "contributors_part" &&
116
133
  part.attrs.metadata &&
117
134
  part.content
118
135
  ) {
119
136
  return contributors.concat(
120
- part.content.map(node => ({
137
+ part.content.map((node: any) => ({
121
138
  ...node.attrs,
122
139
  role: part.attrs.metadata
123
140
  }))
@@ -129,28 +146,33 @@ export class ODTExporter {
129
146
  []
130
147
  )
131
148
  return {
132
- authors: contributors.filter(c => c.role === "authors"),
149
+ authors: contributors.filter((c: any) => c.role === "authors"),
133
150
  contributors,
134
- keywords: this.docContent.content.reduce((keywords, part) => {
135
- if (
136
- part.type === "tags_part" &&
137
- part.attrs.metadata === "keywords" &&
138
- part.content
139
- ) {
140
- return keywords.concat(
141
- part.content.map(keywordNode => keywordNode.attrs.tag)
142
- )
143
- } else {
144
- return keywords
145
- }
146
- }, []),
151
+ keywords: this.docContent.content.reduce(
152
+ (keywords: string[], part: any) => {
153
+ if (
154
+ part.type === "tags_part" &&
155
+ part.attrs.metadata === "keywords" &&
156
+ part.content
157
+ ) {
158
+ return keywords.concat(
159
+ part.content.map(
160
+ (keywordNode: any) => keywordNode.attrs.tag
161
+ )
162
+ )
163
+ } else {
164
+ return keywords
165
+ }
166
+ },
167
+ []
168
+ ),
147
169
  title: textContent(this.docContent.content[0]),
148
170
  language: this.doc.settings.language,
149
171
  citationStyle: this.doc.settings.citationstyle
150
172
  }
151
173
  }
152
174
 
153
- download(blob) {
175
+ download(blob: Blob): void {
154
176
  return download(blob, createSlug(this.docTitle) + ".odt", this.mimeType)
155
177
  }
156
178
  }