 
     @_runCallbackOnExtensions("onContentChanged", {mutations})
 
-    @_saveSelectionState()
+    selection = new ExtendedSelection(@_editableNode())
+    if selection?.isInScope()
+      @_saveExportedSelection(selection.exportSelection())
 
     @props.onChange(target: {value: @_editableNode().innerHTML})
 


  componentWillReceiveProps: (nextProps) =>
    if nextProps.initialSelectionSnapshot?
      @_saveSelectionState(nextProps.initialSelectionSnapshot)

  componentDidUpdate: =>
    @_restoreSelection()

  getCurrentSelection: => @innerState.exportedSelection ? {}
  getPreviousSelection: => @innerState.previousExportedSelection ? {}

  # We save an {ExportedSelection} to `innerState`.
  #
  # Whatever we set `innerState.exportedSelection` to will be implemented
  # on the next `componentDidUpdate` by `_restoreSelection`
  #
  # We also allow props to manually set our `exportedSelection` state.
  # This is useful in undo/redo situations when we want to revert the
  # selection to where it was at a previous time.
  #
  # NOTE: The `exportedSelection` object may have `anchorNode` and
  # `focusNode` references to similar, but not equal, DOMNodes than what
  # we currently have rendered. Every time React re-renders the component
  # we get new DOM objects. When the `exportedSelection` is re-imported
  # during `_restoreSelection`, the `ExtendedSelection` class will attempt
  # to find the appropriate DOM Nodes via the `DOMUtils.findSimilarNodes`
  # method.
  #
  # When React re-renders it doesn't restore the Selection. We need to do
  # this manually with `_restoreSelection`
