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