text: require("ember-handlebars/ext");
  require("ember-views/views/view");
  require("ember-handlebars/controls/text_support");
  
  /**
  @module ember
  @submodule ember-handlebars
  */
  
  var get = Ember.get, set = Ember.set;
  
  /**
    The internal class used to create textarea element when the `{{textarea}}`
    helper is used.
  
    See [handlebars.helpers.textarea](/api/classes/Ember.Handlebars.helpers.html#method_textarea)  for usage details.
  
    ## Layout and LayoutName properties
  
    Because HTML `textarea` elements do not contain inner HTML the `layout` and
    `layoutName` properties will not be applied. See [Ember.View](/api/classes/Ember.View.html)'s
    layout section for more information.
  
    @class TextArea
    @namespace Ember
    @extends Ember.Component
    @uses Ember.TextSupport
  */
  Ember.TextArea = Ember.Component.extend(Ember.TextSupport, {
    classNames: ['ember-text-area'],
  
    tagName: "textarea",
    attributeBindings: ['rows', 'cols', 'name', 'selectionEnd', 'selectionStart', 'wrap'],
    rows: null,
    cols: null,
  
    _updateElementValue: Ember.observer('value', function() {
      // We do this check so cursor position doesn't get affected in IE
      var value = get(this, 'value'),
          $el = this.$();
      if ($el && value !== $el.val()) {
        $el.val(value);
      }
    }),
  
    init: function() {
      this._super();
      this.on("didInsertElement", this, this._updateElementValue);
    }
  
  });
  