   handleChange: ->
     value = @refs.textInput.value
 
-    if @props.annotation.value?.length > value.length
+    if @state.value?.length > value.length
       @setState textareaHeight: @state.initOffsetHeight, =>
         @updateHeight()
     else
       @updateHeight()
 
+    @setState { value }
+    @debouncedUpdateAnnotation()
+
+  updateAnnotation: ->
+    value = @refs.textInput.value
     newAnnotation = Object.assign @props.annotation, {value}
     @props.onChange newAnnotation

          autoFocus={@props.autoFocus}
          className="standard-input full"
          ref="textInput"
          value={@props.annotation.value}
          onChange={@handleChange}
          rows="1"
          style={height: @state.textareaHeight}

      textInBetween = textAreaValue.substring(selectionStart, selectionEnd)
      textAfter = textAreaValue.substring(selectionEnd, textAreaValue.length)
      value = textBefore + startTag + textInBetween + endTag + textAfter
    @setState { value }

  updateHeight: ->
    @setState textareaHeight: @refs.textInput.scrollHeight + 2
