import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext' import { DRAG_DROP_PASTE } from '@lexical/rich-text' import { COMMAND_PRIORITY_LOW } from 'lexical' import { useEffect } from 'react' import { MentionableImage } from '../../../../../types/mentionable' import { fileToMentionableImage } from '../../../../../utils/image' export default function DragDropPaste({ onCreateImageMentionables, }: { onCreateImageMentionables?: (mentionables: MentionableImage[]) => void }): null { const [editor] = useLexicalComposerContext() useEffect(() => { return editor.registerCommand( DRAG_DROP_PASTE, // dispatched in RichTextPlugin (files) => { ; (async () => { const images = files.filter((file) => file.type.startsWith('image/')) const mentionableImages = await Promise.all( images.map(async (image) => await fileToMentionableImage(image)), ) onCreateImageMentionables?.(mentionableImages) })() return true }, COMMAND_PRIORITY_LOW, ) }, [editor, onCreateImageMentionables]) return null }