text: define("ember-notify",
    ["./template","exports"],
    function(__dependency1__, __exports__) {
      "use strict";
      var template = __dependency1__["default"] || __dependency1__;
  
      var Container = Ember.ContainerView.extend({
  
        info: aliasToShow('info'),
        success: aliasToShow('success'),
        warning: aliasToShow('warning'),
        alert: aliasToShow('alert'),
        error: aliasToShow('error'),
  
        classNames: ['ember-notify-cn'],
        show: function(type, message, options) {
          if (typeof message == 'object') {
            options = message;
            message = null;
          }
          var view = this.createChildView(Notify.View, {
            message: message,
            type: type
          });
          if (options) {
            view.setProperties(options);
          }
          return this.pushObject(view);
        }
      });
  
      function aliasToShow(type) {
        return function(message, options) {
          return this.show(type, message, options);
        };
      }
  
      var Notify = Container.createWithMixins({
        rootElement: null,
        container: null,
        classNames: ['default-cn'],
        init: function() {
          this._super();
          var that = this;
          var observer = {
            arrayWillChange: function(that, start, removeCount, addCount) {
              that.appendTo(that.get('rootElement') || document.body);
              that.removeArrayObserver(observer);
            }
          };
          this.addArrayObserver(observer);
        }
      });
      __exports__["default"] = Notify;
      __exports__.Container = Container;
  
      Notify.Container = Container;
      Notify.BaseView = Ember.View.extend({
        type: null, // normal (default), success, alert, secondary
        message: '',
        raw: '',
  
        classNames: ['ember-notify'],
        classNameBindings: ['typeCss', 'visible:ember-notify-show', 'hidden:ember-notify-hidden'],
        attributeBindings: ['data-alert'],
        'data-alert': '',
  
        defaultTemplate: template,
        hidden: Ember.computed.not('visible'),
        closeAfter: 2500,
        removeAfter: 250, // allow time for the close animation to finish
        typeCss: function() {
          var cssClass = this.get('type');
          if (cssClass == 'error') cssClass = 'alert error';
          return cssClass;
        }.property('type'),
        close: function() {
          this.send('close');
        },
        didInsertElement: function() {
          // ensure that the element is added to the DOM in it's hidden state, so that
          // adding the 'ember-notify-show' class triggers the CSS transition
          Ember.run.next(this, function() {
            if (this.get('isDestroyed')) return;
            this.set('visible', true);
          });
          var closeAfter;
          if (!Ember.testing && (closeAfter = this.get('closeAfter'))) {
            Ember.run.later(this, function() {
              if (this.get('isDestroyed')) return;
              this.set('visible', false);
              this.send('close');
            }, closeAfter);
          }
        },
        actions: {
          close: function() {
            var that = this, removeAfter;
            this.set('visible', false);
            if (!Ember.testing) {
              if (removeAfter = this.get('removeAfter')) {
                Ember.run.later(this, close, removeAfter);
              }
            }
            else {
              close();
            }
            function close() {
              var parentView = that.get('parentView');
              if (parentView) parentView.removeObject(that);
            }
          }
        }
      });
  
      Notify.FoundationView = Notify.BaseView.extend({
        classNames: ['alert-box'],
        classNameBindings: ['radius::']
      });
      Notify.BootstrapView = Notify.BaseView.extend({
        classNames: ['alert'],
        typeCss: function() {
          var type = this.get('type');
          if (type == 'alert' || type == 'error') type = 'danger';
          return 'alert-%@'.fmt(type);
        }.property('type')
      });
  
      Notify.setViewClass = function(view) {
        Notify.View = view;
      };
      Notify.setViewClass(Notify.FoundationView);
      Notify.useBootstrap = function() {
        this.setViewClass(Notify.BootstrapView);
      };
  
      Ember.Application.initializer({
        name: 'ember-notify',
        initialize: function(container, App) {
          // set the rootElement of the Notify container to the first Ember Application
          // instance that initializes
          if (!Notify.get('rootElement')) {
            Notify.set('rootElement', App.rootElement);
            Notify.container = container;
          }
        }
      });
    });
  define("ember-notify/template",
    ["exports"],
    function(__exports__) {
      "use strict";
      __exports__["default"] = Ember.Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
        var stack1, escapeExpression=this.escapeExpression, buffer = '';
        data.buffer.push("<div class='message'>");
        stack1 = helpers._triageMustache.call(depth0, "view.message", {"name":"_triageMustache","hash":{},"hashTypes":{},"hashContexts":{},"types":["ID"],"contexts":[depth0],"data":data});
        if (stack1 != null) { data.buffer.push(stack1); }
        data.buffer.push(escapeExpression(helpers._triageMustache.call(depth0, "view.raw", {"name":"_triageMustache","hash":{
          'unescaped': ("true")
        },"hashTypes":{'unescaped': "STRING"},"hashContexts":{'unescaped': depth0},"types":["ID"],"contexts":[depth0],"data":data})));
        data.buffer.push("</div>\n<a ");
        data.buffer.push(escapeExpression(helpers.action.call(depth0, "close", {"name":"action","hash":{
          'target': ("view")
        },"hashTypes":{'target': "STRING"},"hashContexts":{'target': depth0},"types":["STRING"],"contexts":[depth0],"data":data})));
        data.buffer.push(" class=\"close\">&times;</a>\n");
        return buffer;
      },"useData":true})
    });