title: Draft.js: How to insert new block before atomic
body: <p>I would like to add new line after block. My current function is next:</p>
  
  <pre><code>   _insert_new_block(editorState) {
        const selection = editorState.getSelection();
        const newBlock = new ContentBlock({
           key: genKey(),
           type: 'unstyled',
           text: ' ',
           characterList: List()
        });
        const contentState = editorState.getCurrentContent();
        const new_block_map = contentState.getBlockMap().set(newBlock.key, newBlock);
        const newContentState = contentState.set('blockMap', new_block_map);
        const new_contentState = contentState.merge({
          blockMap: new_block_map,
          selectionBefore: selection.merge({
            anchorKey: newBlock.key,
            anchorOffset: 0,
            focusKey: newBlock.key,
            focusOffset: 0,
            isBackward: false
          }),
          selectionAfter: selection
        });
        return EditorState.push(
           editorState,
           new_contentState,
           'insert-fragment'
        );
     }
  </code></pre>
  
  <p>New block is inserted in the end of my content but i get this error when i click on newly create block - </p>
  
  <pre><code>getUpdatedSelectionState.js:38 Uncaught TypeError: Cannot read property 'get' of undefined
  </code></pre>
  
  <p>and a file where error is located</p>
  
  <pre><code>'use strict';
  
  var DraftOffsetKey = __webpack_require__(331);
  
  var nullthrows = __webpack_require__(305);
  
  function getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {
    var selection = nullthrows(editorState.getSelection());
    if (process.env.NODE_ENV !== 'production') {
      if (!anchorKey || !focusKey) {
        /*eslint-disable no-console */
        console.warn('Invalid selection state.', arguments, editorState.toJS());
        /*eslint-enable no-console */
        return selection;
      }
    }
  
    var anchorPath = DraftOffsetKey.decode(anchorKey);
    var anchorBlockKey = anchorPath.blockKey;
    var anchorLeaf = editorState.getBlockTree(anchorBlockKey).getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);
  
    var focusPath = DraftOffsetKey.decode(focusKey);
    var focusBlockKey = focusPath.blockKey;
    var focusLeaf = editorState.getBlockTree(focusBlockKey).getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);
  
    var anchorLeafStart = anchorLeaf.get('start');
    var focusLeafStart = focusLeaf.get('start');
  
    var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;
    var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;
  
    var areEqual = selection.getAnchorKey() === anchorBlockKey &amp;&amp; selection.getAnchorOffset() === anchorBlockOffset &amp;&amp; selection.getFocusKey() === focusBlockKey &amp;&amp; selection.getFocusOffset() === focusBlockOffset;
  
    if (areEqual) {
      return selection;
    }
  
    var isBackward = false;
    if (anchorBlockKey === focusBlockKey) {
      var anchorLeafEnd = anchorLeaf.get('end');
      var focusLeafEnd = focusLeaf.get('end');
      if (focusLeafStart === anchorLeafStart &amp;&amp; focusLeafEnd === anchorLeafEnd) {
        isBackward = focusOffset &lt; anchorOffset;
      } else {
        isBackward = focusLeafStart &lt; anchorLeafStart;
      }
    } else {
      var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {
        return v === anchorBlockKey || v === focusBlockKey;
      }).first();
      isBackward = startKey === focusBlockKey;
    }
  
    return selection.merge({
      anchorKey: anchorBlockKey,
      anchorOffset: anchorBlockOffset,
      focusKey: focusBlockKey,
      focusOffset: focusBlockOffset,
      isBackward: isBackward
    });
  }
  
  module.exports = getUpdatedSelectionState;
  /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
  </code></pre>
  
  <p>what can cause this error and how to properly perform insertion?</p>