import { blockHasType, editorHasBlockWithType } from "@blocknote/core"; import { SideMenuExtension } from "@blocknote/core/extensions"; import { ReactNode } from "react"; import { useComponentsContext } from "../../../../editor/ComponentsContext.js"; import { useBlockNoteEditor } from "../../../../hooks/useBlockNoteEditor.js"; import { ColorPicker } from "../../../ColorPicker/ColorPicker.js"; import { useExtensionState } from "../../../../hooks/useExtension.js"; export const BlockColorsItem = (props: { children: ReactNode }) => { const Components = useComponentsContext()!; const editor = useBlockNoteEditor(); const block = useExtensionState(SideMenuExtension, { editor, selector: (state) => state?.block, }); if ( block === undefined || (!blockHasType(block, editor, block.type, { textColor: "string", }) && !blockHasType(block, editor, block.type, { backgroundColor: "string", })) ) { return null; } return ( {props.children} editor.updateBlock(block, { type: block.type, props: { textColor: color }, }), } : undefined } background={ blockHasType(block, editor, block.type, { backgroundColor: "string", }) && editorHasBlockWithType(editor, block.type, { backgroundColor: "string", }) ? { color: block.props.backgroundColor, setColor: (color) => editor.updateBlock(block, { props: { backgroundColor: color }, }), } : undefined } /> ); };