{"version":3,"file":"kendo.touch.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendotouch","js","this","$","undefined$1","kendo","window","Widget","ui","abs","Math","Touch","extend","init","element","options","that","eventProxy","name","e","_triggerTouch","gestureEventProxy","trigger","touches","distance","center","event","fn","call","wrapper","events","UserEvents","filter","surface","minHold","multiTouch","allowSelection","fastTap","press","hold","tap","_tap","bind","gesturestart","gesturechange","gestureend","enableSwipe","_swipestart","_swipemove","_dragstart","notify","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","cancel","destroy","type","touch","preventDefault","lastTap","endTime","touchDelta","x","velocity","y","sender","capture","duration","timeStamp","startTime","direction","initialDelta","plugin","jQuery"],"sources":["kendo.touch.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.userevents.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendotouch = global.kendotouch || {}, global.kendotouch.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"touch\",\n name: \"Touch\",\n category: \"mobile\",\n description: \"The kendo Touch widget provides a cross-platform compatible API for handling user-initiated touch events, multi-touch gestures and event sequences (drag, swipe, etc.). \",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n abs = Math.abs,\n MAX_DOUBLE_TAP_DISTANCE = 20;\n\n var Touch = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n options = that.options;\n\n element = that.element;\n that.wrapper = element;\n\n function eventProxy(name) {\n return function(e) {\n that._triggerTouch(name, e);\n };\n }\n\n function gestureEventProxy(name) {\n return function(e) {\n that.trigger(name, { touches: e.touches, distance: e.distance, center: e.center, event: e.event });\n };\n }\n\n that.events = new kendo.UserEvents(element, {\n filter: options.filter,\n surface: options.surface,\n minHold: options.minHold,\n multiTouch: options.multiTouch,\n allowSelection: true,\n fastTap: options.fastTap,\n press: eventProxy(\"touchstart\"),\n hold: eventProxy(\"hold\"),\n tap: that._tap.bind(that),\n gesturestart: gestureEventProxy(\"gesturestart\"),\n gesturechange: gestureEventProxy(\"gesturechange\"),\n gestureend: gestureEventProxy(\"gestureend\")\n });\n\n if (options.enableSwipe) {\n that.events.bind(\"start\", that._swipestart.bind(that));\n that.events.bind(\"move\", that._swipemove.bind(that));\n } else {\n that.events.bind(\"start\", that._dragstart.bind(that));\n that.events.bind(\"move\", eventProxy(\"drag\"));\n that.events.bind(\"end\", eventProxy(\"dragend\"));\n }\n\n kendo.notify(that);\n },\n\n events: [\n \"touchstart\",\n \"dragstart\",\n \"drag\",\n \"dragend\",\n \"tap\",\n \"doubletap\",\n \"hold\",\n \"swipe\",\n \"gesturestart\",\n \"gesturechange\",\n \"gestureend\"\n ],\n\n options: {\n name: \"Touch\",\n surface: null,\n global: false,\n fastTap: false,\n filter: null,\n multiTouch: false,\n enableSwipe: false,\n minXDelta: 30,\n maxYDelta: 20,\n maxDuration: 1000,\n minHold: 800,\n doubleTapTimeout: 800\n },\n\n cancel: function() {\n this.events.cancel();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n this.events.destroy();\n },\n\n _triggerTouch: function(type, e) {\n if (this.trigger(type, { touch: e.touch, event: e.event })) {\n e.preventDefault();\n }\n },\n\n _tap: function(e) {\n var that = this,\n lastTap = that.lastTap,\n touch = e.touch;\n\n if (lastTap &&\n (touch.endTime - lastTap.endTime < that.options.doubleTapTimeout) &&\n kendo.touchDelta(touch, lastTap).distance < MAX_DOUBLE_TAP_DISTANCE\n ) {\n\n that._triggerTouch(\"doubletap\", e);\n that.lastTap = null;\n } else {\n that._triggerTouch(\"tap\", e);\n that.lastTap = touch;\n }\n },\n\n _dragstart: function(e) {\n this._triggerTouch(\"dragstart\", e);\n },\n\n _swipestart: function(e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n e.sender.capture();\n }\n },\n\n _swipemove: function(e) {\n var that = this,\n options = that.options,\n touch = e.touch,\n duration = e.event.timeStamp - touch.startTime,\n direction = touch.x.initialDelta > 0 ? \"right\" : \"left\";\n\n if (\n abs(touch.x.initialDelta) >= options.minXDelta &&\n abs(touch.y.initialDelta) < options.maxYDelta &&\n duration < options.maxDuration\n )\n {\n that.trigger(\"swipe\", {\n direction: direction,\n touch: e.touch\n });\n\n touch.cancel();\n }\n }\n });\n\n kendo.ui.plugin(Touch);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}