Skip to content

Instantly share code, notes, and snippets.

@johnstonphilip
Last active April 21, 2021 15:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnstonphilip/97b07fa3c33977435466d3f7dd1262da to your computer and use it in GitHub Desktop.
Save johnstonphilip/97b07fa3c33977435466d3f7dd1262da to your computer and use it in GitHub Desktop.
import ReactDOM from "react-dom";
import {
BlockEditorProvider,
BlockList,
WritingFlow,
ObserveTyping,
BlockEditorKeyboardShortcuts,
storeConfig as blockEditorStoreConfig,
BlockInspector,
BlockBreadcrumb,
MediaUpload,
MediaUploadCheck,
MediaPlaceholder,
MediaReplaceFlow,
} from '@wordpress/block-editor';
import { serialize, parse } from '@wordpress/blocks';
import { DropZoneProvider, SlotFillProvider, Popover } from '@wordpress/components';
import { useState } from '@wordpress/element';
import { registerCoreBlocks } from '@wordpress/block-library';
registerCoreBlocks();
export function MyCustomBlockEditor () {
const [ blocks, updateBlocks ] = useState( parse( '<!-- wp:paragraph --><p>Default block!</p><!-- /wp:paragraph -->' ) );
function getEditorSettings() {
const editorSettings = JSON.parse( JSON.stringify( wp.data.select( 'core/block-editor' ).getSettings() ) );
// Make media library work.
editorSettings.mediaUploadCheck = MediaUploadCheck;
editorSettings.mediaUpload = MediaUpload;
editorSettings.mediaPlaceholder = MediaPlaceholder;
editorSettings.mediaReplaceFlow = MediaReplaceFlow;
return editorSettings;
}
return (
<SlotFillProvider>
<DropZoneProvider>
<BlockEditorProvider
value={ blocks }
onChange={ updateBlocks }
onInput={ updateBlocks }
settings={ getEditorSettings() }
>
<BlockEditorKeyboardShortcuts />
<WritingFlow>
<ObserveTyping>
<Popover.Slot name="block-toolbar" />
<BlockList />
<BlockBreadcrumb />
<BlockInspector />
</ObserveTyping>
</WritingFlow>
</BlockEditorProvider>
</DropZoneProvider>
<Popover.Slot />
</SlotFillProvider>
)
}
ReactDOM.render(<MyCustomBlockEditor />, document.getElementById('YOUR_ELEMENT_ID_HERE'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment