UNPKG

yatem

Version:

Yet Another Tiny Event Emitter

1 lines 1.34 kB
!function(a,b){"function"==typeof define&&define.amd?define(b):"object"==typeof exports?module.exports=b:a.yatem=b}(this,function(a){function c(c,d,e){if(b(c)||(a[c]={onlyOnce:!1,handlers:[]}),a[c].onlyOnce||"function"!=typeof d)return!1;var f=a[c].handlers.push(d.bind(e))-1;return{name:c,handler:f}}function d(c){var d,e,f,g;return"string"==typeof c&&b(c)?(delete a[c],!0):c&&"object"==typeof c&&c.name&&b(c.name)&&(d=a[c.name].handlers,e=d[c.handler],"function"==typeof e)?(d[c.handler]=null,f=d.filter(function(a){return null!==a}),f.length||this.off(c.name),e):"boolean"==typeof c||c?!1:(g=this,Object.keys(a).forEach(function(a){g.off(a)}),!0)}function e(c,d,e){if(b(c)||(a[c]={onlyOnce:!0,handlers:[]}),!a[c].onlyOnce||"function"!=typeof d)return!1;var f=a[c].handlers.push(d.bind(e))-1;return{name:c,handler:f}}function f(){var d,e,g,h,i,j,c=Array.from(arguments);if(!c.length||null===c[0])return d=this,Object.keys(a).forEach(function(a){f.apply(d,[].concat(a,c.slice(1)))}),void 0;if(e=c[0],"string"==typeof e&&b(e)){for(g=a[e].handlers,h=0,i=g.length;i>h;h++)g[h]&&g[h].apply(null,c.slice(1));a[e].onlyOnce&&this.off(e)}"object"==typeof e&&e.name&&b(e.name)&&(j=a[e.name].handlers[e.handler],j&&j.apply(null,c.slice(1)),a[e.name].onlyOnce&&this.off(e))}var b=Object.hasOwnProperty.bind(a);return{on:c,off:d,once:e,emit:f}}({}));