dissemination
Version:
Lightweight event/command library created to replace Backbone.Radio
2 lines (1 loc) • 2.14 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).dissemination=n()}(this,function(){"use strict";var e={on:function(e,n,t,i){var s=2<arguments.length&&void 0!==t?t:{},r=3<arguments.length&&void 0!==i&&i;this._listeners||(this._listeners={}),this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push({listener:n,options:s,once:!!r})},once:function(e,n,t){this.on(e,n,t,!0)},off:function(e,n){if(!this.listenersRegistered(e))throw new TypeError('Listeners for event "'.concat(e,'" are not registered.'));if(void 0!==n){var t=this._listeners[e].findIndex(function(e){return e.listener===n});if(-1===t)throw new TypeError('Specified listener for event "'.concat(e,'" is not registered.'));this._listeners[e].splice(t,1),0===this._listeners[e].length&&delete this._listeners[e]}else delete this._listeners[e]},fire:function(e,n){var t=1<arguments.length&&void 0!==n?n:{};if(this._listeners&&this._listeners[e])for(var i=this._listeners[e],s=0;s<i.length;s++){var r=i[s],o=r.listener,h=r.options,l=r.once;if(void 0!==l&&l&&(i.splice(s,1),s--),!1===o(t,h))break}},listenersRegistered:function(e){return this._listeners&&!!this._listeners[e]}},n={handle:function(e,n){if(this._handlers||(this._handlers={}),this._handlers[e])throw new TypeError('Another handler for command "'.concat(e,'" is already registered.'));this._handlers[e]=n},unhandle:function(e){if(!this.handlerRegistered(e))throw new TypeError('Handler for command "'.concat(e,'" is not registered.'));delete this._handlers[e]},request:function(e,n){if(!this.handlerRegistered(e))throw new TypeError('Handler for command "'.concat(e,'" is not registered.'));return this._handlers[e](n||{})},execute:function(e,n){this.request(e,n)},handlerRegistered:function(e){return this._handlers&&!!this._handlers[e]}};function t(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t)}Object.assign(t.prototype,e,n);var i={};function s(e){return i[e=e||"application"]||(i[e]=new t),i[e]}return s.Channel=t,s.EventMixin=e,s.CommandMixin=n,s});