Files
2026-04-26 22:02:24 +02:00

1107 lines
27 KiB
JavaScript
Executable File

!(function (n, e) {
"object" == typeof exports && "undefined" != typeof module
? (module.exports = e())
: "function" == typeof define && define.amd
? define(e)
: ((n =
"undefined" != typeof globalThis
? globalThis
: n || self).EmblaCarousel = e());
})(this, function () {
"use strict";
function n() {
return (n =
Object.assign ||
function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t)
Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}).apply(this, arguments);
}
function e(n, e) {
var t = {
start: function () {
return 0;
},
center: function (n) {
return r(n) / 2;
},
end: r,
};
function r(n) {
return e - n;
}
return {
measure: function (r) {
return "number" == typeof n ? e * Number(n) : t[n](r);
},
};
}
function t(n, e) {
var t = Math.abs(n - e);
function r(e) {
return e < n;
}
function o(n) {
return n > e;
}
function i(n) {
return r(n) || o(n);
}
return {
constrain: function (t) {
return i(t) ? (r(t) ? n : e) : t;
},
length: t,
max: e,
min: n,
reachedAny: i,
reachedMax: o,
reachedMin: r,
removeOffset: function (n) {
return t ? n - t * Math.ceil((n - e) / t) : n;
},
};
}
function r(n, e, o) {
var i = t(0, n),
a = i.min,
u = i.constrain,
c = n + 1,
s = d(e);
function d(n) {
return o ? Math.abs((c + n) % c) : u(n);
}
function f() {
return s;
}
function l(n) {
return (s = d(n)), p;
}
var p = {
add: function (n) {
return l(f() + n);
},
clone: function () {
return r(n, f(), o);
},
get: f,
set: l,
min: a,
max: n,
};
return p;
}
function o() {
var n = [];
var e = {
add: function (t, r, o, i) {
return (
void 0 === i && (i = !1),
t.addEventListener(r, o, i),
n.push(function () {
return t.removeEventListener(r, o, i);
}),
e
);
},
removeAll: function () {
return (
(n = n.filter(function (n) {
return n();
})),
e
);
},
};
return e;
}
function i(n) {
var e = n;
function t(n) {
return (e /= n), o;
}
function r(n) {
return "number" == typeof n ? n : n.get();
}
var o = {
add: function (n) {
return (e += r(n)), o;
},
divide: t,
get: function () {
return e;
},
multiply: function (n) {
return (e *= n), o;
},
normalize: function () {
return 0 !== e && t(e), o;
},
set: function (n) {
return (e = r(n)), o;
},
subtract: function (n) {
return (e -= r(n)), o;
},
};
return o;
}
function a(n) {
return n ? n / Math.abs(n) : 0;
}
function u(n, e) {
return Math.abs(n - e);
}
function c(n, e) {
for (var t = [], r = 0; r < n.length; r += e) t.push(n.slice(r, r + e));
return t;
}
function s(n) {
return Object.keys(n).map(Number);
}
function d(n) {
return n[f(n)];
}
function f(n) {
return Math.max(0, n.length - 1);
}
function l(n, e) {
var t = n.classList;
e && t.contains(e) && t.remove(e);
}
function p(n, e) {
var t = n.classList;
e && !t.contains(e) && t.add(e);
}
function g(n, e, t, r, c, s, d, f, l, p, g, m, v, h, x) {
var y = n.scroll,
b = n.cross,
w = ["INPUT", "SELECT", "TEXTAREA"],
M = i(0),
S = i(0),
E = i(0),
A = o(),
T = o(),
C = { mouse: 2.5, touch: 3.5 },
D = { mouse: 5, touch: 7 },
P = c ? 5 : 16,
B = !1,
I = !1,
L = !1,
k = !1;
function z(n) {
if (!(k = "mousedown" === n.type) || 0 === n.button) {
var e,
o,
i = u(r.get(), d.get()) >= 2,
a = k || !i,
c = ((e = n.target), (o = e.nodeName || ""), !(w.indexOf(o) > -1)),
f = i || (k && c);
(B = !0),
s.pointerDown(n),
E.set(r),
r.set(d),
p.useBaseMass().useSpeed(80),
(function () {
var n = k ? document : t;
T.add(n, "touchmove", O)
.add(n, "touchend", N)
.add(n, "mousemove", O)
.add(n, "mouseup", N);
})(),
M.set(s.readPoint(n, y)),
S.set(s.readPoint(n, b)),
v.emit("pointerDown"),
a && (L = !1),
f && n.preventDefault();
}
}
function O(n) {
if (!I && !k) {
if (!n.cancelable) return N();
var t = s.readPoint(n, y).get(),
o = s.readPoint(n, b).get(),
i = u(t, M.get()),
a = u(o, S.get());
if (!(I = i > a) && !L) return N();
}
var c = s.pointerMove(n);
!L && c && (L = !0), f.start(), r.add(e.applyTo(c)), n.preventDefault();
}
function N() {
var n = g.byDistance(0, !1).index !== m.get(),
t = s.pointerUp() * (c ? D : C)[k ? "mouse" : "touch"],
o = (function (n, e) {
var t = m.clone().add(-1 * a(n)),
r = t.get() === m.min || t.get() === m.max,
o = g.byDistance(n, !c).distance;
return c || Math.abs(n) < 20
? o
: !h && r
? 0.6 * o
: x && e
? 0.5 * o
: g.byIndex(t.get(), 0).distance;
})(e.applyTo(t), n),
i = (function (n, e) {
if (0 === n || 0 === e) return 0;
if (Math.abs(n) <= Math.abs(e)) return 0;
var t = u(Math.abs(n), Math.abs(e));
return Math.abs(t / n);
})(t, o),
d = u(r.get(), E.get()) >= 0.5,
f = n && i > 0.75,
y = Math.abs(t) < 20,
b = f ? 10 : P,
w = f ? 1 + 2.5 * i : 1;
d && !k && (L = !0),
(I = !1),
(B = !1),
T.removeAll(),
p.useSpeed(y ? 9 : b).useMass(w),
l.distance(o, !c),
(k = !1),
v.emit("pointerUp");
}
function F(n) {
L && n.preventDefault();
}
return {
addActivationEvents: function () {
var n = t;
A.add(n, "touchmove", function () {})
.add(n, "touchend", function () {})
.add(n, "touchstart", z)
.add(n, "mousedown", z)
.add(n, "touchcancel", N)
.add(n, "contextmenu", N)
.add(n, "click", F);
},
clickAllowed: function () {
return !L;
},
pointerDown: function () {
return B;
},
removeAllEvents: function () {
A.removeAll(), T.removeAll();
},
};
}
function m(n, e, t) {
var r,
o,
u =
((r = 2),
(o = Math.pow(10, r)),
function (n) {
return Math.round(n * o) / o;
}),
c = i(0),
s = i(0),
d = i(0),
f = 0,
l = e,
p = t;
function g(n) {
return (l = n), v;
}
function m(n) {
return (p = n), v;
}
var v = {
direction: function () {
return f;
},
seek: function (e) {
d.set(e).subtract(n);
var t,
r,
o,
i = ((t = d.get()), (o = 0) + ((t - (r = 0)) / (100 - r)) * (l - o));
return (
(f = a(d.get())),
d.normalize().multiply(i).subtract(c),
(function (n) {
n.divide(p), s.add(n);
})(d),
v
);
},
settle: function (e) {
var t = e.get() - n.get(),
r = !u(t);
return r && n.set(e), r;
},
update: function () {
c.add(s), n.add(c), s.multiply(0);
},
useBaseMass: function () {
return m(t);
},
useBaseSpeed: function () {
return g(e);
},
useMass: m,
useSpeed: g,
};
return v;
}
function v(n, e, t, r) {
var o = !1;
return {
constrain: function (i) {
if (!o && n.reachedAny(t.get()) && n.reachedAny(e.get())) {
var a = i ? 0.7 : 0.45,
u = t.get() - e.get();
t.subtract(u * a),
!i &&
Math.abs(u) < 10 &&
(t.set(n.constrain(t.get())), r.useSpeed(10).useMass(3));
}
},
toggleActive: function (n) {
o = !n;
},
};
}
function h(n, e, r, o, i) {
var a = t(-e + n, r[0]),
u = o.map(a.constrain);
return {
snapsContained: (function () {
if (e <= n) return [a.max];
if ("keepSnaps" === i) return u;
var r = (function () {
var n = u[0],
e = d(u),
r = u.lastIndexOf(n),
o = u.indexOf(e) + 1;
return t(r, o);
})(),
o = r.min,
c = r.max;
return u.slice(o, c);
})(),
};
}
function x(n, e, r, o, i) {
var a = t(r.min + e.measure(0.1), r.max + e.measure(0.1)),
u = a.reachedMin,
c = a.reachedMax;
return {
loop: function (e) {
if (
(function (n) {
return 1 === n ? c(o.get()) : -1 === n && u(o.get());
})(e)
) {
var t = n * (-1 * e);
i.forEach(function (n) {
return n.add(t);
});
}
},
};
}
function y(n) {
var e = n.max,
t = n.length;
return {
get: function (n) {
return (n - e) / -t;
},
};
}
function b(n, e, t, r, o, i) {
var a,
u,
s = n.startEdge,
f = n.endEdge,
l = o
.map(function (n) {
return r[s] - n[s];
})
.map(t.measure)
.map(function (n) {
return -Math.abs(n);
}),
p =
((a = c(l, i).map(function (n) {
return n[0];
})),
(u = c(o, i)
.map(function (n) {
return d(n)[f] - n[0][s];
})
.map(t.measure)
.map(Math.abs)
.map(e.measure)),
a.map(function (n, e) {
return n + u[e];
}));
return { snaps: l, snapsAligned: p };
}
function w(n, e, t, r, o) {
var i = r.reachedAny,
a = r.removeOffset,
u = r.constrain;
function c(n, e) {
return Math.abs(n) < Math.abs(e) ? n : e;
}
function s(e, r) {
var o = e,
i = e + t,
a = e - t;
if (!n) return o;
if (!r) return c(c(o, i), a);
var u = c(o, 1 === r ? i : a);
return Math.abs(u) * r;
}
return {
byDistance: function (t, r) {
var c = o.get() + t,
d = (function (t) {
var r = n ? a(t) : u(t);
return {
index: e
.map(function (n) {
return n - r;
})
.map(function (n) {
return s(n, 0);
})
.map(function (n, e) {
return { diff: n, index: e };
})
.sort(function (n, e) {
return Math.abs(n.diff) - Math.abs(e.diff);
})[0].index,
distance: r,
};
})(c),
f = d.index,
l = d.distance,
p = !n && i(c);
return !r || p
? { index: f, distance: t }
: { index: f, distance: t + s(e[f] - l, 0) };
},
byIndex: function (n, t) {
return { index: n, distance: s(e[n] - o.get(), t) };
},
shortcut: s,
};
}
function M(n, e, t, r, o, i, a, u) {
var c,
d = s(r),
f = s(r).reverse(),
l = ((c = o[0] - 1), m(g(f, c), "end")).concat(
(function () {
var n = e - o[0] - 1;
return m(g(d, n), "start");
})()
);
function p(n, e) {
return n.reduce(function (n, e) {
return n - r[e];
}, e);
}
function g(n, e) {
return n.reduce(function (n, t) {
return p(n, e) > 0 ? n.concat([t]) : n;
}, []);
}
function m(n, e) {
var r = "start" === e,
o = r ? -t : t,
u = i.findSlideBounds(o);
return n.map(function (n) {
var e = r ? 0 : -t,
o = r ? t : 0,
i = u.filter(function (e) {
return e.index === n;
})[0][r ? "end" : "start"];
return {
point: i,
getTarget: function () {
return a.get() > i ? e : o;
},
index: n,
location: -1,
};
});
}
return {
canLoop: function () {
return l.every(function (n) {
var t = n.index;
return (
p(
d.filter(function (n) {
return n !== t;
}),
e
) <= 0
);
});
},
clear: function () {
l.forEach(function (e) {
var t = e.index;
u[t].style[n.startEdge] = "";
});
},
loop: function () {
l.forEach(function (e) {
var t = e.getTarget,
r = e.location,
o = e.index,
i = t();
i !== r && ((u[o].style[n.startEdge] = i + "%"), (e.location = i));
});
},
loopPoints: l,
};
}
function S(n, e, t) {
var r = o(),
i = r.removeAll,
a = 0;
function u(n) {
9 === n.keyCode && (a = new Date().getTime());
}
function c(o, i) {
r.add(
o,
"focus",
function () {
if (!(new Date().getTime() - a > 10)) {
n.scrollLeft = 0;
var r = Math.floor(i / t);
e.index(r, 0);
}
},
!0
);
}
return {
addActivationEvents: function (n) {
r.add(document, "keydown", u, !1), n.forEach(c);
},
removeAllEvents: i,
};
}
function E(n, e, t) {
var r = t.style,
o =
"x" === n.scroll
? function (n) {
return "translate3d(" + n + "%,0px,0px)";
}
: function (n) {
return "translate3d(0px," + n + "%,0px)";
},
i = !1;
return {
clear: function () {
r.transform = "";
},
to: function (n) {
i || (r.transform = o(e.applyTo(n.get())));
},
toggleActive: function (n) {
i = !n;
},
};
}
function A(n, o, a, u, c) {
var l,
p = u.align,
A = u.axis,
T = u.direction,
C = u.startIndex,
D = u.inViewThreshold,
P = u.loop,
B = u.speed,
I = u.dragFree,
L = u.slidesToScroll,
k = u.skipSnaps,
z = u.containScroll,
O = o.getBoundingClientRect(),
N = a.map(function (n) {
return n.getBoundingClientRect();
}),
F = (function (n) {
var e = "rtl" === n ? -1 : 1;
return {
applyTo: function (n) {
return n * e;
},
};
})(T),
U = (function (n, e) {
var t = "y" === n ? "y" : "x";
return {
scroll: t,
cross: "y" === n ? "x" : "y",
startEdge: "y" === t ? "top" : "rtl" === e ? "right" : "left",
endEdge: "y" === t ? "bottom" : "rtl" === e ? "left" : "right",
measureSize: function (n) {
var e = n.width,
r = n.height;
return "x" === t ? e : r;
},
};
})(A, T),
V =
((l = U.measureSize(O)),
{
measure: function (n) {
return 0 === l ? 0 : (n / l) * 100;
},
totalPercent: 100,
}),
H = V.totalPercent,
R = e(p, H),
j = (function (n, e, t, r, o) {
var i = n.measureSize,
a = n.startEdge,
u = n.endEdge,
c = r.map(i);
return {
slideSizes: c.map(e.measure),
slideSizesWithGaps: r
.map(function (n, e, r) {
var i = e === f(r),
s = window.getComputedStyle(d(t)),
l = parseFloat(s.getPropertyValue("margin-" + u));
return i ? c[e] + (o ? l : 0) : r[e + 1][a] - n[a];
})
.map(e.measure)
.map(Math.abs),
};
})(U, V, a, N, P),
G = j.slideSizes,
q = j.slideSizesWithGaps,
W = b(U, R, V, O, N, L),
X = W.snaps,
J = W.snapsAligned,
Y = -d(X) + d(q),
K = h(H, Y, X, J, z).snapsContained,
Q = !P && "" !== z ? K : J,
Z = (function (n, e, r) {
var o, i;
return { limit: ((o = e[0]), (i = d(e)), t(r ? o - n : i, o)) };
})(Y, Q, P).limit,
$ = r(f(Q), C, P),
_ = $.clone(),
nn = s(a),
en = (function (n) {
var e = 0;
function t(n, t) {
return function () {
n === !!e && t();
};
}
function r() {
e = window.requestAnimationFrame(n);
}
return {
proceed: t(!0, r),
start: t(!1, r),
stop: t(!0, function () {
window.cancelAnimationFrame(e), (e = 0);
}),
};
})(function () {
P || dn.scrollBounds.constrain(dn.dragHandler.pointerDown()),
dn.scrollBody.seek(on).update();
var n = dn.scrollBody.settle(on);
n &&
!dn.dragHandler.pointerDown() &&
(dn.animation.stop(), c.emit("settle")),
n || c.emit("scroll"),
P &&
(dn.scrollLooper.loop(dn.scrollBody.direction()),
dn.slideLooper.loop()),
dn.translate.to(rn),
dn.animation.proceed();
}),
tn = Q[$.get()],
rn = i(tn),
on = i(tn),
an = m(rn, B, 1),
un = w(P, Q, Y, Z, on),
cn = (function (n, e, t, r, o, i) {
function a(r) {
var a = r.distance,
u = r.index !== e.get();
a && (n.start(), o.add(a)),
u && (t.set(e.get()), e.set(r.index), i.emit("select"));
}
return {
distance: function (n, e) {
a(r.byDistance(n, e));
},
index: function (n, t) {
var o = e.clone().set(n);
a(r.byIndex(o.get(), t));
},
};
})(en, $, _, un, on, c),
sn = (function (n, e, t, r, o, i) {
var a = Math.min(Math.max(i, 0.01), 0.99),
u = (o ? [0, e, -e] : [0]).reduce(function (n, e) {
return n.concat(c(e, a));
}, []);
function c(e, o) {
var i = t.map(function (n) {
return n * (o || 0);
});
return r.map(function (r, o) {
return {
start: r - t[o] + i[o] + e,
end: r + n - i[o] + e,
index: o,
};
});
}
return {
check: function (n) {
return u.reduce(function (e, t) {
var r = t.index,
o = t.start,
i = t.end;
return -1 === e.indexOf(r) && o < n && i > n ? e.concat([r]) : e;
}, []);
},
findSlideBounds: c,
};
})(H, Y, G, X, P, D),
dn = {
animation: en,
axis: U,
direction: F,
dragHandler: g(
U,
F,
n,
on,
I,
(function (n, e) {
var t = n.scroll,
r = { x: "clientX", y: "clientY" },
o = i(0),
a = i(0),
u = i(0),
c = i(0),
s = [],
d = new Date().getTime(),
f = !1;
function l(n, e) {
f = !n.touches;
var t = r[e],
o = f ? n[t] : n.touches[0][t];
return c.set(o);
}
return {
pointerDown: function (n) {
var r = l(n, t);
return o.set(r), u.set(r), e.measure(o.get());
},
pointerMove: function (n) {
var r = l(n, t),
o = new Date().getTime(),
i = o - d;
return (
i >= 10 && (i >= 100 && (s = []), s.push(r.get()), (d = o)),
a.set(r).subtract(u),
u.set(r),
e.measure(a.get())
);
},
pointerUp: function () {
var n = new Date().getTime() - d,
t = u.get(),
r = s
.slice(-5)
.map(function (n) {
return t - n;
})
.sort(function (n, e) {
return Math.abs(n) < Math.abs(e) ? 1 : -1;
})[0];
return (
u.set(n > 100 || !r ? 0 : r), (s = []), e.measure(u.get())
);
},
readPoint: l,
};
})(U, V),
rn,
en,
cn,
an,
un,
$,
c,
P,
k
),
pxToPercent: V,
index: $,
indexPrevious: _,
limit: Z,
location: rn,
options: u,
scrollBody: an,
scrollBounds: v(Z, rn, on, an),
scrollLooper: x(Y, V, Z, rn, [rn, on]),
scrollProgress: y(Z),
scrollSnaps: Q,
scrollTarget: un,
scrollTo: cn,
slideFocus: S(n, cn, L),
slideLooper: M(U, H, Y, q, Q, sn, rn, a),
slidesInView: sn,
slideIndexes: nn,
target: on,
translate: E(U, F, o),
};
return dn;
}
var T = {
align: "center",
axis: "x",
containScroll: "",
direction: "ltr",
dragFree: !1,
draggable: !0,
draggableClass: "is-draggable",
draggingClass: "is-dragging",
inViewThreshold: 0,
loop: !1,
skipSnaps: !0,
selectedClass: "is-selected",
slidesToScroll: 1,
speed: 10,
startIndex: 0,
};
return function (e, t) {
var r,
i,
a,
u,
c,
s,
d,
f = (function () {
var n = {};
function e(e) {
return n[e] || [];
}
var t = {
emit: function (n) {
return (
e(n).forEach(function (e) {
return e(n);
}),
t
);
},
off: function (r, o) {
return (
(n[r] = e(r).filter(function (n) {
return n !== o;
})),
t
);
},
on: function (r, o) {
return (n[r] = e(r).concat([o])), t;
},
};
return t;
})(),
g = o(),
m =
((r = function () {
if (y) {
var n = u.axis.measureSize(e.getBoundingClientRect());
M !== n && B(), f.emit("resize");
}
}),
(i = 500),
(a = 0),
function () {
window.clearTimeout(a), (a = window.setTimeout(r, i) || 0);
}),
v = B,
h = f.on,
x = f.off,
y = !1,
b = n({}, T),
w = n({}, b),
M = 0;
function S() {
if (!e) throw new Error("Missing root node 😢");
var n,
t = e.querySelector("*");
if (!t) throw new Error("Missing container node 😢");
(s = t),
(d = Array.prototype.slice.call(s.children)),
(n = getComputedStyle(e, ":before").content),
(c = {
get: function () {
try {
return JSON.parse(n.slice(1, -1).replace(/\\/g, ""));
} catch (n) {}
return {};
},
});
}
function E(t) {
if (
(S(),
(b = n({}, b, t)),
(w = n({}, b, c.get())),
(u = A(e, s, d, w, f)),
g.add(window, "resize", m),
u.translate.to(u.location),
(M = u.axis.measureSize(e.getBoundingClientRect())),
w.loop)
) {
if (!u.slideLooper.canLoop()) return P(), E({ loop: !1 });
u.slideLooper.loop();
}
w.draggable &&
s.offsetParent &&
d.length &&
(u.dragHandler.addActivationEvents(),
w.draggableClass && p(e, w.draggableClass),
w.draggingClass && f.on("pointerDown", C).on("pointerUp", C)),
d.length && u.slideFocus.addActivationEvents(d),
w.selectedClass && (D(), f.on("select", D).on("pointerUp", D)),
y ||
(setTimeout(function () {
return f.emit("init");
}, 0),
(y = !0));
}
function C(n) {
var t = w.draggingClass;
"pointerDown" === n ? p(e, t) : l(e, t);
}
function D() {
var n = w.selectedClass,
e = I(!0);
L(!0).forEach(function (e) {
return l(d[e], n);
}),
e.forEach(function (e) {
return p(d[e], n);
});
}
function P() {
u.dragHandler.removeAllEvents(),
u.slideFocus.removeAllEvents(),
u.animation.stop(),
g.removeAll(),
u.translate.clear(),
u.slideLooper.clear(),
l(e, w.draggableClass),
d.forEach(function (n) {
return l(n, w.selectedClass);
}),
f
.off("select", D)
.off("pointerUp", D)
.off("pointerDown", C)
.off("pointerUp", C);
}
function B(e) {
if (y) {
var t = n({ startIndex: z() }, e);
P(), E(t), f.emit("reInit");
}
}
function I(n) {
var e = u[n ? "target" : "location"].get(),
t = w.loop ? "removeOffset" : "constrain";
return u.slidesInView.check(u.limit[t](e));
}
function L(n) {
var e = I(n);
return u.slideIndexes.filter(function (n) {
return -1 === e.indexOf(n);
});
}
function k(n, e, t) {
// if(localStorage.getItem("scroll-gallery")){
u.scrollBody.useBaseMass().useSpeed(e ? 100 : w.speed),
y && u.scrollTo.index(n, t || 0);
// }
}
function z() {
return u.index.get();
}
return (
E(t),
{
canScrollNext: function () {
return u.index.clone().add(1).get() !== z();
},
canScrollPrev: function () {
return u.index.clone().add(-1).get() !== z();
},
clickAllowed: function () {
return u.dragHandler.clickAllowed();
},
containerNode: function () {
return s;
},
dangerouslyGetEngine: function () {
return u;
},
destroy: function () {
y && (P(), (y = !1), f.emit("destroy"));
},
off: x,
on: h,
previousScrollSnap: function () {
return u.indexPrevious.get();
},
reInit: v,
rootNode: function () {
return e;
},
scrollNext: function (n) {
k(u.index.clone().add(1).get(), !0 === n, -1);
},
scrollPrev: function (n) {
k(u.index.clone().add(-1).get(), !0 === n, 1);
},
scrollProgress: function () {
return u.scrollProgress.get(u.location.get());
},
scrollSnapList: function () {
return u.scrollSnaps.map(u.scrollProgress.get);
},
scrollTo: k,
selectedScrollSnap: z,
slideNodes: function () {
return d;
},
slidesInView: I,
slidesNotInView: L,
}
);
};
});