Spaces:
Runtime error
Runtime error
| /** | |
| * Copyright (c) Meta Platforms, Inc. and affiliates. | |
| * | |
| * This source code is licensed under the Chameleon License found in the | |
| * LICENSE file in the root directory of this source tree. | |
| * | |
| */ | |
| import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; | |
| import { DRAG_DROP_PASTE } from "@lexical/rich-text"; | |
| import { isMimeType, mediaFileReader } from "@lexical/utils"; | |
| import { COMMAND_PRIORITY_LOW } from "lexical"; | |
| import { useEffect } from "react"; | |
| import { INSERT_IMAGE_COMMAND } from "./ImagesPlugin"; | |
| const ACCEPTABLE_IMAGE_TYPES = [ | |
| "image/", | |
| "image/heic", | |
| "image/heif", | |
| "image/gif", | |
| "image/webp", | |
| ]; | |
| export default function DragDropPaste(): null { | |
| const [editor] = useLexicalComposerContext(); | |
| useEffect(() => { | |
| return editor.registerCommand( | |
| DRAG_DROP_PASTE, | |
| (files) => { | |
| (async () => { | |
| const filesResult = await mediaFileReader( | |
| files, | |
| [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x), | |
| ); | |
| for (const { file, result } of filesResult) { | |
| if (isMimeType(file, ACCEPTABLE_IMAGE_TYPES)) { | |
| editor.dispatchCommand(INSERT_IMAGE_COMMAND, { | |
| altText: file.name, | |
| src: result, | |
| }); | |
| } | |
| } | |
| })(); | |
| return true; | |
| }, | |
| COMMAND_PRIORITY_LOW, | |
| ); | |
| }, [editor]); | |
| return null; | |
| } | |