{"version":3,"sources":["kendo.touch.js"],"names":["f","define","$","undefined","kendo","window","Widget","ui","proxy","abs","Math","MAX_DOUBLE_TAP_DISTANCE","Touch","extend","init","element","options","eventProxy","name","e","that","_triggerTouch","gestureEventProxy","trigger","touches","distance","center","event","this","fn","call","wrapper","events","UserEvents","filter","surface","minHold","multiTouch","allowSelection","fastTap","press","hold","tap","gesturestart","gesturechange","gestureend","enableSwipe","bind","notify","global","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","cancel","type","touch","preventDefault","_tap","lastTap","endTime","touchDelta","_dragstart","_swipestart","x","velocity","y","sender","capture","_swipemove","duration","timeStamp","startTime","direction","initialDelta","plugin","jQuery","amd","a1","a2","a3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,eACH,aACA,oBACDD,IACL,WAgIE,MArHC,UAAUE,EAAGC,GAAb,GACOC,GAAQC,OAAOD,MAAOE,EAASF,EAAMG,GAAGD,OAAQE,EAAQN,EAAEM,MAAOC,EAAMC,KAAKD,IAAKE,EAA0B,GAC3GC,EAAQN,EAAOO,QACfC,KAAM,SAAUC,EAASC,GAMrB,QAASC,GAAWC,GAChB,MAAO,UAAUC,GACbC,EAAKC,cAAcH,EAAMC,IAGjC,QAASG,GAAkBJ,GACvB,MAAO,UAAUC,GACbC,EAAKG,QAAQL,GACTM,QAASL,EAAEK,QACXC,SAAUN,EAAEM,SACZC,OAAQP,EAAEO,OACVC,MAAOR,EAAEQ,SAhBrB,GAAIP,GAAOQ,IACXtB,GAAOuB,GAAGf,KAAKgB,KAAKV,EAAML,EAASC,GACnCA,EAAUI,EAAKJ,QACfD,EAAUK,EAAKL,QACfK,EAAKW,QAAUhB,EAgBfK,EAAKY,OAAS,GAAI5B,GAAM6B,WAAWlB,GAC/BmB,OAAQlB,EAAQkB,OAChBC,QAASnB,EAAQmB,QACjBC,QAASpB,EAAQoB,QACjBC,WAAYrB,EAAQqB,WACpBC,gBAAgB,EAChBC,QAASvB,EAAQuB,QACjBC,MAAOvB,EAAW,cAClBwB,KAAMxB,EAAW,QACjByB,IAAKlC,EAAMY,EAAM,QACjBuB,aAAcrB,EAAkB,gBAChCsB,cAAetB,EAAkB,iBACjCuB,WAAYvB,EAAkB,gBAE9BN,EAAQ8B,aACR1B,EAAKY,OAAOe,KAAK,QAASvC,EAAMY,EAAM,gBACtCA,EAAKY,OAAOe,KAAK,OAAQvC,EAAMY,EAAM,iBAErCA,EAAKY,OAAOe,KAAK,QAASvC,EAAMY,EAAM,eACtCA,EAAKY,OAAOe,KAAK,OAAQ9B,EAAW,SACpCG,EAAKY,OAAOe,KAAK,MAAO9B,EAAW,aAEvCb,EAAM4C,OAAO5B,IAEjBY,QACI,aACA,YACA,OACA,UACA,MACA,YACA,OACA,QACA,eACA,gBACA,cAEJhB,SACIE,KAAM,QACNiB,QAAS,KACTc,QAAQ,EACRV,SAAS,EACTL,OAAQ,KACRG,YAAY,EACZS,aAAa,EACbI,UAAW,GACXC,UAAW,GACXC,YAAa,IACbhB,QAAS,IACTiB,iBAAkB,KAEtBC,OAAQ,WACJ1B,KAAKI,OAAOsB,UAEhBjC,cAAe,SAAUkC,EAAMpC,GACvBS,KAAKL,QAAQgC,GACTC,MAAOrC,EAAEqC,MACT7B,MAAOR,EAAEQ,SAEbR,EAAEsC,kBAGVC,KAAM,SAAUvC,GACZ,GAAIC,GAAOQ,KAAM+B,EAAUvC,EAAKuC,QAASH,EAAQrC,EAAEqC,KAC/CG,IAA6CvC,EAAKJ,QAAQqC,iBAA/CG,EAAMI,QAAUD,EAAQC,SAA2CxD,EAAMyD,WAAWL,EAAOG,GAASlC,SAAWd,GAC1HS,EAAKC,cAAc,YAAaF,GAChCC,EAAKuC,QAAU,OAEfvC,EAAKC,cAAc,MAAOF,GAC1BC,EAAKuC,QAAUH,IAGvBM,WAAY,SAAU3C,GAClBS,KAAKP,cAAc,YAAaF,IAEpC4C,YAAa,SAAU5C,GACK,EAApBV,EAAIU,EAAE6C,EAAEC,WAAiBxD,EAAIU,EAAE+C,EAAED,WACjC9C,EAAEgD,OAAOC,WAGjBC,WAAY,SAAUlD,GAClB,GAAIC,GAAOQ,KAAMZ,EAAUI,EAAKJ,QAASwC,EAAQrC,EAAEqC,MAAOc,EAAWnD,EAAEQ,MAAM4C,UAAYf,EAAMgB,UAAWC,EAAYjB,EAAMQ,EAAEU,aAAe,EAAI,QAAU,MACvJjE,GAAI+C,EAAMQ,EAAEU,eAAiB1D,EAAQkC,WAAazC,EAAI+C,EAAMU,EAAEQ,cAAgB1D,EAAQmC,WAAwBnC,EAAQoC,YAAnBkB,IACnGlD,EAAKG,QAAQ,SACTkD,UAAWA,EACXjB,MAAOrC,EAAEqC,QAEbA,EAAMF,YAIlBlD,GAAMG,GAAGoE,OAAO/D,IAClBP,OAAOD,MAAMwE,QACRvE,OAAOD,OACE,kBAAVH,SAAwBA,OAAO4E,IAAM5E,OAAS,SAAU6E,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.touch.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.touch', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\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: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, abs = Math.abs, MAX_DOUBLE_TAP_DISTANCE = 20;\n var Touch = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n that.wrapper = element;\n function eventProxy(name) {\n return function (e) {\n that._triggerTouch(name, e);\n };\n }\n function gestureEventProxy(name) {\n return function (e) {\n that.trigger(name, {\n touches: e.touches,\n distance: e.distance,\n center: e.center,\n 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: proxy(that, '_tap'),\n gesturestart: gestureEventProxy('gesturestart'),\n gesturechange: gestureEventProxy('gesturechange'),\n gestureend: gestureEventProxy('gestureend')\n });\n if (options.enableSwipe) {\n that.events.bind('start', proxy(that, '_swipestart'));\n that.events.bind('move', proxy(that, '_swipemove'));\n } else {\n that.events.bind('start', proxy(that, '_dragstart'));\n that.events.bind('move', eventProxy('drag'));\n that.events.bind('end', eventProxy('dragend'));\n }\n kendo.notify(that);\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 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 cancel: function () {\n this.events.cancel();\n },\n _triggerTouch: function (type, e) {\n if (this.trigger(type, {\n touch: e.touch,\n event: e.event\n })) {\n e.preventDefault();\n }\n },\n _tap: function (e) {\n var that = this, lastTap = that.lastTap, touch = e.touch;\n if (lastTap && touch.endTime - lastTap.endTime < that.options.doubleTapTimeout && kendo.touchDelta(touch, lastTap).distance < MAX_DOUBLE_TAP_DISTANCE) {\n that._triggerTouch('doubletap', e);\n that.lastTap = null;\n } else {\n that._triggerTouch('tap', e);\n that.lastTap = touch;\n }\n },\n _dragstart: function (e) {\n this._triggerTouch('dragstart', e);\n },\n _swipestart: function (e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n e.sender.capture();\n }\n },\n _swipemove: function (e) {\n var that = this, options = that.options, touch = e.touch, duration = e.event.timeStamp - touch.startTime, direction = touch.x.initialDelta > 0 ? 'right' : 'left';\n if (abs(touch.x.initialDelta) >= options.minXDelta && abs(touch.y.initialDelta) < options.maxYDelta && duration < options.maxDuration) {\n that.trigger('swipe', {\n direction: direction,\n touch: e.touch\n });\n touch.cancel();\n }\n }\n });\n kendo.ui.plugin(Touch);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}