import React from 'react'; import PropTypes from 'prop-types'; import { UnControlled as CodeMirror } from 'react-codemirror2'; require('codemirror/lib/codemirror.css'); require('codemirror/addon/display/autorefresh'); require('codemirror/addon/edit/matchbrackets'); require('codemirror/addon/edit/matchtags'); require('codemirror/addon/edit/closetag'); require('codemirror/addon/edit/continuelist'); require('codemirror/addon/search/match-highlighter'); require('codemirror/addon/scroll/annotatescrollbar'); require('codemirror/mode/gfm/gfm'); require('codemirror/theme/eclipse.css'); require('../../../../local_modules/codemirror-markdown-list-autoindentlist'); export default class Editor extends React.Component { constructor(props) { super(props); this.state = { value: this.props.value, }; this.getCodeMirror = this.getCodeMirror.bind(this); // this.initCaretPosition = this.initCaretPosition.bind(this); } getCodeMirror() { return this.refs.cm.editor; } /** * initialize caret position of codemirror * @param {string} value */ initCaretPosition(position) { const editor = this.getCodeMirror(); console.log(editor); // editor.setCursor(0, position); editor.focus(); editor.setCursor(3, 3); } render() { return ( { if (this.props.onScroll != null) { this.props.onScroll(editor, data); } }} onChange={(editor, data, value) => { if (this.props.onChange != null) { this.props.onChange(value); } }} /> ) } } Editor.propTypes = { value: PropTypes.string, onChange: PropTypes.func, onScroll: PropTypes.func, };