@@ -202,6 +202,7 @@ function BlockNoteViewComponent<
202202 < BlockNoteViewContainer
203203 className = { className }
204204 renderEditor = { renderEditor }
205+ editable = { editable }
205206 editorColorScheme = { editorColorScheme }
206207 ref = { ref }
207208 { ...rest }
@@ -221,26 +222,34 @@ const BlockNoteViewContainer = React.forwardRef<
221222 HTMLDivElement ,
222223 {
223224 renderEditor : boolean ;
225+ editable ?: boolean ;
224226 editorColorScheme : "light" | "dark" ;
225227 children : ReactNode ;
226228 } & Omit <
227229 HTMLAttributes < HTMLDivElement > ,
228230 "onChange" | "onSelectionChange" | "children"
229231 >
230- > ( ( { className, renderEditor, editorColorScheme, children, ...rest } , ref ) => (
231- < div
232- className = { mergeCSSClasses ( "bn-container" , editorColorScheme , className ) }
233- data-color-scheme = { editorColorScheme }
234- { ...rest }
235- ref = { ref }
236- >
237- { renderEditor ? (
238- < BlockNoteViewEditor > { children } </ BlockNoteViewEditor >
239- ) : (
240- children
241- ) }
242- </ div >
243- ) ) ;
232+ > (
233+ (
234+ { className, renderEditor, editable, editorColorScheme, children, ...rest } ,
235+ ref ,
236+ ) => (
237+ < div
238+ className = { mergeCSSClasses ( "bn-container" , editorColorScheme , className ) }
239+ data-color-scheme = { editorColorScheme }
240+ { ...rest }
241+ ref = { ref }
242+ >
243+ { renderEditor ? (
244+ < BlockNoteViewEditor editable = { editable } >
245+ { children }
246+ </ BlockNoteViewEditor >
247+ ) : (
248+ children
249+ ) }
250+ </ div >
251+ ) ,
252+ ) ;
244253
245254// https://fettblog.eu/typescript-react-generic-forward-refs/
246255export const BlockNoteViewRaw = React . forwardRef ( BlockNoteViewComponent ) as <
@@ -260,7 +269,10 @@ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as <
260269 * Renders the contentEditable editor itself (.bn-editor element) and the
261270 * default UI elements.
262271 */
263- export const BlockNoteViewEditor = ( props : { children ?: ReactNode } ) => {
272+ export const BlockNoteViewEditor = ( props : {
273+ editable ?: boolean ;
274+ children ?: ReactNode ;
275+ } ) => {
264276 const ctx = useBlockNoteViewContext ( ) ! ;
265277 const editor = useBlockNoteEditor ( ) ;
266278
@@ -270,9 +282,15 @@ export const BlockNoteViewEditor = (props: { children?: ReactNode }) => {
270282
271283 const mount = useCallback (
272284 ( element : HTMLElement | null ) => {
285+ if (
286+ props . editable !== undefined &&
287+ props . editable !== editor . isEditable
288+ ) {
289+ editor . isEditable = props . editable ;
290+ }
273291 editor . mount ( element , portalManager ) ;
274292 } ,
275- [ editor , portalManager ] ,
293+ [ editor , portalManager , props . editable ] ,
276294 ) ;
277295
278296 return (
0 commit comments