{"version":3,"file":"kendo.userevents.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendouserevents","js","this","$","undefined$1","kendo","window","support","Class","Observable","now","Date","extend","OS","mobileOS","invalidZeroEvents","android","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","browser","msie","PRESS","HOLD","SELECT","START","MOVE","END","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","touch","mouse","pointer","ENABLE_GLOBAL_SURFACE","mouseAndTouchPresent","touchDelta","touch1","touch2","x1","x","location","y1","y","x2","y2","dx","dy","center","distance","Math","sqrt","getTouches","e","length","changedTouches","touches","originalEvent","currentTarget","idx","push","id","event","target","type","match","identifier","pointers","msPointers","pointerId","TouchAxis","init","axis","that","_updateLocationData","startLocation","velocity","delta","timeStamp","move","offset","timeDelta","initialDelta","client","screen","Touch","userEvents","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","setTimeout","_hold","bind","minHold","_trigger","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","current","dispose","_start","end","endTime","clearTimeout","activeTouches","splice","inArray","skip","cancel","isMoved","startTime","name","jQueryEvent","data","notify","preventDefault","xDelta","yDelta","withEachUpEvent","callback","downEvents","eventMap","up","split","element","options","filter","ns","guid","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","delayedClick","eventNS","handler","fn","call","surface","ownerDocument","documentElement","stopPropagation","pressed","on","applyEventMap","version","defaultAction","css","touchAction","preventDragEvent","root","eventCapture","surfaceElement","preventIfMovingProxy","preventIfMoving","eventName","addEventListener","_isMoved","destroy","_destroyed","removeEventListener","kendoDestroy","removeData","_disposeAll","unbind","capture","trigger","_isMultiTouch","_apiCall","_maxTouchesReached","pop","grep","_select","which","_move","_eachTouch","_end","_click","pageX","clientX","pageY","clientY","methodName","matchingTouch","dict","noop","ClickMoveClick","_downStarted","_down","getTime","_downTarget","_up","currentMilestone","_preventCancel","clickMoveClick","defaultThreshold","value","jQuery"],"sources":["kendo.userevents.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendouserevents = global.kendouserevents || {}, global.kendouserevents.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"userevents\",\n name: \"User Events\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n Class = kendo.Class,\n Observable = kendo.Observable,\n now = Date.now,\n extend = $.extend,\n OS = support.mobileOS,\n invalidZeroEvents = OS && OS.android,\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n // UserEvents events\n PRESS = \"press\",\n HOLD = \"hold\",\n SELECT = \"select\",\n START = \"start\",\n MOVE = \"move\",\n END = \"end\",\n CANCEL = \"cancel\",\n TAP = \"tap\",\n DOUBLETAP = \"doubleTap\",\n RELEASE = \"release\",\n GESTURESTART = \"gesturestart\",\n GESTURECHANGE = \"gesturechange\",\n GESTUREEND = \"gestureend\",\n GESTURETAP = \"gesturetap\";\n\n var THRESHOLD = {\n \"api\": 0,\n \"touch\": 0,\n \"mouse\": 9,\n \"pointer\": 9\n };\n\n var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n\n function getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent,\n currentTarget = e.currentTarget,\n idx = 0, length,\n changedTouches,\n touch;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call;\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: \"api\"\n });\n }\n else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx ++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: \"touch\"\n });\n }\n }\n else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: \"pointer\"\n });\n } else {\n touches.push({\n id: 1, // hardcoded ID for mouse event;\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: \"mouse\"\n });\n }\n\n return touches;\n }\n\n var TouchAxis = Class.extend({\n init: function(axis, location) {\n var that = this;\n\n that.axis = axis;\n\n that._updateLocationData(location);\n\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n\n move: function(location) {\n var that = this,\n offset = location[\"page\" + that.axis],\n timeStamp = now(),\n timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n if (!offset && invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n\n that._updateLocationData(location);\n\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n\n _updateLocationData: function(location) {\n var that = this, axis = that.axis;\n\n that.location = location[\"page\" + axis];\n that.client = location[\"client\" + axis];\n that.screen = location[\"screen\" + axis];\n }\n });\n\n var Touch = Class.extend({\n init: function(userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis(\"X\", touchInfo.location),\n y: new TouchAxis(\"Y\", touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n },\n\n press: function() {\n this._holdTimeout = setTimeout(this._hold.bind(this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n\n _tap: function(touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n }\n else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n\n _hold: function() {\n this._trigger(HOLD, this.pressEvent);\n },\n\n move: function(touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) { return; }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n\n end: function(touchInfo) {\n this.endTime = now();\n\n if (this._finished) { return; }\n\n // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n this._finished = true;\n\n this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n }\n else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n\n this.dispose();\n },\n\n dispose: function() {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches;\n\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n\n skip: function() {\n this.dispose();\n },\n\n cancel: function() {\n this.dispose();\n },\n\n isMoved: function() {\n return this._moved;\n },\n\n _start: function(touchInfo) {\n clearTimeout(this._holdTimeout);\n\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n\n _trigger: function(name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n\n _withinIgnoreThreshold: function() {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(\" \"),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx ++) {\n callback(downEvents[idx]);\n }\n }\n\n var UserEvents = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n }\n\n if (support.pointers || support.msPointers) {\n //touch-action:none will not work for IE10\n if (support.browser.version < 11) {\n var defaultAction = \"pinch-zoom double-tap-zoom\";\n element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n } else {\n element.css(\"touch-action\", options.touchAction || \"none\");\n }\n }\n\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n }\n\n element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0],\n preventIfMovingProxy = that.preventIfMoving.bind(that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n\n preventIfMoving: function(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n UserEvents.current = this;\n },\n\n cancel: function() {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n\n notify: function(eventName, data) {\n var that = this,\n touches = that.touches;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n // API\n press: function(x, y, target) {\n this._apiCall(\"_start\", x, y, target);\n },\n\n move: function(x, y) {\n this._apiCall(\"_move\", x, y);\n },\n\n end: function(x, y) {\n this._apiCall(\"_end\", x, y);\n },\n\n _isMultiTouch: function() {\n return this.touches.length > 1;\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _isMoved: function() {\n return $.grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n },\n\n _select: function(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n UserEvents.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget); // target.is(filter) ? target : target.closest(filter, that.element);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify(\"gesturestart\", {});\n }\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"end\", e);\n },\n\n _click: function(e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: \"tap\"\n };\n\n if (this.trigger(\"tap\", data)) {\n e.preventDefault();\n }\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n\n _apiCall: function(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n\n var ClickMoveClick = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.touches = [];\n that._maxTouches = 1;\n that.eventNS = ns;\n that._downStarted = 0;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"cancel up\", ns), \"cancel\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_down\")\n .on(kendo.applyEventMap(\"up\", ns), filter, \"_up\");\n\n that.bind([\n START,\n MOVE,\n END,\n HOLD,\n CANCEL,\n SELECT\n ], options);\n },\n\n _down: function(e) {\n if (e.which && e.which > 1) {\n this.cancel();\n } else {\n this._downStarted = new Date().getTime();\n this._downTarget = e.target;\n }\n },\n\n _up: function(e) {\n var currentMilestone = new Date().getTime(),\n currentTarget = e.target;\n\n if ((!e.which || e.which === 1) &&\n currentMilestone < this._downStarted + CLICK_DELAY &&\n currentTarget === this._downTarget) {\n if (this.touches && this.touches.length > 0) {\n this._end(e);\n } else {\n this._start(e);\n }\n\n this._preventCancel = true;\n } else {\n this.cancel();\n }\n\n this._downStarted = 0;\n this._downTarget = null;\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n ClickMoveClick.current = this;\n },\n\n cancel: function() {\n if (this._preventCancel) {\n this._preventCancel = false;\n return;\n } else if (this.touches && this.touches.length > 0) {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n },\n\n notify: function(eventName, data) {\n data.clickMoveClick = true;\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n ClickMoveClick.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n touch._start(touch);\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"move\", e);\n this._eachTouch(\"end\", e);\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch.x.move(touchInfo.location);\n matchingTouch.y.move(touchInfo.location);\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n });\n\n UserEvents.defaultThreshold = function(value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function(value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n kendo.ClickMoveClick = ClickMoveClick;\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}