import { blockHasType, BlockSchema, InlineContentSchema, StyleSchema, } from "@blocknote/core"; import { useCallback } from "react"; import { RiDeleteBin7Line } from "react-icons/ri"; import { useComponentsContext } from "../../../editor/ComponentsContext.js"; import { useBlockNoteEditor } from "../../../hooks/useBlockNoteEditor.js"; import { useEditorState } from "../../../hooks/useEditorState.js"; import { useDictionary } from "../../../i18n/dictionary.js"; export const FileDeleteButton = () => { const dict = useDictionary(); const Components = useComponentsContext()!; const editor = useBlockNoteEditor< BlockSchema, InlineContentSchema, StyleSchema >(); const block = useEditorState({ editor, selector: ({ editor }) => { if (!editor.isEditable) { return undefined; } const selectedBlocks = editor.getSelection()?.blocks || [ editor.getTextCursorPosition().block, ]; if (selectedBlocks.length !== 1) { return undefined; } const block = selectedBlocks[0]; if ( !blockHasType(block, editor, block.type, { url: "string", }) ) { return undefined; } return block; }, }); const onClick = useCallback(() => { if (block !== undefined) { editor.focus(); editor.removeBlocks([block.id]); } }, [block, editor]); if (block === undefined) { return null; } return ( } onClick={onClick} /> ); };