123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- // Generated by CoffeeScript 1.6.3
- var Emitter, array;
- array = require('./array');
- module.exports = Emitter = (function() {
- function Emitter() {
- this._listeners = {};
- this._listenersForAnyEvent = [];
- this._disabledEmitters = {};
- }
- Emitter.prototype.on = function(eventName, listener) {
- if (this._listeners[eventName] == null) {
- this._listeners[eventName] = [];
- }
- this._listeners[eventName].push(listener);
- return this;
- };
- Emitter.prototype.once = function(eventName, listener) {
- var cb, ran,
- _this = this;
- ran = false;
- cb = function() {
- if (ran) {
- return;
- }
- ran = true;
- listener();
- return setTimeout(function() {
- return _this.removeEvent(eventName, cb);
- }, 0);
- };
- this.on(eventName, cb);
- return this;
- };
- Emitter.prototype.onAnyEvent = function(listener) {
- this._listenersForAnyEvent.push(listener);
- return this;
- };
- Emitter.prototype.removeEvent = function(eventName, listener) {
- if (this._listeners[eventName] == null) {
- return this;
- }
- array.pluckOneItem(this._listeners[eventName], listener);
- return this;
- };
- Emitter.prototype.removeListeners = function(eventName) {
- if (this._listeners[eventName] == null) {
- return this;
- }
- this._listeners[eventName].length = 0;
- return this;
- };
- Emitter.prototype.removeAllListeners = function() {
- var listeners, name, _ref;
- _ref = this._listeners;
- for (name in _ref) {
- listeners = _ref[name];
- listeners.length = 0;
- }
- return this;
- };
- Emitter.prototype._emit = function(eventName, data) {
- var listener, _i, _j, _len, _len1, _ref, _ref1;
- _ref = this._listenersForAnyEvent;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- listener = _ref[_i];
- listener.call(this, data, eventName);
- }
- if (this._listeners[eventName] == null) {
- return;
- }
- _ref1 = this._listeners[eventName];
- for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
- listener = _ref1[_j];
- listener.call(this, data);
- }
- };
- Emitter.prototype._throttleEmitterMethod = function(fnName, time) {
- var lastCallArgs, originalFn, pend, pending, runIt, timer,
- _this = this;
- if (time == null) {
- time = 1000;
- }
- originalFn = this[fnName];
- if (typeof originalFn !== 'function') {
- throw Error("this class does not have a method called '" + fnName + "'");
- }
- lastCallArgs = null;
- pending = false;
- timer = null;
- this[fnName] = function() {
- lastCallArgs = arguments;
- return pend();
- };
- pend = function() {
- if (pending) {
- clearTimeout(timer);
- }
- timer = setTimeout(runIt, time);
- return pending = true;
- };
- return runIt = function() {
- pending = false;
- return originalFn.apply(_this, lastCallArgs);
- };
- };
- Emitter.prototype._disableEmitter = function(fnName) {
- if (this._disabledEmitters[fnName] != null) {
- throw Error("" + fnName + " is already a disabled emitter");
- }
- this._disabledEmitters[fnName] = this[fnName];
- return this[fnName] = function() {};
- };
- Emitter.prototype._enableEmitter = function(fnName) {
- var fn;
- fn = this._disabledEmitters[fnName];
- if (fn == null) {
- throw Error("" + fnName + " is not a disabled emitter");
- }
- this[fnName] = fn;
- return delete this._disabledEmitters[fnName];
- };
- return Emitter;
- })();
|