@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 6.67 kB
JavaScript
;exports.__esModule=true;exports.triggerEvent=exports.setRootSender=exports.removeListener=exports.raiseWarning=exports.raiseEventGroup=exports.raiseError=exports.getListeners=exports.disposeEvents=exports.addListener=void 0;var UNDEF,conditionChecks={},rootSender={},managedFnCall=function managedFnCall(item,scope,event,args){try{item[0].call(scope,event,args||{})}catch(e){setTimeout((function(){throw e}),0)}},slotLoader=function slotLoader(slot,event,args){var i=0,scope;if(!(slot instanceof Array)||event.cancelled){return}for(;i<slot.length;i+=1){if(slot[i].removed===true){slot.splice(i,1);i-=1;continue}if(slot[i][1]===event.sender||slot[i][1]===UNDEF){scope=slot[i][1]===event.sender?event.sender:rootSender;managedFnCall(slot[i],scope,event,args);if(event.detached===true){slot.splice(i,1);i-=1;event.detached=false}}if(event.cancelled===true){break}}},unpropagator=function unpropagator(){this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call&&this.originalEvent.stopPropagation()},unImdPropagator=function unImdPropagator(){this.cancelled=true;if(this.originalEvent&&this.originalEvent.stopImmediatePropagation&&this.originalEvent.stopImmediatePropagation.call){this.originalEvent.stopImmediatePropagation()}else if(this.originalEvent&&this.originalEvent.stopPropagation&&this.originalEvent.stopPropagation.call){this.originalEvent.stopPropagation()}},detacher=function detacher(){return(this.detached=true)===false},undefaulter=function undefaulter(){this.defaultPrevented=true;this.originalEvent&&this.originalEvent.preventDefault&&this.originalEvent.preventDefault.call&&this.originalEvent.preventDefault()},isDuplicate=function isDuplicate(slot,listener,bind){var i,l=slot.length;for(i=0;i<l;i+=1){if(slot[i][0]===listener&&slot[i][1]===bind&&!slot[i].removed){return true}}},listeners={},lastEventId=0,_addListener=exports.addListener=function addListener(_type,listener,bind,options){var recurseReturn,i,slot,type=_type;if(type instanceof Array){recurseReturn=[];for(i=0;i<type.length;i+=1){recurseReturn.push(_addListener(type[i],listener,bind))}return recurseReturn}if(typeof type!=="string"){raiseError(bind,"03091549","param","::addListener",new Error("Unspecified Event Type"));return}if(typeof listener!=="function"){raiseError(bind,"03091550","param","::addListener",new Error("Invalid Event Listener"));return}type=type.toLowerCase();if(bind){if(!bind._evtListeners){bind._evtListeners={}}if(!(bind._evtListeners[type]instanceof Array)){bind._evtListeners[type]=[]}slot=bind._evtListeners[type]}else{if(!(listeners[type]instanceof Array)){listeners[type]=[]}slot=listeners[type]}if(isDuplicate(slot,listener,bind)){return false}options&&options.priority?slot.unshift([listener,bind]):slot.push([listener,bind]);return listener},_removeListener=exports.removeListener=function removeListener(type,listener,bind){var slot,i;if(typeof listener!=="function"){raiseError(bind,"03091560","param","::removeListener",new Error("Invalid Event Listener"));return}if(type instanceof Array){for(i=0;i<type.length;i+=1){_removeListener(type[i],listener,bind)}return}slot=getListeners(type,bind);if(!(slot instanceof Array&&slot.length)){return}for(i=slot.length-1;i>=0;i-=1){if(slot[i][0]===listener&&slot[i][1]===bind){slot[i].removed=true}}},triggerEvent=exports.triggerEvent=function triggerEvent(_type,sender,args,originalEvent,defaultFn,cancelFn){if(!sender||!sender.disposed){var eventObject,primarySlot,secondarySlot,tertiarySlot,quaternarySlot,type=_type;type=type.toLowerCase();primarySlot=getListeners(type,sender);secondarySlot=getListeners("*",sender);tertiarySlot=listeners[type];quaternarySlot=listeners["*"];if(primarySlot&&primarySlot.length||secondarySlot&&secondarySlot.length||tertiarySlot&&tertiarySlot.length||quaternarySlot&&quaternarySlot.length){eventObject={type:type,eventType:type,eventId:lastEventId+=1,sender:sender||new Error("Orphan Event"),stopPropagation:unpropagator,stopImmediatePropagation:unImdPropagator,cancelled:false,preventDefault:undefaulter,defaultPrevented:false,originalEvent:originalEvent,detached:false,data:args,detachHandler:detacher};slotLoader(quaternarySlot,eventObject,args);slotLoader(tertiarySlot,eventObject,args);if(sender){slotLoader(getListeners("*",sender),eventObject,args);slotLoader(getListeners(type,sender),eventObject,args)}}if(eventObject&&eventObject.defaultPrevented){if(cancelFn&&typeof cancelFn==="function"){cancelFn.call(sender,eventObject,args||{})}}else if(defaultFn&&typeof defaultFn==="function"){defaultFn.call(sender,eventObject,args||{})}return true}},getListeners=exports.getListeners=function getListeners(_type,bind){var type=_type;if(typeof type!=="string"){raiseError(bind,"03091559","param","::removeListener",new Error("Unspecified Event Type"));return}type=type.toLowerCase();return bind?bind._evtListeners&&bind._evtListeners[type]:listeners[type]},disposeEvents=exports.disposeEvents=function disposeEvents(target){var type,evtListeners=target?target._evtListeners:listeners;for(type in evtListeners){evtListeners[type].length&&(evtListeners[type].length=0)}},errorNatures={type:"TypeException",range:"ValueRangeException",impl:"NotImplementedException",param:"ParameterException",run:"RuntimeException",comp:"DesignTimeError",undefined:"UnspecifiedException"},raiseEWEvent=function raiseEWEvent(sender,id,nature,source,err,level){var message="#"+id+" "+(sender?sender.id:"unknown-source")+source+" "+level+" >> ";if(err instanceof Error){err.name=errorNatures[nature];err.module="FusionCharts"+source;err.level=level;err.message=message+err.message;message=err.message;setTimeout((function(){throw err}),0)}else{message=message+err}triggerEvent(level,sender,{id:id,nature:errorNatures[nature],source:"FusionCharts"+source,message:message})},raiseError=exports.raiseError=function raiseError(sender,id,nature,source,message){raiseEWEvent(sender,id,nature,source,message,"Error")},raiseWarning=exports.raiseWarning=function raiseWarning(sender,id,nature,source,message){raiseEWEvent(sender,id,nature,source,message,"Warning")},raiseEventGroup=exports.raiseEventGroup=function raiseEventGroup(check,name,args,obj,eventScope,defaultFn,cancelledFn){var id=obj.id,hash=check+id;if(conditionChecks[hash]){clearTimeout(conditionChecks[hash]);delete conditionChecks[hash]}else{if(id&&hash){conditionChecks[hash]=setTimeout((function(){triggerEvent(name,obj,args,eventScope,defaultFn,cancelledFn);delete conditionChecks[hash]}),0)}else{triggerEvent(name,obj,args,eventScope,defaultFn,cancelledFn)}}},setRootSender=exports.setRootSender=function setRootSender(sender){if(sender===void 0){sender={}}rootSender=sender};