diff --git a/web/components/editor.tsx b/web/components/editor.tsx index 5f056f8b..d7836c34 100644 --- a/web/components/editor.tsx +++ b/web/components/editor.tsx @@ -108,10 +108,7 @@ export function useTextEditor(props: { editor?.setOptions({ editorProps: { handlePaste(view, event) { - const imageFiles = Array.from(event.clipboardData?.files ?? []).filter( - (file) => file.type.startsWith('image') - ) - + const imageFiles = getImages(event.clipboardData) if (imageFiles.length) { event.preventDefault() upload.mutate(imageFiles) @@ -126,6 +123,13 @@ export function useTextEditor(props: { return // Otherwise, use default paste handler }, + handleDrop(_view, event, _slice, moved) { + // if dragged from outside + if (!moved) { + event.preventDefault() + upload.mutate(getImages(event.dataTransfer)) + } + }, }, }) @@ -136,6 +140,9 @@ export function useTextEditor(props: { return { editor, upload } } +const getImages = (data: DataTransfer | null) => + Array.from(data?.files ?? []).filter((file) => file.type.startsWith('image')) + function isValidIframe(text: string) { return /^$/.test(text) }