Skip to content

Instantly share code, notes, and snippets.

@shopifydeveloper
Created July 9, 2020 13:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shopifydeveloper/386bfdf7318662269617189b1078fef8 to your computer and use it in GitHub Desktop.
Save shopifydeveloper/386bfdf7318662269617189b1078fef8 to your computer and use it in GitHub Desktop.
/*! 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