UNPKG

curvia

Version:

A lightweight animation library for React and Vanilla JS

857 lines 63 kB
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