mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-11-03 20:20:20 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			252 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Generated by CoffeeScript 2.1.0
 | 
						|
(function() {
 | 
						|
  /*
 | 
						|
  jQuery Growl
 | 
						|
  Copyright 2015 Kevin Sylvestre
 | 
						|
  1.3.3
 | 
						|
  */
 | 
						|
  "use strict";
 | 
						|
  var $, Animation, Growl;
 | 
						|
 | 
						|
  $ = jQuery;
 | 
						|
 | 
						|
  Animation = (function() {
 | 
						|
    class Animation {
 | 
						|
      static transition($el) {
 | 
						|
        var el, ref, result, type;
 | 
						|
        el = $el[0];
 | 
						|
        ref = this.transitions;
 | 
						|
        for (type in ref) {
 | 
						|
          result = ref[type];
 | 
						|
          if (el.style[type] != null) {
 | 
						|
            return result;
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
    };
 | 
						|
 | 
						|
    Animation.transitions = {
 | 
						|
      "webkitTransition": "webkitTransitionEnd",
 | 
						|
      "mozTransition": "mozTransitionEnd",
 | 
						|
      "oTransition": "oTransitionEnd",
 | 
						|
      "transition": "transitionend"
 | 
						|
    };
 | 
						|
 | 
						|
    return Animation;
 | 
						|
 | 
						|
  })();
 | 
						|
 | 
						|
  Growl = (function() {
 | 
						|
    class Growl {
 | 
						|
      static growl(settings = {}) {
 | 
						|
        return new Growl(settings);
 | 
						|
      }
 | 
						|
 | 
						|
      constructor(settings = {}) {
 | 
						|
        this.render = this.render.bind(this);
 | 
						|
        this.bind = this.bind.bind(this);
 | 
						|
        this.unbind = this.unbind.bind(this);
 | 
						|
        this.mouseEnter = this.mouseEnter.bind(this);
 | 
						|
        this.mouseLeave = this.mouseLeave.bind(this);
 | 
						|
        this.click = this.click.bind(this);
 | 
						|
        this.close = this.close.bind(this);
 | 
						|
        this.cycle = this.cycle.bind(this);
 | 
						|
        this.waitAndDismiss = this.waitAndDismiss.bind(this);
 | 
						|
        this.present = this.present.bind(this);
 | 
						|
        this.dismiss = this.dismiss.bind(this);
 | 
						|
        this.remove = this.remove.bind(this);
 | 
						|
        this.animate = this.animate.bind(this);
 | 
						|
        this.$growls = this.$growls.bind(this);
 | 
						|
        this.$growl = this.$growl.bind(this);
 | 
						|
        this.html = this.html.bind(this);
 | 
						|
        this.content = this.content.bind(this);
 | 
						|
        this.container = this.container.bind(this);
 | 
						|
        this.settings = $.extend({}, Growl.settings, settings);
 | 
						|
        this.initialize(this.settings.location);
 | 
						|
        this.render();
 | 
						|
      }
 | 
						|
 | 
						|
      initialize(location) {
 | 
						|
        var id;
 | 
						|
        id = 'growls-' + location;
 | 
						|
        return $('body:not(:has(#' + id + '))').append('<div id="' + id + '" />');
 | 
						|
      }
 | 
						|
 | 
						|
      render() {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        this.$growls(this.settings.location).append($growl);
 | 
						|
        if (this.settings.fixed) {
 | 
						|
          this.present();
 | 
						|
        } else {
 | 
						|
          this.cycle();
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      bind($growl = this.$growl()) {
 | 
						|
        $growl.on("click", this.click);
 | 
						|
        if (this.settings.delayOnHover) {
 | 
						|
          $growl.on("mouseenter", this.mouseEnter);
 | 
						|
          $growl.on("mouseleave", this.mouseLeave);
 | 
						|
        }
 | 
						|
        return $growl.on("contextmenu", this.close).find(`.${this.settings.namespace}-close`).on("click", this.close);
 | 
						|
      }
 | 
						|
 | 
						|
      unbind($growl = this.$growl()) {
 | 
						|
        $growl.off("click", this.click);
 | 
						|
        if (this.settings.delayOnHover) {
 | 
						|
          $growl.off("mouseenter", this.mouseEnter);
 | 
						|
          $growl.off("mouseleave", this.mouseLeave);
 | 
						|
        }
 | 
						|
        return $growl.off("contextmenu", this.close).find(`.${this.settings.namespace}-close`).off("click", this.close);
 | 
						|
      }
 | 
						|
 | 
						|
      mouseEnter(event) {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        return $growl.stop(true, true);
 | 
						|
      }
 | 
						|
 | 
						|
      mouseLeave(event) {
 | 
						|
        return this.waitAndDismiss();
 | 
						|
      }
 | 
						|
 | 
						|
      click(event) {
 | 
						|
        if (this.settings.url != null) {
 | 
						|
          event.preventDefault();
 | 
						|
          event.stopPropagation();
 | 
						|
          return window.open(this.settings.url);
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      close(event) {
 | 
						|
        var $growl;
 | 
						|
        event.preventDefault();
 | 
						|
        event.stopPropagation();
 | 
						|
        $growl = this.$growl();
 | 
						|
        return $growl.stop().queue(this.dismiss).queue(this.remove);
 | 
						|
      }
 | 
						|
 | 
						|
      cycle() {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        return $growl.queue(this.present).queue(this.waitAndDismiss());
 | 
						|
      }
 | 
						|
 | 
						|
      waitAndDismiss() {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        return $growl.delay(this.settings.duration).queue(this.dismiss).queue(this.remove);
 | 
						|
      }
 | 
						|
 | 
						|
      present(callback) {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        this.bind($growl);
 | 
						|
        return this.animate($growl, `${this.settings.namespace}-incoming`, 'out', callback);
 | 
						|
      }
 | 
						|
 | 
						|
      dismiss(callback) {
 | 
						|
        var $growl;
 | 
						|
        $growl = this.$growl();
 | 
						|
        this.unbind($growl);
 | 
						|
        return this.animate($growl, `${this.settings.namespace}-outgoing`, 'in', callback);
 | 
						|
      }
 | 
						|
 | 
						|
      remove(callback) {
 | 
						|
        this.$growl().remove();
 | 
						|
        return typeof callback === "function" ? callback() : void 0;
 | 
						|
      }
 | 
						|
 | 
						|
      animate($element, name, direction = 'in', callback) {
 | 
						|
        var transition;
 | 
						|
        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();
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      $growls(location) {
 | 
						|
        var base;
 | 
						|
        if (this.$_growls == null) {
 | 
						|
          this.$_growls = [];
 | 
						|
        }
 | 
						|
        return (base = this.$_growls)[location] != null ? base[location] : base[location] = $('#growls-' + location);
 | 
						|
      }
 | 
						|
 | 
						|
      $growl() {
 | 
						|
        return this.$_growl != null ? this.$_growl : this.$_growl = $(this.html());
 | 
						|
      }
 | 
						|
 | 
						|
      html() {
 | 
						|
        return this.container(this.content());
 | 
						|
      }
 | 
						|
 | 
						|
      content() {
 | 
						|
        return `<div class='${this.settings.namespace}-close'>${this.settings.close}</div>\n<div class='${this.settings.namespace}-title'>${this.settings.title}</div>\n<div class='${this.settings.namespace}-message'>${this.settings.message}</div>`;
 | 
						|
      }
 | 
						|
 | 
						|
      container(content) {
 | 
						|
        return `<div class='${this.settings.namespace} ${this.settings.namespace}-${this.settings.style} ${this.settings.namespace}-${this.settings.size}'>\n  ${content}\n</div>`;
 | 
						|
      }
 | 
						|
 | 
						|
    };
 | 
						|
 | 
						|
    Growl.settings = {
 | 
						|
      namespace: 'growl',
 | 
						|
      duration: 3200,
 | 
						|
      close: "×",
 | 
						|
      location: "default",
 | 
						|
      style: "default",
 | 
						|
      size: "medium",
 | 
						|
      delayOnHover: true
 | 
						|
    };
 | 
						|
 | 
						|
    return Growl;
 | 
						|
 | 
						|
  })();
 | 
						|
 | 
						|
  this.Growl = Growl;
 | 
						|
 | 
						|
  $.growl = function(options = {}) {
 | 
						|
    return Growl.growl(options);
 | 
						|
  };
 | 
						|
 | 
						|
  $.growl.error = function(options = {}) {
 | 
						|
    var settings;
 | 
						|
    settings = {
 | 
						|
      title: "Error!",
 | 
						|
      style: "error"
 | 
						|
    };
 | 
						|
    return $.growl($.extend(settings, options));
 | 
						|
  };
 | 
						|
 | 
						|
  $.growl.notice = function(options = {}) {
 | 
						|
    var settings;
 | 
						|
    settings = {
 | 
						|
      title: "Notice!",
 | 
						|
      style: "notice"
 | 
						|
    };
 | 
						|
    return $.growl($.extend(settings, options));
 | 
						|
  };
 | 
						|
 | 
						|
  $.growl.warning = function(options = {}) {
 | 
						|
    var settings;
 | 
						|
    settings = {
 | 
						|
      title: "Warning!",
 | 
						|
      style: "warning"
 | 
						|
    };
 | 
						|
    return $.growl($.extend(settings, options));
 | 
						|
  };
 | 
						|
 | 
						|
}).call(this);
 |