UNPKG

hammerjs

Version:

A javascript library for multi-touch gestures

7 lines 20.4 kB
/*! Hammer.JS - v2.0.6 - 2016-04-21 * http://hammerjs.github.io/ * * Copyright (c) 2016 Jorik Tangelder; * Licensed under the license */ !function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(b,c,d){var e="DEPRECATED METHOD: "+c+"\n"+d+" AT \n";return function(){var c=new Error("get-stack-trace"),d=c&&c.stack?c.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&ka(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==na?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function s(a){return Array.prototype.slice.call(a,0)}function t(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];r(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<la.length;){if(c=la[g],e=c?c+f:b,e in a)return e;g++}return d}function v(){return ta++}function w(b){var c=b.ownerDocument||b;return c.defaultView||c.parentWindow||a}function x(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){k(a.options.enable,[a])&&c.handler(b)},this.init()}function y(a){var b,c=a.options.inputClass;return new(b=c?c:wa?M:xa?P:va?R:L)(a,z)}function z(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&Da&&d-e===0,g=b&(Fa|Ga)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,A(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function A(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=D(b)),e>1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=qa(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=pa(j.x)>pa(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};b.eventType!==Da&&f.eventType!==Fa||(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ga&&(i>Ca||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=pa(l.x)>pa(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:oa(a.pointers[c].clientX),clientY:oa(a.pointers[c].clientY)},c++;return{timeStamp:qa(),pointers:b,center:E(b),deltaX:a.deltaX,deltaY:a.deltaY}}function E(a){var b=a.length;if(1===b)return{x:oa(a[0].clientX),y:oa(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:oa(c/b),y:oa(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ha:pa(a)>=pa(b)?0>a?Ia:Ja:0>b?Ka:La}function H(a,b,c){c||(c=Pa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Pa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Qa)+I(a[1],a[0],Qa)}function K(a,b){return H(b[0],b[1],Qa)/H(a[0],a[1],Qa)}function L(){this.evEl=Sa,this.evWin=Ta,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Wa,this.evWin=Xa,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=Za,this.evWin=$a,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Fa|Ga)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=ab,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Da|Ea)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Da)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Fa|Ga)&&delete d[g[e].identifier],e++;return h.length?[t(f.concat(h),"identifier",!0),h]:void 0}function R(){x.apply(this,arguments);var a=j(this.handler,this);this.touch=new P(this.manager,a),this.mouse=new L(this.manager,a),this.primaryTouch=null,this.lastTouches=[]}function S(a,b){a&Da?(this.primaryTouch=b.changedPointers[0].identifier,T.call(this,b)):a&(Fa|Ga)&&T.call(this,b)}function T(a){var b=a.changedPointers[0];if(b.identifier===this.primaryTouch){var c={x:b.clientX,y:b.clientY};this.lastTouches.push(c);var d=this.lastTouches,e=function(){var a=d.indexOf(c);a>-1&&d.splice(a,1)};setTimeout(e,bb)}}function U(a){for(var b=a.srcEvent.clientX,c=a.srcEvent.clientY,d=0;d<this.lastTouches.length;d++){var e=this.lastTouches[d],f=Math.abs(b-e.x),g=Math.abs(c-e.y);if(cb>=f&&cb>=g)return!0}return!1}function V(a,b){this.manager=a,this.set(b)}function W(a){if(p(a,ib))return ib;var b=p(a,jb),c=p(a,kb);return b&&c?ib:b||c?b?jb:kb:p(a,hb)?hb:gb}function X(a){this.options=ka({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=lb,this.simultaneous={},this.requireFail=[]}function Y(a){return a&qb?"cancel":a&ob?"end":a&nb?"move":a&mb?"start":""}function Z(a){return a==La?"down":a==Ka?"up":a==Ia?"left":a==Ja?"right":""}function $(a,b){var c=b.manager;return c?c.get(a):a}function _(){X.apply(this,arguments)}function aa(){_.apply(this,arguments),this.pX=null,this.pY=null}function ba(){_.apply(this,arguments)}function ca(){X.apply(this,arguments),this._timer=null,this._input=null}function da(){_.apply(this,arguments)}function ea(){_.apply(this,arguments)}function fa(){X.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ga(a,b){return b=b||{},b.recognizers=l(b.recognizers,ga.defaults.preset),new ha(a,b)}function ha(a,b){this.options=ka({},ga.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=y(this),this.touchAction=new V(this,this.options.touchAction),ia(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ia(a,b){var c=a.element;c.style&&g(a.options.cssProps,function(a,d){c.style[u(c.style,d)]=b?a:""})}function ja(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ka,la=["","webkit","Moz","MS","ms","o"],ma=b.createElement("div"),na="function",oa=Math.round,pa=Math.abs,qa=Date.now;ka="function"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c<arguments.length;c++){var e=arguments[c];if(e!==d&&null!==e)for(var f in e)e.hasOwnProperty(f)&&(b[f]=e[f])}return b}:Object.assign;var ra=h(function(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a},"extend","Use `assign`."),sa=h(function(a,b){return ra(a,b,!0)},"merge","Use `assign`."),ta=1,ua=/mobile|tablet|ip(ad|hone|od)|android/i,va="ontouchstart"in a,wa=u(a,"PointerEvent")!==d,xa=va&&ua.test(navigator.userAgent),ya="touch",za="pen",Aa="mouse",Ba="kinect",Ca=25,Da=1,Ea=2,Fa=4,Ga=8,Ha=1,Ia=2,Ja=4,Ka=8,La=16,Ma=Ia|Ja,Na=Ka|La,Oa=Ma|Na,Pa=["x","y"],Qa=["clientX","clientY"];x.prototype={handler:function(){},init:function(){this.evEl&&m(this.element,this.evEl,this.domHandler),this.evTarget&&m(this.target,this.evTarget,this.domHandler),this.evWin&&m(w(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(w(this.element),this.evWin,this.domHandler)}};var Ra={mousedown:Da,mousemove:Ea,mouseup:Fa},Sa="mousedown",Ta="mousemove mouseup";i(L,x,{handler:function(a){var b=Ra[a.type];b&Da&&0===a.button&&(this.pressed=!0),b&Ea&&1!==a.which&&(b=Fa),this.pressed&&(b&Fa&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:Aa,srcEvent:a}))}});var Ua={pointerdown:Da,pointermove:Ea,pointerup:Fa,pointercancel:Ga,pointerout:Ga},Va={2:ya,3:za,4:Aa,5:Ba},Wa="pointerdown",Xa="pointermove pointerup pointercancel";a.MSPointerEvent&&!a.PointerEvent&&(Wa="MSPointerDown",Xa="MSPointerMove MSPointerUp MSPointerCancel"),i(M,x,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Ua[d],f=Va[a.pointerType]||a.pointerType,g=f==ya,h=r(b,a.pointerId,"pointerId");e&Da&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Fa|Ga)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Ya={touchstart:Da,touchmove:Ea,touchend:Fa,touchcancel:Ga},Za="touchstart",$a="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Ya[a.type];if(b===Da&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Fa|Ga)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ya,srcEvent:a})}}});var _a={touchstart:Da,touchmove:Ea,touchend:Fa,touchcancel:Ga},ab="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=_a[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ya,srcEvent:a})}});var bb=2500,cb=25;i(R,x,{handler:function(a,b,c){var d=c.pointerType==ya,e=c.pointerType==Aa;if(!(e&&c.sourceCapabilities&&c.sourceCapabilities.firesTouchEvents)){if(d)S.call(this,b,c);else if(e&&U.call(this,c))return;this.callback(a,b,c)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var db=u(ma.style,"touchAction"),eb=db!==d,fb="compute",gb="auto",hb="manipulation",ib="none",jb="pan-x",kb="pan-y";V.prototype={set:function(a){a==fb&&(a=this.compute()),eb&&this.manager.element.style&&(this.manager.element.style[db]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),W(a.join(" "))},preventDefaults:function(a){if(!eb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,ib),f=p(d,kb),g=p(d,jb);if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}if(!g||!f)return e||f&&c&Ma||g&&c&Na?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var lb=1,mb=2,nb=4,ob=8,pb=ob,qb=16,rb=32;X.prototype={defaults:{},set:function(a){return ka(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=$(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=$(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=$(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=$(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;ob>d&&b(c.options.event+Y(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=ob&&b(c.options.event+Y(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=rb)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(rb|lb)))return!1;a++}return!0},recognize:function(a){var b=ka({},a);return k(this.options.enable,[this,b])?(this.state&(pb|qb|rb)&&(this.state=lb),this.state=this.process(b),void(this.state&(mb|nb|ob|qb)&&this.tryEmit(b))):(this.reset(),void(this.state=rb))},process:function(a){},getTouchAction:function(){},reset:function(){}},i(_,X,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(mb|nb),e=this.attrTest(a);return d&&(c&Ga||!e)?b|qb:d||e?c&Fa?b|ob:b&mb?b|nb:mb:rb}}),i(aa,_,{defaults:{event:"pan",threshold:10,pointers:1,direction:Oa},getTouchAction:function(){var a=this.options.direction,b=[];return a&Ma&&b.push(kb),a&Na&&b.push(jb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Ma?(e=0===f?Ha:0>f?Ia:Ja,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ha:0>g?Ka:La,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return _.prototype.attrTest.call(this,a)&&(this.state&mb||!(this.state&mb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=Z(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i(ba,_,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ib]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&mb)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(ca,X,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[gb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Fa|Ga)&&!f)this.reset();else if(a.eventType&Da)this.reset(),this._timer=e(function(){this.state=pb,this.tryEmit()},b.time,this);else if(a.eventType&Fa)return pb;return rb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===pb&&(a&&a.eventType&Fa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=qa(),this.manager.emit(this.options.event,this._input)))}}),i(da,_,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ib]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&mb)}}),i(ea,_,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ma|Na,pointers:1},getTouchAction:function(){return aa.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ma|Na)?b=a.overallVelocity:c&Ma?b=a.overallVelocityX:c&Na&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&pa(b)>this.options.velocity&&a.eventType&Fa},emit:function(a){var b=Z(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(fa,X,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[hb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&Da&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Fa)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||H(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=pb,this.tryEmit()},b.interval,this),mb):pb}return rb},failTimeout:function(){return this._timer=e(function(){this.state=rb},this.options.interval,this),rb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==pb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ga.VERSION="2.0.6",ga.defaults={domEvents:!1,touchAction:fb,enable:!0,inputTarget:null,inputClass:null,preset:[[da,{enable:!1}],[ba,{enable:!1},["rotate"]],[ea,{direction:Ma}],[aa,{direction:Ma},["swipe"]],[fa],[fa,{event:"doubletap",taps:2},["tap"]],[ca]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var sb=1,tb=2;ha.prototype={set:function(a){return ka(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?tb:sb},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&pb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===tb||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(mb|nb|ob)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof X)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;if(a=this.get(a)){var b=this.recognizers,c=r(b,a);-1!==c&&(b.splice(c,1),this.touchAction.update())}return this},on:function(a,b){var c=this.handlers;return g(q(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(q(a),function(a){b?c[a]&&c[a].splice(r(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&ja(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&ia(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},ka(ga,{INPUT_START:Da,INPUT_MOVE:Ea,INPUT_END:Fa,INPUT_CANCEL:Ga,STATE_POSSIBLE:lb,STATE_BEGAN:mb,STATE_CHANGED:nb,STATE_ENDED:ob,STATE_RECOGNIZED:pb,STATE_CANCELLED:qb,STATE_FAILED:rb,DIRECTION_NONE:Ha,DIRECTION_LEFT:Ia,DIRECTION_RIGHT:Ja,DIRECTION_UP:Ka,DIRECTION_DOWN:La,DIRECTION_HORIZONTAL:Ma,DIRECTION_VERTICAL:Na,DIRECTION_ALL:Oa,Manager:ha,Input:x,TouchAction:V,TouchInput:P,MouseInput:L,PointerEventInput:M,TouchMouseInput:R,SingleTouchInput:N,Recognizer:X,AttrRecognizer:_,Tap:fa,Pan:aa,Swipe:ea,Pinch:ba,Rotate:da,Press:ca,on:m,off:n,each:g,merge:sa,extend:ra,assign:ka,inherit:i,bindFn:j,prefixed:u});var ub="undefined"!=typeof a?a:"undefined"!=typeof self?self:{};ub.Hammer=ga,"function"==typeof define&&define.amd?define(function(){return ga}):"undefined"!=typeof module&&module.exports?module.exports=ga:a[c]=ga}(window,document,"Hammer"); //# sourceMappingURL=hammer.min.js.map