484 lines
14 KiB
JavaScript
484 lines
14 KiB
JavaScript
(function(a) {
|
|
typeof define === "function" && define.amd && define.amd.jQuery ? define(["jquery"], a) : a(jQuery)
|
|
})(function(a) {
|
|
function b(b) {
|
|
if (b && b.allowPageScroll === void 0 && (b.swipe !== void 0 || b.swipeStatus !== void 0)) b.allowPageScroll = i;
|
|
if (b.click !== void 0 && b.tap === void 0) b.tap = b.click;
|
|
b || (b = {});
|
|
b = a.extend({}, a.fn.swipe.defaults, b);
|
|
return this.each(function() {
|
|
var g = a(this),
|
|
d = g.data(R);
|
|
d || (d = new c(this, b), g.data(R, d))
|
|
})
|
|
}
|
|
|
|
function c(b, c) {
|
|
function ha(b) {
|
|
if (t.data(R + "_intouch") !== !0 && !(a(b.target).closest(c.excludedElements,
|
|
t).length > 0)) {
|
|
var g = b.originalEvent ? b.originalEvent : b,
|
|
d, k = r ? g.touches[0] : g;
|
|
A = F;
|
|
r ? B = g.touches.length : b.preventDefault();
|
|
G = 0;
|
|
K = H = null;
|
|
N = O = D = 0;
|
|
I = 1;
|
|
L = 0;
|
|
w = Ba();
|
|
Y = Ca();
|
|
Z = V = 0;
|
|
if (!r || B === c.fingers || c.fingers === x || W()) {
|
|
if (ia(0, k), aa = P(), B == 2 && (ia(1, g.touches[1]), O = N = ja(w[0].start, w[1].start)), c.swipeStatus || c.pinchStatus) d = J(g, A)
|
|
} else d = !1;
|
|
if (d === !1) return A = z, J(g, A), d;
|
|
else c.hold && (ka = setTimeout(a.proxy(function() {
|
|
t.trigger("hold", [g.target]);
|
|
c.hold && (d = c.hold.call(t, g, g.target))
|
|
}, this), c.longTapThreshold)),
|
|
ba(!0);
|
|
return null
|
|
}
|
|
}
|
|
|
|
function la(b) {
|
|
var o = b.originalEvent ? b.originalEvent : b;
|
|
if (!(A === C || A === z || ta())) {
|
|
var p, q = ua(r ? o.touches[0] : o);
|
|
X = P();
|
|
if (r) B = o.touches.length;
|
|
c.hold && clearTimeout(ka);
|
|
A = u;
|
|
B == 2 && (O == 0 ? (ia(1, o.touches[1]), O = N = ja(w[0].start, w[1].start)) : (ua(o.touches[1]), N = ja(w[0].end, w[1].end), K = I < 1 ? j : h), I = (N / O * 1).toFixed(2), L = Math.abs(O - N));
|
|
if (B === c.fingers || c.fingers === x || !r || W()) {
|
|
var n;
|
|
n = q.start;
|
|
var m = q.end;
|
|
n = Math.round(Math.atan2(m.y - n.y, n.x - m.x) * 180 / Math.PI);
|
|
n < 0 && (n = 360 - Math.abs(n));
|
|
n = H = n <= 45 &&
|
|
n >= 0 ? d : n <= 360 && n >= 315 ? d : n >= 135 && n <= 225 ? f : n > 45 && n < 135 ? k : g;
|
|
if (c.allowPageScroll === i || W()) b.preventDefault();
|
|
else switch (m = c.allowPageScroll === l, n) {
|
|
case d:
|
|
(c.swipeLeft && m || !m && c.allowPageScroll != s) && b.preventDefault();
|
|
break;
|
|
case f:
|
|
(c.swipeRight && m || !m && c.allowPageScroll != s) && b.preventDefault();
|
|
break;
|
|
case g:
|
|
(c.swipeUp && m || !m && c.allowPageScroll != v) && b.preventDefault();
|
|
break;
|
|
case k:
|
|
(c.swipeDown && m || !m && c.allowPageScroll != v) && b.preventDefault()
|
|
}
|
|
G = Math.round(Math.sqrt(Math.pow(q.end.x - q.start.x, 2) + Math.pow(q.end.y -
|
|
q.start.y, 2)));
|
|
D = X - aa;
|
|
b = H;
|
|
n = G;
|
|
n = Math.max(n, va(b));
|
|
Y[b].distance = n;
|
|
if (c.swipeStatus || c.pinchStatus) p = J(o, A);
|
|
if (!c.triggerOnTouchEnd || c.triggerOnTouchLeave) b = !0, c.triggerOnTouchLeave && (b = a(this), n = b.offset(), b = {
|
|
left: n.left,
|
|
right: n.left + b.outerWidth(),
|
|
top: n.top,
|
|
bottom: n.top + b.outerHeight()
|
|
}, b = q.end.x > b.left && q.end.x < b.right && q.end.y > b.top && q.end.y < b.bottom), !c.triggerOnTouchEnd && b ? A = ma(u) : c.triggerOnTouchLeave && !b && (A = ma(C)), (A == z || A == C) && J(o, A)
|
|
} else A = z, J(o, A);
|
|
p === !1 && (A = z, J(o, A))
|
|
}
|
|
}
|
|
|
|
function na(a) {
|
|
var b =
|
|
a.originalEvent;
|
|
if (r && b.touches.length > 0) return V = P(), Z = event.touches.length + 1, !0;
|
|
ta() && (B = Z);
|
|
X = P();
|
|
D = X - aa;
|
|
oa() || !pa() ? (A = z, J(b, A)) : c.triggerOnTouchEnd || c.triggerOnTouchEnd == !1 && A === u ? (a.preventDefault(), A = C, J(b, A)) : !c.triggerOnTouchEnd && c.tap ? (A = C, S(b, A, q)) : A === u && (A = z, J(b, A));
|
|
ba(!1);
|
|
return null
|
|
}
|
|
|
|
function T() {
|
|
N = O = aa = X = B = 0;
|
|
I = 1;
|
|
Z = V = 0;
|
|
ba(!1)
|
|
}
|
|
|
|
function qa(a) {
|
|
a = a.originalEvent;
|
|
c.triggerOnTouchLeave && (A = ma(C), J(a, A))
|
|
}
|
|
|
|
function wa() {
|
|
t.unbind(ca, ha);
|
|
t.unbind(da, T);
|
|
t.unbind(ra, la);
|
|
t.unbind(sa, na);
|
|
U && t.unbind(U,
|
|
qa);
|
|
ba(!1)
|
|
}
|
|
|
|
function ma(a) {
|
|
var b = a,
|
|
g = c.maxTimeThreshold ? D >= c.maxTimeThreshold ? !1 : !0 : !0,
|
|
d = pa(),
|
|
k = oa();
|
|
!g || k ? b = z : d && a == u && (!c.triggerOnTouchEnd || c.triggerOnTouchLeave) ? b = C : !d && a == C && c.triggerOnTouchLeave && (b = z);
|
|
return b
|
|
}
|
|
|
|
function J(a, b) {
|
|
var g = void 0;
|
|
if (xa() && ya() || ya()) g = S(a, b, m);
|
|
else if ((za() && W() || W()) && g !== !1) g = S(a, b, o);
|
|
Aa() && c.doubleTap && g !== !1 ? g = S(a, b, p) : D > c.longTapThreshold && G < y && c.longTap && g !== !1 ? g = S(a, b, n) : (B === 1 || !r) && (isNaN(G) || G < c.threshold) && c.tap && g !== !1 && (g = S(a, b, q));
|
|
b === z && T(a);
|
|
b === C &&
|
|
(r ? a.touches.length == 0 && T(a) : T(a));
|
|
return g
|
|
}
|
|
|
|
function S(b, i, l) {
|
|
var s = void 0;
|
|
if (l == m) {
|
|
t.trigger("swipeStatus", [i, H || null, G || 0, D || 0, B, w]);
|
|
if (c.swipeStatus && (s = c.swipeStatus.call(t, b, i, H || null, G || 0, D || 0, B, w), s === !1)) return !1;
|
|
if (i == C && xa()) {
|
|
t.trigger("swipe", [H, G, D, B, w]);
|
|
if (c.swipe && (s = c.swipe.call(t, b, H, G, D, B, w), s === !1)) return !1;
|
|
switch (H) {
|
|
case d:
|
|
t.trigger("swipeLeft", [H, G, D, B, w]);
|
|
c.swipeLeft && (s = c.swipeLeft.call(t, b, H, G, D, B, w));
|
|
break;
|
|
case f:
|
|
t.trigger("swipeRight", [H, G, D, B, w]);
|
|
c.swipeRight && (s = c.swipeRight.call(t,
|
|
b, H, G, D, B, w));
|
|
break;
|
|
case g:
|
|
t.trigger("swipeUp", [H, G, D, B, w]);
|
|
c.swipeUp && (s = c.swipeUp.call(t, b, H, G, D, B, w));
|
|
break;
|
|
case k:
|
|
t.trigger("swipeDown", [H, G, D, B, w]), c.swipeDown && (s = c.swipeDown.call(t, b, H, G, D, B, w))
|
|
}
|
|
}
|
|
}
|
|
if (l == o) {
|
|
t.trigger("pinchStatus", [i, K || null, L || 0, D || 0, B, I, w]);
|
|
if (c.pinchStatus && (s = c.pinchStatus.call(t, b, i, K || null, L || 0, D || 0, B, I, w), s === !1)) return !1;
|
|
if (i == C && za()) switch (K) {
|
|
case h:
|
|
t.trigger("pinchIn", [K || null, L || 0, D || 0, B, I, w]);
|
|
c.pinchIn && (s = c.pinchIn.call(t, b, K || null, L || 0, D || 0, B, I, w));
|
|
break;
|
|
case j:
|
|
t.trigger("pinchOut", [K || null, L || 0, D || 0, B, I, w]), c.pinchOut && (s = c.pinchOut.call(t, b, K || null, L || 0, D || 0, B, I, w))
|
|
}
|
|
}
|
|
if (l == q) {
|
|
if (i === z || i === C) clearTimeout(ea), clearTimeout(ka), c.doubleTap && !Aa() ? (Q = P(), ea = setTimeout(a.proxy(function() {
|
|
Q = null;
|
|
t.trigger("tap", [b.target]);
|
|
c.tap && (s = c.tap.call(t, b, b.target))
|
|
}, this), c.doubleTapThreshold)) : (Q = null, t.trigger("tap", [b.target]), c.tap && (s = c.tap.call(t, b, b.target)))
|
|
} else if (l == p) {
|
|
if (i === z || i === C) clearTimeout(ea), Q = null, t.trigger("doubletap", [b.target]), c.doubleTap && (s = c.doubleTap.call(t,
|
|
b, b.target))
|
|
} else if (l == n && (i === z || i === C)) clearTimeout(ea), Q = null, t.trigger("longtap", [b.target]), c.longTap && (s = c.longTap.call(t, b, b.target));
|
|
return s
|
|
}
|
|
|
|
function pa() {
|
|
var a = !0;
|
|
c.threshold !== null && (a = G >= c.threshold);
|
|
return a
|
|
}
|
|
|
|
function oa() {
|
|
var a = !1;
|
|
c.cancelThreshold !== null && H !== null && (a = va(H) - G >= c.cancelThreshold);
|
|
return a
|
|
}
|
|
|
|
function za() {
|
|
var a = B === c.fingers || c.fingers === x || !r,
|
|
b = w[0].end.x !== 0,
|
|
g;
|
|
g = c.pinchThreshold !== null ? L >= c.pinchThreshold : !0;
|
|
return a && b && g
|
|
}
|
|
|
|
function W() {
|
|
return !(!c.pinchStatus && !c.pinchIn &&
|
|
!c.pinchOut)
|
|
}
|
|
|
|
function xa() {
|
|
var a = c.maxTimeThreshold ? D >= c.maxTimeThreshold ? !1 : !0 : !0,
|
|
b = pa(),
|
|
g = B === c.fingers || c.fingers === x || !r,
|
|
d = w[0].end.x !== 0;
|
|
return !oa() && d && g && b && a
|
|
}
|
|
|
|
function ya() {
|
|
return !(!c.swipe && !c.swipeStatus && !c.swipeLeft && !c.swipeRight && !c.swipeUp && !c.swipeDown)
|
|
}
|
|
|
|
function Aa() {
|
|
if (Q == null) return !1;
|
|
var a = P();
|
|
return !!c.doubleTap && a - Q <= c.doubleTapThreshold
|
|
}
|
|
|
|
function ta() {
|
|
var a = !1;
|
|
V && P() - V <= c.fingerReleaseThreshold && (a = !0);
|
|
return a
|
|
}
|
|
|
|
function ba(a) {
|
|
a === !0 ? (t.bind(ra, la), t.bind(sa, na), U && t.bind(U, qa)) :
|
|
(t.unbind(ra, la, !1), t.unbind(sa, na, !1), U && t.unbind(U, qa, !1));
|
|
t.data(R + "_intouch", a === !0)
|
|
}
|
|
|
|
function ia(a, b) {
|
|
w[a].identifier = b.identifier !== void 0 ? b.identifier : 0;
|
|
w[a].start.x = w[a].end.x = b.pageX || b.clientX;
|
|
w[a].start.y = w[a].end.y = b.pageY || b.clientY;
|
|
return w[a]
|
|
}
|
|
|
|
function ua(a) {
|
|
var b;
|
|
a: {
|
|
for (b = 0; b < w.length; b++)
|
|
if (w[b].identifier == (a.identifier !== void 0 ? a.identifier : 0)) {
|
|
b = w[b];
|
|
break a
|
|
}
|
|
b = void 0
|
|
}
|
|
b.end.x = a.pageX || a.clientX;
|
|
b.end.y = a.pageY || a.clientY;
|
|
return b
|
|
}
|
|
|
|
function Ba() {
|
|
for (var a = [], b = 0; b <= 5; b++) a.push({
|
|
start: {
|
|
x: 0,
|
|
y: 0
|
|
},
|
|
end: {
|
|
x: 0,
|
|
y: 0
|
|
},
|
|
identifier: 0
|
|
});
|
|
return a
|
|
}
|
|
|
|
function va(a) {
|
|
if (Y[a]) return Y[a].distance
|
|
}
|
|
|
|
function Ca() {
|
|
var a = {};
|
|
a[d] = fa(d);
|
|
a[f] = fa(f);
|
|
a[g] = fa(g);
|
|
a[k] = fa(k);
|
|
return a
|
|
}
|
|
|
|
function fa(a) {
|
|
return {
|
|
direction: a,
|
|
distance: 0
|
|
}
|
|
}
|
|
|
|
function ja(a, b) {
|
|
var c = Math.abs(a.x - b.x),
|
|
g = Math.abs(a.y - b.y);
|
|
return Math.round(Math.sqrt(c * c + g * g))
|
|
}
|
|
|
|
function P() {
|
|
return (new Date).getTime()
|
|
}
|
|
var ga = r || M || !c.fallbackToMouseEvents,
|
|
ca = ga ? M ? E ? "MSPointerDown" : "pointerdown" : "touchstart" : "mousedown",
|
|
ra = ga ? M ? E ? "MSPointerMove" : "pointermove" : "touchmove" :
|
|
"mousemove",
|
|
sa = ga ? M ? E ? "MSPointerUp" : "pointerup" : "touchend" : "mouseup",
|
|
U = ga ? null : "mouseleave",
|
|
da = M ? E ? "MSPointerCancel" : "pointercancel" : "touchcancel",
|
|
G = 0,
|
|
H = null,
|
|
D = 0,
|
|
O = 0,
|
|
N = 0,
|
|
I = 1,
|
|
L = 0,
|
|
K = 0,
|
|
Y = null,
|
|
t = a(b),
|
|
A = "start",
|
|
B = 0,
|
|
w = null,
|
|
aa = 0,
|
|
X = 0,
|
|
V = 0,
|
|
Z = 0,
|
|
Q = 0,
|
|
ea = null,
|
|
ka = null;
|
|
try {
|
|
t.bind(ca, ha), t.bind(da, T)
|
|
} catch (Da) {
|
|
a.error("events not supported " + ca + "," + da + " on jQuery.swipe")
|
|
}
|
|
this.enable = function() {
|
|
t.bind(ca, ha);
|
|
t.bind(da, T);
|
|
return t
|
|
};
|
|
this.disable = function() {
|
|
wa();
|
|
return t
|
|
};
|
|
this.destroy = function() {
|
|
wa();
|
|
t.data(R, null);
|
|
return t
|
|
};
|
|
this.option = function(b, g) {
|
|
if (c[b] !== void 0)
|
|
if (g === void 0) return c[b];
|
|
else c[b] = g;
|
|
else a.error("Option " + b + " does not exist on jQuery.swipe.options");
|
|
return null
|
|
}
|
|
}
|
|
var d = "left",
|
|
f = "right",
|
|
g = "up",
|
|
k = "down",
|
|
h = "in",
|
|
j = "out",
|
|
i = "none",
|
|
l = "auto",
|
|
m = "swipe",
|
|
o = "pinch",
|
|
q = "tap",
|
|
p = "doubletap",
|
|
n = "longtap",
|
|
s = "horizontal",
|
|
v = "vertical",
|
|
x = "all",
|
|
y = 10,
|
|
F = "start",
|
|
u = "move",
|
|
C = "end",
|
|
z = "cancel",
|
|
r = "ontouchstart" in window,
|
|
E = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled,
|
|
M = window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
|
|
R = "TouchSwipe";
|
|
a.fn.swipe = function(c) {
|
|
var g = a(this),
|
|
d = g.data(R);
|
|
if (d && typeof c === "string")
|
|
if (d[c]) return d[c].apply(this, Array.prototype.slice.call(arguments, 1));
|
|
else a.error("Method " + c + " does not exist on jQuery.swipe");
|
|
else if (!d && (typeof c === "object" || !c)) return b.apply(this, arguments);
|
|
return g
|
|
};
|
|
a.fn.swipe.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: "label, button, input, select, textarea, a, .noSwipe"
|
|
};
|
|
a.fn.swipe.phases = {
|
|
PHASE_START: F,
|
|
PHASE_MOVE: u,
|
|
PHASE_END: C,
|
|
PHASE_CANCEL: z
|
|
};
|
|
a.fn.swipe.directions = {
|
|
LEFT: d,
|
|
RIGHT: f,
|
|
UP: g,
|
|
DOWN: k,
|
|
IN: h,
|
|
OUT: j
|
|
};
|
|
a.fn.swipe.pageScroll = {
|
|
NONE: i,
|
|
HORIZONTAL: s,
|
|
VERTICAL: v,
|
|
AUTO: l
|
|
};
|
|
a.fn.swipe.fingers = {
|
|
ONE: 1,
|
|
TWO: 2,
|
|
THREE: 3,
|
|
ALL: x
|
|
}
|
|
});;
|
|
(function() {
|
|
if (!("undefined" == typeof Muse || "undefined" == typeof Muse.assets)) {
|
|
var a = function(a, b) {
|
|
for (var c = 0, d = a.length; c < d; c++)
|
|
if (a[c] == b) return c;
|
|
return -1
|
|
}(Muse.assets.required, "touchswipe.js");
|
|
if (-1 != a) {
|
|
Muse.assets.required.splice(a, 1);
|
|
for (var a = document.getElementsByTagName("meta"), b = 0, c = a.length; b < c; b++) {
|
|
var d = a[b];
|
|
if ("generator" == d.getAttribute("name")) {
|
|
"2014.2.0.284" != d.getAttribute("content") && Muse.assets.outOfDate.push("touchswipe.js");
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})();
|