UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 4.5 kB
let UNDEF,conditionChecks={},rootSender={},managedFnCall=function(a,b,c,d){try{a[0].call(b,c,d||{})}catch(a){setTimeout(function(){throw a},0)}},slotLoader=function(a,b,c){var d,e=0;if(a instanceof Array&&!b.cancelled)for(;e<a.length;e+=1){if(!0===a[e].removed){a.splice(e,1),e-=1;continue}if((a[e][1]===b.sender||a[e][1]===UNDEF)&&(d=a[e][1]===b.sender?b.sender:rootSender,managedFnCall(a[e],d,b,c),!0===b.detached&&(a.splice(e,1),e-=1,b.detached=!1)),!0===b.cancelled)break}},unpropagator=function(){this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()},unImdPropagator=function(){this.cancelled=!0,this.originalEvent&&this.originalEvent.stopImmediatePropagation&&this.originalEvent.stopImmediatePropagation.call?this.originalEvent.stopImmediatePropagation():this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()},detacher=function(){return!1==(this.detached=!0)},undefaulter=function(){this.defaultPrevented=!0,this.originalEvent&&this.originalEvent.preventDefault&&this.originalEvent.preventDefault.call&&this.originalEvent.preventDefault()},isDuplicate=function(a,b,c){let d,e=a.length;for(d=0;d<e;d+=1)if(a[d][0]===b&&a[d][1]===c&&!a[d].removed)return!0},listeners={},lastEventId=0,addListener=function(a,b,c,d){var e,f,g;if(a instanceof Array){for(e=[],f=0;f<a.length;f+=1)e.push(addListener(a[f],b,c));return e}return'string'==typeof a?'function'==typeof b?(a=a.toLowerCase(),c?(!c._evtListeners&&(c._evtListeners={}),!(c._evtListeners[a]instanceof Array)&&(c._evtListeners[a]=[]),g=c._evtListeners[a]):(!(listeners[a]instanceof Array)&&(listeners[a]=[]),g=listeners[a]),!isDuplicate(g,b,c))&&(d&&d.priority?g.unshift([b,c]):g.push([b,c]),b):void raiseError(c,'03091550','param','::addListener',new Error('Invalid Event Listener')):void raiseError(c,'03091549','param','::addListener',new Error('Unspecified Event Type'))},removeListener=function(a,b,c){var d,e;if('function'!=typeof b)return void raiseError(c,'03091560','param','::removeListener',new Error('Invalid Event Listener'));if(a instanceof Array){for(e=0;e<a.length;e+=1)removeListener(a[e],b,c);return}if(d=getListeners(a,c),!!(d instanceof Array&&d.length))for(e=d.length-1;0<=e;e-=1)d[e][0]===b&&d[e][1]===c&&(d[e].removed=!0)},triggerEvent=function(a,b,c,d,e,f){if(!b||!b.disposed){var g,h,i,j,k;return a=a.toLowerCase(),h=getListeners(a,b),i=getListeners('*',b),j=listeners[a],k=listeners['*'],(h&&h.length||i&&i.length||j&&j.length||k&&k.length)&&(g={type:a,eventType:a,eventId:lastEventId+=1,sender:b||new Error('Orphan Event'),stopPropagation:unpropagator,stopImmediatePropagation:unImdPropagator,cancelled:!1,preventDefault:undefaulter,defaultPrevented:!1,originalEvent:d,detached:!1,data:c,detachHandler:detacher},slotLoader(k,g,c),slotLoader(j,g,c),b&&(slotLoader(getListeners('*',b),g,c),slotLoader(getListeners(a,b),g,c))),g&&g.defaultPrevented?f&&'function'==typeof f&&f.call(b,g,c||{}):e&&'function'==typeof e&&e.call(b,g,c||{}),!0}},getListeners=function(a,b){return'string'==typeof a?(a=a.toLowerCase(),b?b._evtListeners&&b._evtListeners[a]:listeners[a]):void raiseError(b,'03091559','param','::removeListener',new Error('Unspecified Event Type'))},disposeEvents=function(a){var b,c=a?a._evtListeners:listeners;for(b in c)c[b].length&&(c[b].length=0)},errorNatures={type:'TypeException',range:'ValueRangeException',impl:'NotImplementedException',param:'ParameterException',run:'RuntimeException',comp:'DesignTimeError',undefined:'UnspecifiedException'},raiseEWEvent=function(a,b,c,d,e,f){var g,h='#'+b+' '+(a?a.id:'unknown-source')+d+' '+f+' >> ';e instanceof Error?(e.name=errorNatures[c],e.module='FusionCharts'+d,e.level=f,e.message=h+e.message,h=e.message,setTimeout(function(){throw e},0)):h+=e,g={id:b,nature:errorNatures[c],source:'FusionCharts'+d,message:h},triggerEvent(f,a,g)},raiseError=function(a,b,c,d,e){raiseEWEvent(a,b,c,d,e,'Error')},raiseWarning=function(a,b,c,d,e){raiseEWEvent(a,b,c,d,e,'Warning')},raiseEventGroup=function(a,b,c,d,e,f,g){var h=d.id,i=a+h;conditionChecks[i]?(clearTimeout(conditionChecks[i]),delete conditionChecks[i]):h&&i?conditionChecks[i]=setTimeout(function(){triggerEvent(b,d,c,e,f,g),delete conditionChecks[i]},0):triggerEvent(b,d,c,e,f,g)},setRootSender=function(a={}){rootSender=a};export{addListener,removeListener,triggerEvent,getListeners,disposeEvents,raiseWarning,raiseError,raiseEventGroup,setRootSender};