     @requestUpdate()
 
   destroy: ->
+    @off()
+    @body.off()
+    @hiddenInput.off()
+
     @subscriptions.dispose()
     @remove()
 

  getUndefinedDisplay: -> @undefinedDisplay ? @configUndefinedDisplay

  subscribeTo: (object, events) ->
    for event, callback of events
      @subscriptions.add @asDisposable object.on event, callback

  observeConfig: (configs) ->
    for config, callback of configs
      @subscriptions.add @asDisposable atom.config.observe config, callback

  #    ########   #######  ##      ##  ######
  #    ##     ## ##     ## ##  ##  ## ##    ##

    @lastRenderedRow = lastRow
    @hasChanged = false

  floatToPercent: (w) -> "#{Math.round(w * 10000) / 100}%"
