@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 7.84 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _raphael=_interopRequireDefault(require("../_internal/vendors/redraphael/source/raphael.lib"));var SPACE=" ",START="start",END="end",ON="on",win=window,doc=win.document,hasTouch="ontouchstart"in win,BE={click:"click",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",mousedown:"mousedown",mouseup:"mouseup",mousemove:"mousemove",mouseout:"mouseout",mouseover:"mouseover",keydown:"keydown"},gestures=function(){var retObj={},gesture;retObj.pointerdrag={start:[BE.mousedown],end:[BE.mouseup],onStart:[BE.mousemove],postHandlers:{},preHandlers:{}};retObj.pointerhover={start:[BE.mouseover],end:[BE.mouseout]};retObj.click={start:[BE.click]};retObj.escape={start:[BE.keydown],preHandlers:{start:function _start(_event){var event=_event||win.event;if(event.keyCode&&event.keyCode===27){return true}return false}}};if(hasTouch){gesture=retObj.pointerdrag;gesture.start.push(BE.touchstart);gesture.end.push(BE.touchend);gesture.onStart.push(BE.touchmove);gesture.postHandlers.onStart=function(event){if(event.preventDefault){event.preventDefault()}else{event.returnValue=false}}}return retObj}(),gDefs;function defineGestures(){return(0,_raphael.default)({},gestures)}gDefs=defineGestures();function DOMEventFx(){var eventHandlerMap={},gestureHandlerMap={},addHandler=doc.addEventListener?function _addDomEventListener(elem,event,handlerFn){elem.addEventListener(event,handlerFn,false)}:function _attachDomEventListener(elem,event,handlerFn){elem.attachEvent("on"+event,handlerFn)},removeHandler=doc.removeEventListener?function _removeDomEventListener(elem,event,handlerFn){elem.removeEventListener(event,handlerFn,false)}:function _detachDomEventListener(elem,event,handlerFn){elem.detachEvent("on"+event,handlerFn)},addEventHandler=function addEventHandler(elem,event,handlerObj,_attachTo){var unlistener,attachTo=_attachTo||"closure";addHandler(elem,event,handlerObj[attachTo]);unlistener=function unlistener(){removeHandler(elem,event,handlerObj[attachTo])};return unlistener},addGestureHandler=function addGestureHandler(elem,gesture,handlerObj){var unlisteners=[],eventArr,each,i,def;def=gDefs[gesture];handlerObj.start=function(_event){var onStartArr=def.onStart,endArr=def.end,startUn=[],endUn=[],ii=onStartArr&&onStartArr.length||0,event=_event||win.event;while(ii--){startUn.push(addEventHandler(elem,onStartArr[ii],handlerObj,"onStart"))}ii=endArr&&endArr.length||0;while(ii--){endUn.push(addEventHandler(elem,endArr[ii],handlerObj,"end"))}handlerObj.startUn=handlerObj.startUn?handlerObj.startUn.concat(startUn):startUn;handlerObj.endUn=handlerObj.endUn?handlerObj.endUn.concat(endUn):endUn;handlerObj.state=START;handlerObj.closure(event)};handlerObj.onStart=function(_event){var event=_event||win.event;handlerObj.state=ON;if(handlerObj.gDef&&handlerObj.gDef.preHandlers&&typeof handlerObj.gDef.preHandlers.onStart==="function"){handlerObj.gDef.preHandlers.onStart(event)}handlerObj.closure(event);if(handlerObj.gDef&&handlerObj.gDef.postHandlers&&typeof handlerObj.gDef.postHandlers.onStart==="function"){handlerObj.gDef.postHandlers.onStart(event)}};handlerObj.end=function(_event){var startUn=handlerObj.startUn,endUn=handlerObj.endUn,ii=startUn&&startUn.length||0,event=_event||win.event;while(ii--){startUn[ii]()}delete handlerObj.startUn;handlerObj.startUn=[];ii=endUn&&endUn.length||0;while(ii--){endUn[ii]()}delete handlerObj.endUn;handlerObj.endUn=[];handlerObj.state=END;handlerObj.closure(event)};if(def){eventArr=def.start;i=eventArr.length;while(i--){each=eventArr[i];if(each){unlisteners.push(addEventHandler(elem,each,handlerObj,"start"))}}}return unlisteners},removeGestureHandler=function removeGestureHandler(elem,gesture,handlerObj){var eventArr,each,i,def;def=gDefs[gesture];if(def){eventArr=def.start;i=eventArr.length;while(i--){each=eventArr[i];if(each){removeHandler(elem,each,handlerObj.start)}}}},getHandlerClosure=function _getHandlerClosure(handlerObj){return function(_event){var context=handlerObj.context||handlerObj.elem,event=_event.originalEvent||_event;event=event||win.event;handlerObj.handler.call(context,{data:handlerObj.data,type:handlerObj.type,state:handlerObj.state,isGesture:handlerObj.isGesture,target:event.target||event.srcElement,originalEvent:event})}};return{listen:function listen(elem,gestureNames,handlers,data,context){var dem=this,gestureArr=typeof gestureNames==="string"?gestureNames.split(SPACE):gestureNames,i=gestureArr.length,unlisteners=[],addToUnlistener=function addToUnlistener(el,type,handler){unlisteners.push((function(){dem.unlisten(el,type,handler)}))},handlerMap,gesture,handlerObj,isGesture,handler;if(!elem.ownerDocument||elem.ownerDocument!==doc){while(i--){gesture=gestureArr[i];handler=typeof handlers==="function"?handlers:handlers[i];handlerObj={handler:handler,elem:elem,type:gesture,isGesture:isGesture,data:data,context:context,start:[],end:[],links:{prev:null,next:null}};handlerObj.closure=getHandlerClosure(handlerObj);handlerMap=eventHandlerMap[gesture];if(!handlerMap){handlerMap=eventHandlerMap[gesture]=[]}handlerMap.push(handlerObj);addEventHandler(elem,gesture,handlerObj);addToUnlistener(elem,gesture,handler)}}else{while(i--){gesture=gestureArr[i];isGesture=Boolean(gDefs[gesture]);handler=typeof handlers==="function"?handlers:handlers[i];handlerObj={handler:handler,elem:elem,type:gesture,isGesture:isGesture,gDef:isGesture?gDefs[gesture]:null,data:data,context:context,start:[],end:[],links:{prev:null,next:null}};handlerObj.closure=getHandlerClosure(handlerObj);if(isGesture){handlerMap=gestureHandlerMap[gesture];if(!handlerMap){handlerMap=gestureHandlerMap[gesture]=[]}handlerMap.push(handlerObj);addGestureHandler(elem,gesture,handlerObj)}else{handlerMap=eventHandlerMap[gesture];if(!handlerMap){handlerMap=eventHandlerMap[gesture]=[]}handlerMap.push(handlerObj);addEventHandler(elem,gesture,handlerObj)}addToUnlistener(elem,gesture,handler)}}return{unlisten:function unlisten(){var ii=unlisteners.length;while(ii--){unlisteners[ii]()}unlisteners.length=0;unlisteners=null}}},unlisten:function unlisten(elem,gesture,handler){var isGesture=Boolean(gDefs[gesture]),eventHandlers,retVal=false,i,hObj;if(!isGesture){eventHandlers=eventHandlerMap[gesture];i=eventHandlers&&eventHandlers.length||0;while(i--){hObj=eventHandlers[i];if(hObj.handler===handler&&hObj.elem===elem){removeHandler(elem,gesture,hObj.closure);eventHandlers.splice(i,1);retVal=true}}}else{eventHandlers=gestureHandlerMap[gesture];i=eventHandlers&&eventHandlers.length||0;while(i--){hObj=eventHandlers[i];if(hObj.handler===handler&&hObj.elem===elem){removeGestureHandler(elem,gesture,hObj);eventHandlers.splice(i,1);retVal=true}}}return retVal},fire:function fire(elem,event,eventArguments,defaultFunction){var eventHandlers,i,hObj,eventObj;if(!elem.ownerDocument||elem.ownerDocument!==doc){eventHandlers=eventHandlerMap[event];i=eventHandlers&&eventHandlers.length||0;while(i--){hObj=eventHandlers[i];if(hObj.elem===elem){hObj.closure(eventArguments)}}}else{if(doc.createEvent){eventObj=doc.createEvent("HTMLEvents");eventObj.initEvent(event,true,true);if(eventArguments){if(eventArguments.originalEvent){eventArguments.originalEvent=eventObj}}if(typeof elem[event]==="function"){elem[event]()}elem.dispatchEvent(eventObj);if(defaultFunction&&!eventObj.returnValue){defaultFunction(eventObj)}}else{eventObj=doc.createEventObject();eventObj.eventType=event;if(eventArguments){if(eventArguments.originalEvent){eventArguments.originalEvent=eventObj}else{(0,_raphael.default)(eventObj,eventArguments)}}if(typeof elem[event]==="function"){elem[event]()}elem.fireEvent("on"+event,eventObj);if(defaultFunction&&!eventObj.returnValue){defaultFunction(eventObj)}}}}}}var _default=exports.default=new DOMEventFx;
;