UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines (2 loc) 7.39 kB
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min"],e):e()}((function(){!function(e,t){var i=window.kendo,n=i.support,o=i.Class,r=i.Observable,s=Date.now,a=e.extend,c=n.mobileOS,u=c&&c.android,l=800,h=n.browser.msie?5:0,p="press",d="hold",f="select",v="start",g="move",_="end",m="cancel",T="tap",y="doubleTap",E="release",k="gesturechange",D="gestureend",M="gesturetap",x={api:0,touch:0,mouse:9,pointer:9},w=!n.touch||n.mouseAndTouchPresent;function b(e,t){var i=e.x.location,n=e.y.location,o=t.x.location,r=t.y.location,s=i-o,a=n-r;return{center:{x:(i+o)/2,y:(n+r)/2},distance:Math.sqrt(s*s+a*a)}}function A(e){var t,i,o,r=[],s=e.originalEvent,a=e.currentTarget,c=0;if(e.api)r.push({id:2,event:e,target:e.target,currentTarget:e.target,location:e,type:"api"});else if(e.type.match(/touch/))for(t=(i=s?s.changedTouches:[]).length;c<t;c++)o=i[c],r.push({location:o,event:e,target:o.target,currentTarget:a,id:o.identifier,type:"touch"});else n.pointers||n.msPointers?r.push({location:s,event:e,target:e.target,currentTarget:a,id:s.pointerId,type:"pointer"}):r.push({id:1,event:e,target:e.target,currentTarget:a,location:e,type:"mouse"});return r}var C=o.extend({init:function(e,t){var i=this;i.axis=e,i._updateLocationData(t),i.startLocation=i.location,i.velocity=i.delta=0,i.timeStamp=s()},move:function(e){var t=this,i=e["page"+t.axis],n=s(),o=n-t.timeStamp||1;!i&&u||(t.delta=i-t.location,t._updateLocationData(e),t.initialDelta=i-t.startLocation,t.velocity=t.delta/o,t.timeStamp=n)},_updateLocationData:function(e){var t=this,i=t.axis;t.location=e["page"+i],t.client=e["client"+i],t.screen=e["screen"+i]}}),I=o.extend({init:function(e,t,i){a(this,{x:new C("X",i.location),y:new C("Y",i.location),type:i.type,useClickAsTap:e.useClickAsTap,threshold:e.threshold||x[i.type],userEvents:e,target:t,currentTarget:i.currentTarget,initialTouch:i.target,id:i.id,pressEvent:i,_clicks:e._clicks,supportDoubleTap:e.supportDoubleTap,_moved:!1,_finished:!1})},press:function(){this._holdTimeout=setTimeout(this._hold.bind(this),this.userEvents.minHold),this._trigger(p,this.pressEvent)},_tap:function(e){var t=this;t.userEvents._clicks++,1==t.userEvents._clicks&&(t._clickTimeout=setTimeout((function(){1==t.userEvents._clicks?t._trigger(T,e):t._trigger(y,e),t.userEvents._clicks=0}),300))},_hold:function(){this._trigger(d,this.pressEvent)},move:function(e){var t=this,i="api"!==e.type&&t.userEvents._shouldNotMove;if(!t._finished&&!i){if(t.x.move(e.location),t.y.move(e.location),!t._moved){if(t._withinIgnoreThreshold())return;if(P.current&&P.current!==t.userEvents)return t.dispose();t._start(e)}t._finished||t._trigger(g,e)}},end:function(e){this.endTime=s(),this._finished||(this._finished=!0,this._trigger(E,e),this._moved?this._trigger(_,e):this.useClickAsTap||(this.supportDoubleTap?this._tap(e):this._trigger(T,e)),clearTimeout(this._holdTimeout),this.dispose())},dispose:function(){var t=this.userEvents.touches;this._finished=!0,this.pressEvent=null,clearTimeout(this._holdTimeout),t.splice(e.inArray(this,t),1)},skip:function(){this.dispose()},cancel:function(){this.dispose()},isMoved:function(){return this._moved},_start:function(e){clearTimeout(this._holdTimeout),this.startTime=s(),this._moved=!0,this._trigger(v,e)},_trigger:function(e,t){var i=this,n=t.event,o={touch:i,x:i.x,y:i.y,target:i.target,event:n};i.userEvents.notify(e,o)&&n.preventDefault()},_withinIgnoreThreshold:function(){var e=this.x.initialDelta,t=this.y.initialDelta;return Math.sqrt(e*e+t*t)<=this.threshold}});function S(e){for(var t=i.eventMap.up.split(" "),n=0,o=t.length;n<o;n++)e(t[n])}var P=r.extend({init:function(t,o){var s,c=this,u=i.guid();if(o=o||{},s=c.filter=o.filter,c.threshold=o.threshold||h,c.minHold=o.minHold||l,c.touches=[],c._maxTouches=o.multiTouch?2:1,c.allowSelection=o.allowSelection,c.captureUpIfMoved=o.captureUpIfMoved,c.useClickAsTap=!o.fastTap&&!n.delayedClick(),c.eventNS=u,c._clicks=0,c.supportDoubleTap=o.supportDoubleTap,t=e(t).handler(c),r.fn.init.call(c),a(c,{element:t,surface:o.global&&w?e(t[0].ownerDocument.documentElement):e(o.surface||t),stopPropagation:o.stopPropagation,pressed:!1}),c.surface.handler(c).on(i.applyEventMap("move",u),"_move").on(i.applyEventMap("up cancel",u),"_end"),t.on(i.applyEventMap("down",u),s,"_start"),c.useClickAsTap&&t.on(i.applyEventMap("click",u),s,"_click"),n.pointers||n.msPointers)if(n.browser.version<11){var x="pinch-zoom double-tap-zoom";t.css("-ms-touch-action",o.touchAction&&"none"!=o.touchAction?x+" "+o.touchAction:x)}else t.css("touch-action",o.touchAction||"none");if(o.preventDragEvent&&t.on(i.applyEventMap("dragstart",u),i.preventDefault),t.on(i.applyEventMap("mousedown",u),s,{root:t},"_select"),c.captureUpIfMoved&&n.eventCapture){var b=c.surface[0],A=c.preventIfMoving.bind(c);S((function(e){b.addEventListener(e,A,!0)}))}c.bind([p,d,T,y,v,g,_,E,m,"gesturestart",k,D,M,f],o)},preventIfMoving:function(e){this._isMoved()&&e.preventDefault()},destroy:function(){var e=this;if(!e._destroyed){if(e._destroyed=!0,e.captureUpIfMoved&&n.eventCapture){var t=e.surface[0];S((function(i){t.removeEventListener(i,e.preventIfMoving)}))}e.element.kendoDestroy(e.eventNS),e.surface.kendoDestroy(e.eventNS),e.element.removeData("handler"),e.surface.removeData("handler"),e._disposeAll(),e.unbind(),delete e.surface,delete e.element,delete e.currentTarget}},capture:function(){P.current=this},cancel:function(){this._disposeAll(),this.trigger(m)},notify:function(e,t){var i=this.touches;if(this._isMultiTouch()){switch(e){case g:e=k;break;case _:e=D;break;case T:e=M}a(t,{touches:i},b(i[0],i[1]))}return this.trigger(e,a(t,{type:e}))},press:function(e,t,i){this._apiCall("_start",e,t,i)},move:function(e,t){this._apiCall("_move",e,t)},end:function(e,t){this._apiCall("_end",e,t)},_isMultiTouch:function(){return this.touches.length>1},_maxTouchesReached:function(){return this.touches.length>=this._maxTouches},_disposeAll:function(){for(var e=this.touches;e.length>0;)e.pop().dispose()},_isMoved:function(){return e.grep(this.touches,(function(e){return e.isMoved()})).length},_select:function(e){this.allowSelection&&!this.trigger(f,{event:e})||e.preventDefault()},_start:function(t){var i,n,o=this,r=0,s=o.filter,a=A(t),c=a.length,u=t.which;if(!(u&&u>1||o._maxTouchesReached()))for(P.current=null,o.currentTarget=t.currentTarget,o.stopPropagation&&t.stopPropagation();r<c&&!o._maxTouchesReached();r++)n=a[r],(i=s?e(n.currentTarget):o.element).length&&(n=new I(o,i,n),o.touches.push(n),n.press(),o._isMultiTouch()&&o.notify("gesturestart",{}))},_move:function(e){this._eachTouch("move",e)},_end:function(e){this._eachTouch("end",e)},_click:function(t){var i={touch:{initialTouch:t.target,target:e(t.currentTarget),endTime:s(),x:{location:t.pageX,client:t.clientX},y:{location:t.pageY,client:t.clientY}},x:t.pageX,y:t.pageY,target:e(t.currentTarget),event:t,type:"tap"};this.trigger("tap",i)&&t.preventDefault()},_eachTouch:function(e,t){var i,n,o,r,s={},a=A(t),c=this.touches;for(i=0;i<c.length;i++)s[(n=c[i]).id]=n;for(i=0;i<a.length;i++)(r=s[(o=a[i]).id])&&r[e](o)},_apiCall:function(t,i,n,o){this[t]({api:!0,pageX:i,pageY:n,clientX:i,clientY:n,target:e(o||this.element)[0],stopPropagation:e.noop,preventDefault:e.noop})}});P.defaultThreshold=function(e){h=e},P.minHold=function(e){l=e},i.getTouches=A,i.touchDelta=b,i.UserEvents=P}(window.kendo.jQuery)})); //# sourceMappingURL=kendo.userevents.min.js.map