@fiduswriter/document 0.1.0-alpha.3 → 0.1.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/README.md +22 -1
  2. package/dist/bibliography/common.d.ts +10 -0
  3. package/dist/bibliography/common.d.ts.map +1 -0
  4. package/dist/bibliography/common.js +86 -0
  5. package/dist/bibliography/common.js.map +1 -0
  6. package/dist/bibliography/csl_bib.d.ts +3 -0
  7. package/dist/bibliography/csl_bib.d.ts.map +1 -0
  8. package/dist/bibliography/csl_bib.js +131 -0
  9. package/dist/bibliography/csl_bib.js.map +1 -0
  10. package/dist/citations/citeproc_sys.d.ts +12 -0
  11. package/dist/citations/citeproc_sys.d.ts.map +1 -0
  12. package/dist/citations/citeproc_sys.js +48 -0
  13. package/dist/citations/citeproc_sys.js.map +1 -0
  14. package/dist/citations/format.d.ts +40 -0
  15. package/dist/citations/format.d.ts.map +1 -0
  16. package/dist/citations/format.js +186 -0
  17. package/dist/citations/format.js.map +1 -0
  18. package/dist/editor/e2ee/encryptor.d.ts +123 -0
  19. package/dist/editor/e2ee/encryptor.d.ts.map +1 -0
  20. package/dist/editor/e2ee/encryptor.js +201 -0
  21. package/dist/editor/e2ee/encryptor.js.map +1 -0
  22. package/dist/exporter/docx/citations.d.ts +31 -0
  23. package/dist/exporter/docx/citations.d.ts.map +1 -0
  24. package/dist/exporter/docx/citations.js +171 -0
  25. package/dist/exporter/docx/citations.js.map +1 -0
  26. package/dist/exporter/docx/comments.d.ts +22 -0
  27. package/dist/exporter/docx/comments.d.ts.map +1 -0
  28. package/dist/exporter/docx/comments.js +170 -0
  29. package/dist/exporter/docx/comments.js.map +1 -0
  30. package/dist/exporter/docx/footnotes.d.ts +47 -0
  31. package/dist/exporter/docx/footnotes.d.ts.map +1 -0
  32. package/dist/exporter/docx/footnotes.js +216 -0
  33. package/dist/exporter/docx/footnotes.js.map +1 -0
  34. package/dist/exporter/docx/images.d.ts +25 -0
  35. package/dist/exporter/docx/images.d.ts.map +1 -0
  36. package/dist/exporter/docx/images.js +101 -0
  37. package/dist/exporter/docx/images.js.map +1 -0
  38. package/dist/exporter/docx/index.d.ts +16 -0
  39. package/dist/exporter/docx/index.d.ts.map +1 -0
  40. package/dist/exporter/docx/index.js +115 -0
  41. package/dist/exporter/docx/index.js.map +1 -0
  42. package/dist/exporter/docx/lists.d.ts +38 -0
  43. package/dist/exporter/docx/lists.d.ts.map +1 -0
  44. package/dist/exporter/docx/lists.js +276 -0
  45. package/dist/exporter/docx/lists.js.map +1 -0
  46. package/dist/exporter/docx/math.d.ts +13 -0
  47. package/dist/exporter/docx/math.d.ts.map +1 -0
  48. package/dist/exporter/docx/math.js +59 -0
  49. package/dist/exporter/docx/math.js.map +1 -0
  50. package/dist/exporter/docx/metadata.d.ts +17 -0
  51. package/dist/exporter/docx/metadata.d.ts.map +1 -0
  52. package/dist/exporter/docx/metadata.js +272 -0
  53. package/dist/exporter/docx/metadata.js.map +1 -0
  54. package/dist/exporter/docx/rels.d.ts +27 -0
  55. package/dist/exporter/docx/rels.d.ts.map +1 -0
  56. package/dist/exporter/docx/rels.js +183 -0
  57. package/dist/exporter/docx/rels.js.map +1 -0
  58. package/dist/exporter/docx/render.d.ts +22 -0
  59. package/dist/exporter/docx/render.d.ts.map +1 -0
  60. package/dist/exporter/docx/render.js +780 -0
  61. package/dist/exporter/docx/render.js.map +1 -0
  62. package/dist/exporter/docx/richtext.d.ts +25 -0
  63. package/dist/exporter/docx/richtext.d.ts.map +1 -0
  64. package/dist/exporter/docx/richtext.js +1070 -0
  65. package/dist/exporter/docx/richtext.js.map +1 -0
  66. package/dist/exporter/docx/tables.d.ts +16 -0
  67. package/dist/exporter/docx/tables.d.ts.map +1 -0
  68. package/dist/exporter/docx/tables.js +115 -0
  69. package/dist/exporter/docx/tables.js.map +1 -0
  70. package/dist/exporter/docx/tools.d.ts +4 -0
  71. package/dist/exporter/docx/tools.d.ts.map +1 -0
  72. package/dist/exporter/docx/tools.js +48 -0
  73. package/dist/exporter/docx/tools.js.map +1 -0
  74. package/dist/exporter/epub/index.d.ts +19 -0
  75. package/dist/exporter/epub/index.d.ts.map +1 -0
  76. package/dist/exporter/epub/index.js +109 -0
  77. package/dist/exporter/epub/index.js.map +1 -0
  78. package/dist/exporter/epub/templates.d.ts +63 -0
  79. package/dist/exporter/epub/templates.d.ts.map +1 -0
  80. package/dist/exporter/epub/templates.js +95 -0
  81. package/dist/exporter/epub/templates.js.map +1 -0
  82. package/dist/exporter/epub/tools.d.ts +13 -0
  83. package/dist/exporter/epub/tools.d.ts.map +1 -0
  84. package/{src → dist}/exporter/epub/tools.js +32 -46
  85. package/dist/exporter/epub/tools.js.map +1 -0
  86. package/dist/exporter/html/citations.d.ts +29 -0
  87. package/dist/exporter/html/citations.d.ts.map +1 -0
  88. package/dist/exporter/html/citations.js +110 -0
  89. package/dist/exporter/html/citations.js.map +1 -0
  90. package/dist/exporter/html/convert.d.ts +50 -0
  91. package/dist/exporter/html/convert.d.ts.map +1 -0
  92. package/dist/exporter/html/convert.js +750 -0
  93. package/dist/exporter/html/convert.js.map +1 -0
  94. package/dist/exporter/html/index.d.ts +64 -0
  95. package/dist/exporter/html/index.d.ts.map +1 -0
  96. package/dist/exporter/html/index.js +154 -0
  97. package/dist/exporter/html/index.js.map +1 -0
  98. package/dist/exporter/html/templates.d.ts +24 -0
  99. package/dist/exporter/html/templates.d.ts.map +1 -0
  100. package/dist/exporter/html/templates.js +21 -0
  101. package/dist/exporter/html/templates.js.map +1 -0
  102. package/dist/exporter/html/tools.d.ts +2 -0
  103. package/dist/exporter/html/tools.d.ts.map +1 -0
  104. package/dist/exporter/html/tools.js +49 -0
  105. package/dist/exporter/html/tools.js.map +1 -0
  106. package/dist/exporter/jats/bibliography.d.ts +3 -0
  107. package/dist/exporter/jats/bibliography.d.ts.map +1 -0
  108. package/dist/exporter/jats/bibliography.js +158 -0
  109. package/dist/exporter/jats/bibliography.js.map +1 -0
  110. package/dist/exporter/jats/citations.d.ts +16 -0
  111. package/dist/exporter/jats/citations.d.ts.map +1 -0
  112. package/dist/exporter/jats/citations.js +105 -0
  113. package/dist/exporter/jats/citations.js.map +1 -0
  114. package/dist/exporter/jats/convert.d.ts +41 -0
  115. package/dist/exporter/jats/convert.d.ts.map +1 -0
  116. package/dist/exporter/jats/convert.js +816 -0
  117. package/dist/exporter/jats/convert.js.map +1 -0
  118. package/dist/exporter/jats/index.d.ts +25 -0
  119. package/dist/exporter/jats/index.d.ts.map +1 -0
  120. package/dist/exporter/jats/index.js +82 -0
  121. package/dist/exporter/jats/index.js.map +1 -0
  122. package/dist/exporter/jats/templates.d.ts +18 -0
  123. package/dist/exporter/jats/templates.d.ts.map +1 -0
  124. package/dist/exporter/jats/templates.js +25 -0
  125. package/dist/exporter/jats/templates.js.map +1 -0
  126. package/dist/exporter/jats/text.d.ts +4 -0
  127. package/dist/exporter/jats/text.d.ts.map +1 -0
  128. package/dist/exporter/jats/text.js +72 -0
  129. package/dist/exporter/jats/text.js.map +1 -0
  130. package/dist/exporter/latex/convert.d.ts +24 -0
  131. package/dist/exporter/latex/convert.d.ts.map +1 -0
  132. package/dist/exporter/latex/convert.js +881 -0
  133. package/dist/exporter/latex/convert.js.map +1 -0
  134. package/dist/exporter/latex/escape_latex.d.ts +2 -0
  135. package/dist/exporter/latex/escape_latex.d.ts.map +1 -0
  136. package/dist/exporter/latex/escape_latex.js +20 -0
  137. package/dist/exporter/latex/escape_latex.js.map +1 -0
  138. package/dist/exporter/latex/index.d.ts +24 -0
  139. package/dist/exporter/latex/index.d.ts.map +1 -0
  140. package/dist/exporter/latex/index.js +67 -0
  141. package/dist/exporter/latex/index.js.map +1 -0
  142. package/dist/exporter/latex/readme.d.ts +2 -0
  143. package/dist/exporter/latex/readme.d.ts.map +1 -0
  144. package/dist/exporter/latex/readme.js +23 -0
  145. package/dist/exporter/latex/readme.js.map +1 -0
  146. package/dist/exporter/native/copy.d.ts +30 -0
  147. package/dist/exporter/native/copy.d.ts.map +1 -0
  148. package/dist/exporter/native/copy.js +151 -0
  149. package/dist/exporter/native/copy.js.map +1 -0
  150. package/dist/exporter/native/file.d.ts +12 -0
  151. package/dist/exporter/native/file.d.ts.map +1 -0
  152. package/dist/exporter/native/file.js +38 -0
  153. package/dist/exporter/native/file.js.map +1 -0
  154. package/dist/exporter/native/index.d.ts +5 -0
  155. package/dist/exporter/native/index.d.ts.map +1 -0
  156. package/dist/exporter/native/index.js +5 -0
  157. package/dist/exporter/native/index.js.map +1 -0
  158. package/dist/exporter/native/revision.d.ts +18 -0
  159. package/dist/exporter/native/revision.d.ts.map +1 -0
  160. package/dist/exporter/native/revision.js +39 -0
  161. package/dist/exporter/native/revision.js.map +1 -0
  162. package/dist/exporter/native/shrink.d.ts +36 -0
  163. package/dist/exporter/native/shrink.d.ts.map +1 -0
  164. package/dist/exporter/native/shrink.js +124 -0
  165. package/dist/exporter/native/shrink.js.map +1 -0
  166. package/dist/exporter/native/zip.d.ts +25 -0
  167. package/dist/exporter/native/zip.d.ts.map +1 -0
  168. package/dist/exporter/native/zip.js +56 -0
  169. package/dist/exporter/native/zip.js.map +1 -0
  170. package/dist/exporter/odt/citations.d.ts +21 -0
  171. package/dist/exporter/odt/citations.d.ts.map +1 -0
  172. package/dist/exporter/odt/citations.js +104 -0
  173. package/dist/exporter/odt/citations.js.map +1 -0
  174. package/dist/exporter/odt/footnotes.d.ts +31 -0
  175. package/dist/exporter/odt/footnotes.d.ts.map +1 -0
  176. package/dist/exporter/odt/footnotes.js +129 -0
  177. package/dist/exporter/odt/footnotes.js.map +1 -0
  178. package/dist/exporter/odt/images.d.ts +25 -0
  179. package/dist/exporter/odt/images.d.ts.map +1 -0
  180. package/dist/exporter/odt/images.js +106 -0
  181. package/dist/exporter/odt/images.js.map +1 -0
  182. package/dist/exporter/odt/index.d.ts +17 -0
  183. package/dist/exporter/odt/index.d.ts.map +1 -0
  184. package/dist/exporter/odt/index.js +108 -0
  185. package/dist/exporter/odt/index.js.map +1 -0
  186. package/dist/exporter/odt/math.d.ts +15 -0
  187. package/dist/exporter/odt/math.d.ts.map +1 -0
  188. package/dist/exporter/odt/math.js +71 -0
  189. package/dist/exporter/odt/math.js.map +1 -0
  190. package/dist/exporter/odt/metadata.d.ts +18 -0
  191. package/dist/exporter/odt/metadata.d.ts.map +1 -0
  192. package/dist/exporter/odt/metadata.js +224 -0
  193. package/dist/exporter/odt/metadata.js.map +1 -0
  194. package/dist/exporter/odt/render.d.ts +26 -0
  195. package/dist/exporter/odt/render.d.ts.map +1 -0
  196. package/dist/exporter/odt/render.js +651 -0
  197. package/dist/exporter/odt/render.js.map +1 -0
  198. package/dist/exporter/odt/richtext.d.ts +22 -0
  199. package/dist/exporter/odt/richtext.d.ts.map +1 -0
  200. package/dist/exporter/odt/richtext.js +743 -0
  201. package/dist/exporter/odt/richtext.js.map +1 -0
  202. package/dist/exporter/odt/styles.d.ts +41 -0
  203. package/dist/exporter/odt/styles.d.ts.map +1 -0
  204. package/dist/exporter/odt/styles.js +370 -0
  205. package/dist/exporter/odt/styles.js.map +1 -0
  206. package/dist/exporter/odt/track.d.ts +18 -0
  207. package/dist/exporter/odt/track.d.ts.map +1 -0
  208. package/dist/exporter/odt/track.js +66 -0
  209. package/dist/exporter/odt/track.js.map +1 -0
  210. package/dist/exporter/pandoc/citations.d.ts +23 -0
  211. package/dist/exporter/pandoc/citations.d.ts.map +1 -0
  212. package/dist/exporter/pandoc/citations.js +99 -0
  213. package/dist/exporter/pandoc/citations.js.map +1 -0
  214. package/dist/exporter/pandoc/convert.d.ts +19 -0
  215. package/dist/exporter/pandoc/convert.d.ts.map +1 -0
  216. package/dist/exporter/pandoc/convert.js +886 -0
  217. package/dist/exporter/pandoc/convert.js.map +1 -0
  218. package/dist/exporter/pandoc/index.d.ts +25 -0
  219. package/dist/exporter/pandoc/index.d.ts.map +1 -0
  220. package/dist/exporter/pandoc/index.js +79 -0
  221. package/dist/exporter/pandoc/index.js.map +1 -0
  222. package/dist/exporter/pandoc/readme.d.ts +2 -0
  223. package/dist/exporter/pandoc/readme.d.ts.map +1 -0
  224. package/dist/exporter/pandoc/readme.js +8 -0
  225. package/dist/exporter/pandoc/readme.js.map +1 -0
  226. package/dist/exporter/pandoc/tools.d.ts +22 -0
  227. package/dist/exporter/pandoc/tools.d.ts.map +1 -0
  228. package/dist/exporter/pandoc/tools.js +52 -0
  229. package/dist/exporter/pandoc/tools.js.map +1 -0
  230. package/dist/exporter/print/index.d.ts +20 -0
  231. package/dist/exporter/print/index.d.ts.map +1 -0
  232. package/dist/exporter/print/index.js +142 -0
  233. package/dist/exporter/print/index.js.map +1 -0
  234. package/dist/exporter/tools/doc_content.d.ts +6 -0
  235. package/dist/exporter/tools/doc_content.d.ts.map +1 -0
  236. package/dist/exporter/tools/doc_content.js +130 -0
  237. package/dist/exporter/tools/doc_content.js.map +1 -0
  238. package/dist/exporter/tools/file.d.ts +2 -0
  239. package/dist/exporter/tools/file.d.ts.map +1 -0
  240. package/dist/exporter/tools/file.js +10 -0
  241. package/dist/exporter/tools/file.js.map +1 -0
  242. package/dist/exporter/tools/json.d.ts +7 -0
  243. package/dist/exporter/tools/json.d.ts.map +1 -0
  244. package/dist/exporter/tools/json.js +82 -0
  245. package/dist/exporter/tools/json.js.map +1 -0
  246. package/dist/exporter/tools/svg.d.ts +8 -0
  247. package/dist/exporter/tools/svg.d.ts.map +1 -0
  248. package/dist/exporter/tools/svg.js +26 -0
  249. package/dist/exporter/tools/svg.js.map +1 -0
  250. package/dist/exporter/tools/xml.d.ts +42 -0
  251. package/dist/exporter/tools/xml.d.ts.map +1 -0
  252. package/dist/exporter/tools/xml.js +467 -0
  253. package/dist/exporter/tools/xml.js.map +1 -0
  254. package/dist/exporter/tools/xml_zip.d.ts +21 -0
  255. package/dist/exporter/tools/xml_zip.d.ts.map +1 -0
  256. package/dist/exporter/tools/xml_zip.js +92 -0
  257. package/dist/exporter/tools/xml_zip.js.map +1 -0
  258. package/dist/exporter/tools/zip.d.ts +35 -0
  259. package/dist/exporter/tools/zip.d.ts.map +1 -0
  260. package/dist/exporter/tools/zip.js +78 -0
  261. package/dist/exporter/tools/zip.js.map +1 -0
  262. package/dist/exporter/tools/zotero_csl.d.ts +23 -0
  263. package/dist/exporter/tools/zotero_csl.d.ts.map +1 -0
  264. package/dist/exporter/tools/zotero_csl.js +78 -0
  265. package/dist/exporter/tools/zotero_csl.js.map +1 -0
  266. package/dist/importer/citations.d.ts +28 -0
  267. package/dist/importer/citations.d.ts.map +1 -0
  268. package/dist/importer/citations.js +68 -0
  269. package/dist/importer/citations.js.map +1 -0
  270. package/dist/importer/docx/citations.d.ts +43 -0
  271. package/dist/importer/docx/citations.d.ts.map +1 -0
  272. package/dist/importer/docx/citations.js +81 -0
  273. package/dist/importer/docx/citations.js.map +1 -0
  274. package/dist/importer/docx/convert.d.ts +150 -0
  275. package/dist/importer/docx/convert.d.ts.map +1 -0
  276. package/dist/importer/docx/convert.js +1243 -0
  277. package/dist/importer/docx/convert.js.map +1 -0
  278. package/dist/importer/docx/helpers.d.ts +2 -0
  279. package/dist/importer/docx/helpers.d.ts.map +1 -0
  280. package/dist/importer/docx/helpers.js +10 -0
  281. package/dist/importer/docx/helpers.js.map +1 -0
  282. package/dist/importer/docx/index.d.ts +27 -0
  283. package/dist/importer/docx/index.d.ts.map +1 -0
  284. package/dist/importer/docx/index.js +77 -0
  285. package/dist/importer/docx/index.js.map +1 -0
  286. package/dist/importer/docx/omml2mathml.d.ts +6 -0
  287. package/dist/importer/docx/omml2mathml.d.ts.map +1 -0
  288. package/dist/importer/docx/omml2mathml.js +1146 -0
  289. package/dist/importer/docx/omml2mathml.js.map +1 -0
  290. package/dist/importer/docx/parse.d.ts +96 -0
  291. package/dist/importer/docx/parse.d.ts.map +1 -0
  292. package/dist/importer/docx/parse.js +681 -0
  293. package/dist/importer/docx/parse.js.map +1 -0
  294. package/dist/importer/native/extract_template.d.ts +6 -0
  295. package/dist/importer/native/extract_template.d.ts.map +1 -0
  296. package/dist/importer/native/extract_template.js +80 -0
  297. package/dist/importer/native/extract_template.js.map +1 -0
  298. package/dist/importer/native/file.d.ts +37 -0
  299. package/dist/importer/native/file.d.ts.map +1 -0
  300. package/dist/importer/native/file.js +162 -0
  301. package/dist/importer/native/file.js.map +1 -0
  302. package/dist/importer/native/get_images.d.ts +21 -0
  303. package/dist/importer/native/get_images.d.ts.map +1 -0
  304. package/dist/importer/native/get_images.js +58 -0
  305. package/dist/importer/native/get_images.js.map +1 -0
  306. package/dist/importer/native/importer.d.ts +41 -0
  307. package/dist/importer/native/importer.d.ts.map +1 -0
  308. package/dist/importer/native/importer.js +170 -0
  309. package/dist/importer/native/importer.js.map +1 -0
  310. package/dist/importer/native/index.d.ts +7 -0
  311. package/dist/importer/native/index.d.ts.map +1 -0
  312. package/dist/importer/native/index.js +7 -0
  313. package/dist/importer/native/index.js.map +1 -0
  314. package/dist/importer/native/update.d.ts +7 -0
  315. package/dist/importer/native/update.d.ts.map +1 -0
  316. package/dist/importer/native/update.js +27 -0
  317. package/dist/importer/native/update.js.map +1 -0
  318. package/dist/importer/native/update_template.d.ts +12 -0
  319. package/dist/importer/native/update_template.d.ts.map +1 -0
  320. package/dist/importer/native/update_template.js +19 -0
  321. package/dist/importer/native/update_template.js.map +1 -0
  322. package/dist/importer/odt/citations.d.ts +27 -0
  323. package/dist/importer/odt/citations.d.ts.map +1 -0
  324. package/dist/importer/odt/citations.js +57 -0
  325. package/dist/importer/odt/citations.js.map +1 -0
  326. package/dist/importer/odt/convert.d.ts +146 -0
  327. package/dist/importer/odt/convert.d.ts.map +1 -0
  328. package/dist/importer/odt/convert.js +1530 -0
  329. package/dist/importer/odt/convert.js.map +1 -0
  330. package/dist/importer/odt/index.d.ts +30 -0
  331. package/dist/importer/odt/index.d.ts.map +1 -0
  332. package/dist/importer/odt/index.js +124 -0
  333. package/dist/importer/odt/index.js.map +1 -0
  334. package/dist/importer/pandoc/convert.d.ts +32 -0
  335. package/dist/importer/pandoc/convert.d.ts.map +1 -0
  336. package/dist/importer/pandoc/convert.js +790 -0
  337. package/dist/importer/pandoc/convert.js.map +1 -0
  338. package/dist/importer/pandoc/helpers.d.ts +5 -0
  339. package/dist/importer/pandoc/helpers.d.ts.map +1 -0
  340. package/dist/importer/pandoc/helpers.js +73 -0
  341. package/dist/importer/pandoc/helpers.js.map +1 -0
  342. package/dist/importer/pandoc/index.d.ts +31 -0
  343. package/dist/importer/pandoc/index.d.ts.map +1 -0
  344. package/dist/importer/pandoc/index.js +114 -0
  345. package/dist/importer/pandoc/index.js.map +1 -0
  346. package/dist/importer/registry.d.ts +21 -0
  347. package/dist/importer/registry.d.ts.map +1 -0
  348. package/dist/importer/registry.js +41 -0
  349. package/dist/importer/registry.js.map +1 -0
  350. package/dist/importer/zip_analyzer.d.ts +31 -0
  351. package/dist/importer/zip_analyzer.d.ts.map +1 -0
  352. package/dist/importer/zip_analyzer.js +89 -0
  353. package/dist/importer/zip_analyzer.js.map +1 -0
  354. package/dist/index.d.ts +2 -0
  355. package/dist/index.d.ts.map +1 -0
  356. package/dist/index.js +2 -0
  357. package/dist/index.js.map +1 -0
  358. package/dist/mathlive/opf_includes.d.ts +2 -0
  359. package/dist/mathlive/opf_includes.d.ts.map +1 -0
  360. package/dist/mathlive/opf_includes.js +25 -0
  361. package/dist/mathlive/opf_includes.js.map +1 -0
  362. package/dist/schema/common/annotate.d.ts +47 -0
  363. package/dist/schema/common/annotate.d.ts.map +1 -0
  364. package/dist/schema/common/annotate.js +75 -0
  365. package/dist/schema/common/annotate.js.map +1 -0
  366. package/dist/schema/common/base.d.ts +91 -0
  367. package/dist/schema/common/base.d.ts.map +1 -0
  368. package/dist/schema/common/base.js +109 -0
  369. package/dist/schema/common/base.js.map +1 -0
  370. package/dist/schema/common/citation.d.ts +30 -0
  371. package/dist/schema/common/citation.d.ts.map +1 -0
  372. package/dist/schema/common/citation.js +61 -0
  373. package/dist/schema/common/citation.js.map +1 -0
  374. package/dist/schema/common/equation.d.ts +17 -0
  375. package/dist/schema/common/equation.d.ts.map +1 -0
  376. package/dist/schema/common/equation.js +32 -0
  377. package/dist/schema/common/equation.js.map +1 -0
  378. package/dist/schema/common/figure.d.ts +87 -0
  379. package/dist/schema/common/figure.d.ts.map +1 -0
  380. package/dist/schema/common/figure.js +178 -0
  381. package/dist/schema/common/figure.js.map +1 -0
  382. package/dist/schema/common/heading.d.ts +9 -0
  383. package/dist/schema/common/heading.d.ts.map +1 -0
  384. package/dist/schema/common/heading.js +41 -0
  385. package/dist/schema/common/heading.js.map +1 -0
  386. package/dist/schema/common/index.d.ts +11 -0
  387. package/dist/schema/common/index.d.ts.map +1 -0
  388. package/dist/schema/common/index.js +11 -0
  389. package/dist/schema/common/index.js.map +1 -0
  390. package/dist/schema/common/list.d.ts +63 -0
  391. package/dist/schema/common/list.d.ts.map +1 -0
  392. package/dist/schema/common/list.js +92 -0
  393. package/dist/schema/common/list.js.map +1 -0
  394. package/dist/schema/common/reference.d.ts +70 -0
  395. package/dist/schema/common/reference.d.ts.map +1 -0
  396. package/dist/schema/common/reference.js +97 -0
  397. package/dist/schema/common/reference.js.map +1 -0
  398. package/dist/schema/common/table.d.ts +76 -0
  399. package/dist/schema/common/table.d.ts.map +1 -0
  400. package/dist/schema/common/table.js +86 -0
  401. package/dist/schema/common/table.js.map +1 -0
  402. package/dist/schema/common/track.d.ts +117 -0
  403. package/dist/schema/common/track.d.ts.map +1 -0
  404. package/{src → dist}/schema/common/track.js +44 -49
  405. package/dist/schema/common/track.js.map +1 -0
  406. package/dist/schema/const.d.ts +3 -0
  407. package/dist/schema/const.d.ts.map +1 -0
  408. package/{src → dist}/schema/const.js +3 -3
  409. package/dist/schema/const.js.map +1 -0
  410. package/dist/schema/convert.d.ts +3 -0
  411. package/dist/schema/convert.d.ts.map +1 -0
  412. package/dist/schema/convert.js +1215 -0
  413. package/dist/schema/convert.js.map +1 -0
  414. package/dist/schema/document/content.d.ts +110 -0
  415. package/dist/schema/document/content.d.ts.map +1 -0
  416. package/dist/schema/document/content.js +177 -0
  417. package/dist/schema/document/content.js.map +1 -0
  418. package/dist/schema/document/index.d.ts +795 -0
  419. package/dist/schema/document/index.d.ts.map +1 -0
  420. package/dist/schema/document/index.js +68 -0
  421. package/dist/schema/document/index.js.map +1 -0
  422. package/dist/schema/document/structure.d.ts +164 -0
  423. package/dist/schema/document/structure.d.ts.map +1 -0
  424. package/dist/schema/document/structure.js +445 -0
  425. package/dist/schema/document/structure.js.map +1 -0
  426. package/dist/schema/export.d.ts +7 -0
  427. package/dist/schema/export.d.ts.map +1 -0
  428. package/dist/schema/export.js +17 -0
  429. package/dist/schema/export.js.map +1 -0
  430. package/dist/schema/footnotes.d.ts +454 -0
  431. package/dist/schema/footnotes.d.ts.map +1 -0
  432. package/dist/schema/footnotes.js +90 -0
  433. package/dist/schema/footnotes.js.map +1 -0
  434. package/dist/schema/footnotes_convert.d.ts +5 -0
  435. package/dist/schema/footnotes_convert.d.ts.map +1 -0
  436. package/dist/schema/footnotes_convert.js +30 -0
  437. package/dist/schema/footnotes_convert.js.map +1 -0
  438. package/dist/schema/i18n.d.ts +55 -0
  439. package/dist/schema/i18n.d.ts.map +1 -0
  440. package/{src → dist}/schema/i18n.js +14 -23
  441. package/dist/schema/i18n.js.map +1 -0
  442. package/dist/schema/index.d.ts +6 -0
  443. package/dist/schema/index.d.ts.map +1 -0
  444. package/dist/schema/index.js +6 -0
  445. package/dist/schema/index.js.map +1 -0
  446. package/dist/schema/mini_json.d.ts +4 -0
  447. package/dist/schema/mini_json.d.ts.map +1 -0
  448. package/{src → dist}/schema/mini_json.js +19 -28
  449. package/dist/schema/mini_json.js.map +1 -0
  450. package/dist/schema/text.d.ts +3 -0
  451. package/dist/schema/text.d.ts.map +1 -0
  452. package/dist/schema/text.js +23 -0
  453. package/dist/schema/text.js.map +1 -0
  454. package/dist/types.d.ts +281 -0
  455. package/dist/types.d.ts.map +1 -0
  456. package/dist/types.js +9 -0
  457. package/dist/types.js.map +1 -0
  458. package/package.json +51 -16
  459. package/scripts/export-schema.js +1 -1
  460. package/src/bibliography/{common.js → common.ts} +15 -12
  461. package/src/bibliography/{csl_bib.js → csl_bib.ts} +16 -15
  462. package/src/citations/{citeproc_sys.js → citeproc_sys.ts} +26 -6
  463. package/src/citations/{format.js → format.ts} +80 -24
  464. package/src/editor/e2ee/{encryptor.js → encryptor.ts} +76 -44
  465. package/src/exporter/docx/{citations.js → citations.ts} +51 -23
  466. package/src/exporter/docx/{comments.js → comments.ts} +69 -26
  467. package/src/exporter/docx/{footnotes.js → footnotes.ts} +81 -42
  468. package/src/exporter/docx/images.ts +128 -0
  469. package/src/exporter/docx/{index.js → index.ts} +48 -25
  470. package/src/exporter/docx/{lists.js → lists.ts} +89 -46
  471. package/src/exporter/docx/{math.js → math.ts} +29 -9
  472. package/src/exporter/docx/{metadata.js → metadata.ts} +78 -42
  473. package/src/exporter/docx/{rels.js → rels.ts} +71 -50
  474. package/src/exporter/docx/{render.js → render.ts} +124 -87
  475. package/src/exporter/docx/{richtext.js → richtext.ts} +107 -84
  476. package/src/exporter/docx/{tables.js → tables.ts} +33 -23
  477. package/src/exporter/docx/{tools.js → tools.ts} +4 -3
  478. package/src/exporter/epub/{index.js → index.ts} +44 -15
  479. package/src/exporter/epub/{templates.js → templates.ts} +71 -7
  480. package/src/exporter/epub/tools.ts +102 -0
  481. package/src/exporter/html/{citations.js → citations.ts} +79 -31
  482. package/src/exporter/html/{convert.js → convert.ts} +118 -71
  483. package/src/exporter/html/{index.js → index.ts} +63 -29
  484. package/src/exporter/html/{templates.js → templates.ts} +22 -2
  485. package/src/exporter/html/{tools.js → tools.ts} +9 -6
  486. package/src/exporter/jats/bibliography.ts +199 -0
  487. package/src/exporter/jats/{citations.js → citations.ts} +56 -20
  488. package/src/exporter/jats/{convert.js → convert.ts} +72 -53
  489. package/src/exporter/jats/index.ts +132 -0
  490. package/src/exporter/jats/{templates.js → templates.ts} +19 -3
  491. package/src/exporter/jats/{text.js → text.ts} +8 -6
  492. package/src/exporter/latex/{convert.js → convert.ts} +160 -125
  493. package/src/exporter/latex/{escape_latex.js → escape_latex.ts} +1 -1
  494. package/src/exporter/latex/{index.js → index.ts} +27 -12
  495. package/src/exporter/latex/{readme.js → readme.ts} +2 -2
  496. package/src/exporter/native/copy.ts +231 -0
  497. package/src/exporter/native/file.ts +65 -0
  498. package/src/exporter/native/index.ts +4 -0
  499. package/src/exporter/native/revision.ts +76 -0
  500. package/src/exporter/native/{shrink.js → shrink.ts} +64 -29
  501. package/src/exporter/native/zip.ts +85 -0
  502. package/src/exporter/odt/{citations.js → citations.ts} +35 -15
  503. package/src/exporter/odt/{footnotes.js → footnotes.ts} +53 -30
  504. package/src/exporter/odt/images.ts +135 -0
  505. package/src/exporter/odt/{index.js → index.ts} +49 -27
  506. package/src/exporter/odt/{math.js → math.ts} +38 -9
  507. package/src/exporter/odt/{metadata.js → metadata.ts} +54 -29
  508. package/src/exporter/odt/{render.js → render.ts} +89 -60
  509. package/src/exporter/odt/{richtext.js → richtext.ts} +102 -72
  510. package/src/exporter/odt/{styles.js → styles.ts} +98 -66
  511. package/src/exporter/odt/{track.js → track.ts} +22 -6
  512. package/src/exporter/pandoc/{citations.js → citations.ts} +31 -15
  513. package/src/exporter/pandoc/{convert.js → convert.ts} +98 -79
  514. package/src/exporter/pandoc/{index.js → index.ts} +36 -13
  515. package/src/exporter/pandoc/{readme.js → readme.ts} +0 -1
  516. package/src/exporter/pandoc/{tools.js → tools.ts} +28 -5
  517. package/src/exporter/print/{index.js → index.ts} +38 -19
  518. package/src/exporter/tools/{doc_content.js → doc_content.ts} +34 -24
  519. package/src/exporter/tools/{file.js → file.ts} +1 -1
  520. package/src/exporter/tools/{json.js → json.ts} +30 -19
  521. package/src/exporter/tools/{svg.js → svg.ts} +9 -3
  522. package/src/exporter/tools/{xml.js → xml.ts} +187 -138
  523. package/src/exporter/tools/{xml_zip.js → xml_zip.ts} +19 -11
  524. package/src/exporter/tools/{zip.js → zip.ts} +35 -11
  525. package/src/exporter/tools/{zotero_csl.js → zotero_csl.ts} +35 -18
  526. package/src/global.d.ts +13 -0
  527. package/src/importer/citations.ts +116 -0
  528. package/src/importer/docx/{citations.js → citations.ts} +22 -37
  529. package/src/importer/docx/{convert.js → convert.ts} +176 -141
  530. package/src/importer/docx/{helpers.js → helpers.ts} +1 -1
  531. package/src/importer/docx/index.ts +124 -0
  532. package/src/importer/docx/{omml2mathml.js → omml2mathml.ts} +154 -176
  533. package/src/importer/docx/{parse.js → parse.ts} +103 -81
  534. package/src/importer/native/extract_template.ts +83 -0
  535. package/src/importer/native/file.ts +282 -0
  536. package/src/importer/native/get_images.ts +82 -0
  537. package/src/importer/native/importer.ts +244 -0
  538. package/src/importer/native/index.ts +6 -0
  539. package/src/importer/native/{update.js → update.ts} +13 -5
  540. package/src/importer/native/update_template.ts +32 -0
  541. package/src/importer/odt/{citations.js → citations.ts} +17 -29
  542. package/src/importer/odt/{convert.js → convert.ts} +261 -237
  543. package/src/importer/odt/index.ts +202 -0
  544. package/src/importer/pandoc/{convert.js → convert.ts} +116 -94
  545. package/src/importer/pandoc/{helpers.js → helpers.ts} +24 -12
  546. package/src/importer/pandoc/index.ts +171 -0
  547. package/src/importer/registry.ts +69 -0
  548. package/src/importer/{zip_analyzer.js → zip_analyzer.ts} +44 -18
  549. package/src/mathlive/{opf_includes.js → opf_includes.ts} +1 -1
  550. package/src/modules.d.ts +40 -0
  551. package/src/schema/common/{annotate.js → annotate.ts} +10 -8
  552. package/src/schema/common/{base.js → base.ts} +12 -10
  553. package/src/schema/common/{citation.js → citation.ts} +17 -8
  554. package/src/schema/common/{equation.js → equation.ts} +6 -4
  555. package/src/schema/common/{figure.js → figure.ts} +43 -23
  556. package/src/schema/common/{heading.js → heading.ts} +7 -5
  557. package/src/schema/common/{list.js → list.ts} +15 -13
  558. package/src/schema/common/{reference.js → reference.ts} +14 -12
  559. package/src/schema/common/{table.js → table.ts} +16 -14
  560. package/src/schema/common/track.ts +201 -0
  561. package/src/schema/const.ts +58 -0
  562. package/src/schema/{convert.js → convert.ts} +6 -2
  563. package/src/schema/document/{content.js → content.ts} +22 -20
  564. package/src/schema/document/{structure.js → structure.ts} +15 -9
  565. package/src/schema/{export.js → export.ts} +4 -2
  566. package/src/schema/{footnotes.js → footnotes.ts} +11 -8
  567. package/src/schema/{footnotes_convert.js → footnotes_convert.ts} +11 -8
  568. package/src/schema/i18n.ts +601 -0
  569. package/src/schema/mini_json.ts +60 -0
  570. package/src/schema/{text.js → text.ts} +6 -2
  571. package/src/types.ts +314 -0
  572. package/jest.config.js +0 -24
  573. package/src/exporter/docx/images.js +0 -101
  574. package/src/exporter/jats/bibliography.js +0 -183
  575. package/src/exporter/jats/index.js +0 -92
  576. package/src/exporter/odt/images.js +0 -115
  577. package/src/importer/citations.js +0 -129
  578. package/src/importer/native/get_images.js +0 -76
  579. /package/src/{index.js → index.ts} +0 -0
  580. /package/src/schema/common/{index.js → index.ts} +0 -0
  581. /package/src/schema/document/{index.js → index.ts} +0 -0
  582. /package/src/schema/{index.js → index.ts} +0 -0
@@ -1,4 +1,8 @@
1
1
  import {descendantNodes} from "../tools/doc_content.js"
2
+ import type {FidusNode} from "../../types.js"
3
+ import type {XMLElement} from "../tools/xml.js"
4
+ import type {XmlZip} from "../tools/xml_zip.js"
5
+ import type {DOCXExporterRels} from "./rels.js"
2
6
 
3
7
  const DEFAULT_LISTPARAGRAPH_XML = `
4
8
  <w:style w:type="paragraph" w:styleId="ListParagraph">
@@ -19,56 +23,68 @@ const DEFAULT_NUMBERING_XML = `<?xml version="1.0" encoding="UTF-8" standalone="
19
23
  </w:numbering>`
20
24
 
21
25
  export class DOCXExporterLists {
22
- constructor(docContent, xml, rels) {
26
+ docContent: FidusNode
27
+ xml: XmlZip
28
+ rels: DOCXExporterRels
29
+ useBulletList: boolean
30
+ usedNumberedList: number[]
31
+ styleXML: XMLElement | null
32
+ numberingXML: XMLElement | null
33
+ abstractNumIdCounter: number
34
+ numIdCounter: number
35
+ // We only need one bulletType for all bullet lists, but a new
36
+ // numberedType for each numbered list so that the numbering starts in 1
37
+ // each time.
38
+ bulletType: number | false
39
+ bulletAbstractType: number | undefined
40
+ numberFormat: string | null
41
+ numberedTypes: number[]
42
+ numberedAbstractType: number | undefined
43
+ styleFilePath: string
44
+ numberingFilePath: string
45
+ ctFilePath: string
46
+ ctXML: XMLElement | null
47
+
48
+ constructor(docContent: FidusNode, xml: XmlZip, rels: DOCXExporterRels) {
23
49
  this.docContent = docContent
24
50
  this.xml = xml
25
51
  this.rels = rels
26
52
  this.useBulletList = false
27
53
  this.usedNumberedList = []
28
- this.styleXML = false
29
- this.numberingXML = false
54
+ this.styleXML = null
55
+ this.numberingXML = null
30
56
  this.abstractNumIdCounter = 0
31
57
  this.numIdCounter = 0
32
- // We only need one bulletType for all bullet lists, but a new
33
- // numberedType for each numbered list so that the numbering starts in 1
34
- // each time.
35
58
  this.bulletType = false
36
59
  this.numberFormat = "decimal"
37
60
  this.numberedTypes = []
38
61
  this.styleFilePath = "word/styles.xml"
39
62
  this.numberingFilePath = "word/numbering.xml"
40
63
  this.ctFilePath = "[Content_Types].xml"
64
+ this.ctXML = null
41
65
  }
42
66
 
43
- init() {
67
+ init(): Promise<void> | Promise<undefined> {
44
68
  this.findLists()
45
69
  if (this.usedNumberedList.length > 0 || this.useBulletList) {
46
- const p = []
47
-
48
- p.push(
70
+ const p: Array<Promise<void>> = [
49
71
  new Promise(resolve => {
50
72
  this.initCt().then(() => resolve())
51
- })
52
- )
53
-
54
- p.push(
73
+ }),
55
74
  new Promise(resolve => {
56
75
  this.addNumberingXml().then(() => resolve())
57
- })
58
- )
59
-
60
- p.push(
76
+ }),
61
77
  new Promise(resolve => {
62
78
  this.addListParagraphStyle().then(() => resolve())
63
79
  })
64
- )
65
- return Promise.all(p)
80
+ ]
81
+ return Promise.all(p).then(() => undefined)
66
82
  } else {
67
83
  return Promise.resolve()
68
84
  }
69
85
  }
70
86
 
71
- initCt() {
87
+ initCt(): Promise<void> {
72
88
  return this.xml.getXml(this.ctFilePath).then(ctXML => {
73
89
  this.ctXML = ctXML
74
90
  this.addRelsToCt()
@@ -76,29 +92,32 @@ export class DOCXExporterLists {
76
92
  })
77
93
  }
78
94
 
79
- addRelsToCt() {
95
+ addRelsToCt(): void {
96
+ if (!this.ctXML) {
97
+ return
98
+ }
80
99
  const override = this.ctXML.query("Override", {
81
100
  PartName: `/${this.numberingFilePath}`
82
101
  })
83
102
  if (!override) {
84
103
  const types = this.ctXML.query("Types")
85
- types.appendXML(
104
+ types?.appendXML(
86
105
  `<Override PartName="/${this.numberingFilePath}" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>`
87
106
  )
88
107
  }
89
108
  }
90
109
 
91
- findLists() {
110
+ findLists(): void {
92
111
  descendantNodes(this.docContent).forEach(node => {
93
112
  if (node.type === "bullet_list") {
94
113
  this.useBulletList = true
95
114
  } else if (node.type === "ordered_list") {
96
- this.usedNumberedList.push(node.attrs.order)
115
+ this.usedNumberedList.push(node.attrs?.order as number)
97
116
  }
98
117
  })
99
118
  }
100
119
 
101
- addNumberingXml() {
120
+ addNumberingXml(): Promise<void> {
102
121
  return this.xml
103
122
  .getXml(this.numberingFilePath, DEFAULT_NUMBERING_XML)
104
123
  .then(numberingXML => {
@@ -109,20 +128,23 @@ export class DOCXExporterLists {
109
128
  })
110
129
  }
111
130
 
112
- addListParagraphStyle() {
131
+ addListParagraphStyle(): Promise<void> {
113
132
  return this.xml.getXml(this.styleFilePath).then(styleXML => {
114
133
  this.styleXML = styleXML
115
134
  if (
116
135
  !this.styleXML.query("w:style", {"w:styleId": "ListParagraph"})
117
136
  ) {
118
137
  const stylesEl = this.styleXML.query("w:styles")
119
- stylesEl.appendXML(DEFAULT_LISTPARAGRAPH_XML)
138
+ stylesEl?.appendXML(DEFAULT_LISTPARAGRAPH_XML)
120
139
  }
121
140
  return Promise.resolve()
122
141
  })
123
142
  }
124
143
 
125
- addUsedListTypes() {
144
+ addUsedListTypes(): void {
145
+ if (!this.numberingXML) {
146
+ return
147
+ }
126
148
  const allAbstractNum = this.numberingXML.queryAll("w:abstractNum")
127
149
  allAbstractNum.forEach(abstractNum => {
128
150
  // We check the format for the lowest level list and use the first
@@ -130,18 +152,24 @@ export class DOCXExporterLists {
130
152
  // This means that if a list is defined using anything else than
131
153
  // bullets, it will be accepted as the format of
132
154
  // the numeric list.
133
- const levelZeroFormat = abstractNum
155
+ const levelZeroFormatEl = abstractNum
134
156
  .query("w:lvl", {"w:ilvl": "0"})
135
- .query("w:numFmt")
136
- .getAttribute("w:val")
157
+ ?.query("w:numFmt")
158
+ const levelZeroFormat = levelZeroFormatEl
159
+ ? String(levelZeroFormatEl.getAttribute("w:val"))
160
+ : ""
137
161
  const abstractNumId = Number.parseInt(
138
- abstractNum.getAttribute("w:abstractNumId")
162
+ String(abstractNum.getAttribute("w:abstractNumId"))
139
163
  )
140
164
  if (levelZeroFormat === "bullet" && !this.bulletAbstractType) {
141
- const numEl = this.numberingXML.query("w:abstractNumId", {
142
- "w:val": abstractNumId
143
- }).parentElement
144
- const numId = Number.parseInt(numEl.getAttribute("w:numId"))
165
+ const numEl = this.numberingXML!
166
+ .query("w:abstractNumId", {
167
+ "w:val": abstractNumId
168
+ })
169
+ ?.parentElement
170
+ const numId = numEl
171
+ ? Number.parseInt(String(numEl.getAttribute("w:numId")))
172
+ : NaN
145
173
  this.bulletType = numId
146
174
  } else if (levelZeroFormat !== "bullet" && !this.numberFormat) {
147
175
  this.numberFormat = levelZeroFormat
@@ -152,7 +180,7 @@ export class DOCXExporterLists {
152
180
  })
153
181
  const allNum = this.numberingXML.queryAll("w:num")
154
182
  allNum.forEach(numEl => {
155
- const numId = Number.parseInt(numEl.getAttribute("w:val"))
183
+ const numId = Number.parseInt(String(numEl.getAttribute("w:val")))
156
184
  if (this.numIdCounter < numId) {
157
185
  this.numIdCounter = numId
158
186
  }
@@ -177,17 +205,20 @@ export class DOCXExporterLists {
177
205
  }
178
206
  }
179
207
 
180
- getBulletType() {
208
+ getBulletType(): number | false {
181
209
  return this.bulletType
182
210
  }
183
211
 
184
- getNumberedType() {
212
+ getNumberedType(): number | undefined {
185
213
  return this.numberedTypes.shift()
186
214
  }
187
215
 
188
- addBulletNumType(numId, abstractNumId) {
216
+ addBulletNumType(numId: number, abstractNumId: number): void {
217
+ if (!this.numberingXML) {
218
+ return
219
+ }
189
220
  const numberingEl = this.numberingXML.query("w:numbering")
190
- numberingEl.appendXML(`
221
+ numberingEl?.appendXML(`
191
222
  <w:abstractNum w:abstractNumId="${abstractNumId}" w15:restartNumberingAfterBreak="0">
192
223
  <w:nsid w:val="3620195A" />
193
224
  <w:multiLevelType w:val="hybridMultilevel" />
@@ -200,6 +231,9 @@ export class DOCXExporterLists {
200
231
  const newAbstractNum = this.numberingXML.query("w:abstractNum", {
201
232
  "w:abstractNumId": String(abstractNumId)
202
233
  })
234
+ if (!newAbstractNum) {
235
+ return
236
+ }
203
237
  // Definition seem to always define 9 levels (0-8).
204
238
  for (let level = 0; level < 9; level++) {
205
239
  newAbstractNum.appendXML(`
@@ -219,20 +253,26 @@ export class DOCXExporterLists {
219
253
  }
220
254
  }
221
255
 
222
- addNumberedNumType(numId, start) {
256
+ addNumberedNumType(numId: number, start: number): void {
223
257
  this.abstractNumIdCounter++
224
258
  this.addNumberedAbstractNumType(this.abstractNumIdCounter, start)
259
+ if (!this.numberingXML) {
260
+ return
261
+ }
225
262
  const numberingEl = this.numberingXML.query("w:numbering")
226
- numberingEl.appendXML(`
263
+ numberingEl?.appendXML(`
227
264
  <w:num w:numId="${numId}">
228
265
  <w:abstractNumId w:val="${this.abstractNumIdCounter}" />
229
266
  </w:num>
230
267
  `)
231
268
  }
232
269
 
233
- addNumberedAbstractNumType(abstractNumId, start) {
270
+ addNumberedAbstractNumType(abstractNumId: number, start: number): void {
271
+ if (!this.numberingXML) {
272
+ return
273
+ }
234
274
  const numberingEl = this.numberingXML.query("w:numbering")
235
- numberingEl.appendXML(`
275
+ numberingEl?.appendXML(`
236
276
  <w:abstractNum w:abstractNumId="${abstractNumId}" w15:restartNumberingAfterBreak="0">
237
277
  <w:nsid w:val="7F6635F3" />
238
278
  <w:multiLevelType w:val="hybridMultilevel" />
@@ -242,6 +282,9 @@ export class DOCXExporterLists {
242
282
  const newAbstractNum = this.numberingXML.query("w:abstractNum", {
243
283
  "w:abstractNumId": String(abstractNumId)
244
284
  })
285
+ if (!newAbstractNum) {
286
+ return
287
+ }
245
288
  // Definition seem to always define 9 levels (0-8).
246
289
  for (let level = 0; level < 9; level++) {
247
290
  newAbstractNum.appendXML(`
@@ -1,7 +1,9 @@
1
1
  import {mml2omml} from "mathml2omml"
2
2
 
3
+ import type {XmlZip} from "../tools/xml_zip.js"
4
+
3
5
  // Not entirely sure if we need this font here. This is included whenever Word
4
- // itself adds a formula, but our ooml doesn't refer to the font, so it may be pointless.
6
+ // itself adds a formula, but our omml doesn't refer to the font, so it may be pointless.
5
7
  const CAMBRIA_MATH_FONT_DECLARATION = `
6
8
  <w:font w:name="Cambria Math">
7
9
  <w:panose1 w:val="02040503050406030204" />
@@ -12,35 +14,53 @@ const CAMBRIA_MATH_FONT_DECLARATION = `
12
14
  </w:font>`
13
15
 
14
16
  export class DOCXExporterMath {
15
- constructor(xml) {
17
+ xml: XmlZip
18
+ fontTablesXML: import("../tools/xml.js").XMLElement | false
19
+ addedCambriaMath: boolean
20
+ domParser: DOMParser
21
+ mathLive: typeof import("mathlive") | null
22
+
23
+ constructor(xml: XmlZip) {
16
24
  this.xml = xml
17
- this.fontTableXML = false
25
+ this.fontTablesXML = false
18
26
  this.addedCambriaMath = false
19
27
  this.domParser = new DOMParser()
28
+ this.mathLive = null
20
29
  }
21
30
 
22
- init() {
31
+ init(): Promise<typeof import("mathlive")> {
23
32
  return this.xml
24
33
  .getXml("word/fontTable.xml")
25
34
  .then(fontTablesXML => {
26
35
  this.fontTablesXML = fontTablesXML
27
36
  return import("mathlive")
28
37
  })
29
- .then(MathLive => (this.mathLive = MathLive))
38
+ .then(MathLive => {
39
+ this.mathLive = MathLive
40
+ return MathLive
41
+ })
30
42
  }
31
43
 
32
- latexToMathML(latex) {
44
+ latexToMathML(latex: string): string {
45
+ if (!this.mathLive) {
46
+ throw new Error("MathLive not initialised")
47
+ }
33
48
  return this.mathLive.convertLatexToMathMl(latex)
34
49
  }
35
50
 
36
- getOmml(latex) {
51
+ getOmml(latex: string): string {
52
+ if (!this.fontTablesXML) {
53
+ throw new Error("Font table XML not loaded")
54
+ }
37
55
  if (!this.addedCambriaMath) {
38
56
  const fontsEl = this.fontTablesXML.query("w:fonts")
57
+ if (!fontsEl) {
58
+ throw new Error("No w:fonts element found in font table")
59
+ }
39
60
  fontsEl.appendXML(CAMBRIA_MATH_FONT_DECLARATION)
40
61
  this.addedCambriaMath = true
41
62
  }
42
63
  const mathmlString = `<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics>${this.latexToMathML(latex)}</semantics></math>`
43
- const ommlString = mml2omml(mathmlString)
44
- return ommlString
64
+ return mml2omml(mathmlString)
45
65
  }
46
66
  }
@@ -1,15 +1,25 @@
1
1
  import {escapeText} from "fwtoolkit"
2
2
 
3
+ import type {CSL, CSLStyle, ExportMetadata} from "../../types.js"
4
+ import type {XMLElement} from "../tools/xml.js"
5
+ import type {XmlZip} from "../tools/xml_zip.js"
6
+
3
7
  export class DOCXExporterMetadata {
4
- constructor(xml, metadata, csl = null) {
8
+ xml: XmlZip
9
+ metadata: ExportMetadata
10
+ csl: CSL | null
11
+ coreXML: XMLElement | null
12
+ customXML: XMLElement | null
13
+
14
+ constructor(xml: XmlZip, metadata: ExportMetadata, csl: CSL | null = null) {
5
15
  this.xml = xml
6
16
  this.metadata = metadata
7
17
  this.csl = csl
8
- this.coreXML = false
9
- this.customXML = false
18
+ this.coreXML = null
19
+ this.customXML = null
10
20
  }
11
21
 
12
- init() {
22
+ init(): Promise<void> {
13
23
  return this.xml.getXml("docProps/core.xml").then(coreXML => {
14
24
  this.coreXML = coreXML
15
25
  this.addMetadata()
@@ -17,8 +27,8 @@ export class DOCXExporterMetadata {
17
27
  })
18
28
  }
19
29
 
20
- async hasBibliography() {
21
- if (!this.csl || !this.metadata.citationStyle) {
30
+ async hasBibliography(): Promise<string> {
31
+ if (!this.csl || !this.metadata.citationStyle || !this.csl.getStyle) {
22
32
  return "0"
23
33
  }
24
34
  try {
@@ -33,20 +43,28 @@ export class DOCXExporterMetadata {
33
43
  }
34
44
  }
35
45
 
36
- addMetadata() {
46
+ addMetadata(): void {
47
+ if (!this.coreXML) {
48
+ return
49
+ }
37
50
  const corePropertiesEl = this.coreXML.query("cp:coreProperties")
51
+ if (!corePropertiesEl) {
52
+ return
53
+ }
38
54
 
39
55
  // Title
40
- let titleEl = this.coreXML.query("dc:title")
56
+ let titleEl: XMLElement | null = this.coreXML.query("dc:title") ?? null
41
57
  if (!titleEl) {
42
58
  corePropertiesEl.appendXML("<dc:title></dc:title>")
43
59
  titleEl = corePropertiesEl.lastElementChild
44
60
  }
45
- titleEl.innerXML = escapeText(this.metadata.title)
61
+ if (titleEl) {
62
+ titleEl.innerXML = escapeText(this.metadata.title)
63
+ }
46
64
  // Authors
47
65
 
48
66
  const authors = this.metadata.authors.map(author => {
49
- const nameParts = []
67
+ const nameParts: string[] = []
50
68
  if (author.firstname) {
51
69
  nameParts.push(author.firstname)
52
70
  }
@@ -61,55 +79,65 @@ export class DOCXExporterMetadata {
61
79
  })
62
80
  const lastAuthor = authors.length
63
81
  ? escapeText(authors[0])
64
- : gettext("Unknown")
82
+ : "Unknown"
65
83
  const allAuthors = authors.length
66
84
  ? escapeText(authors.join(";"))
67
- : gettext("Unknown")
68
- let allAuthorsEl = this.coreXML.query("dc:creator")
85
+ : "Unknown"
86
+ let allAuthorsEl: XMLElement | null = this.coreXML.query("dc:creator") ?? null
69
87
 
70
88
  if (!allAuthorsEl) {
71
89
  corePropertiesEl.appendXML("<dc:creator></dc:creator>")
72
90
  allAuthorsEl = corePropertiesEl.lastElementChild
73
91
  }
74
- allAuthorsEl.innerXML = allAuthors
75
- let lastAuthorEl = this.coreXML.query("dc:lastModifiedBy")
92
+ if (allAuthorsEl) {
93
+ allAuthorsEl.innerXML = allAuthors
94
+ }
95
+ let lastAuthorEl: XMLElement | null = this.coreXML.query("dc:lastModifiedBy") ?? null
76
96
  if (!lastAuthorEl) {
77
97
  corePropertiesEl.appendXML(
78
98
  "<dc:lastModifiedBy></dc:lastModifiedBy>"
79
99
  )
80
100
  lastAuthorEl = corePropertiesEl.lastElementChild
81
101
  }
82
- lastAuthorEl.innerXML = lastAuthor
102
+ if (lastAuthorEl) {
103
+ lastAuthorEl.innerXML = lastAuthor
104
+ }
83
105
  // Keywords
84
106
  if (this.metadata.keywords.length) {
85
107
  // It is not really clear how keywords should be separated in DOCX files,
86
108
  // so we use ", ".
87
109
  const keywordsString = escapeText(this.metadata.keywords.join(", "))
88
110
 
89
- let keywordsEl = this.coreXML.query("cp:keywords")
111
+ let keywordsEl: XMLElement | null = this.coreXML.query("cp:keywords") ?? null
90
112
  if (!keywordsEl) {
91
113
  corePropertiesEl.appendXML("<cp:keywords></cp:keywords>")
92
114
  keywordsEl = corePropertiesEl.lastElementChild
93
115
  }
94
- keywordsEl.innerXML = keywordsString
116
+ if (keywordsEl) {
117
+ keywordsEl.innerXML = keywordsString
118
+ }
95
119
  }
96
120
 
97
121
  // time
98
122
  const date = new Date()
99
123
  const dateString = date.toISOString().split(".")[0] + "Z"
100
124
  const createdEl = this.coreXML.query("dcterms:created")
101
- createdEl.innerXML = dateString
102
- let modifiedEl = this.coreXML.query("dcterms:modified")
125
+ if (createdEl) {
126
+ createdEl.innerXML = dateString
127
+ }
128
+ let modifiedEl: XMLElement | null = this.coreXML.query("dcterms:modified") ?? null
103
129
  if (!modifiedEl) {
104
130
  corePropertiesEl.appendXML(
105
131
  '<dcterms:modified xsi:type="dcterms:W3CDTF"></dcterms:modified>'
106
132
  )
107
133
  modifiedEl = corePropertiesEl.lastElementChild
108
134
  }
109
- modifiedEl.innerXML = dateString
135
+ if (modifiedEl) {
136
+ modifiedEl.innerXML = dateString
137
+ }
110
138
  }
111
139
 
112
- async addCustomProperties() {
140
+ async addCustomProperties(): Promise<void> {
113
141
  // Create or update docProps/custom.xml with citation style information
114
142
  const customXmlContent = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
115
143
  <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
@@ -117,31 +145,35 @@ export class DOCXExporterMetadata {
117
145
 
118
146
  const customXML = await this.xml.getXml(
119
147
  "docProps/custom.xml",
120
- Promise.resolve(customXmlContent)
148
+ customXmlContent
121
149
  )
122
150
  this.customXML = customXML
123
151
 
124
152
  // Add citation style property
125
153
  if (this.metadata.citationStyle) {
126
154
  const propertiesEl = this.customXML.query("Properties")
155
+ if (!propertiesEl) {
156
+ return Promise.resolve()
157
+ }
127
158
 
128
159
  // Remove any existing ZOTERO_PREF_ properties
129
160
  const existingZoteroProps = this.customXML
130
161
  .queryAll("property")
131
162
  .filter(
132
- prop =>
133
- prop.getAttribute("name") &&
134
- prop.getAttribute("name").startsWith("ZOTERO_PREF_")
163
+ prop => {
164
+ const name = String(prop.getAttribute("name"))
165
+ return name && name.startsWith("ZOTERO_PREF_")
166
+ }
135
167
  )
136
168
  existingZoteroProps.forEach(prop =>
137
- prop.parentElement.removeChild(prop)
169
+ prop.parentElement!.removeChild(prop)
138
170
  )
139
171
 
140
172
  // Find the highest pid to determine the next one
141
173
  const existingProperties = this.customXML.queryAll("property")
142
174
  let maxPid = 0
143
175
  existingProperties.forEach(prop => {
144
- const pid = parseInt(prop.getAttribute("pid"))
176
+ const pid = parseInt(String(prop.getAttribute("pid")))
145
177
  if (pid > maxPid) {
146
178
  maxPid = pid
147
179
  }
@@ -156,7 +188,7 @@ export class DOCXExporterMetadata {
156
188
 
157
189
  // Split content into chunks of 255 characters (DOCX limit)
158
190
  const chunkSize = 255
159
- const chunks = []
191
+ const chunks: string[] = []
160
192
  for (let i = 0; i < dataContent.length; i += chunkSize) {
161
193
  chunks.push(dataContent.substring(i, i + chunkSize))
162
194
  }
@@ -170,7 +202,7 @@ export class DOCXExporterMetadata {
170
202
  propertiesEl.appendXML(propertyXML)
171
203
  // Set the text content after appending (textContent escapes XML characters)
172
204
  const lpwstrEl =
173
- propertiesEl.lastElementChild.query("vt:lpwstr")
205
+ propertiesEl.lastElementChild?.query("vt:lpwstr")
174
206
  if (lpwstrEl) {
175
207
  lpwstrEl.textContent = chunk
176
208
  }
@@ -183,30 +215,34 @@ export class DOCXExporterMetadata {
183
215
  return Promise.resolve()
184
216
  }
185
217
 
186
- async addContributorProperties() {
218
+ async addContributorProperties(): Promise<void> {
187
219
  if (!this.metadata.contributors || !this.metadata.contributors.length) {
188
220
  return Promise.resolve()
189
221
  }
190
222
 
191
- const propertiesEl = this.customXML.query("Properties")
223
+ const propertiesEl = this.customXML!.query("Properties")
224
+ if (!propertiesEl) {
225
+ return Promise.resolve()
226
+ }
192
227
 
193
228
  // Remove any existing fidus_contributor_ properties
194
- const existingContributorProps = this.customXML
229
+ const existingContributorProps = this.customXML!
195
230
  .queryAll("property")
196
231
  .filter(
197
- prop =>
198
- prop.getAttribute("name") &&
199
- prop.getAttribute("name").startsWith("fidus_contributor_")
232
+ prop => {
233
+ const name = String(prop.getAttribute("name"))
234
+ return name && name.startsWith("fidus_contributor_")
235
+ }
200
236
  )
201
237
  existingContributorProps.forEach(prop =>
202
- prop.parentElement.removeChild(prop)
238
+ prop.parentElement!.removeChild(prop)
203
239
  )
204
240
 
205
241
  // Find the highest pid
206
- const existingProperties = this.customXML.queryAll("property")
242
+ const existingProperties = this.customXML!.queryAll("property")
207
243
  let maxPid = 0
208
244
  existingProperties.forEach(prop => {
209
- const pid = parseInt(prop.getAttribute("pid"))
245
+ const pid = parseInt(String(prop.getAttribute("pid")))
210
246
  if (pid > maxPid) {
211
247
  maxPid = pid
212
248
  }
@@ -220,7 +256,7 @@ export class DOCXExporterMetadata {
220
256
  <vt:i4></vt:i4>
221
257
  </property>`
222
258
  propertiesEl.appendXML(countXML)
223
- const countEl = propertiesEl.lastElementChild.query("vt:i4")
259
+ const countEl = propertiesEl.lastElementChild?.query("vt:i4")
224
260
  if (countEl) {
225
261
  countEl.textContent = String(contributors.length)
226
262
  }
@@ -228,7 +264,7 @@ export class DOCXExporterMetadata {
228
264
  // Add property for each contributor
229
265
  contributors.forEach((contributor, index) => {
230
266
  const num = index + 1
231
- const nameParts = []
267
+ const nameParts: string[] = []
232
268
  if (contributor.firstname) {
233
269
  nameParts.push(contributor.firstname)
234
270
  }
@@ -277,7 +313,7 @@ export class DOCXExporterMetadata {
277
313
  </property>`
278
314
  propertiesEl.appendXML(propertyXML)
279
315
  const lpwstrEl =
280
- propertiesEl.lastElementChild.query("vt:lpwstr")
316
+ propertiesEl.lastElementChild?.query("vt:lpwstr")
281
317
  if (lpwstrEl) {
282
318
  lpwstrEl.textContent = field.value
283
319
  }