mirror of
https://github.com/EthanMarti/infio-copilot.git
synced 2026-01-16 08:21:55 +00:00
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
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
|
|
}
|