UNPKG

electron-kit

Version:

Utility kits for middle-scale electron app

115 lines (92 loc) 3.36 kB
// Generated by CoffeeScript 1.10.0 (function() { var CompositeDisposable, Disposable, Emitter, EventEmitter3, ref, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; ref = require("event-kit"), CompositeDisposable = ref.CompositeDisposable, Disposable = ref.Disposable; EventEmitter3 = require("eventemitter3"); module.exports = Emitter = (function(superClass) { extend(Emitter, superClass); Emitter.prototype.eventObservers = null; Emitter.prototype.disposed = false; function Emitter() { Emitter.__super__.constructor.apply(this, arguments); this.eventObservers = new CompositeDisposable; } Emitter.prototype.dispose = function() { this.eventObservers.dispose(); this._events = null; this.eventObservers = null; return this.disposed = true; }; /** * @param {String} event listening event name * @param {Function} fn listener * @param {Object?} context binding context to listener */ Emitter.prototype.on = function(event, fn, context) { var disposer; if (context == null) { context = this; } if (this.disposed) { throw new Error("Emitter has been disposed"); } Emitter.__super__.on.apply(this, arguments); disposer = new Disposable((function(_this) { return function() { return _this.off(event, fn, context, false); }; })(this)); this.eventObservers.add(disposer); return disposer; }; /** * @param {String} event listening event name * @param {Function} fn listener * @param {Object?} context binding context to listener */ Emitter.prototype.once = function(event, fn, context) { var disposer; if (context == null) { context = this; } if (this.disposed) { throw new Error("Emitter has been disposed"); } Emitter.__super__.once.apply(this, arguments); disposer = new Disposable((function(_this) { return function() { return _this.off(event, fn, context, true); }; })(this)); this.eventObservers.add(disposer); return disposer; }; /** * @param {String} event unlistening event name * @param {Function?} fn unlistening listener * @param {Object?} context binded context to listener * @param {Boolean?} once unlistening once listener */ Emitter.prototype.off = function(event, fn, context, once) { if (this.disposed) { return; } if (fn == null) { this.removeAllListeners(); return; } Emitter.__super__.off.apply(this, arguments); }; Emitter.prototype.removeAllListeners = function(event) { if (this.disposed) { return; } return Emitter.__super__.removeAllListeners.apply(this, arguments); }; Emitter.prototype.addListener = Emitter.prototype.on; Emitter.prototype.removeListener = Emitter.prototype.off; return Emitter; })(EventEmitter3); }).call(this);