@fiduswriter/document 0.1.0-alpha.4 → 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 (550) hide show
  1. package/dist/bibliography/common.d.ts +9 -91
  2. package/dist/bibliography/common.d.ts.map +1 -1
  3. package/dist/bibliography/common.js +3 -2
  4. package/dist/bibliography/common.js.map +1 -1
  5. package/dist/bibliography/csl_bib.d.ts +1 -1
  6. package/dist/bibliography/csl_bib.d.ts.map +1 -1
  7. package/dist/bibliography/csl_bib.js +7 -7
  8. package/dist/bibliography/csl_bib.js.map +1 -1
  9. package/dist/citations/citeproc_sys.d.ts +9 -10
  10. package/dist/citations/citeproc_sys.d.ts.map +1 -1
  11. package/dist/citations/citeproc_sys.js +6 -1
  12. package/dist/citations/citeproc_sys.js.map +1 -1
  13. package/dist/citations/format.d.ts +33 -16
  14. package/dist/citations/format.d.ts.map +1 -1
  15. package/dist/citations/format.js +29 -4
  16. package/dist/citations/format.js.map +1 -1
  17. package/dist/editor/e2ee/encryptor.d.ts +35 -35
  18. package/dist/editor/e2ee/encryptor.d.ts.map +1 -1
  19. package/dist/editor/e2ee/encryptor.js +31 -31
  20. package/dist/editor/e2ee/encryptor.js.map +1 -1
  21. package/dist/exporter/docx/citations.d.ts +27 -17
  22. package/dist/exporter/docx/citations.d.ts.map +1 -1
  23. package/dist/exporter/docx/citations.js +24 -7
  24. package/dist/exporter/docx/citations.js.map +1 -1
  25. package/dist/exporter/docx/comments.d.ts +15 -11
  26. package/dist/exporter/docx/comments.d.ts.map +1 -1
  27. package/dist/exporter/docx/comments.js +47 -14
  28. package/dist/exporter/docx/comments.js.map +1 -1
  29. package/dist/exporter/docx/footnotes.d.ts +36 -31
  30. package/dist/exporter/docx/footnotes.d.ts.map +1 -1
  31. package/dist/exporter/docx/footnotes.js +46 -12
  32. package/dist/exporter/docx/footnotes.js.map +1 -1
  33. package/dist/exporter/docx/images.d.ts +23 -12
  34. package/dist/exporter/docx/images.d.ts.map +1 -1
  35. package/dist/exporter/docx/images.js +35 -20
  36. package/dist/exporter/docx/images.js.map +1 -1
  37. package/dist/exporter/docx/index.d.ts +11 -17
  38. package/dist/exporter/docx/index.d.ts.map +1 -1
  39. package/dist/exporter/docx/index.js +15 -7
  40. package/dist/exporter/docx/index.js.map +1 -1
  41. package/dist/exporter/docx/lists.d.ts +27 -22
  42. package/dist/exporter/docx/lists.d.ts.map +1 -1
  43. package/dist/exporter/docx/lists.js +77 -30
  44. package/dist/exporter/docx/lists.js.map +1 -1
  45. package/dist/exporter/docx/math.d.ts +9 -9
  46. package/dist/exporter/docx/math.d.ts.map +1 -1
  47. package/dist/exporter/docx/math.js +22 -5
  48. package/dist/exporter/docx/math.js.map +1 -1
  49. package/dist/exporter/docx/metadata.d.ts +12 -9
  50. package/dist/exporter/docx/metadata.d.ts.map +1 -1
  51. package/dist/exporter/docx/metadata.js +59 -26
  52. package/dist/exporter/docx/metadata.js.map +1 -1
  53. package/dist/exporter/docx/rels.d.ts +14 -12
  54. package/dist/exporter/docx/rels.d.ts.map +1 -1
  55. package/dist/exporter/docx/rels.js +37 -22
  56. package/dist/exporter/docx/rels.js.map +1 -1
  57. package/dist/exporter/docx/render.d.ts +17 -15
  58. package/dist/exporter/docx/render.d.ts.map +1 -1
  59. package/dist/exporter/docx/render.js +37 -31
  60. package/dist/exporter/docx/render.js.map +1 -1
  61. package/dist/exporter/docx/richtext.d.ts +8 -8
  62. package/dist/exporter/docx/richtext.d.ts.map +1 -1
  63. package/dist/exporter/docx/richtext.js +61 -43
  64. package/dist/exporter/docx/richtext.js.map +1 -1
  65. package/dist/exporter/docx/tables.d.ts +11 -9
  66. package/dist/exporter/docx/tables.d.ts.map +1 -1
  67. package/dist/exporter/docx/tables.js +16 -10
  68. package/dist/exporter/docx/tables.js.map +1 -1
  69. package/dist/exporter/docx/tools.d.ts +3 -2
  70. package/dist/exporter/docx/tools.d.ts.map +1 -1
  71. package/dist/exporter/docx/tools.js +3 -3
  72. package/dist/exporter/docx/tools.js.map +1 -1
  73. package/dist/exporter/epub/index.d.ts +11 -3
  74. package/dist/exporter/epub/index.d.ts.map +1 -1
  75. package/dist/exporter/epub/index.js +10 -3
  76. package/dist/exporter/epub/index.js.map +1 -1
  77. package/dist/exporter/epub/templates.d.ts +62 -31
  78. package/dist/exporter/epub/templates.d.ts.map +1 -1
  79. package/dist/exporter/epub/templates.js +1 -1
  80. package/dist/exporter/epub/templates.js.map +1 -1
  81. package/dist/exporter/epub/tools.d.ts +12 -4
  82. package/dist/exporter/epub/tools.d.ts.map +1 -1
  83. package/dist/exporter/epub/tools.js +14 -13
  84. package/dist/exporter/epub/tools.js.map +1 -1
  85. package/dist/exporter/html/citations.d.ts +17 -15
  86. package/dist/exporter/html/citations.d.ts.map +1 -1
  87. package/dist/exporter/html/citations.js +37 -18
  88. package/dist/exporter/html/citations.js.map +1 -1
  89. package/dist/exporter/html/convert.d.ts +20 -70
  90. package/dist/exporter/html/convert.d.ts.map +1 -1
  91. package/dist/exporter/html/convert.js +74 -42
  92. package/dist/exporter/html/convert.js.map +1 -1
  93. package/dist/exporter/html/index.d.ts +55 -52
  94. package/dist/exporter/html/index.d.ts.map +1 -1
  95. package/dist/exporter/html/index.js +23 -3
  96. package/dist/exporter/html/index.js.map +1 -1
  97. package/dist/exporter/html/templates.d.ts +23 -9
  98. package/dist/exporter/html/templates.d.ts.map +1 -1
  99. package/dist/exporter/html/templates.js +1 -1
  100. package/dist/exporter/html/templates.js.map +1 -1
  101. package/dist/exporter/html/tools.d.ts +1 -1
  102. package/dist/exporter/html/tools.d.ts.map +1 -1
  103. package/dist/exporter/html/tools.js +2 -2
  104. package/dist/exporter/html/tools.js.map +1 -1
  105. package/dist/exporter/jats/bibliography.d.ts +2 -1
  106. package/dist/exporter/jats/bibliography.d.ts.map +1 -1
  107. package/dist/exporter/jats/bibliography.js +57 -52
  108. package/dist/exporter/jats/bibliography.js.map +1 -1
  109. package/dist/exporter/jats/citations.d.ts +13 -11
  110. package/dist/exporter/jats/citations.d.ts.map +1 -1
  111. package/dist/exporter/jats/citations.js +28 -6
  112. package/dist/exporter/jats/citations.js.map +1 -1
  113. package/dist/exporter/jats/convert.d.ts +24 -28
  114. package/dist/exporter/jats/convert.d.ts.map +1 -1
  115. package/dist/exporter/jats/convert.js +53 -36
  116. package/dist/exporter/jats/convert.js.map +1 -1
  117. package/dist/exporter/jats/index.d.ts +21 -15
  118. package/dist/exporter/jats/index.d.ts.map +1 -1
  119. package/dist/exporter/jats/index.js +21 -5
  120. package/dist/exporter/jats/index.js.map +1 -1
  121. package/dist/exporter/jats/templates.d.ts +17 -15
  122. package/dist/exporter/jats/templates.d.ts.map +1 -1
  123. package/dist/exporter/jats/templates.js.map +1 -1
  124. package/dist/exporter/jats/text.d.ts +3 -2
  125. package/dist/exporter/jats/text.d.ts.map +1 -1
  126. package/dist/exporter/jats/text.js +4 -4
  127. package/dist/exporter/jats/text.js.map +1 -1
  128. package/dist/exporter/latex/convert.d.ts +12 -15
  129. package/dist/exporter/latex/convert.d.ts.map +1 -1
  130. package/dist/exporter/latex/convert.js +70 -54
  131. package/dist/exporter/latex/convert.js.map +1 -1
  132. package/dist/exporter/latex/escape_latex.d.ts +1 -1
  133. package/dist/exporter/latex/escape_latex.d.ts.map +1 -1
  134. package/dist/exporter/latex/escape_latex.js +1 -1
  135. package/dist/exporter/latex/escape_latex.js.map +1 -1
  136. package/dist/exporter/latex/index.d.ts +20 -19
  137. package/dist/exporter/latex/index.d.ts.map +1 -1
  138. package/dist/exporter/latex/index.js +15 -5
  139. package/dist/exporter/latex/index.js.map +1 -1
  140. package/dist/exporter/latex/readme.d.ts +1 -1
  141. package/dist/exporter/latex/readme.d.ts.map +1 -1
  142. package/dist/exporter/latex/readme.js +2 -2
  143. package/dist/exporter/latex/readme.js.map +1 -1
  144. package/dist/exporter/native/copy.d.ts +30 -0
  145. package/dist/exporter/native/copy.d.ts.map +1 -0
  146. package/dist/exporter/native/copy.js +151 -0
  147. package/dist/exporter/native/copy.js.map +1 -0
  148. package/dist/exporter/native/file.d.ts +12 -0
  149. package/dist/exporter/native/file.d.ts.map +1 -0
  150. package/dist/exporter/native/file.js +38 -0
  151. package/dist/exporter/native/file.js.map +1 -0
  152. package/dist/exporter/native/index.d.ts +5 -0
  153. package/dist/exporter/native/index.d.ts.map +1 -0
  154. package/dist/exporter/native/index.js +5 -0
  155. package/dist/exporter/native/index.js.map +1 -0
  156. package/dist/exporter/native/revision.d.ts +18 -0
  157. package/dist/exporter/native/revision.d.ts.map +1 -0
  158. package/dist/exporter/native/revision.js +39 -0
  159. package/dist/exporter/native/revision.js.map +1 -0
  160. package/dist/exporter/native/shrink.d.ts +29 -14
  161. package/dist/exporter/native/shrink.d.ts.map +1 -1
  162. package/dist/exporter/native/shrink.js +27 -18
  163. package/dist/exporter/native/shrink.js.map +1 -1
  164. package/dist/exporter/native/zip.d.ts +25 -0
  165. package/dist/exporter/native/zip.d.ts.map +1 -0
  166. package/dist/exporter/native/zip.js +56 -0
  167. package/dist/exporter/native/zip.js.map +1 -0
  168. package/dist/exporter/odt/citations.d.ts +18 -15
  169. package/dist/exporter/odt/citations.d.ts.map +1 -1
  170. package/dist/exporter/odt/citations.js +21 -4
  171. package/dist/exporter/odt/citations.js.map +1 -1
  172. package/dist/exporter/odt/footnotes.d.ts +25 -19
  173. package/dist/exporter/odt/footnotes.d.ts.map +1 -1
  174. package/dist/exporter/odt/footnotes.js +23 -6
  175. package/dist/exporter/odt/footnotes.js.map +1 -1
  176. package/dist/exporter/odt/images.d.ts +23 -11
  177. package/dist/exporter/odt/images.d.ts.map +1 -1
  178. package/dist/exporter/odt/images.js +34 -26
  179. package/dist/exporter/odt/images.js.map +1 -1
  180. package/dist/exporter/odt/index.d.ts +12 -18
  181. package/dist/exporter/odt/index.d.ts.map +1 -1
  182. package/dist/exporter/odt/index.js +16 -7
  183. package/dist/exporter/odt/index.js.map +1 -1
  184. package/dist/exporter/odt/math.d.ts +10 -8
  185. package/dist/exporter/odt/math.d.ts.map +1 -1
  186. package/dist/exporter/odt/math.js +27 -4
  187. package/dist/exporter/odt/math.js.map +1 -1
  188. package/dist/exporter/odt/metadata.d.ts +13 -9
  189. package/dist/exporter/odt/metadata.d.ts.map +1 -1
  190. package/dist/exporter/odt/metadata.js +36 -15
  191. package/dist/exporter/odt/metadata.js.map +1 -1
  192. package/dist/exporter/odt/render.d.ts +17 -15
  193. package/dist/exporter/odt/render.d.ts.map +1 -1
  194. package/dist/exporter/odt/render.js +25 -18
  195. package/dist/exporter/odt/render.js.map +1 -1
  196. package/dist/exporter/odt/richtext.d.ts +9 -9
  197. package/dist/exporter/odt/richtext.d.ts.map +1 -1
  198. package/dist/exporter/odt/richtext.js +55 -40
  199. package/dist/exporter/odt/richtext.js.map +1 -1
  200. package/dist/exporter/odt/styles.d.ts +29 -21
  201. package/dist/exporter/odt/styles.d.ts.map +1 -1
  202. package/dist/exporter/odt/styles.js +44 -22
  203. package/dist/exporter/odt/styles.js.map +1 -1
  204. package/dist/exporter/odt/track.d.ts +14 -7
  205. package/dist/exporter/odt/track.d.ts.map +1 -1
  206. package/dist/exporter/odt/track.js +7 -0
  207. package/dist/exporter/odt/track.js.map +1 -1
  208. package/dist/exporter/pandoc/citations.d.ts +20 -14
  209. package/dist/exporter/pandoc/citations.d.ts.map +1 -1
  210. package/dist/exporter/pandoc/citations.js +18 -4
  211. package/dist/exporter/pandoc/citations.js.map +1 -1
  212. package/dist/exporter/pandoc/convert.d.ts +10 -29
  213. package/dist/exporter/pandoc/convert.d.ts.map +1 -1
  214. package/dist/exporter/pandoc/convert.js +45 -40
  215. package/dist/exporter/pandoc/convert.js.map +1 -1
  216. package/dist/exporter/pandoc/index.d.ts +20 -33
  217. package/dist/exporter/pandoc/index.d.ts.map +1 -1
  218. package/dist/exporter/pandoc/index.js +20 -8
  219. package/dist/exporter/pandoc/index.js.map +1 -1
  220. package/dist/exporter/pandoc/readme.d.ts +1 -1
  221. package/dist/exporter/pandoc/readme.d.ts.map +1 -1
  222. package/dist/exporter/pandoc/readme.js +0 -1
  223. package/dist/exporter/pandoc/readme.js.map +1 -1
  224. package/dist/exporter/pandoc/tools.d.ts +21 -5
  225. package/dist/exporter/pandoc/tools.d.ts.map +1 -1
  226. package/dist/exporter/pandoc/tools.js +2 -2
  227. package/dist/exporter/pandoc/tools.js.map +1 -1
  228. package/dist/exporter/print/index.d.ts +18 -7
  229. package/dist/exporter/print/index.d.ts.map +1 -1
  230. package/dist/exporter/print/index.js +12 -10
  231. package/dist/exporter/print/index.js.map +1 -1
  232. package/dist/exporter/tools/doc_content.d.ts +5 -6
  233. package/dist/exporter/tools/doc_content.d.ts.map +1 -1
  234. package/dist/exporter/tools/doc_content.js +17 -16
  235. package/dist/exporter/tools/doc_content.js.map +1 -1
  236. package/dist/exporter/tools/svg.d.ts +7 -1
  237. package/dist/exporter/tools/svg.d.ts.map +1 -1
  238. package/dist/exporter/tools/svg.js.map +1 -1
  239. package/dist/exporter/tools/xml.d.ts +39 -38
  240. package/dist/exporter/tools/xml.d.ts.map +1 -1
  241. package/dist/exporter/tools/xml.js +82 -55
  242. package/dist/exporter/tools/xml.js.map +1 -1
  243. package/dist/exporter/tools/xml_zip.d.ts +15 -14
  244. package/dist/exporter/tools/xml_zip.d.ts.map +1 -1
  245. package/dist/exporter/tools/xml_zip.js +8 -2
  246. package/dist/exporter/tools/xml_zip.js.map +1 -1
  247. package/dist/exporter/tools/zip.d.ts +28 -14
  248. package/dist/exporter/tools/zip.d.ts.map +1 -1
  249. package/dist/exporter/tools/zip.js +13 -6
  250. package/dist/exporter/tools/zip.js.map +1 -1
  251. package/dist/exporter/tools/zotero_csl.d.ts +19 -6
  252. package/dist/exporter/tools/zotero_csl.d.ts.map +1 -1
  253. package/dist/exporter/tools/zotero_csl.js +9 -9
  254. package/dist/exporter/tools/zotero_csl.js.map +1 -1
  255. package/dist/importer/citations.d.ts +25 -22
  256. package/dist/importer/citations.d.ts.map +1 -1
  257. package/dist/importer/citations.js +1 -49
  258. package/dist/importer/citations.js.map +1 -1
  259. package/dist/importer/docx/citations.d.ts +8 -30
  260. package/dist/importer/docx/citations.d.ts.map +1 -1
  261. package/dist/importer/docx/citations.js +1 -26
  262. package/dist/importer/docx/citations.js.map +1 -1
  263. package/dist/importer/docx/convert.d.ts +38 -116
  264. package/dist/importer/docx/convert.d.ts.map +1 -1
  265. package/dist/importer/docx/convert.js +99 -82
  266. package/dist/importer/docx/convert.js.map +1 -1
  267. package/dist/importer/docx/helpers.d.ts +1 -1
  268. package/dist/importer/docx/helpers.d.ts.map +1 -1
  269. package/dist/importer/docx/helpers.js +1 -1
  270. package/dist/importer/docx/helpers.js.map +1 -1
  271. package/dist/importer/docx/index.d.ts +27 -0
  272. package/dist/importer/docx/index.d.ts.map +1 -0
  273. package/dist/importer/docx/index.js +77 -0
  274. package/dist/importer/docx/index.js.map +1 -0
  275. package/dist/importer/docx/omml2mathml.d.ts +2 -3
  276. package/dist/importer/docx/omml2mathml.d.ts.map +1 -1
  277. package/dist/importer/docx/omml2mathml.js +23 -116
  278. package/dist/importer/docx/omml2mathml.js.map +1 -1
  279. package/dist/importer/docx/parse.d.ts +22 -131
  280. package/dist/importer/docx/parse.d.ts.map +1 -1
  281. package/dist/importer/docx/parse.js +73 -55
  282. package/dist/importer/docx/parse.js.map +1 -1
  283. package/dist/importer/native/extract_template.d.ts +6 -0
  284. package/dist/importer/native/extract_template.d.ts.map +1 -0
  285. package/dist/importer/native/extract_template.js +80 -0
  286. package/dist/importer/native/extract_template.js.map +1 -0
  287. package/dist/importer/native/file.d.ts +37 -0
  288. package/dist/importer/native/file.d.ts.map +1 -0
  289. package/dist/importer/native/file.js +162 -0
  290. package/dist/importer/native/file.js.map +1 -0
  291. package/dist/importer/native/get_images.d.ts +18 -8
  292. package/dist/importer/native/get_images.d.ts.map +1 -1
  293. package/dist/importer/native/get_images.js +39 -45
  294. package/dist/importer/native/get_images.js.map +1 -1
  295. package/dist/importer/native/importer.d.ts +41 -0
  296. package/dist/importer/native/importer.d.ts.map +1 -0
  297. package/dist/importer/native/importer.js +170 -0
  298. package/dist/importer/native/importer.js.map +1 -0
  299. package/dist/importer/native/index.d.ts +7 -0
  300. package/dist/importer/native/index.d.ts.map +1 -0
  301. package/dist/importer/native/index.js +7 -0
  302. package/dist/importer/native/index.js.map +1 -0
  303. package/dist/importer/native/update.d.ts +5 -4
  304. package/dist/importer/native/update.d.ts.map +1 -1
  305. package/dist/importer/native/update.js +4 -3
  306. package/dist/importer/native/update.js.map +1 -1
  307. package/dist/importer/native/update_template.d.ts +12 -0
  308. package/dist/importer/native/update_template.d.ts.map +1 -0
  309. package/dist/importer/native/update_template.js +19 -0
  310. package/dist/importer/native/update_template.js.map +1 -0
  311. package/dist/importer/odt/citations.d.ts +7 -27
  312. package/dist/importer/odt/citations.d.ts.map +1 -1
  313. package/dist/importer/odt/citations.js +0 -22
  314. package/dist/importer/odt/citations.js.map +1 -1
  315. package/dist/importer/odt/convert.d.ts +53 -237
  316. package/dist/importer/odt/convert.d.ts.map +1 -1
  317. package/dist/importer/odt/convert.js +162 -138
  318. package/dist/importer/odt/convert.js.map +1 -1
  319. package/dist/importer/odt/index.d.ts +30 -0
  320. package/dist/importer/odt/index.d.ts.map +1 -0
  321. package/dist/importer/odt/index.js +124 -0
  322. package/dist/importer/odt/index.js.map +1 -0
  323. package/dist/importer/pandoc/convert.d.ts +25 -77
  324. package/dist/importer/pandoc/convert.d.ts.map +1 -1
  325. package/dist/importer/pandoc/convert.js +65 -52
  326. package/dist/importer/pandoc/convert.js.map +1 -1
  327. package/dist/importer/pandoc/helpers.d.ts +4 -3
  328. package/dist/importer/pandoc/helpers.d.ts.map +1 -1
  329. package/dist/importer/pandoc/helpers.js +24 -26
  330. package/dist/importer/pandoc/helpers.js.map +1 -1
  331. package/dist/importer/pandoc/index.d.ts +31 -0
  332. package/dist/importer/pandoc/index.d.ts.map +1 -0
  333. package/dist/importer/pandoc/index.js +114 -0
  334. package/dist/importer/pandoc/index.js.map +1 -0
  335. package/dist/importer/registry.d.ts +21 -0
  336. package/dist/importer/registry.d.ts.map +1 -0
  337. package/dist/importer/registry.js +41 -0
  338. package/dist/importer/registry.js.map +1 -0
  339. package/dist/importer/zip_analyzer.d.ts +27 -21
  340. package/dist/importer/zip_analyzer.d.ts.map +1 -1
  341. package/dist/importer/zip_analyzer.js +10 -5
  342. package/dist/importer/zip_analyzer.js.map +1 -1
  343. package/dist/mathlive/opf_includes.d.ts +1 -1
  344. package/dist/mathlive/opf_includes.d.ts.map +1 -1
  345. package/dist/mathlive/opf_includes.js.map +1 -1
  346. package/dist/schema/common/annotate.d.ts +37 -49
  347. package/dist/schema/common/annotate.d.ts.map +1 -1
  348. package/dist/schema/common/annotate.js +2 -2
  349. package/dist/schema/common/annotate.js.map +1 -1
  350. package/dist/schema/common/base.d.ts +63 -81
  351. package/dist/schema/common/base.d.ts.map +1 -1
  352. package/dist/schema/common/base.js.map +1 -1
  353. package/dist/schema/common/citation.d.ts +23 -22
  354. package/dist/schema/common/citation.d.ts.map +1 -1
  355. package/dist/schema/common/citation.js +4 -5
  356. package/dist/schema/common/citation.js.map +1 -1
  357. package/dist/schema/common/equation.d.ts +13 -14
  358. package/dist/schema/common/equation.d.ts.map +1 -1
  359. package/dist/schema/common/equation.js +1 -1
  360. package/dist/schema/common/equation.js.map +1 -1
  361. package/dist/schema/common/figure.d.ts +72 -93
  362. package/dist/schema/common/figure.d.ts.map +1 -1
  363. package/dist/schema/common/figure.js +11 -9
  364. package/dist/schema/common/figure.js.map +1 -1
  365. package/dist/schema/common/heading.d.ts +8 -32
  366. package/dist/schema/common/heading.d.ts.map +1 -1
  367. package/dist/schema/common/heading.js +2 -2
  368. package/dist/schema/common/heading.js.map +1 -1
  369. package/dist/schema/common/index.d.ts +2 -2
  370. package/dist/schema/common/index.d.ts.map +1 -1
  371. package/dist/schema/common/index.js.map +1 -1
  372. package/dist/schema/common/list.d.ts +52 -72
  373. package/dist/schema/common/list.d.ts.map +1 -1
  374. package/dist/schema/common/list.js +3 -3
  375. package/dist/schema/common/list.js.map +1 -1
  376. package/dist/schema/common/reference.d.ts +51 -59
  377. package/dist/schema/common/reference.d.ts.map +1 -1
  378. package/dist/schema/common/reference.js +5 -5
  379. package/dist/schema/common/reference.js.map +1 -1
  380. package/dist/schema/common/table.d.ts +59 -75
  381. package/dist/schema/common/table.d.ts.map +1 -1
  382. package/dist/schema/common/table.js +3 -2
  383. package/dist/schema/common/table.js.map +1 -1
  384. package/dist/schema/common/track.d.ts +83 -97
  385. package/dist/schema/common/track.d.ts.map +1 -1
  386. package/dist/schema/common/track.js +18 -17
  387. package/dist/schema/common/track.js.map +1 -1
  388. package/dist/schema/convert.d.ts +2 -2
  389. package/dist/schema/convert.d.ts.map +1 -1
  390. package/dist/schema/convert.js +2 -2
  391. package/dist/schema/convert.js.map +1 -1
  392. package/dist/schema/document/content.d.ts +95 -122
  393. package/dist/schema/document/content.d.ts.map +1 -1
  394. package/dist/schema/document/content.js +9 -9
  395. package/dist/schema/document/content.js.map +1 -1
  396. package/dist/schema/document/index.d.ts +173 -257
  397. package/dist/schema/document/index.d.ts.map +1 -1
  398. package/dist/schema/document/index.js.map +1 -1
  399. package/dist/schema/document/structure.d.ts +149 -258
  400. package/dist/schema/document/structure.d.ts.map +1 -1
  401. package/dist/schema/document/structure.js +2 -2
  402. package/dist/schema/document/structure.js.map +1 -1
  403. package/dist/schema/export.d.ts +4 -877
  404. package/dist/schema/export.d.ts.map +1 -1
  405. package/dist/schema/export.js +1 -0
  406. package/dist/schema/export.js.map +1 -1
  407. package/dist/schema/footnotes.d.ts +110 -155
  408. package/dist/schema/footnotes.d.ts.map +1 -1
  409. package/dist/schema/footnotes.js +4 -2
  410. package/dist/schema/footnotes.js.map +1 -1
  411. package/dist/schema/footnotes_convert.d.ts +3 -3
  412. package/dist/schema/footnotes_convert.d.ts.map +1 -1
  413. package/dist/schema/footnotes_convert.js +10 -6
  414. package/dist/schema/footnotes_convert.js.map +1 -1
  415. package/dist/schema/i18n.d.ts +3 -534
  416. package/dist/schema/i18n.d.ts.map +1 -1
  417. package/dist/schema/i18n.js +1 -0
  418. package/dist/schema/i18n.js.map +1 -1
  419. package/dist/schema/index.d.ts +1 -1
  420. package/dist/schema/index.d.ts.map +1 -1
  421. package/dist/schema/index.js.map +1 -1
  422. package/dist/schema/mini_json.d.ts +3 -4
  423. package/dist/schema/mini_json.d.ts.map +1 -1
  424. package/dist/schema/mini_json.js +2 -0
  425. package/dist/schema/mini_json.js.map +1 -1
  426. package/dist/schema/text.d.ts +2 -1
  427. package/dist/schema/text.d.ts.map +1 -1
  428. package/dist/schema/text.js +1 -1
  429. package/dist/schema/text.js.map +1 -1
  430. package/dist/types.d.ts +167 -8
  431. package/dist/types.d.ts.map +1 -1
  432. package/package.json +4 -1
  433. package/src/bibliography/{common.js → common.ts} +15 -12
  434. package/src/bibliography/{csl_bib.js → csl_bib.ts} +16 -15
  435. package/src/citations/{citeproc_sys.js → citeproc_sys.ts} +26 -6
  436. package/src/citations/{format.js → format.ts} +80 -24
  437. package/src/editor/e2ee/{encryptor.js → encryptor.ts} +76 -44
  438. package/src/exporter/docx/{citations.js → citations.ts} +51 -23
  439. package/src/exporter/docx/{comments.js → comments.ts} +69 -26
  440. package/src/exporter/docx/{footnotes.js → footnotes.ts} +81 -42
  441. package/src/exporter/docx/images.ts +128 -0
  442. package/src/exporter/docx/{index.js → index.ts} +48 -25
  443. package/src/exporter/docx/{lists.js → lists.ts} +89 -46
  444. package/src/exporter/docx/{math.js → math.ts} +29 -9
  445. package/src/exporter/docx/{metadata.js → metadata.ts} +78 -42
  446. package/src/exporter/docx/{rels.js → rels.ts} +71 -50
  447. package/src/exporter/docx/{render.js → render.ts} +124 -87
  448. package/src/exporter/docx/{richtext.js → richtext.ts} +107 -84
  449. package/src/exporter/docx/{tables.js → tables.ts} +33 -23
  450. package/src/exporter/docx/{tools.js → tools.ts} +4 -3
  451. package/src/exporter/epub/{index.js → index.ts} +44 -15
  452. package/src/exporter/epub/{templates.js → templates.ts} +71 -7
  453. package/src/exporter/epub/{tools.js → tools.ts} +31 -25
  454. package/src/exporter/html/{citations.js → citations.ts} +79 -31
  455. package/src/exporter/html/{convert.js → convert.ts} +118 -71
  456. package/src/exporter/html/{index.js → index.ts} +63 -29
  457. package/src/exporter/html/{templates.js → templates.ts} +22 -2
  458. package/src/exporter/html/{tools.js → tools.ts} +9 -6
  459. package/src/exporter/jats/bibliography.ts +199 -0
  460. package/src/exporter/jats/{citations.js → citations.ts} +56 -20
  461. package/src/exporter/jats/{convert.js → convert.ts} +72 -53
  462. package/src/exporter/jats/index.ts +132 -0
  463. package/src/exporter/jats/{templates.js → templates.ts} +19 -3
  464. package/src/exporter/jats/{text.js → text.ts} +8 -6
  465. package/src/exporter/latex/{convert.js → convert.ts} +160 -125
  466. package/src/exporter/latex/{escape_latex.js → escape_latex.ts} +1 -1
  467. package/src/exporter/latex/{index.js → index.ts} +27 -12
  468. package/src/exporter/latex/{readme.js → readme.ts} +2 -2
  469. package/src/exporter/native/copy.ts +231 -0
  470. package/src/exporter/native/file.ts +65 -0
  471. package/src/exporter/native/index.ts +4 -0
  472. package/src/exporter/native/revision.ts +76 -0
  473. package/src/exporter/native/{shrink.js → shrink.ts} +64 -29
  474. package/src/exporter/native/zip.ts +85 -0
  475. package/src/exporter/odt/{citations.js → citations.ts} +35 -15
  476. package/src/exporter/odt/{footnotes.js → footnotes.ts} +53 -30
  477. package/src/exporter/odt/images.ts +135 -0
  478. package/src/exporter/odt/{index.js → index.ts} +49 -27
  479. package/src/exporter/odt/{math.js → math.ts} +38 -9
  480. package/src/exporter/odt/{metadata.js → metadata.ts} +54 -29
  481. package/src/exporter/odt/{render.js → render.ts} +89 -60
  482. package/src/exporter/odt/{richtext.js → richtext.ts} +102 -72
  483. package/src/exporter/odt/{styles.js → styles.ts} +98 -66
  484. package/src/exporter/odt/{track.js → track.ts} +22 -6
  485. package/src/exporter/pandoc/{citations.js → citations.ts} +31 -15
  486. package/src/exporter/pandoc/{convert.js → convert.ts} +98 -79
  487. package/src/exporter/pandoc/{index.js → index.ts} +36 -13
  488. package/src/exporter/pandoc/{readme.js → readme.ts} +0 -1
  489. package/src/exporter/pandoc/{tools.js → tools.ts} +28 -5
  490. package/src/exporter/print/{index.js → index.ts} +38 -19
  491. package/src/exporter/tools/{doc_content.js → doc_content.ts} +34 -24
  492. package/src/exporter/tools/{svg.js → svg.ts} +9 -3
  493. package/src/exporter/tools/{xml.js → xml.ts} +187 -138
  494. package/src/exporter/tools/{xml_zip.js → xml_zip.ts} +19 -11
  495. package/src/exporter/tools/{zip.js → zip.ts} +35 -11
  496. package/src/exporter/tools/{zotero_csl.js → zotero_csl.ts} +35 -18
  497. package/src/global.d.ts +2 -0
  498. package/src/importer/citations.ts +116 -0
  499. package/src/importer/docx/{citations.js → citations.ts} +22 -37
  500. package/src/importer/docx/{convert.js → convert.ts} +176 -141
  501. package/src/importer/docx/{helpers.js → helpers.ts} +1 -1
  502. package/src/importer/docx/index.ts +124 -0
  503. package/src/importer/docx/{omml2mathml.js → omml2mathml.ts} +154 -176
  504. package/src/importer/docx/{parse.js → parse.ts} +103 -81
  505. package/src/importer/native/extract_template.ts +83 -0
  506. package/src/importer/native/file.ts +282 -0
  507. package/src/importer/native/get_images.ts +82 -0
  508. package/src/importer/native/importer.ts +244 -0
  509. package/src/importer/native/index.ts +6 -0
  510. package/src/importer/native/{update.js → update.ts} +13 -5
  511. package/src/importer/native/update_template.ts +32 -0
  512. package/src/importer/odt/{citations.js → citations.ts} +17 -29
  513. package/src/importer/odt/{convert.js → convert.ts} +261 -237
  514. package/src/importer/odt/index.ts +202 -0
  515. package/src/importer/pandoc/{convert.js → convert.ts} +116 -94
  516. package/src/importer/pandoc/{helpers.js → helpers.ts} +24 -12
  517. package/src/importer/pandoc/index.ts +171 -0
  518. package/src/importer/registry.ts +69 -0
  519. package/src/importer/{zip_analyzer.js → zip_analyzer.ts} +44 -18
  520. package/src/mathlive/{opf_includes.js → opf_includes.ts} +1 -1
  521. package/src/modules.d.ts +40 -0
  522. package/src/schema/common/{annotate.js → annotate.ts} +10 -8
  523. package/src/schema/common/{base.js → base.ts} +12 -10
  524. package/src/schema/common/{citation.js → citation.ts} +17 -8
  525. package/src/schema/common/{equation.js → equation.ts} +6 -4
  526. package/src/schema/common/{figure.js → figure.ts} +43 -23
  527. package/src/schema/common/{heading.js → heading.ts} +7 -5
  528. package/src/schema/common/{list.js → list.ts} +15 -13
  529. package/src/schema/common/{reference.js → reference.ts} +14 -12
  530. package/src/schema/common/{table.js → table.ts} +16 -14
  531. package/src/schema/common/{track.js → track.ts} +42 -31
  532. package/src/schema/{convert.js → convert.ts} +6 -2
  533. package/src/schema/document/{content.js → content.ts} +22 -20
  534. package/src/schema/document/{structure.js → structure.ts} +15 -9
  535. package/src/schema/{export.js → export.ts} +4 -2
  536. package/src/schema/{footnotes.js → footnotes.ts} +11 -8
  537. package/src/schema/{footnotes_convert.js → footnotes_convert.ts} +11 -8
  538. package/src/schema/{i18n.js → i18n.ts} +7 -1
  539. package/src/schema/{mini_json.js → mini_json.ts} +11 -12
  540. package/src/schema/{text.js → text.ts} +6 -2
  541. package/src/types.ts +185 -7
  542. package/src/exporter/docx/images.js +0 -101
  543. package/src/exporter/jats/bibliography.js +0 -183
  544. package/src/exporter/jats/index.js +0 -92
  545. package/src/exporter/odt/images.js +0 -115
  546. package/src/importer/citations.js +0 -129
  547. package/src/importer/native/get_images.js +0 -76
  548. /package/src/schema/common/{index.js → index.ts} +0 -0
  549. /package/src/schema/document/{index.js → index.ts} +0 -0
  550. /package/src/schema/{index.js → index.ts} +0 -0
@@ -1,5 +1,10 @@
1
1
  import {escapeText} from "fwtoolkit"
2
+
3
+ import type {CommentData, FidusNode} from "../../types.js"
2
4
  import {descendantNodes} from "../tools/doc_content.js"
5
+ import type {XMLElement} from "../tools/xml.js"
6
+ import type {XmlZip} from "../tools/xml_zip.js"
7
+ import type {DOCXExporterRels} from "./rels.js"
3
8
 
4
9
  const DEFAULT_COMMENTS_XML = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
5
10
  <w:comments xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" mc:Ignorable="w14 wp14 w15">
@@ -10,7 +15,26 @@ const DEFAULT_COMMENTS_EXTENDED_XML = `<?xml version="1.0" encoding="UTF-8" stan
10
15
  </w15:commentsEx>`
11
16
 
12
17
  export class DOCXExporterComments {
13
- constructor(docContent, commentsDB, xml, rels, richtext) {
18
+ docContent: FidusNode
19
+ commentsDB: Record<string, CommentData>
20
+ xml: XmlZip
21
+ rels: DOCXExporterRels
22
+ richtext: any
23
+
24
+ usedComments: string[]
25
+ commentsXML: XMLElement | null
26
+ commentsExtendedXML: XMLElement | null
27
+ commentsFilePath: string
28
+ commentsExtendedFilePath: string
29
+ commentIdCounter: number
30
+
31
+ constructor(
32
+ docContent: FidusNode,
33
+ commentsDB: Record<string, CommentData>,
34
+ xml: XmlZip,
35
+ rels: DOCXExporterRels,
36
+ richtext: any
37
+ ) {
14
38
  this.docContent = docContent
15
39
  this.commentsDB = commentsDB
16
40
  this.xml = xml
@@ -18,14 +42,14 @@ export class DOCXExporterComments {
18
42
  this.richtext = richtext
19
43
 
20
44
  this.usedComments = []
21
- this.commentsXML = false
22
- this.commentsExtendedXML = false
45
+ this.commentsXML = null
46
+ this.commentsExtendedXML = null
23
47
  this.commentsFilePath = "word/comments.xml"
24
48
  this.commentsExtendedFilePath = "word/commentsExtended.xml"
25
49
  this.commentIdCounter = -1
26
50
  }
27
51
 
28
- init() {
52
+ init(): Promise<void> | undefined {
29
53
  let useExtended = false
30
54
  descendantNodes(this.docContent).forEach(node => {
31
55
  if (node.marks) {
@@ -33,14 +57,17 @@ export class DOCXExporterComments {
33
57
  mark => mark.type === "comment"
34
58
  )
35
59
  comments.forEach(comment => {
60
+ const commentId = String(comment.attrs?.id)
36
61
  if (
37
- !this.usedComments.includes(comment.attrs.id) &&
38
- this.commentsDB[comment.attrs.id]
62
+ commentId &&
63
+ !this.usedComments.includes(commentId) &&
64
+ this.commentsDB[commentId]
39
65
  ) {
40
- this.usedComments.push(comment.attrs.id)
66
+ this.usedComments.push(commentId)
67
+ const commentDBEntry = this.commentsDB[commentId]
41
68
  if (
42
- this.commentsDB[comment.attrs.id].resolved ||
43
- this.commentsDB[comment.attrs.id].answers?.length
69
+ commentDBEntry.resolved ||
70
+ commentDBEntry.answers?.length
44
71
  ) {
45
72
  useExtended = true
46
73
  }
@@ -52,10 +79,13 @@ export class DOCXExporterComments {
52
79
  return Promise.resolve()
53
80
  }
54
81
  this.rels.addCommentsRel()
55
- const addCommentXMLs = [
82
+ const addCommentXMLs: Array<Promise<void>> = [
56
83
  this.xml
57
84
  .getXml(this.commentsFilePath, DEFAULT_COMMENTS_XML)
58
- .then(commentsXML => (this.commentsXML = commentsXML))
85
+ .then(commentsXML => {
86
+ this.commentsXML = commentsXML
87
+ return undefined
88
+ })
59
89
  ]
60
90
  if (useExtended) {
61
91
  this.rels.addCommentsExtendedRel()
@@ -65,15 +95,18 @@ export class DOCXExporterComments {
65
95
  this.commentsExtendedFilePath,
66
96
  DEFAULT_COMMENTS_EXTENDED_XML
67
97
  )
68
- .then(
69
- commentsExtendedXML =>
70
- (this.commentsExtendedXML = commentsExtendedXML)
71
- )
98
+ .then(commentsExtendedXML => {
99
+ this.commentsExtendedXML = commentsExtendedXML
100
+ return undefined
101
+ })
72
102
  )
73
103
  }
74
104
  return Promise.all(addCommentXMLs).then(() => {
105
+ if (!this.commentsXML) {
106
+ return Promise.resolve()
107
+ }
75
108
  this.commentsXML.queryAll("w:comment").forEach(el => {
76
- const id = Number.parseInt(el.getAttribute("w:id"))
109
+ const id = Number.parseInt(String(el.getAttribute("w:id")))
77
110
  if (id > this.commentIdCounter) {
78
111
  this.commentIdCounter = id
79
112
  }
@@ -82,11 +115,17 @@ export class DOCXExporterComments {
82
115
  })
83
116
  }
84
117
 
85
- addComment(id) {
118
+ addComment(id: string): void {
86
119
  const commentId = ++this.commentIdCounter
87
120
  this.richtext.comments[id] = commentId
88
121
  const commentDBEntry = this.commentsDB[id]
122
+ if (!this.commentsXML || !commentDBEntry) {
123
+ return
124
+ }
89
125
  const comments = this.commentsXML.query("w:comments")
126
+ if (!comments) {
127
+ return
128
+ }
90
129
  let string = `<w:comment w:id="${commentId}" w:author="${escapeText(commentDBEntry.username)}" w:date="${new Date(commentDBEntry.date).toISOString().split(".")[0]}Z" w:initials="${escapeText(
91
130
  commentDBEntry.username
92
131
  .split(" ")
@@ -97,7 +136,7 @@ export class DOCXExporterComments {
97
136
  let parentParagraphId = ""
98
137
  string += commentDBEntry.comment
99
138
  .map((node, index) => {
100
- const options = {section: "CommentText"}
139
+ const options: Record<string, unknown> = {section: "CommentText"}
101
140
  if (
102
141
  (commentDBEntry.resolved ||
103
142
  commentDBEntry.answers?.length) &&
@@ -110,9 +149,11 @@ export class DOCXExporterComments {
110
149
  .padStart(8, "0")
111
150
  options.paragraphId = parentParagraphId
112
151
  const extendedString = `<w15:commentEx w15:paraId="${parentParagraphId}" w15:done="${commentDBEntry.resolved ? "1" : "0"}"/>`
113
- const extendedComments =
114
- this.commentsExtendedXML.query("w15:commentsEx")
115
- extendedComments.appendXML(extendedString)
152
+ if (this.commentsExtendedXML) {
153
+ const extendedComments =
154
+ this.commentsExtendedXML.query("w15:commentsEx")
155
+ extendedComments?.appendXML(extendedString)
156
+ }
116
157
  }
117
158
  if (!index) {
118
159
  options.commentReference = true
@@ -132,7 +173,7 @@ export class DOCXExporterComments {
132
173
  )}">`
133
174
  string += answer.answer
134
175
  .map((node, index) => {
135
- const options = {section: "CommentText"}
176
+ const options: Record<string, unknown> = {section: "CommentText"}
136
177
  if (index === answer.answer.length - 1) {
137
178
  // We need to add an id to the last paragraph of the comment and add an entry
138
179
  // into commentsExtended.xml pointing to the last paragraph of the parent comment.
@@ -141,9 +182,11 @@ export class DOCXExporterComments {
141
182
  .padStart(8, "0")
142
183
  options.paragraphId = paragraphId
143
184
  const extendedString = `<w15:commentEx w15:paraId="${paragraphId}" w15:done="${commentDBEntry.resolved ? "1" : "0"}" w15:paraIdParent="${parentParagraphId}"/>`
144
- const extendedComments =
145
- this.commentsExtendedXML.query("w15:commentsEx")
146
- extendedComments.appendXML(extendedString)
185
+ if (this.commentsExtendedXML) {
186
+ const extendedComments =
187
+ this.commentsExtendedXML.query("w15:commentsEx")
188
+ extendedComments?.appendXML(extendedString)
189
+ }
147
190
  }
148
191
  if (!index) {
149
192
  options.commentReference = true
@@ -156,7 +199,7 @@ export class DOCXExporterComments {
156
199
  comments.appendXML(string)
157
200
  }
158
201
 
159
- exportComments() {
202
+ exportComments(): Promise<void> {
160
203
  this.usedComments.forEach(comment => {
161
204
  this.addComment(comment)
162
205
  })
@@ -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
+ }