// Generated by CoffeeScript 1.6.3 /* jQuery Growl Copyright 2013 Kevin Sylvestre 1.1.4 */ (function() { "use strict"; var $, Animation, Growl, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; $ = jQuery; Animation = (function() { function Animation() {} Animation.transitions = { "webkitTransition": "webkitTransitionEnd", "mozTransition": "mozTransitionEnd", "oTransition": "oTransitionEnd", "transition": "transitionend" }; Animation.transition = function($el) { var el, result, type, _ref; el = $el[0]; _ref = this.transitions; for (type in _ref) { result = _ref[type]; if (el.style[type] != null) { return result; } } }; return Animation; })(); Growl = (function() { Growl.settings = { namespace: 'growl', duration: 3200, close: "×", location: "default", style: "default", size: "medium" }; Growl.growl = function(settings) { if (settings == null) { settings = {}; } this.initialize(); return new Growl(settings); }; Growl.initialize = function() { return $("body:not(:has(#growls))").append('
'); }; function Growl(settings) { if (settings == null) { settings = {}; } this.html = __bind(this.html, this); this.$growl = __bind(this.$growl, this); this.$growls = __bind(this.$growls, this); this.animate = __bind(this.animate, this); this.remove = __bind(this.remove, this); this.dismiss = __bind(this.dismiss, this); this.present = __bind(this.present, this); this.close = __bind(this.close, this); this.cycle = __bind(this.cycle, this); this.unbind = __bind(this.unbind, this); this.bind = __bind(this.bind, this); this.render = __bind(this.render, this); this.settings = $.extend({}, Growl.settings, settings); this.$growls().attr('class', this.settings.location); this.render(); } Growl.prototype.render = function() { var $growl; $growl = this.$growl(); this.$growls().append($growl); this.cycle($growl); }; Growl.prototype.bind = function($growl) { if ($growl == null) { $growl = this.$growl(); } return $growl.find("." + this.settings.namespace + "-close").on("click", this.close); }; Growl.prototype.unbind = function($growl) { if ($growl == null) { $growl = this.$growl(); } return $growl.find("." + (this.settings.namespace - close)).off("click", this.close); }; Growl.prototype.cycle = function($growl) { if ($growl == null) { $growl = this.$growl(); } return $growl.queue(this.present).delay(this.settings.duration).queue(this.dismiss).queue(this.remove); }; Growl.prototype.close = function(event) { var $growl; event.preventDefault(); event.stopPropagation(); $growl = this.$growl(); return $growl.stop().queue(this.dismiss).queue(this.remove); }; Growl.prototype.present = function(callback) { var $growl; $growl = this.$growl(); this.bind($growl); return this.animate($growl, "" + this.settings.namespace + "-incoming", 'out', callback); }; Growl.prototype.dismiss = function(callback) { var $growl; $growl = this.$growl(); this.unbind($growl); return this.animate($growl, "" + this.settings.namespace + "-outgoing", 'in', callback); }; Growl.prototype.remove = function(callback) { this.$growl().remove(); return callback(); }; Growl.prototype.animate = function($element, name, direction, callback) { var transition; if (direction == null) { direction = 'in'; } transition = Animation.transition($element); $element[direction === 'in' ? 'removeClass' : 'addClass'](name); $element.offset().position; $element[direction === 'in' ? 'addClass' : 'removeClass'](name); if (callback == null) { return; } if (transition != null) { $element.one(transition, callback); } else { callback(); } }; Growl.prototype.$growls = function() { return this.$_growls != null ? this.$_growls : this.$_growls = $('#growls'); }; Growl.prototype.$growl = function() { return this.$_growl != null ? this.$_growl : this.$_growl = $(this.html()); }; Growl.prototype.html = function() { return "