   initFormat: (format, eventName) ->
     input = this._getInput(format)
     return unless input?
+    triggering = false
     DOM.addEventListener(input, eventName, =>
+      return if triggering
+      triggering = true
       value = if eventName == 'change' then input.options[input.selectedIndex].value else !DOM.hasClass(input, 'sc-active')
       @quill.focus()
       range = @quill.getSelection()

          @quill.prepareFormat(format, value)
        else
          @quill.formatText(range, format, value, 'user')
      this.setActive(input, value)
      return false
    )

  setActive: (input, value) ->
    if input.tagName == 'SELECT'
      value = '' if _.isArray(value)
      input.value = value
    else
      DOM.addClass(input, 'sc-active')

  updateActive: (range) ->
    return
    activeFormats = this._getActive(range)
    _.each(@container.querySelectorAll('select'), _.bind(DOM.resetSelect))
    _.each(@container.querySelectorAll('.sc-active'), (button) =>
      DOM.removeClass(button, 'sc-active')
    )
    _.each(activeFormats, (value, key) =>
      return unless value
      input = this._getInput(key)
      return unless input?
      this.setActive(input, value)
    )

  _getInput: (format) ->


  _getActive: (range) ->
    if range?
      if range.isCollapsed()
        contents = @quill.getContents(range)
      else
        index = Math.max(0, range.start - 1)
        contents = @quill.getContents(index, index)
      formatsArr = _.pluck(contents, 'attributes')
      activeFormats = formatsArr[0] or {}
      _.each(formatsArr.slice(1), (formats) ->
        _.each(_.keys(activeFormats), (name) ->
          if formats[name]
