import React, { PropTypes } from 'react' import CSSModules from 'browser/lib/CSSModules' import styles from './MarkdownEditor.styl' import CodeEditor from 'browser/components/CodeEditor' import MarkdownPreview from 'browser/components/MarkdownPreview' class MarkdownEditor extends React.Component { constructor (props) { super(props) this.state = { status: 'CODE' } } handleChange (e) { this.value = this.refs.code.value this.props.onChange(e) } handleContextMenu (e) { let newStatus = this.state.status === 'PREVIEW' ? 'CODE' : 'PREVIEW' this.setState({ status: newStatus }, () => { if (newStatus === 'CODE') { this.refs.code.focus() } else { this.refs.code.blur() this.refs.preview.focus() } }) } reload () { this.refs.code.reload() } render () { let { className, value } = this.props return (
this.handleContextMenu(e)} > this.handleChange(e)} /> this.handleContextMenu(e)} tabIndex='0' value={value} />
) } } MarkdownEditor.propTypes = { className: PropTypes.string, value: PropTypes.string, onChange: PropTypes.func, ignorePreviewPointerEvents: PropTypes.bool } export default CSSModules(MarkdownEditor, styles)