Files
avz-site/node_modules/.vite/deps/gsap_ScrollTrigger.js
T
2026-06-08 23:50:59 -03:00

2399 lines
103 KiB
JavaScript

import "./chunk-G3PMV62Z.js";
// node_modules/gsap/Observer.js
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
var gsap;
var _coreInitted;
var _clamp;
var _win;
var _doc;
var _docEl;
var _body;
var _isTouch;
var _pointerType;
var ScrollTrigger;
var _root;
var _normalizer;
var _eventTypes;
var _context;
var _getGSAP = function _getGSAP2() {
return gsap || typeof window !== "undefined" && (gsap = window.gsap) && gsap.registerPlugin && gsap;
};
var _startup = 1;
var _observers = [];
var _scrollers = [];
var _proxies = [];
var _getTime = Date.now;
var _bridge = function _bridge2(name, value) {
return value;
};
var _integrate = function _integrate2() {
var core = ScrollTrigger.core, data = core.bridge || {}, scrollers = core._scrollers, proxies = core._proxies;
scrollers.push.apply(scrollers, _scrollers);
proxies.push.apply(proxies, _proxies);
_scrollers = scrollers;
_proxies = proxies;
_bridge = function _bridge3(name, value) {
return data[name](value);
};
};
var _getProxyProp = function _getProxyProp2(element, property) {
return ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property];
};
var _isViewport = function _isViewport2(el) {
return !!~_root.indexOf(el);
};
var _addListener = function _addListener2(element, type, func, passive, capture) {
return element.addEventListener(type, func, {
passive: passive !== false,
capture: !!capture
});
};
var _removeListener = function _removeListener2(element, type, func, capture) {
return element.removeEventListener(type, func, !!capture);
};
var _scrollLeft = "scrollLeft";
var _scrollTop = "scrollTop";
var _onScroll = function _onScroll2() {
return _normalizer && _normalizer.isPressed || _scrollers.cache++;
};
var _scrollCacheFunc = function _scrollCacheFunc2(f, doNotCache) {
var cachingFunc = function cachingFunc2(value) {
if (value || value === 0) {
_startup && (_win.history.scrollRestoration = "manual");
var isNormalizing = _normalizer && _normalizer.isPressed;
value = cachingFunc2.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0);
f(value);
cachingFunc2.cacheID = _scrollers.cache;
isNormalizing && _bridge("ss", value);
} else if (doNotCache || _scrollers.cache !== cachingFunc2.cacheID || _bridge("ref")) {
cachingFunc2.cacheID = _scrollers.cache;
cachingFunc2.v = f();
}
return cachingFunc2.v + cachingFunc2.offset;
};
cachingFunc.offset = 0;
return f && cachingFunc;
};
var _horizontal = {
s: _scrollLeft,
p: "left",
p2: "Left",
os: "right",
os2: "Right",
d: "width",
d2: "Width",
a: "x",
sc: _scrollCacheFunc(function(value) {
return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0;
})
};
var _vertical = {
s: _scrollTop,
p: "top",
p2: "Top",
os: "bottom",
os2: "Bottom",
d: "height",
d2: "Height",
a: "y",
op: _horizontal,
sc: _scrollCacheFunc(function(value) {
return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0;
})
};
var _getTarget = function _getTarget2(t, self) {
return (self && self._ctx && self._ctx.selector || gsap.utils.toArray)(t)[0] || (typeof t === "string" && gsap.config().nullTargetWarn !== false ? console.warn("Element not found:", t) : null);
};
var _isWithin = function _isWithin2(element, list) {
var i = list.length;
while (i--) {
if (list[i] === element || list[i].contains(element)) {
return true;
}
}
return false;
};
var _getScrollFunc = function _getScrollFunc2(element, _ref) {
var s = _ref.s, sc = _ref.sc;
_isViewport(element) && (element = _doc.scrollingElement || _docEl);
var i = _scrollers.indexOf(element), offset = sc === _vertical.sc ? 1 : 2;
!~i && (i = _scrollers.push(element) - 1);
_scrollers[i + offset] || _addListener(element, "scroll", _onScroll);
var prev = _scrollers[i + offset], func = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function(value) {
return arguments.length ? element[s] = value : element[s];
})));
func.target = element;
prev || (func.smooth = gsap.getProperty(element, "scrollBehavior") === "smooth");
return func;
};
var _getVelocityProp = function _getVelocityProp2(value, minTimeRefresh, useDelta) {
var v1 = value, v2 = value, t1 = _getTime(), t2 = t1, min = minTimeRefresh || 50, dropToZeroTime = Math.max(500, min * 3), update = function update2(value2, force) {
var t = _getTime();
if (force || t - t1 > min) {
v2 = v1;
v1 = value2;
t2 = t1;
t1 = t;
} else if (useDelta) {
v1 += value2;
} else {
v1 = v2 + (value2 - v2) / (t - t2) * (t1 - t2);
}
}, reset = function reset2() {
v2 = v1 = useDelta ? 0 : v1;
t2 = t1 = 0;
}, getVelocity = function getVelocity2(latestValue) {
var tOld = t2, vOld = v2, t = _getTime();
(latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);
return t1 === t2 || t - t2 > dropToZeroTime ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1e3;
};
return {
update,
reset,
getVelocity
};
};
var _getEvent = function _getEvent2(e, preventDefault) {
preventDefault && !e._gsapAllow && e.cancelable !== false && e.preventDefault();
return e.changedTouches ? e.changedTouches[0] : e;
};
var _getAbsoluteMax = function _getAbsoluteMax2(a) {
var max = Math.max.apply(Math, a), min = Math.min.apply(Math, a);
return Math.abs(max) >= Math.abs(min) ? max : min;
};
var _setScrollTrigger = function _setScrollTrigger2() {
ScrollTrigger = gsap.core.globals().ScrollTrigger;
ScrollTrigger && ScrollTrigger.core && _integrate();
};
var _initCore = function _initCore2(core) {
gsap = core || _getGSAP();
if (!_coreInitted && gsap && typeof document !== "undefined" && document.body) {
_win = window;
_doc = document;
_docEl = _doc.documentElement;
_body = _doc.body;
_root = [_win, _doc, _docEl, _body];
_clamp = gsap.utils.clamp;
_context = gsap.core.context || function() {
};
_pointerType = "onpointerenter" in _body ? "pointer" : "mouse";
_isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia("(hover: none), (pointer: coarse)").matches ? 1 : "ontouchstart" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 ? 2 : 0;
_eventTypes = Observer.eventTypes = ("ontouchstart" in _docEl ? "touchstart,touchmove,touchcancel,touchend" : !("onpointerdown" in _docEl) ? "mousedown,mousemove,mouseup,mouseup" : "pointerdown,pointermove,pointercancel,pointerup").split(",");
setTimeout(function() {
return _startup = 0;
}, 500);
_coreInitted = 1;
}
ScrollTrigger || _setScrollTrigger();
return _coreInitted;
};
_horizontal.op = _vertical;
_scrollers.cache = 0;
var Observer = (function() {
function Observer2(vars) {
this.init(vars);
}
var _proto = Observer2.prototype;
_proto.init = function init(vars) {
_coreInitted || _initCore(gsap) || console.warn("Please gsap.registerPlugin(Observer)");
ScrollTrigger || _setScrollTrigger();
var tolerance = vars.tolerance, dragMinimum = vars.dragMinimum, type = vars.type, target = vars.target, lineHeight = vars.lineHeight, debounce = vars.debounce, preventDefault = vars.preventDefault, onStop = vars.onStop, onStopDelay = vars.onStopDelay, ignore = vars.ignore, wheelSpeed = vars.wheelSpeed, event = vars.event, onDragStart = vars.onDragStart, onDragEnd = vars.onDragEnd, onDrag = vars.onDrag, onPress = vars.onPress, onRelease = vars.onRelease, onRight = vars.onRight, onLeft = vars.onLeft, onUp = vars.onUp, onDown = vars.onDown, onChangeX = vars.onChangeX, onChangeY = vars.onChangeY, onChange = vars.onChange, onToggleX = vars.onToggleX, onToggleY = vars.onToggleY, onHover = vars.onHover, onHoverEnd = vars.onHoverEnd, onMove = vars.onMove, ignoreCheck = vars.ignoreCheck, isNormalizer = vars.isNormalizer, onGestureStart = vars.onGestureStart, onGestureEnd = vars.onGestureEnd, onWheel = vars.onWheel, onEnable = vars.onEnable, onDisable = vars.onDisable, onClick = vars.onClick, scrollSpeed = vars.scrollSpeed, capture = vars.capture, allowClicks = vars.allowClicks, lockAxis = vars.lockAxis, onLockAxis = vars.onLockAxis;
this.target = target = _getTarget(target) || _docEl;
this.vars = vars;
ignore && (ignore = gsap.utils.toArray(ignore));
tolerance = tolerance || 1e-9;
dragMinimum = dragMinimum || 0;
wheelSpeed = wheelSpeed || 1;
scrollSpeed = scrollSpeed || 1;
type = type || "wheel,touch,pointer";
debounce = debounce !== false;
lineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22);
var id, onStopDelayedCall, dragged, moved, wheeled, locked, axis, self = this, prevDeltaX = 0, prevDeltaY = 0, passive = vars.passive || !preventDefault && vars.passive !== false, scrollFuncX = _getScrollFunc(target, _horizontal), scrollFuncY = _getScrollFunc(target, _vertical), scrollX = scrollFuncX(), scrollY = scrollFuncY(), limitToTouch = ~type.indexOf("touch") && !~type.indexOf("pointer") && _eventTypes[0] === "pointerdown", isViewport = _isViewport(target), ownerDoc = target.ownerDocument || _doc, deltaX = [0, 0, 0], deltaY = [0, 0, 0], onClickTime = 0, clickCapture = function clickCapture2() {
return onClickTime = _getTime();
}, _ignoreCheck = function _ignoreCheck2(e, isPointerOrTouch) {
return (self.event = e) && ignore && _isWithin(e.target, ignore) || isPointerOrTouch && limitToTouch && e.pointerType !== "touch" || ignoreCheck && ignoreCheck(e, isPointerOrTouch);
}, onStopFunc = function onStopFunc2() {
self._vx.reset();
self._vy.reset();
onStopDelayedCall.pause();
onStop && onStop(self);
}, update = function update2() {
var dx = self.deltaX = _getAbsoluteMax(deltaX), dy = self.deltaY = _getAbsoluteMax(deltaY), changedX = Math.abs(dx) >= tolerance, changedY = Math.abs(dy) >= tolerance;
onChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY);
if (changedX) {
onRight && self.deltaX > 0 && onRight(self);
onLeft && self.deltaX < 0 && onLeft(self);
onChangeX && onChangeX(self);
onToggleX && self.deltaX < 0 !== prevDeltaX < 0 && onToggleX(self);
prevDeltaX = self.deltaX;
deltaX[0] = deltaX[1] = deltaX[2] = 0;
}
if (changedY) {
onDown && self.deltaY > 0 && onDown(self);
onUp && self.deltaY < 0 && onUp(self);
onChangeY && onChangeY(self);
onToggleY && self.deltaY < 0 !== prevDeltaY < 0 && onToggleY(self);
prevDeltaY = self.deltaY;
deltaY[0] = deltaY[1] = deltaY[2] = 0;
}
if (moved || dragged) {
onMove && onMove(self);
if (dragged) {
onDragStart && dragged === 1 && onDragStart(self);
onDrag && onDrag(self);
dragged = 0;
}
moved = false;
}
locked && !(locked = false) && onLockAxis && onLockAxis(self);
if (wheeled) {
onWheel(self);
wheeled = false;
}
id = 0;
}, onDelta = function onDelta2(x, y, index) {
deltaX[index] += x;
deltaY[index] += y;
self._vx.update(x);
self._vy.update(y);
debounce ? id || (id = requestAnimationFrame(update)) : update();
}, onTouchOrPointerDelta = function onTouchOrPointerDelta2(x, y) {
if (lockAxis && !axis) {
self.axis = axis = Math.abs(x) > Math.abs(y) ? "x" : "y";
locked = true;
}
if (axis !== "y") {
deltaX[2] += x;
self._vx.update(x, true);
}
if (axis !== "x") {
deltaY[2] += y;
self._vy.update(y, true);
}
debounce ? id || (id = requestAnimationFrame(update)) : update();
}, _onDrag = function _onDrag2(e) {
if (_ignoreCheck(e, 1)) {
return;
}
e = _getEvent(e, preventDefault);
var x = e.clientX, y = e.clientY, dx = x - self.x, dy = y - self.y, isDragging = self.isDragging;
self.x = x;
self.y = y;
if (isDragging || (dx || dy) && (Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum)) {
dragged || (dragged = isDragging ? 2 : 1);
isDragging || (self.isDragging = true);
onTouchOrPointerDelta(dx, dy);
}
}, _onPress = self.onPress = function(e) {
if (_ignoreCheck(e, 1) || e && e.button) {
return;
}
self.axis = axis = null;
onStopDelayedCall.pause();
self.isPressed = true;
e = _getEvent(e);
prevDeltaX = prevDeltaY = 0;
self.startX = self.x = e.clientX;
self.startY = self.y = e.clientY;
self._vx.reset();
self._vy.reset();
_addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, passive, true);
self.deltaX = self.deltaY = 0;
onPress && onPress(self);
}, _onRelease = self.onRelease = function(e) {
if (_ignoreCheck(e, 1)) {
return;
}
_removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
var isTrackingDrag = !isNaN(self.y - self.startY), wasDragging = self.isDragging, isDragNotClick = wasDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3), eventData = _getEvent(e);
if (!isDragNotClick && isTrackingDrag) {
self._vx.reset();
self._vy.reset();
if (preventDefault && allowClicks) {
gsap.delayedCall(0.08, function() {
if (_getTime() - onClickTime > 300 && !e.defaultPrevented) {
if (e.target.click) {
e.target.click();
} else if (ownerDoc.createEvent) {
var syntheticEvent = ownerDoc.createEvent("MouseEvents");
syntheticEvent.initMouseEvent("click", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);
e.target.dispatchEvent(syntheticEvent);
}
}
});
}
}
self.isDragging = self.isGesturing = self.isPressed = false;
onStop && wasDragging && !isNormalizer && onStopDelayedCall.restart(true);
dragged && update();
onDragEnd && wasDragging && onDragEnd(self);
onRelease && onRelease(self, isDragNotClick);
}, _onGestureStart = function _onGestureStart2(e) {
return e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging);
}, _onGestureEnd = function _onGestureEnd2() {
return (self.isGesturing = false) || onGestureEnd(self);
}, onScroll = function onScroll2(e) {
if (_ignoreCheck(e)) {
return;
}
var x = scrollFuncX(), y = scrollFuncY();
onDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);
scrollX = x;
scrollY = y;
onStop && onStopDelayedCall.restart(true);
}, _onWheel = function _onWheel2(e) {
if (_ignoreCheck(e)) {
return;
}
e = _getEvent(e, preventDefault);
onWheel && (wheeled = true);
var multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;
onDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);
onStop && !isNormalizer && onStopDelayedCall.restart(true);
}, _onMove = function _onMove2(e) {
if (_ignoreCheck(e)) {
return;
}
var x = e.clientX, y = e.clientY, dx = x - self.x, dy = y - self.y;
self.x = x;
self.y = y;
moved = true;
onStop && onStopDelayedCall.restart(true);
(dx || dy) && onTouchOrPointerDelta(dx, dy);
}, _onHover = function _onHover2(e) {
self.event = e;
onHover(self);
}, _onHoverEnd = function _onHoverEnd2(e) {
self.event = e;
onHoverEnd(self);
}, _onClick = function _onClick2(e) {
return _ignoreCheck(e) || _getEvent(e, preventDefault) && onClick(self);
};
onStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();
self.deltaX = self.deltaY = 0;
self._vx = _getVelocityProp(0, 50, true);
self._vy = _getVelocityProp(0, 50, true);
self.scrollX = scrollFuncX;
self.scrollY = scrollFuncY;
self.isDragging = self.isGesturing = self.isPressed = false;
_context(this);
self.enable = function(e) {
if (!self.isEnabled) {
_addListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
type.indexOf("scroll") >= 0 && _addListener(isViewport ? ownerDoc : target, "scroll", onScroll, passive, capture);
type.indexOf("wheel") >= 0 && _addListener(target, "wheel", _onWheel, passive, capture);
if (type.indexOf("touch") >= 0 && _isTouch || type.indexOf("pointer") >= 0) {
_addListener(target, _eventTypes[0], _onPress, passive, capture);
_addListener(ownerDoc, _eventTypes[2], _onRelease);
_addListener(ownerDoc, _eventTypes[3], _onRelease);
allowClicks && _addListener(target, "click", clickCapture, true, true);
onClick && _addListener(target, "click", _onClick);
onGestureStart && _addListener(ownerDoc, "gesturestart", _onGestureStart);
onGestureEnd && _addListener(ownerDoc, "gestureend", _onGestureEnd);
onHover && _addListener(target, _pointerType + "enter", _onHover);
onHoverEnd && _addListener(target, _pointerType + "leave", _onHoverEnd);
onMove && _addListener(target, _pointerType + "move", _onMove);
}
self.isEnabled = true;
self.isDragging = self.isGesturing = self.isPressed = moved = dragged = false;
self._vx.reset();
self._vy.reset();
scrollX = scrollFuncX();
scrollY = scrollFuncY();
e && e.type && _onPress(e);
onEnable && onEnable(self);
}
return self;
};
self.disable = function() {
if (self.isEnabled) {
_observers.filter(function(o) {
return o !== self && _isViewport(o.target);
}).length || _removeListener(isViewport ? ownerDoc : target, "scroll", _onScroll);
if (self.isPressed) {
self._vx.reset();
self._vy.reset();
_removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);
}
_removeListener(isViewport ? ownerDoc : target, "scroll", onScroll, capture);
_removeListener(target, "wheel", _onWheel, capture);
_removeListener(target, _eventTypes[0], _onPress, capture);
_removeListener(ownerDoc, _eventTypes[2], _onRelease);
_removeListener(ownerDoc, _eventTypes[3], _onRelease);
_removeListener(target, "click", clickCapture, true);
_removeListener(target, "click", _onClick);
_removeListener(ownerDoc, "gesturestart", _onGestureStart);
_removeListener(ownerDoc, "gestureend", _onGestureEnd);
_removeListener(target, _pointerType + "enter", _onHover);
_removeListener(target, _pointerType + "leave", _onHoverEnd);
_removeListener(target, _pointerType + "move", _onMove);
self.isEnabled = self.isPressed = self.isDragging = false;
onDisable && onDisable(self);
}
};
self.kill = self.revert = function() {
self.disable();
var i = _observers.indexOf(self);
i >= 0 && _observers.splice(i, 1);
_normalizer === self && (_normalizer = 0);
};
_observers.push(self);
isNormalizer && _isViewport(target) && (_normalizer = self);
self.enable(event);
};
_createClass(Observer2, [{
key: "velocityX",
get: function get() {
return this._vx.getVelocity();
}
}, {
key: "velocityY",
get: function get() {
return this._vy.getVelocity();
}
}]);
return Observer2;
})();
Observer.version = "3.15.0";
Observer.create = function(vars) {
return new Observer(vars);
};
Observer.register = _initCore;
Observer.getAll = function() {
return _observers.slice();
};
Observer.getById = function(id) {
return _observers.filter(function(o) {
return o.vars.id === id;
})[0];
};
_getGSAP() && gsap.registerPlugin(Observer);
// node_modules/gsap/ScrollTrigger.js
var gsap2;
var _coreInitted2;
var _win2;
var _doc2;
var _docEl2;
var _body2;
var _root2;
var _resizeDelay;
var _toArray;
var _clamp2;
var _time2;
var _syncInterval;
var _refreshing;
var _pointerIsDown;
var _transformProp;
var _i;
var _prevWidth;
var _prevHeight;
var _autoRefresh;
var _sort;
var _suppressOverwrites;
var _ignoreResize;
var _normalizer2;
var _ignoreMobileResize;
var _baseScreenHeight;
var _baseScreenWidth;
var _fixIOSBug;
var _context2;
var _scrollRestoration;
var _div100vh;
var _100vh;
var _isReverted;
var _clampingMax;
var _limitCallbacks;
var _startup2 = 1;
var _getTime2 = Date.now;
var _time1 = _getTime2();
var _lastScrollTime = 0;
var _enabled = 0;
var _parseClamp = function _parseClamp2(value, type, self) {
var clamp = _isString(value) && (value.substr(0, 6) === "clamp(" || value.indexOf("max") > -1);
self["_" + type + "Clamp"] = clamp;
return clamp ? value.substr(6, value.length - 7) : value;
};
var _keepClamp = function _keepClamp2(value, clamp) {
return clamp && (!_isString(value) || value.substr(0, 6) !== "clamp(") ? "clamp(" + value + ")" : value;
};
var _rafBugFix = function _rafBugFix2() {
return _enabled && requestAnimationFrame(_rafBugFix2);
};
var _pointerDownHandler = function _pointerDownHandler2() {
return _pointerIsDown = 1;
};
var _pointerUpHandler = function _pointerUpHandler2() {
return _pointerIsDown = 0;
};
var _passThrough = function _passThrough2(v) {
return v;
};
var _round = function _round2(value) {
return Math.round(value * 1e5) / 1e5 || 0;
};
var _windowExists = function _windowExists2() {
return typeof window !== "undefined";
};
var _getGSAP3 = function _getGSAP4() {
return gsap2 || _windowExists() && (gsap2 = window.gsap) && gsap2.registerPlugin && gsap2;
};
var _isViewport3 = function _isViewport4(e) {
return !!~_root2.indexOf(e);
};
var _getViewportDimension = function _getViewportDimension2(dimensionProperty) {
return (dimensionProperty === "Height" ? _100vh : _win2["inner" + dimensionProperty]) || _docEl2["client" + dimensionProperty] || _body2["client" + dimensionProperty];
};
var _getBoundsFunc = function _getBoundsFunc2(element) {
return _getProxyProp(element, "getBoundingClientRect") || (_isViewport3(element) ? function() {
_winOffsets.width = _win2.innerWidth;
_winOffsets.height = _100vh;
return _winOffsets;
} : function() {
return _getBounds(element);
});
};
var _getSizeFunc = function _getSizeFunc2(scroller, isViewport, _ref) {
var d = _ref.d, d2 = _ref.d2, a = _ref.a;
return (a = _getProxyProp(scroller, "getBoundingClientRect")) ? function() {
return a()[d];
} : function() {
return (isViewport ? _getViewportDimension(d2) : scroller["client" + d2]) || 0;
};
};
var _getOffsetsFunc = function _getOffsetsFunc2(element, isViewport) {
return !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : function() {
return _winOffsets;
};
};
var _maxScroll = function _maxScroll2(element, _ref2) {
var s = _ref2.s, d2 = _ref2.d2, d = _ref2.d, a = _ref2.a;
return Math.max(0, (s = "scroll" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport3(element) ? (_docEl2[s] || _body2[s]) - _getViewportDimension(d2) : element[s] - element["offset" + d2]);
};
var _iterateAutoRefresh = function _iterateAutoRefresh2(func, events) {
for (var i = 0; i < _autoRefresh.length; i += 3) {
(!events || ~events.indexOf(_autoRefresh[i + 1])) && func(_autoRefresh[i], _autoRefresh[i + 1], _autoRefresh[i + 2]);
}
};
var _isString = function _isString2(value) {
return typeof value === "string";
};
var _isFunction = function _isFunction2(value) {
return typeof value === "function";
};
var _isNumber = function _isNumber2(value) {
return typeof value === "number";
};
var _isObject = function _isObject2(value) {
return typeof value === "object";
};
var _endAnimation = function _endAnimation2(animation, reversed, pause) {
return animation && animation.progress(reversed ? 0 : 1) && pause && animation.pause();
};
var _callback = function _callback2(self, func, extraParam) {
if (self.enabled) {
var result = self._ctx ? self._ctx.add(function() {
return func(self, extraParam);
}) : func(self, extraParam);
result && result.totalTime && (self.callbackAnimation = result);
}
};
var _abs = Math.abs;
var _left = "left";
var _top = "top";
var _right = "right";
var _bottom = "bottom";
var _width = "width";
var _height = "height";
var _Right = "Right";
var _Left = "Left";
var _Top = "Top";
var _Bottom = "Bottom";
var _padding = "padding";
var _margin = "margin";
var _Width = "Width";
var _Height = "Height";
var _px = "px";
var _getComputedStyle = function _getComputedStyle2(element) {
return _win2.getComputedStyle(element.nodeType === Node.DOCUMENT_NODE ? element.scrollingElement : element);
};
var _makePositionable = function _makePositionable2(element) {
var position = _getComputedStyle(element).position;
element.style.position = position === "absolute" || position === "fixed" ? position : "relative";
};
var _setDefaults = function _setDefaults2(obj, defaults) {
for (var p in defaults) {
p in obj || (obj[p] = defaults[p]);
}
return obj;
};
var _getBounds = function _getBounds2(element, withoutTransforms) {
var tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== "matrix(1, 0, 0, 1, 0, 0)" && gsap2.to(element, {
x: 0,
y: 0,
xPercent: 0,
yPercent: 0,
rotation: 0,
rotationX: 0,
rotationY: 0,
scale: 1,
skewX: 0,
skewY: 0
}).progress(1), bounds = element.getBoundingClientRect ? element.getBoundingClientRect() : element.scrollingElement.getBoundingClientRect();
tween && tween.progress(0).kill();
return bounds;
};
var _getSize = function _getSize2(element, _ref3) {
var d2 = _ref3.d2;
return element["offset" + d2] || element["client" + d2] || 0;
};
var _getLabelRatioArray = function _getLabelRatioArray2(timeline) {
var a = [], labels = timeline.labels, duration = timeline.duration(), p;
for (p in labels) {
a.push(labels[p] / duration);
}
return a;
};
var _getClosestLabel = function _getClosestLabel2(animation) {
return function(value) {
return gsap2.utils.snap(_getLabelRatioArray(animation), value);
};
};
var _snapDirectional = function _snapDirectional2(snapIncrementOrArray) {
var snap = gsap2.utils.snap(snapIncrementOrArray), a = Array.isArray(snapIncrementOrArray) && snapIncrementOrArray.slice(0).sort(function(a2, b) {
return a2 - b;
});
return a ? function(value, direction, threshold) {
if (threshold === void 0) {
threshold = 1e-3;
}
var i;
if (!direction) {
return snap(value);
}
if (direction > 0) {
value -= threshold;
for (i = 0; i < a.length; i++) {
if (a[i] >= value) {
return a[i];
}
}
return a[i - 1];
} else {
i = a.length;
value += threshold;
while (i--) {
if (a[i] <= value) {
return a[i];
}
}
}
return a[0];
} : function(value, direction, threshold) {
if (threshold === void 0) {
threshold = 1e-3;
}
var snapped = snap(value);
return !direction || Math.abs(snapped - value) < threshold || snapped - value < 0 === direction < 0 ? snapped : snap(direction < 0 ? value - snapIncrementOrArray : value + snapIncrementOrArray);
};
};
var _getLabelAtDirection = function _getLabelAtDirection2(timeline) {
return function(value, st) {
return _snapDirectional(_getLabelRatioArray(timeline))(value, st.direction);
};
};
var _multiListener = function _multiListener2(func, element, types, callback) {
return types.split(",").forEach(function(type) {
return func(element, type, callback);
});
};
var _addListener3 = function _addListener4(element, type, func, nonPassive, capture) {
return element.addEventListener(type, func, {
passive: !nonPassive,
capture: !!capture
});
};
var _removeListener3 = function _removeListener4(element, type, func, capture) {
return element.removeEventListener(type, func, !!capture);
};
var _wheelListener = function _wheelListener2(func, el, scrollFunc) {
scrollFunc = scrollFunc && scrollFunc.wheelHandler;
if (scrollFunc) {
func(el, "wheel", scrollFunc);
func(el, "touchmove", scrollFunc);
}
};
var _markerDefaults = {
startColor: "green",
endColor: "red",
indent: 0,
fontSize: "16px",
fontWeight: "normal"
};
var _defaults = {
toggleActions: "play",
anticipatePin: 0
};
var _keywords = {
top: 0,
left: 0,
center: 0.5,
bottom: 1,
right: 1
};
var _offsetToPx = function _offsetToPx2(value, size) {
if (_isString(value)) {
var eqIndex = value.indexOf("="), relative = ~eqIndex ? +(value.charAt(eqIndex - 1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;
if (~eqIndex) {
value.indexOf("%") > eqIndex && (relative *= size / 100);
value = value.substr(0, eqIndex - 1);
}
value = relative + (value in _keywords ? _keywords[value] * size : ~value.indexOf("%") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);
}
return value;
};
var _createMarker = function _createMarker2(type, name, container, direction, _ref4, offset, matchWidthEl, containerAnimation) {
var startColor = _ref4.startColor, endColor = _ref4.endColor, fontSize = _ref4.fontSize, indent = _ref4.indent, fontWeight = _ref4.fontWeight;
var e = _doc2.createElement("div"), useFixedPosition = _isViewport3(container) || _getProxyProp(container, "pinType") === "fixed", isScroller = type.indexOf("scroller") !== -1, parent = useFixedPosition ? _body2 : container.tagName === "IFRAME" ? container.contentDocument.body : container, isStart = type.indexOf("start") !== -1, color = isStart ? startColor : endColor, css = "border-color:" + color + ";font-size:" + fontSize + ";color:" + color + ";font-weight:" + fontWeight + ";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";
css += "position:" + ((isScroller || containerAnimation) && useFixedPosition ? "fixed;" : "absolute;");
(isScroller || containerAnimation || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + ":" + (offset + parseFloat(indent)) + "px;");
matchWidthEl && (css += "box-sizing:border-box;text-align:left;width:" + matchWidthEl.offsetWidth + "px;");
e._isStart = isStart;
e.setAttribute("class", "gsap-marker-" + type + (name ? " marker-" + name : ""));
e.style.cssText = css;
e.innerText = name || name === 0 ? type + "-" + name : type;
parent.children[0] ? parent.insertBefore(e, parent.children[0]) : parent.appendChild(e);
e._offset = e["offset" + direction.op.d2];
_positionMarker(e, 0, direction, isStart);
return e;
};
var _positionMarker = function _positionMarker2(marker, start, direction, flipped) {
var vars = {
display: "block"
}, side = direction[flipped ? "os2" : "p2"], oppositeSide = direction[flipped ? "p2" : "os2"];
marker._isFlipped = flipped;
vars[direction.a + "Percent"] = flipped ? -100 : 0;
vars[direction.a] = flipped ? "1px" : 0;
vars["border" + side + _Width] = 1;
vars["border" + oppositeSide + _Width] = 0;
vars[direction.p] = start + "px";
gsap2.set(marker, vars);
};
var _triggers = [];
var _ids = {};
var _rafID;
var _sync = function _sync2() {
return _getTime2() - _lastScrollTime > 34 && (_rafID || (_rafID = requestAnimationFrame(_updateAll)));
};
var _onScroll3 = function _onScroll4() {
if (!_normalizer2 || !_normalizer2.isPressed || _normalizer2.startX > _body2.clientWidth) {
_scrollers.cache++;
if (_normalizer2) {
_rafID || (_rafID = requestAnimationFrame(_updateAll));
} else {
_updateAll();
}
_lastScrollTime || _dispatch("scrollStart");
_lastScrollTime = _getTime2();
}
};
var _setBaseDimensions = function _setBaseDimensions2() {
_baseScreenWidth = _win2.innerWidth;
_baseScreenHeight = _win2.innerHeight;
};
var _onResize = function _onResize2(force) {
_scrollers.cache++;
(force === true || !_refreshing && !_ignoreResize && !_doc2.fullscreenElement && !_doc2.webkitFullscreenElement && (!_ignoreMobileResize || _baseScreenWidth !== _win2.innerWidth || Math.abs(_win2.innerHeight - _baseScreenHeight) > _win2.innerHeight * 0.25)) && _resizeDelay.restart(true);
};
var _listeners = {};
var _emptyArray = [];
var _softRefresh = function _softRefresh2() {
return _removeListener3(ScrollTrigger2, "scrollEnd", _softRefresh2) || _refreshAll(true);
};
var _dispatch = function _dispatch2(type) {
return _listeners[type] && _listeners[type].map(function(f) {
return f();
}) || _emptyArray;
};
var _savedStyles = [];
var _revertRecorded = function _revertRecorded2(media) {
for (var i = 0; i < _savedStyles.length; i += 5) {
if (!media || _savedStyles[i + 4] && _savedStyles[i + 4].query === media) {
_savedStyles[i].style.cssText = _savedStyles[i + 1];
_savedStyles[i].getBBox && _savedStyles[i].setAttribute("transform", _savedStyles[i + 2] || "");
_savedStyles[i + 3].uncache = 1;
}
}
};
var _recordScrollPositions = function _recordScrollPositions2() {
return _scrollers.forEach(function(obj) {
return _isFunction(obj) && ++obj.cacheID && (obj.rec = obj());
});
};
var _revertAll = function _revertAll2(kill, media) {
var trigger;
for (_i = 0; _i < _triggers.length; _i++) {
trigger = _triggers[_i];
if (trigger && (!media || trigger._ctx === media)) {
if (kill) {
trigger.kill(1);
} else {
trigger.revert(true, true);
}
}
}
_isReverted = true;
media && _revertRecorded(media);
media || _dispatch("revert");
};
var _clearScrollMemory = function _clearScrollMemory2(scrollRestoration, force) {
_scrollers.cache++;
(force || !_refreshingAll) && _scrollers.forEach(function(obj) {
return _isFunction(obj) && obj.cacheID++ && (obj.rec = 0);
});
_isString(scrollRestoration) && (_win2.history.scrollRestoration = _scrollRestoration = scrollRestoration);
};
var _refreshingAll;
var _refreshID = 0;
var _queueRefreshID;
var _queueRefreshAll = function _queueRefreshAll2() {
if (_queueRefreshID !== _refreshID) {
var id = _queueRefreshID = _refreshID;
requestAnimationFrame(function() {
return id === _refreshID && _refreshAll(true);
});
}
};
var _refresh100vh = function _refresh100vh2() {
_body2.appendChild(_div100vh);
_100vh = !_normalizer2 && _div100vh.offsetHeight || _win2.innerHeight;
_body2.removeChild(_div100vh);
};
var _hideAllMarkers = function _hideAllMarkers2(hide) {
return _toArray(".gsap-marker-start, .gsap-marker-end, .gsap-marker-scroller-start, .gsap-marker-scroller-end").forEach(function(el) {
return el.style.display = hide ? "none" : "block";
});
};
var _refreshAll = function _refreshAll2(force, skipRevert) {
_docEl2 = _doc2.documentElement;
_body2 = _doc2.body;
_root2 = [_win2, _doc2, _docEl2, _body2];
if (_lastScrollTime && !force && !_isReverted) {
_addListener3(ScrollTrigger2, "scrollEnd", _softRefresh);
return;
}
_refresh100vh();
_refreshingAll = ScrollTrigger2.isRefreshing = true;
_isReverted || _recordScrollPositions();
var refreshInits = _dispatch("refreshInit");
_sort && ScrollTrigger2.sort();
skipRevert || _revertAll();
_scrollers.forEach(function(obj) {
if (_isFunction(obj)) {
obj.smooth && (obj.target.style.scrollBehavior = "auto");
obj(0);
}
});
_triggers.slice(0).forEach(function(t) {
return t.refresh();
});
_isReverted = false;
_triggers.forEach(function(t) {
if (t._subPinOffset && t.pin) {
var prop = t.vars.horizontal ? "offsetWidth" : "offsetHeight", original = t.pin[prop];
t.revert(true, 1);
t.adjustPinSpacing(t.pin[prop] - original);
t.refresh();
}
});
_clampingMax = 1;
_hideAllMarkers(true);
_triggers.forEach(function(t) {
var max = _maxScroll(t.scroller, t._dir), endClamp = t.vars.end === "max" || t._endClamp && t.end > max, startClamp = t._startClamp && t.start >= max;
(endClamp || startClamp) && t.setPositions(startClamp ? max - 1 : t.start, endClamp ? Math.max(startClamp ? max : t.start + 1, max) : t.end, true);
});
_hideAllMarkers(false);
_clampingMax = 0;
refreshInits.forEach(function(result) {
return result && result.render && result.render(-1);
});
_scrollers.forEach(function(obj) {
if (_isFunction(obj)) {
obj.smooth && requestAnimationFrame(function() {
return obj.target.style.scrollBehavior = "smooth";
});
obj.rec && obj(obj.rec);
}
});
_clearScrollMemory(_scrollRestoration, 1);
_resizeDelay.pause();
_refreshID++;
_refreshingAll = 2;
_updateAll(2);
_triggers.forEach(function(t) {
return _isFunction(t.vars.onRefresh) && t.vars.onRefresh(t);
});
_refreshingAll = ScrollTrigger2.isRefreshing = false;
_dispatch("refresh");
};
var _lastScroll = 0;
var _direction = 1;
var _primary;
var _updateAll = function _updateAll2(force) {
if (force === 2 || !_refreshingAll && !_isReverted) {
ScrollTrigger2.isUpdating = true;
_primary && _primary.update(0);
var l = _triggers.length, time = _getTime2(), recordVelocity = time - _time1 >= 50, scroll = l && _triggers[0].scroll();
_direction = _lastScroll > scroll ? -1 : 1;
_refreshingAll || (_lastScroll = scroll);
if (recordVelocity) {
if (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {
_lastScrollTime = 0;
_dispatch("scrollEnd");
}
_time2 = _time1;
_time1 = time;
}
if (_direction < 0) {
_i = l;
while (_i-- > 0) {
_triggers[_i] && _triggers[_i].update(0, recordVelocity);
}
_direction = 1;
} else {
for (_i = 0; _i < l; _i++) {
_triggers[_i] && _triggers[_i].update(0, recordVelocity);
}
}
ScrollTrigger2.isUpdating = false;
}
_rafID = 0;
};
var _propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, "display", "flexShrink", "float", "zIndex", "gridColumnStart", "gridColumnEnd", "gridRowStart", "gridRowEnd", "gridArea", "justifySelf", "alignSelf", "placeSelf", "order"];
var _stateProps = _propNamesToCopy.concat([_width, _height, "boxSizing", "max" + _Width, "max" + _Height, "position", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]);
var _swapPinOut = function _swapPinOut2(pin, spacer, state) {
_setState(state);
var cache = pin._gsap;
if (cache.spacerIsNative) {
_setState(cache.spacerState);
} else if (pin._gsap.swappedIn) {
var parent = spacer.parentNode;
if (parent) {
parent.insertBefore(pin, spacer);
parent.removeChild(spacer);
}
}
pin._gsap.swappedIn = false;
};
var _swapPinIn = function _swapPinIn2(pin, spacer, cs, spacerState) {
if (!pin._gsap.swappedIn) {
var i = _propNamesToCopy.length, spacerStyle = spacer.style, pinStyle = pin.style, p;
while (i--) {
p = _propNamesToCopy[i];
spacerStyle[p] = cs[p];
}
spacerStyle.position = cs.position === "absolute" ? "absolute" : "relative";
cs.display === "inline" && (spacerStyle.display = "inline-block");
pinStyle[_bottom] = pinStyle[_right] = "auto";
spacerStyle.flexBasis = cs.flexBasis || "auto";
spacerStyle.overflow = "visible";
spacerStyle.boxSizing = "border-box";
spacerStyle[_width] = _getSize(pin, _horizontal) + _px;
spacerStyle[_height] = _getSize(pin, _vertical) + _px;
spacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = "0";
_setState(spacerState);
pinStyle[_width] = pinStyle["max" + _Width] = cs[_width];
pinStyle[_height] = pinStyle["max" + _Height] = cs[_height];
pinStyle[_padding] = cs[_padding];
if (pin.parentNode !== spacer) {
pin.parentNode.insertBefore(spacer, pin);
spacer.appendChild(pin);
}
pin._gsap.swappedIn = true;
}
};
var _capsExp = /([A-Z])/g;
var _setState = function _setState2(state) {
if (state) {
var style = state.t.style, l = state.length, i = 0, p, value;
(state.t._gsap || gsap2.core.getCache(state.t)).uncache = 1;
for (; i < l; i += 2) {
value = state[i + 1];
p = state[i];
if (value) {
style[p] = value;
} else if (style[p]) {
style.removeProperty(p.replace(_capsExp, "-$1").toLowerCase());
}
}
}
};
var _getState = function _getState2(element) {
var l = _stateProps.length, style = element.style, state = [], i = 0;
for (; i < l; i++) {
state.push(_stateProps[i], style[_stateProps[i]]);
}
state.t = element;
return state;
};
var _copyState = function _copyState2(state, override, omitOffsets) {
var result = [], l = state.length, i = omitOffsets ? 8 : 0, p;
for (; i < l; i += 2) {
p = state[i];
result.push(p, p in override ? override[p] : state[i + 1]);
}
result.t = state.t;
return result;
};
var _winOffsets = {
left: 0,
top: 0
};
var _parsePosition = function _parsePosition2(value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax, containerAnimation, clampZeroProp) {
_isFunction(value) && (value = value(self));
if (_isString(value) && value.substr(0, 3) === "max") {
value = scrollerMax + (value.charAt(4) === "=" ? _offsetToPx("0" + value.substr(3), scrollerSize) : 0);
}
var time = containerAnimation ? containerAnimation.time() : 0, p1, p2, element;
containerAnimation && containerAnimation.seek(0);
isNaN(value) || (value = +value);
if (!_isNumber(value)) {
_isFunction(trigger) && (trigger = trigger(self));
var offsets = (value || "0").split(" "), bounds, localOffset, globalOffset, display;
element = _getTarget(trigger, self) || _body2;
bounds = _getBounds(element) || {};
if ((!bounds || !bounds.left && !bounds.top) && _getComputedStyle(element).display === "none") {
display = element.style.display;
element.style.display = "block";
bounds = _getBounds(element);
display ? element.style.display = display : element.style.removeProperty("display");
}
localOffset = _offsetToPx(offsets[0], bounds[direction.d]);
globalOffset = _offsetToPx(offsets[1] || "0", scrollerSize);
value = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;
markerScroller && _positionMarker(markerScroller, globalOffset, direction, scrollerSize - globalOffset < 20 || markerScroller._isStart && globalOffset > 20);
scrollerSize -= scrollerSize - globalOffset;
} else {
containerAnimation && (value = gsap2.utils.mapRange(containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, 0, scrollerMax, value));
markerScroller && _positionMarker(markerScroller, scrollerSize, direction, true);
}
if (clampZeroProp) {
self[clampZeroProp] = value || -1e-3;
value < 0 && (value = 0);
}
if (marker) {
var position = value + scrollerSize, isStart = marker._isStart;
p1 = "scroll" + direction.d2;
_positionMarker(marker, position, direction, isStart && position > 20 || !isStart && (useFixedPosition ? Math.max(_body2[p1], _docEl2[p1]) : marker.parentNode[p1]) <= position + 1);
if (useFixedPosition) {
scrollerBounds = _getBounds(markerScroller);
useFixedPosition && (marker.style[direction.op.p] = scrollerBounds[direction.op.p] - direction.op.m - marker._offset + _px);
}
}
if (containerAnimation && element) {
p1 = _getBounds(element);
containerAnimation.seek(scrollerMax);
p2 = _getBounds(element);
containerAnimation._caScrollDist = p1[direction.p] - p2[direction.p];
value = value / containerAnimation._caScrollDist * scrollerMax;
}
containerAnimation && containerAnimation.seek(time);
return containerAnimation ? value : Math.round(value);
};
var _prefixExp = /(webkit|moz|length|cssText|inset)/i;
var _reparent = function _reparent2(element, parent, top, left) {
if (element.parentNode !== parent) {
var style = element.style, p, cs;
if (parent === _body2) {
element._stOrig = style.cssText;
cs = _getComputedStyle(element);
for (p in cs) {
if (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === "string" && p !== "0") {
style[p] = cs[p];
}
}
style.top = top;
style.left = left;
} else {
style.cssText = element._stOrig;
}
gsap2.core.getCache(element).uncache = 1;
parent.appendChild(element);
}
};
var _interruptionTracker = function _interruptionTracker2(getValueFunc, initialValue, onInterrupt) {
var last1 = initialValue, last2 = last1;
return function(value) {
var current = Math.round(getValueFunc());
if (current !== last1 && current !== last2 && Math.abs(current - last1) > 3 && Math.abs(current - last2) > 3) {
value = current;
onInterrupt && onInterrupt();
}
last2 = last1;
last1 = Math.round(value);
return last1;
};
};
var _shiftMarker = function _shiftMarker2(marker, direction, value) {
var vars = {};
vars[direction.p] = "+=" + value;
gsap2.set(marker, vars);
};
var _getTweenCreator = function _getTweenCreator2(scroller, direction) {
var getScroll = _getScrollFunc(scroller, direction), prop = "_scroll" + direction.p2, getTween = function getTween2(scrollTo, vars, initialValue, change1, change2) {
var tween = getTween2.tween, onComplete = vars.onComplete, modifiers = {};
initialValue = initialValue || getScroll();
var checkForInterruption = _interruptionTracker(getScroll, initialValue, function() {
tween.kill();
getTween2.tween = 0;
});
change2 = change1 && change2 || 0;
change1 = change1 || scrollTo - initialValue;
tween && tween.kill();
vars[prop] = scrollTo;
vars.inherit = false;
vars.modifiers = modifiers;
modifiers[prop] = function() {
return checkForInterruption(initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio);
};
vars.onUpdate = function() {
_scrollers.cache++;
getTween2.tween && _updateAll();
};
vars.onComplete = function() {
getTween2.tween = 0;
onComplete && onComplete.call(tween);
};
tween = getTween2.tween = gsap2.to(scroller, vars);
return tween;
};
scroller[prop] = getScroll;
getScroll.wheelHandler = function() {
return getTween.tween && getTween.tween.kill() && (getTween.tween = 0);
};
_addListener3(scroller, "wheel", getScroll.wheelHandler);
ScrollTrigger2.isTouch && _addListener3(scroller, "touchmove", getScroll.wheelHandler);
return getTween;
};
var ScrollTrigger2 = (function() {
function ScrollTrigger3(vars, animation) {
_coreInitted2 || ScrollTrigger3.register(gsap2) || console.warn("Please gsap.registerPlugin(ScrollTrigger)");
_context2(this);
this.init(vars, animation);
}
var _proto = ScrollTrigger3.prototype;
_proto.init = function init(vars, animation) {
this.progress = this.start = 0;
this.vars && this.kill(true, true);
if (!_enabled) {
this.update = this.refresh = this.kill = _passThrough;
return;
}
vars = _setDefaults(_isString(vars) || _isNumber(vars) || vars.nodeType ? {
trigger: vars
} : vars, _defaults);
var _vars = vars, onUpdate = _vars.onUpdate, toggleClass = _vars.toggleClass, id = _vars.id, onToggle = _vars.onToggle, onRefresh = _vars.onRefresh, scrub = _vars.scrub, trigger = _vars.trigger, pin = _vars.pin, pinSpacing = _vars.pinSpacing, invalidateOnRefresh = _vars.invalidateOnRefresh, anticipatePin = _vars.anticipatePin, onScrubComplete = _vars.onScrubComplete, onSnapComplete = _vars.onSnapComplete, once = _vars.once, snap = _vars.snap, pinReparent = _vars.pinReparent, pinSpacer = _vars.pinSpacer, containerAnimation = _vars.containerAnimation, fastScrollEnd = _vars.fastScrollEnd, preventOverlaps = _vars.preventOverlaps, direction = vars.horizontal || vars.containerAnimation && vars.horizontal !== false ? _horizontal : _vertical, isToggle = !scrub && scrub !== 0, scroller = _getTarget(vars.scroller || _win2), scrollerCache = gsap2.core.getCache(scroller), isViewport = _isViewport3(scroller), useFixedPosition = ("pinType" in vars ? vars.pinType : _getProxyProp(scroller, "pinType") || isViewport && "fixed") === "fixed", callbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack], toggleActions = isToggle && vars.toggleActions.split(" "), markers = "markers" in vars ? vars.markers : _defaults.markers, borderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)["border" + direction.p2 + _Width]) || 0, self = this, onRefreshInit = vars.onRefreshInit && function() {
return vars.onRefreshInit(self);
}, getScrollerSize = _getSizeFunc(scroller, isViewport, direction), getScrollerOffsets = _getOffsetsFunc(scroller, isViewport), lastSnap = 0, lastRefresh = 0, prevProgress = 0, scrollFunc = _getScrollFunc(scroller, direction), tweenTo, pinCache, snapFunc, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars, executingOnRefresh, change, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter, pinMoves, markerEndSetter, cs, snap1, snap2, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevScroll, prevAnimProgress, caMarkerSetter, customRevertReturn;
self._startClamp = self._endClamp = false;
self._dir = direction;
anticipatePin *= 45;
self.scroller = scroller;
self.scroll = containerAnimation ? containerAnimation.time.bind(containerAnimation) : scrollFunc;
scroll1 = scrollFunc();
self.vars = vars;
animation = animation || vars.animation;
if ("refreshPriority" in vars) {
_sort = 1;
vars.refreshPriority === -9999 && (_primary = self);
}
scrollerCache.tweenScroll = scrollerCache.tweenScroll || {
top: _getTweenCreator(scroller, _vertical),
left: _getTweenCreator(scroller, _horizontal)
};
self.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];
self.scrubDuration = function(value) {
scrubSmooth = _isNumber(value) && value;
if (!scrubSmooth) {
scrubTween && scrubTween.progress(1).kill();
scrubTween = 0;
} else {
scrubTween ? scrubTween.duration(value) : scrubTween = gsap2.to(animation, {
ease: "expo",
totalProgress: "+=0",
inherit: false,
duration: scrubSmooth,
paused: true,
onComplete: function onComplete() {
return onScrubComplete && onScrubComplete(self);
}
});
}
};
if (animation) {
animation.vars.lazy = false;
animation._initted && !self.isReverted || animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.duration() && animation.render(0, true, true);
self.animation = animation.pause();
animation.scrollTrigger = self;
self.scrubDuration(scrub);
snap1 = 0;
id || (id = animation.vars.id);
}
if (snap) {
if (!_isObject(snap) || snap.push) {
snap = {
snapTo: snap
};
}
"scrollBehavior" in _body2.style && gsap2.set(isViewport ? [_body2, _docEl2] : scroller, {
scrollBehavior: "auto"
});
_scrollers.forEach(function(o) {
return _isFunction(o) && o.target === (isViewport ? _doc2.scrollingElement || _docEl2 : scroller) && (o.smooth = false);
});
snapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === "labels" ? _getClosestLabel(animation) : snap.snapTo === "labelsDirectional" ? _getLabelAtDirection(animation) : snap.directional !== false ? function(value, st) {
return _snapDirectional(snap.snapTo)(value, _getTime2() - lastRefresh < 500 ? 0 : st.direction);
} : gsap2.utils.snap(snap.snapTo);
snapDurClamp = snap.duration || {
min: 0.1,
max: 2
};
snapDurClamp = _isObject(snapDurClamp) ? _clamp2(snapDurClamp.min, snapDurClamp.max) : _clamp2(snapDurClamp, snapDurClamp);
snapDelayedCall = gsap2.delayedCall(snap.delay || scrubSmooth / 2 || 0.1, function() {
var scroll = scrollFunc(), refreshedRecently = _getTime2() - lastRefresh < 500, tween = tweenTo.tween;
if ((refreshedRecently || Math.abs(self.getVelocity()) < 10) && !tween && !_pointerIsDown && lastSnap !== scroll) {
var progress = (scroll - start) / change, totalProgress = animation && !isToggle ? animation.totalProgress() : progress, velocity = refreshedRecently ? 0 : (totalProgress - snap2) / (_getTime2() - _time2) * 1e3 || 0, change1 = gsap2.utils.clamp(-progress, 1 - progress, _abs(velocity / 2) * velocity / 0.185), naturalEnd = progress + (snap.inertia === false ? 0 : change1), endValue, endScroll, _snap = snap, onStart = _snap.onStart, _onInterrupt = _snap.onInterrupt, _onComplete = _snap.onComplete;
endValue = snapFunc(naturalEnd, self);
_isNumber(endValue) || (endValue = naturalEnd);
endScroll = Math.max(0, Math.round(start + endValue * change));
if (scroll <= end && scroll >= start && endScroll !== scroll) {
if (tween && !tween._initted && tween.data <= _abs(endScroll - scroll)) {
return;
}
if (snap.inertia === false) {
change1 = endValue - progress;
}
tweenTo(endScroll, {
duration: snapDurClamp(_abs(Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05 || 0)),
ease: snap.ease || "power3",
data: _abs(endScroll - scroll),
// record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.
onInterrupt: function onInterrupt() {
return snapDelayedCall.restart(true) && _onInterrupt && _callback(self, _onInterrupt);
},
onComplete: function onComplete() {
self.update();
lastSnap = scrollFunc();
if (animation && !isToggle) {
scrubTween ? scrubTween.resetTo("totalProgress", endValue, animation._tTime / animation._tDur) : animation.progress(endValue);
}
snap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;
onSnapComplete && onSnapComplete(self);
_onComplete && _callback(self, _onComplete);
}
}, scroll, change1 * change, endScroll - scroll - change1 * change);
onStart && _callback(self, onStart, tweenTo.tween);
}
} else if (self.isActive && lastSnap !== scroll) {
snapDelayedCall.restart(true);
}
}).pause();
}
id && (_ids[id] = self);
trigger = self.trigger = _getTarget(trigger || pin !== true && pin);
customRevertReturn = trigger && trigger._gsap && trigger._gsap.stRevert;
customRevertReturn && (customRevertReturn = customRevertReturn(self));
pin = pin === true ? trigger : _getTarget(pin);
_isString(toggleClass) && (toggleClass = {
targets: trigger,
className: toggleClass
});
if (pin) {
pinSpacing === false || pinSpacing === _margin || (pinSpacing = !pinSpacing && pin.parentNode && pin.parentNode.style && _getComputedStyle(pin.parentNode).display === "flex" ? false : _padding);
self.pin = pin;
pinCache = gsap2.core.getCache(pin);
if (!pinCache.spacer) {
if (pinSpacer) {
pinSpacer = _getTarget(pinSpacer);
pinSpacer && !pinSpacer.nodeType && (pinSpacer = pinSpacer.current || pinSpacer.nativeElement);
pinCache.spacerIsNative = !!pinSpacer;
pinSpacer && (pinCache.spacerState = _getState(pinSpacer));
}
pinCache.spacer = spacer = pinSpacer || _doc2.createElement("div");
spacer.classList.add("pin-spacer");
id && spacer.classList.add("pin-spacer-" + id);
pinCache.pinState = pinOriginalState = _getState(pin);
} else {
pinOriginalState = pinCache.pinState;
}
vars.force3D !== false && gsap2.set(pin, {
force3D: true
});
self.spacer = spacer = pinCache.spacer;
cs = _getComputedStyle(pin);
spacingStart = cs[pinSpacing + direction.os2];
pinGetter = gsap2.getProperty(pin);
pinSetter = gsap2.quickSetter(pin, direction.a, _px);
_swapPinIn(pin, spacer, cs);
pinState = _getState(pin);
}
if (markers) {
markerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;
markerStartTrigger = _createMarker("scroller-start", id, scroller, direction, markerVars, 0);
markerEndTrigger = _createMarker("scroller-end", id, scroller, direction, markerVars, 0, markerStartTrigger);
offset = markerStartTrigger["offset" + direction.op.d2];
var content = _getTarget(_getProxyProp(scroller, "content") || scroller);
markerStart = this.markerStart = _createMarker("start", id, content, direction, markerVars, offset, 0, containerAnimation);
markerEnd = this.markerEnd = _createMarker("end", id, content, direction, markerVars, offset, 0, containerAnimation);
containerAnimation && (caMarkerSetter = gsap2.quickSetter([markerStart, markerEnd], direction.a, _px));
if (!useFixedPosition && !(_proxies.length && _getProxyProp(scroller, "fixedMarkers") === true)) {
_makePositionable(isViewport ? _body2 : scroller);
gsap2.set([markerStartTrigger, markerEndTrigger], {
force3D: true
});
markerStartSetter = gsap2.quickSetter(markerStartTrigger, direction.a, _px);
markerEndSetter = gsap2.quickSetter(markerEndTrigger, direction.a, _px);
}
}
if (containerAnimation) {
var oldOnUpdate = containerAnimation.vars.onUpdate, oldParams = containerAnimation.vars.onUpdateParams;
containerAnimation.eventCallback("onUpdate", function() {
self.update(0, 0, 1);
oldOnUpdate && oldOnUpdate.apply(containerAnimation, oldParams || []);
});
}
self.previous = function() {
return _triggers[_triggers.indexOf(self) - 1];
};
self.next = function() {
return _triggers[_triggers.indexOf(self) + 1];
};
self.revert = function(revert, temp) {
if (!temp) {
return self.kill(true);
}
var r = revert !== false || !self.enabled, prevRefreshing = _refreshing;
if (r !== self.isReverted) {
if (r) {
prevScroll = Math.max(scrollFunc(), self.scroll.rec || 0);
prevProgress = self.progress;
prevAnimProgress = animation && animation.progress();
}
markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
return m.style.display = r ? "none" : "block";
});
if (r) {
_refreshing = self;
self.update(r);
}
if (pin && (!pinReparent || !self.isActive)) {
if (r) {
_swapPinOut(pin, spacer, pinOriginalState);
} else {
_swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState);
}
}
r || self.update(r);
_refreshing = prevRefreshing;
self.isReverted = r;
}
};
self.refresh = function(soft, force, position, pinOffset) {
if ((_refreshing || !self.enabled) && !force) {
return;
}
if (pin && soft && _lastScrollTime) {
_addListener3(ScrollTrigger3, "scrollEnd", _softRefresh);
return;
}
!_refreshingAll && onRefreshInit && onRefreshInit(self);
_refreshing = self;
if (tweenTo.tween && !position) {
tweenTo.tween.kill();
tweenTo.tween = 0;
}
scrubTween && scrubTween.pause();
if (invalidateOnRefresh && animation) {
animation.revert({
kill: false
}).invalidate();
animation.getChildren ? animation.getChildren(true, true, false).forEach(function(t) {
return t.vars.immediateRender && t.render(0, true, true);
}) : animation.vars.immediateRender && animation.render(0, true, true);
}
self.isReverted || self.revert(true, true);
self._subPinOffset = false;
var size = getScrollerSize(), scrollerBounds = getScrollerOffsets(), max = containerAnimation ? containerAnimation.duration() : _maxScroll(scroller, direction), isFirstRefresh = change <= 0.01 || !change, offset2 = 0, otherPinOffset = pinOffset || 0, parsedEnd = _isObject(position) ? position.end : vars.end, parsedEndTrigger = vars.endTrigger || trigger, parsedStart = _isObject(position) ? position.start : vars.start || (vars.start === 0 || !trigger ? 0 : pin ? "0 0" : "0 100%"), pinnedContainer = self.pinnedContainer = vars.pinnedContainer && _getTarget(vars.pinnedContainer, self), triggerIndex = trigger && Math.max(0, _triggers.indexOf(self)) || 0, i = triggerIndex, cs2, bounds, scroll, isVertical, override, curTrigger, curPin, oppositeScroll, initted, revertedPins, forcedOverflow, markerStartOffset, markerEndOffset;
if (markers && _isObject(position)) {
markerStartOffset = gsap2.getProperty(markerStartTrigger, direction.p);
markerEndOffset = gsap2.getProperty(markerEndTrigger, direction.p);
}
while (i-- > 0) {
curTrigger = _triggers[i];
curTrigger.end || curTrigger.refresh(0, 1) || (_refreshing = self);
curPin = curTrigger.pin;
if (curPin && (curPin === trigger || curPin === pin || curPin === pinnedContainer) && !curTrigger.isReverted) {
revertedPins || (revertedPins = []);
revertedPins.unshift(curTrigger);
curTrigger.revert(true, true);
}
if (curTrigger !== _triggers[i]) {
triggerIndex--;
i--;
}
}
_isFunction(parsedStart) && (parsedStart = parsedStart(self));
parsedStart = _parseClamp(parsedStart, "start", self);
start = _parsePosition(parsedStart, trigger, size, direction, scrollFunc(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._startClamp && "_startClamp") || (pin ? -1e-3 : 0);
_isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));
if (_isString(parsedEnd) && !parsedEnd.indexOf("+=")) {
if (~parsedEnd.indexOf(" ")) {
parsedEnd = (_isString(parsedStart) ? parsedStart.split(" ")[0] : "") + parsedEnd;
} else {
offset2 = _offsetToPx(parsedEnd.substr(2), size);
parsedEnd = _isString(parsedStart) ? parsedStart : (containerAnimation ? gsap2.utils.mapRange(0, containerAnimation.duration(), containerAnimation.scrollTrigger.start, containerAnimation.scrollTrigger.end, start) : start) + offset2;
parsedEndTrigger = trigger;
}
}
parsedEnd = _parseClamp(parsedEnd, "end", self);
end = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? "100% 0" : max), parsedEndTrigger, size, direction, scrollFunc() + offset2, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max, containerAnimation, self._endClamp && "_endClamp")) || -1e-3;
offset2 = 0;
i = triggerIndex;
while (i--) {
curTrigger = _triggers[i] || {};
curPin = curTrigger.pin;
if (curPin && curTrigger.start - curTrigger._pinPush <= start && !containerAnimation && curTrigger.end > 0) {
cs2 = curTrigger.end - (self._startClamp ? Math.max(0, curTrigger.start) : curTrigger.start);
if ((curPin === trigger && curTrigger.start - curTrigger._pinPush < start || curPin === pinnedContainer) && isNaN(parsedStart)) {
offset2 += cs2 * (1 - curTrigger.progress);
}
curPin === pin && (otherPinOffset += cs2);
}
}
start += offset2;
end += offset2;
self._startClamp && (self._startClamp += offset2);
if (self._endClamp && !_refreshingAll) {
self._endClamp = end || -1e-3;
end = Math.min(end, _maxScroll(scroller, direction));
}
change = end - start || (start -= 0.01) && 1e-3;
if (isFirstRefresh) {
prevProgress = gsap2.utils.clamp(0, 1, gsap2.utils.normalize(start, end, prevScroll));
}
self._pinPush = otherPinOffset;
if (markerStart && offset2) {
cs2 = {};
cs2[direction.a] = "+=" + offset2;
pinnedContainer && (cs2[direction.p] = "-=" + scrollFunc());
gsap2.set([markerStart, markerEnd], cs2);
}
if (pin && !(_clampingMax && self.end >= _maxScroll(scroller, direction))) {
cs2 = _getComputedStyle(pin);
isVertical = direction === _vertical;
scroll = scrollFunc();
pinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;
if (!max && end > 1) {
forcedOverflow = (isViewport ? _doc2.scrollingElement || _docEl2 : scroller).style;
forcedOverflow = {
style: forcedOverflow,
value: forcedOverflow["overflow" + direction.a.toUpperCase()]
};
if (isViewport && _getComputedStyle(_body2)["overflow" + direction.a.toUpperCase()] !== "scroll") {
forcedOverflow.style["overflow" + direction.a.toUpperCase()] = "scroll";
}
}
_swapPinIn(pin, spacer, cs2);
pinState = _getState(pin);
bounds = _getBounds(pin, true);
oppositeScroll = useFixedPosition && _getScrollFunc(scroller, isVertical ? _horizontal : _vertical)();
if (pinSpacing) {
spacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];
spacerState.t = spacer;
i = pinSpacing === _padding ? _getSize(pin, direction) + change + otherPinOffset : 0;
if (i) {
spacerState.push(direction.d, i + _px);
spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i + _px);
}
_setState(spacerState);
if (pinnedContainer) {
_triggers.forEach(function(t) {
if (t.pin === pinnedContainer && t.vars.pinSpacing !== false) {
t._subPinOffset = true;
}
});
}
useFixedPosition && scrollFunc(prevScroll);
} else {
i = _getSize(pin, direction);
i && spacer.style.flexBasis !== "auto" && (spacer.style.flexBasis = i + _px);
}
if (useFixedPosition) {
override = {
top: bounds.top + (isVertical ? scroll - start : oppositeScroll) + _px,
left: bounds.left + (isVertical ? oppositeScroll : scroll - start) + _px,
boxSizing: "border-box",
position: "fixed"
};
override[_width] = override["max" + _Width] = Math.ceil(bounds.width) + _px;
override[_height] = override["max" + _Height] = Math.ceil(bounds.height) + _px;
override[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = "0";
override[_padding] = cs2[_padding];
override[_padding + _Top] = cs2[_padding + _Top];
override[_padding + _Right] = cs2[_padding + _Right];
override[_padding + _Bottom] = cs2[_padding + _Bottom];
override[_padding + _Left] = cs2[_padding + _Left];
pinActiveState = _copyState(pinOriginalState, override, pinReparent);
_refreshingAll && scrollFunc(0);
}
if (animation) {
initted = animation._initted;
_suppressOverwrites(1);
animation.render(animation.duration(), true, true);
pinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;
pinMoves = Math.abs(change - pinChange) > 1;
useFixedPosition && pinMoves && pinActiveState.splice(pinActiveState.length - 2, 2);
animation.render(0, true, true);
initted || animation.invalidate(true);
animation.parent || animation.totalTime(animation.totalTime());
_suppressOverwrites(0);
} else {
pinChange = change;
}
forcedOverflow && (forcedOverflow.value ? forcedOverflow.style["overflow" + direction.a.toUpperCase()] = forcedOverflow.value : forcedOverflow.style.removeProperty("overflow-" + direction.a));
} else if (trigger && scrollFunc() && !containerAnimation) {
bounds = trigger.parentNode;
while (bounds && bounds !== _body2) {
if (bounds._pinOffset) {
start -= bounds._pinOffset;
end -= bounds._pinOffset;
}
bounds = bounds.parentNode;
}
}
revertedPins && revertedPins.forEach(function(t) {
return t.revert(false, true);
});
self.start = start;
self.end = end;
scroll1 = scroll2 = _refreshingAll ? prevScroll : scrollFunc();
if (!containerAnimation && !_refreshingAll) {
scroll1 < prevScroll && scrollFunc(prevScroll);
self.scroll.rec = 0;
}
self.revert(false, true);
lastRefresh = _getTime2();
if (snapDelayedCall) {
lastSnap = -1;
snapDelayedCall.restart(true);
}
_refreshing = 0;
animation && isToggle && (animation._initted || prevAnimProgress) && animation.progress() !== prevAnimProgress && animation.progress(prevAnimProgress || 0, true).render(animation.time(), true, true);
if (isFirstRefresh || prevProgress !== self.progress || containerAnimation || invalidateOnRefresh || animation && !animation._initted) {
animation && !isToggle && (animation._initted || prevProgress || animation.vars.immediateRender !== false) && animation.totalProgress(containerAnimation && start < -1e-3 && !prevProgress ? gsap2.utils.normalize(start, end, 0) : prevProgress, true);
self.progress = isFirstRefresh || (scroll1 - start) / change === prevProgress ? 0 : prevProgress;
}
pin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));
scrubTween && scrubTween.invalidate();
if (!isNaN(markerStartOffset)) {
markerStartOffset -= gsap2.getProperty(markerStartTrigger, direction.p);
markerEndOffset -= gsap2.getProperty(markerEndTrigger, direction.p);
_shiftMarker(markerStartTrigger, direction, markerStartOffset);
_shiftMarker(markerStart, direction, markerStartOffset - (pinOffset || 0));
_shiftMarker(markerEndTrigger, direction, markerEndOffset);
_shiftMarker(markerEnd, direction, markerEndOffset - (pinOffset || 0));
}
isFirstRefresh && !_refreshingAll && self.update();
if (onRefresh && !_refreshingAll && !executingOnRefresh) {
executingOnRefresh = true;
onRefresh(self);
executingOnRefresh = false;
}
};
self.getVelocity = function() {
return (scrollFunc() - scroll2) / (_getTime2() - _time2) * 1e3 || 0;
};
self.endAnimation = function() {
_endAnimation(self.callbackAnimation);
if (animation) {
scrubTween ? scrubTween.progress(1) : !animation.paused() ? _endAnimation(animation, animation.reversed()) : isToggle || _endAnimation(animation, self.direction < 0, 1);
}
};
self.labelToScroll = function(label) {
return animation && animation.labels && (start || self.refresh() || start) + animation.labels[label] / animation.duration() * change || 0;
};
self.getTrailing = function(name) {
var i = _triggers.indexOf(self), a = self.direction > 0 ? _triggers.slice(0, i).reverse() : _triggers.slice(i + 1);
return (_isString(name) ? a.filter(function(t) {
return t.vars.preventOverlaps === name;
}) : a).filter(function(t) {
return self.direction > 0 ? t.end <= start : t.start >= end;
});
};
self.update = function(reset, recordVelocity, forceFake) {
if (containerAnimation && !forceFake && !reset) {
return;
}
var scroll = _refreshingAll === true ? prevScroll : self.scroll(), p = reset ? 0 : (scroll - start) / change, clipped = p < 0 ? 0 : p > 1 ? 1 : p || 0, prevProgress2 = self.progress, isActive, wasActive, toggleState, action, stateChanged, toggled, isAtMax, isTakingAction;
if (recordVelocity) {
scroll2 = scroll1;
scroll1 = containerAnimation ? scrollFunc() : scroll;
if (snap) {
snap2 = snap1;
snap1 = animation && !isToggle ? animation.totalProgress() : clipped;
}
}
if (anticipatePin && pin && !_refreshing && !_startup2 && _lastScrollTime) {
if (!clipped && start < scroll + (scroll - scroll2) / (_getTime2() - _time2) * anticipatePin) {
clipped = 1e-4;
} else if (clipped === 1 && end > scroll + (scroll - scroll2) / (_getTime2() - _time2) * anticipatePin) {
clipped = 0.9999;
}
}
if (clipped !== prevProgress2 && self.enabled) {
isActive = self.isActive = !!clipped && clipped < 1;
wasActive = !!prevProgress2 && prevProgress2 < 1;
toggled = isActive !== wasActive;
stateChanged = toggled || !!clipped !== !!prevProgress2;
self.direction = clipped > prevProgress2 ? 1 : -1;
self.progress = clipped;
if (stateChanged && !_refreshing) {
toggleState = clipped && !prevProgress2 ? 0 : clipped === 1 ? 1 : prevProgress2 === 1 ? 2 : 3;
if (isToggle) {
action = !toggled && toggleActions[toggleState + 1] !== "none" && toggleActions[toggleState + 1] || toggleActions[toggleState];
isTakingAction = animation && (action === "complete" || action === "reset" || action in animation);
}
}
preventOverlaps && (toggled || isTakingAction) && (isTakingAction || scrub || !animation) && (_isFunction(preventOverlaps) ? preventOverlaps(self) : self.getTrailing(preventOverlaps).forEach(function(t) {
return t.endAnimation();
}));
if (!isToggle) {
if (scrubTween && !_refreshing && !_startup2) {
scrubTween._dp._time - scrubTween._start !== scrubTween._time && scrubTween.render(scrubTween._dp._time - scrubTween._start);
if (scrubTween.resetTo) {
scrubTween.resetTo("totalProgress", clipped, animation._tTime / animation._tDur);
} else {
scrubTween.vars.totalProgress = clipped;
scrubTween.invalidate().restart();
}
} else if (animation) {
animation.totalProgress(clipped, !!(_refreshing && (lastRefresh || reset)));
}
}
if (pin) {
reset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);
if (!useFixedPosition) {
pinSetter(_round(pinStart + pinChange * clipped));
} else if (stateChanged) {
isAtMax = !reset && clipped > prevProgress2 && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction);
if (pinReparent) {
if (!reset && (isActive || isAtMax)) {
var bounds = _getBounds(pin, true), _offset = scroll - start;
_reparent(pin, _body2, bounds.top + (direction === _vertical ? _offset : 0) + _px, bounds.left + (direction === _vertical ? 0 : _offset) + _px);
} else {
_reparent(pin, spacer);
}
}
_setState(isActive || isAtMax ? pinActiveState : pinState);
pinMoves && clipped < 1 && isActive || pinSetter(pinStart + (clipped === 1 && !isAtMax ? pinChange : 0));
}
}
snap && !tweenTo.tween && !_refreshing && !_startup2 && snapDelayedCall.restart(true);
toggleClass && (toggled || once && clipped && (clipped < 1 || !_limitCallbacks)) && _toArray(toggleClass.targets).forEach(function(el) {
return el.classList[isActive || once ? "add" : "remove"](toggleClass.className);
});
onUpdate && !isToggle && !reset && onUpdate(self);
if (stateChanged && !_refreshing) {
if (isToggle) {
if (isTakingAction) {
if (action === "complete") {
animation.pause().totalProgress(1);
} else if (action === "reset") {
animation.restart(true).pause();
} else if (action === "restart") {
animation.restart(true);
} else {
animation[action]();
}
}
onUpdate && onUpdate(self);
}
if (toggled || !_limitCallbacks) {
onToggle && toggled && _callback(self, onToggle);
callbacks[toggleState] && _callback(self, callbacks[toggleState]);
once && (clipped === 1 ? self.kill(false, 1) : callbacks[toggleState] = 0);
if (!toggled) {
toggleState = clipped === 1 ? 1 : 3;
callbacks[toggleState] && _callback(self, callbacks[toggleState]);
}
}
if (fastScrollEnd && !isActive && Math.abs(self.getVelocity()) > (_isNumber(fastScrollEnd) ? fastScrollEnd : 2500)) {
_endAnimation(self.callbackAnimation);
scrubTween ? scrubTween.progress(1) : _endAnimation(animation, action === "reverse" ? 1 : !clipped, 1);
}
} else if (isToggle && onUpdate && !_refreshing) {
onUpdate(self);
}
}
if (markerEndSetter) {
var n = containerAnimation ? scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0) : scroll;
markerStartSetter(n + (markerStartTrigger._isFlipped ? 1 : 0));
markerEndSetter(n);
}
caMarkerSetter && caMarkerSetter(-scroll / containerAnimation.duration() * (containerAnimation._caScrollDist || 0));
};
self.enable = function(reset, refresh) {
if (!self.enabled) {
self.enabled = true;
_addListener3(scroller, "resize", _onResize);
isViewport || _addListener3(scroller, "scroll", _onScroll3);
onRefreshInit && _addListener3(ScrollTrigger3, "refreshInit", onRefreshInit);
if (reset !== false) {
self.progress = prevProgress = 0;
scroll1 = scroll2 = lastSnap = scrollFunc();
}
refresh !== false && self.refresh();
}
};
self.getTween = function(snap3) {
return snap3 && tweenTo ? tweenTo.tween : scrubTween;
};
self.setPositions = function(newStart, newEnd, keepClamp, pinOffset) {
if (containerAnimation) {
var st = containerAnimation.scrollTrigger, duration = containerAnimation.duration(), _change = st.end - st.start;
newStart = st.start + _change * newStart / duration;
newEnd = st.start + _change * newEnd / duration;
}
self.refresh(false, false, {
start: _keepClamp(newStart, keepClamp && !!self._startClamp),
end: _keepClamp(newEnd, keepClamp && !!self._endClamp)
}, pinOffset);
self.update();
};
self.adjustPinSpacing = function(amount) {
if (spacerState && amount) {
var i = spacerState.indexOf(direction.d) + 1;
spacerState[i] = parseFloat(spacerState[i]) + amount + _px;
spacerState[1] = parseFloat(spacerState[1]) + amount + _px;
_setState(spacerState);
}
};
self.disable = function(reset, allowAnimation) {
reset !== false && self.revert(true, true);
if (self.enabled) {
self.enabled = self.isActive = false;
allowAnimation || scrubTween && scrubTween.pause();
prevScroll = 0;
pinCache && (pinCache.uncache = 1);
onRefreshInit && _removeListener3(ScrollTrigger3, "refreshInit", onRefreshInit);
if (snapDelayedCall) {
snapDelayedCall.pause();
tweenTo.tween && tweenTo.tween.kill() && (tweenTo.tween = 0);
}
if (!isViewport) {
var i = _triggers.length;
while (i--) {
if (_triggers[i].scroller === scroller && _triggers[i] !== self) {
return;
}
}
_removeListener3(scroller, "resize", _onResize);
isViewport || _removeListener3(scroller, "scroll", _onScroll3);
}
}
};
self.kill = function(revert, allowAnimation) {
self.disable(revert, allowAnimation);
scrubTween && !allowAnimation && scrubTween.kill();
id && delete _ids[id];
var i = _triggers.indexOf(self);
i >= 0 && _triggers.splice(i, 1);
i === _i && _direction > 0 && _i--;
i = 0;
_triggers.forEach(function(t) {
return t.scroller === self.scroller && (i = 1);
});
i || _refreshingAll || (self.scroll.rec = 0);
if (animation) {
animation.scrollTrigger = null;
revert && animation.revert({
kill: false
});
allowAnimation || animation.kill();
}
markerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(function(m) {
return m.parentNode && m.parentNode.removeChild(m);
});
_primary === self && (_primary = 0);
if (pin) {
pinCache && (pinCache.uncache = 1);
i = 0;
_triggers.forEach(function(t) {
return t.pin === pin && i++;
});
i || (pinCache.spacer = 0);
}
vars.onKill && vars.onKill(self);
};
_triggers.push(self);
self.enable(false, false);
customRevertReturn && customRevertReturn(self);
if (animation && animation.add && !change) {
var updateFunc = self.update;
self.update = function() {
self.update = updateFunc;
_scrollers.cache++;
start || end || self.refresh();
};
gsap2.delayedCall(0.01, self.update);
change = 0.01;
start = end = 0;
} else {
self.refresh();
}
pin && _queueRefreshAll();
};
ScrollTrigger3.register = function register(core) {
if (!_coreInitted2) {
gsap2 = core || _getGSAP3();
_windowExists() && window.document && ScrollTrigger3.enable();
_coreInitted2 = _enabled;
}
return _coreInitted2;
};
ScrollTrigger3.defaults = function defaults(config) {
if (config) {
for (var p in config) {
_defaults[p] = config[p];
}
}
return _defaults;
};
ScrollTrigger3.disable = function disable(reset, kill) {
_enabled = 0;
_triggers.forEach(function(trigger) {
return trigger[kill ? "kill" : "disable"](reset);
});
_removeListener3(_win2, "wheel", _onScroll3);
_removeListener3(_doc2, "scroll", _onScroll3);
clearInterval(_syncInterval);
_removeListener3(_doc2, "touchcancel", _passThrough);
_removeListener3(_body2, "touchstart", _passThrough);
_multiListener(_removeListener3, _doc2, "pointerdown,touchstart,mousedown", _pointerDownHandler);
_multiListener(_removeListener3, _doc2, "pointerup,touchend,mouseup", _pointerUpHandler);
_resizeDelay.kill();
_iterateAutoRefresh(_removeListener3);
for (var i = 0; i < _scrollers.length; i += 3) {
_wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 1]);
_wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 2]);
}
};
ScrollTrigger3.enable = function enable() {
_win2 = window;
_doc2 = document;
_docEl2 = _doc2.documentElement;
_body2 = _doc2.body;
if (gsap2) {
_toArray = gsap2.utils.toArray;
_clamp2 = gsap2.utils.clamp;
_context2 = gsap2.core.context || _passThrough;
_suppressOverwrites = gsap2.core.suppressOverwrites || _passThrough;
_scrollRestoration = _win2.history.scrollRestoration || "auto";
_lastScroll = _win2.pageYOffset || 0;
gsap2.core.globals("ScrollTrigger", ScrollTrigger3);
if (_body2) {
_enabled = 1;
_div100vh = document.createElement("div");
_div100vh.style.height = "100vh";
_div100vh.style.position = "absolute";
_refresh100vh();
_rafBugFix();
Observer.register(gsap2);
ScrollTrigger3.isTouch = Observer.isTouch;
_fixIOSBug = Observer.isTouch && /(iPad|iPhone|iPod|Mac)/g.test(navigator.userAgent);
_ignoreMobileResize = Observer.isTouch === 1;
_addListener3(_win2, "wheel", _onScroll3);
_root2 = [_win2, _doc2, _docEl2, _body2];
if (gsap2.matchMedia) {
ScrollTrigger3.matchMedia = function(vars) {
var mm = gsap2.matchMedia(), p;
for (p in vars) {
mm.add(p, vars[p]);
}
return mm;
};
gsap2.addEventListener("matchMediaInit", function() {
_recordScrollPositions();
_revertAll();
});
gsap2.addEventListener("matchMediaRevert", function() {
return _revertRecorded();
});
gsap2.addEventListener("matchMedia", function() {
_refreshAll(0, 1);
_dispatch("matchMedia");
});
gsap2.matchMedia().add("(orientation: portrait)", function() {
_setBaseDimensions();
return _setBaseDimensions;
});
} else {
console.warn("Requires GSAP 3.11.0 or later");
}
_setBaseDimensions();
_addListener3(_doc2, "scroll", _onScroll3);
var bodyHasStyle = _body2.hasAttribute("style"), bodyStyle = _body2.style, border = bodyStyle.borderTopStyle, AnimationProto = gsap2.core.Animation.prototype, bounds, i;
AnimationProto.revert || Object.defineProperty(AnimationProto, "revert", {
value: function value() {
return this.time(-0.01, true);
}
});
bodyStyle.borderTopStyle = "solid";
bounds = _getBounds(_body2);
_vertical.m = Math.round(bounds.top + _vertical.sc()) || 0;
_horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;
border ? bodyStyle.borderTopStyle = border : bodyStyle.removeProperty("border-top-style");
if (!bodyHasStyle) {
_body2.setAttribute("style", "");
_body2.removeAttribute("style");
}
_syncInterval = setInterval(_sync, 250);
gsap2.delayedCall(0.5, function() {
return _startup2 = 0;
});
_addListener3(_doc2, "touchcancel", _passThrough);
_addListener3(_body2, "touchstart", _passThrough);
_multiListener(_addListener3, _doc2, "pointerdown,touchstart,mousedown", _pointerDownHandler);
_multiListener(_addListener3, _doc2, "pointerup,touchend,mouseup", _pointerUpHandler);
_transformProp = gsap2.utils.checkPrefix("transform");
_stateProps.push(_transformProp);
_coreInitted2 = _getTime2();
_resizeDelay = gsap2.delayedCall(0.2, _refreshAll).pause();
_autoRefresh = [_doc2, "visibilitychange", function() {
var w = _win2.innerWidth, h = _win2.innerHeight;
if (_doc2.hidden) {
_prevWidth = w;
_prevHeight = h;
} else if (_prevWidth !== w || _prevHeight !== h) {
_onResize();
}
}, _doc2, "DOMContentLoaded", _refreshAll, _win2, "load", _refreshAll, _win2, "resize", _onResize];
_iterateAutoRefresh(_addListener3);
_triggers.forEach(function(trigger) {
return trigger.enable(0, 1);
});
for (i = 0; i < _scrollers.length; i += 3) {
_wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 1]);
_wheelListener(_removeListener3, _scrollers[i], _scrollers[i + 2]);
}
} else if (_doc2) {
var onLoad = function onLoad2() {
ScrollTrigger3.enable();
_doc2.removeEventListener("DOMContentLoaded", onLoad2);
};
_doc2.addEventListener("DOMContentLoaded", onLoad);
}
}
};
ScrollTrigger3.config = function config(vars) {
"limitCallbacks" in vars && (_limitCallbacks = !!vars.limitCallbacks);
var ms = vars.syncInterval;
ms && clearInterval(_syncInterval) || (_syncInterval = ms) && setInterval(_sync, ms);
"ignoreMobileResize" in vars && (_ignoreMobileResize = ScrollTrigger3.isTouch === 1 && vars.ignoreMobileResize);
if ("autoRefreshEvents" in vars) {
_iterateAutoRefresh(_removeListener3) || _iterateAutoRefresh(_addListener3, vars.autoRefreshEvents || "none");
_ignoreResize = (vars.autoRefreshEvents + "").indexOf("resize") === -1;
}
};
ScrollTrigger3.scrollerProxy = function scrollerProxy(target, vars) {
var t = _getTarget(target), i = _scrollers.indexOf(t), isViewport = _isViewport3(t);
if (~i) {
_scrollers.splice(i, isViewport ? 6 : 2);
}
if (vars) {
isViewport ? _proxies.unshift(_win2, vars, _body2, vars, _docEl2, vars) : _proxies.unshift(t, vars);
}
};
ScrollTrigger3.clearMatchMedia = function clearMatchMedia(query) {
_triggers.forEach(function(t) {
return t._ctx && t._ctx.query === query && t._ctx.kill(true, true);
});
};
ScrollTrigger3.isInViewport = function isInViewport(element, ratio, horizontal) {
var bounds = (_isString(element) ? _getTarget(element) : element).getBoundingClientRect(), offset = bounds[horizontal ? _width : _height] * ratio || 0;
return horizontal ? bounds.right - offset > 0 && bounds.left + offset < _win2.innerWidth : bounds.bottom - offset > 0 && bounds.top + offset < _win2.innerHeight;
};
ScrollTrigger3.positionInViewport = function positionInViewport(element, referencePoint, horizontal) {
_isString(element) && (element = _getTarget(element));
var bounds = element.getBoundingClientRect(), size = bounds[horizontal ? _width : _height], offset = referencePoint == null ? size / 2 : referencePoint in _keywords ? _keywords[referencePoint] * size : ~referencePoint.indexOf("%") ? parseFloat(referencePoint) * size / 100 : parseFloat(referencePoint) || 0;
return horizontal ? (bounds.left + offset) / _win2.innerWidth : (bounds.top + offset) / _win2.innerHeight;
};
ScrollTrigger3.killAll = function killAll(allowListeners) {
_triggers.slice(0).forEach(function(t) {
return t.vars.id !== "ScrollSmoother" && t.kill();
});
if (allowListeners !== true) {
var listeners = _listeners.killAll || [];
_listeners = {};
listeners.forEach(function(f) {
return f();
});
}
};
return ScrollTrigger3;
})();
ScrollTrigger2.version = "3.15.0";
ScrollTrigger2.saveStyles = function(targets) {
return targets ? _toArray(targets).forEach(function(target) {
if (target && target.style) {
var i = _savedStyles.indexOf(target);
i >= 0 && _savedStyles.splice(i, 5);
_savedStyles.push(target, target.style.cssText, target.getBBox && target.getAttribute("transform"), gsap2.core.getCache(target), _context2());
}
}) : _savedStyles;
};
ScrollTrigger2.revert = function(soft, media) {
return _revertAll(!soft, media);
};
ScrollTrigger2.create = function(vars, animation) {
return new ScrollTrigger2(vars, animation);
};
ScrollTrigger2.refresh = function(safe) {
return safe ? _onResize(true) : (_coreInitted2 || ScrollTrigger2.register()) && _refreshAll(true);
};
ScrollTrigger2.update = function(force) {
return ++_scrollers.cache && _updateAll(force === true ? 2 : 0);
};
ScrollTrigger2.clearScrollMemory = _clearScrollMemory;
ScrollTrigger2.maxScroll = function(element, horizontal) {
return _maxScroll(element, horizontal ? _horizontal : _vertical);
};
ScrollTrigger2.getScrollFunc = function(element, horizontal) {
return _getScrollFunc(_getTarget(element), horizontal ? _horizontal : _vertical);
};
ScrollTrigger2.getById = function(id) {
return _ids[id];
};
ScrollTrigger2.getAll = function() {
return _triggers.filter(function(t) {
return t.vars.id !== "ScrollSmoother";
});
};
ScrollTrigger2.isScrolling = function() {
return !!_lastScrollTime;
};
ScrollTrigger2.snapDirectional = _snapDirectional;
ScrollTrigger2.addEventListener = function(type, callback) {
var a = _listeners[type] || (_listeners[type] = []);
~a.indexOf(callback) || a.push(callback);
};
ScrollTrigger2.removeEventListener = function(type, callback) {
var a = _listeners[type], i = a && a.indexOf(callback);
i >= 0 && a.splice(i, 1);
};
ScrollTrigger2.batch = function(targets, vars) {
var result = [], varsCopy = {}, interval = vars.interval || 0.016, batchMax = vars.batchMax || 1e9, proxyCallback = function proxyCallback2(type, callback) {
var elements = [], triggers = [], delay = gsap2.delayedCall(interval, function() {
callback(elements, triggers);
elements = [];
triggers = [];
}).pause();
return function(self) {
elements.length || delay.restart(true);
elements.push(self.trigger);
triggers.push(self);
batchMax <= elements.length && delay.progress(1);
};
}, p;
for (p in vars) {
varsCopy[p] = p.substr(0, 2) === "on" && _isFunction(vars[p]) && p !== "onRefreshInit" ? proxyCallback(p, vars[p]) : vars[p];
}
if (_isFunction(batchMax)) {
batchMax = batchMax();
_addListener3(ScrollTrigger2, "refresh", function() {
return batchMax = vars.batchMax();
});
}
_toArray(targets).forEach(function(target) {
var config = {};
for (p in varsCopy) {
config[p] = varsCopy[p];
}
config.trigger = target;
result.push(ScrollTrigger2.create(config));
});
return result;
};
var _clampScrollAndGetDurationMultiplier = function _clampScrollAndGetDurationMultiplier2(scrollFunc, current, end, max) {
current > max ? scrollFunc(max) : current < 0 && scrollFunc(0);
return end > max ? (max - current) / (end - current) : end < 0 ? current / (current - end) : 1;
};
var _allowNativePanning = function _allowNativePanning2(target, direction) {
if (direction === true) {
target.style.removeProperty("touch-action");
} else {
target.style.touchAction = direction === true ? "auto" : direction ? "pan-" + direction + (Observer.isTouch ? " pinch-zoom" : "") : "none";
}
target === _docEl2 && _allowNativePanning2(_body2, direction);
};
var _overflow = {
auto: 1,
scroll: 1
};
var _nestedScroll = function _nestedScroll2(_ref5) {
var event = _ref5.event, target = _ref5.target, axis = _ref5.axis;
var node = (event.changedTouches ? event.changedTouches[0] : event).target, cache = node._gsap || gsap2.core.getCache(node), time = _getTime2(), cs;
if (!cache._isScrollT || time - cache._isScrollT > 2e3) {
while (node && node !== _body2 && (node.scrollHeight <= node.clientHeight && node.scrollWidth <= node.clientWidth || !(_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]))) {
node = node.parentNode;
}
cache._isScroll = node && node !== target && !_isViewport3(node) && (_overflow[(cs = _getComputedStyle(node)).overflowY] || _overflow[cs.overflowX]);
cache._isScrollT = time;
}
if (cache._isScroll || axis === "x") {
event.stopPropagation();
event._gsapAllow = true;
}
};
var _inputObserver = function _inputObserver2(target, type, inputs, nested) {
return Observer.create({
target,
capture: true,
debounce: false,
lockAxis: true,
type,
onWheel: nested = nested && _nestedScroll,
onPress: nested,
onDrag: nested,
onScroll: nested,
onEnable: function onEnable() {
return inputs && _addListener3(_doc2, Observer.eventTypes[0], _captureInputs, false, true);
},
onDisable: function onDisable() {
return _removeListener3(_doc2, Observer.eventTypes[0], _captureInputs, true);
}
});
};
var _inputExp = /(input|label|select|textarea)/i;
var _inputIsFocused;
var _captureInputs = function _captureInputs2(e) {
var isInput = _inputExp.test(e.target.tagName);
if (isInput || _inputIsFocused) {
e._gsapAllow = true;
_inputIsFocused = isInput;
}
};
var _getScrollNormalizer = function _getScrollNormalizer2(vars) {
_isObject(vars) || (vars = {});
vars.preventDefault = vars.isNormalizer = vars.allowClicks = true;
vars.type || (vars.type = "wheel,touch");
vars.debounce = !!vars.debounce;
vars.id = vars.id || "normalizer";
var _vars2 = vars, normalizeScrollX = _vars2.normalizeScrollX, momentum = _vars2.momentum, allowNestedScroll = _vars2.allowNestedScroll, onRelease = _vars2.onRelease, self, maxY, target = _getTarget(vars.target) || _docEl2, smoother = gsap2.core.globals().ScrollSmoother, smootherInstance = smoother && smoother.get(), content = _fixIOSBug && (vars.content && _getTarget(vars.content) || smootherInstance && vars.content !== false && !smootherInstance.smooth() && smootherInstance.content()), scrollFuncY = _getScrollFunc(target, _vertical), scrollFuncX = _getScrollFunc(target, _horizontal), scale = 1, initialScale = (Observer.isTouch && _win2.visualViewport ? _win2.visualViewport.scale * _win2.visualViewport.width : _win2.outerWidth) / _win2.innerWidth, wheelRefresh = 0, resolveMomentumDuration = _isFunction(momentum) ? function() {
return momentum(self);
} : function() {
return momentum || 2.8;
}, lastRefreshID, skipTouchMove, inputObserver = _inputObserver(target, vars.type, true, allowNestedScroll), resumeTouchMove = function resumeTouchMove2() {
return skipTouchMove = false;
}, scrollClampX = _passThrough, scrollClampY = _passThrough, updateClamps = function updateClamps2() {
maxY = _maxScroll(target, _vertical);
scrollClampY = _clamp2(_fixIOSBug ? 1 : 0, maxY);
normalizeScrollX && (scrollClampX = _clamp2(0, _maxScroll(target, _horizontal)));
lastRefreshID = _refreshID;
}, removeContentOffset = function removeContentOffset2() {
content._gsap.y = _round(parseFloat(content._gsap.y) + scrollFuncY.offset) + "px";
content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + parseFloat(content._gsap.y) + ", 0, 1)";
scrollFuncY.offset = scrollFuncY.cacheID = 0;
}, ignoreDrag = function ignoreDrag2() {
if (skipTouchMove) {
requestAnimationFrame(resumeTouchMove);
var offset = _round(self.deltaY / 2), scroll = scrollClampY(scrollFuncY.v - offset);
if (content && scroll !== scrollFuncY.v + scrollFuncY.offset) {
scrollFuncY.offset = scroll - scrollFuncY.v;
var y = _round((parseFloat(content && content._gsap.y) || 0) - scrollFuncY.offset);
content.style.transform = "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, " + y + ", 0, 1)";
content._gsap.y = y + "px";
scrollFuncY.cacheID = _scrollers.cache;
_updateAll();
}
return true;
}
scrollFuncY.offset && removeContentOffset();
skipTouchMove = true;
}, tween, startScrollX, startScrollY, onStopDelayedCall, onResize = function onResize2() {
updateClamps();
if (tween.isActive() && tween.vars.scrollY > maxY) {
scrollFuncY() > maxY ? tween.progress(1) && scrollFuncY(maxY) : tween.resetTo("scrollY", maxY);
}
};
content && gsap2.set(content, {
y: "+=0"
});
vars.ignoreCheck = function(e) {
return _fixIOSBug && e.type === "touchmove" && ignoreDrag(e) || scale > 1.05 && e.type !== "touchstart" || self.isGesturing || e.touches && e.touches.length > 1;
};
vars.onPress = function() {
skipTouchMove = false;
var prevScale = scale;
scale = _round((_win2.visualViewport && _win2.visualViewport.scale || 1) / initialScale);
tween.pause();
prevScale !== scale && _allowNativePanning(target, scale > 1.01 ? true : normalizeScrollX ? false : "x");
startScrollX = scrollFuncX();
startScrollY = scrollFuncY();
updateClamps();
lastRefreshID = _refreshID;
};
vars.onRelease = vars.onGestureStart = function(self2, wasDragging) {
scrollFuncY.offset && removeContentOffset();
if (!wasDragging) {
onStopDelayedCall.restart(true);
} else {
_scrollers.cache++;
var dur = resolveMomentumDuration(), currentScroll, endScroll;
if (normalizeScrollX) {
currentScroll = scrollFuncX();
endScroll = currentScroll + dur * 0.05 * -self2.velocityX / 0.227;
dur *= _clampScrollAndGetDurationMultiplier(scrollFuncX, currentScroll, endScroll, _maxScroll(target, _horizontal));
tween.vars.scrollX = scrollClampX(endScroll);
}
currentScroll = scrollFuncY();
endScroll = currentScroll + dur * 0.05 * -self2.velocityY / 0.227;
dur *= _clampScrollAndGetDurationMultiplier(scrollFuncY, currentScroll, endScroll, _maxScroll(target, _vertical));
tween.vars.scrollY = scrollClampY(endScroll);
tween.invalidate().duration(dur).play(0.01);
if (_fixIOSBug && tween.vars.scrollY >= maxY || currentScroll >= maxY - 1) {
gsap2.to({}, {
onUpdate: onResize,
duration: dur
});
}
}
onRelease && onRelease(self2);
};
vars.onWheel = function() {
tween._ts && tween.pause();
if (_getTime2() - wheelRefresh > 1e3) {
lastRefreshID = 0;
wheelRefresh = _getTime2();
}
};
vars.onChange = function(self2, dx, dy, xArray, yArray) {
_refreshID !== lastRefreshID && updateClamps();
dx && normalizeScrollX && scrollFuncX(scrollClampX(xArray[2] === dx ? startScrollX + (self2.startX - self2.x) : scrollFuncX() + dx - xArray[1]));
if (dy) {
scrollFuncY.offset && removeContentOffset();
var isTouch = yArray[2] === dy, y = isTouch ? startScrollY + self2.startY - self2.y : scrollFuncY() + dy - yArray[1], yClamped = scrollClampY(y);
isTouch && y !== yClamped && (startScrollY += yClamped - y);
scrollFuncY(yClamped);
}
(dy || dx) && _updateAll();
};
vars.onEnable = function() {
_allowNativePanning(target, normalizeScrollX ? false : "x");
ScrollTrigger2.addEventListener("refresh", onResize);
_addListener3(_win2, "resize", onResize);
if (scrollFuncY.smooth) {
scrollFuncY.target.style.scrollBehavior = "auto";
scrollFuncY.smooth = scrollFuncX.smooth = false;
}
inputObserver.enable();
};
vars.onDisable = function() {
_allowNativePanning(target, true);
_removeListener3(_win2, "resize", onResize);
ScrollTrigger2.removeEventListener("refresh", onResize);
inputObserver.kill();
};
vars.lockAxis = vars.lockAxis !== false;
self = new Observer(vars);
self.iOS = _fixIOSBug;
_fixIOSBug && !scrollFuncY() && scrollFuncY(1);
_fixIOSBug && gsap2.ticker.add(_passThrough);
onStopDelayedCall = self._dc;
tween = gsap2.to(self, {
ease: "power4",
paused: true,
inherit: false,
scrollX: normalizeScrollX ? "+=0.1" : "+=0",
scrollY: "+=0.1",
modifiers: {
scrollY: _interruptionTracker(scrollFuncY, scrollFuncY(), function() {
return tween.pause();
})
},
onUpdate: _updateAll,
onComplete: onStopDelayedCall.vars.onComplete
});
return self;
};
ScrollTrigger2.sort = function(func) {
if (_isFunction(func)) {
return _triggers.sort(func);
}
var scroll = _win2.pageYOffset || 0;
ScrollTrigger2.getAll().forEach(function(t) {
return t._sortY = t.trigger ? scroll + t.trigger.getBoundingClientRect().top : t.start + _win2.innerHeight;
});
return _triggers.sort(func || function(a, b) {
return (a.vars.refreshPriority || 0) * -1e6 + (a.vars.containerAnimation ? 1e6 : a._sortY) - ((b.vars.containerAnimation ? 1e6 : b._sortY) + (b.vars.refreshPriority || 0) * -1e6);
});
};
ScrollTrigger2.observe = function(vars) {
return new Observer(vars);
};
ScrollTrigger2.normalizeScroll = function(vars) {
if (typeof vars === "undefined") {
return _normalizer2;
}
if (vars === true && _normalizer2) {
return _normalizer2.enable();
}
if (vars === false) {
_normalizer2 && _normalizer2.kill();
_normalizer2 = vars;
return;
}
var normalizer = vars instanceof Observer ? vars : _getScrollNormalizer(vars);
_normalizer2 && _normalizer2.target === normalizer.target && _normalizer2.kill();
_isViewport3(normalizer.target) && (_normalizer2 = normalizer);
return normalizer;
};
ScrollTrigger2.core = {
// smaller file size way to leverage in ScrollSmoother and Observer
_getVelocityProp,
_inputObserver,
_scrollers,
_proxies,
bridge: {
// when normalizeScroll sets the scroll position (ss = setScroll)
ss: function ss() {
_lastScrollTime || _dispatch("scrollStart");
_lastScrollTime = _getTime2();
},
// a way to get the _refreshing value in Observer
ref: function ref() {
return _refreshing;
}
}
};
_getGSAP3() && gsap2.registerPlugin(ScrollTrigger2);
export {
ScrollTrigger2 as ScrollTrigger,
ScrollTrigger2 as default
};
//# sourceMappingURL=gsap_ScrollTrigger.js.map