From dd88083b2a6ddaa0e620f9490d2784c0abbfc859 Mon Sep 17 00:00:00 2001 From: Darius Kazemi Date: Thu, 3 Mar 2022 10:25:47 -0800 Subject: [PATCH] Prevent dropping of external files onto editor We now detect whether a file is being dropped by a user (by checking `event.dataTransfer.files.length`) and prevent the remaining drop behavior if this is the case. Otherwise, drop happens like normal (so a user can still drop text into the editor, or even an image that has been uploaded already via normal means and rendered in the editor). --- prose/prose.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/prose/prose.js b/prose/prose.js index ae8b3ce..cb39c6d 100644 --- a/prose/prose.js +++ b/prose/prose.js @@ -83,6 +83,14 @@ class ProseMirrorView { typingTimer = setTimeout(doneTyping, doneTypingInterval); this.updateState(newState); }, + handleDOMEvents: { + drop: (view, event) => { + // If a file is dropped externally into the editor, do not insert anything. This will not trigger if an image has been inserted after upload and is dragged and dropped internally to change its position. + if (event.dataTransfer.files.length > 0) { + event.preventDefault(); + } + } + }, }); // Editor is focused to the last position. This is a workaround for a bug: // 1. 1 type something in an existing entry