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'))