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) 10.1 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.core.js")):"function"==typeof define&&define.amd?define(["exports","kendo.core.min"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Userevents={}))}(this,(function(e){!function(e){var t=window.kendo,n=t.support,i=t.Class,o=t.Observable,r=Date.now,s=e.extend,a=n.mobileOS,c=a&&a.android,u=800,h=n.browser.msie?5:0,l="press",p="hold",d="select",f="start",v="move",g="end",_="cancel",m="tap",T="doubleTap",y="release",w="gesturechange",k="gestureend",D="gesturetap",x={api:0,touch:0,mouse:9,pointer:9},E=!n.touch||n.mouseAndTouchPresent;function M(e,t){var n=e.x.location,i=e.y.location,o=t.x.location,r=t.y.location,s=n-o,a=i-r;return{center:{x:(n+o)/2,y:(i+r)/2},distance:Math.sqrt(s*s+a*a)}}function b(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=i.extend({init:function(e,t){var n=this;n.axis=e,n._updateLocationData(t),n.startLocation=n.location,n.velocity=n.delta=0,n.timeStamp=r()},move:function(e){var t=this,n=e["page"+t.axis],i=r(),o=i-t.timeStamp||1;!n&&c||(t.delta=n-t.location,t._updateLocationData(e),t.initialDelta=n-t.startLocation,t.velocity=t.delta/o,t.timeStamp=i)},_updateLocationData:function(e){var t=this,n=t.axis;t.location=e["page"+n],t.client=e["client"+n],t.screen=e["screen"+n]}}),A=i.extend({init:function(e,t,n){s(this,{x:new C("X",n.location),y:new C("Y",n.location),type:n.type,useClickAsTap:e.useClickAsTap,threshold:e.threshold||x[n.type],userEvents:e,target:t,currentTarget:n.currentTarget,initialTouch:n.target,id:n.id,pressEvent:n,_clicks:e._clicks,supportDoubleTap:e.supportDoubleTap,_moved:!1,_finished:!1})},press:function(){this._holdTimeout=setTimeout(this._hold.bind(this),this.userEvents.minHold),this._trigger(l,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(m,e):t._trigger(T,e),t.userEvents._clicks=0}),300))},_hold:function(){this._trigger(p,this.pressEvent)},move:function(e){var t=this,n="api"!==e.type&&t.userEvents._shouldNotMove;if(!t._finished&&!n){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(v,e)}},end:function(e){this.endTime=r(),this._finished||(this._finished=!0,this._trigger(y,e),this._moved?this._trigger(g,e):this.useClickAsTap||(this.supportDoubleTap?this._tap(e):this._trigger(m,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=r(),this._moved=!0,this._trigger(f,e)},_trigger:function(e,t){var n=this,i=t.event,o={touch:n,x:n.x,y:n.y,target:n.target,event:i};n.userEvents.notify(e,o)&&i.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 n=t.eventMap.up.split(" "),i=0,o=n.length;i<o;i++)e(n[i])}var P=o.extend({init:function(i,r){var a,c=this,x=t.guid();if(r=r||{},a=c.filter=r.filter,c.threshold=r.threshold||h,c.minHold=r.minHold||u,c.touches=[],c._maxTouches=r.multiTouch?2:1,c.allowSelection=r.allowSelection,c.captureUpIfMoved=r.captureUpIfMoved,c.useClickAsTap=!r.fastTap&&!n.delayedClick(),c.eventNS=x,c._clicks=0,c.supportDoubleTap=r.supportDoubleTap,i=e(i).handler(c),o.fn.init.call(c),s(c,{element:i,surface:r.global&&E?e(i[0].ownerDocument.documentElement):e(r.surface||i),stopPropagation:r.stopPropagation,preventDefault:r.preventDefault,pressed:!1}),c.surface.handler(c).on(t.applyEventMap("move",x),"_move").on(t.applyEventMap("up cancel",x),"_end"),i.on(t.applyEventMap("down",x),a,"_start"),c.useClickAsTap&&i.on(t.applyEventMap("click",x),a,"_click"),n.pointers||n.msPointers)if(n.browser.version<11){var M="pinch-zoom double-tap-zoom";i.css("-ms-touch-action",r.touchAction&&"none"!=r.touchAction?M+" "+r.touchAction:M)}else i.css("touch-action",r.touchAction||"none");if(r.preventDragEvent&&i.on(t.applyEventMap("dragstart",x),t.preventDefault),i.on(t.applyEventMap("mousedown",x),a,{root:i},"_select"),c.captureUpIfMoved&&n.eventCapture){var b=c.surface[0],C=c.preventIfMoving.bind(c);S((function(e){b.addEventListener(e,C,!0)}))}c.bind([l,p,m,T,f,v,g,y,_,"gesturestart",w,k,D,d],r)},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(n){t.removeEventListener(n,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(_)},notify:function(e,t){var n=this.touches;if(this._isMultiTouch()){switch(e){case v:e=w;break;case g:e=k;break;case m:e=D}s(t,{touches:n},M(n[0],n[1]))}return this.trigger(e,s(t,{type:e}))},press:function(e,t,n){this._apiCall("_start",e,t,n)},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(d,{event:e})||e.preventDefault()},_start:function(t){var n,i,o=this,r=0,s=o.filter,a=b(t),c=a.length,u=t.which;if(!(u&&u>1||o._maxTouchesReached()))for(P.current=null,o.currentTarget=t.currentTarget,o.preventDefault&&t.preventDefault(),o.stopPropagation&&t.stopPropagation();r<c&&!o._maxTouchesReached();r++)i=a[r],(n=s?e(i.currentTarget):o.element).length&&(i=new A(o,n,i),o.touches.push(i),i.press(),o._isMultiTouch()&&o.notify("gesturestart",{}))},_move:function(e){this._eachTouch("move",e)},_end:function(e){this._eachTouch("end",e)},_click:function(t){var n={touch:{initialTouch:t.target,target:e(t.currentTarget),endTime:r(),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",n)&&t.preventDefault()},_eachTouch:function(e,t){var n,i,o,r,s={},a=b(t),c=this.touches;for(n=0;n<c.length;n++)s[(i=c[n]).id]=i;for(n=0;n<a.length;n++)(r=s[(o=a[n]).id])&&r[e](o)},_apiCall:function(t,n,i,o){this[t]({api:!0,pageX:n,pageY:i,clientX:n,clientY:i,target:e(o||this.element)[0],stopPropagation:e.noop,preventDefault:e.noop})}}),I=o.extend({init:function(n,i){var r,a=this,c=t.guid();i=i||{},r=a.filter=i.filter,a.touches=[],a._maxTouches=1,a.eventNS=c,a._downStarted=0,n=e(n).handler(a),o.fn.init.call(a),s(a,{element:n,surface:i.global&&E?e(n[0].ownerDocument.documentElement):e(i.surface||n),stopPropagation:i.stopPropagation,pressed:!1}),a.surface.handler(a).on(t.applyEventMap("move",c),"_move").on(t.applyEventMap("cancel up",c),"cancel"),n.on(t.applyEventMap("down",c),r,"_down").on(t.applyEventMap("up",c),r,"_up"),a.bind([f,v,g,p,_,d],i)},_down:function(e){e.which&&e.which>1?this.cancel():(this._downStarted=(new Date).getTime(),this._downTarget=e.target)},_up:function(e){var t=(new Date).getTime(),n=e.target;(!e.which||1===e.which)&&t<this._downStarted+300&&n===this._downTarget?(this.touches&&this.touches.length>0?this._end(e):this._start(e),this._preventCancel=!0):this.cancel(),this._downStarted=0,this._downTarget=null},destroy:function(){var e=this;e._destroyed||(e._destroyed=!0,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(){I.current=this},cancel:function(){this._preventCancel?this._preventCancel=!1:this.touches&&this.touches.length>0&&(this._disposeAll(),this.trigger(_))},notify:function(e,t){return t.clickMoveClick=!0,this.trigger(e,s(t,{type:e}))},_maxTouchesReached:function(){return this.touches.length>=this._maxTouches},_disposeAll:function(){for(var e=this.touches;e.length>0;)e.pop().dispose()},_start:function(t){var n,i,o=this,r=0,s=o.filter,a=b(t),c=a.length,u=t.which;if(!(u&&u>1||o._maxTouchesReached()))for(I.current=null,o.currentTarget=t.currentTarget,o.stopPropagation&&t.stopPropagation();r<c&&!o._maxTouchesReached();r++)i=a[r],(n=s?e(i.currentTarget):o.element).length&&(i=new A(o,n,i),o.touches.push(i),i.press(),i._start(i))},_move:function(e){this._eachTouch("move",e)},_end:function(e){this._eachTouch("move",e),this._eachTouch("end",e)},_eachTouch:function(e,t){var n,i,o,r,s={},a=b(t),c=this.touches;for(n=0;n<c.length;n++)s[(i=c[n]).id]=i;for(n=0;n<a.length;n++)(r=s[(o=a[n]).id])&&(r.x.move(o.location),r.y.move(o.location),r[e](o))}});P.defaultThreshold=function(e){h=e},P.minHold=function(e){u=e},t.getTouches=b,t.touchDelta=M,t.UserEvents=P,t.ClickMoveClick=I}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"userevents",name:"User Events",category:"framework",depends:["core"],hidden:!0},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=kendo.userevents.min.js.map