UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 4.18 kB
import extend2 from'../_internal/vendors/redraphael/source/raphael.lib';var gDefs,SPACE=' ',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 a,b={};return b.pointerdrag={start:[BE.mousedown],end:[BE.mouseup],onStart:[BE.mousemove],postHandlers:{},preHandlers:{}},b.pointerhover={start:[BE.mouseover],end:[BE.mouseout]},b.click={start:[BE.click]},b.escape={start:[BE.keydown],preHandlers:{start:function(a){return a=a||win.event,!!(a.keyCode&&27===a.keyCode)}}},hasTouch&&(a=b.pointerdrag,a.start.push(BE.touchstart),a.end.push(BE.touchend),a.onStart.push(BE.touchmove),a.postHandlers.onStart=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1}),b}();function defineGestures(){var a=extend2({},gestures);return a}gDefs=defineGestures();function DOMEventFx(){var a={},b={},c=doc.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent('on'+b,c)},d=doc.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent('on'+b,c)},e=function(a,b,e,f){var g;return f=f||'closure',c(a,b,e[f]),g=function(){d(a,b,e[f])},g},f=function(a,b,c){var d,f,g,h,j=[];if(h=gDefs[b],c.start=function(b){var d=h.onStart,f=h.end,g=[],j=[],k=d&&d.length||0;for(b=b||win.event;k--;)g.push(e(a,d[k],c,'onStart'));for(k=f&&f.length||0;k--;)j.push(e(a,f[k],c,'end'));c.startUn=c.startUn?c.startUn.concat(g):g,c.endUn=c.endUn?c.endUn.concat(j):j,c.state='start',c.closure(b)},c.onStart=function(a){a=a||win.event,c.state='on',c.gDef&&c.gDef.preHandlers&&'function'==typeof c.gDef.preHandlers.onStart&&c.gDef.preHandlers.onStart(a),c.closure(a),c.gDef&&c.gDef.postHandlers&&'function'==typeof c.gDef.postHandlers.onStart&&c.gDef.postHandlers.onStart(a)},c.end=function(a){var b=c.startUn,d=c.endUn,e=b&&b.length||0;for(a=a||win.event;e--;)b[e]();for(delete c.startUn,c.startUn=[],e=d&&d.length||0;e--;)d[e]();delete c.endUn,c.endUn=[],c.state='end',c.closure(a)},h)for(d=h.start,g=d.length;g--;)f=d[g],f&&j.push(e(a,f,c,'start'));return j},g=function(a,b,c){var e,f,g,h;if(h=gDefs[b],h)for(e=h.start,g=e.length;g--;)f=e[g],f&&d(a,f,c.start)},h=function(a){return function(b){var c,d=a.context||a.elem;b=b.originalEvent||b,c={data:a.data,type:a.type,state:a.state,isGesture:a.isGesture,target:b.target||b.srcElement,originalEvent:b},b=b||win.event,a.handler.call(d,c)}};return{listen:function(c,d,g,j,k){var l,m,n,o,p,q=this,r='string'==typeof d?d.split(SPACE):d,s=r.length,t=[],u=function(a,b,c){t.push(function(){q.unlisten(a,b,c)})};if(!c.ownerDocument||c.ownerDocument!==doc)for(;s--;)m=r[s],p='function'==typeof g?g:g[s],n={handler:p,elem:c,type:m,isGesture:o,data:j,context:k,start:[],end:[],links:{prev:null,next:null}},n.closure=h(n),l=a[m],l||(l=a[m]=[]),l.push(n),e(c,m,n),u(c,m,p);else for(;s--;)m=r[s],o=!!gDefs[m],p='function'==typeof g?g:g[s],n={handler:p,elem:c,type:m,isGesture:o,gDef:o?gDefs[m]:null,data:j,context:k,start:[],end:[],links:{prev:null,next:null}},n.closure=h(n),o?(l=b[m],!l&&(l=b[m]=[]),l.push(n),f(c,m,n)):(l=a[m],!l&&(l=a[m]=[]),l.push(n),e(c,m,n)),u(c,m,p);return{unlisten:function(){for(var a=t.length;a--;)t[a]();t.length=0,t=null}}},unlisten:function(c,e,f){var h,j,k,l=!!gDefs[e],m=!1;if(!l)for(h=a[e],j=h&&h.length||0;j--;)k=h[j],k.handler===f&&k.elem===c&&(d(c,e,k.closure),h.splice(j,1),m=!0);else for(h=b[e],j=h&&h.length||0;j--;)k=h[j],k.handler===f&&k.elem===c&&(g(c,e,k),h.splice(j,1),m=!0);return m},fire:function(b,c,d,e){var f,g,h,j;if(!b.ownerDocument||b.ownerDocument!==doc)for(f=a[c],g=f&&f.length||0;g--;)h=f[g],h.elem===b&&h.closure(d);else doc.createEvent?(j=doc.createEvent('HTMLEvents'),j.initEvent(c,!0,!0),d&&d.originalEvent&&(d.originalEvent=j),'function'==typeof b[c]&&b[c](),b.dispatchEvent(j),e&&!j.returnValue&&e(j)):(j=doc.createEventObject(),j.eventType=c,d&&(d.originalEvent?d.originalEvent=j:extend2(j,d)),'function'==typeof b[c]&&b[c](),b.fireEvent('on'+c,j),e&&!j.returnValue&&e(j))}}}export default new DOMEventFx;