$ npm install md-editor-react codemirror --saveMDEditor is used for show editor with editing controlls and live preview
import{MDEditor}from'md-editor-react';import'md-editor-react/dist/style.css';import'codemirror/mode/gfm/gfm';import'codemirror/lib/codemirror.css';<MDEditordefaultValue="Hello World"/>CodeMirror is dependancy so you have to import codemirror css file and gfm mode for syntax highlighitng.
| props | type | default | description |
|---|---|---|---|
delay | number | 300 | input delay for parsing markdown and show html preview |
fullScreen | boolean | false | enable fullscreen mode |
watchMode | boolean | true | show html view |
className | string | class name applied in wrapper | |
options | object | codemirror options | |
onChange | function | editor value on chagne event handler | |
menuConfig | list | add a menu items in menubar | |
defaultValue | string | set editor initial value | |
parserOptions | object | used marked markdown parser options |
MDPreview is used for parse markdown and preview html
import{MDPreview}from'md-editor-react';import'md-editor-react/dist/style.css';<MDPreviewvalue="markdown value"/>| props | type | description |
|---|---|---|
value | string | markdown value to parse and displayed |
parserOptions | object | used marked markdown parser options |
sanitizerOptions | object | DOMPurify senitizer options |
for highlight code you can used highlightjs library.
import{MDEditor}from'md-editor-react';importhljsfrom'highlight.js';import'md-editor-react/dist/style.css';import'highlight.js/styles/github-gist.css';import'codemirror/mode/gfm/gfm';import'codemirror/lib/codemirror.css';<MDEditordefaultValue="Hello World"parserOptions={{highlight: code=>hljs.highlightAuto(code).value,}}/>import{MDPreview}from'md-editor-react';importhljsfrom'highlight.js';import'md-editor-react/dist/style.css';import'highlight.js/styles/github-gist.css';<MDPreviewvalue="markdown value"parserOptions={{highlight: code=>hljs.highlightAuto(code).value,}}/>use menuConfig props in MDEditor component
<MDEditormenuConfig={[{id: 'uniq_id',title: 'Menu Title',icon: <MenuIcon/>,command: editor=>{/* write your code here */},}]}/>| props | type | description |
|---|---|---|
id | string | uniq id |
title | string | title of menu item |
icon | string or component | icon display in menu bar |
position | number | menu item position starting from 1 (divider count included) |
command | function | trigger after menu button clicked. editor passed as argument you can modify editor value |
component | component | a react component render after menu clicked. component has close() and editor props |
<MDEditormenuConfig={[{divider: true}]}/>if you want to display model like table, link menu. just import and use MDModel component.
import{MDModal,MDInput,MDButton}from'md-editor-react';classMenuComponetextendsReact.PureComponent{constructor(props){super(props);this.state={text: '',};this.onClickSuccess=this.onClickSuccess.bind(this);this.onChangeInput=this.onChangeInput.bind(this);}onChangeInput(event){const{ name, value }=event.target;this.setState({[name]: value,});}onClickSuccess(){const{ text }=this.state;const{ editor, close }=this.props;if(text){editor.replaceSelection(text);close();}}render(){const{ close }=this.props;const{ text }=this.state;return(<MDModalvisibleclosableheader="Menu Header"onClose={close}><MDModal.BodyclassName="menu-modal"><MDInputvalue={text}name="text"onChange={this.onChangeInput}/></MDModal.Body><MDModal.FooteronSuccess={this.onClickSuccess}onCancel={close}/></MDModal>);}}md-editor-react is MIT licensed.

