Created
July 9, 2020 13:28
-
-
Save shopifydeveloper/386bfdf7318662269617189b1078fef8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! PhotoSwipe - v4.1.3 - 2019-01-08 | |
* http://photoswipe.com | |
* Copyright (c) 2019 Dmitry Semenov; */ | |
!(function (a, b) { | |
"function" == typeof define && define.amd | |
? define(b) | |
: "object" == typeof exports | |
? (module.exports = b()) | |
: (a.PhotoSwipe = b()); | |
})(this, function () { | |
"use strict"; | |
var a = function (a, b, c, d) { | |
var e = { | |
features: null, | |
bind: function (a, b, c, d) { | |
var e = (d ? "remove" : "add") + "EventListener"; | |
b = b.split(" "); | |
for (var f = 0; f < b.length; f++) b[f] && a[e](b[f], c, !1); | |
}, | |
isArray: function (a) { | |
return a instanceof Array; | |
}, | |
createEl: function (a, b) { | |
var c = document.createElement(b || "div"); | |
return a && (c.className = a), c; | |
}, | |
getScrollY: function () { | |
var a = window.pageYOffset; | |
return void 0 !== a ? a : document.documentElement.scrollTop; | |
}, | |
unbind: function (a, b, c) { | |
e.bind(a, b, c, !0); | |
}, | |
removeClass: function (a, b) { | |
var c = new RegExp("(\\s|^)" + b + "(\\s|$)"); | |
a.className = a.className | |
.replace(c, " ") | |
.replace(/^\s\s*/, "") | |
.replace(/\s\s*$/, ""); | |
}, | |
addClass: function (a, b) { | |
e.hasClass(a, b) || (a.className += (a.className ? " " : "") + b); | |
}, | |
hasClass: function (a, b) { | |
return ( | |
a.className && new RegExp("(^|\\s)" + b + "(\\s|$)").test(a.className) | |
); | |
}, | |
getChildByClass: function (a, b) { | |
for (var c = a.firstChild; c; ) { | |
if (e.hasClass(c, b)) return c; | |
c = c.nextSibling; | |
} | |
}, | |
arraySearch: function (a, b, c) { | |
for (var d = a.length; d--; ) if (a[d][c] === b) return d; | |
return -1; | |
}, | |
extend: function (a, b, c) { | |
for (var d in b) | |
if (b.hasOwnProperty(d)) { | |
if (c && a.hasOwnProperty(d)) continue; | |
a[d] = b[d]; | |
} | |
}, | |
easing: { | |
sine: { | |
out: function (a) { | |
return Math.sin(a * (Math.PI / 2)); | |
}, | |
inOut: function (a) { | |
return -(Math.cos(Math.PI * a) - 1) / 2; | |
}, | |
}, | |
cubic: { | |
out: function (a) { | |
return --a * a * a + 1; | |
}, | |
}, | |
}, | |
detectFeatures: function () { | |
if (e.features) return e.features; | |
var a = e.createEl(), | |
b = a.style, | |
c = "", | |
d = {}; | |
if ( | |
((d.oldIE = document.all && !document.addEventListener), | |
(d.touch = "ontouchstart" in window), | |
window.requestAnimationFrame && | |
((d.raf = window.requestAnimationFrame), | |
(d.caf = window.cancelAnimationFrame)), | |
(d.pointerEvent = | |
!!window.PointerEvent || navigator.msPointerEnabled), | |
!d.pointerEvent) | |
) { | |
var f = navigator.userAgent; | |
if (/iP(hone|od)/.test(navigator.platform)) { | |
var g = navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/); | |
g && | |
g.length > 0 && | |
((g = parseInt(g[1], 10)), | |
g >= 1 && g < 8 && (d.isOldIOSPhone = !0)); | |
} | |
var h = f.match(/Android\s([0-9\.]*)/), | |
i = h ? h[1] : 0; | |
(i = parseFloat(i)), | |
i >= 1 && | |
(i < 4.4 && (d.isOldAndroid = !0), (d.androidVersion = i)), | |
(d.isMobileOpera = /opera mini|opera mobi/i.test(f)); | |
} | |
for ( | |
var j, | |
k, | |
l = ["transform", "perspective", "animationName"], | |
m = ["", "webkit", "Moz", "ms", "O"], | |
n = 0; | |
n < 4; | |
n++ | |
) { | |
c = m[n]; | |
for (var o = 0; o < 3; o++) | |
(j = l[o]), | |
(k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j)), | |
!d[j] && k in b && (d[j] = k); | |
c && | |
!d.raf && | |
((c = c.toLowerCase()), | |
(d.raf = window[c + "RequestAnimationFrame"]), | |
d.raf && | |
(d.caf = | |
window[c + "CancelAnimationFrame"] || | |
window[c + "CancelRequestAnimationFrame"])); | |
} | |
if (!d.raf) { | |
var p = 0; | |
(d.raf = function (a) { | |
var b = new Date().getTime(), | |
c = Math.max(0, 16 - (b - p)), | |
d = window.setTimeout(function () { | |
a(b + c); | |
}, c); | |
return (p = b + c), d; | |
}), | |
(d.caf = function (a) { | |
clearTimeout(a); | |
}); | |
} | |
return ( | |
(d.svg = | |
!!document.createElementNS && | |
!!document.createElementNS("http://www.w3.org/2000/svg", "svg") | |
.createSVGRect), | |
(e.features = d), | |
d | |
); | |
}, | |
}; | |
e.detectFeatures(), | |
e.features.oldIE && | |
(e.bind = function (a, b, c, d) { | |
b = b.split(" "); | |
for ( | |
var e, | |
f = (d ? "detach" : "attach") + "Event", | |
g = function () { | |
c.handleEvent.call(c); | |
}, | |
h = 0; | |
h < b.length; | |
h++ | |
) | |
if ((e = b[h])) | |
if ("object" == typeof c && c.handleEvent) { | |
if (d) { | |
if (!c["oldIE" + e]) return !1; | |
} else c["oldIE" + e] = g; | |
a[f]("on" + e, c["oldIE" + e]); | |
} else a[f]("on" + e, c); | |
}); | |
var f = this, | |
g = 25, | |
h = 3, | |
i = { | |
allowPanToNext: !0, | |
spacing: 0.12, | |
bgOpacity: 1, | |
mouseUsed: !1, | |
loop: !0, | |
pinchToClose: !0, | |
closeOnScroll: !0, | |
closeOnVerticalDrag: !0, | |
verticalDragRange: 0.75, | |
hideAnimationDuration: 333, | |
showAnimationDuration: 333, | |
showHideOpacity: !1, | |
focus: !0, | |
escKey: !0, | |
arrowKeys: !0, | |
mainScrollEndFriction: 0.35, | |
panEndFriction: 0.35, | |
isClickableElement: function (a) { | |
return "A" === a.tagName; | |
}, | |
getDoubleTapZoom: function (a, b) { | |
return a ? 1 : b.initialZoomLevel < 0.7 ? 1 : 1.33; | |
}, | |
maxSpreadZoom: 1.33, | |
modal: !0, | |
scaleMode: "fit", | |
}; | |
e.extend(i, d); | |
var j, | |
k, | |
l, | |
m, | |
n, | |
o, | |
p, | |
q, | |
r, | |
s, | |
t, | |
u, | |
v, | |
w, | |
x, | |
y, | |
z, | |
A, | |
B, | |
C, | |
D, | |
E, | |
F, | |
G, | |
H, | |
I, | |
J, | |
K, | |
L, | |
M, | |
N, | |
O, | |
P, | |
Q, | |
R, | |
S, | |
T, | |
U, | |
V, | |
W, | |
X, | |
Y, | |
Z, | |
$, | |
_, | |
aa, | |
ba, | |
ca, | |
da, | |
ea, | |
fa, | |
ga, | |
ha, | |
ia, | |
ja, | |
ka, | |
la, | |
ma = function () { | |
return { x: 0, y: 0 }; | |
}, | |
na = ma(), | |
oa = ma(), | |
pa = ma(), | |
qa = {}, | |
ra = 0, | |
sa = {}, | |
ta = ma(), | |
ua = 0, | |
va = !0, | |
wa = [], | |
xa = {}, | |
ya = !1, | |
za = function (a, b) { | |
e.extend(f, b.publicMethods), wa.push(a); | |
}, | |
Aa = function (a) { | |
var b = ac(); | |
return a > b - 1 ? a - b : a < 0 ? b + a : a; | |
}, | |
Ba = {}, | |
Ca = function (a, b) { | |
return Ba[a] || (Ba[a] = []), Ba[a].push(b); | |
}, | |
Da = function (a) { | |
var b = Ba[a]; | |
if (b) { | |
var c = Array.prototype.slice.call(arguments); | |
c.shift(); | |
for (var d = 0; d < b.length; d++) b[d].apply(f, c); | |
} | |
}, | |
Ea = function () { | |
return new Date().getTime(); | |
}, | |
Fa = function (a) { | |
(ja = a), (f.bg.style.opacity = a * i.bgOpacity); | |
}, | |
Ga = function (a, b, c, d, e) { | |
(!ya || (e && e !== f.currItem)) && | |
(d /= e ? e.fitRatio : f.currItem.fitRatio), | |
(a[E] = u + b + "px, " + c + "px" + v + " scale(" + d + ")"); | |
}, | |
Ha = function (a) { | |
ea && | |
(a && | |
(s > f.currItem.fitRatio | |
? ya || (mc(f.currItem, !1, !0), (ya = !0)) | |
: ya && (mc(f.currItem), (ya = !1))), | |
Ga(ea, pa.x, pa.y, s)); | |
}, | |
Ia = function (a) { | |
a.container && | |
Ga( | |
a.container.style, | |
a.initialPosition.x, | |
a.initialPosition.y, | |
a.initialZoomLevel, | |
a | |
); | |
}, | |
Ja = function (a, b) { | |
b[E] = u + a + "px, 0px" + v; | |
}, | |
Ka = function (a, b) { | |
if (!i.loop && b) { | |
var c = m + (ta.x * ra - a) / ta.x, | |
d = Math.round(a - tb.x); | |
((c < 0 && d > 0) || (c >= ac() - 1 && d < 0)) && | |
(a = tb.x + d * i.mainScrollEndFriction); | |
} | |
(tb.x = a), Ja(a, n); | |
}, | |
La = function (a, b) { | |
var c = ub[a] - sa[a]; | |
return oa[a] + na[a] + c - c * (b / t); | |
}, | |
Ma = function (a, b) { | |
(a.x = b.x), (a.y = b.y), b.id && (a.id = b.id); | |
}, | |
Na = function (a) { | |
(a.x = Math.round(a.x)), (a.y = Math.round(a.y)); | |
}, | |
Oa = null, | |
Pa = function () { | |
Oa && | |
(e.unbind(document, "mousemove", Pa), | |
e.addClass(a, "pswp--has_mouse"), | |
(i.mouseUsed = !0), | |
Da("mouseUsed")), | |
(Oa = setTimeout(function () { | |
Oa = null; | |
}, 100)); | |
}, | |
Qa = function () { | |
e.bind(document, "keydown", f), | |
N.transform && e.bind(f.scrollWrap, "click", f), | |
i.mouseUsed || e.bind(document, "mousemove", Pa), | |
e.bind(window, "resize scroll orientationchange", f), | |
Da("bindEvents"); | |
}, | |
Ra = function () { | |
e.unbind(window, "resize scroll orientationchange", f), | |
e.unbind(window, "scroll", r.scroll), | |
e.unbind(document, "keydown", f), | |
e.unbind(document, "mousemove", Pa), | |
N.transform && e.unbind(f.scrollWrap, "click", f), | |
V && e.unbind(window, p, f), | |
clearTimeout(O), | |
Da("unbindEvents"); | |
}, | |
Sa = function (a, b) { | |
var c = ic(f.currItem, qa, a); | |
return b && (da = c), c; | |
}, | |
Ta = function (a) { | |
return a || (a = f.currItem), a.initialZoomLevel; | |
}, | |
Ua = function (a) { | |
return a || (a = f.currItem), a.w > 0 ? i.maxSpreadZoom : 1; | |
}, | |
Va = function (a, b, c, d) { | |
return d === f.currItem.initialZoomLevel | |
? ((c[a] = f.currItem.initialPosition[a]), !0) | |
: ((c[a] = La(a, d)), | |
c[a] > b.min[a] | |
? ((c[a] = b.min[a]), !0) | |
: c[a] < b.max[a] && ((c[a] = b.max[a]), !0)); | |
}, | |
Wa = function () { | |
if (E) { | |
var b = N.perspective && !G; | |
return ( | |
(u = "translate" + (b ? "3d(" : "(")), | |
void (v = N.perspective ? ", 0px)" : ")") | |
); | |
} | |
(E = "left"), | |
e.addClass(a, "pswp--ie"), | |
(Ja = function (a, b) { | |
b.left = a + "px"; | |
}), | |
(Ia = function (a) { | |
var b = a.fitRatio > 1 ? 1 : a.fitRatio, | |
c = a.container.style, | |
d = b * a.w, | |
e = b * a.h; | |
(c.width = d + "px"), | |
(c.height = e + "px"), | |
(c.left = a.initialPosition.x + "px"), | |
(c.top = a.initialPosition.y + "px"); | |
}), | |
(Ha = function () { | |
if (ea) { | |
var a = ea, | |
b = f.currItem, | |
c = b.fitRatio > 1 ? 1 : b.fitRatio, | |
d = c * b.w, | |
e = c * b.h; | |
(a.width = d + "px"), | |
(a.height = e + "px"), | |
(a.left = pa.x + "px"), | |
(a.top = pa.y + "px"); | |
} | |
}); | |
}, | |
Xa = function (a) { | |
var b = ""; | |
i.escKey && 27 === a.keyCode | |
? (b = "close") | |
: i.arrowKeys && | |
(37 === a.keyCode | |
? (b = "prev") | |
: 39 === a.keyCode && (b = "next")), | |
b && | |
(a.ctrlKey || | |
a.altKey || | |
a.shiftKey || | |
a.metaKey || | |
(a.preventDefault ? a.preventDefault() : (a.returnValue = !1), | |
f[b]())); | |
}, | |
Ya = function (a) { | |
a && (Y || X || fa || T) && (a.preventDefault(), a.stopPropagation()); | |
}, | |
Za = function () { | |
f.setScrollOffset(0, e.getScrollY()); | |
}, | |
$a = {}, | |
_a = 0, | |
ab = function (a) { | |
$a[a] && ($a[a].raf && I($a[a].raf), _a--, delete $a[a]); | |
}, | |
bb = function (a) { | |
$a[a] && ab(a), $a[a] || (_a++, ($a[a] = {})); | |
}, | |
cb = function () { | |
for (var a in $a) $a.hasOwnProperty(a) && ab(a); | |
}, | |
db = function (a, b, c, d, e, f, g) { | |
var h, | |
i = Ea(); | |
bb(a); | |
var j = function () { | |
if ($a[a]) { | |
if (((h = Ea() - i), h >= d)) return ab(a), f(c), void (g && g()); | |
f((c - b) * e(h / d) + b), ($a[a].raf = H(j)); | |
} | |
}; | |
j(); | |
}, | |
eb = { | |
shout: Da, | |
listen: Ca, | |
viewportSize: qa, | |
options: i, | |
isMainScrollAnimating: function () { | |
return fa; | |
}, | |
getZoomLevel: function () { | |
return s; | |
}, | |
getCurrentIndex: function () { | |
return m; | |
}, | |
isDragging: function () { | |
return V; | |
}, | |
isZooming: function () { | |
return aa; | |
}, | |
setScrollOffset: function (a, b) { | |
(sa.x = a), (M = sa.y = b), Da("updateScrollOffset", sa); | |
}, | |
applyZoomPan: function (a, b, c, d) { | |
(pa.x = b), (pa.y = c), (s = a), Ha(d); | |
}, | |
init: function () { | |
if (!j && !k) { | |
var c; | |
(f.framework = e), | |
(f.template = a), | |
(f.bg = e.getChildByClass(a, "pswp__bg")), | |
(J = a.className), | |
(j = !0), | |
(N = e.detectFeatures()), | |
(H = N.raf), | |
(I = N.caf), | |
(E = N.transform), | |
(L = N.oldIE), | |
(f.scrollWrap = e.getChildByClass(a, "pswp__scroll-wrap")), | |
(f.container = e.getChildByClass( | |
f.scrollWrap, | |
"pswp__container" | |
)), | |
(n = f.container.style), | |
(f.itemHolders = y = [ | |
{ el: f.container.children[0], wrap: 0, index: -1 }, | |
{ el: f.container.children[1], wrap: 0, index: -1 }, | |
{ el: f.container.children[2], wrap: 0, index: -1 }, | |
]), | |
(y[0].el.style.display = y[2].el.style.display = "none"), | |
Wa(), | |
(r = { | |
resize: f.updateSize, | |
orientationchange: function () { | |
clearTimeout(O), | |
(O = setTimeout(function () { | |
qa.x !== f.scrollWrap.clientWidth && f.updateSize(); | |
}, 500)); | |
}, | |
scroll: Za, | |
keydown: Xa, | |
click: Ya, | |
}); | |
var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera; | |
for ( | |
(N.animationName && N.transform && !d) || | |
(i.showAnimationDuration = i.hideAnimationDuration = 0), | |
c = 0; | |
c < wa.length; | |
c++ | |
) | |
f["init" + wa[c]](); | |
if (b) { | |
var g = (f.ui = new b(f, e)); | |
g.init(); | |
} | |
Da("firstUpdate"), | |
(m = m || i.index || 0), | |
(isNaN(m) || m < 0 || m >= ac()) && (m = 0), | |
(f.currItem = _b(m)), | |
(N.isOldIOSPhone || N.isOldAndroid) && (va = !1), | |
a.setAttribute("aria-hidden", "false"), | |
i.modal && | |
(va | |
? (a.style.position = "fixed") | |
: ((a.style.position = "absolute"), | |
(a.style.top = e.getScrollY() + "px"))), | |
void 0 === M && (Da("initialLayout"), (M = K = e.getScrollY())); | |
var l = "pswp--open "; | |
for ( | |
i.mainClass && (l += i.mainClass + " "), | |
i.showHideOpacity && (l += "pswp--animate_opacity "), | |
l += G ? "pswp--touch" : "pswp--notouch", | |
l += N.animationName ? " pswp--css_animation" : "", | |
l += N.svg ? " pswp--svg" : "", | |
e.addClass(a, l), | |
f.updateSize(), | |
o = -1, | |
ua = null, | |
c = 0; | |
c < h; | |
c++ | |
) | |
Ja((c + o) * ta.x, y[c].el.style); | |
L || e.bind(f.scrollWrap, q, f), | |
Ca("initialZoomInEnd", function () { | |
f.setContent(y[0], m - 1), | |
f.setContent(y[2], m + 1), | |
(y[0].el.style.display = y[2].el.style.display = "block"), | |
i.focus && a.focus(), | |
Qa(); | |
}), | |
f.setContent(y[1], m), | |
f.updateCurrItem(), | |
Da("afterInit"), | |
va || | |
(w = setInterval(function () { | |
_a || | |
V || | |
aa || | |
s !== f.currItem.initialZoomLevel || | |
f.updateSize(); | |
}, 1e3)), | |
e.addClass(a, "pswp--visible"); | |
} | |
}, | |
close: function () { | |
j && | |
((j = !1), | |
(k = !0), | |
Da("close"), | |
Ra(), | |
cc(f.currItem, null, !0, f.destroy)); | |
}, | |
destroy: function () { | |
Da("destroy"), | |
Xb && clearTimeout(Xb), | |
a.setAttribute("aria-hidden", "true"), | |
(a.className = J), | |
w && clearInterval(w), | |
e.unbind(f.scrollWrap, q, f), | |
e.unbind(window, "scroll", f), | |
zb(), | |
cb(), | |
(Ba = null); | |
}, | |
panTo: function (a, b, c) { | |
c || | |
(a > da.min.x ? (a = da.min.x) : a < da.max.x && (a = da.max.x), | |
b > da.min.y ? (b = da.min.y) : b < da.max.y && (b = da.max.y)), | |
(pa.x = a), | |
(pa.y = b), | |
Ha(); | |
}, | |
handleEvent: function (a) { | |
(a = a || window.event), r[a.type] && r[a.type](a); | |
}, | |
goTo: function (a) { | |
a = Aa(a); | |
var b = a - m; | |
(ua = b), | |
(m = a), | |
(f.currItem = _b(m)), | |
(ra -= b), | |
Ka(ta.x * ra), | |
cb(), | |
(fa = !1), | |
f.updateCurrItem(); | |
}, | |
next: function () { | |
f.goTo(m + 1); | |
}, | |
prev: function () { | |
f.goTo(m - 1); | |
}, | |
updateCurrZoomItem: function (a) { | |
if ((a && Da("beforeChange", 0), y[1].el.children.length)) { | |
var b = y[1].el.children[0]; | |
ea = e.hasClass(b, "pswp__zoom-wrap") ? b.style : null; | |
} else ea = null; | |
(da = f.currItem.bounds), | |
(t = s = f.currItem.initialZoomLevel), | |
(pa.x = da.center.x), | |
(pa.y = da.center.y), | |
a && Da("afterChange"); | |
}, | |
invalidateCurrItems: function () { | |
x = !0; | |
for (var a = 0; a < h; a++) y[a].item && (y[a].item.needsUpdate = !0); | |
}, | |
updateCurrItem: function (a) { | |
if (0 !== ua) { | |
var b, | |
c = Math.abs(ua); | |
if (!(a && c < 2)) { | |
(f.currItem = _b(m)), | |
(ya = !1), | |
Da("beforeChange", ua), | |
c >= h && ((o += ua + (ua > 0 ? -h : h)), (c = h)); | |
for (var d = 0; d < c; d++) | |
ua > 0 | |
? ((b = y.shift()), | |
(y[h - 1] = b), | |
o++, | |
Ja((o + 2) * ta.x, b.el.style), | |
f.setContent(b, m - c + d + 1 + 1)) | |
: ((b = y.pop()), | |
y.unshift(b), | |
o--, | |
Ja(o * ta.x, b.el.style), | |
f.setContent(b, m + c - d - 1 - 1)); | |
if (ea && 1 === Math.abs(ua)) { | |
var e = _b(z); | |
e.initialZoomLevel !== s && (ic(e, qa), mc(e), Ia(e)); | |
} | |
(ua = 0), f.updateCurrZoomItem(), (z = m), Da("afterChange"); | |
} | |
} | |
}, | |
updateSize: function (b) { | |
if (!va && i.modal) { | |
var c = e.getScrollY(); | |
if ( | |
(M !== c && ((a.style.top = c + "px"), (M = c)), | |
!b && xa.x === window.innerWidth && xa.y === window.innerHeight) | |
) | |
return; | |
(xa.x = window.innerWidth), | |
(xa.y = window.innerHeight), | |
(a.style.height = xa.y + "px"); | |
} | |
if ( | |
((qa.x = f.scrollWrap.clientWidth), | |
(qa.y = f.scrollWrap.clientHeight), | |
Za(), | |
(ta.x = qa.x + Math.round(qa.x * i.spacing)), | |
(ta.y = qa.y), | |
Ka(ta.x * ra), | |
Da("beforeResize"), | |
void 0 !== o) | |
) { | |
for (var d, g, j, k = 0; k < h; k++) | |
(d = y[k]), | |
Ja((k + o) * ta.x, d.el.style), | |
(j = m + k - 1), | |
i.loop && ac() > 2 && (j = Aa(j)), | |
(g = _b(j)), | |
g && (x || g.needsUpdate || !g.bounds) | |
? (f.cleanSlide(g), | |
f.setContent(d, j), | |
1 === k && ((f.currItem = g), f.updateCurrZoomItem(!0)), | |
(g.needsUpdate = !1)) | |
: d.index === -1 && j >= 0 && f.setContent(d, j), | |
g && g.container && (ic(g, qa), mc(g), Ia(g)); | |
x = !1; | |
} | |
(t = s = f.currItem.initialZoomLevel), | |
(da = f.currItem.bounds), | |
da && ((pa.x = da.center.x), (pa.y = da.center.y), Ha(!0)), | |
Da("resize"); | |
}, | |
zoomTo: function (a, b, c, d, f) { | |
b && | |
((t = s), | |
(ub.x = Math.abs(b.x) - pa.x), | |
(ub.y = Math.abs(b.y) - pa.y), | |
Ma(oa, pa)); | |
var g = Sa(a, !1), | |
h = {}; | |
Va("x", g, h, a), Va("y", g, h, a); | |
var i = s, | |
j = { x: pa.x, y: pa.y }; | |
Na(h); | |
var k = function (b) { | |
1 === b | |
? ((s = a), (pa.x = h.x), (pa.y = h.y)) | |
: ((s = (a - i) * b + i), | |
(pa.x = (h.x - j.x) * b + j.x), | |
(pa.y = (h.y - j.y) * b + j.y)), | |
f && f(b), | |
Ha(1 === b); | |
}; | |
c ? db("customZoomTo", 0, 1, c, d || e.easing.sine.inOut, k) : k(1); | |
}, | |
}, | |
fb = 30, | |
gb = 10, | |
hb = {}, | |
ib = {}, | |
jb = {}, | |
kb = {}, | |
lb = {}, | |
mb = [], | |
nb = {}, | |
ob = [], | |
pb = {}, | |
qb = 0, | |
rb = ma(), | |
sb = 0, | |
tb = ma(), | |
ub = ma(), | |
vb = ma(), | |
wb = function (a, b) { | |
return a.x === b.x && a.y === b.y; | |
}, | |
xb = function (a, b) { | |
return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g; | |
}, | |
yb = function (a, b) { | |
return ( | |
(pb.x = Math.abs(a.x - b.x)), | |
(pb.y = Math.abs(a.y - b.y)), | |
Math.sqrt(pb.x * pb.x + pb.y * pb.y) | |
); | |
}, | |
zb = function () { | |
Z && (I(Z), (Z = null)); | |
}, | |
Ab = function () { | |
V && ((Z = H(Ab)), Qb()); | |
}, | |
Bb = function () { | |
return !("fit" === i.scaleMode && s === f.currItem.initialZoomLevel); | |
}, | |
Cb = function (a, b) { | |
return ( | |
!(!a || a === document) && | |
!( | |
a.getAttribute("class") && | |
a.getAttribute("class").indexOf("pswp__scroll-wrap") > -1 | |
) && | |
(b(a) ? a : Cb(a.parentNode, b)) | |
); | |
}, | |
Db = {}, | |
Eb = function (a, b) { | |
return ( | |
(Db.prevent = !Cb(a.target, i.isClickableElement)), | |
Da("preventDragEvent", a, b, Db), | |
Db.prevent | |
); | |
}, | |
Fb = function (a, b) { | |
return (b.x = a.pageX), (b.y = a.pageY), (b.id = a.identifier), b; | |
}, | |
Gb = function (a, b, c) { | |
(c.x = 0.5 * (a.x + b.x)), (c.y = 0.5 * (a.y + b.y)); | |
}, | |
Hb = function (a, b, c) { | |
if (a - Q > 50) { | |
var d = ob.length > 2 ? ob.shift() : {}; | |
(d.x = b), (d.y = c), ob.push(d), (Q = a); | |
} | |
}, | |
Ib = function () { | |
var a = pa.y - f.currItem.initialPosition.y; | |
return 1 - Math.abs(a / (qa.y / 2)); | |
}, | |
Jb = {}, | |
Kb = {}, | |
Lb = [], | |
Mb = function (a) { | |
for (; Lb.length > 0; ) Lb.pop(); | |
return ( | |
F | |
? ((la = 0), | |
mb.forEach(function (a) { | |
0 === la ? (Lb[0] = a) : 1 === la && (Lb[1] = a), la++; | |
})) | |
: a.type.indexOf("touch") > -1 | |
? a.touches && | |
a.touches.length > 0 && | |
((Lb[0] = Fb(a.touches[0], Jb)), | |
a.touches.length > 1 && (Lb[1] = Fb(a.touches[1], Kb))) | |
: ((Jb.x = a.pageX), (Jb.y = a.pageY), (Jb.id = ""), (Lb[0] = Jb)), | |
Lb | |
); | |
}, | |
Nb = function (a, b) { | |
var c, | |
d, | |
e, | |
g, | |
h = 0, | |
j = pa[a] + b[a], | |
k = b[a] > 0, | |
l = tb.x + b.x, | |
m = tb.x - nb.x; | |
return ( | |
(c = j > da.min[a] || j < da.max[a] ? i.panEndFriction : 1), | |
(j = pa[a] + b[a] * c), | |
(!i.allowPanToNext && s !== f.currItem.initialZoomLevel) || | |
(ea | |
? "h" !== ga || | |
"x" !== a || | |
X || | |
(k | |
? (j > da.min[a] && | |
((c = i.panEndFriction), | |
(h = da.min[a] - j), | |
(d = da.min[a] - oa[a])), | |
(d <= 0 || m < 0) && ac() > 1 | |
? ((g = l), m < 0 && l > nb.x && (g = nb.x)) | |
: da.min.x !== da.max.x && (e = j)) | |
: (j < da.max[a] && | |
((c = i.panEndFriction), | |
(h = j - da.max[a]), | |
(d = oa[a] - da.max[a])), | |
(d <= 0 || m > 0) && ac() > 1 | |
? ((g = l), m > 0 && l < nb.x && (g = nb.x)) | |
: da.min.x !== da.max.x && (e = j))) | |
: (g = l), | |
"x" !== a) | |
? void (fa || $ || (s > f.currItem.fitRatio && (pa[a] += b[a] * c))) | |
: (void 0 !== g && (Ka(g, !0), ($ = g !== nb.x)), | |
da.min.x !== da.max.x && | |
(void 0 !== e ? (pa.x = e) : $ || (pa.x += b.x * c)), | |
void 0 !== g) | |
); | |
}, | |
Ob = function (a) { | |
if (!("mousedown" === a.type && a.button > 0)) { | |
if ($b) return void a.preventDefault(); | |
if (!U || "mousedown" !== a.type) { | |
if ((Eb(a, !0) && a.preventDefault(), Da("pointerDown"), F)) { | |
var b = e.arraySearch(mb, a.pointerId, "id"); | |
b < 0 && (b = mb.length), | |
(mb[b] = { x: a.pageX, y: a.pageY, id: a.pointerId }); | |
} | |
var c = Mb(a), | |
d = c.length; | |
(_ = null), | |
cb(), | |
(V && 1 !== d) || | |
((V = ha = !0), | |
e.bind(window, p, f), | |
(S = ka = ia = T = $ = Y = W = X = !1), | |
(ga = null), | |
Da("firstTouchStart", c), | |
Ma(oa, pa), | |
(na.x = na.y = 0), | |
Ma(kb, c[0]), | |
Ma(lb, kb), | |
(nb.x = ta.x * ra), | |
(ob = [{ x: kb.x, y: kb.y }]), | |
(Q = P = Ea()), | |
Sa(s, !0), | |
zb(), | |
Ab()), | |
!aa && | |
d > 1 && | |
!fa && | |
!$ && | |
((t = s), | |
(X = !1), | |
(aa = W = !0), | |
(na.y = na.x = 0), | |
Ma(oa, pa), | |
Ma(hb, c[0]), | |
Ma(ib, c[1]), | |
Gb(hb, ib, vb), | |
(ub.x = Math.abs(vb.x) - pa.x), | |
(ub.y = Math.abs(vb.y) - pa.y), | |
(ba = ca = yb(hb, ib))); | |
} | |
} | |
}, | |
Pb = function (a) { | |
if ((a.preventDefault(), F)) { | |
var b = e.arraySearch(mb, a.pointerId, "id"); | |
if (b > -1) { | |
var c = mb[b]; | |
(c.x = a.pageX), (c.y = a.pageY); | |
} | |
} | |
if (V) { | |
var d = Mb(a); | |
if (ga || Y || aa) _ = d; | |
else if (tb.x !== ta.x * ra) ga = "h"; | |
else { | |
var f = Math.abs(d[0].x - kb.x) - Math.abs(d[0].y - kb.y); | |
Math.abs(f) >= gb && ((ga = f > 0 ? "h" : "v"), (_ = d)); | |
} | |
} | |
}, | |
Qb = function () { | |
if (_) { | |
var a = _.length; | |
if (0 !== a) | |
if ( | |
(Ma(hb, _[0]), | |
(jb.x = hb.x - kb.x), | |
(jb.y = hb.y - kb.y), | |
aa && a > 1) | |
) { | |
if ( | |
((kb.x = hb.x), (kb.y = hb.y), !jb.x && !jb.y && wb(_[1], ib)) | |
) | |
return; | |
Ma(ib, _[1]), X || ((X = !0), Da("zoomGestureStarted")); | |
var b = yb(hb, ib), | |
c = Vb(b); | |
c > | |
f.currItem.initialZoomLevel + | |
f.currItem.initialZoomLevel / 15 && (ka = !0); | |
var d = 1, | |
e = Ta(), | |
g = Ua(); | |
if (c < e) | |
if (i.pinchToClose && !ka && t <= f.currItem.initialZoomLevel) { | |
var h = e - c, | |
j = 1 - h / (e / 1.2); | |
Fa(j), Da("onPinchClose", j), (ia = !0); | |
} else | |
(d = (e - c) / e), d > 1 && (d = 1), (c = e - d * (e / 3)); | |
else | |
c > g && | |
((d = (c - g) / (6 * e)), d > 1 && (d = 1), (c = g + d * e)); | |
d < 0 && (d = 0), | |
(ba = b), | |
Gb(hb, ib, rb), | |
(na.x += rb.x - vb.x), | |
(na.y += rb.y - vb.y), | |
Ma(vb, rb), | |
(pa.x = La("x", c)), | |
(pa.y = La("y", c)), | |
(S = c > s), | |
(s = c), | |
Ha(); | |
} else { | |
if (!ga) return; | |
if ( | |
(ha && | |
((ha = !1), | |
Math.abs(jb.x) >= gb && (jb.x -= _[0].x - lb.x), | |
Math.abs(jb.y) >= gb && (jb.y -= _[0].y - lb.y)), | |
(kb.x = hb.x), | |
(kb.y = hb.y), | |
0 === jb.x && 0 === jb.y) | |
) | |
return; | |
if ("v" === ga && i.closeOnVerticalDrag && !Bb()) { | |
(na.y += jb.y), (pa.y += jb.y); | |
var k = Ib(); | |
return (T = !0), Da("onVerticalDrag", k), Fa(k), void Ha(); | |
} | |
Hb(Ea(), hb.x, hb.y), (Y = !0), (da = f.currItem.bounds); | |
var l = Nb("x", jb); | |
l || (Nb("y", jb), Na(pa), Ha()); | |
} | |
} | |
}, | |
Rb = function (a) { | |
if (N.isOldAndroid) { | |
if (U && "mouseup" === a.type) return; | |
a.type.indexOf("touch") > -1 && | |
(clearTimeout(U), | |
(U = setTimeout(function () { | |
U = 0; | |
}, 600))); | |
} | |
Da("pointerUp"), Eb(a, !1) && a.preventDefault(); | |
var b; | |
if (F) { | |
var c = e.arraySearch(mb, a.pointerId, "id"); | |
if (c > -1) | |
if (((b = mb.splice(c, 1)[0]), navigator.msPointerEnabled)) { | |
var d = { 4: "mouse", 2: "touch", 3: "pen" }; | |
(b.type = d[a.pointerType]), | |
b.type || (b.type = a.pointerType || "mouse"); | |
} else b.type = a.pointerType || "mouse"; | |
} | |
var g, | |
h = Mb(a), | |
j = h.length; | |
if (("mouseup" === a.type && (j = 0), 2 === j)) return (_ = null), !0; | |
1 === j && Ma(lb, h[0]), | |
0 !== j || | |
ga || | |
fa || | |
(b || | |
("mouseup" === a.type | |
? (b = { x: a.pageX, y: a.pageY, type: "mouse" }) | |
: a.changedTouches && | |
a.changedTouches[0] && | |
(b = { | |
x: a.changedTouches[0].pageX, | |
y: a.changedTouches[0].pageY, | |
type: "touch", | |
})), | |
Da("touchRelease", a, b)); | |
var k = -1; | |
if ( | |
(0 === j && | |
((V = !1), | |
e.unbind(window, p, f), | |
zb(), | |
aa ? (k = 0) : sb !== -1 && (k = Ea() - sb)), | |
(sb = 1 === j ? Ea() : -1), | |
(g = k !== -1 && k < 150 ? "zoom" : "swipe"), | |
aa && | |
j < 2 && | |
((aa = !1), | |
1 === j && (g = "zoomPointerUp"), | |
Da("zoomGestureEnded")), | |
(_ = null), | |
Y || X || fa || T) | |
) | |
if ((cb(), R || (R = Sb()), R.calculateSwipeSpeed("x"), T)) { | |
var l = Ib(); | |
if (l < i.verticalDragRange) f.close(); | |
else { | |
var m = pa.y, | |
n = ja; | |
db("verticalDrag", 0, 1, 300, e.easing.cubic.out, function (a) { | |
(pa.y = (f.currItem.initialPosition.y - m) * a + m), | |
Fa((1 - n) * a + n), | |
Ha(); | |
}), | |
Da("onVerticalDrag", 1); | |
} | |
} else { | |
if (($ || fa) && 0 === j) { | |
var o = Ub(g, R); | |
if (o) return; | |
g = "zoomPointerUp"; | |
} | |
if (!fa) | |
return "swipe" !== g | |
? void Wb() | |
: void (!$ && s > f.currItem.fitRatio && Tb(R)); | |
} | |
}, | |
Sb = function () { | |
var a, | |
b, | |
c = { | |
lastFlickOffset: {}, | |
lastFlickDist: {}, | |
lastFlickSpeed: {}, | |
slowDownRatio: {}, | |
slowDownRatioReverse: {}, | |
speedDecelerationRatio: {}, | |
speedDecelerationRatioAbs: {}, | |
distanceOffset: {}, | |
backAnimDestination: {}, | |
backAnimStarted: {}, | |
calculateSwipeSpeed: function (d) { | |
ob.length > 1 | |
? ((a = Ea() - Q + 50), (b = ob[ob.length - 2][d])) | |
: ((a = Ea() - P), (b = lb[d])), | |
(c.lastFlickOffset[d] = kb[d] - b), | |
(c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d])), | |
c.lastFlickDist[d] > 20 | |
? (c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a) | |
: (c.lastFlickSpeed[d] = 0), | |
Math.abs(c.lastFlickSpeed[d]) < 0.1 && | |
(c.lastFlickSpeed[d] = 0), | |
(c.slowDownRatio[d] = 0.95), | |
(c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d]), | |
(c.speedDecelerationRatio[d] = 1); | |
}, | |
calculateOverBoundsAnimOffset: function (a, b) { | |
c.backAnimStarted[a] || | |
(pa[a] > da.min[a] | |
? (c.backAnimDestination[a] = da.min[a]) | |
: pa[a] < da.max[a] && (c.backAnimDestination[a] = da.max[a]), | |
void 0 !== c.backAnimDestination[a] && | |
((c.slowDownRatio[a] = 0.7), | |
(c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a]), | |
c.speedDecelerationRatioAbs[a] < 0.05 && | |
((c.lastFlickSpeed[a] = 0), | |
(c.backAnimStarted[a] = !0), | |
db( | |
"bounceZoomPan" + a, | |
pa[a], | |
c.backAnimDestination[a], | |
b || 300, | |
e.easing.sine.out, | |
function (b) { | |
(pa[a] = b), Ha(); | |
} | |
)))); | |
}, | |
calculateAnimOffset: function (a) { | |
c.backAnimStarted[a] || | |
((c.speedDecelerationRatio[a] = | |
c.speedDecelerationRatio[a] * | |
(c.slowDownRatio[a] + | |
c.slowDownRatioReverse[a] - | |
(c.slowDownRatioReverse[a] * c.timeDiff) / 10)), | |
(c.speedDecelerationRatioAbs[a] = Math.abs( | |
c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] | |
)), | |
(c.distanceOffset[a] = | |
c.lastFlickSpeed[a] * | |
c.speedDecelerationRatio[a] * | |
c.timeDiff), | |
(pa[a] += c.distanceOffset[a])); | |
}, | |
panAnimLoop: function () { | |
if ( | |
$a.zoomPan && | |
(($a.zoomPan.raf = H(c.panAnimLoop)), | |
(c.now = Ea()), | |
(c.timeDiff = c.now - c.lastNow), | |
(c.lastNow = c.now), | |
c.calculateAnimOffset("x"), | |
c.calculateAnimOffset("y"), | |
Ha(), | |
c.calculateOverBoundsAnimOffset("x"), | |
c.calculateOverBoundsAnimOffset("y"), | |
c.speedDecelerationRatioAbs.x < 0.05 && | |
c.speedDecelerationRatioAbs.y < 0.05) | |
) | |
return ( | |
(pa.x = Math.round(pa.x)), | |
(pa.y = Math.round(pa.y)), | |
Ha(), | |
void ab("zoomPan") | |
); | |
}, | |
}; | |
return c; | |
}, | |
Tb = function (a) { | |
return ( | |
a.calculateSwipeSpeed("y"), | |
(da = f.currItem.bounds), | |
(a.backAnimDestination = {}), | |
(a.backAnimStarted = {}), | |
Math.abs(a.lastFlickSpeed.x) <= 0.05 && | |
Math.abs(a.lastFlickSpeed.y) <= 0.05 | |
? ((a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0), | |
a.calculateOverBoundsAnimOffset("x"), | |
a.calculateOverBoundsAnimOffset("y"), | |
!0) | |
: (bb("zoomPan"), (a.lastNow = Ea()), void a.panAnimLoop()) | |
); | |
}, | |
Ub = function (a, b) { | |
var c; | |
fa || (qb = m); | |
var d; | |
if ("swipe" === a) { | |
var g = kb.x - lb.x, | |
h = b.lastFlickDist.x < 10; | |
g > fb && (h || b.lastFlickOffset.x > 20) | |
? (d = -1) | |
: g < -fb && (h || b.lastFlickOffset.x < -20) && (d = 1); | |
} | |
var j; | |
d && | |
((m += d), | |
m < 0 | |
? ((m = i.loop ? ac() - 1 : 0), (j = !0)) | |
: m >= ac() && ((m = i.loop ? 0 : ac() - 1), (j = !0)), | |
(j && !i.loop) || ((ua += d), (ra -= d), (c = !0))); | |
var k, | |
l = ta.x * ra, | |
n = Math.abs(l - tb.x); | |
return ( | |
c || l > tb.x == b.lastFlickSpeed.x > 0 | |
? ((k = | |
Math.abs(b.lastFlickSpeed.x) > 0 | |
? n / Math.abs(b.lastFlickSpeed.x) | |
: 333), | |
(k = Math.min(k, 400)), | |
(k = Math.max(k, 250))) | |
: (k = 333), | |
qb === m && (c = !1), | |
(fa = !0), | |
Da("mainScrollAnimStart"), | |
db("mainScroll", tb.x, l, k, e.easing.cubic.out, Ka, function () { | |
cb(), | |
(fa = !1), | |
(qb = -1), | |
(c || qb !== m) && f.updateCurrItem(), | |
Da("mainScrollAnimComplete"); | |
}), | |
c && f.updateCurrItem(!0), | |
c | |
); | |
}, | |
Vb = function (a) { | |
return (1 / ca) * a * t; | |
}, | |
Wb = function () { | |
var a = s, | |
b = Ta(), | |
c = Ua(); | |
s < b ? (a = b) : s > c && (a = c); | |
var d, | |
g = 1, | |
h = ja; | |
return ia && !S && !ka && s < b | |
? (f.close(), !0) | |
: (ia && | |
(d = function (a) { | |
Fa((g - h) * a + h); | |
}), | |
f.zoomTo(a, 0, 200, e.easing.cubic.out, d), | |
!0); | |
}; | |
za("Gestures", { | |
publicMethods: { | |
initGestures: function () { | |
var a = function (a, b, c, d, e) { | |
(A = a + b), (B = a + c), (C = a + d), (D = e ? a + e : ""); | |
}; | |
(F = N.pointerEvent), | |
F && N.touch && (N.touch = !1), | |
F | |
? navigator.msPointerEnabled | |
? a("MSPointer", "Down", "Move", "Up", "Cancel") | |
: a("pointer", "down", "move", "up", "cancel") | |
: N.touch | |
? (a("touch", "start", "move", "end", "cancel"), (G = !0)) | |
: a("mouse", "down", "move", "up"), | |
(p = B + " " + C + " " + D), | |
(q = A), | |
F && | |
!G && | |
(G = | |
navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), | |
(f.likelyTouchDevice = G), | |
(r[A] = Ob), | |
(r[B] = Pb), | |
(r[C] = Rb), | |
D && (r[D] = r[C]), | |
N.touch && | |
((q += " mousedown"), | |
(p += " mousemove mouseup"), | |
(r.mousedown = r[A]), | |
(r.mousemove = r[B]), | |
(r.mouseup = r[C])), | |
G || (i.allowPanToNext = !1); | |
}, | |
}, | |
}); | |
var Xb, | |
Yb, | |
Zb, | |
$b, | |
_b, | |
ac, | |
bc, | |
cc = function (b, c, d, g) { | |
Xb && clearTimeout(Xb), ($b = !0), (Zb = !0); | |
var h; | |
b.initialLayout | |
? ((h = b.initialLayout), (b.initialLayout = null)) | |
: (h = i.getThumbBoundsFn && i.getThumbBoundsFn(m)); | |
var j = d ? i.hideAnimationDuration : i.showAnimationDuration, | |
k = function () { | |
ab("initialZoom"), | |
d | |
? (f.template.removeAttribute("style"), | |
f.bg.removeAttribute("style")) | |
: (Fa(1), | |
c && (c.style.display = "block"), | |
e.addClass(a, "pswp--animated-in"), | |
Da("initialZoom" + (d ? "OutEnd" : "InEnd"))), | |
g && g(), | |
($b = !1); | |
}; | |
if (!j || !h || void 0 === h.x) | |
return ( | |
Da("initialZoom" + (d ? "Out" : "In")), | |
(s = b.initialZoomLevel), | |
Ma(pa, b.initialPosition), | |
Ha(), | |
(a.style.opacity = d ? 0 : 1), | |
Fa(1), | |
void (j | |
? setTimeout(function () { | |
k(); | |
}, j) | |
: k()) | |
); | |
var n = function () { | |
var c = l, | |
g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity; | |
b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = "hidden"), | |
d || | |
((s = h.w / b.w), | |
(pa.x = h.x), | |
(pa.y = h.y - K), | |
(f[g ? "template" : "bg"].style.opacity = 0.001), | |
Ha()), | |
bb("initialZoom"), | |
d && !c && e.removeClass(a, "pswp--animated-in"), | |
g && | |
(d | |
? e[(c ? "remove" : "add") + "Class"]( | |
a, | |
"pswp--animate_opacity" | |
) | |
: setTimeout(function () { | |
e.addClass(a, "pswp--animate_opacity"); | |
}, 30)), | |
(Xb = setTimeout( | |
function () { | |
if ((Da("initialZoom" + (d ? "Out" : "In")), d)) { | |
var f = h.w / b.w, | |
i = { x: pa.x, y: pa.y }, | |
l = s, | |
m = ja, | |
n = function (b) { | |
1 === b | |
? ((s = f), (pa.x = h.x), (pa.y = h.y - M)) | |
: ((s = (f - l) * b + l), | |
(pa.x = (h.x - i.x) * b + i.x), | |
(pa.y = (h.y - M - i.y) * b + i.y)), | |
Ha(), | |
g ? (a.style.opacity = 1 - b) : Fa(m - b * m); | |
}; | |
c | |
? db("initialZoom", 0, 1, j, e.easing.cubic.out, n, k) | |
: (n(1), (Xb = setTimeout(k, j + 20))); | |
} else | |
(s = b.initialZoomLevel), | |
Ma(pa, b.initialPosition), | |
Ha(), | |
Fa(1), | |
g ? (a.style.opacity = 1) : Fa(1), | |
(Xb = setTimeout(k, j + 20)); | |
}, | |
d ? 25 : 90 | |
)); | |
}; | |
n(); | |
}, | |
dc = {}, | |
ec = [], | |
fc = { | |
index: 0, | |
errorMsg: | |
'<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>', | |
forceProgressiveLoading: !1, | |
preload: [1, 1], | |
getNumItemsFn: function () { | |
return Yb.length; | |
}, | |
}, | |
gc = function () { | |
return { | |
center: { x: 0, y: 0 }, | |
max: { x: 0, y: 0 }, | |
min: { x: 0, y: 0 }, | |
}; | |
}, | |
hc = function (a, b, c) { | |
var d = a.bounds; | |
(d.center.x = Math.round((dc.x - b) / 2)), | |
(d.center.y = Math.round((dc.y - c) / 2) + a.vGap.top), | |
(d.max.x = b > dc.x ? Math.round(dc.x - b) : d.center.x), | |
(d.max.y = c > dc.y ? Math.round(dc.y - c) + a.vGap.top : d.center.y), | |
(d.min.x = b > dc.x ? 0 : d.center.x), | |
(d.min.y = c > dc.y ? a.vGap.top : d.center.y); | |
}, | |
ic = function (a, b, c) { | |
if (a.src && !a.loadError) { | |
var d = !c; | |
if ( | |
(d && | |
(a.vGap || (a.vGap = { top: 0, bottom: 0 }), | |
Da("parseVerticalMargin", a)), | |
(dc.x = b.x), | |
(dc.y = b.y - a.vGap.top - a.vGap.bottom), | |
d) | |
) { | |
var e = dc.x / a.w, | |
f = dc.y / a.h; | |
a.fitRatio = e < f ? e : f; | |
var g = i.scaleMode; | |
"orig" === g ? (c = 1) : "fit" === g && (c = a.fitRatio), | |
c > 1 && (c = 1), | |
(a.initialZoomLevel = c), | |
a.bounds || (a.bounds = gc()); | |
} | |
if (!c) return; | |
return ( | |
hc(a, a.w * c, a.h * c), | |
d && | |
c === a.initialZoomLevel && | |
(a.initialPosition = a.bounds.center), | |
a.bounds | |
); | |
} | |
return ( | |
(a.w = a.h = 0), | |
(a.initialZoomLevel = a.fitRatio = 1), | |
(a.bounds = gc()), | |
(a.initialPosition = a.bounds.center), | |
a.bounds | |
); | |
}, | |
jc = function (a, b, c, d, e, g) { | |
b.loadError || | |
(d && | |
((b.imageAppended = !0), | |
mc(b, d, b === f.currItem && ya), | |
c.appendChild(d), | |
g && | |
setTimeout(function () { | |
b && | |
b.loaded && | |
b.placeholder && | |
((b.placeholder.style.display = "none"), | |
(b.placeholder = null)); | |
}, 500))); | |
}, | |
kc = function (a) { | |
(a.loading = !0), (a.loaded = !1); | |
var b = (a.img = e.createEl("pswp__img", "img")), | |
c = function () { | |
(a.loading = !1), | |
(a.loaded = !0), | |
a.loadComplete ? a.loadComplete(a) : (a.img = null), | |
(b.onload = b.onerror = null), | |
(b = null); | |
}; | |
return ( | |
(b.onload = c), | |
(b.onerror = function () { | |
(a.loadError = !0), c(); | |
}), | |
(b.src = a.src), | |
b | |
); | |
}, | |
lc = function (a, b) { | |
if (a.src && a.loadError && a.container) | |
return ( | |
b && (a.container.innerHTML = ""), | |
(a.container.innerHTML = i.errorMsg.replace("%url%", a.src)), | |
!0 | |
); | |
}, | |
mc = function (a, b, c) { | |
if (a.src) { | |
b || (b = a.container.lastChild); | |
var d = c ? a.w : Math.round(a.w * a.fitRatio), | |
e = c ? a.h : Math.round(a.h * a.fitRatio); | |
a.placeholder && | |
!a.loaded && | |
((a.placeholder.style.width = d + "px"), | |
(a.placeholder.style.height = e + "px")), | |
(b.style.width = d + "px"), | |
(b.style.height = e + "px"); | |
} | |
}, | |
nc = function () { | |
if (ec.length) { | |
for (var a, b = 0; b < ec.length; b++) | |
(a = ec[b]), | |
a.holder.index === a.index && | |
jc(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder); | |
ec = []; | |
} | |
}; | |
za("Controller", { | |
publicMethods: { | |
lazyLoadItem: function (a) { | |
a = Aa(a); | |
var b = _b(a); | |
b && | |
((!b.loaded && !b.loading) || x) && | |
(Da("gettingData", a, b), b.src && kc(b)); | |
}, | |
initController: function () { | |
e.extend(i, fc, !0), | |
(f.items = Yb = c), | |
(_b = f.getItemAt), | |
(ac = i.getNumItemsFn), | |
(bc = i.loop), | |
ac() < 3 && (i.loop = !1), | |
Ca("beforeChange", function (a) { | |
var b, | |
c = i.preload, | |
d = null === a || a >= 0, | |
e = Math.min(c[0], ac()), | |
g = Math.min(c[1], ac()); | |
for (b = 1; b <= (d ? g : e); b++) f.lazyLoadItem(m + b); | |
for (b = 1; b <= (d ? e : g); b++) f.lazyLoadItem(m - b); | |
}), | |
Ca("initialLayout", function () { | |
f.currItem.initialLayout = | |
i.getThumbBoundsFn && i.getThumbBoundsFn(m); | |
}), | |
Ca("mainScrollAnimComplete", nc), | |
Ca("initialZoomInEnd", nc), | |
Ca("destroy", function () { | |
for (var a, b = 0; b < Yb.length; b++) | |
(a = Yb[b]), | |
a.container && (a.container = null), | |
a.placeholder && (a.placeholder = null), | |
a.img && (a.img = null), | |
a.preloader && (a.preloader = null), | |
a.loadError && (a.loaded = a.loadError = !1); | |
ec = null; | |
}); | |
}, | |
getItemAt: function (a) { | |
return a >= 0 && void 0 !== Yb[a] && Yb[a]; | |
}, | |
allowProgressiveImg: function () { | |
return ( | |
i.forceProgressiveLoading || | |
!G || | |
i.mouseUsed || | |
screen.width > 1200 | |
); | |
}, | |
setContent: function (a, b) { | |
i.loop && (b = Aa(b)); | |
var c = f.getItemAt(a.index); | |
c && (c.container = null); | |
var d, | |
g = f.getItemAt(b); | |
if (!g) return void (a.el.innerHTML = ""); | |
Da("gettingData", b, g), (a.index = b), (a.item = g); | |
var h = (g.container = e.createEl("pswp__zoom-wrap")); | |
if ( | |
(!g.src && | |
g.html && | |
(g.html.tagName ? h.appendChild(g.html) : (h.innerHTML = g.html)), | |
lc(g), | |
ic(g, qa), | |
!g.src || g.loadError || g.loaded) | |
) | |
g.src && | |
!g.loadError && | |
((d = e.createEl("pswp__img", "img")), | |
(d.style.opacity = 1), | |
(d.src = g.src), | |
mc(g, d), | |
jc(b, g, h, d, !0)); | |
else { | |
if ( | |
((g.loadComplete = function (c) { | |
if (j) { | |
if (a && a.index === b) { | |
if (lc(c, !0)) | |
return ( | |
(c.loadComplete = c.img = null), | |
ic(c, qa), | |
Ia(c), | |
void (a.index === m && f.updateCurrZoomItem()) | |
); | |
c.imageAppended | |
? !$b && | |
c.placeholder && | |
((c.placeholder.style.display = "none"), | |
(c.placeholder = null)) | |
: N.transform && (fa || $b) | |
? ec.push({ | |
item: c, | |
baseDiv: h, | |
img: c.img, | |
index: b, | |
holder: a, | |
clearPlaceholder: !0, | |
}) | |
: jc(b, c, h, c.img, fa || $b, !0); | |
} | |
(c.loadComplete = null), | |
(c.img = null), | |
Da("imageLoadComplete", b, c); | |
} | |
}), | |
e.features.transform) | |
) { | |
var k = "pswp__img pswp__img--placeholder"; | |
k += g.msrc ? "" : " pswp__img--placeholder--blank"; | |
var l = e.createEl(k, g.msrc ? "img" : ""); | |
g.msrc && (l.src = g.msrc), | |
mc(g, l), | |
h.appendChild(l), | |
(g.placeholder = l); | |
} | |
g.loading || kc(g), | |
f.allowProgressiveImg() && | |
(!Zb && N.transform | |
? ec.push({ | |
item: g, | |
baseDiv: h, | |
img: g.img, | |
index: b, | |
holder: a, | |
}) | |
: jc(b, g, h, g.img, !0, !0)); | |
} | |
Zb || b !== m ? Ia(g) : ((ea = h.style), cc(g, d || g.img)), | |
(a.el.innerHTML = ""), | |
a.el.appendChild(h); | |
}, | |
cleanSlide: function (a) { | |
a.img && (a.img.onload = a.img.onerror = null), | |
(a.loaded = a.loading = a.img = a.imageAppended = !1); | |
}, | |
}, | |
}); | |
var oc, | |
pc = {}, | |
qc = function (a, b, c) { | |
var d = document.createEvent("CustomEvent"), | |
e = { | |
origEvent: a, | |
target: a.target, | |
releasePoint: b, | |
pointerType: c || "touch", | |
}; | |
d.initCustomEvent("pswpTap", !0, !0, e), a.target.dispatchEvent(d); | |
}; | |
za("Tap", { | |
publicMethods: { | |
initTap: function () { | |
Ca("firstTouchStart", f.onTapStart), | |
Ca("touchRelease", f.onTapRelease), | |
Ca("destroy", function () { | |
(pc = {}), (oc = null); | |
}); | |
}, | |
onTapStart: function (a) { | |
a.length > 1 && (clearTimeout(oc), (oc = null)); | |
}, | |
onTapRelease: function (a, b) { | |
if (b && !Y && !W && !_a) { | |
var c = b; | |
if (oc && (clearTimeout(oc), (oc = null), xb(c, pc))) | |
return void Da("doubleTap", c); | |
if ("mouse" === b.type) return void qc(a, b, "mouse"); | |
var d = a.target.tagName.toUpperCase(); | |
if ("BUTTON" === d || e.hasClass(a.target, "pswp__single-tap")) | |
return void qc(a, b); | |
Ma(pc, c), | |
(oc = setTimeout(function () { | |
qc(a, b), (oc = null); | |
}, 300)); | |
} | |
}, | |
}, | |
}); | |
var rc; | |
za("DesktopZoom", { | |
publicMethods: { | |
initDesktopZoom: function () { | |
L || | |
(G | |
? Ca("mouseUsed", function () { | |
f.setupDesktopZoom(); | |
}) | |
: f.setupDesktopZoom(!0)); | |
}, | |
setupDesktopZoom: function (b) { | |
rc = {}; | |
var c = "wheel mousewheel DOMMouseScroll"; | |
Ca("bindEvents", function () { | |
e.bind(a, c, f.handleMouseWheel); | |
}), | |
Ca("unbindEvents", function () { | |
rc && e.unbind(a, c, f.handleMouseWheel); | |
}), | |
(f.mouseZoomedIn = !1); | |
var d, | |
g = function () { | |
f.mouseZoomedIn && | |
(e.removeClass(a, "pswp--zoomed-in"), (f.mouseZoomedIn = !1)), | |
s < 1 | |
? e.addClass(a, "pswp--zoom-allowed") | |
: e.removeClass(a, "pswp--zoom-allowed"), | |
h(); | |
}, | |
h = function () { | |
d && (e.removeClass(a, "pswp--dragging"), (d = !1)); | |
}; | |
Ca("resize", g), | |
Ca("afterChange", g), | |
Ca("pointerDown", function () { | |
f.mouseZoomedIn && ((d = !0), e.addClass(a, "pswp--dragging")); | |
}), | |
Ca("pointerUp", h), | |
b || g(); | |
}, | |
handleMouseWheel: function (a) { | |
if (s <= f.currItem.fitRatio) | |
return ( | |
i.modal && | |
(!i.closeOnScroll || _a || V | |
? a.preventDefault() | |
: E && Math.abs(a.deltaY) > 2 && ((l = !0), f.close())), | |
!0 | |
); | |
if ((a.stopPropagation(), (rc.x = 0), "deltaX" in a)) | |
1 === a.deltaMode | |
? ((rc.x = 18 * a.deltaX), (rc.y = 18 * a.deltaY)) | |
: ((rc.x = a.deltaX), (rc.y = a.deltaY)); | |
else if ("wheelDelta" in a) | |
a.wheelDeltaX && (rc.x = -0.16 * a.wheelDeltaX), | |
a.wheelDeltaY | |
? (rc.y = -0.16 * a.wheelDeltaY) | |
: (rc.y = -0.16 * a.wheelDelta); | |
else { | |
if (!("detail" in a)) return; | |
rc.y = a.detail; | |
} | |
Sa(s, !0); | |
var b = pa.x - rc.x, | |
c = pa.y - rc.y; | |
(i.modal || | |
(b <= da.min.x && | |
b >= da.max.x && | |
c <= da.min.y && | |
c >= da.max.y)) && | |
a.preventDefault(), | |
f.panTo(b, c); | |
}, | |
toggleDesktopZoom: function (b) { | |
b = b || { x: qa.x / 2 + sa.x, y: qa.y / 2 + sa.y }; | |
var c = i.getDoubleTapZoom(!0, f.currItem), | |
d = s === c; | |
(f.mouseZoomedIn = !d), | |
f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333), | |
e[(d ? "remove" : "add") + "Class"](a, "pswp--zoomed-in"); | |
}, | |
}, | |
}); | |
e.extend(f, eb); | |
}; | |
return a; | |
}); | |
/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08 | |
* http://photoswipe.com | |
* Copyright (c) 2019 Dmitry Semenov; */ | |
!(function (a, b) { | |
"function" == typeof define && define.amd | |
? define(b) | |
: "object" == typeof exports | |
? (module.exports = b()) | |
: (a.PhotoSwipeUI_Default = b()); | |
})(this, function () { | |
"use strict"; | |
var a = function (a, b) { | |
var c, | |
d, | |
e, | |
f, | |
g, | |
h, | |
i, | |
j, | |
k, | |
l, | |
m, | |
n, | |
o, | |
p, | |
q, | |
r, | |
s, | |
t, | |
u, | |
v = this, | |
w = !1, | |
x = !0, | |
y = !0, | |
z = { | |
barsSize: { top: 44, bottom: "auto" }, | |
closeElClasses: ["item", "caption", "zoom-wrap", "ui", "top-bar"], | |
timeToIdle: 4e3, | |
timeToIdleOutside: 1e3, | |
loadingIndicatorDelay: 1e3, | |
addCaptionHTMLFn: function (a, b) { | |
return a.title | |
? ((b.children[0].innerHTML = a.title), !0) | |
: ((b.children[0].innerHTML = ""), !1); | |
}, | |
closeEl: !0, | |
captionEl: !0, | |
fullscreenEl: !0, | |
zoomEl: !0, | |
shareEl: !0, | |
counterEl: !0, | |
arrowEl: !0, | |
preloaderEl: !0, | |
tapToClose: !1, | |
tapToToggleControls: !0, | |
clickToCloseNonZoomable: !0, | |
shareButtons: [ | |
{ | |
id: "facebook", | |
label: "Share on Facebook", | |
url: "https://www.facebook.com/sharer/sharer.php?u=", | |
}, | |
{ | |
id: "twitter", | |
label: "Tweet", | |
url: "https://twitter.com/intent/tweet?text=&url=", | |
}, | |
{ | |
id: "pinterest", | |
label: "Pin it", | |
url: | |
"http://www.pinterest.com/pin/create/button/?url=&media=&description=", | |
}, | |
{ id: "download", label: "Download image", url: "", download: !0 }, | |
], | |
getImageURLForShare: function () { | |
return a.currItem.src || ""; | |
}, | |
getPageURLForShare: function () { | |
return window.location.href; | |
}, | |
getTextForShare: function () { | |
return a.currItem.title || ""; | |
}, | |
indexIndicatorSep: " / ", | |
fitControlsWidth: 1200, | |
}, | |
A = function (a) { | |
if (r) return !0; | |
(a = a || window.event), q.timeToIdle && q.mouseUsed && !k && K(); | |
for ( | |
var c, | |
d, | |
e = a.target || a.srcElement, | |
f = e.getAttribute("class") || "", | |
g = 0; | |
g < S.length; | |
g++ | |
) | |
(c = S[g]), | |
c.onTap && | |
f.indexOf("pswp__" + c.name) > -1 && | |
(c.onTap(), (d = !0)); | |
if (d) { | |
a.stopPropagation && a.stopPropagation(), (r = !0); | |
var h = b.features.isOldAndroid ? 600 : 30; | |
s = setTimeout(function () { | |
r = !1; | |
}, h); | |
} | |
}, | |
B = function () { | |
return ( | |
!a.likelyTouchDevice || | |
q.mouseUsed || | |
screen.width > q.fitControlsWidth | |
); | |
}, | |
C = function (a, c, d) { | |
b[(d ? "add" : "remove") + "Class"](a, "pswp__" + c); | |
}, | |
D = function () { | |
var a = 1 === q.getNumItemsFn(); | |
a !== p && (C(d, "ui--one-slide", a), (p = a)); | |
}, | |
E = function () { | |
C(i, "share-modal--hidden", y); | |
}, | |
F = function () { | |
return ( | |
(y = !y), | |
y | |
? (b.removeClass(i, "pswp__share-modal--fade-in"), | |
setTimeout(function () { | |
y && E(); | |
}, 300)) | |
: (E(), | |
setTimeout(function () { | |
y || b.addClass(i, "pswp__share-modal--fade-in"); | |
}, 30)), | |
y || H(), | |
!1 | |
); | |
}, | |
G = function (b) { | |
b = b || window.event; | |
var c = b.target || b.srcElement; | |
return ( | |
a.shout("shareLinkClick", b, c), | |
!!c.href && | |
(!!c.hasAttribute("download") || | |
(window.open( | |
c.href, | |
"pswp_share", | |
"scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=" + | |
(window.screen ? Math.round(screen.width / 2 - 275) : 100) | |
), | |
y || F(), | |
!1)) | |
); | |
}, | |
H = function () { | |
for (var a, b, c, d, e, f = "", g = 0; g < q.shareButtons.length; g++) | |
(a = q.shareButtons[g]), | |
(c = q.getImageURLForShare(a)), | |
(d = q.getPageURLForShare(a)), | |
(e = q.getTextForShare(a)), | |
(b = a.url | |
.replace("", encodeURIComponent(d)) | |
.replace("", encodeURIComponent(c)) | |
.replace("", c) | |
.replace("", encodeURIComponent(e))), | |
(f += | |
'<a href="' + | |
b + | |
'" target="_blank" class="pswp__share--' + | |
a.id + | |
'"' + | |
(a.download ? "download" : "") + | |
">" + | |
a.label + | |
"</a>"), | |
q.parseShareButtonOut && (f = q.parseShareButtonOut(a, f)); | |
(i.children[0].innerHTML = f), (i.children[0].onclick = G); | |
}, | |
I = function (a) { | |
for (var c = 0; c < q.closeElClasses.length; c++) | |
if (b.hasClass(a, "pswp__" + q.closeElClasses[c])) return !0; | |
}, | |
J = 0, | |
K = function () { | |
clearTimeout(u), (J = 0), k && v.setIdle(!1); | |
}, | |
L = function (a) { | |
a = a ? a : window.event; | |
var b = a.relatedTarget || a.toElement; | |
(b && "HTML" !== b.nodeName) || | |
(clearTimeout(u), | |
(u = setTimeout(function () { | |
v.setIdle(!0); | |
}, q.timeToIdleOutside))); | |
}, | |
M = function () { | |
q.fullscreenEl && | |
!b.features.isOldAndroid && | |
(c || (c = v.getFullscreenAPI()), | |
c | |
? (b.bind(document, c.eventK, v.updateFullscreen), | |
v.updateFullscreen(), | |
b.addClass(a.template, "pswp--supports-fs")) | |
: b.removeClass(a.template, "pswp--supports-fs")); | |
}, | |
N = function () { | |
q.preloaderEl && | |
(O(!0), | |
l("beforeChange", function () { | |
clearTimeout(o), | |
(o = setTimeout(function () { | |
a.currItem && a.currItem.loading | |
? (!a.allowProgressiveImg() || | |
(a.currItem.img && !a.currItem.img.naturalWidth)) && | |
O(!1) | |
: O(!0); | |
}, q.loadingIndicatorDelay)); | |
}), | |
l("imageLoadComplete", function (b, c) { | |
a.currItem === c && O(!0); | |
})); | |
}, | |
O = function (a) { | |
n !== a && (C(m, "preloader--active", !a), (n = a)); | |
}, | |
P = function (a) { | |
var c = a.vGap; | |
if (B()) { | |
var g = q.barsSize; | |
if (q.captionEl && "auto" === g.bottom) | |
if ( | |
(f || | |
((f = b.createEl("pswp__caption pswp__caption--fake")), | |
f.appendChild(b.createEl("pswp__caption__center")), | |
d.insertBefore(f, e), | |
b.addClass(d, "pswp__ui--fit")), | |
q.addCaptionHTMLFn(a, f, !0)) | |
) { | |
var h = f.clientHeight; | |
c.bottom = parseInt(h, 10) || 44; | |
} else c.bottom = g.top; | |
else c.bottom = "auto" === g.bottom ? 0 : g.bottom; | |
c.top = g.top; | |
} else c.top = c.bottom = 0; | |
}, | |
Q = function () { | |
q.timeToIdle && | |
l("mouseUsed", function () { | |
b.bind(document, "mousemove", K), | |
b.bind(document, "mouseout", L), | |
(t = setInterval(function () { | |
J++, 2 === J && v.setIdle(!0); | |
}, q.timeToIdle / 2)); | |
}); | |
}, | |
R = function () { | |
l("onVerticalDrag", function (a) { | |
x && a < 0.95 | |
? v.hideControls() | |
: !x && a >= 0.95 && v.showControls(); | |
}); | |
var a; | |
l("onPinchClose", function (b) { | |
x && b < 0.9 | |
? (v.hideControls(), (a = !0)) | |
: a && !x && b > 0.9 && v.showControls(); | |
}), | |
l("zoomGestureEnded", function () { | |
(a = !1), a && !x && v.showControls(); | |
}); | |
}, | |
S = [ | |
{ | |
name: "caption", | |
option: "captionEl", | |
onInit: function (a) { | |
e = a; | |
}, | |
}, | |
{ | |
name: "share-modal", | |
option: "shareEl", | |
onInit: function (a) { | |
i = a; | |
}, | |
onTap: function () { | |
F(); | |
}, | |
}, | |
{ | |
name: "button--share", | |
option: "shareEl", | |
onInit: function (a) { | |
h = a; | |
}, | |
onTap: function () { | |
F(); | |
}, | |
}, | |
{ name: "button--zoom", option: "zoomEl", onTap: a.toggleDesktopZoom }, | |
{ | |
name: "counter", | |
option: "counterEl", | |
onInit: function (a) { | |
g = a; | |
}, | |
}, | |
{ name: "button--close", option: "closeEl", onTap: a.close }, | |
{ name: "button--arrow--left", option: "arrowEl", onTap: a.prev }, | |
{ name: "button--arrow--right", option: "arrowEl", onTap: a.next }, | |
{ | |
name: "button--fs", | |
option: "fullscreenEl", | |
onTap: function () { | |
c.isFullscreen() ? c.exit() : c.enter(); | |
}, | |
}, | |
{ | |
name: "preloader", | |
option: "preloaderEl", | |
onInit: function (a) { | |
m = a; | |
}, | |
}, | |
], | |
T = function () { | |
var a, | |
c, | |
e, | |
f = function (d) { | |
if (d) | |
for (var f = d.length, g = 0; g < f; g++) { | |
(a = d[g]), (c = a.className); | |
for (var h = 0; h < S.length; h++) | |
(e = S[h]), | |
c.indexOf("pswp__" + e.name) > -1 && | |
(q[e.option] | |
? (b.removeClass(a, "pswp__element--disabled"), | |
e.onInit && e.onInit(a)) | |
: b.addClass(a, "pswp__element--disabled")); | |
} | |
}; | |
f(d.children); | |
var g = b.getChildByClass(d, "pswp__top-bar"); | |
g && f(g.children); | |
}; | |
(v.init = function () { | |
b.extend(a.options, z, !0), | |
(q = a.options), | |
(d = b.getChildByClass(a.scrollWrap, "pswp__ui")), | |
(l = a.listen), | |
R(), | |
l("beforeChange", v.update), | |
l("doubleTap", function (b) { | |
var c = a.currItem.initialZoomLevel; | |
a.getZoomLevel() !== c | |
? a.zoomTo(c, b, 333) | |
: a.zoomTo(q.getDoubleTapZoom(!1, a.currItem), b, 333); | |
}), | |
l("preventDragEvent", function (a, b, c) { | |
var d = a.target || a.srcElement; | |
d && | |
d.getAttribute("class") && | |
a.type.indexOf("mouse") > -1 && | |
(d.getAttribute("class").indexOf("__caption") > 0 || | |
/(SMALL|STRONG|EM)/i.test(d.tagName)) && | |
(c.prevent = !1); | |
}), | |
l("bindEvents", function () { | |
b.bind(d, "pswpTap click", A), | |
b.bind(a.scrollWrap, "pswpTap", v.onGlobalTap), | |
a.likelyTouchDevice || | |
b.bind(a.scrollWrap, "mouseover", v.onMouseOver); | |
}), | |
l("unbindEvents", function () { | |
y || F(), | |
t && clearInterval(t), | |
b.unbind(document, "mouseout", L), | |
b.unbind(document, "mousemove", K), | |
b.unbind(d, "pswpTap click", A), | |
b.unbind(a.scrollWrap, "pswpTap", v.onGlobalTap), | |
b.unbind(a.scrollWrap, "mouseover", v.onMouseOver), | |
c && | |
(b.unbind(document, c.eventK, v.updateFullscreen), | |
c.isFullscreen() && ((q.hideAnimationDuration = 0), c.exit()), | |
(c = null)); | |
}), | |
l("destroy", function () { | |
q.captionEl && | |
(f && d.removeChild(f), b.removeClass(e, "pswp__caption--empty")), | |
i && (i.children[0].onclick = null), | |
b.removeClass(d, "pswp__ui--over-close"), | |
b.addClass(d, "pswp__ui--hidden"), | |
v.setIdle(!1); | |
}), | |
q.showAnimationDuration || b.removeClass(d, "pswp__ui--hidden"), | |
l("initialZoomIn", function () { | |
q.showAnimationDuration && b.removeClass(d, "pswp__ui--hidden"); | |
}), | |
l("initialZoomOut", function () { | |
b.addClass(d, "pswp__ui--hidden"); | |
}), | |
l("parseVerticalMargin", P), | |
T(), | |
q.shareEl && h && i && (y = !0), | |
D(), | |
Q(), | |
M(), | |
N(); | |
}), | |
(v.setIdle = function (a) { | |
(k = a), C(d, "ui--idle", a); | |
}), | |
(v.update = function () { | |
x && a.currItem | |
? (v.updateIndexIndicator(), | |
q.captionEl && | |
(q.addCaptionHTMLFn(a.currItem, e), | |
C(e, "caption--empty", !a.currItem.title)), | |
(w = !0)) | |
: (w = !1), | |
y || F(), | |
D(); | |
}), | |
(v.updateFullscreen = function (d) { | |
d && | |
setTimeout(function () { | |
a.setScrollOffset(0, b.getScrollY()); | |
}, 50), | |
b[(c.isFullscreen() ? "add" : "remove") + "Class"]( | |
a.template, | |
"pswp--fs" | |
); | |
}), | |
(v.updateIndexIndicator = function () { | |
q.counterEl && | |
(g.innerHTML = | |
a.getCurrentIndex() + 1 + q.indexIndicatorSep + q.getNumItemsFn()); | |
}), | |
(v.onGlobalTap = function (c) { | |
c = c || window.event; | |
var d = c.target || c.srcElement; | |
if (!r) | |
if (c.detail && "mouse" === c.detail.pointerType) { | |
if (I(d)) return void a.close(); | |
b.hasClass(d, "pswp__img") && | |
(1 === a.getZoomLevel() && a.getZoomLevel() <= a.currItem.fitRatio | |
? q.clickToCloseNonZoomable && a.close() | |
: a.toggleDesktopZoom(c.detail.releasePoint)); | |
} else if ( | |
(q.tapToToggleControls && (x ? v.hideControls() : v.showControls()), | |
q.tapToClose && (b.hasClass(d, "pswp__img") || I(d))) | |
) | |
return void a.close(); | |
}), | |
(v.onMouseOver = function (a) { | |
a = a || window.event; | |
var b = a.target || a.srcElement; | |
C(d, "ui--over-close", I(b)); | |
}), | |
(v.hideControls = function () { | |
b.addClass(d, "pswp__ui--hidden"), (x = !1); | |
}), | |
(v.showControls = function () { | |
(x = !0), w || v.update(), b.removeClass(d, "pswp__ui--hidden"); | |
}), | |
(v.supportsFullscreen = function () { | |
var a = document; | |
return !!( | |
a.exitFullscreen || | |
a.mozCancelFullScreen || | |
a.webkitExitFullscreen || | |
a.msExitFullscreen | |
); | |
}), | |
(v.getFullscreenAPI = function () { | |
var b, | |
c = document.documentElement, | |
d = "fullscreenchange"; | |
return ( | |
c.requestFullscreen | |
? (b = { | |
enterK: "requestFullscreen", | |
exitK: "exitFullscreen", | |
elementK: "fullscreenElement", | |
eventK: d, | |
}) | |
: c.mozRequestFullScreen | |
? (b = { | |
enterK: "mozRequestFullScreen", | |
exitK: "mozCancelFullScreen", | |
elementK: "mozFullScreenElement", | |
eventK: "moz" + d, | |
}) | |
: c.webkitRequestFullscreen | |
? (b = { | |
enterK: "webkitRequestFullscreen", | |
exitK: "webkitExitFullscreen", | |
elementK: "webkitFullscreenElement", | |
eventK: "webkit" + d, | |
}) | |
: c.msRequestFullscreen && | |
(b = { | |
enterK: "msRequestFullscreen", | |
exitK: "msExitFullscreen", | |
elementK: "msFullscreenElement", | |
eventK: "MSFullscreenChange", | |
}), | |
b && | |
((b.enter = function () { | |
return ( | |
(j = q.closeOnScroll), | |
(q.closeOnScroll = !1), | |
"webkitRequestFullscreen" !== this.enterK | |
? a.template[this.enterK]() | |
: void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT) | |
); | |
}), | |
(b.exit = function () { | |
return (q.closeOnScroll = j), document[this.exitK](); | |
}), | |
(b.isFullscreen = function () { | |
return document[this.elementK]; | |
})), | |
b | |
); | |
}); | |
}; | |
return a; | |
}); | |
var initPhotoSwipeFromDOM = function (gallerySelector) { | |
// parse slide data (url, title, size ...) from DOM elements | |
// (children of gallerySelector) | |
var parseThumbnailElements = function (el) { | |
var thumbElements = el.childNodes, | |
numNodes = thumbElements.length, | |
items = [], | |
figureEl, | |
linkEl, | |
size, | |
item; | |
for (var i = 0; i < numNodes; i++) { | |
figureEl = thumbElements[i]; // <figure> element | |
// include only element nodes | |
if (figureEl.nodeType !== 1) { | |
continue; | |
} | |
linkEl = figureEl.children[0]; // <a> element | |
size = linkEl.getAttribute("data-size").split("x"); | |
// create slide object | |
item = { | |
src: linkEl.getAttribute("href"), | |
w: parseInt(size[0], 10), | |
h: parseInt(size[1], 10), | |
}; | |
if (figureEl.children.length > 1) { | |
// <figcaption> content | |
item.title = figureEl.children[1].innerHTML; | |
} | |
if (linkEl.children.length > 0) { | |
// <img> thumbnail element, retrieving thumbnail url | |
item.msrc = linkEl.children[0].getAttribute("src"); | |
} | |
item.el = figureEl; // save link to element for getThumbBoundsFn | |
items.push(item); | |
} | |
return items; | |
}; | |
// find nearest parent element | |
var closest = function closest(el, fn) { | |
return el && (fn(el) ? el : closest(el.parentNode, fn)); | |
}; | |
// triggers when user clicks on thumbnail | |
var onThumbnailsClick = function (e) { | |
e = e || window.event; | |
e.preventDefault ? e.preventDefault() : (e.returnValue = false); | |
var eTarget = e.target || e.srcElement; | |
// find root element of slide | |
var clickedListItem = closest(eTarget, function (el) { | |
return el.tagName && el.tagName.toUpperCase() === "FIGURE"; | |
}); | |
if (!clickedListItem) { | |
return; | |
} | |
// find index of clicked item by looping through all child nodes | |
// alternatively, you may define index via data- attribute | |
var clickedGallery = clickedListItem.parentNode, | |
childNodes = clickedListItem.parentNode.childNodes, | |
numChildNodes = childNodes.length, | |
nodeIndex = 0, | |
index; | |
for (var i = 0; i < numChildNodes; i++) { | |
if (childNodes[i].nodeType !== 1) { | |
continue; | |
} | |
if (childNodes[i] === clickedListItem) { | |
index = nodeIndex; | |
break; | |
} | |
nodeIndex++; | |
} | |
if (index >= 0) { | |
// open PhotoSwipe if valid index found | |
openPhotoSwipe(index, clickedGallery); | |
} | |
return false; | |
}; | |
// parse picture index and gallery index from URL (#&pid=1&gid=2) | |
var photoswipeParseHash = function () { | |
var hash = window.location.hash.substring(1), | |
params = {}; | |
if (hash.length < 5) { | |
return params; | |
} | |
var vars = hash.split("&"); | |
for (var i = 0; i < vars.length; i++) { | |
if (!vars[i]) { | |
continue; | |
} | |
var pair = vars[i].split("="); | |
if (pair.length < 2) { | |
continue; | |
} | |
params[pair[0]] = pair[1]; | |
} | |
if (params.gid) { | |
params.gid = parseInt(params.gid, 10); | |
} | |
return params; | |
}; | |
var openPhotoSwipe = function ( | |
index, | |
galleryElement, | |
disableAnimation, | |
fromURL | |
) { | |
var pswpElement = document.querySelectorAll(".pswp")[0], | |
gallery, | |
options, | |
items; | |
items = parseThumbnailElements(galleryElement); | |
// define options (if needed) | |
options = { | |
// define gallery index (for URL) | |
galleryUID: galleryElement.getAttribute("data-pswp-uid"), | |
getThumbBoundsFn: function (index) { | |
// See Options -> getThumbBoundsFn section of documentation for more info | |
var thumbnail = items[index].el.getElementsByTagName("img")[0], // find thumbnail | |
pageYScroll = | |
window.pageYOffset || document.documentElement.scrollTop, | |
rect = thumbnail.getBoundingClientRect(); | |
return { x: rect.left, y: rect.top + pageYScroll, w: rect.width }; | |
}, | |
}; | |
// PhotoSwipe opened from URL | |
if (fromURL) { | |
if (options.galleryPIDs) { | |
// parse real index when custom PIDs are used | |
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url | |
for (var j = 0; j < items.length; j++) { | |
if (items[j].pid == index) { | |
options.index = j; | |
break; | |
} | |
} | |
} else { | |
// in URL indexes start from 1 | |
options.index = parseInt(index, 10) - 1; | |
} | |
} else { | |
options.index = parseInt(index, 10); | |
} | |
// exit if index not found | |
if (isNaN(options.index)) { | |
return; | |
} | |
if (disableAnimation) { | |
options.showAnimationDuration = 0; | |
} | |
// Pass data to PhotoSwipe and initialize it | |
gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options); | |
gallery.init(); | |
}; | |
// loop through all gallery elements and bind events | |
var galleryElements = document.querySelectorAll(gallerySelector); | |
for (var i = 0, l = galleryElements.length; i < l; i++) { | |
galleryElements[i].setAttribute("data-pswp-uid", i + 1); | |
galleryElements[i].onclick = onThumbnailsClick; | |
} | |
// Parse URL and open gallery if it contains #&pid=3&gid=1 | |
var hashData = photoswipeParseHash(); | |
if (hashData.pid && hashData.gid) { | |
openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true); | |
} | |
}; | |
// execute above function | |
initPhotoSwipeFromDOM(".modal-lookbook"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment