@@ -37,15 +37,15 @@ export interface IMarkdownEditor extends ReactCodeMirrorProps {
3737}
3838
3939export interface ToolBarProps {
40- editor ?: ReactCodeMirrorRef ;
40+ editor ?: React . RefObject < ReactCodeMirrorRef > ;
4141 preview : React . RefObject < MarkdownPreviewRef > ;
4242 container : React . RefObject < HTMLDivElement > ;
4343 containerEditor : React . RefObject < HTMLDivElement > ;
4444 editorProps : IMarkdownEditor ;
4545}
4646
4747export interface MarkdownEditorRef {
48- editor : React . RefObject < ReactCodeMirrorRef > | null ;
48+ editor : React . RefObject < ReactCodeMirrorRef > ;
4949 preview ?: React . RefObject < MarkdownPreviewRef > | null ;
5050}
5151
@@ -73,24 +73,25 @@ function MarkdownEditor(
7373 const previewContainer = useRef < MarkdownPreviewRef > ( null ) ;
7474 const container = useRef < HTMLDivElement > ( null ) ;
7575 const containerEditor = useRef < HTMLDivElement > ( null ) ;
76- const [ editor , setEditor ] = useState < ReactCodeMirrorRef > ( ) ;
7776
78- useImperativeHandle (
79- ref ,
80- ( ) => ( {
81- editor : codeMirror ,
82- preview : previewContainer ,
83- } ) ,
84- [ codeMirror , previewContainer ] ,
85- ) ;
77+ useImperativeHandle ( ref , ( ) => ( {
78+ editor : codeMirror ,
79+ preview : previewContainer ,
80+ } ) ) ;
8681
8782 const toolBarProps : ToolBarProps = {
88- editor : editor ,
83+ editor : codeMirror ,
8984 preview : previewContainer ,
9085 container : container ,
9186 containerEditor : containerEditor ,
9287 editorProps : props ,
9388 } ;
89+ const height = typeof codemirrorProps . height === 'number' ? `${ codemirrorProps . height } px` : codemirrorProps . height ;
90+ const extensionsData : IMarkdownEditor [ 'extensions' ] = [
91+ markdown ( { base : markdownLanguage , codeLanguages : languages } ) ,
92+ scrollerStyle ,
93+ ...extensions ,
94+ ] ;
9495 return (
9596 < div className = { `${ prefixCls || '' } wmde-markdown-var ${ className || '' } ` } ref = { container } >
9697 { hideToolbar && (
@@ -105,19 +106,9 @@ function MarkdownEditor(
105106 < CodeMirror
106107 theme = { defaultTheme }
107108 { ...codemirrorProps }
108- extensions = { [
109- markdown ( { base : markdownLanguage , codeLanguages : languages } ) ,
110- scrollerStyle ,
111- ...extensions ,
112- ] }
113- height = {
114- typeof codemirrorProps . height === 'number' ? `${ codemirrorProps . height } px` : codemirrorProps . height
115- }
116- ref = { ( $ref ) => {
117- if ( ! editor && $ref && $ref . editor && $ref . state && $ref . view ) {
118- setEditor ( { ...$ref } ) ;
119- }
120- } }
109+ extensions = { extensionsData }
110+ height = { height }
111+ ref = { codeMirror }
121112 onChange = { ( value , viewUpdate ) => {
122113 setValue ( value ) ;
123114 onChange && onChange ( value , viewUpdate ) ;
0 commit comments