🚀 BlockNote AI is here! Access the early preview.
Examples/Basic/Manipulating Blocks

Manipulating Blocks

This example shows 4 buttons to manipulate the first block using the insertBlocks, updateBlock, removeBlocks and replaceBlocks methods.

Relevant Docs:

import "@blocknote/core/fonts/inter.css"; import { useCreateBlockNote } from "@blocknote/react"; import { BlockNoteView } from "@blocknote/mantine"; import "@blocknote/mantine/style.css";  import "./styles.css";  export default function App() {  const editor = useCreateBlockNote();   return (  <div>  <BlockNoteView editor={editor} />  <div className={"edit-buttons"}>  {/*Inserts a new block at start of document.*/}  <button  className={"edit-button"}  onClick={() =>  editor.insertBlocks(  [  {  content:  "This block was inserted at " +  new Date().toLocaleTimeString(),  },  ],  editor.document[0],  "before",  )  }  >  Insert First Block  </button>  {/*Updates the first block*/}  <button  className={"edit-button"}  onClick={() =>  editor.updateBlock(editor.document[0], {  content:  "This block was updated at " + new Date().toLocaleTimeString(),  })  }  >  Update First Block  </button>  {/*Removes the first block*/}  <button  className={"edit-button"}  onClick={() => editor.removeBlocks([editor.document[0]])}  >  Remove First Block  </button>  {/*Replaces the first block*/}  <button  className={"edit-button"}  onClick={() =>  editor.replaceBlocks(  [editor.document[0]],  [  {  content:  "This block was replaced at " +  new Date().toLocaleTimeString(),  },  ],  )  }  >  Replace First Block  </button>  </div>  </div>  ); } 
.edit-buttons {  display: flex;  justify-content: space-between;  margin-top: 8px; }  .edit-button {  border: 1px solid gray;  border-radius: 4px;  padding-inline: 4px; }  .edit-button:hover {  border: 1px solid lightgrey; }