curvia
Version:
A lightweight animation library for React and Vanilla JS
857 lines • 63 kB
JavaScript
import { useEffect as xo } from "react";
import it from "gsap";
function bo(i, e) {
for (var n = 0; n < e.length; n++) {
var t = e[n];
t.enumerable = t.enumerable || !1, t.configurable = !0, "value" in t && (t.writable = !0), Object.defineProperty(i, t.key, t);
}
}
function wo(i, e, n) {
return e && bo(i.prototype, e), i;
}
/*!
* Observer 3.13.0
* https://gsap.com
*
* @license Copyright 2008-2025, GreenSock. All rights reserved.
* Subject to the terms at https://gsap.com/standard-license
* @author: Jack Doyle, jack@greensock.com
*/
var me, $r, Ve, Rt, At, or, Kn, Nt, vr, Zn, bt, st, Jn, Qn = function() {
return me || typeof window < "u" && (me = window.gsap) && me.registerPlugin && me;
}, jn = 1, nr = [], R = [], pt = [], xr = Date.now, pn = function(e, n) {
return n;
}, ko = function() {
var e = vr.core, n = e.bridge || {}, t = e._scrollers, r = e._proxies;
t.push.apply(t, R), r.push.apply(r, pt), R = t, pt = r, pn = function(l, a) {
return n[l](a);
};
}, Ot = function(e, n) {
return ~pt.indexOf(e) && pt[pt.indexOf(e) + 1][n];
}, br = function(e) {
return !!~Zn.indexOf(e);
}, Ae = function(e, n, t, r, o) {
return e.addEventListener(n, t, {
passive: r !== !1,
capture: !!o
});
}, Re = function(e, n, t, r) {
return e.removeEventListener(n, t, !!r);
}, Or = "scrollLeft", Yr = "scrollTop", dn = function() {
return bt && bt.isPressed || R.cache++;
}, Jr = function(e, n) {
var t = function r(o) {
if (o || o === 0) {
jn && (Ve.history.scrollRestoration = "manual");
var l = bt && bt.isPressed;
o = r.v = Math.round(o) || (bt && bt.iOS ? 1 : 0), e(o), r.cacheID = R.cache, l && pn("ss", o);
} else (n || R.cache !== r.cacheID || pn("ref")) && (r.cacheID = R.cache, r.v = e());
return r.v + r.offset;
};
return t.offset = 0, e && t;
}, Ie = {
s: Or,
p: "left",
p2: "Left",
os: "right",
os2: "Right",
d: "width",
d2: "Width",
a: "x",
sc: Jr(function(i) {
return arguments.length ? Ve.scrollTo(i, ce.sc()) : Ve.pageXOffset || Rt[Or] || At[Or] || or[Or] || 0;
})
}, ce = {
s: Yr,
p: "top",
p2: "Top",
os: "bottom",
os2: "Bottom",
d: "height",
d2: "Height",
a: "y",
op: Ie,
sc: Jr(function(i) {
return arguments.length ? Ve.scrollTo(Ie.sc(), i) : Ve.pageYOffset || Rt[Yr] || At[Yr] || or[Yr] || 0;
})
}, Be = function(e, n) {
return (n && n._ctx && n._ctx.selector || me.utils.toArray)(e)[0] || (typeof e == "string" && me.config().nullTargetWarn !== !1 ? console.warn("Element not found:", e) : null);
}, Co = function(e, n) {
for (var t = n.length; t--; )
if (n[t] === e || n[t].contains(e))
return !0;
return !1;
}, Yt = function(e, n) {
var t = n.s, r = n.sc;
br(e) && (e = Rt.scrollingElement || At);
var o = R.indexOf(e), l = r === ce.sc ? 1 : 2;
!~o && (o = R.push(e) - 1), R[o + l] || Ae(e, "scroll", dn);
var a = R[o + l], f = a || (R[o + l] = Jr(Ot(e, t), !0) || (br(e) ? r : Jr(function(y) {
return arguments.length ? e[t] = y : e[t];
})));
return f.target = e, a || (f.smooth = me.getProperty(e, "scrollBehavior") === "smooth"), f;
}, gn = function(e, n, t) {
var r = e, o = e, l = xr(), a = l, f = n || 50, y = Math.max(500, f * 3), k = function(h, H) {
var F = xr();
H || F - l > f ? (o = r, r = h, a = l, l = F) : t ? r += h : r = o + (h - o) / (F - a) * (l - a);
}, x = function() {
o = r = t ? 0 : r, a = l = 0;
}, p = function(h) {
var H = a, F = o, L = xr();
return (h || h === 0) && h !== r && k(h), l === a || L - a > y ? 0 : (r + (t ? F : -F)) / ((t ? L : l) - H) * 1e3;
};
return {
update: k,
reset: x,
getVelocity: p
};
}, pr = function(e, n) {
return n && !e._gsapAllow && e.preventDefault(), e.changedTouches ? e.changedTouches[0] : e;
}, Rn = function(e) {
var n = Math.max.apply(Math, e), t = Math.min.apply(Math, e);
return Math.abs(n) >= Math.abs(t) ? n : t;
}, eo = function() {
vr = me.core.globals().ScrollTrigger, vr && vr.core && ko();
}, to = function(e) {
return me = e || Qn(), !$r && me && typeof document < "u" && document.body && (Ve = window, Rt = document, At = Rt.documentElement, or = Rt.body, Zn = [Ve, Rt, At, or], me.utils.clamp, Jn = me.core.context || function() {
}, Nt = "onpointerenter" in or ? "pointer" : "mouse", Kn = Q.isTouch = Ve.matchMedia && Ve.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in Ve || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0, st = Q.eventTypes = ("ontouchstart" in At ? "touchstart,touchmove,touchcancel,touchend" : "onpointerdown" in At ? "pointerdown,pointermove,pointercancel,pointerup" : "mousedown,mousemove,mouseup,mouseup").split(","), setTimeout(function() {
return jn = 0;
}, 500), eo(), $r = 1), $r;
};
Ie.op = ce;
R.cache = 0;
var Q = /* @__PURE__ */ function() {
function i(n) {
this.init(n);
}
var e = i.prototype;
return e.init = function(t) {
$r || to(me) || console.warn("Please gsap.registerPlugin(Observer)"), vr || eo();
var r = t.tolerance, o = t.dragMinimum, l = t.type, a = t.target, f = t.lineHeight, y = t.debounce, k = t.preventDefault, x = t.onStop, p = t.onStopDelay, u = t.ignore, h = t.wheelSpeed, H = t.event, F = t.onDragStart, L = t.onDragEnd, X = t.onDrag, oe = t.onPress, E = t.onRelease, qe = t.onRight, G = t.onLeft, w = t.onUp, Te = t.onDown, ze = t.onChangeX, _ = t.onChangeY, ue = t.onChange, b = t.onToggleX, dt = t.onToggleY, ie = t.onHover, Ee = t.onHoverEnd, Me = t.onMove, B = t.ignoreCheck, j = t.isNormalizer, ee = t.onGestureStart, s = t.onGestureEnd, se = t.onWheel, Ft = t.onEnable, kt = t.onDisable, Ke = t.onClick, gt = t.scrollSpeed, ye = t.capture, te = t.allowClicks, Pe = t.lockAxis, ve = t.onLockAxis;
this.target = a = Be(a) || At, this.vars = t, u && (u = me.utils.toArray(u)), r = r || 1e-9, o = o || 0, h = h || 1, gt = gt || 1, l = l || "wheel,touch,pointer", y = y !== !1, f || (f = parseFloat(Ve.getComputedStyle(or).lineHeight) || 22);
var Ct, De, Le, Y, K, Xe, Ne, c = this, He = 0, ht = 0, St = t.passive || !k && t.passive !== !1, V = Yt(a, Ie), _t = Yt(a, ce), Tt = V(), It = _t(), fe = ~l.indexOf("touch") && !~l.indexOf("pointer") && st[0] === "pointerdown", Et = br(a), Z = a.ownerDocument || Rt, et = [0, 0, 0], Ze = [0, 0, 0], mt = 0, lr = function() {
return mt = xr();
}, re = function(v, I) {
return (c.event = v) && u && Co(v.target, u) || I && fe && v.pointerType !== "touch" || B && B(v, I);
}, Dr = function() {
c._vx.reset(), c._vy.reset(), De.pause(), x && x(c);
}, yt = function() {
var v = c.deltaX = Rn(et), I = c.deltaY = Rn(Ze), d = Math.abs(v) >= r, C = Math.abs(I) >= r;
ue && (d || C) && ue(c, v, I, et, Ze), d && (qe && c.deltaX > 0 && qe(c), G && c.deltaX < 0 && G(c), ze && ze(c), b && c.deltaX < 0 != He < 0 && b(c), He = c.deltaX, et[0] = et[1] = et[2] = 0), C && (Te && c.deltaY > 0 && Te(c), w && c.deltaY < 0 && w(c), _ && _(c), dt && c.deltaY < 0 != ht < 0 && dt(c), ht = c.deltaY, Ze[0] = Ze[1] = Ze[2] = 0), (Y || Le) && (Me && Me(c), Le && (F && Le === 1 && F(c), X && X(c), Le = 0), Y = !1), Xe && !(Xe = !1) && ve && ve(c), K && (se(c), K = !1), Ct = 0;
}, Zt = function(v, I, d) {
et[d] += v, Ze[d] += I, c._vx.update(v), c._vy.update(I), y ? Ct || (Ct = requestAnimationFrame(yt)) : yt();
}, Jt = function(v, I) {
Pe && !Ne && (c.axis = Ne = Math.abs(v) > Math.abs(I) ? "x" : "y", Xe = !0), Ne !== "y" && (et[2] += v, c._vx.update(v, !0)), Ne !== "x" && (Ze[2] += I, c._vy.update(I, !0)), y ? Ct || (Ct = requestAnimationFrame(yt)) : yt();
}, Mt = function(v) {
if (!re(v, 1)) {
v = pr(v, k);
var I = v.clientX, d = v.clientY, C = I - c.x, m = d - c.y, S = c.isDragging;
c.x = I, c.y = d, (S || (C || m) && (Math.abs(c.startX - I) >= o || Math.abs(c.startY - d) >= o)) && (Le = S ? 2 : 1, S || (c.isDragging = !0), Jt(C, m));
}
}, zt = c.onPress = function(T) {
re(T, 1) || T && T.button || (c.axis = Ne = null, De.pause(), c.isPressed = !0, T = pr(T), He = ht = 0, c.startX = c.x = T.clientX, c.startY = c.y = T.clientY, c._vx.reset(), c._vy.reset(), Ae(j ? a : Z, st[1], Mt, St, !0), c.deltaX = c.deltaY = 0, oe && oe(c));
}, A = c.onRelease = function(T) {
if (!re(T, 1)) {
Re(j ? a : Z, st[1], Mt, !0);
var v = !isNaN(c.y - c.startY), I = c.isDragging, d = I && (Math.abs(c.x - c.startX) > 3 || Math.abs(c.y - c.startY) > 3), C = pr(T);
!d && v && (c._vx.reset(), c._vy.reset(), k && te && me.delayedCall(0.08, function() {
if (xr() - mt > 300 && !T.defaultPrevented) {
if (T.target.click)
T.target.click();
else if (Z.createEvent) {
var m = Z.createEvent("MouseEvents");
m.initMouseEvent("click", !0, !0, Ve, 1, C.screenX, C.screenY, C.clientX, C.clientY, !1, !1, !1, !1, 0, null), T.target.dispatchEvent(m);
}
}
})), c.isDragging = c.isGesturing = c.isPressed = !1, x && I && !j && De.restart(!0), Le && yt(), L && I && L(c), E && E(c, d);
}
}, Lt = function(v) {
return v.touches && v.touches.length > 1 && (c.isGesturing = !0) && ee(v, c.isDragging);
}, tt = function() {
return (c.isGesturing = !1) || s(c);
}, rt = function(v) {
if (!re(v)) {
var I = V(), d = _t();
Zt((I - Tt) * gt, (d - It) * gt, 1), Tt = I, It = d, x && De.restart(!0);
}
}, nt = function(v) {
if (!re(v)) {
v = pr(v, k), se && (K = !0);
var I = (v.deltaMode === 1 ? f : v.deltaMode === 2 ? Ve.innerHeight : 1) * h;
Zt(v.deltaX * I, v.deltaY * I, 0), x && !j && De.restart(!0);
}
}, Xt = function(v) {
if (!re(v)) {
var I = v.clientX, d = v.clientY, C = I - c.x, m = d - c.y;
c.x = I, c.y = d, Y = !0, x && De.restart(!0), (C || m) && Jt(C, m);
}
}, Qt = function(v) {
c.event = v, ie(c);
}, vt = function(v) {
c.event = v, Ee(c);
}, cr = function(v) {
return re(v) || pr(v, k) && Ke(c);
};
De = c._dc = me.delayedCall(p || 0.25, Dr).pause(), c.deltaX = c.deltaY = 0, c._vx = gn(0, 50, !0), c._vy = gn(0, 50, !0), c.scrollX = V, c.scrollY = _t, c.isDragging = c.isGesturing = c.isPressed = !1, Jn(this), c.enable = function(T) {
return c.isEnabled || (Ae(Et ? Z : a, "scroll", dn), l.indexOf("scroll") >= 0 && Ae(Et ? Z : a, "scroll", rt, St, ye), l.indexOf("wheel") >= 0 && Ae(a, "wheel", nt, St, ye), (l.indexOf("touch") >= 0 && Kn || l.indexOf("pointer") >= 0) && (Ae(a, st[0], zt, St, ye), Ae(Z, st[2], A), Ae(Z, st[3], A), te && Ae(a, "click", lr, !0, !0), Ke && Ae(a, "click", cr), ee && Ae(Z, "gesturestart", Lt), s && Ae(Z, "gestureend", tt), ie && Ae(a, Nt + "enter", Qt), Ee && Ae(a, Nt + "leave", vt), Me && Ae(a, Nt + "move", Xt)), c.isEnabled = !0, c.isDragging = c.isGesturing = c.isPressed = Y = Le = !1, c._vx.reset(), c._vy.reset(), Tt = V(), It = _t(), T && T.type && zt(T), Ft && Ft(c)), c;
}, c.disable = function() {
c.isEnabled && (nr.filter(function(T) {
return T !== c && br(T.target);
}).length || Re(Et ? Z : a, "scroll", dn), c.isPressed && (c._vx.reset(), c._vy.reset(), Re(j ? a : Z, st[1], Mt, !0)), Re(Et ? Z : a, "scroll", rt, ye), Re(a, "wheel", nt, ye), Re(a, st[0], zt, ye), Re(Z, st[2], A), Re(Z, st[3], A), Re(a, "click", lr, !0), Re(a, "click", cr), Re(Z, "gesturestart", Lt), Re(Z, "gestureend", tt), Re(a, Nt + "enter", Qt), Re(a, Nt + "leave", vt), Re(a, Nt + "move", Xt), c.isEnabled = c.isPressed = c.isDragging = !1, kt && kt(c));
}, c.kill = c.revert = function() {
c.disable();
var T = nr.indexOf(c);
T >= 0 && nr.splice(T, 1), bt === c && (bt = 0);
}, nr.push(c), j && br(a) && (bt = c), c.enable(H);
}, wo(i, [{
key: "velocityX",
get: function() {
return this._vx.getVelocity();
}
}, {
key: "velocityY",
get: function() {
return this._vy.getVelocity();
}
}]), i;
}();
Q.version = "3.13.0";
Q.create = function(i) {
return new Q(i);
};
Q.register = to;
Q.getAll = function() {
return nr.slice();
};
Q.getById = function(i) {
return nr.filter(function(e) {
return e.vars.id === i;
})[0];
};
Qn() && me.registerPlugin(Q);
/*!
* ScrollTrigger 3.13.0
* https://gsap.com
*
* @license Copyright 2008-2025, GreenSock. All rights reserved.
* Subject to the terms at https://gsap.com/standard-license
* @author: Jack Doyle, jack@greensock.com
*/
var g, tr, D, W, Ue, z, wn, Qr, Mr, wr, gr, Fr, ke, rn, hn, Ye, An, On, rr, ro, on, no, Oe, _n, oo, io, Dt, mn, kn, ir, Cn, jr, yn, sn, Ir = 1, Ce = Date.now, an = Ce(), je = 0, hr = 0, Yn = function(e, n, t) {
var r = $e(e) && (e.substr(0, 6) === "clamp(" || e.indexOf("max") > -1);
return t["_" + n + "Clamp"] = r, r ? e.substr(6, e.length - 7) : e;
}, Fn = function(e, n) {
return n && (!$e(e) || e.substr(0, 6) !== "clamp(") ? "clamp(" + e + ")" : e;
}, So = function i() {
return hr && requestAnimationFrame(i);
}, In = function() {
return rn = 1;
}, zn = function() {
return rn = 0;
}, ut = function(e) {
return e;
}, _r = function(e) {
return Math.round(e * 1e5) / 1e5 || 0;
}, so = function() {
return typeof window < "u";
}, ao = function() {
return g || so() && (g = window.gsap) && g.registerPlugin && g;
}, Vt = function(e) {
return !!~wn.indexOf(e);
}, lo = function(e) {
return (e === "Height" ? Cn : D["inner" + e]) || Ue["client" + e] || z["client" + e];
}, co = function(e) {
return Ot(e, "getBoundingClientRect") || (Vt(e) ? function() {
return Zr.width = D.innerWidth, Zr.height = Cn, Zr;
} : function() {
return xt(e);
});
}, To = function(e, n, t) {
var r = t.d, o = t.d2, l = t.a;
return (l = Ot(e, "getBoundingClientRect")) ? function() {
return l()[r];
} : function() {
return (n ? lo(o) : e["client" + o]) || 0;
};
}, Eo = function(e, n) {
return !n || ~pt.indexOf(e) ? co(e) : function() {
return Zr;
};
}, ft = function(e, n) {
var t = n.s, r = n.d2, o = n.d, l = n.a;
return Math.max(0, (t = "scroll" + r) && (l = Ot(e, t)) ? l() - co(e)()[o] : Vt(e) ? (Ue[t] || z[t]) - lo(r) : e[t] - e["offset" + r]);
}, zr = function(e, n) {
for (var t = 0; t < rr.length; t += 3)
(!n || ~n.indexOf(rr[t + 1])) && e(rr[t], rr[t + 1], rr[t + 2]);
}, $e = function(e) {
return typeof e == "string";
}, Se = function(e) {
return typeof e == "function";
}, mr = function(e) {
return typeof e == "number";
}, Ht = function(e) {
return typeof e == "object";
}, dr = function(e, n, t) {
return e && e.progress(n ? 0 : 1) && t && e.pause();
}, ln = function(e, n) {
if (e.enabled) {
var t = e._ctx ? e._ctx.add(function() {
return n(e);
}) : n(e);
t && t.totalTime && (e.callbackAnimation = t);
}
}, jt = Math.abs, uo = "left", fo = "top", Sn = "right", Tn = "bottom", Gt = "width", $t = "height", kr = "Right", Cr = "Left", Sr = "Top", Tr = "Bottom", ne = "padding", Je = "margin", ar = "Width", En = "Height", le = "px", Qe = function(e) {
return D.getComputedStyle(e);
}, Mo = function(e) {
var n = Qe(e).position;
e.style.position = n === "absolute" || n === "fixed" ? n : "relative";
}, Ln = function(e, n) {
for (var t in n)
t in e || (e[t] = n[t]);
return e;
}, xt = function(e, n) {
var t = n && Qe(e)[hn] !== "matrix(1, 0, 0, 1, 0, 0)" && g.to(e, {
x: 0,
y: 0,
xPercent: 0,
yPercent: 0,
rotation: 0,
rotationX: 0,
rotationY: 0,
scale: 1,
skewX: 0,
skewY: 0
}).progress(1), r = e.getBoundingClientRect();
return t && t.progress(0).kill(), r;
}, en = function(e, n) {
var t = n.d2;
return e["offset" + t] || e["client" + t] || 0;
}, po = function(e) {
var n = [], t = e.labels, r = e.duration(), o;
for (o in t)
n.push(t[o] / r);
return n;
}, Po = function(e) {
return function(n) {
return g.utils.snap(po(e), n);
};
}, Mn = function(e) {
var n = g.utils.snap(e), t = Array.isArray(e) && e.slice(0).sort(function(r, o) {
return r - o;
});
return t ? function(r, o, l) {
l === void 0 && (l = 1e-3);
var a;
if (!o)
return n(r);
if (o > 0) {
for (r -= l, a = 0; a < t.length; a++)
if (t[a] >= r)
return t[a];
return t[a - 1];
} else
for (a = t.length, r += l; a--; )
if (t[a] <= r)
return t[a];
return t[0];
} : function(r, o, l) {
l === void 0 && (l = 1e-3);
var a = n(r);
return !o || Math.abs(a - r) < l || a - r < 0 == o < 0 ? a : n(o < 0 ? r - e : r + e);
};
}, Do = function(e) {
return function(n, t) {
return Mn(po(e))(n, t.direction);
};
}, Lr = function(e, n, t, r) {
return t.split(",").forEach(function(o) {
return e(n, o, r);
});
}, ge = function(e, n, t, r, o) {
return e.addEventListener(n, t, {
passive: !r,
capture: !!o
});
}, de = function(e, n, t, r) {
return e.removeEventListener(n, t, !!r);
}, Xr = function(e, n, t) {
t = t && t.wheelHandler, t && (e(n, "wheel", t), e(n, "touchmove", t));
}, Xn = {
startColor: "green",
endColor: "red",
indent: 0,
fontSize: "16px",
fontWeight: "normal"
}, Br = {
toggleActions: "play",
anticipatePin: 0
}, tn = {
top: 0,
left: 0,
center: 0.5,
bottom: 1,
right: 1
}, Ur = function(e, n) {
if ($e(e)) {
var t = e.indexOf("="), r = ~t ? +(e.charAt(t - 1) + 1) * parseFloat(e.substr(t + 1)) : 0;
~t && (e.indexOf("%") > t && (r *= n / 100), e = e.substr(0, t - 1)), e = r + (e in tn ? tn[e] * n : ~e.indexOf("%") ? parseFloat(e) * n / 100 : parseFloat(e) || 0);
}
return e;
}, Nr = function(e, n, t, r, o, l, a, f) {
var y = o.startColor, k = o.endColor, x = o.fontSize, p = o.indent, u = o.fontWeight, h = W.createElement("div"), H = Vt(t) || Ot(t, "pinType") === "fixed", F = e.indexOf("scroller") !== -1, L = H ? z : t, X = e.indexOf("start") !== -1, oe = X ? y : k, E = "border-color:" + oe + ";font-size:" + x + ";color:" + oe + ";font-weight:" + u + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";
return E += "position:" + ((F || f) && H ? "fixed;" : "absolute;"), (F || f || !H) && (E += (r === ce ? Sn : Tn) + ":" + (l + parseFloat(p)) + "px;"), a && (E += "box-sizing:border-box;text-align:left;width:" + a.offsetWidth + "px;"), h._isStart = X, h.setAttribute("class", "gsap-marker-" + e + (n ? " marker-" + n : "")), h.style.cssText = E, h.innerText = n || n === 0 ? e + "-" + n : e, L.children[0] ? L.insertBefore(h, L.children[0]) : L.appendChild(h), h._offset = h["offset" + r.op.d2], Vr(h, 0, r, X), h;
}, Vr = function(e, n, t, r) {
var o = {
display: "block"
}, l = t[r ? "os2" : "p2"], a = t[r ? "p2" : "os2"];
e._isFlipped = r, o[t.a + "Percent"] = r ? -100 : 0, o[t.a] = r ? "1px" : 0, o["border" + l + ar] = 1, o["border" + a + ar] = 0, o[t.p] = n + "px", g.set(e, o);
}, M = [], vn = {}, Pr, Bn = function() {
return Ce() - je > 34 && (Pr || (Pr = requestAnimationFrame(wt)));
}, er = function() {
(!Oe || !Oe.isPressed || Oe.startX > z.clientWidth) && (R.cache++, Oe ? Pr || (Pr = requestAnimationFrame(wt)) : wt(), je || Kt("scrollStart"), je = Ce());
}, cn = function() {
io = D.innerWidth, oo = D.innerHeight;
}, yr = function(e) {
R.cache++, (e === !0 || !ke && !no && !W.fullscreenElement && !W.webkitFullscreenElement && (!_n || io !== D.innerWidth || Math.abs(D.innerHeight - oo) > D.innerHeight * 0.25)) && Qr.restart(!0);
}, qt = {}, Ro = [], go = function i() {
return de(P, "scrollEnd", i) || Wt(!0);
}, Kt = function(e) {
return qt[e] && qt[e].map(function(n) {
return n();
}) || Ro;
}, Ge = [], ho = function(e) {
for (var n = 0; n < Ge.length; n += 5)
(!e || Ge[n + 4] && Ge[n + 4].query === e) && (Ge[n].style.cssText = Ge[n + 1], Ge[n].getBBox && Ge[n].setAttribute("transform", Ge[n + 2] || ""), Ge[n + 3].uncache = 1);
}, Pn = function(e, n) {
var t;
for (Ye = 0; Ye < M.length; Ye++)
t = M[Ye], t && (!n || t._ctx === n) && (e ? t.kill(1) : t.revert(!0, !0));
jr = !0, n && ho(n), n || Kt("revert");
}, _o = function(e, n) {
R.cache++, (n || !Fe) && R.forEach(function(t) {
return Se(t) && t.cacheID++ && (t.rec = 0);
}), $e(e) && (D.history.scrollRestoration = kn = e);
}, Fe, Ut = 0, Nn, Ao = function() {
if (Nn !== Ut) {
var e = Nn = Ut;
requestAnimationFrame(function() {
return e === Ut && Wt(!0);
});
}
}, mo = function() {
z.appendChild(ir), Cn = !Oe && ir.offsetHeight || D.innerHeight, z.removeChild(ir);
}, Hn = function(e) {
return Mr(".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end").forEach(function(n) {
return n.style.display = e ? "none" : "block";
});
}, Wt = function(e, n) {
if (Ue = W.documentElement, z = W.body, wn = [D, W, Ue, z], je && !e && !jr) {
ge(P, "scrollEnd", go);
return;
}
mo(), Fe = P.isRefreshing = !0, R.forEach(function(r) {
return Se(r) && ++r.cacheID && (r.rec = r());
});
var t = Kt("refreshInit");
ro && P.sort(), n || Pn(), R.forEach(function(r) {
Se(r) && (r.smooth && (r.target.style.scrollBehavior = "auto"), r(0));
}), M.slice(0).forEach(function(r) {
return r.refresh();
}), jr = !1, M.forEach(function(r) {
if (r._subPinOffset && r.pin) {
var o = r.vars.horizontal ? "offsetWidth" : "offsetHeight", l = r.pin[o];
r.revert(!0, 1), r.adjustPinSpacing(r.pin[o] - l), r.refresh();
}
}), yn = 1, Hn(!0), M.forEach(function(r) {
var o = ft(r.scroller, r._dir), l = r.vars.end === "max" || r._endClamp && r.end > o, a = r._startClamp && r.start >= o;
(l || a) && r.setPositions(a ? o - 1 : r.start, l ? Math.max(a ? o : r.start + 1, o) : r.end, !0);
}), Hn(!1), yn = 0, t.forEach(function(r) {
return r && r.render && r.render(-1);
}), R.forEach(function(r) {
Se(r) && (r.smooth && requestAnimationFrame(function() {
return r.target.style.scrollBehavior = "smooth";
}), r.rec && r(r.rec));
}), _o(kn, 1), Qr.pause(), Ut++, Fe = 2, wt(2), M.forEach(function(r) {
return Se(r.vars.onRefresh) && r.vars.onRefresh(r);
}), Fe = P.isRefreshing = !1, Kt("refresh");
}, xn = 0, qr = 1, Er, wt = function(e) {
if (e === 2 || !Fe && !jr) {
P.isUpdating = !0, Er && Er.update(0);
var n = M.length, t = Ce(), r = t - an >= 50, o = n && M[0].scroll();
if (qr = xn > o ? -1 : 1, Fe || (xn = o), r && (je && !rn && t - je > 200 && (je = 0, Kt("scrollEnd")), gr = an, an = t), qr < 0) {
for (Ye = n; Ye-- > 0; )
M[Ye] && M[Ye].update(0, r);
qr = 1;
} else
for (Ye = 0; Ye < n; Ye++)
M[Ye] && M[Ye].update(0, r);
P.isUpdating = !1;
}
Pr = 0;
}, bn = [uo, fo, Tn, Sn, Je + Tr, Je + kr, Je + Sr, Je + Cr, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"], Kr = bn.concat([Gt, $t, "boxSizing", "max" + ar, "max" + En, "position", Je, ne, ne + Sr, ne + kr, ne + Tr, ne + Cr]), Oo = function(e, n, t) {
sr(t);
var r = e._gsap;
if (r.spacerIsNative)
sr(r.spacerState);
else if (e._gsap.swappedIn) {
var o = n.parentNode;
o && (o.insertBefore(e, n), o.removeChild(n));
}
e._gsap.swappedIn = !1;
}, un = function(e, n, t, r) {
if (!e._gsap.swappedIn) {
for (var o = bn.length, l = n.style, a = e.style, f; o--; )
f = bn[o], l[f] = t[f];
l.position = t.position === "absolute" ? "absolute" : "relative", t.display === "inline" && (l.display = "inline-block"), a[Tn] = a[Sn] = "auto", l.flexBasis = t.flexBasis || "auto", l.overflow = "visible", l.boxSizing = "border-box", l[Gt] = en(e, Ie) + le, l[$t] = en(e, ce) + le, l[ne] = a[Je] = a[fo] = a[uo] = "0", sr(r), a[Gt] = a["max" + ar] = t[Gt], a[$t] = a["max" + En] = t[$t], a[ne] = t[ne], e.parentNode !== n && (e.parentNode.insertBefore(n, e), n.appendChild(e)), e._gsap.swappedIn = !0;
}
}, Yo = /([A-Z])/g, sr = function(e) {
if (e) {
var n = e.t.style, t = e.length, r = 0, o, l;
for ((e.t._gsap || g.core.getCache(e.t)).uncache = 1; r < t; r += 2)
l = e[r + 1], o = e[r], l ? n[o] = l : n[o] && n.removeProperty(o.replace(Yo, "-$1").toLowerCase());
}
}, Hr = function(e) {
for (var n = Kr.length, t = e.style, r = [], o = 0; o < n; o++)
r.push(Kr[o], t[Kr[o]]);
return r.t = e, r;
}, Fo = function(e, n, t) {
for (var r = [], o = e.length, l = t ? 8 : 0, a; l < o; l += 2)
a = e[l], r.push(a, a in n ? n[a] : e[l + 1]);
return r.t = e.t, r;
}, Zr = {
left: 0,
top: 0
}, Wn = function(e, n, t, r, o, l, a, f, y, k, x, p, u, h) {
Se(e) && (e = e(f)), $e(e) && e.substr(0, 3) === "max" && (e = p + (e.charAt(4) === "=" ? Ur("0" + e.substr(3), t) : 0));
var H = u ? u.time() : 0, F, L, X;
if (u && u.seek(0), isNaN(e) || (e = +e), mr(e))
u && (e = g.utils.mapRange(u.scrollTrigger.start, u.scrollTrigger.end, 0, p, e)), a && Vr(a, t, r, !0);
else {
Se(n) && (n = n(f));
var oe = (e || "0").split(" "), E, qe, G, w;
X = Be(n, f) || z, E = xt(X) || {}, (!E || !E.left && !E.top) && Qe(X).display === "none" && (w = X.style.display, X.style.display = "block", E = xt(X), w ? X.style.display = w : X.style.removeProperty("display")), qe = Ur(oe[0], E[r.d]), G = Ur(oe[1] || "0", t), e = E[r.p] - y[r.p] - k + qe + o - G, a && Vr(a, G, r, t - G < 20 || a._isStart && G > 20), t -= t - G;
}
if (h && (f[h] = e || -1e-3, e < 0 && (e = 0)), l) {
var Te = e + t, ze = l._isStart;
F = "scroll" + r.d2, Vr(l, Te, r, ze && Te > 20 || !ze && (x ? Math.max(z[F], Ue[F]) : l.parentNode[F]) <= Te + 1), x && (y = xt(a), x && (l.style[r.op.p] = y[r.op.p] - r.op.m - l._offset + le));
}
return u && X && (F = xt(X), u.seek(p), L = xt(X), u._caScrollDist = F[r.p] - L[r.p], e = e / u._caScrollDist * p), u && u.seek(H), u ? e : Math.round(e);
}, Io = /(webkit|moz|length|cssText|inset)/i, Gn = function(e, n, t, r) {
if (e.parentNode !== n) {
var o = e.style, l, a;
if (n === z) {
e._stOrig = o.cssText, a = Qe(e);
for (l in a)
!+l && !Io.test(l) && a[l] && typeof o[l] == "string" && l !== "0" && (o[l] = a[l]);
o.top = t, o.left = r;
} else
o.cssText = e._stOrig;
g.core.getCache(e).uncache = 1, n.appendChild(e);
}
}, yo = function(e, n, t) {
var r = n, o = r;
return function(l) {
var a = Math.round(e());
return a !== r && a !== o && Math.abs(a - r) > 3 && Math.abs(a - o) > 3 && (l = a, t && t()), o = r, r = Math.round(l), r;
};
}, Wr = function(e, n, t) {
var r = {};
r[n.p] = "+=" + t, g.set(e, r);
}, $n = function(e, n) {
var t = Yt(e, n), r = "_scroll" + n.p2, o = function l(a, f, y, k, x) {
var p = l.tween, u = f.onComplete, h = {};
y = y || t();
var H = yo(t, y, function() {
p.kill(), l.tween = 0;
});
return x = k && x || 0, k = k || a - y, p && p.kill(), f[r] = a, f.inherit = !1, f.modifiers = h, h[r] = function() {
return H(y + k * p.ratio + x * p.ratio * p.ratio);
}, f.onUpdate = function() {
R.cache++, l.tween && wt();
}, f.onComplete = function() {
l.tween = 0, u && u.call(p);
}, p = l.tween = g.to(e, f), p;
};
return e[r] = t, t.wheelHandler = function() {
return o.tween && o.tween.kill() && (o.tween = 0);
}, ge(e, "wheel", t.wheelHandler), P.isTouch && ge(e, "touchmove", t.wheelHandler), o;
}, P = /* @__PURE__ */ function() {
function i(n, t) {
tr || i.register(g) || console.warn("Please gsap.registerPlugin(ScrollTrigger)"), mn(this), this.init(n, t);
}
var e = i.prototype;
return e.init = function(t, r) {
if (this.progress = this.start = 0, this.vars && this.kill(!0, !0), !hr) {
this.update = this.refresh = this.kill = ut;
return;
}
t = Ln($e(t) || mr(t) || t.nodeType ? {
trigger: t
} : t, Br);
var o = t, l = o.onUpdate, a = o.toggleClass, f = o.id, y = o.onToggle, k = o.onRefresh, x = o.scrub, p = o.trigger, u = o.pin, h = o.pinSpacing, H = o.invalidateOnRefresh, F = o.anticipatePin, L = o.onScrubComplete, X = o.onSnapComplete, oe = o.once, E = o.snap, qe = o.pinReparent, G = o.pinSpacer, w = o.containerAnimation, Te = o.fastScrollEnd, ze = o.preventOverlaps, _ = t.horizontal || t.containerAnimation && t.horizontal !== !1 ? Ie : ce, ue = !x && x !== 0, b = Be(t.scroller || D), dt = g.core.getCache(b), ie = Vt(b), Ee = ("pinType" in t ? t.pinType : Ot(b, "pinType") || ie && "fixed") === "fixed", Me = [t.onEnter, t.onLeave, t.onEnterBack, t.onLeaveBack], B = ue && t.toggleActions.split(" "), j = "markers" in t ? t.markers : Br.markers, ee = ie ? 0 : parseFloat(Qe(b)["border" + _.p2 + ar]) || 0, s = this, se = t.onRefreshInit && function() {
return t.onRefreshInit(s);
}, Ft = To(b, ie, _), kt = Eo(b, ie), Ke = 0, gt = 0, ye = 0, te = Yt(b, _), Pe, ve, Ct, De, Le, Y, K, Xe, Ne, c, He, ht, St, V, _t, Tt, It, fe, Et, Z, et, Ze, mt, lr, re, Dr, yt, Zt, Jt, Mt, zt, A, Lt, tt, rt, nt, Xt, Qt, vt;
if (s._startClamp = s._endClamp = !1, s._dir = _, F *= 45, s.scroller = b, s.scroll = w ? w.time.bind(w) : te, De = te(), s.vars = t, r = r || t.animation, "refreshPriority" in t && (ro = 1, t.refreshPriority === -9999 && (Er = s)), dt.tweenScroll = dt.tweenScroll || {
top: $n(b, ce),
left: $n(b, Ie)
}, s.tweenTo = Pe = dt.tweenScroll[_.p], s.scrubDuration = function(d) {
Lt = mr(d) && d, Lt ? A ? A.duration(d) : A = g.to(r, {
ease: "expo",
totalProgress: "+=0",
inherit: !1,
duration: Lt,
paused: !0,
onComplete: function() {
return L && L(s);
}
}) : (A && A.progress(1).kill(), A = 0);
}, r && (r.vars.lazy = !1, r._initted && !s.isReverted || r.vars.immediateRender !== !1 && t.immediateRender !== !1 && r.duration() && r.render(0, !0, !0), s.animation = r.pause(), r.scrollTrigger = s, s.scrubDuration(x), Mt = 0, f || (f = r.vars.id)), E && ((!Ht(E) || E.push) && (E = {
snapTo: E
}), "scrollBehavior" in z.style && g.set(ie ? [z, Ue] : b, {
scrollBehavior: "auto"
}), R.forEach(function(d) {
return Se(d) && d.target === (ie ? W.scrollingElement || Ue : b) && (d.smooth = !1);
}), Ct = Se(E.snapTo) ? E.snapTo : E.snapTo === "labels" ? Po(r) : E.snapTo === "labelsDirectional" ? Do(r) : E.directional !== !1 ? function(d, C) {
return Mn(E.snapTo)(d, Ce() - gt < 500 ? 0 : C.direction);
} : g.utils.snap(E.snapTo), tt = E.duration || {
min: 0.1,
max: 2
}, tt = Ht(tt) ? wr(tt.min, tt.max) : wr(tt, tt), rt = g.delayedCall(E.delay || Lt / 2 || 0.1, function() {
var d = te(), C = Ce() - gt < 500, m = Pe.tween;
if ((C || Math.abs(s.getVelocity()) < 10) && !m && !rn && Ke !== d) {
var S = (d - Y) / V, pe = r && !ue ? r.totalProgress() : S, O = C ? 0 : (pe - zt) / (Ce() - gr) * 1e3 || 0, J = g.utils.clamp(-S, 1 - S, jt(O / 2) * O / 0.185), xe = S + (E.inertia === !1 ? 0 : J), q, $, N = E, ot = N.onStart, U = N.onInterrupt, We = N.onComplete;
if (q = Ct(xe, s), mr(q) || (q = xe), $ = Math.max(0, Math.round(Y + q * V)), d <= K && d >= Y && $ !== d) {
if (m && !m._initted && m.data <= jt($ - d))
return;
E.inertia === !1 && (J = q - S), Pe($, {
duration: tt(jt(Math.max(jt(xe - pe), jt(q - pe)) * 0.185 / O / 0.05 || 0)),
ease: E.ease || "power3",
data: jt($ - d),
// record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.
onInterrupt: function() {
return rt.restart(!0) && U && U(s);
},
onComplete: function() {
s.update(), Ke = te(), r && !ue && (A ? A.resetTo("totalProgress", q, r._tTime / r._tDur) : r.progress(q)), Mt = zt = r && !ue ? r.totalProgress() : s.progress, X && X(s), We && We(s);
}
}, d, J * V, $ - d - J * V), ot && ot(s, Pe.tween);
}
} else s.isActive && Ke !== d && rt.restart(!0);
}).pause()), f && (vn[f] = s), p = s.trigger = Be(p || u !== !0 && u), vt = p && p._gsap && p._gsap.stRevert, vt && (vt = vt(s)), u = u === !0 ? p : Be(u), $e(a) && (a = {
targets: p,
className: a
}), u && (h === !1 || h === Je || (h = !h && u.parentNode && u.parentNode.style && Qe(u.parentNode).display === "flex" ? !1 : ne), s.pin = u, ve = g.core.getCache(u), ve.spacer ? _t = ve.pinState : (G && (G = Be(G), G && !G.nodeType && (G = G.current || G.nativeElement), ve.spacerIsNative = !!G, G && (ve.spacerState = Hr(G))), ve.spacer = fe = G || W.createElement("div"), fe.classList.add("pin-spacer"), f && fe.classList.add("pin-spacer-" + f), ve.pinState = _t = Hr(u)), t.force3D !== !1 && g.set(u, {
force3D: !0
}), s.spacer = fe = ve.spacer, Jt = Qe(u), lr = Jt[h + _.os2], Z = g.getProperty(u), et = g.quickSetter(u, _.a, le), un(u, fe, Jt), It = Hr(u)), j) {
ht = Ht(j) ? Ln(j, Xn) : Xn, c = Nr("scroller-start", f, b, _, ht, 0), He = Nr("scroller-end", f, b, _, ht, 0, c), Et = c["offset" + _.op.d2];
var cr = Be(Ot(b, "content") || b);
Xe = this.markerStart = Nr("start", f, cr, _, ht, Et, 0, w), Ne = this.markerEnd = Nr("end", f, cr, _, ht, Et, 0, w), w && (Qt = g.quickSetter([Xe, Ne], _.a, le)), !Ee && !(pt.length && Ot(b, "fixedMarkers") === !0) && (Mo(ie ? z : b), g.set([c, He], {
force3D: !0
}), Dr = g.quickSetter(c, _.a, le), Zt = g.quickSetter(He, _.a, le));
}
if (w) {
var T = w.vars.onUpdate, v = w.vars.onUpdateParams;
w.eventCallback("onUpdate", function() {
s.update(0, 0, 1), T && T.apply(w, v || []);
});
}
if (s.previous = function() {
return M[M.indexOf(s) - 1];
}, s.next = function() {
return M[M.indexOf(s) + 1];
}, s.revert = function(d, C) {
if (!C)
return s.kill(!0);
var m = d !== !1 || !s.enabled, S = ke;
m !== s.isReverted && (m && (nt = Math.max(te(), s.scroll.rec || 0), ye = s.progress, Xt = r && r.progress()), Xe && [Xe, Ne, c, He].forEach(function(pe) {
return pe.style.display = m ? "none" : "block";
}), m && (ke = s, s.update(m)), u && (!qe || !s.isActive) && (m ? Oo(u, fe, _t) : un(u, fe, Qe(u), re)), m || s.update(m), ke = S, s.isReverted = m);
}, s.refresh = function(d, C, m, S) {
if (!((ke || !s.enabled) && !C)) {
if (u && d && je) {
ge(i, "scrollEnd", go);
return;
}
!Fe && se && se(s), ke = s, Pe.tween && !m && (Pe.tween.kill(), Pe.tween = 0), A && A.pause(), H && r && (r.revert({
kill: !1
}).invalidate(), r.getChildren && r.getChildren(!0, !0, !1).forEach(function(Pt) {
return Pt.vars.immediateRender && Pt.render(0, !0, !0);
})), s.isReverted || s.revert(!0, !0), s._subPinOffset = !1;
var pe = Ft(), O = kt(), J = w ? w.duration() : ft(b, _), xe = V <= 0.01 || !V, q = 0, $ = S || 0, N = Ht(m) ? m.end : t.end, ot = t.endTrigger || p, U = Ht(m) ? m.start : t.start || (t.start === 0 || !p ? 0 : u ? "0 0" : "0 100%"), We = s.pinnedContainer = t.pinnedContainer && Be(t.pinnedContainer, s), at = p && Math.max(0, M.indexOf(s)) || 0, he = at, _e, be, Bt, Rr, we, ae, lt, nn, Dn, ur, ct, fr, Ar;
for (j && Ht(m) && (fr = g.getProperty(c, _.p), Ar = g.getProperty(He, _.p)); he-- > 0; )
ae = M[he], ae.end || ae.refresh(0, 1) || (ke = s), lt = ae.pin, lt && (lt === p || lt === u || lt === We) && !ae.isReverted && (ur || (ur = []), ur.unshift(ae), ae.revert(!0, !0)), ae !== M[he] && (at--, he--);
for (Se(U) && (U = U(s)), U = Yn(U, "start", s), Y = Wn(U, p, pe, _, te(), Xe, c, s, O, ee, Ee, J, w, s._startClamp && "_startClamp") || (u ? -1e-3 : 0), Se(N) && (N = N(s)), $e(N) && !N.indexOf("+=") && (~N.indexOf(" ") ? N = ($e(U) ? U.split(" ")[0] : "") + N : (q = Ur(N.substr(2), pe), N = $e(U) ? U : (w ? g.utils.mapRange(0, w.duration(), w.scrollTrigger.start, w.scrollTrigger.end, Y) : Y) + q, ot = p)), N = Yn(N, "end", s), K = Math.max(Y, Wn(N || (ot ? "100% 0" : J), ot, pe, _, te() + q, Ne, He, s, O, ee, Ee, J, w, s._endClamp && "_endClamp")) || -1e-3, q = 0, he = at; he--; )
ae = M[he], lt = ae.pin, lt && ae.start - ae._pinPush <= Y && !w && ae.end > 0 && (_e = ae.end - (s._startClamp ? Math.max(0, ae.start) : ae.start), (lt === p && ae.start - ae._pinPush < Y || lt === We) && isNaN(U) && (q += _e * (1 - ae.progress)), lt === u && ($ += _e));
if (Y += q, K += q, s._startClamp && (s._startClamp += q), s._endClamp && !Fe && (s._endClamp = K || -1e-3, K = Math.min(K, ft(b, _))), V = K - Y || (Y -= 0.01) && 1e-3, xe && (ye = g.utils.clamp(0, 1, g.utils.normalize(Y, K, nt))), s._pinPush = $, Xe && q && (_e = {}, _e[_.a] = "+=" + q, We && (_e[_.p] = "-=" + te()), g.set([Xe, Ne], _e)), u && !(yn && s.end >= ft(b, _)))
_e = Qe(u), Rr = _ === ce, Bt = te(), Ze = parseFloat(Z(_.a)) + $, !J && K > 1 && (ct = (ie ? W.scrollingElement || Ue : b).style, ct = {
style: ct,
value: ct["overflow" + _.a.toUpperCase()]
}, ie && Qe(z)["overflow" + _.a.toUpperCase()] !== "scroll" && (ct.style["overflow" + _.a.toUpperCase()] = "scroll")), un(u, fe, _e), It = Hr(u), be = xt(u, !0), nn = Ee && Yt(b, Rr ? Ie : ce)(), h ? (re = [h + _.os2, V + $ + le], re.t = fe, he = h === ne ? en(u, _) + V + $ : 0, he && (re.push(_.d, he + le), fe.style.flexBasis !== "auto" && (fe.style.flexBasis = he + le)), sr(re), We && M.forEach(function(Pt) {
Pt.pin === We && Pt.vars.pinSpacing !== !1 && (Pt._subPinOffset = !0);
}), Ee && te(nt)) : (he = en(u, _), he && fe.style.flexBasis !== "auto" && (fe.style.flexBasis = he + le)), Ee && (we = {
top: be.top + (Rr ? Bt - Y : nn) + le,
left: be.left + (Rr ? nn : Bt - Y) + le,
boxSizing: "border-box",
position: "fixed"
}, we[Gt] = we["max" + ar] = Math.ceil(be.width) + le, we[$t] = we["max" + En] = Math.ceil(be.height) + le, we[Je] = we[Je + Sr] = we[Je + kr] = we[Je + Tr] = we[Je + Cr] = "0", we[ne] = _e[ne], we[ne + Sr] = _e[ne + Sr], we[ne + kr] = _e[ne + kr], we[ne + Tr] = _e[ne + Tr], we[ne + Cr] = _e[ne + Cr], Tt = Fo(_t, we, qe), Fe && te(0)), r ? (Dn = r._initted, on(1), r.render(r.duration(), !0, !0), mt = Z(_.a) - Ze + V + $, yt = Math.abs(V - mt) > 1, Ee && yt && Tt.splice(Tt.length - 2, 2), r.render(0, !0, !0), Dn || r.invalidate(!0), r.parent || r.totalTime(r.totalTime()), on(0)) : mt = V, ct && (ct.value ? ct.style["overflow" + _.a.toUpperCase()] = ct.value : ct.style.removeProperty("overflow-" + _.a));
else if (p && te() && !w)
for (be = p.parentNode; be && be !== z; )
be._pinOffset && (Y -= be._pinOffset, K -= be._pinOffset), be = be.parentNode;
ur && ur.forEach(function(Pt) {
return Pt.revert(!1, !0);
}), s.start = Y, s.end = K, De = Le = Fe ? nt : te(), !w && !Fe && (De < nt && te(nt), s.scroll.rec = 0), s.revert(!1, !0), gt = Ce(), rt && (Ke = -1, rt.restart(!0)), ke = 0, r && ue && (r._initted || Xt) && r.progress() !== Xt && r.progress(Xt || 0, !0).render(r.time(), !0, !0), (xe || ye !== s.progress || w || H || r && !r._initted) && (r && !ue && (r._initted || ye || r.vars.immediateRender !== !1) && r.totalProgress(w && Y < -1e-3 && !ye ? g.utils.normalize(Y, K, 0) : ye, !0), s.progress = xe || (De - Y) / V === ye ? 0 : ye), u && h && (fe._pinOffset = Math.round(s.progress * mt)), A && A.invalidate(), isNaN(fr) || (fr -= g.getProperty(c, _.p), Ar -= g.getProperty(He, _.p), Wr(c, _, fr), Wr(Xe, _, fr - (S || 0)), Wr(He, _, Ar), Wr(Ne, _, Ar - (S || 0))), xe && !Fe && s.update(), k && !Fe && !St && (St = !0, k(s), St = !1);
}
}, s.getVelocity = function() {
return (te() - Le) / (Ce() - gr) * 1e3 || 0;
}, s.endAnimation = function() {
dr(s.callbackAnimation), r && (A ? A.progress(1) : r.paused() ? ue || dr(r, s.direction < 0, 1) : dr(r, r.reversed()));
}, s.labelToScroll = function(d) {
return r && r.labels && (Y || s.refresh() || Y) + r.labels[d] / r.duration() * V || 0;
}, s.getTrailing = function(d) {
var C = M.indexOf(s), m = s.direction > 0 ? M.slice(0, C).reverse() : M.slice(C + 1);
return ($e(d) ? m.filter(function(S) {
return S.vars.preventOverlaps === d;
}) : m).filter(function(S) {
return s.direction > 0 ? S.end <= Y : S.start >= K;
});
}, s.update = function(d, C, m) {
if (!(w && !m && !d)) {
var S = Fe === !0 ? nt : s.scroll(), pe = d ? 0 : (S - Y) / V, O = pe < 0 ? 0 : pe > 1 ? 1 : pe || 0, J = s.progress, xe, q, $, N, ot, U, We, at;
if (C && (Le = De, De = w ? te() : S, E && (zt = Mt, Mt = r && !ue ? r.totalProgress() : O)), F && u && !ke && !Ir && je && (!O && Y < S + (S - Le) / (Ce() - gr) * F ? O = 1e-4 : O === 1 && K > S + (S - Le) / (Ce() - gr) * F && (O = 0.9999)), O !== J && s.enabled) {
if (xe = s.isActive = !!O && O < 1, q = !!J && J < 1, U = xe !== q, ot = U || !!O != !!J, s.direction = O > J ? 1 : -1, s.progress = O, ot && !ke && ($ = O && !J ? 0 : O === 1 ? 1 : J === 1 ? 2 : 3, ue && (N = !U && B[$ + 1] !== "none" && B[$ + 1] || B[$], at = r && (N === "complete" || N === "reset" || N in r))), ze && (U || at) && (at || x || !r) && (Se(ze) ? ze(s) : s.getTrailing(ze).forEach(function(Bt) {
return Bt.endAnimation();
})), ue || (A && !ke && !Ir ? (A._dp._time - A._start !== A._time && A.render(A._dp._time - A._start), A.resetTo ? A.resetTo("totalProgress", O, r._tTime / r._tDur) : (A.vars.totalProgress = O, A.invalidate().restart())) : r && r.totalProgress(O, !!(ke && (gt || d)))), u) {
if (d && h && (fe.style[h + _.os2] = lr), !Ee)
et(_r(Ze + mt * O));
else if (ot) {
if (We = !d && O > J && K + 1 > S && S + 1 >= ft(b, _), qe)
if (!d && (xe || We)) {
var he = xt(u, !0), _e = S - Y;
Gn(u, z, he.top + (_ === ce ? _e : 0) + le, he.left + (_ === ce ? 0 : _e) + le);
} else
Gn(u, fe);
sr(xe || We ? Tt : It), yt && O < 1 && xe || et(Ze + (O === 1 && !We ? mt : 0));
}
}
E && !Pe.tween && !ke && !Ir && rt.restart(!0), a && (U || oe && O && (O < 1 || !sn)) && Mr(a.targets).forEach(function(Bt) {
return Bt.classList[xe || oe ? "add" : "remove"](a.className);
}), l && !ue && !d && l(s), ot && !ke ? (ue && (at && (N === "complete" ? r.pause().totalProgress(1) : N === "reset" ? r.restart(!0).pause() : N === "restart" ? r.restart(!0) : r[N]()), l && l(s)), (U || !sn) && (y && U && ln(s, y), Me[$] && ln(s, Me[$]), oe && (O === 1 ? s.kill(!1, 1) : Me[$] = 0), U || ($ = O === 1 ? 1 : 3, Me[$] && ln(s, Me[$]))), Te && !xe && Math.abs(s.getVelocity()) > (mr(Te) ? Te : 2500) && (dr(s.callbackAnimation), A ? A.progress(1) : dr(r, N === "reverse" ? 1 : !O, 1))) : ue && l && !ke && l(s);
}
if (Zt) {
var be = w ? S / w.duration() * (w._caScrollDist || 0) : S;
Dr(be + (c._isFlipped ? 1 : 0)), Zt(be);
}
Qt && Qt(-S / w.duration() * (w._caScrollDist || 0));
}
}, s.enable = function(d, C) {
s.enabled || (s.enabled = !0, ge(b, "resize", yr), ie || ge(b, "scroll", er), se && ge(i, "refreshInit", se), d !== !1 && (s.progress = ye = 0, De = Le = Ke = te()), C !== !1 && s.refresh());
}, s.getTween = function(d) {
return d && Pe ? Pe.tween : A;
}, s.setPositions = function(d, C, m, S) {
if (w) {
var pe = w.scrollTrigger, O = w.duration(), J = pe.end - pe.start;
d = pe.start + J * d / O, C = pe.start + J * C / O;
}
s.refresh(!1, !1, {
start: Fn(d, m && !!s._startClamp),
end: Fn(C, m && !!s._endClamp)
}, S), s.update();
}, s.adjustPinSpacing = function(d) {
if (re && d) {
var C = re.indexOf(_.d) + 1;
re[C] = parseFloat(re[C]) + d + le, re[1] = parseFloat(re[1]) + d + le, sr(re);
}
}, s.disable = function(d, C) {
if (s.enabled && (d !== !1 && s.revert(!0, !0), s.enabled = s.isActive = !1, C || A && A.pause(), nt = 0, ve && (ve.uncache = 1), se && de(i, "refreshInit", se), rt && (rt.pause(), Pe.tween && Pe.tween.kill() && (Pe.tween = 0)), !ie)) {
for (var m = M.length; m--; )
if (M[m].scroller === b && M[m] !== s)
return;
de(b, "resize", yr), ie || de(b, "scroll", er);
}
}, s.kill = function(d, C) {
s.disable(d, C), A && !C && A.kill(), f && delete vn[f];
var m = M.indexOf(s);
m >= 0 && M.splice(m, 1), m === Ye && qr > 0 && Ye--, m = 0, M.forEach(function(S) {
return S.scroller === s.scroller && (m = 1);
}), m || Fe || (s.scroll.rec = 0), r && (r.scrollTrigger = null, d && r.revert({
kill: !1
}), C || r.kill()), Xe && [Xe, Ne, c, He].forEach(function(S) {
return S.parentNode && S.parentNode.removeChild(S);
}), Er === s && (Er = 0), u && (ve && (ve.uncache = 1), m = 0, M.forEach(function(S) {
return S.pin === u && m++;
}), m || (ve.spacer = 0)), t.onKill && t.onKill(s);
}, M.push(s), s.enable(!1, !1), vt && vt(s), r && r.add && !V) {
var I = s.update;
s.update = function() {
s.update = I, R.cache++, Y || K || s.refresh();
}, g.delayedCall(0.01, s.update), V = 0.01, Y = K = 0;
} else
s.refresh();
u && Ao();
}, i.register = function(t) {
return tr || (g = t || ao(), so() && window.document && i.enable(), tr = hr), tr;
}, i.defaults = function(t) {
if (t)
for (var r in t)
Br[r] = t[r];
return Br;
}, i.disable = function(t, r) {
hr = 0, M.forEach(function(l) {
return l[r ? "kill" : "disable"](t);
}), de(D, "wheel", er), de(W, "scroll", er), clearInterval(Fr), de(W, "touchcancel", ut), de(z, "touchstart", ut), Lr(de, W, "pointerdown,touchstart,mousedown", In), Lr(de, W, "pointerup,touchend,mouseup", zn), Qr.kill(), zr(de);
for (var o = 0; o < R.length; o += 3)
Xr(de, R[o], R[o + 1]), Xr(de, R[o], R[o + 2]);
}, i.enable = function() {
if (D = window, W = document, Ue = W.documentElement, z = W.body, g && (Mr = g.utils.toArray, wr = g.utils.clamp, mn = g.core.context || ut, on = g.core.suppressOverwrites || ut, kn = D.history.scrollRestoration || "auto", xn = D.pageYOffset || 0, g.core.globals("ScrollTrigger", i), z)) {
hr = 1, ir = document.createElement("div"), ir.style.height = "100vh", ir.style.position = "absolute", mo(), So(), Q.register(g), i.isTouch = Q.isTouch, Dt = Q.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent), _n = Q.isTouch === 1, ge(D, "wheel", er), wn = [D, W, Ue, z], g.matchMedia ? (i.matchMedia = function(y) {
var k = g.matchMedia(), x;
for (x in y)
k.add(x, y[x]);
return k;
}, g.addEventListener("matchMediaInit", function() {
return Pn();
}), g.addEventListener("matchMediaRevert", function() {
return ho();
}), g.addEventListener("matchMedia", function() {
Wt(0, 1), Kt("matchMedia");
}), g.matchMedia().add("(orientation: portrait)", function() {
return cn(), cn;
})) : console.warn("Requires GSAP 3.11.0 or later"), cn(), ge(W, "scroll", er);
var t = z.hasAttribute("style"), r = z.style, o = r.borderTopStyle, l = g.core.Animation.prototype, a, f;
for (l.revert || Object.defineProperty(l, "revert", {
value: function() {
return this.time(-0.01, !0);
}
}), r.borderTopStyle = "solid", a = xt(z), ce.m = Math.round(a.top + ce.sc()) || 0, Ie.m = Math.round(a.left + Ie.sc()) || 0, o ? r.borderTopStyle = o : r.removeProperty("border-top-style"), t || (z.setAttribute("style", ""), z.removeAttribute("style")), Fr = setInterval(Bn, 250), g.delayedCall(0.5, function() {
return Ir = 0;
}), ge(W, "touchcancel", ut), ge(z, "touchstart", ut), Lr(ge, W, "pointerdown,touchstart,mousedown", In), Lr(ge, W, "pointerup,touchend,mouseup", zn), hn = g.utils.checkPrefix("transform"), Kr.push(hn), tr = Ce(), Qr = g.delayedCall(0.2, Wt).pause(), rr = [W, "visibilitychange", function() {
var y = D.innerWidth, k = D.innerHeight;
W.hidden ? (An = y, On = k) : (An !== y || On !== k) && yr();
}, W, "DOMContentLoaded", Wt, D, "load", Wt, D, "resize", yr], zr(ge), M.forEach(function(y) {
return y.enable(0, 1);
}), f = 0; f < R.length; f += 3)
Xr(de, R[f], R[f + 1]), Xr(de, R[f], R[f + 2]);
}
}, i.config = function(t) {
"limitCallbacks" in t && (sn = !!t.limitCallbacks);
var r = t.syncInterval;
r && clearInterval(Fr) || (Fr = r) && setInterval(Bn, r), "ignoreMobileResize" in t && (_n = i.isTouch === 1 && t.ignoreMobileResize), "autoRefreshEvents" in t && (zr(de) || zr(ge, t.autoRefreshEvents || "none"), no = (t.autoRefreshEvents + "").indexOf("resize") === -1);
}, i.scrollerProxy = function(t, r) {
var o = Be(t), l = R.indexOf(o), a = Vt(o);
~l && R.splice(l, a ? 6 : 2), r && (a ? pt.unshift(D, r, z, r, Ue, r) : pt.unshift(o, r));
}, i.clearMatchMedia = function(t) {
M.forEach(function(r) {
return r._ctx && r._ctx.query === t && r._ctx.kill(!0, !0);
});
}, i.isInViewport = function(t, r, o) {
var l = ($e(t) ? Be(t) : t).getBoundingClientRect(), a = l[o ? Gt : $t] * r || 0;
return o ? l.right - a > 0 && l.left + a < D.innerWidth : l.bottom - a > 0 && l.top + a < D.innerHeight;
}, i.positionInViewport = function(t, r, o) {
$e(t) && (t = Be(t));
var l = t.getBoundingClientRect(), a = l[o ? Gt : $t], f = r == null ? a / 2 : r in tn ? tn[r] * a : ~r.indexOf("%") ? parseFloat(r) * a / 100 : parseFloat(r) || 0;
return o ? (l.left + f) / D.innerWidth : (l.top + f) / D.innerHeight;
}, i.killAll = function(t) {
if (M.slice(0).forEach(function(o) {
return o.vars.id !== "ScrollSmoother" && o.kill();
}), t !== !0) {
var r = qt.k