@fiduswriter/editor 0.1.0

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 (525) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +22 -0
  3. package/dist/bibliography/tools.js +53 -0
  4. package/dist/bibliography/tools.js.map +1 -0
  5. package/dist/citations/index.js +339 -0
  6. package/dist/citations/index.js.map +1 -0
  7. package/dist/citations/render.js +47 -0
  8. package/dist/citations/render.js.map +1 -0
  9. package/dist/clipboard/copy/index.js +2 -0
  10. package/dist/clipboard/copy/index.js.map +1 -0
  11. package/dist/clipboard/copy/schema.js +54 -0
  12. package/dist/clipboard/copy/schema.js.map +1 -0
  13. package/dist/clipboard/copy/serializers.js +132 -0
  14. package/dist/clipboard/copy/serializers.js.map +1 -0
  15. package/dist/clipboard/paste/fidus_writer.js +45 -0
  16. package/dist/clipboard/paste/fidus_writer.js.map +1 -0
  17. package/dist/clipboard/paste/general.js +76 -0
  18. package/dist/clipboard/paste/general.js.map +1 -0
  19. package/dist/clipboard/paste/google_docs.js +24 -0
  20. package/dist/clipboard/paste/google_docs.js.map +1 -0
  21. package/dist/clipboard/paste/html.js +68 -0
  22. package/dist/clipboard/paste/html.js.map +1 -0
  23. package/dist/clipboard/paste/index.js +3 -0
  24. package/dist/clipboard/paste/index.js.map +1 -0
  25. package/dist/clipboard/paste/libreoffice_writer.js +27 -0
  26. package/dist/clipboard/paste/libreoffice_writer.js.map +1 -0
  27. package/dist/clipboard/paste/microsoft_word.js +79 -0
  28. package/dist/clipboard/paste/microsoft_word.js.map +1 -0
  29. package/dist/clipboard/paste/text.js +41 -0
  30. package/dist/clipboard/paste/text.js.map +1 -0
  31. package/dist/collab/chat.js +154 -0
  32. package/dist/collab/chat.js.map +1 -0
  33. package/dist/collab/colors.js +62 -0
  34. package/dist/collab/colors.js.map +1 -0
  35. package/dist/collab/doc.js +1090 -0
  36. package/dist/collab/doc.js.map +1 -0
  37. package/dist/collab/index.js +75 -0
  38. package/dist/collab/index.js.map +1 -0
  39. package/dist/collab/merge/changeset.js +90 -0
  40. package/dist/collab/merge/changeset.js.map +1 -0
  41. package/dist/collab/merge/editor.js +708 -0
  42. package/dist/collab/merge/editor.js.map +1 -0
  43. package/dist/collab/merge/footnotes.js +149 -0
  44. package/dist/collab/merge/footnotes.js.map +1 -0
  45. package/dist/collab/merge/index.js +270 -0
  46. package/dist/collab/merge/index.js.map +1 -0
  47. package/dist/collab/merge/recreate_transform.js +259 -0
  48. package/dist/collab/merge/recreate_transform.js.map +1 -0
  49. package/dist/collab/merge/schema.js +117 -0
  50. package/dist/collab/merge/schema.js.map +1 -0
  51. package/dist/collab/merge/state_plugins/action.js +138 -0
  52. package/dist/collab/merge/state_plugins/action.js.map +1 -0
  53. package/dist/collab/merge/state_plugins/clipboard.js +32 -0
  54. package/dist/collab/merge/state_plugins/clipboard.js.map +1 -0
  55. package/dist/collab/merge/state_plugins/diff.js +541 -0
  56. package/dist/collab/merge/state_plugins/diff.js.map +1 -0
  57. package/dist/collab/merge/state_plugins/index.js +3 -0
  58. package/dist/collab/merge/state_plugins/index.js.map +1 -0
  59. package/dist/collab/merge/tools.js +175 -0
  60. package/dist/collab/merge/tools.js.map +1 -0
  61. package/dist/collab/templates.js +10 -0
  62. package/dist/collab/templates.js.map +1 -0
  63. package/dist/comments/comment.js +17 -0
  64. package/dist/comments/comment.js.map +1 -0
  65. package/dist/comments/editors/answer.js +43 -0
  66. package/dist/comments/editors/answer.js.map +1 -0
  67. package/dist/comments/editors/comment.js +278 -0
  68. package/dist/comments/editors/comment.js.map +1 -0
  69. package/dist/comments/editors/index.js +4 -0
  70. package/dist/comments/editors/index.js.map +1 -0
  71. package/dist/comments/editors/notify.js +13 -0
  72. package/dist/comments/editors/notify.js.map +1 -0
  73. package/dist/comments/editors/schema.js +60 -0
  74. package/dist/comments/editors/schema.js.map +1 -0
  75. package/dist/comments/index.js +11 -0
  76. package/dist/comments/index.js.map +1 -0
  77. package/dist/comments/interactions.js +379 -0
  78. package/dist/comments/interactions.js.map +1 -0
  79. package/dist/comments/store.js +438 -0
  80. package/dist/comments/store.js.map +1 -0
  81. package/dist/contacts/add_dialog.js +88 -0
  82. package/dist/contacts/add_dialog.js.map +1 -0
  83. package/dist/contacts/templates.js +23 -0
  84. package/dist/contacts/templates.js.map +1 -0
  85. package/dist/copyright_dialog/index.js +148 -0
  86. package/dist/copyright_dialog/index.js.map +1 -0
  87. package/dist/copyright_dialog/templates.js +48 -0
  88. package/dist/copyright_dialog/templates.js.map +1 -0
  89. package/dist/databases/bibliography.js +162 -0
  90. package/dist/databases/bibliography.js.map +1 -0
  91. package/dist/databases/images.js +260 -0
  92. package/dist/databases/images.js.map +1 -0
  93. package/dist/databases/index.js +55 -0
  94. package/dist/databases/index.js.map +1 -0
  95. package/dist/dialogs/citation.js +321 -0
  96. package/dist/dialogs/citation.js.map +1 -0
  97. package/dist/dialogs/code_block.js +192 -0
  98. package/dist/dialogs/code_block.js.map +1 -0
  99. package/dist/dialogs/contributor.js +132 -0
  100. package/dist/dialogs/contributor.js.map +1 -0
  101. package/dist/dialogs/figure.js +378 -0
  102. package/dist/dialogs/figure.js.map +1 -0
  103. package/dist/dialogs/index.js +11 -0
  104. package/dist/dialogs/index.js.map +1 -0
  105. package/dist/dialogs/language.js +47 -0
  106. package/dist/dialogs/language.js.map +1 -0
  107. package/dist/dialogs/link.js +243 -0
  108. package/dist/dialogs/link.js.map +1 -0
  109. package/dist/dialogs/math.js +121 -0
  110. package/dist/dialogs/math.js.map +1 -0
  111. package/dist/dialogs/ordered_list.js +67 -0
  112. package/dist/dialogs/ordered_list.js.map +1 -0
  113. package/dist/dialogs/revision.js +36 -0
  114. package/dist/dialogs/revision.js.map +1 -0
  115. package/dist/dialogs/subsup.js +109 -0
  116. package/dist/dialogs/subsup.js.map +1 -0
  117. package/dist/dialogs/table.js +217 -0
  118. package/dist/dialogs/table.js.map +1 -0
  119. package/dist/dialogs/templates.js +366 -0
  120. package/dist/dialogs/templates.js.map +1 -0
  121. package/dist/document_template/exporter.js +83 -0
  122. package/dist/document_template/exporter.js.map +1 -0
  123. package/dist/document_template/index.js +327 -0
  124. package/dist/document_template/index.js.map +1 -0
  125. package/dist/documents/access_rights/index.js +532 -0
  126. package/dist/documents/access_rights/index.js.map +1 -0
  127. package/dist/documents/access_rights/templates.js +150 -0
  128. package/dist/documents/access_rights/templates.js.map +1 -0
  129. package/dist/e2ee/encryptor.js +201 -0
  130. package/dist/e2ee/encryptor.js.map +1 -0
  131. package/dist/e2ee/key-manager.js +171 -0
  132. package/dist/e2ee/key-manager.js.map +1 -0
  133. package/dist/e2ee/passphrase-crypto.js +365 -0
  134. package/dist/e2ee/passphrase-crypto.js.map +1 -0
  135. package/dist/e2ee/passphrase-dialog.js +548 -0
  136. package/dist/e2ee/passphrase-dialog.js.map +1 -0
  137. package/dist/e2ee/passphrase-manager.js +350 -0
  138. package/dist/e2ee/passphrase-manager.js.map +1 -0
  139. package/dist/e2ee/password-dialog.js +552 -0
  140. package/dist/e2ee/password-dialog.js.map +1 -0
  141. package/dist/e2ee/snapshot-manager.js +238 -0
  142. package/dist/e2ee/snapshot-manager.js.map +1 -0
  143. package/dist/exporter/native/copy.js +29 -0
  144. package/dist/exporter/native/copy.js.map +1 -0
  145. package/dist/exporter/native/file.js +19 -0
  146. package/dist/exporter/native/file.js.map +1 -0
  147. package/dist/exporter/native/index.js +4 -0
  148. package/dist/exporter/native/index.js.map +1 -0
  149. package/dist/exporter/native/revision.js +54 -0
  150. package/dist/exporter/native/revision.js.map +1 -0
  151. package/dist/exporter/native/zip.js +2 -0
  152. package/dist/exporter/native/zip.js.map +1 -0
  153. package/dist/footnotes/editor.js +180 -0
  154. package/dist/footnotes/editor.js.map +1 -0
  155. package/dist/footnotes/index.js +15 -0
  156. package/dist/footnotes/index.js.map +1 -0
  157. package/dist/footnotes/layout.js +125 -0
  158. package/dist/footnotes/layout.js.map +1 -0
  159. package/dist/footnotes/state_plugins/access_rights.js +25 -0
  160. package/dist/footnotes/state_plugins/access_rights.js.map +1 -0
  161. package/dist/footnotes/state_plugins/index.js +2 -0
  162. package/dist/footnotes/state_plugins/index.js.map +1 -0
  163. package/dist/images/edit_dialog/edit_dialog/index.js +186 -0
  164. package/dist/images/edit_dialog/edit_dialog/index.js.map +1 -0
  165. package/dist/images/edit_dialog/edit_dialog/model.js +152 -0
  166. package/dist/images/edit_dialog/edit_dialog/model.js.map +1 -0
  167. package/dist/images/edit_dialog/edit_dialog/templates.js +33 -0
  168. package/dist/images/edit_dialog/edit_dialog/templates.js.map +1 -0
  169. package/dist/images/edit_dialog/model.js +6 -0
  170. package/dist/images/edit_dialog/model.js.map +1 -0
  171. package/dist/images/selection_dialog/index.js +149 -0
  172. package/dist/images/selection_dialog/index.js.map +1 -0
  173. package/dist/index.js +1002 -0
  174. package/dist/index.js.map +1 -0
  175. package/dist/keymap.js +73 -0
  176. package/dist/keymap.js.map +1 -0
  177. package/dist/marginboxes/index.js +674 -0
  178. package/dist/marginboxes/index.js.map +1 -0
  179. package/dist/marginboxes/templates.js +447 -0
  180. package/dist/marginboxes/templates.js.map +1 -0
  181. package/dist/menus/code_block/index.js +2 -0
  182. package/dist/menus/code_block/index.js.map +1 -0
  183. package/dist/menus/code_block/model.js +49 -0
  184. package/dist/menus/code_block/model.js.map +1 -0
  185. package/dist/menus/figure/index.js +3 -0
  186. package/dist/menus/figure/index.js.map +1 -0
  187. package/dist/menus/figure/model.js +80 -0
  188. package/dist/menus/figure/model.js.map +1 -0
  189. package/dist/menus/figure/utils.js +6 -0
  190. package/dist/menus/figure/utils.js.map +1 -0
  191. package/dist/menus/headerbar/index.js +3 -0
  192. package/dist/menus/headerbar/index.js.map +1 -0
  193. package/dist/menus/headerbar/model.js +743 -0
  194. package/dist/menus/headerbar/model.js.map +1 -0
  195. package/dist/menus/headerbar/view.js +579 -0
  196. package/dist/menus/headerbar/view.js.map +1 -0
  197. package/dist/menus/image/index.js +2 -0
  198. package/dist/menus/image/index.js.map +1 -0
  199. package/dist/menus/image/model.js +32 -0
  200. package/dist/menus/image/model.js.map +1 -0
  201. package/dist/menus/index.js +10 -0
  202. package/dist/menus/index.js.map +1 -0
  203. package/dist/menus/navigator/index.js +2 -0
  204. package/dist/menus/navigator/index.js.map +1 -0
  205. package/dist/menus/navigator/model.js +29 -0
  206. package/dist/menus/navigator/model.js.map +1 -0
  207. package/dist/menus/ordered_list/index.js +2 -0
  208. package/dist/menus/ordered_list/index.js.map +1 -0
  209. package/dist/menus/ordered_list/model.js +17 -0
  210. package/dist/menus/ordered_list/model.js.map +1 -0
  211. package/dist/menus/selection/index.js +3 -0
  212. package/dist/menus/selection/index.js.map +1 -0
  213. package/dist/menus/selection/model.js +108 -0
  214. package/dist/menus/selection/model.js.map +1 -0
  215. package/dist/menus/selection/view.js +125 -0
  216. package/dist/menus/selection/view.js.map +1 -0
  217. package/dist/menus/table/index.js +2 -0
  218. package/dist/menus/table/index.js.map +1 -0
  219. package/dist/menus/table/model.js +319 -0
  220. package/dist/menus/table/model.js.map +1 -0
  221. package/dist/menus/toolbar/index.js +3 -0
  222. package/dist/menus/toolbar/index.js.map +1 -0
  223. package/dist/menus/toolbar/model.js +747 -0
  224. package/dist/menus/toolbar/model.js.map +1 -0
  225. package/dist/menus/toolbar/view.js +314 -0
  226. package/dist/menus/toolbar/view.js.map +1 -0
  227. package/dist/navigator/index.js +435 -0
  228. package/dist/navigator/index.js.map +1 -0
  229. package/dist/no_collab_save/index.js +169 -0
  230. package/dist/no_collab_save/index.js.map +1 -0
  231. package/dist/plugins/citation_dialog/index.js +2 -0
  232. package/dist/plugins/citation_dialog/index.js.map +1 -0
  233. package/dist/plugins/editor/index.js +2 -0
  234. package/dist/plugins/editor/index.js.map +1 -0
  235. package/dist/state_plugins/access_rights.js +30 -0
  236. package/dist/state_plugins/access_rights.js.map +1 -0
  237. package/dist/state_plugins/citation_render.js +78 -0
  238. package/dist/state_plugins/citation_render.js.map +1 -0
  239. package/dist/state_plugins/clipboard.js +217 -0
  240. package/dist/state_plugins/clipboard.js.map +1 -0
  241. package/dist/state_plugins/code_block.js +165 -0
  242. package/dist/state_plugins/code_block.js.map +1 -0
  243. package/dist/state_plugins/collab_carets.js +115 -0
  244. package/dist/state_plugins/collab_carets.js.map +1 -0
  245. package/dist/state_plugins/comments.js +197 -0
  246. package/dist/state_plugins/comments.js.map +1 -0
  247. package/dist/state_plugins/contributor_input/add_button.js +101 -0
  248. package/dist/state_plugins/contributor_input/add_button.js.map +1 -0
  249. package/dist/state_plugins/contributor_input/dropup.js +273 -0
  250. package/dist/state_plugins/contributor_input/dropup.js.map +1 -0
  251. package/dist/state_plugins/contributor_input/helpers.js +23 -0
  252. package/dist/state_plugins/contributor_input/helpers.js.map +1 -0
  253. package/dist/state_plugins/contributor_input/index.js +3 -0
  254. package/dist/state_plugins/contributor_input/index.js.map +1 -0
  255. package/dist/state_plugins/contributor_input/node_view.js +76 -0
  256. package/dist/state_plugins/contributor_input/node_view.js.map +1 -0
  257. package/dist/state_plugins/contributor_input/plugin.js +236 -0
  258. package/dist/state_plugins/contributor_input/plugin.js.map +1 -0
  259. package/dist/state_plugins/document_template.js +213 -0
  260. package/dist/state_plugins/document_template.js.map +1 -0
  261. package/dist/state_plugins/figure.js +90 -0
  262. package/dist/state_plugins/figure.js.map +1 -0
  263. package/dist/state_plugins/footnote_markers.js +187 -0
  264. package/dist/state_plugins/footnote_markers.js.map +1 -0
  265. package/dist/state_plugins/headerbar.js +10 -0
  266. package/dist/state_plugins/headerbar.js.map +1 -0
  267. package/dist/state_plugins/index.js +27 -0
  268. package/dist/state_plugins/index.js.map +1 -0
  269. package/dist/state_plugins/inline_math.js +719 -0
  270. package/dist/state_plugins/inline_math.js.map +1 -0
  271. package/dist/state_plugins/inline_reference/dropup.js +182 -0
  272. package/dist/state_plugins/inline_reference/dropup.js.map +1 -0
  273. package/dist/state_plugins/inline_reference/index.js +2 -0
  274. package/dist/state_plugins/inline_reference/index.js.map +1 -0
  275. package/dist/state_plugins/inline_reference/plugin.js +1134 -0
  276. package/dist/state_plugins/inline_reference/plugin.js.map +1 -0
  277. package/dist/state_plugins/jump_hidden_nodes.js +47 -0
  278. package/dist/state_plugins/jump_hidden_nodes.js.map +1 -0
  279. package/dist/state_plugins/links.js +622 -0
  280. package/dist/state_plugins/links.js.map +1 -0
  281. package/dist/state_plugins/marginboxes.js +13 -0
  282. package/dist/state_plugins/marginboxes.js.map +1 -0
  283. package/dist/state_plugins/ordered_list_menu.js +72 -0
  284. package/dist/state_plugins/ordered_list_menu.js.map +1 -0
  285. package/dist/state_plugins/placeholders.js +98 -0
  286. package/dist/state_plugins/placeholders.js.map +1 -0
  287. package/dist/state_plugins/search.js +212 -0
  288. package/dist/state_plugins/search.js.map +1 -0
  289. package/dist/state_plugins/selection_menu.js +10 -0
  290. package/dist/state_plugins/selection_menu.js.map +1 -0
  291. package/dist/state_plugins/settings.js +191 -0
  292. package/dist/state_plugins/settings.js.map +1 -0
  293. package/dist/state_plugins/table.js +104 -0
  294. package/dist/state_plugins/table.js.map +1 -0
  295. package/dist/state_plugins/tag_input/helpers.js +55 -0
  296. package/dist/state_plugins/tag_input/helpers.js.map +1 -0
  297. package/dist/state_plugins/tag_input/index.js +3 -0
  298. package/dist/state_plugins/tag_input/index.js.map +1 -0
  299. package/dist/state_plugins/tag_input/node_view.js +77 -0
  300. package/dist/state_plugins/tag_input/node_view.js.map +1 -0
  301. package/dist/state_plugins/tag_input/plugin.js +199 -0
  302. package/dist/state_plugins/tag_input/plugin.js.map +1 -0
  303. package/dist/state_plugins/tag_input/tag_editor.js +159 -0
  304. package/dist/state_plugins/tag_input/tag_editor.js.map +1 -0
  305. package/dist/state_plugins/tag_input/tag_editor_plugins.js +61 -0
  306. package/dist/state_plugins/tag_input/tag_editor_plugins.js.map +1 -0
  307. package/dist/state_plugins/toc_render.js +142 -0
  308. package/dist/state_plugins/toc_render.js.map +1 -0
  309. package/dist/state_plugins/toolbar.js +10 -0
  310. package/dist/state_plugins/toolbar.js.map +1 -0
  311. package/dist/state_plugins/track/find_selected_changes.js +82 -0
  312. package/dist/state_plugins/track/find_selected_changes.js.map +1 -0
  313. package/dist/state_plugins/track/helpers.js +67 -0
  314. package/dist/state_plugins/track/helpers.js.map +1 -0
  315. package/dist/state_plugins/track/index.js +3 -0
  316. package/dist/state_plugins/track/index.js.map +1 -0
  317. package/dist/state_plugins/track/plugin.js +114 -0
  318. package/dist/state_plugins/track/plugin.js.map +1 -0
  319. package/dist/tools/index.js +4 -0
  320. package/dist/tools/index.js.map +1 -0
  321. package/dist/tools/key_bindings/index.js +20 -0
  322. package/dist/tools/key_bindings/index.js.map +1 -0
  323. package/dist/tools/key_bindings/templates.js +68 -0
  324. package/dist/tools/key_bindings/templates.js.map +1 -0
  325. package/dist/tools/search_replace/index.js +275 -0
  326. package/dist/tools/search_replace/index.js.map +1 -0
  327. package/dist/tools/search_replace/templates.js +18 -0
  328. package/dist/tools/search_replace/templates.js.map +1 -0
  329. package/dist/tools/word_count/index.js +40 -0
  330. package/dist/tools/word_count/index.js.map +1 -0
  331. package/dist/tools/word_count/templates.js +27 -0
  332. package/dist/tools/word_count/templates.js.map +1 -0
  333. package/dist/track/accept.js +66 -0
  334. package/dist/track/accept.js.map +1 -0
  335. package/dist/track/accept_all.js +51 -0
  336. package/dist/track/accept_all.js.map +1 -0
  337. package/dist/track/accept_all_no_insertions.js +63 -0
  338. package/dist/track/accept_all_no_insertions.js.map +1 -0
  339. package/dist/track/amend_transaction.js +390 -0
  340. package/dist/track/amend_transaction.js.map +1 -0
  341. package/dist/track/delete.js +62 -0
  342. package/dist/track/delete.js.map +1 -0
  343. package/dist/track/index.js +6 -0
  344. package/dist/track/index.js.map +1 -0
  345. package/dist/track/mod.js +86 -0
  346. package/dist/track/mod.js.map +1 -0
  347. package/dist/track/reject.js +67 -0
  348. package/dist/track/reject.js.map +1 -0
  349. package/dist/track/reject_all.js +56 -0
  350. package/dist/track/reject_all.js.map +1 -0
  351. package/package.json +80 -0
  352. package/src/bibliography/tools.js +58 -0
  353. package/src/citations/index.js +443 -0
  354. package/src/citations/render.js +68 -0
  355. package/src/clipboard/copy/index.js +1 -0
  356. package/src/clipboard/copy/schema.js +62 -0
  357. package/src/clipboard/copy/serializers.js +179 -0
  358. package/src/clipboard/paste/fidus_writer.js +55 -0
  359. package/src/clipboard/paste/general.js +80 -0
  360. package/src/clipboard/paste/google_docs.js +26 -0
  361. package/src/clipboard/paste/html.js +76 -0
  362. package/src/clipboard/paste/index.js +2 -0
  363. package/src/clipboard/paste/libreoffice_writer.js +32 -0
  364. package/src/clipboard/paste/microsoft_word.js +87 -0
  365. package/src/clipboard/paste/text.js +58 -0
  366. package/src/collab/chat.js +195 -0
  367. package/src/collab/colors.js +67 -0
  368. package/src/collab/doc.js +1436 -0
  369. package/src/collab/index.js +81 -0
  370. package/src/collab/merge/changeset.js +103 -0
  371. package/src/collab/merge/editor.js +1065 -0
  372. package/src/collab/merge/footnotes.js +175 -0
  373. package/src/collab/merge/index.js +401 -0
  374. package/src/collab/merge/recreate_transform.js +326 -0
  375. package/src/collab/merge/schema.js +135 -0
  376. package/src/collab/merge/state_plugins/action.js +171 -0
  377. package/src/collab/merge/state_plugins/clipboard.js +32 -0
  378. package/src/collab/merge/state_plugins/diff.js +780 -0
  379. package/src/collab/merge/state_plugins/index.js +2 -0
  380. package/src/collab/merge/tools.js +217 -0
  381. package/src/collab/templates.js +10 -0
  382. package/src/comments/comment.js +29 -0
  383. package/src/comments/editors/answer.js +55 -0
  384. package/src/comments/editors/comment.js +318 -0
  385. package/src/comments/editors/index.js +4 -0
  386. package/src/comments/editors/notify.js +13 -0
  387. package/src/comments/editors/schema.js +65 -0
  388. package/src/comments/index.js +11 -0
  389. package/src/comments/interactions.js +465 -0
  390. package/src/comments/store.js +513 -0
  391. package/src/contacts/add_dialog.js +110 -0
  392. package/src/contacts/templates.js +28 -0
  393. package/src/copyright_dialog/index.js +179 -0
  394. package/src/copyright_dialog/templates.js +56 -0
  395. package/src/databases/bibliography.js +179 -0
  396. package/src/databases/images.js +320 -0
  397. package/src/databases/index.js +69 -0
  398. package/src/dialogs/citation.js +428 -0
  399. package/src/dialogs/code_block.js +242 -0
  400. package/src/dialogs/contributor.js +173 -0
  401. package/src/dialogs/figure.js +479 -0
  402. package/src/dialogs/index.js +10 -0
  403. package/src/dialogs/language.js +58 -0
  404. package/src/dialogs/link.js +358 -0
  405. package/src/dialogs/math.js +148 -0
  406. package/src/dialogs/ordered_list.js +84 -0
  407. package/src/dialogs/revision.js +43 -0
  408. package/src/dialogs/subsup.js +116 -0
  409. package/src/dialogs/table.js +258 -0
  410. package/src/dialogs/templates.js +426 -0
  411. package/src/document_template/exporter.js +97 -0
  412. package/src/document_template/index.js +483 -0
  413. package/src/documents/access_rights/index.js +693 -0
  414. package/src/documents/access_rights/templates.js +178 -0
  415. package/src/e2ee/encryptor.js +228 -0
  416. package/src/e2ee/key-manager.js +202 -0
  417. package/src/e2ee/passphrase-crypto.js +606 -0
  418. package/src/e2ee/passphrase-dialog.js +655 -0
  419. package/src/e2ee/passphrase-manager.js +502 -0
  420. package/src/e2ee/password-dialog.js +652 -0
  421. package/src/e2ee/snapshot-manager.js +305 -0
  422. package/src/exporter/native/copy.js +54 -0
  423. package/src/exporter/native/file.js +37 -0
  424. package/src/exporter/native/index.js +3 -0
  425. package/src/exporter/native/revision.js +86 -0
  426. package/src/exporter/native/zip.js +1 -0
  427. package/src/footnotes/editor.js +227 -0
  428. package/src/footnotes/index.js +16 -0
  429. package/src/footnotes/layout.js +190 -0
  430. package/src/footnotes/state_plugins/access_rights.js +39 -0
  431. package/src/footnotes/state_plugins/index.js +1 -0
  432. package/src/images/edit_dialog/edit_dialog/index.js +222 -0
  433. package/src/images/edit_dialog/edit_dialog/model.js +183 -0
  434. package/src/images/edit_dialog/edit_dialog/templates.js +41 -0
  435. package/src/images/edit_dialog/model.js +5 -0
  436. package/src/images/selection_dialog/index.js +176 -0
  437. package/src/index.js +1252 -0
  438. package/src/keymap.js +102 -0
  439. package/src/marginboxes/index.js +946 -0
  440. package/src/marginboxes/templates.js +573 -0
  441. package/src/menus/code_block/index.js +1 -0
  442. package/src/menus/code_block/model.js +52 -0
  443. package/src/menus/figure/index.js +2 -0
  444. package/src/menus/figure/model.js +91 -0
  445. package/src/menus/figure/utils.js +5 -0
  446. package/src/menus/headerbar/index.js +2 -0
  447. package/src/menus/headerbar/model.js +1077 -0
  448. package/src/menus/headerbar/view.js +675 -0
  449. package/src/menus/image/index.js +1 -0
  450. package/src/menus/image/model.js +32 -0
  451. package/src/menus/index.js +9 -0
  452. package/src/menus/navigator/index.js +1 -0
  453. package/src/menus/navigator/model.js +28 -0
  454. package/src/menus/ordered_list/index.js +1 -0
  455. package/src/menus/ordered_list/model.js +19 -0
  456. package/src/menus/selection/index.js +2 -0
  457. package/src/menus/selection/model.js +134 -0
  458. package/src/menus/selection/view.js +154 -0
  459. package/src/menus/table/index.js +1 -0
  460. package/src/menus/table/model.js +414 -0
  461. package/src/menus/toolbar/index.js +2 -0
  462. package/src/menus/toolbar/model.js +920 -0
  463. package/src/menus/toolbar/view.js +354 -0
  464. package/src/navigator/index.js +515 -0
  465. package/src/no_collab_save/index.js +209 -0
  466. package/src/plugins/citation_dialog/index.js +1 -0
  467. package/src/plugins/editor/index.js +1 -0
  468. package/src/state_plugins/access_rights.js +47 -0
  469. package/src/state_plugins/citation_render.js +88 -0
  470. package/src/state_plugins/clipboard.js +289 -0
  471. package/src/state_plugins/code_block.js +201 -0
  472. package/src/state_plugins/collab_carets.js +152 -0
  473. package/src/state_plugins/comments.js +259 -0
  474. package/src/state_plugins/contributor_input/add_button.js +134 -0
  475. package/src/state_plugins/contributor_input/dropup.js +318 -0
  476. package/src/state_plugins/contributor_input/helpers.js +24 -0
  477. package/src/state_plugins/contributor_input/index.js +2 -0
  478. package/src/state_plugins/contributor_input/node_view.js +86 -0
  479. package/src/state_plugins/contributor_input/plugin.js +318 -0
  480. package/src/state_plugins/document_template.js +315 -0
  481. package/src/state_plugins/figure.js +108 -0
  482. package/src/state_plugins/footnote_markers.js +238 -0
  483. package/src/state_plugins/headerbar.js +12 -0
  484. package/src/state_plugins/index.js +73 -0
  485. package/src/state_plugins/inline_math.js +918 -0
  486. package/src/state_plugins/inline_reference/dropup.js +208 -0
  487. package/src/state_plugins/inline_reference/index.js +5 -0
  488. package/src/state_plugins/inline_reference/plugin.js +1429 -0
  489. package/src/state_plugins/jump_hidden_nodes.js +58 -0
  490. package/src/state_plugins/links.js +830 -0
  491. package/src/state_plugins/marginboxes.js +14 -0
  492. package/src/state_plugins/ordered_list_menu.js +84 -0
  493. package/src/state_plugins/placeholders.js +123 -0
  494. package/src/state_plugins/search.js +251 -0
  495. package/src/state_plugins/selection_menu.js +12 -0
  496. package/src/state_plugins/settings.js +223 -0
  497. package/src/state_plugins/table.js +127 -0
  498. package/src/state_plugins/tag_input/helpers.js +69 -0
  499. package/src/state_plugins/tag_input/index.js +2 -0
  500. package/src/state_plugins/tag_input/node_view.js +85 -0
  501. package/src/state_plugins/tag_input/plugin.js +278 -0
  502. package/src/state_plugins/tag_input/tag_editor.js +202 -0
  503. package/src/state_plugins/tag_input/tag_editor_plugins.js +74 -0
  504. package/src/state_plugins/toc_render.js +160 -0
  505. package/src/state_plugins/toolbar.js +12 -0
  506. package/src/state_plugins/track/find_selected_changes.js +107 -0
  507. package/src/state_plugins/track/helpers.js +108 -0
  508. package/src/state_plugins/track/index.js +6 -0
  509. package/src/state_plugins/track/plugin.js +140 -0
  510. package/src/tools/index.js +3 -0
  511. package/src/tools/key_bindings/index.js +21 -0
  512. package/src/tools/key_bindings/templates.js +68 -0
  513. package/src/tools/search_replace/index.js +421 -0
  514. package/src/tools/search_replace/templates.js +19 -0
  515. package/src/tools/word_count/index.js +59 -0
  516. package/src/tools/word_count/templates.js +34 -0
  517. package/src/track/accept.js +102 -0
  518. package/src/track/accept_all.js +103 -0
  519. package/src/track/accept_all_no_insertions.js +102 -0
  520. package/src/track/amend_transaction.js +562 -0
  521. package/src/track/delete.js +92 -0
  522. package/src/track/index.js +8 -0
  523. package/src/track/mod.js +116 -0
  524. package/src/track/reject.js +116 -0
  525. package/src/track/reject_all.js +121 -0
@@ -0,0 +1,747 @@
1
+ import { toggleMark, wrapIn } from "prosemirror-commands";
2
+ import { redo, redoDepth, undo, undoDepth } from "prosemirror-history";
3
+ import { wrapInList } from "prosemirror-schema-list";
4
+ import { COMMENT_ONLY_ROLES, READ_ONLY_ROLES } from "../..";
5
+ import { CitationDialog, FigureDialog, LinkDialog, MathDialog, TableDialog } from "../../dialogs";
6
+ import { setBlockType } from "../../keymap";
7
+ import { checkProtectedInSelection, getInlineReferenceState, setInlineReferenceState } from "../../state_plugins";
8
+ const BLOCK_LABELS = {
9
+ paragraph: gettext("Normal Text"),
10
+ heading1: gettext("1st Heading"),
11
+ heading2: gettext("2nd Heading"),
12
+ heading3: gettext("3rd Heading"),
13
+ heading4: gettext("4th Heading"),
14
+ heading5: gettext("5th Heading"),
15
+ heading6: gettext("6th Heading"),
16
+ code_block: gettext("Code"),
17
+ figure: gettext("Figure")
18
+ };
19
+ // from https://github.com/ProseMirror/prosemirror-tables/blob/master/src/util.js
20
+ const findTable = state => {
21
+ const $head = state.selection.$head;
22
+ for (let d = $head.depth; d > 0; d--) {
23
+ if ($head.node(d).type.spec.tableRole == "table") {
24
+ return $head.node(d);
25
+ }
26
+ }
27
+ return false;
28
+ };
29
+ function elementAvailable(editor, elementName) {
30
+ let elementInDocParts = false;
31
+ editor.view.state.doc.forEach(docPart => {
32
+ if (docPart.attrs.elements &&
33
+ docPart.attrs.elements.includes(elementName)) {
34
+ elementInDocParts = true;
35
+ }
36
+ });
37
+ return (editor.view.state.doc.attrs.footnote_elements.includes(elementName) ||
38
+ elementInDocParts);
39
+ }
40
+ export function elementDisabled(editor, elementName) {
41
+ if (editor.currentView === editor.view) {
42
+ // main editor
43
+ const anchorDocPart = editor.currentView.state.selection.$anchor.node(1), headDocPart = editor.currentView.state.selection.$head.node(1);
44
+ return (!anchorDocPart ||
45
+ headDocPart !== anchorDocPart ||
46
+ !anchorDocPart.attrs.elements ||
47
+ !anchorDocPart.attrs.elements.includes(elementName) ||
48
+ checkProtectedInSelection(editor.view.state));
49
+ }
50
+ else {
51
+ // footnote editor
52
+ const anchorFootnote = editor.currentView.state.selection.$anchor.node(1), headFootnote = editor.currentView.state.selection.$head.node(1);
53
+ return (!anchorFootnote ||
54
+ headFootnote !== anchorFootnote ||
55
+ !editor.view.state.doc.attrs.footnote_elements.includes(elementName));
56
+ }
57
+ }
58
+ function markAvailable(editor, markName) {
59
+ let markInDocParts = false;
60
+ editor.view.state.doc.forEach(docPart => {
61
+ if (docPart.attrs.elements && docPart.attrs.marks.includes(markName)) {
62
+ markInDocParts = true;
63
+ }
64
+ });
65
+ return (editor.view.state.doc.attrs.footnote_marks.includes(markName) ||
66
+ markInDocParts);
67
+ }
68
+ function markDisabled(editor, markName) {
69
+ if (editor.currentView === editor.view) {
70
+ // main editor
71
+ const anchorDocPart = editor.currentView.state.selection.$anchor.node(1), headDocPart = editor.currentView.state.selection.$head.node(1);
72
+ return (!anchorDocPart ||
73
+ headDocPart !== anchorDocPart ||
74
+ !anchorDocPart.attrs.marks ||
75
+ !anchorDocPart.attrs.marks.includes(markName) ||
76
+ checkProtectedInSelection(editor.view.state));
77
+ }
78
+ else {
79
+ // footnote editor
80
+ const anchorFootnote = editor.currentView.state.selection.$anchor.node(1), headFootnote = editor.currentView.state.selection.$head.node(1);
81
+ return (!anchorFootnote ||
82
+ headFootnote !== anchorFootnote ||
83
+ !editor.view.state.doc.attrs.footnote_marks.includes(markName));
84
+ }
85
+ }
86
+ export const toolbarModel = () => ({
87
+ openMore: false, // whether 'more' menu is opened.
88
+ content: [
89
+ {
90
+ type: "button",
91
+ title: gettext("Open/close header menu"),
92
+ icon: editor => {
93
+ if (editor.menu.headerbarModel.open) {
94
+ return "angle-double-up";
95
+ }
96
+ else {
97
+ return "angle-double-down";
98
+ }
99
+ },
100
+ action: editor => {
101
+ editor.menu.headerbarModel.open =
102
+ !editor.menu.headerbarModel.open;
103
+ if (editor.menu.headerView) {
104
+ editor.menu.headerView.update();
105
+ }
106
+ },
107
+ class: editor => {
108
+ if (editor.menu.headerbarModel.open) {
109
+ return "no-border";
110
+ }
111
+ else {
112
+ return "no-border header-closed";
113
+ }
114
+ },
115
+ order: 0
116
+ },
117
+ {
118
+ type: "info",
119
+ show: editor => {
120
+ let title = "";
121
+ if (editor.currentView !== editor.view) {
122
+ return gettext("Footnote");
123
+ }
124
+ else if (editor.currentView.state.selection.$anchor.node(1) &&
125
+ editor.currentView.state.selection.$anchor.node(1) ===
126
+ editor.currentView.state.selection.$head.node(1)) {
127
+ title =
128
+ editor.currentView.state.selection.$anchor.node(1).attrs
129
+ .title || gettext("Title");
130
+ return title.length > 20
131
+ ? title.slice(0, 20) + "..."
132
+ : title;
133
+ }
134
+ else if (editor.currentView.state.selection.$anchor.depth === 0 &&
135
+ editor.currentView.state.selection.from ===
136
+ editor.currentView.state.selection.to) {
137
+ title =
138
+ editor.currentView.state.selection.$anchor.nodeAfter
139
+ .attrs.title;
140
+ return title.length > 20
141
+ ? title.slice(0, 20) + "..."
142
+ : title;
143
+ }
144
+ else if (editor.currentView.state.selection.jsonID === "node" &&
145
+ editor.currentView.state.selection.node.isBlock &&
146
+ editor.currentView.state.selection.node.attrs.title) {
147
+ title = editor.currentView.state.selection.node.attrs.title;
148
+ return title.length > 20
149
+ ? title.slice(0, 20) + "..."
150
+ : title;
151
+ }
152
+ else {
153
+ return "";
154
+ }
155
+ },
156
+ order: 1
157
+ },
158
+ {
159
+ type: "menu",
160
+ show: editor => {
161
+ if (editor.currentView.state.selection.$anchor.node(1) &&
162
+ !editor.view.state.selection.$anchor.node(1).attrs.elements) {
163
+ return "";
164
+ }
165
+ if (editor.currentView.state.selection.jsonID === "node" &&
166
+ editor.currentView.state.selection.node.isBlock) {
167
+ const selectedNode = editor.currentView.state.selection.node;
168
+ return BLOCK_LABELS[selectedNode.type.name]
169
+ ? BLOCK_LABELS[selectedNode.type.name]
170
+ : "";
171
+ }
172
+ const startElement = editor.currentView.state.selection.$anchor.parent, endElement = editor.currentView.state.selection.$head.parent;
173
+ if (!startElement || !endElement) {
174
+ return "";
175
+ }
176
+ else if (startElement === endElement) {
177
+ const blockNodeType = startElement.type.name;
178
+ return BLOCK_LABELS[blockNodeType]
179
+ ? BLOCK_LABELS[blockNodeType]
180
+ : "";
181
+ }
182
+ else {
183
+ let blockNodeType = true;
184
+ editor.currentView.state.doc.nodesBetween(editor.currentView.state.selection.from, editor.currentView.state.selection.to, node => {
185
+ if (node.isTextblock) {
186
+ const nextBlockNodeType = node.type.name;
187
+ if (blockNodeType === true) {
188
+ blockNodeType = nextBlockNodeType;
189
+ }
190
+ if (blockNodeType !== nextBlockNodeType) {
191
+ blockNodeType = false;
192
+ }
193
+ }
194
+ });
195
+ if (blockNodeType) {
196
+ return BLOCK_LABELS[blockNodeType]
197
+ ? BLOCK_LABELS[blockNodeType]
198
+ : "";
199
+ }
200
+ else {
201
+ return "";
202
+ }
203
+ }
204
+ },
205
+ disabled: editor => READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
206
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
207
+ !editor.currentView.state.selection.$anchor.node(1) ||
208
+ !editor.currentView.state.selection.$anchor.node(1).attrs
209
+ .elements ||
210
+ (editor.currentView.state.selection.jsonID === "node" &&
211
+ editor.currentView.state.selection.node.isBlock &&
212
+ !editor.currentView.state.selection.node.isTextblock) ||
213
+ editor.currentView.state.selection.jsonID === "gapcursor",
214
+ content: [
215
+ {
216
+ title: BLOCK_LABELS["paragraph"],
217
+ action: editor => {
218
+ const view = editor.currentView;
219
+ setBlockType(view.state.schema.nodes.paragraph)(view.state, view.dispatch);
220
+ },
221
+ available: editor => elementAvailable(editor, "paragraph"),
222
+ disabled: editor => elementDisabled(editor, "paragraph"),
223
+ order: 0
224
+ },
225
+ {
226
+ title: BLOCK_LABELS["heading1"],
227
+ action: editor => {
228
+ const view = editor.currentView;
229
+ setBlockType(view.state.schema.nodes.heading1)(view.state, view.dispatch);
230
+ },
231
+ available: editor => elementAvailable(editor, "heading1"),
232
+ disabled: editor => elementDisabled(editor, "heading1"),
233
+ order: 1
234
+ },
235
+ {
236
+ title: BLOCK_LABELS["heading2"],
237
+ action: editor => {
238
+ const view = editor.currentView;
239
+ setBlockType(view.state.schema.nodes.heading2)(view.state, view.dispatch);
240
+ },
241
+ available: editor => elementAvailable(editor, "heading2"),
242
+ disabled: editor => elementDisabled(editor, "heading2"),
243
+ order: 2
244
+ },
245
+ {
246
+ title: BLOCK_LABELS["heading3"],
247
+ action: editor => {
248
+ const view = editor.currentView;
249
+ setBlockType(view.state.schema.nodes.heading3)(view.state, view.dispatch);
250
+ },
251
+ available: editor => elementAvailable(editor, "heading3"),
252
+ disabled: editor => elementDisabled(editor, "heading3"),
253
+ order: 3
254
+ },
255
+ {
256
+ title: BLOCK_LABELS["heading4"],
257
+ action: editor => {
258
+ const view = editor.currentView;
259
+ setBlockType(view.state.schema.nodes.heading4)(view.state, view.dispatch);
260
+ },
261
+ available: editor => elementAvailable(editor, "heading4"),
262
+ disabled: editor => elementDisabled(editor, "heading4"),
263
+ order: 4
264
+ },
265
+ {
266
+ title: BLOCK_LABELS["heading5"],
267
+ action: editor => {
268
+ const view = editor.currentView;
269
+ setBlockType(view.state.schema.nodes.heading5)(view.state, view.dispatch);
270
+ },
271
+ available: editor => elementAvailable(editor, "heading5"),
272
+ disabled: editor => elementDisabled(editor, "heading5"),
273
+ order: 5
274
+ },
275
+ {
276
+ title: BLOCK_LABELS["heading6"],
277
+ action: editor => {
278
+ const view = editor.currentView;
279
+ setBlockType(view.state.schema.nodes.heading6)(view.state, view.dispatch);
280
+ },
281
+ available: editor => elementAvailable(editor, "heading6"),
282
+ disabled: editor => elementDisabled(editor, "heading6"),
283
+ order: 6
284
+ },
285
+ {
286
+ title: BLOCK_LABELS["code_block"],
287
+ action: editor => {
288
+ const view = editor.currentView;
289
+ setBlockType(view.state.schema.nodes.code_block)(view.state, view.dispatch);
290
+ },
291
+ available: editor => elementAvailable(editor, "code_block"),
292
+ disabled: editor => elementDisabled(editor, "code_block"),
293
+ order: 7
294
+ }
295
+ ],
296
+ order: 2
297
+ },
298
+ {
299
+ type: "button",
300
+ title: gettext("Strong"),
301
+ icon: "bold",
302
+ action: editor => {
303
+ const mark = editor.currentView.state.schema.marks["strong"];
304
+ const command = toggleMark(mark);
305
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
306
+ },
307
+ available: editor => markAvailable(editor, "strong"),
308
+ disabled: editor => {
309
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
310
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
311
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
312
+ markDisabled(editor, "strong")) {
313
+ return true;
314
+ }
315
+ },
316
+ selected: editor => {
317
+ const storedMarks = editor.currentView.state.storedMarks;
318
+ if (storedMarks?.some(mark => mark.type.name === "strong") ||
319
+ editor.currentView.state.selection.$head
320
+ .marks()
321
+ .some(mark => mark.type.name === "strong")) {
322
+ return true;
323
+ }
324
+ else {
325
+ return false;
326
+ }
327
+ },
328
+ order: 3
329
+ },
330
+ {
331
+ type: "button",
332
+ title: gettext("Emphasis"),
333
+ icon: "italic",
334
+ action: editor => {
335
+ const mark = editor.currentView.state.schema.marks["em"];
336
+ const command = toggleMark(mark);
337
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
338
+ },
339
+ available: editor => markAvailable(editor, "em"),
340
+ disabled: editor => READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
341
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
342
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
343
+ markDisabled(editor, "em"),
344
+ selected: editor => {
345
+ const storedMarks = editor.currentView.state.storedMarks;
346
+ if (storedMarks?.some(mark => mark.type.name === "em") ||
347
+ editor.currentView.state.selection.$head
348
+ .marks()
349
+ .some(mark => mark.type.name === "em")) {
350
+ return true;
351
+ }
352
+ else {
353
+ return false;
354
+ }
355
+ },
356
+ order: 4
357
+ },
358
+ {
359
+ type: "button",
360
+ title: gettext("Underline"),
361
+ icon: "underline",
362
+ action: editor => {
363
+ const mark = editor.currentView.state.schema.marks["underline"];
364
+ const command = toggleMark(mark);
365
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
366
+ },
367
+ available: editor => markAvailable(editor, "underline"),
368
+ disabled: editor => {
369
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
370
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
371
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
372
+ markDisabled(editor, "underline")) {
373
+ return true;
374
+ }
375
+ },
376
+ selected: editor => {
377
+ const storedMarks = editor.currentView.state.storedMarks;
378
+ if (storedMarks?.some(mark => mark.type.name === "underline") ||
379
+ editor.currentView.state.selection.$head
380
+ .marks()
381
+ .some(mark => mark.type.name === "underline")) {
382
+ return true;
383
+ }
384
+ else {
385
+ return false;
386
+ }
387
+ },
388
+ order: 5
389
+ },
390
+ {
391
+ type: "button",
392
+ title: gettext("Superscript"),
393
+ icon: "superscript",
394
+ action: editor => {
395
+ const mark = editor.currentView.state.schema.marks["sup"];
396
+ const command = toggleMark(mark);
397
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
398
+ },
399
+ available: editor => markAvailable(editor, "sup"),
400
+ disabled: editor => {
401
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
402
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
403
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
404
+ markDisabled(editor, "sup")) {
405
+ return true;
406
+ }
407
+ },
408
+ selected: editor => {
409
+ const storedMarks = editor.currentView.state.storedMarks;
410
+ if (storedMarks?.some(mark => mark.type.name === "sup") ||
411
+ editor.currentView.state.selection.$head
412
+ .marks()
413
+ .some(mark => mark.type.name === "sup")) {
414
+ return true;
415
+ }
416
+ else {
417
+ return false;
418
+ }
419
+ },
420
+ order: 6
421
+ },
422
+ {
423
+ type: "button",
424
+ title: gettext("Subscript"),
425
+ icon: "subscript",
426
+ action: editor => {
427
+ const mark = editor.currentView.state.schema.marks["sub"];
428
+ const command = toggleMark(mark);
429
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
430
+ },
431
+ available: editor => markAvailable(editor, "sub"),
432
+ disabled: editor => {
433
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
434
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
435
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
436
+ markDisabled(editor, "sub")) {
437
+ return true;
438
+ }
439
+ },
440
+ selected: editor => {
441
+ const storedMarks = editor.currentView.state.storedMarks;
442
+ if (storedMarks?.some(mark => mark.type.name === "sub") ||
443
+ editor.currentView.state.selection.$head
444
+ .marks()
445
+ .some(mark => mark.type.name === "sub")) {
446
+ return true;
447
+ }
448
+ else {
449
+ return false;
450
+ }
451
+ },
452
+ order: 7
453
+ },
454
+ {
455
+ type: "button",
456
+ title: gettext("Code"),
457
+ icon: "code",
458
+ action: editor => {
459
+ const mark = editor.currentView.state.schema.marks["code"];
460
+ const command = toggleMark(mark);
461
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
462
+ },
463
+ available: editor => markAvailable(editor, "code"),
464
+ disabled: editor => {
465
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
466
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
467
+ editor.currentView.state.selection.jsonID === "gapcursor" ||
468
+ markDisabled(editor, "code")) {
469
+ return true;
470
+ }
471
+ },
472
+ selected: editor => {
473
+ const storedMarks = editor.currentView.state.storedMarks;
474
+ if (storedMarks?.some(mark => mark.type.name === "code") ||
475
+ editor.currentView.state.selection.$head
476
+ .marks()
477
+ .some(mark => mark.type.name === "code")) {
478
+ return true;
479
+ }
480
+ else {
481
+ return false;
482
+ }
483
+ },
484
+ order: 8
485
+ },
486
+ {
487
+ type: "button",
488
+ title: gettext("Numbered list"),
489
+ icon: "list-ol",
490
+ action: editor => {
491
+ const node = editor.currentView.state.schema.nodes["ordered_list"];
492
+ const command = wrapInList(node);
493
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
494
+ },
495
+ available: editor => elementAvailable(editor, "ordered_list"),
496
+ disabled: editor => {
497
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
498
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
499
+ elementDisabled(editor, "ordered_list")) {
500
+ return true;
501
+ }
502
+ },
503
+ selected: editor => {
504
+ const depth = editor.currentView.state.selection.$head.sharedDepth(editor.currentView.state.selection.anchor);
505
+ const nodeType = editor.currentView.state.schema.nodes["ordered_list"];
506
+ for (let i = 0; i < depth; i++) {
507
+ const node = editor.currentView.state.selection.$head.node(i);
508
+ if (node.type === nodeType) {
509
+ return true;
510
+ }
511
+ }
512
+ return false;
513
+ },
514
+ order: 9
515
+ },
516
+ {
517
+ type: "button",
518
+ title: gettext("Bullet list"),
519
+ icon: "list-ul",
520
+ action: editor => {
521
+ const node = editor.currentView.state.schema.nodes["bullet_list"];
522
+ const command = wrapInList(node);
523
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
524
+ },
525
+ available: editor => elementAvailable(editor, "bullet_list"),
526
+ disabled: editor => {
527
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
528
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
529
+ elementDisabled(editor, "bullet_list")) {
530
+ return true;
531
+ }
532
+ },
533
+ selected: editor => {
534
+ const depth = editor.currentView.state.selection.$head.sharedDepth(editor.currentView.state.selection.anchor);
535
+ const nodeType = editor.currentView.state.schema.nodes["bullet_list"];
536
+ for (let i = 0; i < depth; i++) {
537
+ const node = editor.currentView.state.selection.$head.node(i);
538
+ if (node.type === nodeType) {
539
+ return true;
540
+ }
541
+ }
542
+ return false;
543
+ },
544
+ order: 10
545
+ },
546
+ {
547
+ type: "button",
548
+ title: gettext("Blockquote"),
549
+ icon: "quote-right",
550
+ action: editor => {
551
+ const node = editor.currentView.state.schema.nodes["blockquote"];
552
+ const command = wrapIn(node);
553
+ command(editor.currentView.state, tr => editor.currentView.dispatch(tr));
554
+ },
555
+ available: editor => elementAvailable(editor, "blockquote"),
556
+ disabled: editor => {
557
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
558
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
559
+ elementDisabled(editor, "blockquote")) {
560
+ return true;
561
+ }
562
+ },
563
+ selected: editor => {
564
+ const depth = editor.currentView.state.selection.$head.sharedDepth(editor.currentView.state.selection.anchor);
565
+ const nodeType = editor.currentView.state.schema.nodes["blockquote"];
566
+ for (let i = 0; i < depth; i++) {
567
+ const node = editor.currentView.state.selection.$head.node(i);
568
+ if (node.type === nodeType) {
569
+ return true;
570
+ }
571
+ }
572
+ return false;
573
+ },
574
+ order: 11
575
+ },
576
+ {
577
+ id: "link",
578
+ type: "button",
579
+ title: gettext("Link"),
580
+ icon: "link",
581
+ action: editor => {
582
+ const dialog = new LinkDialog(editor);
583
+ dialog.init();
584
+ },
585
+ available: editor => markAvailable(editor, "link"),
586
+ disabled: editor => {
587
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
588
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
589
+ (markDisabled(editor, "link") &&
590
+ elementDisabled(editor, "cross_reference"))) {
591
+ return true;
592
+ }
593
+ },
594
+ selected: editor => editor.currentView.state.selection.$head
595
+ .marks()
596
+ .some(mark => mark.type.name === "link"),
597
+ order: 12
598
+ },
599
+ {
600
+ type: "button",
601
+ title: gettext("Footnote"),
602
+ icon: "asterisk",
603
+ action: editor => {
604
+ const node = editor.view.state.schema.nodes["footnote"];
605
+ const tr = editor.view.state.tr.replaceSelectionWith(node.createAndFill(), false);
606
+ editor.view.dispatch(tr);
607
+ return false;
608
+ },
609
+ available: editor => elementAvailable(editor, "footnote"),
610
+ disabled: editor => {
611
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
612
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
613
+ editor.view !== editor.currentView || // we don't allow footnotes in footnotes
614
+ elementDisabled(editor, "footnote")) {
615
+ return true;
616
+ }
617
+ },
618
+ order: 13
619
+ },
620
+ {
621
+ type: "button",
622
+ title: gettext("Cite"),
623
+ icon: "book",
624
+ action: editor => {
625
+ const inlineState = getInlineReferenceState(editor.currentView.state);
626
+ if (inlineState?.active && inlineState.isEdit) {
627
+ editor.currentView.dispatch(setInlineReferenceState(editor.currentView.state.tr, {
628
+ action: "openDialog"
629
+ }));
630
+ }
631
+ const dialog = new CitationDialog(editor);
632
+ dialog.init();
633
+ return false;
634
+ },
635
+ available: editor => elementAvailable(editor, "citation"),
636
+ disabled: editor => {
637
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
638
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
639
+ elementDisabled(editor, "citation") ||
640
+ !["text", "node"].includes(editor.currentView.state.selection.jsonID) ||
641
+ (editor.currentView.state.selection.jsonID === "node" &&
642
+ editor.currentView.state.selection.node.type.name !==
643
+ "citation")) {
644
+ return true;
645
+ }
646
+ },
647
+ order: 14
648
+ },
649
+ {
650
+ type: "button",
651
+ title: gettext("Horizontal line"),
652
+ icon: "minus",
653
+ action: editor => {
654
+ const view = editor.currentView, state = view.state;
655
+ view.dispatch(state.tr.replaceSelectionWith(state.schema.node("horizontal_rule")));
656
+ },
657
+ available: editor => elementAvailable(editor, "horizontal_rule"),
658
+ disabled: editor => {
659
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
660
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
661
+ elementDisabled(editor, "horizontal_rule")) {
662
+ return true;
663
+ }
664
+ },
665
+ order: 15
666
+ },
667
+ {
668
+ type: "button",
669
+ title: gettext("Math"),
670
+ icon: "percent",
671
+ action: editor => {
672
+ const dialog = new MathDialog(editor);
673
+ dialog.init();
674
+ },
675
+ available: editor => elementAvailable(editor, "equation"),
676
+ disabled: editor => {
677
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
678
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
679
+ elementDisabled(editor, "equation") ||
680
+ !["text", "node"].includes(editor.currentView.state.selection.jsonID) ||
681
+ (editor.currentView.state.selection.jsonID === "node" &&
682
+ editor.currentView.state.selection.node.type.name !==
683
+ "equation")) {
684
+ return true;
685
+ }
686
+ },
687
+ order: 16
688
+ },
689
+ {
690
+ type: "button",
691
+ title: gettext("Figure"),
692
+ icon: "image",
693
+ action: editor => {
694
+ const dialog = new FigureDialog(editor);
695
+ dialog.init();
696
+ return false;
697
+ },
698
+ available: editor => elementAvailable(editor, "figure"),
699
+ disabled: editor => {
700
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
701
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
702
+ elementDisabled(editor, "figure")) {
703
+ return true;
704
+ }
705
+ },
706
+ order: 17
707
+ },
708
+ {
709
+ type: "button",
710
+ title: gettext("Table"),
711
+ tooltip: gettext("Insert a table into the document."),
712
+ icon: "table",
713
+ action: editor => {
714
+ const dialog = new TableDialog(editor);
715
+ dialog.init();
716
+ return false;
717
+ },
718
+ available: editor => elementAvailable(editor, "table"),
719
+ disabled: editor => {
720
+ if (READ_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
721
+ COMMENT_ONLY_ROLES.includes(editor.docInfo.access_rights) ||
722
+ elementDisabled(editor, "table") ||
723
+ findTable(editor.currentView.state)) {
724
+ return true;
725
+ }
726
+ },
727
+ order: 15
728
+ },
729
+ {
730
+ type: "button",
731
+ title: gettext("Undo"),
732
+ icon: "undo",
733
+ action: editor => undo(editor.currentView.state, tr => editor.currentView.dispatch(tr.setMeta("inputType", "historyUndo"))),
734
+ disabled: editor => undoDepth(editor.currentView.state) === 0,
735
+ order: 16
736
+ },
737
+ {
738
+ type: "button",
739
+ title: gettext("Redo"),
740
+ icon: "redo",
741
+ action: editor => redo(editor.currentView.state, tr => editor.currentView.dispatch(tr.setMeta("inputType", "historyRedo"))),
742
+ disabled: editor => redoDepth(editor.currentView.state) === 0,
743
+ order: 17
744
+ }
745
+ ]
746
+ });
747
+ //# sourceMappingURL=model.js.map