-
Notifications
You must be signed in to change notification settings - Fork 3
/
signal.min.js
1 lines (1 loc) · 1 KB
/
signal.min.js
1
"use strict";const Signal=function(){function e(){return e.instance||(this.events={},this.id=0,e.instance=this),e.instance}return e.prototype.on=function(e,n){if(!e)throw new ReferenceError("Event name is empty");if(!n||"function"!=typeof n)throw new ReferenceError("Event callback should be of type function");this.events[e]||(this.events[e]={});const t=n._signalId||(n._signalId=++this.id);this.events[e][t]=n},e.prototype.emit=function(e,n){if(!this.events[e])return;const t=this.events[e];Object.keys(t).forEach(function(e){t[e]&&t[e](n)})},e.prototype.remove=function(e,n,t){if(this.events&&!this.events[e])return;if(t)return void delete this.events[e];if(""===n.name)return void console.warn(`\n you are trying to remove an event handler for then event named ${e} \n but the function is annonymous. \n `);delete this.events[e][n._signalId]},e}();!function(e,n){const t=e.define;t&&t.amd?t([],n):"undefined"!=typeof module&&module.exports?module.exports=n():e.Signal=n()}(this,function(){return Signal});