         (input \
           {
             type: 'text'
-            key: 'text-value'
             placeholder: 'Enter text here'
             value: @state.text
             onChange: @handleText

    getText: -> @props.lc.tool?.text
    getInitialState: -> {
      text: @getText()
      fontSize: 18
      isItalic: false
      isBold: false
      fontFamilyIndex: 0

        '"Lucida Typewriter",monospace')},
    ]

    # LC's text tool API is a little funky: it just has a 'font' string you can
    # set.
    updateTool: (newState = {}) ->
      for k of @state
        unless k of newState
          newState[k] = @state[k]
      fontSize = parseInt(newState.fontSizeString or '18', 0)
      items = []
      items.push('italic') if newState.isItalic
      items.push('bold') if newState.isBold
      items.push("#{fontSize}px")
      items.push(@getFamilies()[newState.fontFamilyIndex].value)
      @props.lc.tool.font = items.join(' ')

    handleText: (event) ->
      @props.lc.tool.text = event.target.value
      @setState {text: @getText()}

    handleFontSize: (event) ->
      newState = {fontSizeString: event.target.value}
      @setState(newState)
      @updateTool(newState)

    handleFontFamily: (event) ->
      newState = {fontFamilyIndex: event.target.value}
      @setState(newState)
      @updateTool(newState)

    handleItalic: (event) ->
      newState = {isItalic: !@state.isItalic}
      @setState(newState)
      @updateTool(newState)

    handleBold: (event) ->
      newState = {isBold: !@state.isBold}
      @setState(newState)
      @updateTool(newState)

    componentDidMount: -> @updateTool()

    render: ->
      {div, input, select, option, br, label, span} = React.DOM
