diff --git a/packages/react/src/editor/BlockNoteView.tsx b/packages/react/src/editor/BlockNoteView.tsx index a26189fa02..c3955c919c 100644 --- a/packages/react/src/editor/BlockNoteView.tsx +++ b/packages/react/src/editor/BlockNoteView.tsx @@ -202,6 +202,7 @@ function BlockNoteViewComponent< , "onChange" | "onSelectionChange" | "children" > ->(({ className, renderEditor, editorColorScheme, children, ...rest }, ref) => ( -
- {renderEditor ? ( - {children} - ) : ( - children - )} -
-)); +>( + ( + { className, renderEditor, editable, editorColorScheme, children, ...rest }, + ref, + ) => ( +
+ {renderEditor ? ( + + {children} + + ) : ( + children + )} +
+ ), +); // https://fettblog.eu/typescript-react-generic-forward-refs/ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as < @@ -260,7 +269,10 @@ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as < * Renders the contentEditable editor itself (.bn-editor element) and the * default UI elements. */ -export const BlockNoteViewEditor = (props: { children?: ReactNode }) => { +export const BlockNoteViewEditor = (props: { + editable?: boolean; + children?: ReactNode; +}) => { const ctx = useBlockNoteViewContext()!; const editor = useBlockNoteEditor(); @@ -270,9 +282,15 @@ export const BlockNoteViewEditor = (props: { children?: ReactNode }) => { const mount = useCallback( (element: HTMLElement | null) => { + if ( + props.editable !== undefined && + props.editable !== editor.isEditable + ) { + editor.isEditable = props.editable; + } editor.mount(element, portalManager); }, - [editor, portalManager], + [editor, portalManager, props.editable], ); return (