{"version":3,"file":"kendo.touch.min.js","names":["factory","define","amd","kendo","Widget","abs","Touch","window","jQuery","ui","Math","extend","init","element","options","that","this","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","global","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","cancel","destroy","type","touch","preventDefault","lastTap","endTime","touchDelta","x","velocity","y","sender","capture","duration","timeStamp","startTime","direction","initialDelta","plugin"],"sources":["kendo.touch.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents'], factory) :\n factory();\n})((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\n}));\n"]}