51 lines
1.3 KiB
JavaScript
Raw Normal View History

import React, { PropTypes } from 'react';
import TextareaAutosize from 'react-textarea-autosize';
import { markdownToHtml, htmlToMarkdown } from '../../unified';
2017-04-18 12:30:38 -04:00
import Toolbar from '../Toolbar/Toolbar';
2017-06-23 14:42:40 -04:00
import { Sticky } from '../../../../UI/Sticky/Sticky';
2016-10-22 04:37:22 -07:00
import styles from './index.css';
export default class RawEditor extends React.Component {
constructor(props) {
super(props);
this.state = {
2017-07-08 22:09:47 -04:00
value: htmlToMarkdown(this.props.value) || '',
};
}
2016-10-21 23:19:23 -07:00
handleChange = (e) => {
2017-07-08 22:09:47 -04:00
const html = markdownToHtml(e.target.value);
this.props.onChange(html);
2017-07-08 22:09:47 -04:00
this.setState({ value: e.target.value });
};
2017-07-08 22:09:47 -04:00
handleToggleMode = () => {
this.props.onMode('visual');
};
render() {
2017-07-08 22:09:47 -04:00
return (
<div className={styles.root}>
<Sticky
className={styles.editorControlBar}
classNameActive={styles.editorControlBarSticky}
fillContainerWidth
>
<Toolbar onToggleMode={this.handleToggleMode} disabled rawMode />
</Sticky>
<TextareaAutosize
className={styles.textarea}
value={this.state.value}
onChange={this.handleChange}
/>
2017-07-08 22:09:47 -04:00
</div>
);
}
}
RawEditor.propTypes = {
onChange: PropTypes.func.isRequired,
onMode: PropTypes.func.isRequired,
value: PropTypes.node,
};