/home/bdqbpbxa/demo-subdomains/homesearch.goodface.com.ua/frontend/js/lib/jquery.touchSwipe.min.js
/*!
* @fileOverview TouchSwipe - jQuery Plugin
* @version 1.6.18
*
* @author Matt Bryson http://www.github.com/mattbryson
* @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin
* @see http://labs.rampinteractive.co.uk/touchSwipe/
* @see http://plugins.jquery.com/project/touchSwipe
* @license
* Copyright (c) 2010-2015 Matt Bryson
* Dual licensed under the MIT or GPL Version 2 licenses.
*
*/
!(function (factory) {
"function" == typeof define && define.amd && define.amd.jQuery
? define(["jquery"], factory)
: factory("undefined" != typeof module && module.exports ? require("jquery") : jQuery);
})(function ($) {
"use strict";
function init(options) {
return (
!options ||
void 0 !== options.allowPageScroll ||
(void 0 === options.swipe && void 0 === options.swipeStatus) ||
(options.allowPageScroll = NONE),
void 0 !== options.click && void 0 === options.tap && (options.tap = options.click),
options || (options = {}),
(options = $.extend({}, $.fn.swipe.defaults, options)),
this.each(function () {
var $this = $(this),
plugin = $this.data(PLUGIN_NS);
plugin || ((plugin = new TouchSwipe(this, options)), $this.data(PLUGIN_NS, plugin));
})
);
}
function TouchSwipe(element, options) {
function touchStart(jqEvent) {
if (!(getTouchInProgress() || $(jqEvent.target).closest(options.excludedElements, $element).length > 0)) {
var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
if (!event.pointerType || "mouse" != event.pointerType || 0 != options.fallbackToMouseEvents) {
var ret,
touches = event.touches,
evt = touches ? touches[0] : event;
return (
(phase = PHASE_START),
touches ? (fingerCount = touches.length) : options.preventDefaultEvents !== !1 && jqEvent.preventDefault(),
(distance = 0),
(direction = null),
(currentDirection = null),
(pinchDirection = null),
(duration = 0),
(startTouchesDistance = 0),
(endTouchesDistance = 0),
(pinchZoom = 1),
(pinchDistance = 0),
(maximumsMap = createMaximumsData()),
cancelMultiFingerRelease(),
createFingerData(0, evt),
!touches || fingerCount === options.fingers || options.fingers === ALL_FINGERS || hasPinches()
? ((startTime = getTimeStamp()),
2 == fingerCount &&
(createFingerData(1, touches[1]),
(startTouchesDistance = endTouchesDistance =
calculateTouchesDistance(fingerData[0].start, fingerData[1].start))),
(options.swipeStatus || options.pinchStatus) && (ret = triggerHandler(event, phase)))
: (ret = !1),
ret === !1
? ((phase = PHASE_CANCEL), triggerHandler(event, phase), ret)
: (options.hold &&
(holdTimeout = setTimeout(
$.proxy(function () {
$element.trigger("hold", [event.target]),
options.hold && (ret = options.hold.call($element, event, event.target));
}, this),
options.longTapThreshold
)),
setTouchInProgress(!0),
null)
);
}
}
}
function touchMove(jqEvent) {
var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
if (phase !== PHASE_END && phase !== PHASE_CANCEL && !inMultiFingerRelease()) {
var ret,
touches = event.touches,
evt = touches ? touches[0] : event,
currentFinger = updateFingerData(evt);
if (
((endTime = getTimeStamp()),
touches && (fingerCount = touches.length),
options.hold && clearTimeout(holdTimeout),
(phase = PHASE_MOVE),
2 == fingerCount &&
(0 == startTouchesDistance
? (createFingerData(1, touches[1]),
(startTouchesDistance = endTouchesDistance =
calculateTouchesDistance(fingerData[0].start, fingerData[1].start)))
: (updateFingerData(touches[1]),
(endTouchesDistance = calculateTouchesDistance(fingerData[0].end, fingerData[1].end)),
(pinchDirection = calculatePinchDirection(fingerData[0].end, fingerData[1].end))),
(pinchZoom = calculatePinchZoom(startTouchesDistance, endTouchesDistance)),
(pinchDistance = Math.abs(startTouchesDistance - endTouchesDistance))),
fingerCount === options.fingers || options.fingers === ALL_FINGERS || !touches || hasPinches())
) {
if (
((direction = calculateDirection(currentFinger.start, currentFinger.end)),
(currentDirection = calculateDirection(currentFinger.last, currentFinger.end)),
validateDefaultEvent(jqEvent, currentDirection),
(distance = calculateDistance(currentFinger.start, currentFinger.end)),
(duration = calculateDuration()),
setMaxDistance(direction, distance),
(ret = triggerHandler(event, phase)),
!options.triggerOnTouchEnd || options.triggerOnTouchLeave)
) {
var inBounds = !0;
if (options.triggerOnTouchLeave) {
var bounds = getbounds(this);
inBounds = isInBounds(currentFinger.end, bounds);
}
!options.triggerOnTouchEnd && inBounds
? (phase = getNextPhase(PHASE_MOVE))
: options.triggerOnTouchLeave && !inBounds && (phase = getNextPhase(PHASE_END)),
(phase != PHASE_CANCEL && phase != PHASE_END) || triggerHandler(event, phase);
}
} else (phase = PHASE_CANCEL), triggerHandler(event, phase);
ret === !1 && ((phase = PHASE_CANCEL), triggerHandler(event, phase));
}
}
function touchEnd(jqEvent) {
var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent,
touches = event.touches;
if (touches) {
if (touches.length && !inMultiFingerRelease()) return startMultiFingerRelease(event), !0;
if (touches.length && inMultiFingerRelease()) return !0;
}
return (
inMultiFingerRelease() && (fingerCount = fingerCountAtRelease),
(endTime = getTimeStamp()),
(duration = calculateDuration()),
didSwipeBackToCancel() || !validateSwipeDistance()
? ((phase = PHASE_CANCEL), triggerHandler(event, phase))
: options.triggerOnTouchEnd || (options.triggerOnTouchEnd === !1 && phase === PHASE_MOVE)
? (options.preventDefaultEvents !== !1 && jqEvent.cancelable !== !1 && jqEvent.preventDefault(),
(phase = PHASE_END),
triggerHandler(event, phase))
: !options.triggerOnTouchEnd && hasTap()
? ((phase = PHASE_END), triggerHandlerForGesture(event, phase, TAP))
: phase === PHASE_MOVE && ((phase = PHASE_CANCEL), triggerHandler(event, phase)),
setTouchInProgress(!1),
null
);
}
function touchCancel() {
(fingerCount = 0),
(endTime = 0),
(startTime = 0),
(startTouchesDistance = 0),
(endTouchesDistance = 0),
(pinchZoom = 1),
cancelMultiFingerRelease(),
setTouchInProgress(!1);
}
function touchLeave(jqEvent) {
var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;
options.triggerOnTouchLeave && ((phase = getNextPhase(PHASE_END)), triggerHandler(event, phase));
}
function removeListeners() {
$element.off(START_EV, touchStart),
$element.off(CANCEL_EV, touchCancel),
$element.off(MOVE_EV, touchMove),
$element.off(END_EV, touchEnd),
LEAVE_EV && $element.off(LEAVE_EV, touchLeave),
setTouchInProgress(!1);
}
function getNextPhase(currentPhase) {
var nextPhase = currentPhase,
validTime = validateSwipeTime(),
validDistance = validateSwipeDistance(),
didCancel = didSwipeBackToCancel();
return (
!validTime || didCancel
? (nextPhase = PHASE_CANCEL)
: !validDistance || currentPhase != PHASE_MOVE || (options.triggerOnTouchEnd && !options.triggerOnTouchLeave)
? !validDistance && currentPhase == PHASE_END && options.triggerOnTouchLeave && (nextPhase = PHASE_CANCEL)
: (nextPhase = PHASE_END),
nextPhase
);
}
function triggerHandler(event, phase) {
var ret,
touches = event.touches;
return (
(didSwipe() || hasSwipes()) && (ret = triggerHandlerForGesture(event, phase, SWIPE)),
(didPinch() || hasPinches()) && ret !== !1 && (ret = triggerHandlerForGesture(event, phase, PINCH)),
didDoubleTap() && ret !== !1
? (ret = triggerHandlerForGesture(event, phase, DOUBLE_TAP))
: didLongTap() && ret !== !1
? (ret = triggerHandlerForGesture(event, phase, LONG_TAP))
: didTap() && ret !== !1 && (ret = triggerHandlerForGesture(event, phase, TAP)),
phase === PHASE_CANCEL && touchCancel(event),
phase === PHASE_END && (touches ? touches.length || touchCancel(event) : touchCancel(event)),
ret
);
}
function triggerHandlerForGesture(event, phase, gesture) {
var ret;
if (gesture == SWIPE) {
if (
($element.trigger("swipeStatus", [
phase,
direction || null,
distance || 0,
duration || 0,
fingerCount,
fingerData,
currentDirection,
]),
options.swipeStatus &&
((ret = options.swipeStatus.call(
$element,
event,
phase,
direction || null,
distance || 0,
duration || 0,
fingerCount,
fingerData,
currentDirection
)),
ret === !1))
)
return !1;
if (phase == PHASE_END && validateSwipe()) {
if (
(clearTimeout(singleTapTimeout),
clearTimeout(holdTimeout),
$element.trigger("swipe", [direction, distance, duration, fingerCount, fingerData, currentDirection]),
options.swipe &&
((ret = options.swipe.call(
$element,
event,
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection
)),
ret === !1))
)
return !1;
switch (direction) {
case LEFT:
$element.trigger("swipeLeft", [direction, distance, duration, fingerCount, fingerData, currentDirection]),
options.swipeLeft &&
(ret = options.swipeLeft.call(
$element,
event,
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection
));
break;
case RIGHT:
$element.trigger("swipeRight", [
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection,
]),
options.swipeRight &&
(ret = options.swipeRight.call(
$element,
event,
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection
));
break;
case UP:
$element.trigger("swipeUp", [direction, distance, duration, fingerCount, fingerData, currentDirection]),
options.swipeUp &&
(ret = options.swipeUp.call(
$element,
event,
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection
));
break;
case DOWN:
$element.trigger("swipeDown", [direction, distance, duration, fingerCount, fingerData, currentDirection]),
options.swipeDown &&
(ret = options.swipeDown.call(
$element,
event,
direction,
distance,
duration,
fingerCount,
fingerData,
currentDirection
));
}
}
}
if (gesture == PINCH) {
if (
($element.trigger("pinchStatus", [
phase,
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData,
]),
options.pinchStatus &&
((ret = options.pinchStatus.call(
$element,
event,
phase,
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData
)),
ret === !1))
)
return !1;
if (phase == PHASE_END && validatePinch())
switch (pinchDirection) {
case IN:
$element.trigger("pinchIn", [
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData,
]),
options.pinchIn &&
(ret = options.pinchIn.call(
$element,
event,
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData
));
break;
case OUT:
$element.trigger("pinchOut", [
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData,
]),
options.pinchOut &&
(ret = options.pinchOut.call(
$element,
event,
pinchDirection || null,
pinchDistance || 0,
duration || 0,
fingerCount,
pinchZoom,
fingerData
));
}
}
return (
gesture == TAP
? (phase !== PHASE_CANCEL && phase !== PHASE_END) ||
(clearTimeout(singleTapTimeout),
clearTimeout(holdTimeout),
hasDoubleTap() && !inDoubleTap()
? ((doubleTapStartTime = getTimeStamp()),
(singleTapTimeout = setTimeout(
$.proxy(function () {
(doubleTapStartTime = null),
$element.trigger("tap", [event.target]),
options.tap && (ret = options.tap.call($element, event, event.target));
}, this),
options.doubleTapThreshold
)))
: ((doubleTapStartTime = null),
$element.trigger("tap", [event.target]),
options.tap && (ret = options.tap.call($element, event, event.target))))
: gesture == DOUBLE_TAP
? (phase !== PHASE_CANCEL && phase !== PHASE_END) ||
(clearTimeout(singleTapTimeout),
clearTimeout(holdTimeout),
(doubleTapStartTime = null),
$element.trigger("doubletap", [event.target]),
options.doubleTap && (ret = options.doubleTap.call($element, event, event.target)))
: gesture == LONG_TAP &&
((phase !== PHASE_CANCEL && phase !== PHASE_END) ||
(clearTimeout(singleTapTimeout),
(doubleTapStartTime = null),
$element.trigger("longtap", [event.target]),
options.longTap && (ret = options.longTap.call($element, event, event.target)))),
ret
);
}
function validateSwipeDistance() {
var valid = !0;
return null !== options.threshold && (valid = distance >= options.threshold), valid;
}
function didSwipeBackToCancel() {
var cancelled = !1;
return (
null !== options.cancelThreshold &&
null !== direction &&
(cancelled = getMaxDistance(direction) - distance >= options.cancelThreshold),
cancelled
);
}
function validatePinchDistance() {
return null !== options.pinchThreshold ? pinchDistance >= options.pinchThreshold : !0;
}
function validateSwipeTime() {
var result;
return (result = options.maxTimeThreshold ? !(duration >= options.maxTimeThreshold) : !0);
}
function validateDefaultEvent(jqEvent, direction) {
if (options.preventDefaultEvents !== !1)
if (options.allowPageScroll === NONE) jqEvent.preventDefault();
else {
var auto = options.allowPageScroll === AUTO;
switch (direction) {
case LEFT:
((options.swipeLeft && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) &&
jqEvent.preventDefault();
break;
case RIGHT:
((options.swipeRight && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) &&
jqEvent.preventDefault();
break;
case UP:
((options.swipeUp && auto) || (!auto && options.allowPageScroll != VERTICAL)) && jqEvent.preventDefault();
break;
case DOWN:
((options.swipeDown && auto) || (!auto && options.allowPageScroll != VERTICAL)) &&
jqEvent.preventDefault();
break;
case NONE:
}
}
}
function validatePinch() {
var hasCorrectFingerCount = validateFingers(),
hasEndPoint = validateEndPoint(),
hasCorrectDistance = validatePinchDistance();
return hasCorrectFingerCount && hasEndPoint && hasCorrectDistance;
}
function hasPinches() {
return !!(options.pinchStatus || options.pinchIn || options.pinchOut);
}
function didPinch() {
return !(!validatePinch() || !hasPinches());
}
function validateSwipe() {
var hasValidTime = validateSwipeTime(),
hasValidDistance = validateSwipeDistance(),
hasCorrectFingerCount = validateFingers(),
hasEndPoint = validateEndPoint(),
didCancel = didSwipeBackToCancel(),
valid = !didCancel && hasEndPoint && hasCorrectFingerCount && hasValidDistance && hasValidTime;
return valid;
}
function hasSwipes() {
return !!(
options.swipe ||
options.swipeStatus ||
options.swipeLeft ||
options.swipeRight ||
options.swipeUp ||
options.swipeDown
);
}
function didSwipe() {
return !(!validateSwipe() || !hasSwipes());
}
function validateFingers() {
return fingerCount === options.fingers || options.fingers === ALL_FINGERS || !SUPPORTS_TOUCH;
}
function validateEndPoint() {
return 0 !== fingerData[0].end.x;
}
function hasTap() {
return !!options.tap;
}
function hasDoubleTap() {
return !!options.doubleTap;
}
function hasLongTap() {
return !!options.longTap;
}
function validateDoubleTap() {
if (null == doubleTapStartTime) return !1;
var now = getTimeStamp();
return hasDoubleTap() && now - doubleTapStartTime <= options.doubleTapThreshold;
}
function inDoubleTap() {
return validateDoubleTap();
}
function validateTap() {
return (1 === fingerCount || !SUPPORTS_TOUCH) && (isNaN(distance) || distance < options.threshold);
}
function validateLongTap() {
return duration > options.longTapThreshold && DOUBLE_TAP_THRESHOLD > distance;
}
function didTap() {
return !(!validateTap() || !hasTap());
}
function didDoubleTap() {
return !(!validateDoubleTap() || !hasDoubleTap());
}
function didLongTap() {
return !(!validateLongTap() || !hasLongTap());
}
function startMultiFingerRelease(event) {
(previousTouchEndTime = getTimeStamp()), (fingerCountAtRelease = event.touches.length + 1);
}
function cancelMultiFingerRelease() {
(previousTouchEndTime = 0), (fingerCountAtRelease = 0);
}
function inMultiFingerRelease() {
var withinThreshold = !1;
if (previousTouchEndTime) {
var diff = getTimeStamp() - previousTouchEndTime;
diff <= options.fingerReleaseThreshold && (withinThreshold = !0);
}
return withinThreshold;
}
function getTouchInProgress() {
return !($element.data(PLUGIN_NS + "_intouch") !== !0);
}
function setTouchInProgress(val) {
$element &&
(val === !0
? ($element.on(MOVE_EV, touchMove),
$element.on(END_EV, touchEnd),
LEAVE_EV && $element.on(LEAVE_EV, touchLeave))
: ($element.off(MOVE_EV, touchMove, !1),
$element.off(END_EV, touchEnd, !1),
LEAVE_EV && $element.off(LEAVE_EV, touchLeave, !1)),
$element.data(PLUGIN_NS + "_intouch", val === !0));
}
function createFingerData(id, evt) {
var f = { start: { x: 0, y: 0 }, last: { x: 0, y: 0 }, end: { x: 0, y: 0 } };
return (
(f.start.x = f.last.x = f.end.x = evt.pageX || evt.clientX),
(f.start.y = f.last.y = f.end.y = evt.pageY || evt.clientY),
(fingerData[id] = f),
f
);
}
function updateFingerData(evt) {
var id = void 0 !== evt.identifier ? evt.identifier : 0,
f = getFingerData(id);
return (
null === f && (f = createFingerData(id, evt)),
(f.last.x = f.end.x),
(f.last.y = f.end.y),
(f.end.x = evt.pageX || evt.clientX),
(f.end.y = evt.pageY || evt.clientY),
f
);
}
function getFingerData(id) {
return fingerData[id] || null;
}
function setMaxDistance(direction, distance) {
direction != NONE &&
((distance = Math.max(distance, getMaxDistance(direction))), (maximumsMap[direction].distance = distance));
}
function getMaxDistance(direction) {
return maximumsMap[direction] ? maximumsMap[direction].distance : void 0;
}
function createMaximumsData() {
var maxData = {};
return (
(maxData[LEFT] = createMaximumVO(LEFT)),
(maxData[RIGHT] = createMaximumVO(RIGHT)),
(maxData[UP] = createMaximumVO(UP)),
(maxData[DOWN] = createMaximumVO(DOWN)),
maxData
);
}
function createMaximumVO(dir) {
return { direction: dir, distance: 0 };
}
function calculateDuration() {
return endTime - startTime;
}
function calculateTouchesDistance(startPoint, endPoint) {
var diffX = Math.abs(startPoint.x - endPoint.x),
diffY = Math.abs(startPoint.y - endPoint.y);
return Math.round(Math.sqrt(diffX * diffX + diffY * diffY));
}
function calculatePinchZoom(startDistance, endDistance) {
var percent = (endDistance / startDistance) * 1;
return percent.toFixed(2);
}
function calculatePinchDirection() {
return 1 > pinchZoom ? OUT : IN;
}
function calculateDistance(startPoint, endPoint) {
return Math.round(Math.sqrt(Math.pow(endPoint.x - startPoint.x, 2) + Math.pow(endPoint.y - startPoint.y, 2)));
}
function calculateAngle(startPoint, endPoint) {
var x = startPoint.x - endPoint.x,
y = endPoint.y - startPoint.y,
r = Math.atan2(y, x),
angle = Math.round((180 * r) / Math.PI);
return 0 > angle && (angle = 360 - Math.abs(angle)), angle;
}
function calculateDirection(startPoint, endPoint) {
if (comparePoints(startPoint, endPoint)) return NONE;
var angle = calculateAngle(startPoint, endPoint);
return 45 >= angle && angle >= 0
? LEFT
: 360 >= angle && angle >= 315
? LEFT
: angle >= 135 && 225 >= angle
? RIGHT
: angle > 45 && 135 > angle
? DOWN
: UP;
}
function getTimeStamp() {
var now = new Date();
return now.getTime();
}
function getbounds(el) {
el = $(el);
var offset = el.offset(),
bounds = {
left: offset.left,
right: offset.left + el.outerWidth(),
top: offset.top,
bottom: offset.top + el.outerHeight(),
};
return bounds;
}
function isInBounds(point, bounds) {
return point.x > bounds.left && point.x < bounds.right && point.y > bounds.top && point.y < bounds.bottom;
}
function comparePoints(pointA, pointB) {
return pointA.x == pointB.x && pointA.y == pointB.y;
}
var options = $.extend({}, options),
useTouchEvents = SUPPORTS_TOUCH || SUPPORTS_POINTER || !options.fallbackToMouseEvents,
START_EV = useTouchEvents
? SUPPORTS_POINTER
? SUPPORTS_POINTER_IE10
? "MSPointerDown"
: "pointerdown"
: "touchstart"
: "mousedown",
MOVE_EV = useTouchEvents
? SUPPORTS_POINTER
? SUPPORTS_POINTER_IE10
? "MSPointerMove"
: "pointermove"
: "touchmove"
: "mousemove",
END_EV = useTouchEvents
? SUPPORTS_POINTER
? SUPPORTS_POINTER_IE10
? "MSPointerUp"
: "pointerup"
: "touchend"
: "mouseup",
LEAVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? "mouseleave" : null) : "mouseleave",
CANCEL_EV = SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? "MSPointerCancel" : "pointercancel") : "touchcancel",
distance = 0,
direction = null,
currentDirection = null,
duration = 0,
startTouchesDistance = 0,
endTouchesDistance = 0,
pinchZoom = 1,
pinchDistance = 0,
pinchDirection = 0,
maximumsMap = null,
$element = $(element),
phase = "start",
fingerCount = 0,
fingerData = {},
startTime = 0,
endTime = 0,
previousTouchEndTime = 0,
fingerCountAtRelease = 0,
doubleTapStartTime = 0,
singleTapTimeout = null,
holdTimeout = null;
try {
$element.on(START_EV, touchStart), $element.on(CANCEL_EV, touchCancel);
} catch (e) {
$.error("events not supported " + START_EV + "," + CANCEL_EV + " on jQuery.swipe");
}
(this.enable = function () {
return this.disable(), $element.on(START_EV, touchStart), $element.on(CANCEL_EV, touchCancel), $element;
}),
(this.disable = function () {
return removeListeners(), $element;
}),
(this.destroy = function () {
removeListeners(), $element.data(PLUGIN_NS, null), ($element = null);
}),
(this.option = function (property, value) {
if ("object" == typeof property) options = $.extend(options, property);
else if (void 0 !== options[property]) {
if (void 0 === value) return options[property];
options[property] = value;
} else {
if (!property) return options;
$.error("Option " + property + " does not exist on jQuery.swipe.options");
}
return null;
});
}
var VERSION = "1.6.18",
LEFT = "left",
RIGHT = "right",
UP = "up",
DOWN = "down",
IN = "in",
OUT = "out",
NONE = "none",
AUTO = "auto",
SWIPE = "swipe",
PINCH = "pinch",
TAP = "tap",
DOUBLE_TAP = "doubletap",
LONG_TAP = "longtap",
HORIZONTAL = "horizontal",
VERTICAL = "vertical",
ALL_FINGERS = "all",
DOUBLE_TAP_THRESHOLD = 10,
PHASE_START = "start",
PHASE_MOVE = "move",
PHASE_END = "end",
PHASE_CANCEL = "cancel",
SUPPORTS_TOUCH = "ontouchstart" in window,
SUPPORTS_POINTER_IE10 = window.navigator.msPointerEnabled && !window.PointerEvent && !SUPPORTS_TOUCH,
SUPPORTS_POINTER = (window.PointerEvent || window.navigator.msPointerEnabled) && !SUPPORTS_TOUCH,
PLUGIN_NS = "TouchSwipe",
defaults = {
fingers: 1,
threshold: 75,
cancelThreshold: null,
pinchThreshold: 20,
maxTimeThreshold: null,
fingerReleaseThreshold: 250,
longTapThreshold: 500,
doubleTapThreshold: 200,
swipe: null,
swipeLeft: null,
swipeRight: null,
swipeUp: null,
swipeDown: null,
swipeStatus: null,
pinchIn: null,
pinchOut: null,
pinchStatus: null,
click: null,
tap: null,
doubleTap: null,
longTap: null,
hold: null,
triggerOnTouchEnd: !0,
triggerOnTouchLeave: !1,
allowPageScroll: "auto",
fallbackToMouseEvents: !0,
excludedElements: ".noSwipe",
preventDefaultEvents: !0,
};
($.fn.swipe = function (method) {
var $this = $(this),
plugin = $this.data(PLUGIN_NS);
if (plugin && "string" == typeof method) {
if (plugin[method]) return plugin[method].apply(plugin, Array.prototype.slice.call(arguments, 1));
$.error("Method " + method + " does not exist on jQuery.swipe");
} else if (plugin && "object" == typeof method) plugin.option.apply(plugin, arguments);
else if (!(plugin || ("object" != typeof method && method))) return init.apply(this, arguments);
return $this;
}),
($.fn.swipe.version = VERSION),
($.fn.swipe.defaults = defaults),
($.fn.swipe.phases = {
PHASE_START: PHASE_START,
PHASE_MOVE: PHASE_MOVE,
PHASE_END: PHASE_END,
PHASE_CANCEL: PHASE_CANCEL,
}),
($.fn.swipe.directions = { LEFT: LEFT, RIGHT: RIGHT, UP: UP, DOWN: DOWN, IN: IN, OUT: OUT }),
($.fn.swipe.pageScroll = { NONE: NONE, HORIZONTAL: HORIZONTAL, VERTICAL: VERTICAL, AUTO: AUTO }),
($.fn.swipe.fingers = { ONE: 1, TWO: 2, THREE: 3, FOUR: 4, FIVE: 5, ALL: ALL_FINGERS });
});