UNPKG

js-pkg

Version:
11 lines (10 loc) 9.74 kB
/*! * filename: ej.touch.min.js * version : 15.3.0.33 * Copyright Syncfusion Inc. 2001 - 2017. All rights reserved. * Use of this code is subject to the terms of our license. * A copy of the current license can be obtained at any time by e-mailing * licensing@syncfusion.com. Any infringement will be prosecuted under * applicable laws. */ (function(n){typeof define=="function"&&define.amd?define(["jquery"],n):n()})(function(){(function(n,t){function k(){var n={},t=[],i={webkit:/(chrome)[ \/]([\w.]+)/i,safari:/(webkit)[ \/]([\w.]+)/i,msie:/(msie) ([\w.]+)/i,opera:/(opera)(?:.*version|)[ \/]([\w.]+)/i,mozilla:/(mozilla)(?:.*? rv:([\w.]+)|)/i};for(var r in i)if(i.hasOwnProperty(r)&&(t=navigator.userAgent.match(i[r]),t)){n.name=t[1].toLowerCase();n.version=t[2];!navigator.userAgent.match(/Trident\/7\./)||(n.name="msie");break}return n.isMSPointerEnabled=n.name=="msie"&&n.version>9&&window.navigator.msPointerEnabled,n.pointerEnabled=window.navigator.pointerEnabled,n}function c(t,i,r){var u=r.type;r.type=i;n.event.dispatch.call(t,r);r.type=u}function it(n,t){if(t)for(prop in t)prop in n||(n[prop]=t[prop])}function e(n){return n.originalEvent.touches?n.originalEvent.touches[0]:i?n.originalEvent:n}function d(n){var r=i?n.originalEvent.pointerType:n.originalEvent.touches?"touch":"mouse",u=i&&h==t?r==4?"mouse":"touch":r;return n.pointerType=u,n.type!="mousedown"&&n.type!="mouseup"&&it(n,n.originalEvent),u=="touch"&&(n.button=t),n}function o(t,i,r){var o,s,h,u={},e,f;return r&&(f=r.originalEvent.touches?[r.originalEvent.touches[0],t.originalEvent.changedTouches[0]]:[r.originalEvent,t.originalEvent],i._isSwipe||i._isdrag?(o=n.event.special.pinch._getdistance(f[0],f[1]),s=i.time,e={pageX:i.stopPoint.pageX,pageY:i.stopPoint.pageY}):i._isPinch&&(o=n.event.special.pinch.distance(t),s=t.timeStamp-r.timeStamp,h=i._pinchDistance),i._isDelta&&(u._dTime=t.timeStamp-r.timeStamp,u._x=f[1].pageX-f[0].pageX,u._y=f[1].pageY-f[0].pageY)),{options:t,delta:{time:u._dTime||null,X:u._x||null,Y:u._y||null},distance:o,scale:i._isPinch?h:null,time:s,velocity:{XY:o/u._dTime||null,X:u._x/u._dTime||null,Y:u._y/u._dTime||null},currentPosition:{pageX:e?e.pageX:null,pageY:e?e.pageY:null}}}function s(){var n=new Date;return n.getTime()}function l(n){i&&n.css("-ms-touch-action","pinch-zoom").css("touch-action","pinch-zoom")}var y=n(document);n.each("touchstart touchmove touchend tap doubletap taphold swipe swipeleft swiperight pinch pinchin pinchout pinchstop scrollstart scrollstop".split(" "),function(t,i){n.fn[i]=function(n){return n?this.on(i,n):this.trigger(i)};n.attrFn&&(n.attrFn[i]=!0)});var i=k().isMSPointerEnabled,h=k().pointerEnabled,a="ontouchstart"in window,rt="scroll",p=typeof orientation=="undefined",g=navigator.userAgent.match(/iPhone|iPad|iPod/i),u=i?h?"pointerdown":"MSPointerDown":a?"touchstart":"mousedown",f=i?h?"pointerup":"MSPointerUp":g?"touchend":a?"touchend":"mouseup",r=i?h?"pointermove":"MSPointerMove":a?"touchmove":"mousemove",w=i?h?"pointercancel":"MSPointerCancel":a?"touchcancel":"mouseleave",ut=i||!p?u:g?"touchstart":"touchstart mousedown",v=i||!p?f:"touchend mouseup",b=i||!p?r:"touchmove mousemove",nt=k(),tt=nt.name=="msie"&&nt.version=="9.0"?!0:!1;n.event.special.ejtouchmove={setup:function(){function s(){}function h(n){if(n.originalEvent&&!(n.which&&n.which!==1)){var f=n.target,u=n.originalEvent;i&&(t={x:u.x,y:u.y});o.on(r,l)}}function l(n){if(!(n.which&&n.which!==1)){var u=n.target,r=n.originalEvent;it(n,n.originalEvent);(!i||!t||Math.abs(t.x-r.x)>10||Math.abs(t.y-r.y)>10&&i)&&c(e,"ejtouchmove",n)}}var e=this,o=n(e),t;o.on(u,h);y.on(f,s);t={}}};n.event.special.swipeupdown={setup:function(){var s=this,i=n(s);l(i);i.on(u,function(u){function l(n){if(n.preventDefault(),s){var t=e(n);h={time:(new Date).getTime(),coords:[t.pageX,t.pageY]};Math.abs(s.coords[1]-h.coords[1])>10&&n.preventDefault()}}if(u.originalEvent){var a=u,c=e(u),s={time:(new Date).getTime(),coords:[c.pageX,c.pageY],origin:n(u.target)},h;i.on(r,l).one(f,function(u){if(i.off(r,l),s&&h&&h.time-s.time<1e3&&Math.abs(s.coords[1]-h.coords[1])>30&&Math.abs(s.coords[0]-h.coords[0])<75){var e={time:h.time-s.time,_isSwipe:!0,_isDelta:!0,stopPoint:h},f=o(u,e,a);s.origin.trigger(n.extend(!0,{type:"swipeupdown"},f)).trigger(n.extend(!0,{type:s.coords[1]>h.coords[1]?"swipeup":"swipedown"},f))}s=h=t})}})}};n.event.special.scrollstart={isEnabled:!0,setup:function(){function u(n,r){t=r;c(i,t?"scrollstart":"scrollstop",n)}var i=this,f=n(i),t,r;f.on(rt,function(i){n.event.special.scrollstart.isEnabled&&(t||u(i,!0),clearTimeout(r),r=setTimeout(function(){u(i,!1)},250))})}};n.event.special.tap={doubleTapThreshold:500,tapholdThreshold:650,canDoubleTap:function(t){return s()-t.doubleTapStartTime<=n.event.special.tap.doubleTapThreshold},setup:function(){var u=this,i=n(u),t=i.data(),r;l(i);t.isDoubleTapWait=!1;t.stopProcess=!1;t.preTouchend=null;t.preTouchstart=null;i.on(ut,function(f){function e(){clearTimeout(l);i.off(v,o);tt&&y.off(v,o);i.off(w,e);i.off(b,a);i.off("dragstart",it)}function a(n){var t=10,r=n.originalEvent.changedTouches?n.originalEvent.changedTouches[0]:n.originalEvent,u=f.originalEvent.changedTouches?f.originalEvent.changedTouches[0]:f.originalEvent;r.pageX-u.pageX<t&&r.pageX-u.pageX>-t&&r.pageY-u.pageY<t&&r.pageY-u.pageY>-t||(n.type=="mousemove"||n.type=="pointermove"&&n.originalEvent.pointerType=="mouse"||n.type=="MSPointerMove"&&n.originalEvent.pointerType==4?(clearTimeout(l),i.off(w,e),i.off(b,a)):e())}function o(i){var o,h;i.type=="touchend"&&(t.preTouchend=s());e();r!=i.target&&(i.type=="mouseup"||f.type=="pointerup"||"MSPointerUp")&&(o=i.target,jQuery.contains(r,o)?nt(i,r):jQuery.contains(o,r)||(h=n(r).parents().has(n(o)).first()[0],ej.isNullOrUndefined(h)||nt(i,h)));g===i.currentTarget&&(c(u,"tap",n.extend(d(i),{time:s()-t.startTime})),t.isDoubleTapWait&&n.event.special.tap.canDoubleTap(t)?(t.isDoubleTapWait=!1,c(u,"doubletap",n.extend(d(i),{time:s()-t.doubleTapStartTime}))):(t.isDoubleTapWait&&(t.isDoubleTapWait=!1,t.doubleTapStartTime=t.startTime),n.event.special.tap.canDoubleTap(t)&&(t.isDoubleTapWait=!0)))}function nt(n,t){n.target=t;n.toElement=t}function it(){e()}var g,h,l,p,k;if(f.originalEvent)if((f.type=="mousedown"||f.type=="pointerdown"||"MSPointerDown")&&(r=f.target),t=i.data(),t.startTime=s(),t.isDoubleTapWait||(t.doubleTapStartTime=t.startTime),f.type=="touchstart"&&(t.preTouchstart=t.startTime),t.stopProcess=f.type=="mousedown"&&(t.startTime-t.preTouchend<300||t.startTime-t.preTouchstart<30)?!0:!1,g=f.currentTarget,h=f.originalEvent,f.which&&f.which!==1||t.stopProcess)t.stopProcess&&(t.stopProcess=!1);else{i.on(v,o);if(tt)y.on(v,o);i.on(w,e);i.on(b,a);i.on("dragstart",it);p={};for(k in h)p[k]=h[k];l=setTimeout(function(){t.isDoubleTapWait&&(t.isDoubleTapWait=!1);c(u,"taphold",n.extend(d(f),{options:p,time:s()-t.startTime}))},n.event.special.tap.tapholdThreshold)}})}};n.event.special.swipe={scrollSupression:10,duration:1e3,horizontalDistance:30,verticalDistance:75,pointers:window.navigator.msPointerEnabled,startPoint:function(t){var i=e(t);return{time:(new Date).getTime(),coords:[i.pageX,i.pageY],origin:n(t.target)}},stopPoint:function(n){var t=e(n);return{time:(new Date).getTime(),coords:[t.pageX,t.pageY]}},handleSwipe:function(t,i,r,u){if(i.time-t.time<n.event.special.swipe.duration&&Math.abs(t.coords[0]-i.coords[0])>n.event.special.swipe.horizontalDistance&&Math.abs(t.coords[1]-i.coords[1])<n.event.special.swipe.verticalDistance){var e={time:i.time-t.time,_isSwipe:!0,_isDelta:!0,stopPoint:i},f=o(r,e,u);t.origin.trigger(n.extend(!0,{type:"swipe"},f)).trigger(n.extend(!0,{type:t.coords[0]>i.coords[0]?"swipeleft":"swiperight"},f))}},setup:function(){var e=this,i=n(e);l(i);i.on(u,function(u){function s(t){e&&(o=n.event.special.swipe.stopPoint(t),Math.abs(e.coords[0]-o.coords[0])>n.event.special.swipe.scrollSupression&&t.preventDefault())}if(u.originalEvent){var e=n.event.special.swipe.startPoint(u),o,h=u;n(u.target).data("_dataTouchStart",{event:u,_now:(new Date).getTime()});i.on(r,s).one(f,function(u){i.off(r,s);e&&o&&n.event.special.swipe.handleSwipe(e,o,u,h);e=o=t})}})}};n.event.special.pinch={distance:function(t){return t.originalEvent.touches.length<2?null:n.event.special.pinch._getdistance(t.originalEvent.touches[0],t.originalEvent.touches[1])},_getdistance:function(n,t){return Math.sqrt((n.pageX-t.pageX)*(n.pageX-t.pageX)+(n.pageY-t.pageY)*(n.pageY-t.pageY))},setup:function(){var e=this,i=n(e);l(i);i.on(u,function(u){var h;if(u.originalEvent&&(h=u,u.originalEvent.touches&&u.originalEvent.touches.length>=2)){var s=n.event.special.pinch.distance(u),e,v=5,c=s,l,y=o(u,{_isPinch:!0,_pinchDistance:c},h);n(u.target).trigger(n.extend(!0,{type:"pinch"},y));function a(t){l=t;e=n.event.special.pinch.distance(t)||null;s&&e&&Math.abs(s-e)>v&&(n(t.target).trigger(n.extend(!0,{type:s>e?"pinchin":"pinchout"},o(t,{_isPinch:!0,_pinchDistance:c},h))),s=e)}i.on(r,a).one(f,function(){i.off(r,a);n(u.target).trigger(n.extend(!0,{type:"pinchstop"},o(l,{_isPinch:!0,_pinchDistance:e},h)));s=e=t})}})}};n.event.special.touchdrag={setup:function(){var s=this,i=n(s);l(i);i.on(u,function(u){function c(t){h&&(s=e(t),n.event.special.pinch._getdistance(h,s)>5&&n(t.target).trigger(n.extend(!0,{type:"touchdrag"},o(t,{_isdrag:!0,stopPoint:s,_isDelta:!0},l))))}if(u.originalEvent){var h=e(u),s,l=u;n(u.target).data("_dataTouchStart",{event:u,_now:(new Date).getTime()});i.on(r,c).one(f,function(){i.off(r,c);h=s=t})}})}};n.each({scrollstop:"scrollstart",doubletap:"tap",taphold:"tap",swipeleft:"swipe",swiperight:"swipe",swipedown:"swipeupdown",swipeup:"swipeupdown",pinchin:"pinch",pinchout:"pinch",pinchstop:"pinch"},function(t,i){n.event.special[t]={setup:function(){n(this).on(i,n.noop)}}})})(jQuery)});