Draft.js Fiddle
A fiddle to repro issues in Draft.js
by Juan Lanus
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.0/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/draft-js/0.7.0/Draft.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/draft-js/0.7.0/Draft.css">
<div id="react-root"></div>
CSS
body {
font-family: Helvetica, sans-serif;
}
.container-root {
border: 1px solid black;
padding: 5px;
margin: 5px;
font-size: 16px;
}
Babel + JSX
const {DefaultDraftBlockRenderMap, Editor, EditorState} = Draft;
const blockRenderMap = Immutable.Map({
'paragraph': {
element: 'p',
},
'unstyled': {
element: 'p',
}
})
// keep support for other draft default block types and add our myCustomBlock type
const extendedBlockRenderMap = DefaultDraftBlockRenderMap.merge(blockRenderMap)
class Container extends React.Component {
constructor(props) {
super(props);
this.state = {
editorState: EditorState.createEmpty(),
output: ''
};
}
render() {
return (
<div className="container-root">
<Editor
blockRenderMap={extendedBlockRenderMap}
placeholder="Type away :)"
editorState={this.state.editorState}
onChange={this._handleChange}
ref={(el) => this.editor = el}
/>
<div id="output">{this.state.output}</div>
</div>
);
}
_handleChange = (editorState) => {
const paragraphs = [...this.editor.refs.editorContainer.getElementsByTagName('p')];
// const el = document.createElement('div')
let output = '';
paragraphs.forEach((paragraph) => {
output += paragraph.outerHTML + '\n';
})
this.setState({editorState, output});
}
}
ReactDOM.render(<Container />, document.getElementById('react-root'))