UNPKG

vue-event-manager

Version:
7 lines (6 loc) 3.45 kB
/*! * vue-event-manager v2.1.3 * https://github.com/pagekit/vue-event-manager * Released under the MIT License. */ !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).VueEventManager=t()}(this,function(){"use strict";var i={},u=Object.assign||function(e){for(var n=arguments.length,t=new Array(1<n?n-1:0),r=1;r<n;r++)t[r-1]=arguments[r];return t.forEach(function(t){Object.keys(t||{}).forEach(function(n){return e[n]=t[n]})}),e},s=Array.isArray;function f(n){return null!==n&&"object"==typeof n}function c(n){return void 0===n}function t(t,e){Object.keys(t||{}).forEach(function(n){return e.call(null,t[n],n)})}function a(n){if(null==this)throw new TypeError('"this" is null or not defined');if("function"!=typeof n)throw new TypeError("predicate must be a function");for(var t=Object(this),e=t.length>>>0,r=arguments[1],o=0;o<e;){var i=t[o];if(n.call(r,i,o,t))return o;o++}return-1}var n=function(){function n(){this.log=null,this.listeners={}}var t=n.prototype;return t.on=function(n,t,e){var r=this;void 0===e&&(e=0);var o,i=(void 0===(o=this.listeners[n])&&(o=[]),o.findIndex||(o.findIndex=a),o),u=i.findIndex(function(n){return n.priority<e});return~u?i.splice(u,0,{callback:t,priority:e}):i.push({callback:t,priority:e}),this.listeners[n]=i,function(){return r.off(n,t)}},t.off=function(n,t){t||delete this.listeners[n];var e=this.listeners[n];if(e&&t){var r=e.findIndex(function(n){return n.callback===t});~r&&e.splice(r,1)}},t.trigger=function(n,t,o){void 0===t&&(t=[]),void 0===o&&(o=!1);function i(n){return Promise.reject(n)}function e(n){return c(n)?u.result:n}var u=new l(n,t);this.log&&this.log.call(this,u);var r=(this.listeners[u.name]||[]).concat().reduce(function(n,t){function e(n){return c(n)||(u.result=n),!1===n&&u.stopPropagation(),u.isPropagationStopped()?u.result:r.apply(r,[u].concat(u.params))}var r=t.callback;return o?n.then(e,i):e(n)},o?Promise.resolve():void 0);return o?r.then(e,i):e(r)},n}(),l=function(){function n(n,t){f(n)||(n={name:n}),s(t)||(t=[t]),u(this,n,{params:t,result:void 0})}var t=n.prototype;return t.stopPropagation=function(){this.stop=!0},t.isPropagationStopped=function(){return!0===this.stop},n}(),p=new n,e={version:"2.1.3",install:function(n,t){var e,r,o;void 0===t&&(t={}),this.installed||(e=n.config,i=e,r=this.version,void 0===o&&(o="#41B883"),"undefined"!=typeof console&&i.devtools&&console.log("%c vue-event-manager %c "+r+" ","color: #fff; background: #35495E; padding: 1px; border-radius: 3px 0 0 3px;","color: #fff; background: "+o+"; padding: 1px; border-radius: 0 3px 3px 0;"),n.prototype.$events=n.events=u(p,t),n.prototype.$trigger=function(n,t,e){return void 0===t&&(t=[]),void 0===e&&(e=!1),f(n)||(n={name:n,origin:this}),p.trigger(n,t,e)},n.config.optionMergeStrategies.events=d,n.mixin({beforeCreate:v}))},EventManager:n};function d(n,t){if(!t)return n;if(!n)return t;var e=u({},n);for(var r in t){var o=e[r],i=t[r];o&&!s(o)&&(o=[o]),e[r]=o?o.concat(i):s(i)?i:[i]}return e}function v(){var i=this,u=[],n=this.$options.events;n&&(t(n,function(n,o){t(s(n)?n:[n],function(n){var t,e,r=0;f(n)&&(r=n.priority,n=n.handler),u.push(i.$events.on(o,(e=i,"string"!=typeof(t=n)?t.bind(e):function(){return e[t].apply(e,arguments)}),r))})}),this.$on("hook:beforeDestroy",function(){return u.forEach(function(n){return n()})}))}return"undefined"!=typeof window&&window.Vue&&window.Vue.use(e),e});