@fiduswriter/editor 0.1.19 → 0.1.21

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 (786) hide show
  1. package/dist/bibliography/tools.d.ts +14 -0
  2. package/dist/bibliography/tools.d.ts.map +1 -0
  3. package/dist/bibliography/tools.js +1 -1
  4. package/dist/bibliography/tools.js.map +1 -1
  5. package/dist/citations/index.d.ts +17 -0
  6. package/dist/citations/index.d.ts.map +1 -0
  7. package/dist/citations/index.js +22 -13
  8. package/dist/citations/index.js.map +1 -1
  9. package/dist/citations/render.d.ts +29 -0
  10. package/dist/citations/render.d.ts.map +1 -0
  11. package/dist/citations/render.js +25 -8
  12. package/dist/citations/render.js.map +1 -1
  13. package/dist/clipboard/copy/index.d.ts +2 -0
  14. package/dist/clipboard/copy/index.d.ts.map +1 -0
  15. package/dist/clipboard/copy/index.js.map +1 -1
  16. package/dist/clipboard/copy/schema.d.ts +4 -0
  17. package/dist/clipboard/copy/schema.d.ts.map +1 -0
  18. package/dist/clipboard/copy/schema.js +6 -5
  19. package/dist/clipboard/copy/schema.js.map +1 -1
  20. package/dist/clipboard/copy/serializers.d.ts +24 -0
  21. package/dist/clipboard/copy/serializers.d.ts.map +1 -0
  22. package/dist/clipboard/copy/serializers.js +19 -9
  23. package/dist/clipboard/copy/serializers.js.map +1 -1
  24. package/dist/clipboard/paste/fidus_writer.d.ts +7 -0
  25. package/dist/clipboard/paste/fidus_writer.d.ts.map +1 -0
  26. package/dist/clipboard/paste/fidus_writer.js +5 -2
  27. package/dist/clipboard/paste/fidus_writer.js.map +1 -1
  28. package/dist/clipboard/paste/general.d.ts +18 -0
  29. package/dist/clipboard/paste/general.d.ts.map +1 -0
  30. package/dist/clipboard/paste/general.js +18 -6
  31. package/dist/clipboard/paste/general.js.map +1 -1
  32. package/dist/clipboard/paste/google_docs.d.ts +6 -0
  33. package/dist/clipboard/paste/google_docs.d.ts.map +1 -0
  34. package/dist/clipboard/paste/google_docs.js +3 -2
  35. package/dist/clipboard/paste/google_docs.js.map +1 -1
  36. package/dist/clipboard/paste/html.d.ts +22 -0
  37. package/dist/clipboard/paste/html.d.ts.map +1 -0
  38. package/dist/clipboard/paste/html.js +15 -0
  39. package/dist/clipboard/paste/html.js.map +1 -1
  40. package/dist/clipboard/paste/index.d.ts +3 -0
  41. package/dist/clipboard/paste/index.d.ts.map +1 -0
  42. package/dist/clipboard/paste/index.js.map +1 -1
  43. package/dist/clipboard/paste/libreoffice_writer.d.ts +5 -0
  44. package/dist/clipboard/paste/libreoffice_writer.d.ts.map +1 -0
  45. package/dist/clipboard/paste/libreoffice_writer.js +2 -2
  46. package/dist/clipboard/paste/libreoffice_writer.js.map +1 -1
  47. package/dist/clipboard/paste/microsoft_word.d.ts +7 -0
  48. package/dist/clipboard/paste/microsoft_word.d.ts.map +1 -0
  49. package/dist/clipboard/paste/microsoft_word.js +13 -14
  50. package/dist/clipboard/paste/microsoft_word.js.map +1 -1
  51. package/dist/clipboard/paste/text.d.ts +11 -0
  52. package/dist/clipboard/paste/text.d.ts.map +1 -0
  53. package/dist/clipboard/paste/text.js +5 -3
  54. package/dist/clipboard/paste/text.js.map +1 -1
  55. package/dist/collab/chat.d.ts +24 -0
  56. package/dist/collab/chat.d.ts.map +1 -0
  57. package/dist/collab/chat.js +46 -16
  58. package/dist/collab/chat.js.map +1 -1
  59. package/dist/collab/colors.d.ts +16 -0
  60. package/dist/collab/colors.d.ts.map +1 -0
  61. package/dist/collab/colors.js +6 -0
  62. package/dist/collab/colors.js.map +1 -1
  63. package/dist/collab/doc.d.ts +147 -0
  64. package/dist/collab/doc.d.ts.map +1 -0
  65. package/dist/collab/doc.js +77 -42
  66. package/dist/collab/doc.js.map +1 -1
  67. package/dist/collab/index.d.ts +23 -0
  68. package/dist/collab/index.d.ts.map +1 -0
  69. package/dist/collab/index.js +14 -3
  70. package/dist/collab/index.js.map +1 -1
  71. package/dist/collab/merge/changeset.d.ts +23 -0
  72. package/dist/collab/merge/changeset.d.ts.map +1 -0
  73. package/dist/collab/merge/changeset.js +5 -4
  74. package/dist/collab/merge/changeset.js.map +1 -1
  75. package/dist/collab/merge/editor.d.ts +53 -0
  76. package/dist/collab/merge/editor.d.ts.map +1 -0
  77. package/dist/collab/merge/editor.js +62 -35
  78. package/dist/collab/merge/editor.js.map +1 -1
  79. package/dist/collab/merge/footnotes.d.ts +26 -0
  80. package/dist/collab/merge/footnotes.d.ts.map +1 -0
  81. package/dist/collab/merge/footnotes.js +14 -5
  82. package/dist/collab/merge/footnotes.js.map +1 -1
  83. package/dist/collab/merge/index.d.ts +32 -0
  84. package/dist/collab/merge/index.d.ts.map +1 -0
  85. package/dist/collab/merge/index.js +38 -26
  86. package/dist/collab/merge/index.js.map +1 -1
  87. package/dist/collab/merge/recreate_transform.d.ts +4 -0
  88. package/dist/collab/merge/recreate_transform.d.ts.map +1 -0
  89. package/dist/collab/merge/recreate_transform.js +25 -5
  90. package/dist/collab/merge/recreate_transform.js.map +1 -1
  91. package/dist/collab/merge/schema.d.ts +4 -0
  92. package/dist/collab/merge/schema.d.ts.map +1 -0
  93. package/dist/collab/merge/schema.js +35 -26
  94. package/dist/collab/merge/schema.js.map +1 -1
  95. package/dist/collab/merge/state_plugins/action.d.ts +16 -0
  96. package/dist/collab/merge/state_plugins/action.d.ts.map +1 -0
  97. package/dist/collab/merge/state_plugins/action.js +4 -5
  98. package/dist/collab/merge/state_plugins/action.js.map +1 -1
  99. package/dist/collab/merge/state_plugins/clipboard.d.ts +6 -0
  100. package/dist/collab/merge/state_plugins/clipboard.d.ts.map +1 -0
  101. package/dist/collab/merge/state_plugins/clipboard.js +1 -1
  102. package/dist/collab/merge/state_plugins/clipboard.js.map +1 -1
  103. package/dist/collab/merge/state_plugins/diff.d.ts +32 -0
  104. package/dist/collab/merge/state_plugins/diff.d.ts.map +1 -0
  105. package/dist/collab/merge/state_plugins/diff.js +108 -84
  106. package/dist/collab/merge/state_plugins/diff.js.map +1 -1
  107. package/dist/collab/merge/state_plugins/index.d.ts +3 -0
  108. package/dist/collab/merge/state_plugins/index.d.ts.map +1 -0
  109. package/dist/collab/merge/state_plugins/index.js.map +1 -1
  110. package/dist/collab/merge/tools.d.ts +11 -0
  111. package/dist/collab/merge/tools.d.ts.map +1 -0
  112. package/dist/collab/merge/tools.js +16 -14
  113. package/dist/collab/merge/tools.js.map +1 -1
  114. package/dist/collab/templates.d.ts +14 -0
  115. package/dist/collab/templates.d.ts.map +1 -0
  116. package/dist/collab/templates.js +1 -1
  117. package/dist/collab/templates.js.map +1 -1
  118. package/dist/comments/comment.d.ts +29 -0
  119. package/dist/comments/comment.d.ts.map +1 -0
  120. package/dist/comments/comment.js +12 -0
  121. package/dist/comments/comment.js.map +1 -1
  122. package/dist/comments/editors/answer.d.ts +14 -0
  123. package/dist/comments/editors/answer.d.ts.map +1 -0
  124. package/dist/comments/editors/answer.js +5 -3
  125. package/dist/comments/editors/answer.js.map +1 -1
  126. package/dist/comments/editors/comment.d.ts +65 -0
  127. package/dist/comments/editors/comment.d.ts.map +1 -0
  128. package/dist/comments/editors/comment.js +43 -14
  129. package/dist/comments/editors/comment.js.map +1 -1
  130. package/dist/comments/editors/index.d.ts +4 -0
  131. package/dist/comments/editors/index.d.ts.map +1 -0
  132. package/dist/comments/editors/index.js.map +1 -1
  133. package/dist/comments/editors/notify.d.ts +3 -0
  134. package/dist/comments/editors/notify.d.ts.map +1 -0
  135. package/dist/comments/editors/notify.js.map +1 -1
  136. package/dist/comments/editors/schema.d.ts +12 -0
  137. package/dist/comments/editors/schema.d.ts.map +1 -0
  138. package/dist/comments/editors/schema.js +5 -5
  139. package/dist/comments/editors/schema.js.map +1 -1
  140. package/dist/comments/index.d.ts +10 -0
  141. package/dist/comments/index.d.ts.map +1 -0
  142. package/dist/comments/index.js +5 -2
  143. package/dist/comments/index.js.map +1 -1
  144. package/dist/comments/interactions.d.ts +49 -0
  145. package/dist/comments/interactions.d.ts.map +1 -0
  146. package/dist/comments/interactions.js +33 -18
  147. package/dist/comments/interactions.js.map +1 -1
  148. package/dist/comments/store.d.ts +59 -0
  149. package/dist/comments/store.d.ts.map +1 -0
  150. package/dist/comments/store.js +36 -16
  151. package/dist/comments/store.js.map +1 -1
  152. package/dist/contacts/add_dialog.d.ts +7 -0
  153. package/dist/contacts/add_dialog.d.ts.map +1 -0
  154. package/dist/contacts/add_dialog.js +25 -26
  155. package/dist/contacts/add_dialog.js.map +1 -1
  156. package/dist/contacts/templates.d.ts +12 -0
  157. package/dist/contacts/templates.d.ts.map +1 -0
  158. package/dist/contacts/templates.js +3 -2
  159. package/dist/contacts/templates.js.map +1 -1
  160. package/dist/copyright_dialog/index.d.ts +25 -0
  161. package/dist/copyright_dialog/index.d.ts.map +1 -0
  162. package/dist/copyright_dialog/index.js +34 -26
  163. package/dist/copyright_dialog/index.js.map +1 -1
  164. package/dist/copyright_dialog/templates.d.ts +17 -0
  165. package/dist/copyright_dialog/templates.d.ts.map +1 -0
  166. package/dist/copyright_dialog/templates.js.map +1 -1
  167. package/dist/databases/bibliography.d.ts +42 -0
  168. package/dist/databases/bibliography.d.ts.map +1 -0
  169. package/dist/databases/bibliography.js +24 -9
  170. package/dist/databases/bibliography.js.map +1 -1
  171. package/dist/databases/images.d.ts +66 -0
  172. package/dist/databases/images.d.ts.map +1 -0
  173. package/dist/databases/images.js +19 -9
  174. package/dist/databases/images.js.map +1 -1
  175. package/dist/databases/index.d.ts +26 -0
  176. package/dist/databases/index.d.ts.map +1 -0
  177. package/dist/databases/index.js +9 -8
  178. package/dist/databases/index.js.map +1 -1
  179. package/dist/dialogs/citation.d.ts +58 -0
  180. package/dist/dialogs/citation.d.ts.map +1 -0
  181. package/dist/dialogs/citation.js +48 -25
  182. package/dist/dialogs/citation.js.map +1 -1
  183. package/dist/dialogs/code_block.d.ts +25 -0
  184. package/dist/dialogs/code_block.d.ts.map +1 -0
  185. package/dist/dialogs/code_block.js +32 -11
  186. package/dist/dialogs/code_block.js.map +1 -1
  187. package/dist/dialogs/contributor.d.ts +13 -0
  188. package/dist/dialogs/contributor.d.ts.map +1 -0
  189. package/dist/dialogs/contributor.js +17 -20
  190. package/dist/dialogs/contributor.js.map +1 -1
  191. package/dist/dialogs/figure.d.ts +51 -0
  192. package/dist/dialogs/figure.d.ts.map +1 -0
  193. package/dist/dialogs/figure.js +123 -81
  194. package/dist/dialogs/figure.js.map +1 -1
  195. package/dist/dialogs/index.d.ts +11 -0
  196. package/dist/dialogs/index.d.ts.map +1 -0
  197. package/dist/dialogs/index.js.map +1 -1
  198. package/dist/dialogs/language.d.ts +10 -0
  199. package/dist/dialogs/language.d.ts.map +1 -0
  200. package/dist/dialogs/language.js +4 -1
  201. package/dist/dialogs/language.js.map +1 -1
  202. package/dist/dialogs/link.d.ts +30 -0
  203. package/dist/dialogs/link.d.ts.map +1 -0
  204. package/dist/dialogs/link.js +27 -15
  205. package/dist/dialogs/link.js.map +1 -1
  206. package/dist/dialogs/math.d.ts +22 -0
  207. package/dist/dialogs/math.d.ts.map +1 -0
  208. package/dist/dialogs/math.js +27 -14
  209. package/dist/dialogs/math.js.map +1 -1
  210. package/dist/dialogs/ordered_list.d.ts +22 -0
  211. package/dist/dialogs/ordered_list.d.ts.map +1 -0
  212. package/dist/dialogs/ordered_list.js +12 -5
  213. package/dist/dialogs/ordered_list.js.map +1 -1
  214. package/dist/dialogs/revision.d.ts +8 -0
  215. package/dist/dialogs/revision.d.ts.map +1 -0
  216. package/dist/dialogs/revision.js +2 -0
  217. package/dist/dialogs/revision.js.map +1 -1
  218. package/dist/dialogs/subsup.d.ts +5 -0
  219. package/dist/dialogs/subsup.d.ts.map +1 -0
  220. package/dist/dialogs/subsup.js +3 -3
  221. package/dist/dialogs/subsup.js.map +1 -1
  222. package/dist/dialogs/table.d.ts +33 -0
  223. package/dist/dialogs/table.d.ts.map +1 -0
  224. package/dist/dialogs/table.js +43 -21
  225. package/dist/dialogs/table.js.map +1 -1
  226. package/dist/dialogs/templates.d.ts +85 -0
  227. package/dist/dialogs/templates.d.ts.map +1 -0
  228. package/dist/dialogs/templates.js +8 -8
  229. package/dist/dialogs/templates.js.map +1 -1
  230. package/dist/document_template/exporter.d.ts +23 -0
  231. package/dist/document_template/exporter.d.ts.map +1 -0
  232. package/dist/document_template/exporter.js +14 -5
  233. package/dist/document_template/exporter.js.map +1 -1
  234. package/dist/document_template/index.d.ts +35 -0
  235. package/dist/document_template/index.d.ts.map +1 -0
  236. package/dist/document_template/index.js +61 -53
  237. package/dist/document_template/index.js.map +1 -1
  238. package/dist/document_template/schema.d.ts +13 -0
  239. package/dist/document_template/schema.d.ts.map +1 -0
  240. package/dist/document_template/schema.js +2 -2
  241. package/dist/document_template/schema.js.map +1 -1
  242. package/dist/documents/access_rights/index.d.ts +85 -0
  243. package/dist/documents/access_rights/index.d.ts.map +1 -0
  244. package/dist/documents/access_rights/index.js +96 -60
  245. package/dist/documents/access_rights/index.js.map +1 -1
  246. package/dist/documents/access_rights/templates.d.ts +47 -0
  247. package/dist/documents/access_rights/templates.d.ts.map +1 -0
  248. package/dist/documents/access_rights/templates.js.map +1 -1
  249. package/dist/e2ee/snapshot-manager.d.ts +120 -0
  250. package/dist/e2ee/snapshot-manager.d.ts.map +1 -0
  251. package/dist/e2ee/snapshot-manager.js +27 -38
  252. package/dist/e2ee/snapshot-manager.js.map +1 -1
  253. package/dist/exporter/native/copy.d.ts +16 -0
  254. package/dist/exporter/native/copy.d.ts.map +1 -0
  255. package/dist/exporter/native/copy.js +51 -35
  256. package/dist/exporter/native/copy.js.map +1 -1
  257. package/dist/exporter/native/file.d.ts +6 -0
  258. package/dist/exporter/native/file.d.ts.map +1 -0
  259. package/dist/exporter/native/file.js +1 -1
  260. package/dist/exporter/native/file.js.map +1 -1
  261. package/dist/exporter/native/index.d.ts +4 -0
  262. package/dist/exporter/native/index.d.ts.map +1 -0
  263. package/dist/exporter/native/index.js.map +1 -1
  264. package/dist/exporter/native/revision.d.ts +8 -0
  265. package/dist/exporter/native/revision.d.ts.map +1 -0
  266. package/dist/exporter/native/revision.js +2 -2
  267. package/dist/exporter/native/revision.js.map +1 -1
  268. package/dist/exporter/native/zip.d.ts +2 -0
  269. package/dist/exporter/native/zip.d.ts.map +1 -0
  270. package/dist/exporter/native/zip.js.map +1 -1
  271. package/dist/footnotes/editor.d.ts +25 -0
  272. package/dist/footnotes/editor.d.ts.map +1 -0
  273. package/dist/footnotes/editor.js +5 -3
  274. package/dist/footnotes/editor.js.map +1 -1
  275. package/dist/footnotes/index.d.ts +11 -0
  276. package/dist/footnotes/index.d.ts.map +1 -0
  277. package/dist/footnotes/index.js +5 -2
  278. package/dist/footnotes/index.js.map +1 -1
  279. package/dist/footnotes/layout.d.ts +15 -0
  280. package/dist/footnotes/layout.d.ts.map +1 -0
  281. package/dist/footnotes/layout.js +26 -17
  282. package/dist/footnotes/layout.js.map +1 -1
  283. package/dist/footnotes/state_plugins/access_rights.d.ts +6 -0
  284. package/dist/footnotes/state_plugins/access_rights.d.ts.map +1 -0
  285. package/dist/footnotes/state_plugins/access_rights.js +1 -1
  286. package/dist/footnotes/state_plugins/access_rights.js.map +1 -1
  287. package/dist/footnotes/state_plugins/index.d.ts +2 -0
  288. package/dist/footnotes/state_plugins/index.d.ts.map +1 -0
  289. package/dist/footnotes/state_plugins/index.js.map +1 -1
  290. package/dist/images/edit_dialog/model.d.ts +4 -0
  291. package/dist/images/edit_dialog/model.d.ts.map +1 -0
  292. package/dist/images/edit_dialog/model.js.map +1 -1
  293. package/dist/index.d.ts +74 -0
  294. package/dist/index.d.ts.map +1 -0
  295. package/dist/index.js +88 -60
  296. package/dist/index.js.map +1 -1
  297. package/dist/keymap.d.ts +5 -0
  298. package/dist/keymap.d.ts.map +1 -0
  299. package/dist/keymap.js +1 -1
  300. package/dist/keymap.js.map +1 -1
  301. package/dist/marginboxes/index.d.ts +107 -0
  302. package/dist/marginboxes/index.d.ts.map +1 -0
  303. package/dist/marginboxes/index.js +165 -88
  304. package/dist/marginboxes/index.js.map +1 -1
  305. package/dist/marginboxes/templates.d.ts +118 -0
  306. package/dist/marginboxes/templates.d.ts.map +1 -0
  307. package/dist/marginboxes/templates.js +25 -24
  308. package/dist/marginboxes/templates.js.map +1 -1
  309. package/dist/menus/code_block/index.d.ts +2 -0
  310. package/dist/menus/code_block/index.d.ts.map +1 -0
  311. package/dist/menus/code_block/index.js.map +1 -1
  312. package/dist/menus/code_block/model.d.ts +14 -0
  313. package/dist/menus/code_block/model.d.ts.map +1 -0
  314. package/dist/menus/code_block/model.js +5 -4
  315. package/dist/menus/code_block/model.js.map +1 -1
  316. package/dist/menus/figure/index.d.ts +3 -0
  317. package/dist/menus/figure/index.d.ts.map +1 -0
  318. package/dist/menus/figure/index.js.map +1 -1
  319. package/dist/menus/figure/model.d.ts +32 -0
  320. package/dist/menus/figure/model.d.ts.map +1 -0
  321. package/dist/menus/figure/model.js +11 -12
  322. package/dist/menus/figure/model.js.map +1 -1
  323. package/dist/menus/figure/utils.d.ts +3 -0
  324. package/dist/menus/figure/utils.d.ts.map +1 -0
  325. package/dist/menus/figure/utils.js +4 -1
  326. package/dist/menus/figure/utils.js.map +1 -1
  327. package/dist/menus/headerbar/index.d.ts +3 -0
  328. package/dist/menus/headerbar/index.d.ts.map +1 -0
  329. package/dist/menus/headerbar/index.js.map +1 -1
  330. package/dist/menus/headerbar/model.d.ts +192 -0
  331. package/dist/menus/headerbar/model.d.ts.map +1 -0
  332. package/dist/menus/headerbar/model.js +141 -110
  333. package/dist/menus/headerbar/model.js.map +1 -1
  334. package/dist/menus/headerbar/view.d.ts +89 -0
  335. package/dist/menus/headerbar/view.d.ts.map +1 -0
  336. package/dist/menus/headerbar/view.js +76 -45
  337. package/dist/menus/headerbar/view.js.map +1 -1
  338. package/dist/menus/image/index.d.ts +2 -0
  339. package/dist/menus/image/index.d.ts.map +1 -0
  340. package/dist/menus/image/index.js.map +1 -1
  341. package/dist/menus/image/model.d.ts +18 -0
  342. package/dist/menus/image/model.d.ts.map +1 -0
  343. package/dist/menus/image/model.js +2 -2
  344. package/dist/menus/image/model.js.map +1 -1
  345. package/dist/menus/index.d.ts +10 -0
  346. package/dist/menus/index.d.ts.map +1 -0
  347. package/dist/menus/index.js.map +1 -1
  348. package/dist/menus/navigator/index.d.ts +2 -0
  349. package/dist/menus/navigator/index.d.ts.map +1 -0
  350. package/dist/menus/navigator/index.js.map +1 -1
  351. package/dist/menus/navigator/model.d.ts +9 -0
  352. package/dist/menus/navigator/model.d.ts.map +1 -0
  353. package/dist/menus/navigator/model.js.map +1 -1
  354. package/dist/menus/ordered_list/index.d.ts +2 -0
  355. package/dist/menus/ordered_list/index.d.ts.map +1 -0
  356. package/dist/menus/ordered_list/index.js.map +1 -1
  357. package/dist/menus/ordered_list/model.d.ts +11 -0
  358. package/dist/menus/ordered_list/model.d.ts.map +1 -0
  359. package/dist/menus/ordered_list/model.js +1 -1
  360. package/dist/menus/ordered_list/model.js.map +1 -1
  361. package/dist/menus/selection/index.d.ts +3 -0
  362. package/dist/menus/selection/index.d.ts.map +1 -0
  363. package/dist/menus/selection/index.js.map +1 -1
  364. package/dist/menus/selection/model.d.ts +16 -0
  365. package/dist/menus/selection/model.d.ts.map +1 -0
  366. package/dist/menus/selection/model.js +18 -16
  367. package/dist/menus/selection/model.js.map +1 -1
  368. package/dist/menus/selection/view.d.ts +49 -0
  369. package/dist/menus/selection/view.d.ts.map +1 -0
  370. package/dist/menus/selection/view.js +33 -18
  371. package/dist/menus/selection/view.js.map +1 -1
  372. package/dist/menus/table/index.d.ts +2 -0
  373. package/dist/menus/table/index.d.ts.map +1 -0
  374. package/dist/menus/table/index.js.map +1 -1
  375. package/dist/menus/table/model.d.ts +39 -0
  376. package/dist/menus/table/model.d.ts.map +1 -0
  377. package/dist/menus/table/model.js +53 -50
  378. package/dist/menus/table/model.js.map +1 -1
  379. package/dist/menus/toolbar/index.d.ts +3 -0
  380. package/dist/menus/toolbar/index.d.ts.map +1 -0
  381. package/dist/menus/toolbar/index.js.map +1 -1
  382. package/dist/menus/toolbar/model.d.ts +125 -0
  383. package/dist/menus/toolbar/model.d.ts.map +1 -0
  384. package/dist/menus/toolbar/model.js +160 -140
  385. package/dist/menus/toolbar/model.js.map +1 -1
  386. package/dist/menus/toolbar/view.d.ts +72 -0
  387. package/dist/menus/toolbar/view.d.ts.map +1 -0
  388. package/dist/menus/toolbar/view.js +61 -36
  389. package/dist/menus/toolbar/view.js.map +1 -1
  390. package/dist/navigator/index.d.ts +38 -0
  391. package/dist/navigator/index.d.ts.map +1 -0
  392. package/dist/navigator/index.js +42 -21
  393. package/dist/navigator/index.js.map +1 -1
  394. package/dist/no_collab_save/index.d.ts +20 -0
  395. package/dist/no_collab_save/index.d.ts.map +1 -0
  396. package/dist/no_collab_save/index.js +20 -11
  397. package/dist/no_collab_save/index.js.map +1 -1
  398. package/dist/plugins/citation_dialog/index.d.ts +2 -0
  399. package/dist/plugins/citation_dialog/index.d.ts.map +1 -0
  400. package/dist/plugins/citation_dialog/index.js.map +1 -1
  401. package/dist/plugins/editor/index.d.ts +2 -0
  402. package/dist/plugins/editor/index.d.ts.map +1 -0
  403. package/dist/plugins/editor/index.js.map +1 -1
  404. package/dist/state_plugins/access_rights.d.ts +6 -0
  405. package/dist/state_plugins/access_rights.d.ts.map +1 -0
  406. package/dist/state_plugins/access_rights.js +5 -3
  407. package/dist/state_plugins/access_rights.js.map +1 -1
  408. package/dist/state_plugins/citation_render.d.ts +9 -0
  409. package/dist/state_plugins/citation_render.d.ts.map +1 -0
  410. package/dist/state_plugins/citation_render.js +12 -43
  411. package/dist/state_plugins/citation_render.js.map +1 -1
  412. package/dist/state_plugins/clipboard.d.ts +12 -0
  413. package/dist/state_plugins/clipboard.d.ts.map +1 -0
  414. package/dist/state_plugins/clipboard.js +13 -11
  415. package/dist/state_plugins/clipboard.js.map +1 -1
  416. package/dist/state_plugins/code_block.d.ts +6 -0
  417. package/dist/state_plugins/code_block.d.ts.map +1 -0
  418. package/dist/state_plugins/code_block.js +23 -9
  419. package/dist/state_plugins/code_block.js.map +1 -1
  420. package/dist/state_plugins/collab_carets.d.ts +26 -0
  421. package/dist/state_plugins/collab_carets.d.ts.map +1 -0
  422. package/dist/state_plugins/collab_carets.js +24 -16
  423. package/dist/state_plugins/collab_carets.js.map +1 -1
  424. package/dist/state_plugins/comments.d.ts +15 -0
  425. package/dist/state_plugins/comments.d.ts.map +1 -0
  426. package/dist/state_plugins/comments.js +26 -21
  427. package/dist/state_plugins/comments.js.map +1 -1
  428. package/dist/state_plugins/contributor_input/dropup.d.ts +17 -0
  429. package/dist/state_plugins/contributor_input/dropup.d.ts.map +1 -0
  430. package/dist/state_plugins/contributor_input/dropup.js +19 -20
  431. package/dist/state_plugins/contributor_input/dropup.js.map +1 -1
  432. package/dist/state_plugins/contributor_input/index.d.ts +3 -0
  433. package/dist/state_plugins/contributor_input/index.d.ts.map +1 -0
  434. package/dist/state_plugins/contributor_input/index.js.map +1 -1
  435. package/dist/state_plugins/contributor_input/node_view.d.ts +7 -0
  436. package/dist/state_plugins/contributor_input/node_view.d.ts.map +1 -0
  437. package/dist/state_plugins/contributor_input/node_view.js.map +1 -1
  438. package/dist/state_plugins/contributor_input/plugin.d.ts +19 -0
  439. package/dist/state_plugins/contributor_input/plugin.d.ts.map +1 -0
  440. package/dist/state_plugins/contributor_input/plugin.js +14 -45
  441. package/dist/state_plugins/contributor_input/plugin.js.map +1 -1
  442. package/dist/state_plugins/document_template.d.ts +33 -0
  443. package/dist/state_plugins/document_template.d.ts.map +1 -0
  444. package/dist/state_plugins/document_template.js +34 -15
  445. package/dist/state_plugins/document_template.js.map +1 -1
  446. package/dist/state_plugins/figure.d.ts +6 -0
  447. package/dist/state_plugins/figure.d.ts.map +1 -0
  448. package/dist/state_plugins/figure.js +26 -8
  449. package/dist/state_plugins/figure.js.map +1 -1
  450. package/dist/state_plugins/footnote_markers.d.ts +15 -0
  451. package/dist/state_plugins/footnote_markers.d.ts.map +1 -0
  452. package/dist/state_plugins/footnote_markers.js +72 -153
  453. package/dist/state_plugins/footnote_markers.js.map +1 -1
  454. package/dist/state_plugins/headerbar.d.ts +6 -0
  455. package/dist/state_plugins/headerbar.d.ts.map +1 -0
  456. package/dist/state_plugins/headerbar.js +1 -1
  457. package/dist/state_plugins/headerbar.js.map +1 -1
  458. package/dist/state_plugins/index.d.ts +28 -0
  459. package/dist/state_plugins/index.d.ts.map +1 -0
  460. package/dist/state_plugins/index.js +13 -12
  461. package/dist/state_plugins/index.js.map +1 -1
  462. package/dist/state_plugins/inline_math.d.ts +6 -0
  463. package/dist/state_plugins/inline_math.d.ts.map +1 -0
  464. package/dist/state_plugins/inline_math.js +28 -19
  465. package/dist/state_plugins/inline_math.js.map +1 -1
  466. package/dist/state_plugins/inline_reference/dropup.d.ts +62 -0
  467. package/dist/state_plugins/inline_reference/dropup.d.ts.map +1 -0
  468. package/dist/state_plugins/inline_reference/dropup.js +17 -17
  469. package/dist/state_plugins/inline_reference/dropup.js.map +1 -1
  470. package/dist/state_plugins/inline_reference/index.d.ts +2 -0
  471. package/dist/state_plugins/inline_reference/index.d.ts.map +1 -0
  472. package/dist/state_plugins/inline_reference/index.js.map +1 -1
  473. package/dist/state_plugins/inline_reference/plugin.d.ts +35 -0
  474. package/dist/state_plugins/inline_reference/plugin.d.ts.map +1 -0
  475. package/dist/state_plugins/inline_reference/plugin.js +68 -55
  476. package/dist/state_plugins/inline_reference/plugin.js.map +1 -1
  477. package/dist/state_plugins/jump_hidden_nodes.d.ts +5 -0
  478. package/dist/state_plugins/jump_hidden_nodes.d.ts.map +1 -0
  479. package/dist/state_plugins/jump_hidden_nodes.js +35 -22
  480. package/dist/state_plugins/jump_hidden_nodes.js.map +1 -1
  481. package/dist/state_plugins/links.d.ts +11 -0
  482. package/dist/state_plugins/links.d.ts.map +1 -0
  483. package/dist/state_plugins/links.js +39 -25
  484. package/dist/state_plugins/links.js.map +1 -1
  485. package/dist/state_plugins/marginboxes.d.ts +6 -0
  486. package/dist/state_plugins/marginboxes.d.ts.map +1 -0
  487. package/dist/state_plugins/marginboxes.js +2 -1
  488. package/dist/state_plugins/marginboxes.js.map +1 -1
  489. package/dist/state_plugins/ordered_list_menu.d.ts +6 -0
  490. package/dist/state_plugins/ordered_list_menu.d.ts.map +1 -0
  491. package/dist/state_plugins/ordered_list_menu.js +20 -6
  492. package/dist/state_plugins/ordered_list_menu.js.map +1 -1
  493. package/dist/state_plugins/placeholders.d.ts +6 -0
  494. package/dist/state_plugins/placeholders.d.ts.map +1 -0
  495. package/dist/state_plugins/placeholders.js +18 -54
  496. package/dist/state_plugins/placeholders.js.map +1 -1
  497. package/dist/state_plugins/search.d.ts +34 -0
  498. package/dist/state_plugins/search.d.ts.map +1 -0
  499. package/dist/state_plugins/search.js +31 -27
  500. package/dist/state_plugins/search.js.map +1 -1
  501. package/dist/state_plugins/selection_menu.d.ts +6 -0
  502. package/dist/state_plugins/selection_menu.d.ts.map +1 -0
  503. package/dist/state_plugins/selection_menu.js +1 -1
  504. package/dist/state_plugins/selection_menu.js.map +1 -1
  505. package/dist/state_plugins/settings.d.ts +8 -0
  506. package/dist/state_plugins/settings.d.ts.map +1 -0
  507. package/dist/state_plugins/settings.js +31 -21
  508. package/dist/state_plugins/settings.js.map +1 -1
  509. package/dist/state_plugins/table.d.ts +6 -0
  510. package/dist/state_plugins/table.d.ts.map +1 -0
  511. package/dist/state_plugins/table.js +33 -13
  512. package/dist/state_plugins/table.js.map +1 -1
  513. package/dist/state_plugins/tag_input/index.d.ts +3 -0
  514. package/dist/state_plugins/tag_input/index.d.ts.map +1 -0
  515. package/dist/state_plugins/tag_input/index.js.map +1 -1
  516. package/dist/state_plugins/tag_input/node_view.d.ts +7 -0
  517. package/dist/state_plugins/tag_input/node_view.d.ts.map +1 -0
  518. package/dist/state_plugins/tag_input/node_view.js.map +1 -1
  519. package/dist/state_plugins/tag_input/plugin.d.ts +14 -0
  520. package/dist/state_plugins/tag_input/plugin.d.ts.map +1 -0
  521. package/dist/state_plugins/tag_input/plugin.js +7 -6
  522. package/dist/state_plugins/tag_input/plugin.js.map +1 -1
  523. package/dist/state_plugins/toc_render.d.ts +6 -0
  524. package/dist/state_plugins/toc_render.d.ts.map +1 -0
  525. package/dist/state_plugins/toc_render.js +59 -96
  526. package/dist/state_plugins/toc_render.js.map +1 -1
  527. package/dist/state_plugins/toolbar.d.ts +6 -0
  528. package/dist/state_plugins/toolbar.d.ts.map +1 -0
  529. package/dist/state_plugins/toolbar.js +1 -1
  530. package/dist/state_plugins/toolbar.js.map +1 -1
  531. package/dist/state_plugins/track/find_selected_changes.d.ts +13 -0
  532. package/dist/state_plugins/track/find_selected_changes.d.ts.map +1 -0
  533. package/dist/state_plugins/track/find_selected_changes.js +4 -3
  534. package/dist/state_plugins/track/find_selected_changes.js.map +1 -1
  535. package/dist/state_plugins/track/helpers.d.ts +29 -0
  536. package/dist/state_plugins/track/helpers.d.ts.map +1 -0
  537. package/dist/state_plugins/track/helpers.js +9 -3
  538. package/dist/state_plugins/track/helpers.js.map +1 -1
  539. package/dist/state_plugins/track/index.d.ts +3 -0
  540. package/dist/state_plugins/track/index.d.ts.map +1 -0
  541. package/dist/state_plugins/track/index.js.map +1 -1
  542. package/dist/state_plugins/track/plugin.d.ts +14 -0
  543. package/dist/state_plugins/track/plugin.d.ts.map +1 -0
  544. package/dist/state_plugins/track/plugin.js +10 -6
  545. package/dist/state_plugins/track/plugin.js.map +1 -1
  546. package/dist/tools/index.d.ts +4 -0
  547. package/dist/tools/index.d.ts.map +1 -0
  548. package/dist/tools/index.js.map +1 -1
  549. package/dist/tools/key_bindings/index.d.ts +7 -0
  550. package/dist/tools/key_bindings/index.d.ts.map +1 -0
  551. package/dist/tools/key_bindings/index.js +1 -3
  552. package/dist/tools/key_bindings/index.js.map +1 -1
  553. package/dist/tools/key_bindings/templates.d.ts +2 -0
  554. package/dist/tools/key_bindings/templates.d.ts.map +1 -0
  555. package/dist/tools/key_bindings/templates.js.map +1 -1
  556. package/dist/tools/search_replace/index.d.ts +28 -0
  557. package/dist/tools/search_replace/index.d.ts.map +1 -0
  558. package/dist/tools/search_replace/index.js +53 -27
  559. package/dist/tools/search_replace/index.js.map +1 -1
  560. package/dist/tools/search_replace/templates.d.ts +6 -0
  561. package/dist/tools/search_replace/templates.d.ts.map +1 -0
  562. package/dist/tools/search_replace/templates.js.map +1 -1
  563. package/dist/tools/word_count/index.d.ts +15 -0
  564. package/dist/tools/word_count/index.d.ts.map +1 -0
  565. package/dist/tools/word_count/index.js +2 -1
  566. package/dist/tools/word_count/index.js.map +1 -1
  567. package/dist/tools/word_count/templates.d.ts +11 -0
  568. package/dist/tools/word_count/templates.d.ts.map +1 -0
  569. package/dist/tools/word_count/templates.js.map +1 -1
  570. package/dist/track/accept.d.ts +3 -0
  571. package/dist/track/accept.d.ts.map +1 -0
  572. package/dist/track/accept.js +10 -5
  573. package/dist/track/accept.js.map +1 -1
  574. package/dist/track/accept_all.d.ts +3 -0
  575. package/dist/track/accept_all.d.ts.map +1 -0
  576. package/dist/track/accept_all.js +2 -2
  577. package/dist/track/accept_all.js.map +1 -1
  578. package/dist/track/accept_all_no_insertions.d.ts +3 -0
  579. package/dist/track/accept_all_no_insertions.d.ts.map +1 -0
  580. package/dist/track/accept_all_no_insertions.js +2 -2
  581. package/dist/track/accept_all_no_insertions.js.map +1 -1
  582. package/dist/track/amend_transaction.d.ts +5 -0
  583. package/dist/track/amend_transaction.d.ts.map +1 -0
  584. package/dist/track/amend_transaction.js +55 -32
  585. package/dist/track/amend_transaction.js.map +1 -1
  586. package/dist/track/delete.d.ts +3 -0
  587. package/dist/track/delete.d.ts.map +1 -0
  588. package/dist/track/delete.js +4 -3
  589. package/dist/track/delete.js.map +1 -1
  590. package/dist/track/index.d.ts +6 -0
  591. package/dist/track/index.d.ts.map +1 -0
  592. package/dist/track/index.js.map +1 -1
  593. package/dist/track/mod.d.ts +10 -0
  594. package/dist/track/mod.d.ts.map +1 -0
  595. package/dist/track/mod.js +9 -5
  596. package/dist/track/mod.js.map +1 -1
  597. package/dist/track/reject.d.ts +3 -0
  598. package/dist/track/reject.d.ts.map +1 -0
  599. package/dist/track/reject.js +14 -5
  600. package/dist/track/reject.js.map +1 -1
  601. package/dist/track/reject_all.d.ts +3 -0
  602. package/dist/track/reject_all.d.ts.map +1 -0
  603. package/dist/track/reject_all.js +6 -2
  604. package/dist/track/reject_all.js.map +1 -1
  605. package/dist/types.d.ts +182 -0
  606. package/dist/types.d.ts.map +1 -0
  607. package/dist/types.js +17 -0
  608. package/dist/types.js.map +1 -0
  609. package/package.json +38 -3
  610. package/src/bibliography/{tools.js → tools.ts} +16 -5
  611. package/src/citations/{index.js → index.ts} +100 -80
  612. package/src/citations/{render.js → render.ts} +43 -15
  613. package/src/clipboard/copy/{schema.js → schema.ts} +19 -8
  614. package/src/clipboard/copy/{serializers.js → serializers.ts} +44 -32
  615. package/src/clipboard/paste/{fidus_writer.js → fidus_writer.ts} +28 -8
  616. package/src/clipboard/paste/{general.js → general.ts} +28 -13
  617. package/src/clipboard/paste/{google_docs.js → google_docs.ts} +7 -4
  618. package/src/clipboard/paste/{html.js → html.ts} +35 -8
  619. package/src/clipboard/paste/{libreoffice_writer.js → libreoffice_writer.ts} +4 -4
  620. package/src/clipboard/paste/{microsoft_word.js → microsoft_word.ts} +22 -21
  621. package/src/clipboard/paste/{text.js → text.ts} +11 -7
  622. package/src/collab/{chat.js → chat.ts} +78 -27
  623. package/src/collab/{colors.js → colors.ts} +21 -5
  624. package/src/collab/{doc.js → doc.ts} +290 -184
  625. package/src/collab/{index.js → index.ts} +47 -13
  626. package/src/collab/merge/{changeset.js → changeset.ts} +33 -20
  627. package/src/collab/merge/{editor.js → editor.ts} +211 -107
  628. package/src/collab/merge/{footnotes.js → footnotes.ts} +43 -22
  629. package/src/collab/merge/{index.js → index.ts} +147 -70
  630. package/src/collab/merge/{recreate_transform.js → recreate_transform.ts} +60 -29
  631. package/src/collab/merge/{schema.js → schema.ts} +55 -35
  632. package/src/collab/merge/state_plugins/{action.js → action.ts} +65 -27
  633. package/src/collab/merge/state_plugins/{clipboard.js → clipboard.ts} +13 -3
  634. package/src/collab/merge/state_plugins/{diff.js → diff.ts} +279 -168
  635. package/src/collab/merge/{tools.js → tools.ts} +57 -27
  636. package/src/collab/{templates.js → templates.ts} +17 -2
  637. package/src/comments/{comment.js → comment.ts} +26 -0
  638. package/src/comments/editors/{answer.js → answer.ts} +27 -12
  639. package/src/comments/editors/{comment.js → comment.ts} +112 -36
  640. package/src/comments/editors/{notify.js → notify.ts} +6 -1
  641. package/src/comments/editors/{schema.js → schema.ts} +9 -8
  642. package/src/comments/index.ts +16 -0
  643. package/src/comments/{interactions.js → interactions.ts} +150 -89
  644. package/src/comments/{store.js → store.ts} +149 -73
  645. package/src/contacts/{add_dialog.js → add_dialog.ts} +50 -37
  646. package/src/contacts/{templates.js → templates.ts} +9 -3
  647. package/src/copyright_dialog/{index.js → index.ts} +92 -57
  648. package/src/copyright_dialog/{templates.js → templates.ts} +18 -3
  649. package/src/databases/{bibliography.js → bibliography.ts} +62 -36
  650. package/src/databases/{images.js → images.ts} +146 -96
  651. package/src/databases/index.ts +116 -0
  652. package/src/dialogs/{citation.js → citation.ts} +191 -107
  653. package/src/dialogs/{code_block.js → code_block.ts} +75 -33
  654. package/src/dialogs/{contributor.js → contributor.ts} +74 -49
  655. package/src/dialogs/{figure.js → figure.ts} +250 -149
  656. package/src/dialogs/{language.js → language.ts} +11 -6
  657. package/src/dialogs/{link.js → link.ts} +105 -60
  658. package/src/dialogs/{math.js → math.ts} +56 -28
  659. package/src/dialogs/{ordered_list.js → ordered_list.ts} +25 -12
  660. package/src/dialogs/{revision.js → revision.ts} +13 -9
  661. package/src/dialogs/{subsup.js → subsup.ts} +9 -7
  662. package/src/dialogs/{table.js → table.ts} +129 -70
  663. package/src/dialogs/{templates.js → templates.ts} +102 -22
  664. package/src/document_template/exporter.ts +158 -0
  665. package/src/document_template/{index.js → index.ts} +158 -117
  666. package/src/document_template/{schema.js → schema.ts} +31 -28
  667. package/src/documents/access_rights/{index.js → index.ts} +240 -123
  668. package/src/documents/access_rights/{templates.js → templates.ts} +41 -5
  669. package/src/e2ee/{snapshot-manager.js → snapshot-manager.ts} +80 -49
  670. package/src/exporter/native/copy.ts +302 -0
  671. package/src/exporter/native/{file.js → file.ts} +12 -5
  672. package/src/exporter/native/{revision.js → revision.ts} +17 -9
  673. package/src/footnotes/{editor.js → editor.ts} +37 -18
  674. package/src/footnotes/index.ts +21 -0
  675. package/src/footnotes/{layout.js → layout.ts} +53 -36
  676. package/src/footnotes/state_plugins/{access_rights.js → access_rights.ts} +6 -4
  677. package/src/global.d.ts +29 -0
  678. package/src/images/edit_dialog/{model.js → model.ts} +1 -1
  679. package/src/{index.js → index.ts} +194 -132
  680. package/src/{keymap.js → keymap.ts} +36 -16
  681. package/src/marginboxes/{index.js → index.ts} +341 -171
  682. package/src/marginboxes/{templates.js → templates.ts} +236 -38
  683. package/src/menus/code_block/{model.js → model.ts} +16 -5
  684. package/src/menus/figure/{model.js → model.ts} +21 -16
  685. package/src/menus/figure/utils.ts +13 -0
  686. package/src/menus/headerbar/{model.js → model.ts} +243 -153
  687. package/src/menus/headerbar/{view.js → view.ts} +189 -92
  688. package/src/menus/image/{model.js → model.ts} +13 -4
  689. package/src/menus/navigator/{model.js → model.ts} +6 -1
  690. package/src/menus/ordered_list/{model.js → model.ts} +2 -1
  691. package/src/menus/selection/{model.js → model.ts} +38 -20
  692. package/src/menus/selection/{view.js → view.ts} +88 -35
  693. package/src/menus/table/{model.js → model.ts} +84 -63
  694. package/src/menus/toolbar/{model.js → model.ts} +267 -215
  695. package/src/menus/toolbar/{view.js → view.ts} +135 -65
  696. package/src/modules.d.ts +84 -0
  697. package/src/navigator/{index.js → index.ts} +90 -56
  698. package/src/no_collab_save/{index.js → index.ts} +54 -31
  699. package/src/state_plugins/{access_rights.js → access_rights.ts} +12 -7
  700. package/src/state_plugins/citation_render.ts +63 -0
  701. package/src/state_plugins/{clipboard.js → clipboard.ts} +38 -23
  702. package/src/state_plugins/{code_block.js → code_block.ts} +62 -28
  703. package/src/state_plugins/{collab_carets.js → collab_carets.ts} +56 -25
  704. package/src/state_plugins/{comments.js → comments.ts} +70 -40
  705. package/src/state_plugins/contributor_input/{dropup.js → dropup.ts} +70 -38
  706. package/src/state_plugins/contributor_input/{node_view.js → node_view.ts} +13 -4
  707. package/src/state_plugins/contributor_input/{plugin.js → plugin.ts} +74 -75
  708. package/src/state_plugins/{document_template.js → document_template.ts} +108 -49
  709. package/src/state_plugins/{figure.js → figure.ts} +61 -23
  710. package/src/state_plugins/footnote_markers.ts +142 -0
  711. package/src/state_plugins/{headerbar.js → headerbar.ts} +4 -2
  712. package/src/state_plugins/{index.js → index.ts} +23 -56
  713. package/src/state_plugins/{inline_math.js → inline_math.ts} +151 -65
  714. package/src/state_plugins/inline_reference/{dropup.js → dropup.ts} +68 -34
  715. package/src/state_plugins/inline_reference/{plugin.js → plugin.ts} +221 -101
  716. package/src/state_plugins/jump_hidden_nodes.ts +67 -0
  717. package/src/state_plugins/{links.js → links.ts} +153 -99
  718. package/src/state_plugins/marginboxes.ts +17 -0
  719. package/src/state_plugins/{ordered_list_menu.js → ordered_list_menu.ts} +43 -17
  720. package/src/state_plugins/placeholders.ts +78 -0
  721. package/src/state_plugins/{search.js → search.ts} +110 -48
  722. package/src/state_plugins/{selection_menu.js → selection_menu.ts} +4 -2
  723. package/src/state_plugins/{settings.js → settings.ts} +68 -39
  724. package/src/state_plugins/table.ts +169 -0
  725. package/src/state_plugins/tag_input/{node_view.js → node_view.ts} +12 -3
  726. package/src/state_plugins/tag_input/plugin.ts +292 -0
  727. package/src/state_plugins/toc_render.ts +133 -0
  728. package/src/state_plugins/{toolbar.js → toolbar.ts} +4 -2
  729. package/src/state_plugins/track/{find_selected_changes.js → find_selected_changes.ts} +34 -19
  730. package/src/state_plugins/track/{helpers.js → helpers.ts} +36 -10
  731. package/src/state_plugins/track/{plugin.js → plugin.ts} +38 -14
  732. package/src/tools/key_bindings/{index.js → index.ts} +7 -3
  733. package/src/tools/key_bindings/{templates.js → templates.ts} +1 -1
  734. package/src/tools/search_replace/{index.js → index.ts} +115 -69
  735. package/src/tools/search_replace/{templates.js → templates.ts} +6 -1
  736. package/src/tools/word_count/{index.js → index.ts} +16 -6
  737. package/src/tools/word_count/{templates.js → templates.ts} +10 -1
  738. package/src/track/{accept.js → accept.ts} +20 -9
  739. package/src/track/{accept_all.js → accept_all.ts} +27 -17
  740. package/src/track/{accept_all_no_insertions.js → accept_all_no_insertions.ts} +16 -10
  741. package/src/track/{amend_transaction.js → amend_transaction.ts} +130 -70
  742. package/src/track/{delete.js → delete.ts} +15 -12
  743. package/src/track/{mod.js → mod.ts} +51 -32
  744. package/src/track/{reject.js → reject.ts} +34 -19
  745. package/src/track/{reject_all.js → reject_all.ts} +44 -24
  746. package/src/types.ts +214 -0
  747. package/src/comments/index.js +0 -11
  748. package/src/databases/index.js +0 -69
  749. package/src/document_template/exporter.js +0 -97
  750. package/src/exporter/native/copy.js +0 -191
  751. package/src/footnotes/index.js +0 -16
  752. package/src/menus/figure/utils.js +0 -5
  753. package/src/state_plugins/citation_render.js +0 -88
  754. package/src/state_plugins/footnote_markers.js +0 -238
  755. package/src/state_plugins/jump_hidden_nodes.js +0 -58
  756. package/src/state_plugins/marginboxes.js +0 -14
  757. package/src/state_plugins/placeholders.js +0 -123
  758. package/src/state_plugins/table.js +0 -127
  759. package/src/state_plugins/tag_input/plugin.js +0 -278
  760. package/src/state_plugins/toc_render.js +0 -160
  761. /package/src/clipboard/copy/{index.js → index.ts} +0 -0
  762. /package/src/clipboard/paste/{index.js → index.ts} +0 -0
  763. /package/src/collab/merge/state_plugins/{index.js → index.ts} +0 -0
  764. /package/src/comments/editors/{index.js → index.ts} +0 -0
  765. /package/src/dialogs/{index.js → index.ts} +0 -0
  766. /package/src/exporter/native/{index.js → index.ts} +0 -0
  767. /package/src/exporter/native/{zip.js → zip.ts} +0 -0
  768. /package/src/footnotes/state_plugins/{index.js → index.ts} +0 -0
  769. /package/src/menus/code_block/{index.js → index.ts} +0 -0
  770. /package/src/menus/figure/{index.js → index.ts} +0 -0
  771. /package/src/menus/headerbar/{index.js → index.ts} +0 -0
  772. /package/src/menus/image/{index.js → index.ts} +0 -0
  773. /package/src/menus/{index.js → index.ts} +0 -0
  774. /package/src/menus/navigator/{index.js → index.ts} +0 -0
  775. /package/src/menus/ordered_list/{index.js → index.ts} +0 -0
  776. /package/src/menus/selection/{index.js → index.ts} +0 -0
  777. /package/src/menus/table/{index.js → index.ts} +0 -0
  778. /package/src/menus/toolbar/{index.js → index.ts} +0 -0
  779. /package/src/plugins/citation_dialog/{index.js → index.ts} +0 -0
  780. /package/src/plugins/editor/{index.js → index.ts} +0 -0
  781. /package/src/state_plugins/contributor_input/{index.js → index.ts} +0 -0
  782. /package/src/state_plugins/inline_reference/{index.js → index.ts} +0 -0
  783. /package/src/state_plugins/tag_input/{index.js → index.ts} +0 -0
  784. /package/src/state_plugins/track/{index.js → index.ts} +0 -0
  785. /package/src/tools/{index.js → index.ts} +0 -0
  786. /package/src/track/{index.js → index.ts} +0 -0
@@ -1,6 +1,38 @@
1
1
  import {avatarTemplate, escapeText} from "fwtoolkit"
2
2
 
3
- export const peopleTabTemplate = ({contacts, collaborators}) =>
3
+ interface Contact {
4
+ id: number | string
5
+ type: string
6
+ name: string
7
+ }
8
+
9
+ interface CollaboratorHolder {
10
+ id: number | string
11
+ type: string
12
+ name: string
13
+ }
14
+
15
+ interface Collaborator {
16
+ holder: CollaboratorHolder
17
+ rights: string
18
+ count?: number
19
+ }
20
+
21
+ interface ShareToken {
22
+ id: number | string
23
+ expires_at?: string
24
+ note?: string
25
+ rights: string
26
+ share_url: string
27
+ }
28
+
29
+ export const peopleTabTemplate = ({
30
+ contacts,
31
+ collaborators
32
+ }: {
33
+ contacts: Contact[]
34
+ collaborators: Collaborator[]
35
+ }) =>
4
36
  `<div id="my-contacts" class="fw-ar-container">
5
37
  <h3 class="fw-green-title">${gettext("My contacts")}</h3>
6
38
  <table class="fw-data-table">
@@ -36,7 +68,7 @@ export const shareLinkTabTemplate = () =>
36
68
  </button>`
37
69
 
38
70
  /** The list of active share-link tokens for a single document */
39
- export const shareTokenListTemplate = ({tokens}) => {
71
+ export const shareTokenListTemplate = ({tokens}: {tokens: ShareToken[]}) => {
40
72
  if (!tokens.length) {
41
73
  return `<p class="fw-ar-no-tokens">${gettext("No active share links yet.")}</p>`
42
74
  }
@@ -44,7 +76,7 @@ export const shareTokenListTemplate = ({tokens}) => {
44
76
  }
45
77
 
46
78
  /** A single share-link token row */
47
- export const shareTokenRowTemplate = ({token}) => {
79
+ export const shareTokenRowTemplate = ({token}: {token: ShareToken}) => {
48
80
  const expiry = token.expires_at
49
81
  ? escapeText(token.expires_at.slice(0, 10))
50
82
  : gettext("never")
@@ -125,7 +157,7 @@ export const createShareTokenDialogTemplate = (
125
157
  </table>`
126
158
 
127
159
  /** The template for an individual row in the left hand side list of users (all contacts) of the access rights dialogue. */
128
- export const contactsTemplate = ({contacts}) =>
160
+ export const contactsTemplate = ({contacts}: {contacts: Contact[]}) =>
129
161
  contacts
130
162
  .map(
131
163
  contact =>
@@ -147,7 +179,11 @@ export const contactsTemplate = ({contacts}) =>
147
179
  .join("")
148
180
 
149
181
  /** The template for the right hand side list of users (the collaborators of the current document) of the access rights dialogue. */
150
- export const collaboratorsTemplate = ({collaborators}) =>
182
+ export const collaboratorsTemplate = ({
183
+ collaborators
184
+ }: {
185
+ collaborators: Collaborator[]
186
+ }) =>
151
187
  collaborators
152
188
  .map(
153
189
  collaborator =>
@@ -14,11 +14,27 @@
14
14
  * The server stores the encrypted snapshot as opaque data and notifies
15
15
  * other clients via an "e2ee_snapshot_received" message.
16
16
  */
17
+ import type {Editor} from "../types.js"
18
+
19
+ interface SnapshotPayload {
20
+ content: string
21
+ comments: string
22
+ bibliography: string
23
+ title: string
24
+ e2ee_salt?: string
25
+ e2ee_iterations?: number
26
+ v?: number
27
+ }
28
+
17
29
  export class E2EESnapshotManager {
30
+ editor: Editor
31
+ pendingSave: boolean
32
+ key: CryptoKey | null
33
+
18
34
  /**
19
- * @param {Editor} editor - The Fidus Writer editor instance
35
+ * @param editor - The Fidus Writer editor instance
20
36
  */
21
- constructor(editor) {
37
+ constructor(editor: Editor) {
22
38
  this.editor = editor
23
39
  this.pendingSave = false
24
40
  this.key = null
@@ -28,25 +44,25 @@ export class E2EESnapshotManager {
28
44
  * Set the encryption key for this document.
29
45
  * Called after the user enters the password and the key is derived.
30
46
  *
31
- * @param {CryptoKey} key - An AES-GCM key (from E2EEKeyManager.deriveKey)
47
+ * @param key - An AES-GCM key (from E2EEKeyManager.deriveKey)
32
48
  */
33
- setKey(key) {
49
+ setKey(key: CryptoKey): void {
34
50
  this.key = key
35
51
  }
36
52
 
37
53
  /**
38
54
  * Clear the encryption key (e.g., when the document is closed).
39
55
  */
40
- clearKey() {
56
+ clearKey(): void {
41
57
  this.key = null
42
58
  }
43
59
 
44
60
  /**
45
61
  * Check whether the snapshot manager has a key set.
46
62
  *
47
- * @returns {boolean}
63
+ * @returns boolean
48
64
  */
49
- get hasKey() {
65
+ get hasKey(): boolean {
50
66
  return this.key !== null
51
67
  }
52
68
 
@@ -57,16 +73,16 @@ export class E2EESnapshotManager {
57
73
  * non-collaborative mode where snapshots are sent via REST instead
58
74
  * of WebSocket.
59
75
  *
60
- * @returns {Object|null} The encrypted snapshot payload or null if no key.
76
+ * @returns The encrypted snapshot payload or null if no key.
61
77
  */
62
- async getEncryptedSnapshot() {
78
+ async getEncryptedSnapshot(): Promise<SnapshotPayload | null> {
63
79
  if (!this.key) {
64
80
  return null
65
81
  }
66
- const content = this.editor.view.docView.node.toJSON()
67
- const comments = this.editor.docInfo.comments || {}
68
- const bibliography = this.editor.docInfo.bibliography || {}
69
- const {title} = this.editor.getDoc()
82
+ const content = ((this.editor.view as any).docView as any).node.toJSON()
83
+ const comments = (this.editor.docInfo as any).comments || {}
84
+ const bibliography = (this.editor.docInfo as any).bibliography || {}
85
+ const {title} = this.editor.getDoc() as {title: string} as {title: string}
70
86
 
71
87
  const {E2EEEncryptor} = await import("fwtoolkit/e2ee/encryptor")
72
88
 
@@ -89,8 +105,8 @@ export class E2EESnapshotManager {
89
105
  comments: encryptedComments,
90
106
  bibliography: encryptedBibliography,
91
107
  title: encryptedTitle,
92
- e2ee_salt: this.editor.e2ee.encryptionSalt,
93
- e2ee_iterations: this.editor.e2ee.encryptionIterations,
108
+ e2ee_salt: this.editor.e2ee?.encryptionSalt,
109
+ e2ee_iterations: this.editor.e2ee?.encryptionIterations,
94
110
  v: this.editor.docInfo.version
95
111
  }
96
112
  }
@@ -102,10 +118,10 @@ export class E2EESnapshotManager {
102
118
  * an encrypted snapshot (typically after DOC_SAVE_INTERVAL diffs).
103
119
  * Only write-capable clients should respond.
104
120
  *
105
- * @param {Object} request - The request_snapshot message
106
- * @param {number} request.v - The server's current document version
121
+ * @param request - The request_snapshot message
122
+ * @param request.v - The server's current document version
107
123
  */
108
- async handleRequestSnapshot(_request) {
124
+ async handleRequestSnapshot(_request: {v?: number}): Promise<void> {
109
125
  if (this.pendingSave) {
110
126
  return
111
127
  }
@@ -121,12 +137,12 @@ export class E2EESnapshotManager {
121
137
  const docInfo = this.editor.docInfo
122
138
 
123
139
  // Get the current document content as JSON
124
- const content = this.editor.view.docView.node.toJSON()
125
- const comments = docInfo.comments || {}
126
- const bibliography = docInfo.bibliography || {}
140
+ const content = ((this.editor.view as any).docView as any).node.toJSON()
141
+ const comments = (docInfo as any).comments || {}
142
+ const bibliography = (docInfo as any).bibliography || {}
127
143
 
128
144
  // Extract the current title from the editor
129
- const {title} = this.editor.getDoc()
145
+ const {title} = this.editor.getDoc() as {title: string}
130
146
 
131
147
  // Dynamically import to avoid circular dependencies
132
148
  const {E2EEEncryptor} = await import("fwtoolkit/e2ee/encryptor")
@@ -147,13 +163,13 @@ export class E2EESnapshotManager {
147
163
  const encryptedTitle = await E2EEEncryptor.encrypt(title, this.key)
148
164
 
149
165
  // Send snapshot to server
150
- this.editor.ws.send(() => ({
166
+ this.editor.ws!.send(() => ({
151
167
  type: "e2ee_snapshot",
152
168
  v: docInfo.version,
153
169
  content: encryptedContent,
154
170
  comments: encryptedComments,
155
171
  bibliography: encryptedBibliography,
156
- e2ee_salt: this.editor.e2ee.encryptionSalt,
172
+ e2ee_salt: this.editor.e2ee?.encryptionSalt,
157
173
  title: encryptedTitle
158
174
  }))
159
175
  this.pendingSave = false
@@ -168,24 +184,30 @@ export class E2EESnapshotManager {
168
184
  * since they already have the latest state from the diffs they've
169
185
  * been receiving.
170
186
  *
171
- * @param {Object} message - The e2ee_snapshot_received message
172
- * @param {number} message.v - The version of the saved snapshot
187
+ * @param message - The e2ee_snapshot_received message
188
+ * @param message.v - The version of the saved snapshot
173
189
  */
174
- async handleSnapshotReceived(message) {
190
+ async handleSnapshotReceived(message: {
191
+ v?: number
192
+ e2ee_salt?: string
193
+ e2ee_iterations?: number
194
+ }): Promise<void> {
175
195
  // Informational — no action needed for regular snapshots.
176
196
  // If the server included new KDF params, the password was changed
177
197
  // by another client. Update local state so that if we re-fetch
178
198
  // we use the new salt.
179
199
  if (message.e2ee_salt) {
180
- this.editor.e2ee.encryptionSalt = message.e2ee_salt
181
- this.editor.e2ee.encryptionIterations = message.e2ee_iterations
182
- this.editor.e2ee.key = null
200
+ if (this.editor.e2ee) {
201
+ this.editor.e2ee.encryptionSalt = message.e2ee_salt
202
+ this.editor.e2ee.encryptionIterations = message.e2ee_iterations
203
+ this.editor.e2ee.key = undefined
204
+ }
183
205
  this.clearKey()
184
206
  // Clear cached password and key from sessionStorage so the user
185
207
  // is prompted for the new password on next access.
186
208
  const {E2EEKeyManager} = await import("fwtoolkit/e2ee/key-manager")
187
- E2EEKeyManager.clearKeyFromSession(this.editor.docInfo.id)
188
- E2EEKeyManager.clearPasswordFromSession(this.editor.docInfo.id)
209
+ E2EEKeyManager.clearKeyFromSession(this.editor.docInfo.id as number)
210
+ E2EEKeyManager.clearPasswordFromSession(this.editor.docInfo.id as number)
189
211
  // Notify the user that the password has changed.
190
212
  const {showSystemMessage} = await import("fwtoolkit")
191
213
  showSystemMessage(
@@ -203,12 +225,17 @@ export class E2EESnapshotManager {
203
225
  * the template) needs to be encrypted and saved as the first snapshot.
204
226
  * This method handles that initial save.
205
227
  *
206
- * @param {Object} content - The document content (ProseMirror JSON)
207
- * @param {Object} comments - The comments object (usually empty {})
208
- * @param {Object} bibliography - The bibliography object (usually {})
209
- * @param {number} version - The document version (usually 0)
228
+ * @param content - The document content (ProseMirror JSON)
229
+ * @param comments - The comments object (usually empty {})
230
+ * @param bibliography - The bibliography object (usually {})
231
+ * @param version - The document version (usually 0)
210
232
  */
211
- async sendInitialSnapshot(content, comments, bibliography, version) {
233
+ async sendInitialSnapshot(
234
+ content: any,
235
+ comments: any,
236
+ bibliography: any,
237
+ version: number
238
+ ): Promise<void> {
212
239
  if (!this.key) {
213
240
  return
214
241
  }
@@ -229,16 +256,16 @@ export class E2EESnapshotManager {
229
256
  )
230
257
 
231
258
  // Extract the current title from the editor
232
- const {title} = this.editor.getDoc()
259
+ const {title} = this.editor.getDoc() as {title: string}
233
260
  const encryptedTitle = await E2EEEncryptor.encrypt(title, this.key)
234
261
 
235
- this.editor.ws.send(() => ({
262
+ this.editor.ws!.send(() => ({
236
263
  type: "e2ee_snapshot",
237
264
  v: version,
238
265
  content: encryptedContent,
239
266
  comments: encryptedComments,
240
267
  bibliography: encryptedBibliography,
241
- e2ee_salt: this.editor.e2ee.encryptionSalt,
268
+ e2ee_salt: this.editor.e2ee?.encryptionSalt,
242
269
  title: encryptedTitle
243
270
  }))
244
271
  }
@@ -251,23 +278,27 @@ export class E2EESnapshotManager {
251
278
  * that by collecting the current document state, encrypting it with
252
279
  * the new key, and sending a snapshot.
253
280
  *
254
- * @param {CryptoKey} newKey - The new AES-GCM key derived from the new password
255
- * @param {string} newSaltBase64 - The new salt (Base64-encoded) to send to the server
256
- * @param {number} newIterations - The new iteration count
281
+ * @param newKey - The new AES-GCM key derived from the new password
282
+ * @param newSaltBase64 - The new salt (Base64-encoded) to send to the server
283
+ * @param newIterations - The new iteration count
257
284
  */
258
- async reEncryptWithNewKey(newKey, newSaltBase64, newIterations) {
285
+ async reEncryptWithNewKey(
286
+ newKey: CryptoKey,
287
+ newSaltBase64: string,
288
+ newIterations: number
289
+ ): Promise<void> {
259
290
  if (this.pendingSave) {
260
291
  return
261
292
  }
262
293
  this.pendingSave = true
263
294
 
264
295
  const docInfo = this.editor.docInfo
265
- const content = this.editor.view.docView.node.toJSON()
266
- const comments = docInfo.comments || {}
267
- const bibliography = docInfo.bibliography || {}
296
+ const content = ((this.editor.view as any).docView as any).node.toJSON()
297
+ const comments = (docInfo as any).comments || {}
298
+ const bibliography = (docInfo as any).bibliography || {}
268
299
 
269
300
  // Extract the current title from the editor
270
- const {title} = this.editor.getDoc()
301
+ const {title} = this.editor.getDoc() as {title: string}
271
302
 
272
303
  const {E2EEEncryptor} = await import("fwtoolkit/e2ee/encryptor")
273
304
 
@@ -290,7 +321,7 @@ export class E2EESnapshotManager {
290
321
  this.key = newKey
291
322
 
292
323
  // Send the re-encrypted snapshot along with the new KDF parameters
293
- this.editor.ws.send(() => ({
324
+ this.editor.ws!.send(() => ({
294
325
  type: "e2ee_snapshot",
295
326
  v: docInfo.version,
296
327
  content: encryptedContent,
@@ -0,0 +1,302 @@
1
+ import type {
2
+ BibDB,
3
+ ExportDoc,
4
+ ImageDB,
5
+ ImageDBEntry,
6
+ SaveCopyE2EE,
7
+ Template,
8
+ User
9
+ } from "@fiduswriter/document"
10
+ import {SaveCopy as GenericSaveCopy} from "@fiduswriter/document/exporter/native"
11
+ import {NativeImporter} from "@fiduswriter/document/importer/native"
12
+ import {addAlert, addProgress, gettext, postJson, shortFileTitle} from "fwtoolkit"
13
+ import {E2EEEncryptor} from "fwtoolkit/e2ee/encryptor"
14
+ import {E2EEKeyManager} from "fwtoolkit/e2ee/key-manager"
15
+
16
+ type ProgressCallback = (message: string, percentage?: number | null) => void
17
+
18
+ type ImportDocument = (
19
+ doc: Record<string, unknown>,
20
+ bibDB: BibDB,
21
+ imageDB: ImageDB,
22
+ httpIncludes: Array<{url: string; filename: string}>,
23
+ options: Record<string, unknown>
24
+ ) => Promise<{doc: Record<string, unknown>; docInfo: Record<string, unknown>}>
25
+
26
+ interface ImageEntry extends ImageDBEntry {
27
+ file?: Blob
28
+ checksum?: string
29
+ original_file_type?: string
30
+ image: string
31
+ }
32
+
33
+ interface E2EEOptions {
34
+ enabled?: boolean
35
+ key?: CryptoKey
36
+ sourceKey?: CryptoKey
37
+ targetE2EE?: boolean
38
+ targetPassword?: string
39
+ salt?: string
40
+ iterations?: number
41
+ }
42
+
43
+ interface CreateDocumentResult {
44
+ id: number
45
+ path: string
46
+ e2ee?: boolean
47
+ template?: string
48
+ }
49
+
50
+ interface SaveDocumentResult {
51
+ added: number
52
+ updated: number
53
+ }
54
+
55
+ interface NativeImporterBackend {
56
+ createDoc: (
57
+ template: Template,
58
+ importId: string | number | null,
59
+ requestedPath: string,
60
+ e2eeOptions: E2EEOptions | null,
61
+ files: Record<string, File[]>
62
+ ) => Promise<CreateDocumentResult>
63
+ saveImages: (
64
+ images: ImageDB,
65
+ docId: number,
66
+ e2eeOptions: E2EEOptions | null
67
+ ) => Promise<Record<number | string, number>>
68
+ saveDocument: (
69
+ saveData: Record<string, unknown>,
70
+ e2eeOptions: E2EEOptions | null
71
+ ) => Promise<SaveDocumentResult>
72
+ encryptImage: (file: Blob, key: CryptoKey) => Promise<Blob>
73
+ encryptObject: (obj: unknown, key: CryptoKey) => Promise<unknown>
74
+ encrypt: (text: string, key: CryptoKey) => Promise<unknown>
75
+ storeKeyInSession: (docId: number, key: CryptoKey) => Promise<void>
76
+ }
77
+
78
+ interface ImportDocumentOptions extends Record<string, unknown> {
79
+ user: User
80
+ importId?: string | number | null
81
+ requestedPath?: string
82
+ e2eeOptions?: E2EEOptions | null
83
+ }
84
+
85
+ async function maybeDecryptImage(
86
+ imageEntry: ImageEntry,
87
+ sourceKey: CryptoKey | undefined
88
+ ): Promise<void> {
89
+ if (!sourceKey || !imageEntry.file) {
90
+ return
91
+ }
92
+ if (imageEntry.file_type !== "application/octet-stream") {
93
+ return
94
+ }
95
+ const fileBuffer = await imageEntry.file.arrayBuffer()
96
+ const bytes = new Uint8Array(fileBuffer)
97
+ let binary = ""
98
+ const chunkSize = 65536
99
+ for (let i = 0; i < bytes.length; i += chunkSize) {
100
+ const chunk = bytes.subarray(i, i + chunkSize)
101
+ binary += String.fromCharCode.apply(null, Array.from(chunk))
102
+ }
103
+ const base64 = btoa(binary)
104
+ const decrypted = await E2EEEncryptor.decryptBufferToBase64(base64, sourceKey)
105
+ const mime = imageEntry.original_file_type || "image/png"
106
+ const byteCharacters = atob(decrypted)
107
+ const byteNumbers = new Array<number>(byteCharacters.length)
108
+ for (let i = 0; i < byteCharacters.length; i++) {
109
+ byteNumbers[i] = byteCharacters.charCodeAt(i)
110
+ }
111
+ const byteArray = new Uint8Array(byteNumbers)
112
+ imageEntry.file = new Blob([byteArray], {type: mime})
113
+ imageEntry.file_type = mime
114
+ }
115
+
116
+ function createNativeImporterBackend(
117
+ _user: User,
118
+ _e2eeOptions: E2EEOptions | null
119
+ ): NativeImporterBackend {
120
+ return {
121
+ createDoc: (template, importId, path, e2ee, files) => {
122
+ const jsonData: Record<string, unknown> = {
123
+ template: template.content,
124
+ export_templates: template.exportTemplates,
125
+ document_styles: template.documentStyles,
126
+ import_id: importId
127
+ ? importId
128
+ : (template.content.attrs as Record<string, unknown> | undefined)
129
+ ?.import_id,
130
+ template_title: (template.content.attrs as Record<string, unknown> | undefined)
131
+ ?.template,
132
+ path
133
+ }
134
+ if (e2ee?.enabled) {
135
+ jsonData.e2ee = true
136
+ if (e2ee.salt) {
137
+ jsonData.e2ee_salt = e2ee.salt
138
+ }
139
+ if (e2ee.iterations) {
140
+ jsonData.e2ee_iterations = e2ee.iterations
141
+ }
142
+ }
143
+ return postJson("/api/document/import/create/", jsonData, files)
144
+ .then(({json}) => {
145
+ const data = json as Record<string, unknown>
146
+ return {
147
+ id: data.id as number,
148
+ path: data.path as string,
149
+ e2ee: data.e2ee as boolean | undefined,
150
+ template: data.template as string | undefined
151
+ }
152
+ })
153
+ .catch(error => {
154
+ addAlert("error", gettext("Could not create document"))
155
+ throw error
156
+ })
157
+ },
158
+ saveImages: async (images, docId, e2ee) => {
159
+ const isE2EE = e2ee?.enabled
160
+ const endpoint = isE2EE
161
+ ? "/api/document/e2ee_image/"
162
+ : "/api/document/import/image/"
163
+ const imageTranslationTable: Record<number | string, number> = {}
164
+ await Promise.all(
165
+ Object.values(images.db).map(async imageEntry => {
166
+ const entry = imageEntry as ImageEntry
167
+ await maybeDecryptImage(entry, e2ee?.sourceKey)
168
+ const encryptedFile =
169
+ e2ee?.enabled && e2ee.key
170
+ ? await E2EEEncryptor.encryptImage(
171
+ entry.file as Blob,
172
+ e2ee.key
173
+ )
174
+ : entry.file
175
+ const jsonData: Record<string, unknown> = {
176
+ doc_id: docId,
177
+ title: entry.title,
178
+ copyright: entry.copyright,
179
+ checksum: entry.checksum
180
+ }
181
+ const files = {
182
+ image: {
183
+ file: encryptedFile as Blob,
184
+ filename: entry.image.split("/").pop() as string
185
+ }
186
+ }
187
+ const {json} = await postJson(endpoint, jsonData, files)
188
+ const response = json as Record<string, unknown>
189
+ imageTranslationTable[entry.id] = response.id as number
190
+ })
191
+ )
192
+ return imageTranslationTable
193
+ },
194
+ saveDocument: async (saveData, e2ee) => {
195
+ if (e2ee?.enabled && e2ee.key) {
196
+ saveData.content = await E2EEEncryptor.encryptObject(
197
+ saveData.content as object,
198
+ e2ee.key
199
+ )
200
+ saveData.comments = await E2EEEncryptor.encryptObject(
201
+ saveData.comments || {},
202
+ e2ee.key
203
+ )
204
+ saveData.bibliography = await E2EEEncryptor.encryptObject(
205
+ saveData.bibliography as object,
206
+ e2ee.key
207
+ )
208
+ saveData.title = await E2EEEncryptor.encrypt(
209
+ saveData.title as string,
210
+ e2ee.key
211
+ )
212
+ }
213
+ return postJson("/api/document/import/", saveData)
214
+ .then(({json}) => {
215
+ const data = json as Record<string, unknown>
216
+ return {
217
+ added: data.added as number,
218
+ updated: data.updated as number
219
+ }
220
+ })
221
+ .catch(error => {
222
+ addAlert(
223
+ "error",
224
+ `${gettext("Could not save ")} ${shortFileTitle(
225
+ saveData.title as string,
226
+ ""
227
+ )}`
228
+ )
229
+ throw error
230
+ })
231
+ },
232
+ encryptImage: (file, key) => E2EEEncryptor.encryptImage(file, key),
233
+ encryptObject: (obj, key) => E2EEEncryptor.encryptObject(obj as object, key),
234
+ encrypt: (text, key) => E2EEEncryptor.encrypt(text, key),
235
+ storeKeyInSession: (docId, key) => E2EEKeyManager.storeKeyInSession(docId, key)
236
+ }
237
+ }
238
+
239
+ export class SaveCopy extends GenericSaveCopy {
240
+ constructor(
241
+ doc: Record<string, unknown> | ExportDoc,
242
+ bibDB: BibDB,
243
+ imageDB: ImageDB,
244
+ newUser: User,
245
+ importId: string | number | null = null,
246
+ e2eeOptions: E2EEOptions | null = null
247
+ ) {
248
+ const title = shortFileTitle(doc.title as string, (doc.path as string) || "")
249
+ const task = addProgress(
250
+ "info",
251
+ `${title}: ${gettext("Creating copy...")}`,
252
+ {autoClose: 6000}
253
+ )
254
+ const progressCallback: ProgressCallback = (message, percentage) =>
255
+ task.update(percentage as number | null, message)
256
+ const e2ee: SaveCopyE2EE = {
257
+ decryptObject: (encrypted, key) =>
258
+ E2EEEncryptor.decryptObject(encrypted as string, key),
259
+ encryptObject: (obj, key) =>
260
+ E2EEEncryptor.encryptObject(obj as object, key),
261
+ encrypt: (text, key) => E2EEEncryptor.encrypt(text, key),
262
+ encryptImage: (file, key) => E2EEEncryptor.encryptImage(file, key),
263
+ generateSalt: () => E2EEKeyManager.generateSalt(),
264
+ deriveKey: (password, salt, iterations) =>
265
+ E2EEKeyManager.deriveKey(password, salt, iterations)
266
+ }
267
+
268
+ const importDocument: ImportDocument = (
269
+ doc,
270
+ bibDB,
271
+ imageDB,
272
+ httpIncludes,
273
+ options
274
+ ) => {
275
+ const opts = options as ImportDocumentOptions
276
+ return new NativeImporter(
277
+ doc,
278
+ bibDB as unknown as Record<string, unknown>,
279
+ imageDB,
280
+ httpIncludes as unknown as Array<{
281
+ filename: string
282
+ content: Blob | ArrayBuffer | string
283
+ }>,
284
+ opts.user,
285
+ createNativeImporterBackend(opts.user, opts.e2eeOptions ?? null),
286
+ {
287
+ importId: opts.importId,
288
+ requestedPath: opts.requestedPath,
289
+ e2eeOptions: opts.e2eeOptions ?? null
290
+ }
291
+ ).init()
292
+ }
293
+
294
+ super(doc as Record<string, unknown>, bibDB, imageDB, newUser, {
295
+ importId,
296
+ e2eeOptions,
297
+ e2ee,
298
+ importDocument,
299
+ progressCallback
300
+ })
301
+ }
302
+ }
@@ -1,23 +1,30 @@
1
+ import type {BibDB, ExportDoc, ImageDB} from "@fiduswriter/document"
1
2
  import {ExportFidusFile as GenericExportFidusFile} from "@fiduswriter/document/exporter/native"
2
3
  import {addProgress, gettext, shortFileTitle} from "fwtoolkit"
3
4
  import {DocumentTemplateExporter} from "../../document_template/exporter.js"
4
5
 
5
6
  export class ExportFidusFile extends GenericExportFidusFile {
6
- constructor(doc, bibDB, imageDB, includeTemplate = true, token = false) {
7
+ constructor(
8
+ doc: ExportDoc,
9
+ bibDB: BibDB,
10
+ imageDB: ImageDB,
11
+ includeTemplate = true,
12
+ token: string | boolean = false
13
+ ) {
7
14
  const title = shortFileTitle(doc.title, doc.path || "")
8
15
  const task = addProgress(
9
16
  "info",
10
17
  `${title}: ${gettext("Exporting Fidus file...")}`,
11
18
  {autoClose: 6000}
12
19
  )
13
- const progressCallback = (message, percentage) =>
14
- task.update(percentage, message)
15
- const getTemplateFiles = (docId, token) => {
20
+ const progressCallback = (message: string, percentage?: number | null) =>
21
+ task.update(percentage ?? null, message)
22
+ const getTemplateFiles = (docId: number | string, token: string | boolean) => {
16
23
  const templateExporter = new DocumentTemplateExporter(
17
24
  docId,
18
25
  "/api/document/get_template_for_doc/",
19
26
  false,
20
- token
27
+ token as string | false
21
28
  )
22
29
  return templateExporter.init().then(() => ({
23
30
  textFiles: templateExporter.textFiles,