UNPKG

vue-global-events

Version:
7 lines (6 loc) 1.11 kB
/** * vue-global-events v1.1.1 * (c) 2019 Damian Dulisz <damian.dulisz@gmail.com> * @license MIT */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueGlobalEvents=t()}(this,function(){"use strict";var n;var r=/^[~!&]*/,i=/\W+/,o={"!":"capture","~":"once","&":"passive"};function s(e){var t=e.match(r)[0];return(null==n?n=/msie|trident/.test(window.navigator.userAgent.toLowerCase()):n)?-1<t.indexOf("!"):t.split("").reduce(function(e,t){return e[o[t]]=!0,e},{})}return{name:"GlobalEvents",props:{target:{type:String,default:"document"},filter:{type:Function,default:function(e){return!0}}},render:function(e){return e()},mounted:function(){var r=this;this._listeners=Object.create(null),Object.keys(this.$listeners).forEach(function(t){var n=r.$listeners[t],e=function(e){r.filter(e,n,t)&&n(e)};window[r.target].addEventListener(t.replace(i,""),e,s(t)),r._listeners[t]=e})},beforeDestroy:function(){var e=this;for(var t in e._listeners)window[e.target].removeEventListener(t.replace(i,""),e._listeners[t],s(t))}}});