@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,622 @@
1
+ import { NodeSelection, Plugin, PluginKey } from "prosemirror-state";
2
+ import { RemoveMarkStep } from "prosemirror-transform";
3
+ import { Decoration, DecorationSet } from "prosemirror-view";
4
+ import { randomFigureId, randomHeadingId, randomListId, randomTableId } from "@fiduswriter/document/schema/common/index";
5
+ import { CATS } from "@fiduswriter/document/schema/i18n";
6
+ import { addAlert, noSpaceTmp } from "fwtoolkit";
7
+ import { CitationDialog, LinkDialog } from "../dialogs";
8
+ const key = new PluginKey("links");
9
+ const copyLink = href => {
10
+ const textarea = document.createElement("textarea");
11
+ textarea.textContent = href;
12
+ textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge.
13
+ document.body.appendChild(textarea);
14
+ textarea.select();
15
+ try {
16
+ document.execCommand("copy"); // Security exception may be thrown by some browsers.
17
+ document.body.removeChild(textarea);
18
+ addAlert("info", gettext("Link copied to clipboard"));
19
+ }
20
+ catch (_ex) {
21
+ addAlert("info", gettext("Copy to clipboard failed. Please copy manually."));
22
+ }
23
+ };
24
+ const nonDeletedTextContent = node => {
25
+ let text = "";
26
+ node.descendants(subNode => {
27
+ if (subNode.isText &&
28
+ !subNode.marks.find(mark => mark.type.name === "deletion")) {
29
+ text += subNode.text;
30
+ }
31
+ });
32
+ return text;
33
+ };
34
+ export const getInternalTargets = (state, language, editor) => {
35
+ const internalTargets = [];
36
+ const anchors = {};
37
+ const categories = {};
38
+ state.doc.descendants(node => {
39
+ if (node.attrs.track?.find(track => track.type === "deletion")) {
40
+ return true;
41
+ }
42
+ if (node.type.groups.includes("heading")) {
43
+ const textContent = nonDeletedTextContent(node);
44
+ if (textContent.length) {
45
+ internalTargets.push({
46
+ id: node.attrs.id,
47
+ text: textContent
48
+ });
49
+ }
50
+ return true;
51
+ }
52
+ if (["figure", "table"].includes(node.type.name) &&
53
+ node.attrs.category &&
54
+ node.attrs.category !== "none") {
55
+ if (!categories[node.attrs.category]) {
56
+ categories[node.attrs.category] = 0;
57
+ }
58
+ categories[node.attrs.category]++;
59
+ internalTargets.push({
60
+ id: node.attrs.id,
61
+ text: editor === "main"
62
+ ? `${CATS[node.attrs.category][language]} ${categories[node.attrs.category]}`
63
+ : `${CATS[node.attrs.category][language]} ${categories[node.attrs.category]}A`
64
+ });
65
+ return true;
66
+ }
67
+ if (node.type.name === "code_block" &&
68
+ node.attrs.category &&
69
+ node.attrs.id) {
70
+ if (!categories[node.attrs.category]) {
71
+ categories[node.attrs.category] = 0;
72
+ }
73
+ categories[node.attrs.category]++;
74
+ const categoryLabel = CATS[node.attrs.category]?.[language] || node.attrs.category;
75
+ const text = node.attrs.title
76
+ ? `${categoryLabel} ${categories[node.attrs.category]}: ${node.attrs.title}`
77
+ : `${categoryLabel} ${categories[node.attrs.category]}`;
78
+ internalTargets.push({
79
+ id: node.attrs.id,
80
+ text: editor === "main" ? text : `${text}A`
81
+ });
82
+ return true;
83
+ }
84
+ if (node.type.name === "text") {
85
+ const anchor = node.marks.find(mark => mark.type.name === "anchor");
86
+ if (anchor) {
87
+ anchors[anchor.attrs.id] =
88
+ (anchors[anchor.attrs.id] || "") + node.text;
89
+ }
90
+ }
91
+ });
92
+ Object.entries(anchors).forEach(([id, text]) => internalTargets.push({ id, text }));
93
+ return internalTargets;
94
+ };
95
+ export const linksPlugin = options => {
96
+ // Holds the action functions for every visible <li> in the current dropup,
97
+ // ordered exactly as they appear in the DOM. Populated by createDropUp()
98
+ // and consumed by the handleKeyDown prop.
99
+ let currentDropUpActions = [];
100
+ function getUrl(state, oldState, oldUrl) {
101
+ const id = state.selection.$head.parent.attrs.id, mark = state.selection.$head
102
+ .marks()
103
+ .find(mark => mark.type.name === "anchor");
104
+ let newUrl = oldUrl.split("#")[0];
105
+ if (mark) {
106
+ newUrl += `#${mark.attrs.id}`;
107
+ }
108
+ else if (id) {
109
+ newUrl += `#${id}`;
110
+ }
111
+ const changed = oldUrl === newUrl ? false : true;
112
+ // TODO: Should the following be moved to a view?
113
+ // Not sure if this counts as a DOM update.
114
+ if (changed && options.editor.currentView.state === oldState) {
115
+ window.history.replaceState("", "", newUrl);
116
+ }
117
+ return newUrl;
118
+ }
119
+ function getLinkMark(state) {
120
+ return state.selection.$head
121
+ .marks()
122
+ .find(mark => mark.type.name === "link");
123
+ }
124
+ function getAnchorMark(state) {
125
+ return state.selection.$head
126
+ .marks()
127
+ .find(mark => mark.type.name === "anchor");
128
+ }
129
+ function getCrossReference(state) {
130
+ // When inline_references is enabled the inline reference editor
131
+ // handles cross-references; don't show the links dropup for them.
132
+ if (options.editor?.app?.config?.user?.preferences
133
+ ?.inline_references === true) {
134
+ return undefined;
135
+ }
136
+ return state.selection instanceof NodeSelection
137
+ ? state.selection.node.type.name == "cross_reference"
138
+ ? state.selection.node
139
+ : undefined
140
+ : undefined;
141
+ }
142
+ function getCitation(state) {
143
+ // Only surface a citation in the links dropup when inline_references
144
+ // is disabled (otherwise the inline reference editor handles it).
145
+ if (options.editor?.app?.config?.user?.preferences
146
+ ?.inline_references === true) {
147
+ return undefined;
148
+ }
149
+ return state.selection instanceof NodeSelection
150
+ ? state.selection.node.type.name === "citation"
151
+ ? state.selection.node
152
+ : undefined
153
+ : undefined;
154
+ }
155
+ function getDecos(state, selectedIndex = -1) {
156
+ const $head = state.selection.$head;
157
+ const currentMarks = [], linkMark = $head.marks().find(mark => mark.type.name === "link"), anchorMark = $head.marks().find(mark => mark.type.name === "anchor");
158
+ const crossRef = getCrossReference(state);
159
+ const citation = getCitation(state);
160
+ if (linkMark) {
161
+ currentMarks.push(linkMark);
162
+ }
163
+ if (anchorMark) {
164
+ currentMarks.push(anchorMark);
165
+ }
166
+ if (crossRef) {
167
+ currentMarks.push(crossRef);
168
+ }
169
+ if (citation) {
170
+ currentMarks.push(citation);
171
+ }
172
+ if (!currentMarks.length) {
173
+ return DecorationSet.empty;
174
+ }
175
+ let startPos = $head.start(); // position of block start.
176
+ if (crossRef || citation) {
177
+ // For inline nodes, place dropup after the node
178
+ startPos = state.selection.from + (crossRef || citation).nodeSize;
179
+ }
180
+ else {
181
+ let index = $head.index();
182
+ while (index < $head.parent.childCount - 1 &&
183
+ currentMarks.some(mark => mark.isInSet($head.parent.child(index + 1).marks))) {
184
+ index++;
185
+ }
186
+ for (let i = 0; i <= index; i++) {
187
+ startPos += $head.parent.child(i).nodeSize;
188
+ }
189
+ }
190
+ const dom = createDropUp(linkMark, anchorMark, crossRef, $head, citation, selectedIndex), deco = Decoration.widget(startPos, dom);
191
+ return DecorationSet.create(state.doc, [deco]);
192
+ }
193
+ function createDropUp(linkMark, anchorMark, crossRef, $head, citation = null, selectedIndex = -1) {
194
+ const dropUp = document.createElement("span"), editor = options.editor, writeAccess = editor.docInfo.access_rights === "write" ? true : false, editAccess = ["write", "write-tracked", "review-tracked"].includes(editor.docInfo.access_rights)
195
+ ? true
196
+ : false;
197
+ let linkType, linkHref, anchorHref, requiredPx = 10;
198
+ if (linkMark) {
199
+ linkType = linkMark.attrs.href[0] === "#" ? "internal" : "external";
200
+ linkHref =
201
+ linkType === "internal"
202
+ ? window.location.href.split("#")[0] + linkMark.attrs.href
203
+ : linkMark.attrs.href;
204
+ requiredPx += 120;
205
+ }
206
+ if (anchorMark) {
207
+ anchorHref =
208
+ window.location.href.split("#")[0] + "#" + anchorMark.attrs.id;
209
+ requiredPx += 92;
210
+ }
211
+ if (citation) {
212
+ requiredPx += 92;
213
+ }
214
+ dropUp.classList.add("drop-up-outer");
215
+ dropUp.innerHTML = noSpaceTmp `
216
+ <div class="link drop-up-inner" style="top: -${requiredPx}px;">
217
+ ${linkMark
218
+ ? `<div class="drop-up-head">
219
+ ${linkMark.attrs.title
220
+ ? `<div class="link-title">${gettext("Title")}:&nbsp;${linkMark.attrs.title}</div>`
221
+ : ""}
222
+ <div class="link-href">
223
+ <a class="href${linkType === "internal" ? " internal" : ""}" ${linkType === "external" ? 'target="_blank"' : ""} href="${linkHref}">
224
+ ${linkHref}
225
+ </a>
226
+ </div>
227
+ </div>
228
+ <ul class="drop-up-options">
229
+ <li class="copy-link" title="${gettext("Copy link")}">
230
+ ${gettext("Copy link")}
231
+ </li>
232
+ ${writeAccess
233
+ ? `<li class="edit-link" title="${gettext("Edit link")}">
234
+ ${gettext("Edit")}
235
+ </li>
236
+ <li class="remove-link" title="${gettext("Remove link")}">
237
+ ${gettext("Remove")}
238
+ </li>`
239
+ : ""}
240
+ </ul>`
241
+ : ""}
242
+ ${anchorMark
243
+ ? `<div class="drop-up-head">
244
+ <div class="link-title">${gettext("Anchor")}</div>
245
+ <div class="link-href">
246
+ <a class="href" target="_blank" href="${anchorHref}">
247
+ ${anchorHref}
248
+ </a>
249
+ </div>
250
+ </div>
251
+ <ul class="drop-up-options">
252
+ <li class="copy-anchor" title="${gettext("Copy anchor")}">
253
+ ${gettext("Copy anchor")}
254
+ </li>
255
+ ${writeAccess
256
+ ? `<li class="remove-anchor" title="${gettext("Remove anchor")}">
257
+ ${gettext("Remove")}
258
+ </li>`
259
+ : ""}
260
+ </ul>`
261
+ : ""}
262
+ ${crossRef
263
+ ? `<div class="drop-up-head" ${editAccess ? "" : 'style="border-radius:6px;"'}>
264
+ <div class="link-title">${gettext("Cross Reference")}</div>
265
+ <div class="link-href">
266
+ <span>
267
+ ${crossRef.attrs.title ? crossRef.attrs.title : "Target Lost"}
268
+ </a>
269
+ </div>
270
+ </div>
271
+ ${editAccess
272
+ ? `<ul class="drop-up-options">
273
+ <li class="edit-crossRef" title="${gettext("Edit cross reference")}">
274
+ ${gettext("Edit")}
275
+ </li>
276
+ <li class="remove-crossRef" title="${gettext("Remove cross reference")}">
277
+ ${gettext("Remove")}
278
+ </li>
279
+ </ul>`
280
+ : ""}
281
+ `
282
+ : ""}
283
+ ${citation
284
+ ? `<div class="drop-up-head" ${editAccess ? "" : 'style="border-radius:6px;"'}>
285
+ <div class="link-title">${gettext("Citation")}</div>
286
+ <div class="link-href">
287
+ <span>${citation.attrs.format}</span>
288
+ </div>
289
+ </div>
290
+ ${editAccess
291
+ ? `<ul class="drop-up-options">
292
+ <li class="edit-citation" title="${gettext("Edit citation")}">
293
+ ${gettext("Edit")}
294
+ </li>
295
+ <li class="remove-citation" title="${gettext("Remove citation")}">
296
+ ${gettext("Remove")}
297
+ </li>
298
+ </ul>`
299
+ : ""}
300
+ `
301
+ : ""}
302
+ </div>`;
303
+ if (linkType === "internal") {
304
+ const el = dropUp.querySelector("a.internal");
305
+ el.addEventListener("click", event => {
306
+ event.preventDefault();
307
+ event.stopImmediatePropagation();
308
+ options.editor.scrollIdIntoView(linkMark.attrs.href.slice(1));
309
+ });
310
+ }
311
+ // Rebuild the actions array so handleKeyDown always has the current
312
+ // set of handlers in the same order the <li> items appear in the DOM.
313
+ currentDropUpActions = [];
314
+ const setupAction = (selector, action) => {
315
+ const el = dropUp.querySelector(selector);
316
+ if (!el) {
317
+ return;
318
+ }
319
+ currentDropUpActions.push(action);
320
+ el.addEventListener("mousedown", event => {
321
+ event.preventDefault();
322
+ event.stopImmediatePropagation();
323
+ action();
324
+ });
325
+ };
326
+ // Actions must be registered in the same order they appear in the HTML
327
+ // template so that selectedIndex maps to the correct <li> element.
328
+ setupAction(".copy-link", () => copyLink(linkHref));
329
+ setupAction(".edit-link", () => {
330
+ const dialog = new LinkDialog(editor);
331
+ dialog.init();
332
+ });
333
+ setupAction(".remove-link", () => {
334
+ editor.view.dispatch(editor.view.state.tr.removeMark($head.start(), $head.end(), linkMark));
335
+ });
336
+ setupAction(".copy-anchor", () => copyLink(anchorHref));
337
+ setupAction(".remove-anchor", () => {
338
+ editor.view.dispatch(editor.view.state.tr.removeMark($head.start(), $head.end(), anchorMark));
339
+ });
340
+ setupAction(".edit-crossRef", () => {
341
+ const dialog = new LinkDialog(editor);
342
+ dialog.init();
343
+ });
344
+ setupAction(".remove-crossRef", () => {
345
+ editor.view.dispatch(editor.view.state.tr.delete($head.pos - 1, $head.pos));
346
+ });
347
+ setupAction(".edit-citation", () => {
348
+ const dialog = new CitationDialog(editor);
349
+ dialog.init();
350
+ });
351
+ setupAction(".remove-citation", () => {
352
+ editor.view.dispatch(editor.view.state.tr.delete($head.pos - 1, $head.pos));
353
+ });
354
+ // Apply keyboard-focus highlight to the currently selected item.
355
+ if (selectedIndex >= 0 && selectedIndex < currentDropUpActions.length) {
356
+ const items = Array.from(dropUp.querySelectorAll(".drop-up-options li"));
357
+ if (items[selectedIndex]) {
358
+ items[selectedIndex].classList.add("fw-focused");
359
+ }
360
+ }
361
+ return dropUp;
362
+ }
363
+ return new Plugin({
364
+ key,
365
+ state: {
366
+ init() {
367
+ return {
368
+ url: window.location.href,
369
+ decos: DecorationSet.empty,
370
+ linkMark: false,
371
+ citation: undefined,
372
+ selectedIndex: -1
373
+ };
374
+ },
375
+ apply(tr, _prev, oldState, state) {
376
+ let { url, decos, linkMark, anchorMark, crossReference, citation, selectedIndex } = this.getState(oldState);
377
+ url = getUrl(state, oldState, url);
378
+ const newLinkMark = getLinkMark(state);
379
+ const newAnchorMark = getAnchorMark(state);
380
+ const newCrossReference = getCrossReference(state);
381
+ const newCitation = getCitation(state);
382
+ const meta = tr.getMeta(key);
383
+ if (meta?.action === "navigate") {
384
+ // Keyboard navigation: only selectedIndex changes; rebuild
385
+ // the decoration so the focused class is applied correctly.
386
+ selectedIndex = meta.index;
387
+ decos = getDecos(state, selectedIndex);
388
+ }
389
+ else if (newLinkMark === linkMark &&
390
+ newAnchorMark === anchorMark &&
391
+ newCrossReference === crossReference &&
392
+ newCitation === citation) {
393
+ decos = decos.map(tr.mapping, tr.doc);
394
+ }
395
+ else {
396
+ // The cursor moved to a different mark — reset selection.
397
+ selectedIndex = -1;
398
+ decos = getDecos(state, selectedIndex);
399
+ linkMark = newLinkMark;
400
+ anchorMark = newAnchorMark;
401
+ crossReference = newCrossReference;
402
+ citation = newCitation;
403
+ }
404
+ if (!tr.getMeta("remote")) {
405
+ // We look for changes to figures or headings.
406
+ let foundIdElement = false; // found heading or figure
407
+ let ranges = [];
408
+ tr.steps.forEach((step, index) => {
409
+ ranges.push([step.from, step.to]);
410
+ tr.docs[index].nodesBetween(step.from, step.to, node => {
411
+ if (node.type.groups.includes("heading") ||
412
+ node.type.name === "figure") {
413
+ foundIdElement = true;
414
+ }
415
+ });
416
+ ranges = ranges.map(range => {
417
+ return [
418
+ tr.mapping.maps[index].map(range[0], -1),
419
+ tr.mapping.maps[index].map(range[1], 1)
420
+ ];
421
+ });
422
+ });
423
+ let foundAnchorWithoutId = false; // found an anchor without an ID
424
+ ranges.forEach(range => {
425
+ state.doc.nodesBetween(range[0], range[1], node => {
426
+ if (!foundIdElement &&
427
+ (node.type.groups.includes("heading") ||
428
+ [
429
+ "figure",
430
+ "table",
431
+ "bullet_list",
432
+ "ordered_list"
433
+ ].includes(node.type.name))) {
434
+ foundIdElement = true;
435
+ }
436
+ if (!foundAnchorWithoutId) {
437
+ node.marks.forEach(mark => {
438
+ if (mark.type.name === "anchor" &&
439
+ !mark.attrs.id) {
440
+ foundAnchorWithoutId = true;
441
+ }
442
+ });
443
+ }
444
+ });
445
+ });
446
+ if (foundIdElement || foundAnchorWithoutId) {
447
+ const linkUpdate = { foundAnchorWithoutId };
448
+ tr.setMeta("linkUpdate", linkUpdate);
449
+ if (oldState.schema === options.editor.view.state.schema) {
450
+ tr.setMeta("toFoot", { linkUpdate: true });
451
+ }
452
+ else {
453
+ tr.setMeta("toMain", { linkUpdate: true });
454
+ }
455
+ }
456
+ }
457
+ return {
458
+ url,
459
+ decos,
460
+ linkMark,
461
+ anchorMark,
462
+ crossReference,
463
+ citation,
464
+ selectedIndex
465
+ };
466
+ }
467
+ },
468
+ appendTransaction: (trs, oldState, newState) => {
469
+ // Check if any of the transactions are local.
470
+ if (trs.every(tr => !tr.getMeta("linkUpdate"))) {
471
+ // All transactions are remote or don't change anything. Give up.
472
+ return;
473
+ }
474
+ const foundAnchorWithoutId = trs.find(tr => {
475
+ const linkUpdate = tr.getMeta("linkUpdate");
476
+ return linkUpdate && linkUpdate.foundAnchorWithoutId;
477
+ });
478
+ // ID should not be found in the other pm either. So we look through
479
+ // those as well.
480
+ let otherState, language;
481
+ if (oldState.schema === options.editor.view.state.schema) {
482
+ otherState = options.editor.mod.footnotes.fnEditor.view.state;
483
+ language = newState.doc.attrs.language;
484
+ }
485
+ else {
486
+ otherState = options.editor.view.state;
487
+ language = options.editor.view.state.doc.attrs.language;
488
+ }
489
+ const internalTargets = getInternalTargets(newState, language, oldState.schema === options.editor.view.state.schema
490
+ ? "main"
491
+ : "foot").concat(getInternalTargets(otherState, language, oldState.schema === options.editor.view.state.schema
492
+ ? "foot"
493
+ : "main"));
494
+ // Check if there are any headings or figures in the affected range.
495
+ // Otherwise, skip.
496
+ // Check that unique IDs only exist once in the document and that the
497
+ // text values are up to date for all IDs if they are referenced.
498
+ //
499
+ // If an ID is used more than once, add steps to change the ID of all
500
+ // but the first occurence.
501
+ const ids = [];
502
+ otherState.doc.descendants(node => {
503
+ if (node.type.groups.includes("heading") ||
504
+ ["figure", "table", "bullet_list", "ordered_list"].includes(node.type.name)) {
505
+ ids.push(node.attrs.id);
506
+ }
507
+ });
508
+ const newTr = newState.tr.setMeta("fixIds", true);
509
+ newState.doc.descendants((node, pos) => {
510
+ if (node.type.groups.includes("heading") ||
511
+ ["figure", "table", "bullet_list", "ordered_list"].includes(node.type.name)) {
512
+ if (ids.includes(node.attrs.id) || !node.attrs.id) {
513
+ // Add node if the id is false (default) or it is present twice
514
+ const randomIdGenerator = node.type.groups.includes("heading")
515
+ ? randomHeadingId
516
+ : node.type.name === "figure"
517
+ ? randomFigureId
518
+ : node.type.name === "table"
519
+ ? randomTableId
520
+ : randomListId;
521
+ let id;
522
+ while (!id || ids.includes(id)) {
523
+ id = randomIdGenerator();
524
+ }
525
+ const attrs = Object.assign({}, node.attrs, { id });
526
+ // Because we only change attributes, positions should stay the
527
+ // the same throughout all our extra steps. We therefore do no
528
+ // mapping of positions through these steps.
529
+ newTr.setNodeMarkup(pos, null, attrs);
530
+ ids.push(id);
531
+ }
532
+ else {
533
+ ids.push(node.attrs.id);
534
+ }
535
+ }
536
+ else if (node.type.name === "cross_reference" &&
537
+ !internalTargets.find(it => it.id === node.attrs.id &&
538
+ it.text === node.attrs.title)) {
539
+ const iTarget = internalTargets.find(it => it.id === node.attrs.id);
540
+ const attrs = Object.assign({}, node.attrs, {
541
+ title: iTarget ? iTarget.text : null
542
+ });
543
+ newTr.setNodeMarkup(pos, null, attrs);
544
+ }
545
+ node.marks.forEach(mark => {
546
+ if (mark.type.name === "link" &&
547
+ mark.attrs.href[0] === "#" &&
548
+ !internalTargets.find(it => it.id === mark.attrs.href.slice(1) &&
549
+ it.text === node.attrs.title)) {
550
+ const iTarget = internalTargets.find(it => it.id === mark.attrs.href.slice(1));
551
+ const attrs = Object.assign({}, mark.attrs, {
552
+ title: iTarget ? iTarget.text : null
553
+ });
554
+ newTr.addMark(pos, pos + node.nodeSize, newState.schema.marks.link.create(attrs));
555
+ }
556
+ });
557
+ });
558
+ // Remove anchor marks without ID
559
+ if (foundAnchorWithoutId) {
560
+ const markType = newState.schema.marks.anchor.create({
561
+ id: false
562
+ });
563
+ newTr.step(new RemoveMarkStep(0, newState.doc.content.size, markType));
564
+ }
565
+ return newTr;
566
+ },
567
+ props: {
568
+ handleDOMEvents: {
569
+ focus: (view, _event) => {
570
+ const { url } = key.getState(view.state);
571
+ window.history.replaceState("", "", url);
572
+ }
573
+ },
574
+ handleKeyDown(view, event) {
575
+ const pluginState = key.getState(view.state);
576
+ if (!pluginState) {
577
+ return false;
578
+ }
579
+ const { linkMark, anchorMark, crossReference, citation, selectedIndex } = pluginState;
580
+ // Only intercept arrow/enter keys when a dropup is visible.
581
+ if (!linkMark && !anchorMark && !crossReference && !citation) {
582
+ return false;
583
+ }
584
+ const totalItems = currentDropUpActions.length;
585
+ if (totalItems === 0) {
586
+ return false;
587
+ }
588
+ if (event.key === "ArrowDown") {
589
+ event.preventDefault();
590
+ const newIndex = selectedIndex < totalItems - 1 ? selectedIndex + 1 : 0;
591
+ view.dispatch(view.state.tr.setMeta(key, {
592
+ action: "navigate",
593
+ index: newIndex
594
+ }));
595
+ return true;
596
+ }
597
+ if (event.key === "ArrowUp") {
598
+ event.preventDefault();
599
+ const newIndex = selectedIndex <= 0 ? totalItems - 1 : selectedIndex - 1;
600
+ view.dispatch(view.state.tr.setMeta(key, {
601
+ action: "navigate",
602
+ index: newIndex
603
+ }));
604
+ return true;
605
+ }
606
+ if (event.key === "Enter" &&
607
+ selectedIndex >= 0 &&
608
+ selectedIndex < totalItems) {
609
+ event.preventDefault();
610
+ currentDropUpActions[selectedIndex]();
611
+ return true;
612
+ }
613
+ return false;
614
+ },
615
+ decorations(state) {
616
+ const { decos } = this.getState(state);
617
+ return decos;
618
+ }
619
+ }
620
+ });
621
+ };
622
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/state_plugins/links.js"],"names":[],"mappings":"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"}