File: //home/madepabj/public_html/wp-content/themes/rehub-theme/js/ScrollTrigger.min.js.map
{"version":3,"file":"ScrollTrigger.min.js","sources":["../src/ScrollTrigger.js"],"sourcesContent":["/*!\n * ScrollTrigger 3.4.2\n * https://greensock.com\n *\n * @license Copyright 2008-2020, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, [email protected]\n*/\n/* eslint-disable */\n\nlet gsap, _coreInitted, _win, _doc, _docEl, _body, _root, _resizeDelay, _raf, _request, _toArray, _clamp, _time2, _syncInterval, _refreshing, _pointerIsDown, _transformProp, _i, _prevWidth, _prevHeight, _autoRefresh, _sort,\n\t_limitCallbacks, // if true, we'll only trigger callbacks if the active state toggles, so if you scroll immediately past both the start and end positions of a ScrollTrigger (thus inactive to inactive), neither its onEnter nor onLeave will be called. This is useful during startup.\n\t_startup = 1,\n\t_proxies = [],\n\t_scrollers = [],\n\t_getTime = Date.now,\n\t_time1 = _getTime(),\n\t_lastScrollTime = 0,\n\t_enabled = 1,\n\t_passThrough = v => v,\n\t_windowExists = () => typeof(window) !== \"undefined\",\n\t_getGSAP = () => gsap || (_windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap),\n\t_isViewport = e => !!~_root.indexOf(e),\n\t_getProxyProp = (element, property) => ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property],\n\t_getScrollFunc = (element, {s, sc}) => {\n\t\tlet i = _scrollers.indexOf(element),\n\t\t\tfunc = ~i ? _scrollers[i+1] : _getProxyProp(element, s) || (_isViewport(element) ? sc : function(value) { return arguments.length ? (element[s] = value) : element[s]; });\n\t\t!~i && _scrollers.push(element, func);\n\t\treturn func;\n\t},\n\t_getBoundsFunc = element => _getProxyProp(element, \"getBoundingClientRect\") || (_isViewport(element) ? () => {_winOffsets.width = _win.innerWidth; _winOffsets.height = _win.innerHeight; return _winOffsets;} : () => _getBounds(element)),\n\t_getSizeFunc = (scroller, isViewport, {d, d2, a}) => (a = _getProxyProp(scroller, \"getBoundingClientRect\")) ? () => a()[d] : () => (isViewport ? _win[\"inner\" + d2] : scroller[\"client\" + d2]) || 0,\n\t_getOffsetsFunc = (element, isViewport) => !isViewport || ~_proxies.indexOf(element) ? _getBoundsFunc(element) : () => _winOffsets,\n\t_maxScroll = (element, {s, d2, d, a}) => (s = \"scroll\" + d2) && (a = _getProxyProp(element, s)) ? a() - _getBoundsFunc(element)()[d] : _isViewport(element) ? Math.max(_docEl[s], _body[s]) - (_win[\"inner\" + d2] || _docEl[\"client\" + d2] || _body[\"client\" + d2]) : element[s] - element[\"offset\" + d2],\n\t_iterateAutoRefresh = (func, events) => {\n\t\tfor (let i = 0; i < _autoRefresh.length; i += 3) {\n\t\t\t(!events || ~events.indexOf(_autoRefresh[i+1])) && func(_autoRefresh[i], _autoRefresh[i+1], _autoRefresh[i+2]);\n\t\t}\n\t},\n\t_isString = value => typeof(value) === \"string\",\n\t_isFunction = value => typeof(value) === \"function\",\n\t_isNumber = value => typeof(value) === \"number\",\n\t_isObject = value => typeof(value) === \"object\",\n\t_callIfFunc = value => _isFunction(value) && value(),\n\t_combineFunc = (f1, f2) => () => {\n\t\tlet result1 = _callIfFunc(f1),\n\t\t\tresult2 = _callIfFunc(f2);\n\t\treturn () => {\n\t\t\t_callIfFunc(result1);\n\t\t\t_callIfFunc(result2);\n\t\t}\n\t},\n\t_abs = Math.abs,\n\t_scrollLeft = \"scrollLeft\",\n\t_scrollTop = \"scrollTop\",\n\t_left = \"left\",\n\t_top = \"top\",\n\t_right = \"right\",\n\t_bottom = \"bottom\",\n\t_width = \"width\",\n\t_height = \"height\",\n\t_Right = \"Right\",\n\t_Left = \"Left\",\n\t_Top = \"Top\",\n\t_Bottom = \"Bottom\",\n\t_padding = \"padding\",\n\t_margin = \"margin\",\n\t_Width = \"Width\",\n\t_Height = \"Height\",\n\t_px = \"px\",\n\t_horizontal = {s: _scrollLeft, p: _left, p2: _Left, os: _right, os2: _Right, d: _width, d2: _Width, a: \"x\", sc: function(value) { return arguments.length ? _win.scrollTo(value, _vertical.sc()) : _win.pageXOffset || _doc[_scrollLeft] || _docEl[_scrollLeft] || _body[_scrollLeft] || 0}},\n\t_vertical = {s: _scrollTop, p: _top, p2: _Top, os: _bottom, os2: _Bottom, d: _height, d2: _Height, a: \"y\", op: _horizontal, sc: function(value) { return arguments.length ? _win.scrollTo(_horizontal.sc(), value) : _win.pageYOffset || _doc[_scrollTop] || _docEl[_scrollTop] || _body[_scrollTop] || 0}},\n\t_getComputedStyle = element => _win.getComputedStyle(element),\n\t_makePositionable = element => element.style.position = (_getComputedStyle(element).position === \"absolute\") ? \"absolute\" : \"relative\", // if the element already has position: absolute, leave that, otherwise make it position: relative\n\t_setDefaults = (obj, defaults) => {\n\t\tfor (let p in defaults) {\n\t\t\t(p in obj) || (obj[p] = defaults[p]);\n\t\t}\n\t\treturn obj;\n\t},\n\t//_isInViewport = element => (element = _getBounds(element)) && !(element.top > (_win.innerHeight || _docEl.clientHeight) || element.bottom < 0 || element.left > (_win.innerWidth || _docEl.clientWidth) || element.right < 0) && element,\n\t_getBounds = (element, withoutTransforms) => {\n\t\tlet tween = withoutTransforms && _getComputedStyle(element)[_transformProp] !== \"matrix(1, 0, 0, 1, 0, 0)\" && gsap.to(element, {x: 0, y: 0, xPercent: 0, yPercent: 0, rotation: 0, rotationX: 0, rotationY: 0, scale: 1, skewX: 0, skewY: 0}).progress(1),\n\t\t\tbounds = element.getBoundingClientRect();\n\t\ttween && tween.progress(0).kill();\n\t\treturn bounds;\n\t},\n\t_getSize = (element, {d2}) => element[\"offset\" + d2] || element[\"client\" + d2] || 0,\n\t_getLabels = animation => {\n\t\treturn value => {\n\t\t\tlet a = [],\n\t\t\t\tlabels = animation.labels,\n\t\t\t\tduration = animation.duration(),\n\t\t\t\tp;\n\t\t\tfor (p in labels) {\n\t\t\t\ta.push(labels[p] / duration);\n\t\t\t}\n\t\t\treturn gsap.utils.snap(a, value);\n\t\t};\n\t},\n\t_multiListener = (func, element, types, callback) => types.split(\",\").forEach(type => func(element, type, callback)),\n\t_addListener = (element, type, func) => element.addEventListener(type, func, {passive: true}),\n\t_removeListener = (element, type, func) => element.removeEventListener(type, func),\n\t_markerDefaults = {startColor: \"green\", endColor: \"red\", indent: 0, fontSize: \"16px\", fontWeight:\"normal\"},\n\t_defaults = {toggleActions: \"play\", anticipatePin: 0},\n\t_keywords = {top: 0, left: 0, center: 0.5, bottom: 1, right: 1},\n\t_offsetToPx = (value, size) => {\n\t\tif (_isString(value)) {\n\t\t\tlet eqIndex = value.indexOf(\"=\"),\n\t\t\t\trelative = ~eqIndex ? +(value.charAt(eqIndex-1) + 1) * parseFloat(value.substr(eqIndex + 1)) : 0;\n\t\t\tif (relative) {\n\t\t\t\t(value.indexOf(\"%\") > eqIndex) && (relative *= size / 100);\n\t\t\t\tvalue = value.substr(0, eqIndex-1);\n\t\t\t}\n\t\t\tvalue = relative + ((value in _keywords) ? _keywords[value] * size : ~value.indexOf(\"%\") ? parseFloat(value) * size / 100 : parseFloat(value) || 0);\n\t\t}\n\t\treturn value;\n\t},\n\t_createMarker = (type, name, container, direction, {startColor, endColor, fontSize, indent, fontWeight}, offset, matchWidthEl) => {\n\t\tlet e = _doc.createElement(\"div\"),\n\t\t\tuseFixedPosition = _isViewport(container) || _getProxyProp(container, \"pinType\") === \"fixed\",\n\t\t\tisScroller = type.indexOf(\"scroller\") !== -1,\n\t\t\tparent = useFixedPosition ? _body : container,\n\t\t\tisStart = type.indexOf(\"start\") !== -1,\n\t\t\tcolor = isStart ? startColor : endColor,\n\t\t\tcss = \"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;\";\n\t\tcss += \"position:\" + (isScroller && useFixedPosition ? \"fixed;\" : \"absolute;\");\n\t\t(isScroller || !useFixedPosition) && (css += (direction === _vertical ? _right : _bottom) + \":\" + (offset + parseFloat(indent)) + \"px;\");\n\t\tmatchWidthEl && (css += \"box-sizing:border-box;text-align:left;width:\" + matchWidthEl.offsetWidth + \"px;\");\n\t\te._isStart = isStart;\n\t\te.setAttribute(\"class\", \"gsap-marker-\" + type);\n\t\te.style.cssText = css;\n\t\te.innerText = name || name === 0 ? type + \"-\" + name : type;\n\t\tparent.insertBefore(e, parent.children[0]);\n\t\te._offset = e[\"offset\" + direction.op.d2];\n\t\t_positionMarker(e, 0, direction, isStart);\n\t\treturn e;\n\t},\n\t_positionMarker = (marker, start, direction, flipped) => {\n\t\tlet vars = {display: \"block\"},\n\t\t\tside = direction[flipped ? \"os2\" : \"p2\"],\n\t\t\toppositeSide = direction[flipped ? \"p2\" : \"os2\"];\n\t\tmarker._isFlipped = flipped;\n\t\tvars[direction.a + \"Percent\"] = flipped ? -100 : 0;\n\t\tvars[direction.a] = flipped ? 1 : 0;\n\t\tvars[\"border\" + side + _Width] = 1;\n\t\tvars[\"border\" + oppositeSide + _Width] = 0;\n\t\tvars[direction.p] = start;\n\t\tgsap.set(marker, vars);\n\t},\n\t_triggers = [],\n\t_ids = {},\n\t_sync = () => _request || (_request = _raf(_updateAll)),\n\t_onScroll = () => {\n\t\tif (!_request) {\n\t\t\t_request = _raf(_updateAll);\n\t\t\t_lastScrollTime || _dispatch(\"scrollStart\");\n\t\t\t_lastScrollTime = _getTime();\n\t\t}\n\t},\n\t_onResize = () => !_refreshing && _resizeDelay.restart(true), // ignore resizes triggered by refresh()\n\t_listeners = {},\n\t_emptyArray = [],\n\t_media = [],\n\t_creatingMedia, // when ScrollTrigger.matchMedia() is called, we record the current media key here (like \"(min-width: 800px)\") so that we can assign it to everything that's created during that call. Then we can revert just those when necessary. In the ScrollTrigger's init() call, the _creatingMedia is recorded as a \"media\" property on the instance.\n\t_lastMediaTick,\n\t_onMediaChange = e => {\n\t\tlet tick = gsap.ticker.frame,\n\t\t\tmatches = [],\n\t\t\ti = 0;\n\t\tif (_lastMediaTick !== tick || _startup) {\n\t\t\t_revertAll();\n\t\t\tfor (; i < _media.length; i+=3) {\n\t\t\t\t_win.matchMedia(_media[i]).matches ? matches.push(i) : _revertAll(1, _media[i]) || (_isFunction(_media[i+2]) && _media[i+2]()); // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\t\t\t}\n\t\t\t_revertRecorded(); // in case killing/reverting any of the animations actually added inline styles back.\n\t\t\tfor (i = 0; i < matches.length; i++) {\n\t\t\t\t_creatingMedia = _media[matches[i]];\n\t\t\t\t_media[matches[i]+2] = _media[matches[i]+1](e);\n\t\t\t}\n\t\t\t_creatingMedia = 0;\n\t\t\t_refreshAll(0, 1);\n\t\t\t_lastMediaTick = tick;\n\t\t}\n\t},\n\t_softRefresh = () => _removeListener(ScrollTrigger, \"scrollEnd\", _softRefresh) || _refreshAll(true),\n\t_dispatch = type => (_listeners[type] && _listeners[type].map(f => f())) || _emptyArray,\n\t_savedStyles = [], // when ScrollTrigger.saveStyles() is called, the inline styles are recorded in this Array in a sequential format like [element, cssText, gsCache, media]. This keeps it very memory-efficient and fast to iterate through.\n\t_revertRecorded = media => {\n\t\tfor (let i = 0; i < _savedStyles.length; i+=4) {\n\t\t\tif (!media || _savedStyles[i+3] === media) {\n\t\t\t\t_savedStyles[i].style.cssText = _savedStyles[i+1];\n\t\t\t\t_savedStyles[i+2].uncache = 1;\n\t\t\t}\n\t\t}\n\t},\n\t_revertAll = (kill, media) => {\n\t\tlet trigger;\n\t\tfor (_i = 0; _i < _triggers.length; _i++) {\n\t\t\ttrigger = _triggers[_i];\n\t\t\tif (!media || trigger.media === media) {\n\t\t\t\tif (kill) {\n\t\t\t\t\ttrigger.kill(1);\n\t\t\t\t} else {\n\t\t\t\t\ttrigger.scroll.rec || (trigger.scroll.rec = trigger.scroll()); // record the scroll positions so that in each refresh() we can ensure that it doesn't shift. Remember, pinning can make things change around, especially if the same element is pinned multiple times. If one was already recorded, don't re-record because unpinning may have occurred and made it shorter.\n\t\t\t\t\ttrigger.revert();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_revertRecorded(media);\n\t\tmedia || _dispatch(\"revert\");\n\t},\n\t_refreshAll = (force, skipRevert) => {\n\t\tif (_lastScrollTime && !force) {\n\t\t\t_addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\t\t\treturn;\n\t\t}\n\t\tlet refreshInits = _dispatch(\"refreshInit\");\n\t\t_sort && ScrollTrigger.sort();\n\t\tskipRevert || _revertAll();\n\t\tfor (_i = 0; _i < _triggers.length; _i++) {\n\t\t\t_triggers[_i].refresh();\n\t\t}\n\t\trefreshInits.forEach(result => result && result.render && result.render(-1)); // if the onRefreshInit() returns an animation (typically a gsap.set()), revert it. This makes it easy to put things in a certain spot before refreshing for measurement purposes, and then put things back.\n\t\t_i = _triggers.length;\n\t\twhile (_i--) {\n\t\t\t_triggers[_i].scroll.rec = 0;\n\t\t}\n\t\t_dispatch(\"refresh\");\n\t},\n\t_lastScroll = 0,\n\t_direction = 1,\n\t_updateAll = () => {\n\t\tlet l = _triggers.length,\n\t\t\ttime = _getTime(),\n\t\t\trecordVelocity = time - _time1 >= 50,\n\t\t\tscroll = l && _triggers[0].scroll();\n\t\t_direction = _lastScroll > scroll ? -1 : 1;\n\t\t_lastScroll = scroll;\n\t\tif (recordVelocity) {\n\t\t\tif (_lastScrollTime && !_pointerIsDown && time - _lastScrollTime > 200) {\n\t\t\t\t_lastScrollTime = 0;\n\t\t\t\t_dispatch(\"scrollEnd\");\n\t\t\t}\n\t\t\t_time2 = _time1;\n\t\t\t_time1 = time;\n\t\t}\n\t\tif (_direction < 0) {\n\t\t\t_i = l;\n\t\t\twhile (_i--) {\n\t\t\t\t_triggers[_i].update(0, recordVelocity);\n\t\t\t}\n\t\t\t_direction = 1;\n\t\t} else {\n\t\t\tfor (_i = 0; _i < l; _i++) {\n\t\t\t\t_triggers[_i] && _triggers[_i].update(0, recordVelocity);\n\t\t\t}\n\t\t}\n\t\t_request = 0;\n\t},\n\t_propNamesToCopy = [_left, _top, _bottom, _right, _margin + _Bottom, _margin + _Right, _margin + _Top, _margin + _Left, \"display\", \"flexShrink\", \"float\"],\n\t_stateProps = _propNamesToCopy.concat([_width, _height, \"boxSizing\", \"max\" + _Width, \"max\" + _Height, \"position\", _margin, _padding, _padding + _Top, _padding + _Right, _padding + _Bottom, _padding + _Left]),\n\t_swapPinOut = (pin, spacer, state) => {\n\t\t_setState(state);\n\t\tif (pin.parentNode === spacer) {\n\t\t\tlet parent = spacer.parentNode;\n\t\t\tif (parent) {\n\t\t\t\tparent.insertBefore(pin, spacer);\n\t\t\t\tparent.removeChild(spacer);\n\t\t\t}\n\t\t}\n\t},\n\t_swapPinIn = (pin, spacer, cs, spacerState) => {\n\t\tif (pin.parentNode !== spacer) {\n\t\t\tlet i = _propNamesToCopy.length,\n\t\t\t\tspacerStyle = spacer.style,\n\t\t\t\tpinStyle = pin.style,\n\t\t\t\tp;\n\t\t\twhile (i--) {\n\t\t\t\tp = _propNamesToCopy[i];\n\t\t\t\tspacerStyle[p] = cs[p];\n\t\t\t}\n\t\t\tspacerStyle.position = cs.position === \"absolute\" ? \"absolute\" : \"relative\";\n\t\t\t(cs.display === \"inline\") && (spacerStyle.display = \"inline-block\");\n\t\t\tpinStyle[_bottom] = pinStyle[_right] = \"auto\";\n\t\t\tspacerStyle.overflow = \"visible\";\n\t\t\tspacerStyle.boxSizing = \"border-box\";\n\t\t\tspacerStyle[_width] = _getSize(pin, _horizontal) + _px;\n\t\t\tspacerStyle[_height] = _getSize(pin, _vertical) + _px;\n\t\t\tspacerStyle[_padding] = pinStyle[_margin] = pinStyle[_top] = pinStyle[_left] = \"0\";\n\t\t\t_setState(spacerState);\n\t\t\tpinStyle[_width] = cs[_width];\n\t\t\tpinStyle[_height] = cs[_height];\n\t\t\tpinStyle[_padding] = cs[_padding];\n\t\t\tpin.parentNode.insertBefore(spacer, pin);\n\t\t\tspacer.appendChild(pin);\n\t\t}\n\t},\n\t_capsExp = /([A-Z])/g,\n\t_setState = state => {\n\t\tif (state) {\n\t\t\tlet style = state.t.style,\n\t\t\t\tl = state.length,\n\t\t\t\ti = 0,\n\t\t\t\tp, value;\n\t\t\tfor (; i < l; i +=2) {\n\t\t\t\tvalue = state[i+1];\n\t\t\t\tp = state[i];\n\t\t\t\tif (value) {\n\t\t\t\t\tstyle[p] = value;\n\t\t\t\t} else if (style[p]) {\n\t\t\t\t\tstyle.removeProperty(p.replace(_capsExp, \"-$1\").toLowerCase());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t_getState = element => { // returns an array with alternating values like [property, value, property, value] and a \"t\" property pointing to the target (element). Makes it fast and cheap.\n\t\tlet l = _stateProps.length,\n\t\t\tstyle = element.style,\n\t\t\tstate = [],\n\t\t\ti = 0;\n\t\tfor (; i < l; i++) {\n\t\t\tstate.push(_stateProps[i], style[_stateProps[i]]);\n\t\t}\n\t\tstate.t = element;\n\t\treturn state;\n\t},\n\t_copyState = (state, override, omitOffsets) => {\n\t\tlet result = [],\n\t\t\tl = state.length,\n\t\t\ti = omitOffsets ? 8 : 0, // skip top, left, right, bottom if omitOffsets is true\n\t\t\tp;\n\t\tfor (; i < l; i += 2) {\n\t\t\tp = state[i];\n\t\t\tresult.push(p, (p in override) ? override[p] : state[i+1]);\n\t\t}\n\t\tresult.t = state.t;\n\t\treturn result;\n\t},\n\t_winOffsets = {left:0, top:0},\n\t_parsePosition = (value, trigger, scrollerSize, direction, scroll, marker, markerScroller, self, scrollerBounds, borderWidth, useFixedPosition, scrollerMax) => {\n\t\t_isFunction(value) && (value = value(self));\n\t\tif (_isString(value) && value.substr(0,3) === \"max\") {\n\t\t\tvalue = scrollerMax + (value.charAt(4) === \"=\" ? _offsetToPx(\"0\" + value.substr(3), scrollerSize) : 0);\n\t\t}\n\t\tif (!_isNumber(value)) {\n\t\t\t_isFunction(trigger) && (trigger = trigger(self));\n\t\t\tlet element = _toArray(trigger)[0] || _body,\n\t\t\t\tbounds = _getBounds(element) || {},\n\t\t\t\toffsets = value.split(\" \"),\n\t\t\t\tlocalOffset, globalOffset, display;\n\t\t\tif ((!bounds || (!bounds.left && !bounds.top)) && _getComputedStyle(element).display === \"none\") { // if display is \"none\", it won't report getBoundingClientRect() properly\n\t\t\t\tdisplay = element.style.display;\n\t\t\t\telement.style.display = \"block\";\n\t\t\t\tbounds = _getBounds(element);\n\t\t\t\tdisplay ? (element.style.display = display) : element.style.removeProperty(\"display\");\n\t\t\t}\n\t\t\tlocalOffset = _offsetToPx(offsets[0], bounds[direction.d]);\n\t\t\tglobalOffset = _offsetToPx(offsets[1] || \"0\", scrollerSize);\n\t\t\tvalue = bounds[direction.p] - scrollerBounds[direction.p] - borderWidth + localOffset + scroll - globalOffset;\n\t\t\tmarkerScroller && _positionMarker(markerScroller, globalOffset, direction, (scrollerSize - globalOffset < 20 || (markerScroller._isStart && globalOffset > 20)));\n\t\t\tscrollerSize -= scrollerSize - globalOffset; // adjust for the marker\n\t\t} else if (markerScroller) {\n\t\t\t_positionMarker(markerScroller, scrollerSize, direction, true);\n\t\t}\n\t\tif (marker) {\n\t\t\tlet position = value + scrollerSize,\n\t\t\t\tisStart = marker._isStart;\n\t\t\tscrollerMax = \"scroll\" + direction.d2;\n\t\t\t_positionMarker(marker, position, direction, (isStart && position > 20) || (!isStart && (useFixedPosition ? Math.max(_body[scrollerMax], _docEl[scrollerMax]) : marker.parentNode[scrollerMax]) <= position + 1));\n\t\t\tif (useFixedPosition) {\n\t\t\t\tscrollerBounds = _getBounds(markerScroller);\n\t\t\t\tuseFixedPosition && (marker.style[direction.op.p] = (scrollerBounds[direction.op.p] - direction.op.m - marker._offset) + _px);\n\t\t\t}\n\t\t}\n\t\treturn Math.round(value);\n\t},\n\t_prefixExp = /(?:webkit|moz|length)/i,\n\t_reparent = (element, parent) => {\n\t\tif (element.parentNode !== parent) {\n\t\t\tlet style = element.style,\n\t\t\t\tp, cs;\n\t\t\tif (parent === _body) {\n\t\t\t\telement._stOrig = style.cssText; // record original inline styles so we can revert them later\n\t\t\t\tcs = _getComputedStyle(element);\n\t\t\t\tfor (p in cs) { // must copy all relevant styles to ensure that nothing changes visually when we reparent to the <body>. Skip the vendor prefixed ones.\n\t\t\t\t\tif (!+p && !_prefixExp.test(p) && cs[p] && typeof style[p] === \"string\" && p !== \"0\") {\n\t\t\t\t\t\tstyle[p] = cs[p];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstyle.cssText = element._stOrig;\n\t\t\t}\n\t\t\tparent.appendChild(element);\n\t\t}\n\t},\n\t// returns a function that can be used to tween the scroll position in the direction provided, and when doing so it'll add a .tween property to the FUNCTION itself, and remove it when the tween completes or gets killed. This gives us a way to have multiple ScrollTriggers use a central function for any given scroller and see if there's a scroll tween running (which would affect if/how things get updated)\n\t_getTweenCreator = (scroller, direction) => {\n\t\tlet getScroll = _getScrollFunc(scroller, direction),\n\t\t\tprop = \"_scroll\" + direction.p2, // add a tweenable property to the scroller that's a getter/setter function, like _scrollTop or _scrollLeft. This way, if someone does gsap.killTweensOf(scroller) it'll kill the scroll tween.\n\t\t\tlastScroll,\n\t\t\tgetTween = (scrollTo, vars, initialValue, change1, change2) => {\n\t\t\t\tlet tween = getTween.tween,\n\t\t\t\t\tonComplete = vars.onComplete,\n\t\t\t\t\tmodifiers = {};\n\t\t\t\ttween && tween.kill();\n\t\t\t\tlastScroll = getScroll();\n\t\t\t\tvars[prop] = scrollTo;\n\t\t\t\tvars.modifiers = modifiers;\n\t\t\t\tmodifiers[prop] = value => {\n\t\t\t\t\tif (Math.abs(getScroll() - lastScroll) > 7) { // if the user scrolls, kill the tween. Need a margin of error because some browsers like iOS Safari misreport the scroll position!\n\t\t\t\t\t\ttween.kill();\n\t\t\t\t\t\tgetTween.tween = 0;\n\t\t\t\t\t\tvalue = getScroll();\n\t\t\t\t\t} else if (change1) {\n\t\t\t\t\t\tvalue = initialValue + change1 * tween.ratio + change2 * tween.ratio * tween.ratio;\n\t\t\t\t\t}\n\t\t\t\t\treturn (lastScroll = Math.round(value));\n\t\t\t\t};\n\t\t\t\tvars.onComplete = () => {\n\t\t\t\t\tgetTween.tween = 0;\n\t\t\t\t\tonComplete && onComplete.call(tween);\n\t\t\t\t};\n\t\t\t\ttween = getTween.tween = gsap.to(scroller, vars);\n\t\t\t\treturn tween;\n\t\t\t};\n\t\tscroller[prop] = getScroll;\n\t\treturn getTween;\n\t};\n\n_horizontal.op = _vertical;\n\n\n\nexport class ScrollTrigger {\n\n\tconstructor(vars, animation) {\n\t\t_coreInitted || ScrollTrigger.register(gsap) || console.warn(\"Please gsap.registerPlugin(ScrollTrigger)\");\n\t\tthis.init(vars, animation);\n\t}\n\n\tinit(vars, animation) {\n\t\tthis.progress = 0;\n\t\tthis.vars && this.kill(1); // in case it's being initted again\n\t\tif (!_enabled) {\n\t\t\tthis.update = this.refresh = this.kill = _passThrough;\n\t\t\treturn;\n\t\t}\n\t\tvars = _setDefaults((_isString(vars) || _isNumber(vars) || vars.nodeType) ? {trigger: vars} : vars, _defaults);\n\t\tlet direction = vars.horizontal ? _horizontal : _vertical,\n\t\t\t{onUpdate, toggleClass, id, onToggle, onRefresh, scrub, trigger, pin, pinSpacing, invalidateOnRefresh, anticipatePin, onScrubComplete, onSnapComplete, once, snap, pinReparent} = vars,\n\t\t\tisToggle = !scrub && scrub !== 0,\n\t\t\tscroller = _toArray(vars.scroller || _win)[0],\n\t\t\tscrollerCache = gsap.core.getCache(scroller),\n\t\t\tisViewport = _isViewport(scroller),\n\t\t\tuseFixedPosition = isViewport || _getProxyProp(scroller, \"pinType\") === \"fixed\",\n\t\t\tcallbacks = [vars.onEnter, vars.onLeave, vars.onEnterBack, vars.onLeaveBack],\n\t\t\ttoggleActions = isToggle && (once ? \"play\" : vars.toggleActions).split(\" \"),\n\t\t\tmarkers = \"markers\" in vars ? vars.markers : _defaults.markers,\n\t\t\tborderWidth = isViewport ? 0 : parseFloat(_getComputedStyle(scroller)[\"border\" + direction.p2 + _Width]) || 0,\n\t\t\tself = this,\n\t\t\tonRefreshInit = vars.onRefreshInit && (() => vars.onRefreshInit(self)),\n\t\t\tgetScrollerSize = _getSizeFunc(scroller, isViewport, direction),\n\t\t\tgetScrollerOffsets = _getOffsetsFunc(scroller, isViewport),\n\t\t\ttweenTo, pinCache, snapFunc, isReverted, scroll1, scroll2, start, end, markerStart, markerEnd, markerStartTrigger, markerEndTrigger, markerVars,\n\t\t\tchange, pinOriginalState, pinActiveState, pinState, spacer, offset, pinGetter, pinSetter, pinStart, pinChange, spacingStart, spacerState, markerStartSetter,\n\t\t\tmarkerEndSetter, cs, snap1, snap2, scrubScrollTime, scrubTween, scrubSmooth, snapDurClamp, snapDelayedCall, prevProgress, prevScroll, prevAnimProgress;\n\n\t\tself.media = _creatingMedia;\n\t\tanticipatePin *= 45;\n\t\t_triggers.push(self);\n\t\tself.scroller = scroller;\n\t\tself.scroll = _getScrollFunc(scroller, direction);\n\t\tscroll1 = self.scroll();\n\t\tself.vars = vars;\n\t\tanimation = animation || vars.animation;\n\t\t(\"refreshPriority\" in vars) && (_sort = 1);\n\t\tscrollerCache.tweenScroll = scrollerCache.tweenScroll || {\n\t\t\ttop: _getTweenCreator(scroller, _vertical),\n\t\t\tleft: _getTweenCreator(scroller, _horizontal)\n\t\t};\n\t\tself.tweenTo = tweenTo = scrollerCache.tweenScroll[direction.p];\n\t\tif (animation) {\n\t\t\tanimation.vars.lazy = false;\n\t\t\tanimation._initted || (animation.vars.immediateRender !== false && vars.immediateRender !== false && animation.render(0, true, true));\n\t\t\tself.animation = animation.pause();\n\t\t\tanimation.scrollTrigger = self;\n\t\t\tscrubSmooth = _isNumber(scrub) && scrub;\n\t\t\tscrubSmooth && (scrubTween = gsap.to(animation, {ease: \"power3\", duration: scrubSmooth, onComplete: () => onScrubComplete && onScrubComplete(self)}));\n\t\t\tsnap1 = 0;\n\t\t\tid || (id = animation.vars.id);\n\t\t}\n\t\tif (snap) {\n\t\t\t_isObject(snap) || (snap = {snapTo: snap});\n\t\t\tgsap.set(isViewport ? [_body, _docEl] : scroller, {scrollBehavior: \"auto\"}); // smooth scrolling doesn't work with snap.\n\t\t\tsnapFunc = _isFunction(snap.snapTo) ? snap.snapTo : snap.snapTo === \"labels\" ? _getLabels(animation) : gsap.utils.snap(snap.snapTo);\n\t\t\tsnapDurClamp = snap.duration || {min: 0.1, max: 2};\n\t\t\tsnapDurClamp = _isObject(snapDurClamp) ? _clamp(snapDurClamp.min, snapDurClamp.max) : _clamp(snapDurClamp, snapDurClamp);\n\t\t\tsnapDelayedCall = gsap.delayedCall(snap.delay || (scrubSmooth / 2) || 0.1, () => {\n\t\t\t\tif (!_lastScrollTime || (_lastScrollTime === scrubScrollTime && !_pointerIsDown)) {\n\t\t\t\t\tlet totalProgress = animation && !isToggle ? animation.totalProgress() : self.progress,\n\t\t\t\t\t\tvelocity = ((totalProgress - snap2) / (_getTime() - _time2) * 1000) || 0,\n\t\t\t\t\t\tchange1 = _abs(velocity / 2) * velocity / 0.185,\n\t\t\t\t\t\tnaturalEnd = totalProgress + change1,\n\t\t\t\t\t\tendValue = _clamp(0, 1, snapFunc(naturalEnd, self)),\n\t\t\t\t\t\tchange2 = endValue - totalProgress - change1,\n\t\t\t\t\t\tscroll = self.scroll(),\n\t\t\t\t\t\tendScroll = Math.round(start + endValue * change),\n\t\t\t\t\t\ttween = tweenTo.tween;\n\t\t\t\t\tif (scroll <= end && scroll >= start) {\n\t\t\t\t\t\tif (tween && !tween._initted) { // there's an overlapping snap! So we must figure out which one is closer and let that tween live.\n\t\t\t\t\t\t\tif (tween.data <= Math.abs(endScroll - scroll)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttween.kill();\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttweenTo(endScroll, {\n\t\t\t\t\t\t\tduration: snapDurClamp(_abs( (Math.max(_abs(naturalEnd - totalProgress), _abs(endValue - totalProgress)) * 0.185 / velocity / 0.05) || 0)),\n\t\t\t\t\t\t\tease: snap.ease || \"power3\",\n\t\t\t\t\t\t\tdata: Math.abs(endScroll - scroll), // record the distance so that if another snap tween occurs (conflict) we can prioritize the closest snap.\n\t\t\t\t\t\t\tonComplete: () => {\n\t\t\t\t\t\t\t\tsnap1 = snap2 = animation && !isToggle ? animation.totalProgress() : self.progress;\n\t\t\t\t\t\t\t\tonSnapComplete && onSnapComplete(self);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, start + totalProgress * change, change1 * change, change2 * change);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsnapDelayedCall.restart(true);\n\t\t\t\t}\n\t\t\t}).pause();\n\t\t}\n\t\tid && (_ids[id] = self);\n\t\ttrigger = self.trigger = _toArray(trigger || pin)[0];\n\t\tpin = pin === true ? trigger : _toArray(pin)[0];\n\t\t_isString(toggleClass) && (toggleClass = {targets: trigger, className: toggleClass});\n\t\tif (pin) {\n\t\t\t(pinSpacing === false || pinSpacing === _margin) || (pinSpacing = _getComputedStyle(pin.parentNode).display === \"flex\" ? false : _padding); // if the parent is display: flex, don't apply pinSpacing by default.\n\t\t\tself.pin = pin;\n\t\t\tvars.force3D !== false && gsap.set(pin, {force3D: true});\n\t\t\tpinCache = gsap.core.getCache(pin);\n\t\t\tif (!pinCache.spacer) { // record the spacer and pinOriginalState on the cache in case someone tries pinning the same element with MULTIPLE ScrollTriggers - we don't want to have multiple spacers or record the \"original\" pin state after it has already been affected by another ScrollTrigger.\n\t\t\t\tpinCache.spacer = spacer = _doc.createElement(\"div\");\n\t\t\t\tspacer.setAttribute(\"class\", \"pin-spacer\" + (id ? \" pin-spacer-\" + id : \"\"));\n\t\t\t\tpinCache.pinState = pinOriginalState = _getState(pin);\n\t\t\t} else {\n\t\t\t\tpinOriginalState = pinCache.pinState;\n\t\t\t}\n\t\t\tself.spacer = spacer = pinCache.spacer;\n\t\t\tcs = _getComputedStyle(pin);\n\t\t\tspacingStart = cs[pinSpacing + direction.os2];\n\t\t\tpinGetter = gsap.getProperty(pin);\n\t\t\tpinSetter = gsap.quickSetter(pin, direction.a, _px);\n\t\t\tpin.firstChild && !_maxScroll(pin, direction) && (pin.style.overflow = \"hidden\"); // protects from collapsing margins!\n\t\t\t_swapPinIn(pin, spacer, cs);\n\t\t\tpinState = _getState(pin);\n\t\t}\n\t\tif (markers) {\n\t\t\tmarkerVars = _isObject(markers) ? _setDefaults(markers, _markerDefaults) : _markerDefaults;\n\t\t\tmarkerStartTrigger = _createMarker(\"scroller-start\", id, scroller, direction, markerVars, 0);\n\t\t\tmarkerEndTrigger = _createMarker(\"scroller-end\", id, scroller, direction, markerVars, 0, markerStartTrigger);\n\t\t\toffset = markerStartTrigger[\"offset\" + direction.op.d2];\n\t\t\tmarkerStart = _createMarker(\"start\", id, scroller, direction, markerVars, offset);\n\t\t\tmarkerEnd =_createMarker(\"end\", id, scroller, direction, markerVars, offset);\n\t\t\tif (!useFixedPosition) {\n\t\t\t\t_makePositionable(scroller);\n\t\t\t\tgsap.set([markerStartTrigger, markerEndTrigger], {force3D: true});\n\t\t\t\tmarkerStartSetter = gsap.quickSetter(markerStartTrigger, direction.a, _px);\n\t\t\t\tmarkerEndSetter = gsap.quickSetter(markerEndTrigger, direction.a, _px);\n\t\t\t}\n\t\t}\n\n\t\tself.revert = revert => {\n\t\t\tlet r = revert !== false || !self.enabled,\n\t\t\t\tprevRefreshing = _refreshing;\n\t\t\tif (r !== isReverted) {\n\t\t\t\tif (r) {\n\t\t\t\t\tprevScroll = Math.max(self.scroll(), self.scroll.rec || 0); // record the scroll so we can revert later (repositioning/pinning things can affect scroll position). In the static refresh() method, we first record all the scroll positions as a reference.\n\t\t\t\t\tprevProgress = self.progress;\n\t\t\t\t\tprevAnimProgress = animation && animation.progress();\n\t\t\t\t}\n\t\t\t\tmarkerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(m => m.style.display = r ? \"none\" : \"block\");\n\t\t\t\t_refreshing = 1;\n\t\t\t\tself.update(r); // make sure the pin is back in its original position so that all the measurements are correct.\n\t\t\t\t_refreshing = prevRefreshing;\n\t\t\t\tpin && (r ? _swapPinOut(pin, spacer, pinOriginalState) : _swapPinIn(pin, spacer, _getComputedStyle(pin), spacerState));\n\t\t\t\tisReverted = r;\n\t\t\t}\n\t\t}\n\n\n\t\tself.refresh = soft => {\n\t\t\tif (_refreshing || !self.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (pin && soft && _lastScrollTime) {\n\t\t\t\t_addListener(ScrollTrigger, \"scrollEnd\", _softRefresh);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_refreshing = 1;\n\t\t\tscrubTween && scrubTween.kill();\n\t\t\tinvalidateOnRefresh && animation && animation.progress(0).invalidate();\n\t\t\tisReverted || self.revert();\n\t\t\tlet size = getScrollerSize(),\n\t\t\t\tscrollerBounds = getScrollerOffsets(),\n\t\t\t\tmax = _maxScroll(scroller, direction),\n\t\t\t\toffset = 0,\n\t\t\t\totherPinOffset = 0,\n\t\t\t\tparsedEnd = vars.end,\n\t\t\t\tparsedEndTrigger = vars.endTrigger || trigger,\n\t\t\t\tparsedStart = vars.start || (pin || !trigger ? \"0 0\" : \"0 100%\"),\n\t\t\t\ttriggerIndex = (trigger && Math.max(0, _triggers.indexOf(self))) || 0,\n\t\t\t\ti = triggerIndex,\n\t\t\t\tcs, bounds, scroll, isVertical, override, curTrigger, curPin;\n\t\t\twhile (i--) { // user might try to pin the same element more than once, so we must find any prior triggers with the same pin, revert them, and determine how long they're pinning so that we can offset things appropriately. Make sure we revert from last to first so that things \"rewind\" properly.\n\t\t\t\tcurPin = _triggers[i].pin;\n\t\t\t\tcurPin && (curPin === trigger || curPin === pin) && _triggers[i].revert();\n\t\t\t}\n\t\t\tstart = _parsePosition(parsedStart, trigger, size, direction, self.scroll(), markerStart, markerStartTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max) || (pin ? -0.001 : 0);\n\t\t\t_isFunction(parsedEnd) && (parsedEnd = parsedEnd(self));\n\t\t\tif (_isString(parsedEnd) && !parsedEnd.indexOf(\"+=\")) {\n\t\t\t\tif (~parsedEnd.indexOf(\" \")) {\n\t\t\t\t\tparsedEnd = (_isString(parsedStart) ? parsedStart.split(\" \")[0] : \"\") + parsedEnd;\n\t\t\t\t} else {\n\t\t\t\t\toffset = _offsetToPx(parsedEnd.substr(2), size);\n\t\t\t\t\tparsedEnd = _isString(parsedStart) ? parsedStart : start + offset; // _parsePosition won't factor in the offset if the start is a number, so do it here.\n\t\t\t\t\tparsedEndTrigger = trigger;\n\t\t\t\t}\n\t\t\t}\n\t\t\tend = Math.max(start, _parsePosition(parsedEnd || (parsedEndTrigger ? \"100% 0\" : max), parsedEndTrigger, size, direction, self.scroll() + offset, markerEnd, markerEndTrigger, self, scrollerBounds, borderWidth, useFixedPosition, max)) || -0.001;\n\t\t\tchange = (end - start) || ((start -= 0.01) && 0.001);\n\n\t\t\toffset = 0;\n\t\t\ti = triggerIndex;\n\t\t\twhile (i--) {\n\t\t\t\tcurTrigger = _triggers[i];\n\t\t\t\tcurPin = curTrigger.pin;\n\t\t\t\tif (curPin && curTrigger.start - curTrigger._pinPush < start) {\n\t\t\t\t\tcs = curTrigger.end - curTrigger.start;\n\t\t\t\t\tcurPin === trigger && (offset += cs);\n\t\t\t\t\tcurPin === pin && (otherPinOffset += cs);\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart += offset;\n\t\t\tend += offset;\n\t\t\tself._pinPush = otherPinOffset;\n\t\t\tif (markerStart && offset) { // offset the markers if necessary\n\t\t\t\tcs = {};\n\t\t\t\tcs[direction.a] = \"+=\" + offset;\n\t\t\t\tgsap.set([markerStart, markerEnd], cs);\n\t\t\t}\n\n\t\t\tif (pin) {\n\t\t\t\tcs = _getComputedStyle(pin);\n\t\t\t\tisVertical = (direction === _vertical);\n\t\t\t\tscroll = self.scroll(); // recalculate because the triggers can affect the scroll\n\t\t\t\tpinStart = parseFloat(pinGetter(direction.a)) + otherPinOffset;\n\t\t\t\t_swapPinIn(pin, spacer, cs);\n\t\t\t\tpinState = _getState(pin);\n\t\t\t\t// transforms will interfere with the top/left/right/bottom placement, so remove them temporarily. getBoundingClientRect() factors in transforms.\n\t\t\t\tbounds = _getBounds(pin, true);\n\t\t\t\tif (pinSpacing) {\n\t\t\t\t\tspacerState = [pinSpacing + direction.os2, change + otherPinOffset + _px];\n\t\t\t\t\tspacerState.t = spacer;\n\t\t\t\t\ti = (pinSpacing === _padding) ? _getSize(pin, direction) + change + otherPinOffset : 0;\n\t\t\t\t\ti && spacerState.push(direction.d, i + _px); // for box-sizing: border-box (must include padding).\n\t\t\t\t\t_setState(spacerState);\n\t\t\t\t\tuseFixedPosition && self.scroll(prevScroll);\n\t\t\t\t}\n\t\t\t\tif (useFixedPosition) {\n\t\t\t\t\toverride = {\n\t\t\t\t\t\ttop: (bounds.top + (isVertical ? scroll - start : 0)) + _px,\n\t\t\t\t\t\tleft: (bounds.left + (isVertical ? 0 : scroll - start)) + _px,\n\t\t\t\t\t\tboxSizing: \"border-box\",\n\t\t\t\t\t\tposition: \"fixed\"\n\t\t\t\t\t};\n\t\t\t\t\toverride[_width] = override[\"max\" + _Width] = Math.ceil(bounds.width) + _px;\n\t\t\t\t\toverride[_height] = override[\"max\" + _Height] = Math.ceil(bounds.height) + _px;\n\t\t\t\t\toverride[_margin] = override[_margin + _Top] = override[_margin + _Right] = override[_margin + _Bottom] = override[_margin + _Left] = \"0\";\n\t\t\t\t\toverride[_padding] = cs[_padding];\n\t\t\t\t\toverride[_padding + _Top] = cs[_padding + _Top];\n\t\t\t\t\toverride[_padding + _Right] = cs[_padding + _Right];\n\t\t\t\t\toverride[_padding + _Bottom] = cs[_padding + _Bottom];\n\t\t\t\t\toverride[_padding + _Left] = cs[_padding + _Left];\n\t\t\t\t\tpinActiveState = _copyState(pinOriginalState, override, pinReparent);\n\t\t\t\t}\n\t\t\t\tif (animation) { // the animation might be affecting the transform, so we must jump to the end, check the value, and compensate accordingly. Otherwise, when it becomes unpinned, the pinSetter() will get set to a value that doesn't include whatever the animation did.\n\t\t\t\t\tanimation.progress(1, true);\n\t\t\t\t\tpinChange = pinGetter(direction.a) - pinStart + change + otherPinOffset;\n\t\t\t\t\tchange !== pinChange && pinActiveState.splice(pinActiveState.length - 2, 2); // transform is the last property/value set in the state Array. Since the animation is controlling that, we should omit it.\n\t\t\t\t\tanimation.progress(0, true);\n\t\t\t\t} else {\n\t\t\t\t\tpinChange = change\n\t\t\t\t}\n\t\t\t} else if (trigger && self.scroll()) { // it may be INSIDE a pinned element, so walk up the tree and look for any elements with _pinOffset to compensate because anything with pinSpacing that's already scrolled would throw off the measurements in getBoundingClientRect()\n\t\t\t\tbounds = trigger.parentNode;\n\t\t\t\twhile (bounds && bounds !== _body) {\n\t\t\t\t\tif (bounds._pinOffset) {\n\t\t\t\t\t\tstart -= bounds._pinOffset;\n\t\t\t\t\t\tend -= bounds._pinOffset;\n\t\t\t\t\t}\n\t\t\t\t\tbounds = bounds.parentNode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i = 0; i < triggerIndex; i++) { // make sure we revert from first to last to make sure things reach their end state properly\n\t\t\t\tcurTrigger = _triggers[i].pin;\n\t\t\t\tcurTrigger && (curTrigger === trigger || curTrigger === pin) && _triggers[i].revert(false);\n\t\t\t}\n\t\t\tself.start = start;\n\t\t\tself.end = end;\n\t\t\tscroll1 = scroll2 = self.scroll(); // reset velocity\n\t\t\tscroll1 < prevScroll && self.scroll(prevScroll);\n\t\t\tself.revert(false);\n\t\t\t_refreshing = 0;\n\t\t\tprevAnimProgress && isToggle && animation.progress(prevAnimProgress, true);\n\t\t\tif (prevProgress !== self.progress) { // ensures that the direction is set properly (when refreshing, progress is set back to 0 initially, then back again to wherever it needs to be) and that callbacks are triggered.\n\t\t\t\tscrubTween && animation.totalProgress(prevProgress, true); // to avoid issues where animation callbacks like onStart aren't triggered.\n\t\t\t\tself.progress = prevProgress;\n\t\t\t\tself.update();\n\t\t\t}\n\t\t\tpin && pinSpacing && (spacer._pinOffset = Math.round(self.progress * pinChange));\n\t\t\tonRefresh && onRefresh(self);\n\t\t};\n\n\t\tself.getVelocity = () => ((self.scroll() - scroll2) / (_getTime() - _time2) * 1000) || 0;\n\n\t\tself.update = (reset, recordVelocity) => {\n\t\t\tlet scroll = self.scroll(),\n\t\t\t\tp = reset ? 0 : (scroll - start) / change,\n\t\t\t\tclipped = p < 0 ? 0 : p > 1 ? 1 : p || 0,\n\t\t\t\tprevProgress = self.progress,\n\t\t\t\tisActive, wasActive, toggleState, action, stateChanged, toggled;\n\t\t\tif (recordVelocity) {\n\t\t\t\tscroll2 = scroll1;\n\t\t\t\tscroll1 = scroll;\n\t\t\t\tif (snap) {\n\t\t\t\t\tsnap2 = snap1;\n\t\t\t\t\tsnap1 = animation && !isToggle ? animation.totalProgress() : clipped;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// anticipate the pinning a few ticks ahead of time based on velocity to avoid a visual glitch due to the fact that most browsers do scrolling on a separate thread (not synced with requestAnimationFrame).\n\t\t\t(anticipatePin && !clipped && pin && !_refreshing && !_startup && _lastScrollTime && start < scroll + ((scroll - scroll2) / (_getTime() - _time2)) * anticipatePin) && (clipped = 0.0001);\n\t\t\tif (clipped !== prevProgress && self.enabled) {\n\t\t\t\tisActive = self.isActive = !!clipped && clipped < 1;\n\t\t\t\twasActive = !!prevProgress && prevProgress < 1;\n\t\t\t\ttoggled = isActive !== wasActive;\n\t\t\t\tstateChanged = toggled || !!clipped !== !!prevProgress; // could go from start all the way to end, thus it didn't toggle but it did change state in a sense (may need to fire a callback)\n\t\t\t\tself.direction = clipped > prevProgress ? 1 : -1;\n\t\t\t\tself.progress = clipped;\n\t\t\t\tif (!isToggle) {\n\t\t\t\t\tif (scrubTween && !_refreshing && !_startup) {\n\t\t\t\t\t\tscrubTween.vars.totalProgress = clipped;\n\t\t\t\t\t\tscrubTween.invalidate().restart();\n\t\t\t\t\t} else if (animation) {\n\t\t\t\t\t\tanimation.totalProgress(clipped, !!_refreshing);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pin) {\n\t\t\t\t\treset && pinSpacing && (spacer.style[pinSpacing + direction.os2] = spacingStart);\n\t\t\t\t\tif (!useFixedPosition) {\n\t\t\t\t\t\tpinSetter(pinStart + pinChange * clipped);\n\t\t\t\t\t} else if (stateChanged) {\n\t\t\t\t\t\taction = !reset && clipped > prevProgress && end + 1 > scroll && scroll + 1 >= _maxScroll(scroller, direction); // if it's at the VERY end of the page, don't switch away from position: fixed because it's pointless and it could cause a brief flash when the user scrolls back up (when it gets pinned again)\n\t\t\t\t\t\tif (pinReparent) {\n\t\t\t\t\t\t\tif (!_refreshing && (isActive || action)) {\n\t\t\t\t\t\t\t\tlet bounds = _getBounds(pin, true),\n\t\t\t\t\t\t\t\t\toffset = scroll - start;\n\t\t\t\t\t\t\t\tpin.style.top = (bounds.top + (direction === _vertical ? offset : 0)) + _px;\n\t\t\t\t\t\t\t\tpin.style.left = (bounds.left + (direction === _vertical ? 0 : offset)) + _px;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_reparent(pin, !_refreshing && (isActive || action) ? _body : spacer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_setState(isActive || action ? pinActiveState : pinState);\n\t\t\t\t\t\t(pinChange !== change && clipped < 1 && isActive) || pinSetter(pinStart + (clipped === 1 && !action ? pinChange : 0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (snap && !tweenTo.tween && !_refreshing && !_startup) {\n\t\t\t\t\tscrubScrollTime = _lastScrollTime;\n\t\t\t\t\tsnapDelayedCall.restart(true);\n\t\t\t\t}\n\t\t\t\ttoggleClass && toggled && (!once || isActive) && _toArray(toggleClass.targets).forEach(el => el.classList[isActive ? \"add\" : \"remove\"](toggleClass.className)); // classes could affect positioning, so do it even if reset or refreshing is true.\n\t\t\t\tonUpdate && !isToggle && !reset && onUpdate(self);\n\t\t\t\tif (stateChanged && !_refreshing) {\n\t\t\t\t\ttoggleState = clipped && !prevProgress ? 0 : clipped === 1 ? 1 : prevProgress === 1 ? 2 : 3; // 0 = enter, 1 = leave, 2 = enterBack, 3 = leaveBack (we prioritize the FIRST encounter, thus if you scroll really fast past the onEnter and onLeave in one tick, it'd prioritize onEnter.\n\t\t\t\t\tif (isToggle) {\n\t\t\t\t\t\taction = (!toggled && toggleActions[toggleState + 1] !== \"none\" && toggleActions[toggleState + 1]) || toggleActions[toggleState]; // if it didn't toggle, that means it shot right past and since we prioritize the \"enter\" action, we should switch to the \"leave\" in this case (but only if one is defined)\n\t\t\t\t\t\tif (animation && (action === \"complete\" || action === \"reset\" || action in animation)) {\n\t\t\t\t\t\t\tif (action === \"complete\") {\n\t\t\t\t\t\t\t\tanimation.pause().totalProgress(1);\n\t\t\t\t\t\t\t} else if (action === \"reset\") {\n\t\t\t\t\t\t\t\tanimation.restart(true).pause();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tanimation[action]();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdate && onUpdate(self);\n\t\t\t\t\t}\n\t\t\t\t\tif (toggled || !_limitCallbacks) { // on startup, the page could be scrolled and we don't want to fire callbacks that didn't toggle. For example onEnter shouldn't fire if the ScrollTrigger isn't actually entered.\n\t\t\t\t\t\tonToggle && toggled && onToggle(self);\n\t\t\t\t\t\tcallbacks[toggleState] && callbacks[toggleState](self);\n\t\t\t\t\t\tonce && (clipped === 1 ? self.kill(false, 1) : (callbacks[toggleState] = 0)); // a callback shouldn't be called again if once is true.\n\t\t\t\t\t\tif (!toggled) { // it's possible to go completely past, like from before the start to after the end (or vice-versa) in which case BOTH callbacks should be fired in that order\n\t\t\t\t\t\t\ttoggleState = clipped === 1 ? 1 : 3;\n\t\t\t\t\t\t\tcallbacks[toggleState] && callbacks[toggleState](self);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (isToggle && onUpdate && !_refreshing) {\n\t\t\t\t\tonUpdate(self);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// update absolutely-positioned markers (only if the scroller isn't the viewport)\n\t\t\tif (markerEndSetter) {\n\t\t\t\tmarkerStartSetter(scroll + (markerStartTrigger._isFlipped ? 1 : 0));\n\t\t\t\tmarkerEndSetter(scroll);\n\t\t\t}\n\t\t};\n\n\t\tself.enable = () => {\n\t\t\tif (!self.enabled) {\n\t\t\t\tself.enabled = true;\n\t\t\t\t_addListener(scroller, \"resize\", _onResize);\n\t\t\t\t_addListener(scroller, \"scroll\", _onScroll);\n\t\t\t\tonRefreshInit && _addListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\t\t\t\t!animation || !animation.add ? self.refresh() : gsap.delayedCall(0.01, self.refresh) && (change = 0.01) && (start = end = 0); // if the animation is a timeline, it may not have been populated yet, so it wouldn't render at the proper place on the first refresh(), thus we should schedule one for the next tick.\n\t\t\t}\n\t\t};\n\n\t\tself.disable = (reset, allowScrub) => {\n\t\t\tif (self.enabled) {\n\t\t\t\treset !== false && self.revert();\n\t\t\t\tself.enabled = self.isActive = false;\n\t\t\t\tallowScrub || (scrubTween && scrubTween.pause());\n\t\t\t\tprevScroll = 0;\n\t\t\t\tpinCache && (pinCache.uncache = 1);\n\t\t\t\tonRefreshInit && _removeListener(ScrollTrigger, \"refreshInit\", onRefreshInit);\n\t\t\t\tif (snapDelayedCall) {\n\t\t\t\t\tsnapDelayedCall.pause();\n\t\t\t\t\ttweenTo.tween && tweenTo.tween.kill();\n\t\t\t\t}\n\t\t\t\tif (!isViewport) {\n\t\t\t\t\tlet i = _triggers.length;\n\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\tif (_triggers[i].scroller === scroller && _triggers[i] !== self) {\n\t\t\t\t\t\t\treturn; //don't remove the listeners if there are still other triggers referencing it.\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_removeListener(scroller, \"resize\", _onResize);\n\t\t\t\t\t_removeListener(scroller, \"scroll\", _onScroll);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tself.kill = (revert, allowScrub) => {\n\t\t\tself.disable(revert, allowScrub);\n\t\t\tid && (delete _ids[id]);\n\t\t\tlet i = _triggers.indexOf(self);\n\t\t\t_triggers.splice(i, 1);\n\t\t\ti === _i && _direction > 0 && _i--; // if we're in the middle of a refresh() or update(), splicing would cause skips in the index, so adjust...\n\t\t\tif (animation) {\n\t\t\t\tanimation.scrollTrigger = null;\n\t\t\t\trevert && animation.render(-1);\n\t\t\t\t(allowScrub && scrubTween) || animation.kill();\n\t\t\t}\n\t\t\tmarkerStart && [markerStart, markerEnd, markerStartTrigger, markerEndTrigger].forEach(m => m.parentNode.removeChild(m));\n\t\t\tpinCache && (pinCache.uncache = 1);\n\t\t};\n\n\t\tself.enable();\n\t}\n\n\n\tstatic register(core) {\n\t\tif (!_coreInitted) {\n\t\t\tgsap = core || _getGSAP();\n\t\t\tif (_windowExists() && window.document) {\n\t\t\t\t_win = window;\n\t\t\t\t_doc = document;\n\t\t\t\t_docEl = _doc.documentElement;\n\t\t\t\t_body = _doc.body;\n\t\t\t}\n\t\t\tif (gsap) {\n\t\t\t\t_toArray = gsap.utils.toArray;\n\t\t\t\t_clamp = gsap.utils.clamp;\n\t\t\t\tgsap.core.globals(\"ScrollTrigger\", ScrollTrigger); // must register the global manually because in Internet Explorer, functions (classes) don't have a \"name\" property.\n\t\t\t\tif (_body) {\n\t\t\t\t\t_raf = _win.requestAnimationFrame || (f => setTimeout(f, 16));\n\t\t\t\t\t_addListener(_win, \"mousewheel\", _onScroll);\n\t\t\t\t\t_root = [_win, _doc, _docEl, _body];\n\t\t\t\t\t_addListener(_doc, \"scroll\", _onScroll); // some browsers (like Chrome), the window stops dispatching scroll events on the window if you scroll really fast, but it's consistent on the document!\n\t\t\t\t\tlet bodyStyle = _body.style,\n\t\t\t\t\t\tborder = bodyStyle.borderTop,\n\t\t\t\t\t\tbounds;\n\t\t\t\t\tbodyStyle.borderTop = \"1px solid #000\"; // works around an issue where a margin of a child element could throw off the bounds of the _body, making it seem like there's a margin when there actually isn't. The border ensures that the bounds are accurate.\n\t\t\t\t\tbounds = _getBounds(_body);\n\t\t\t\t\t_vertical.m = Math.round(bounds.top + _vertical.sc()) || 0; // accommodate the offset of the <body> caused by margins and/or padding\n\t\t\t\t\t_horizontal.m = Math.round(bounds.left + _horizontal.sc()) || 0;\n\t\t\t\t\tborder ? (bodyStyle.borderTop = border) : bodyStyle.removeProperty(\"border-top\");\n\t\t\t\t\t_syncInterval = setInterval(_sync, 200);\n\t\t\t\t\tgsap.delayedCall(0.5, () => _startup = 0);\n\t\t\t\t\t_addListener(_doc, \"touchcancel\", _passThrough); // some older Android devices intermittently stop dispatching \"touchmove\" events if we don't listen for \"touchcancel\" on the document.\n\t\t\t\t\t_addListener(_body, \"touchstart\", _passThrough); //works around Safari bug: https://greensock.com/forums/topic/21450-draggable-in-iframe-on-mobile-is-buggy/\n\t\t\t\t\t_multiListener(_addListener, _doc, \"pointerdown,touchstart,mousedown\", () => _pointerIsDown = 1);\n\t\t\t\t\t_multiListener(_addListener, _doc, \"pointerup,touchend,mouseup\", () => _pointerIsDown = 0);\n\t\t\t\t\t_transformProp = gsap.utils.checkPrefix(\"transform\");\n\t\t\t\t\t_stateProps.push(_transformProp);\n\t\t\t\t\t_coreInitted = _getTime();\n\t\t\t\t\t_resizeDelay = gsap.delayedCall(0.2, _refreshAll).pause();\n\t\t\t\t\t_autoRefresh = [_doc, \"visibilitychange\", () => {\n\t\t\t\t\t\tlet w = _win.innerWidth,\n\t\t\t\t\t\t\th = _win.innerHeight;\n\t\t\t\t\t\tif (_doc.hidden) {\n\t\t\t\t\t\t\t_prevWidth = w;\n\t\t\t\t\t\t\t_prevHeight = h;\n\t\t\t\t\t\t} else if (_prevWidth !== w || _prevHeight !== h) {\n\t\t\t\t\t\t\t_onResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, _doc, \"DOMContentLoaded\", _refreshAll, _win, \"load\", () => _lastScrollTime || _refreshAll(), _win, \"resize\", _onResize];\n\t\t\t\t\t_iterateAutoRefresh(_addListener);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _coreInitted;\n\t}\n\n\tstatic defaults(config) {\n\t\tfor (let p in config) {\n\t\t\t_defaults[p] = config[p];\n\t\t}\n\t}\n\n\tstatic kill() {\n\t\t_enabled = 0;\n\t\t_triggers.slice(0).forEach(trigger => trigger.kill(1));\n\t}\n\n\tstatic config(vars) {\n\t\t(\"limitCallbacks\" in vars) && (_limitCallbacks = !!vars.limitCallbacks);\n\t\tlet ms = vars.syncInterval;\n\t\tms && clearInterval(_syncInterval) || ((_syncInterval = ms) && setInterval(_sync, ms));\n\t\t(\"autoRefreshEvents\" in vars) && (_iterateAutoRefresh(_removeListener) || _iterateAutoRefresh(_addListener, vars.autoRefreshEvents || \"none\"));\n\t}\n\n\tstatic scrollerProxy(target, vars) {\n\t\tlet t = _toArray(target)[0];\n\t\t_isViewport(t) ? _proxies.unshift(_win, vars, _body, vars, _docEl, vars) : _proxies.unshift(t, vars);\n\t}\n\n\tstatic matchMedia(vars) {\n\t\tlet mq, p, i, func, result;\n\t\tfor (p in vars) {\n\t\t\ti = _media.indexOf(p);\n\t\t\tfunc = vars[p];\n\t\t\t_creatingMedia = p;\n\t\t\tif (p === \"all\") {\n\t\t\t\tfunc();\n\t\t\t} else {\n\t\t\t\tmq = _win.matchMedia(p);\n\t\t\t\tif (mq) {\n\t\t\t\t\tmq.matches && (result = func());\n\t\t\t\t\tif (~i) {\n\t\t\t\t\t\t_media[i + 1] = _combineFunc(_media[i + 1], func);\n\t\t\t\t\t\t_media[i + 2] = _combineFunc(_media[i + 2], result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti = _media.length;\n\t\t\t\t\t\t_media.push(p, func, result);\n\t\t\t\t\t\tmq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t_creatingMedia = 0;\n\t\t}\n\t\treturn _media;\n\t}\n\n}\n\nScrollTrigger.version = \"3.4.2\";\nScrollTrigger.saveStyles = targets => targets ? _toArray(targets).forEach(target => {\n\tlet i = _savedStyles.indexOf(target);\n\ti >= 0 && _savedStyles.splice(i, 4);\n\t_savedStyles.push(target, target.style.cssText, gsap.core.getCache(target), _creatingMedia);\n}) : _savedStyles;\nScrollTrigger.revert = (soft, media) => _revertAll(!soft, media);\nScrollTrigger.create = (vars, animation) => new ScrollTrigger(vars, animation);\nScrollTrigger.refresh = safe => safe ? _onResize() : _refreshAll(true);\nScrollTrigger.update = _updateAll;\nScrollTrigger.maxScroll = (element, horizontal) => _maxScroll(element, horizontal ? _horizontal : _vertical);\nScrollTrigger.getScrollFunc = (element, horizontal) => _getScrollFunc(_toArray(element)[0], horizontal ? _horizontal : _vertical);\nScrollTrigger.getById = id => _ids[id];\nScrollTrigger.getAll = () => _triggers.slice(0);\nScrollTrigger.isScrolling = () => !!_lastScrollTime;\nScrollTrigger.addEventListener = (type, callback) => {\n\tlet a = _listeners[type] || (_listeners[type] = []);\n\t~a.indexOf(callback) || a.push(callback);\n};\nScrollTrigger.removeEventListener = (type, callback) => {\n\tlet a = _listeners[type],\n\t\ti = a && a.indexOf(callback);\n\ti >= 0 && a.splice(i, 1);\n};\nScrollTrigger.batch = (targets, vars) => {\n\tlet result = [],\n\t\tvarsCopy = {},\n\t\tinterval = vars.interval || 0.016,\n\t\tbatchMax = vars.batchMax || 1e9,\n\t\tproxyCallback = (type, callback) => {\n\t\t\tlet elements = [],\n\t\t\t\ttriggers = [],\n\t\t\t\tdelay = gsap.delayedCall(interval, () => {callback(elements, triggers); elements = []; triggers = [];}).pause();\n\t\t\treturn self => {\n\t\t\t\telements.length || delay.restart(true);\n\t\t\t\telements.push(self.trigger);\n\t\t\t\ttriggers.push(self);\n\t\t\t\tbatchMax <= elements.length && delay.progress(1);\n\t\t\t};\n\t\t},\n\t\tp;\n\tfor (p in vars) {\n\t\tvarsCopy[p] = (p.substr(0, 2) === \"on\" && _isFunction(vars[p]) && p !== \"onRefreshInit\") ? proxyCallback(p, vars[p]) : vars[p];\n\t}\n\tif (_isFunction(batchMax)) {\n\t\tbatchMax = batchMax();\n\t\t_addListener(ScrollTrigger, \"refresh\", () => batchMax = vars.batchMax());\n\t}\n\t_toArray(targets).forEach(target => {\n\t\tlet config = {};\n\t\tfor (p in varsCopy) {\n\t\t\tconfig[p] = varsCopy[p];\n\t\t}\n\t\tconfig.trigger = target;\n\t\tresult.push(ScrollTrigger.create(config));\n\t});\n\treturn result;\n}\nScrollTrigger.sort = func => _triggers.sort(func || ((a, b) => (a.vars.refreshPriority || 0) * -1e6 + a.start - (b.start + (b.vars.refreshPriority || 0) * -1e6)));\n\n_getGSAP() && gsap.registerPlugin(ScrollTrigger);\n\nexport { ScrollTrigger as default };"],"names":["_passThrough","v","_windowExists","window","_getGSAP","gsap","registerPlugin","_isViewport","e","_root","indexOf","_getProxyProp","element","property","_proxies","_getScrollFunc","s","sc","i","_scrollers","func","value","arguments","length","push","_getBoundsFunc","_winOffsets","width","_win","innerWidth","height","innerHeight","_getBounds","_maxScroll","d2","d","a","Math","max","_docEl","_body","_iterateAutoRefresh","events","_autoRefresh","_isString","_isFunction","_isNumber","_isObject","_callIfFunc","_combineFunc","f1","f2","result1","result2","_getComputedStyle","getComputedStyle","_setDefaults","obj","defaults","p","_getSize","_multiListener","types","callback","split","forEach","type","_addListener","addEventListener","passive","_removeListener","removeEventListener","_offsetToPx","size","eqIndex","relative","charAt","parseFloat","substr","_keywords","_createMarker","name","container","direction","offset","matchWidthEl","startColor","endColor","fontSize","indent","fontWeight","_doc","createElement","useFixedPosition","isScroller","parent","isStart","color","css","_vertical","_right","_bottom","offsetWidth","_isStart","setAttribute","style","cssText","innerText","insertBefore","children","_offset","op","_positionMarker","_sync","_request","_raf","_updateAll","_onScroll","_lastScrollTime","_dispatch","_getTime","_onResize","_refreshing","_resizeDelay","restart","_onMediaChange","tick","ticker","frame","matches","_lastMediaTick","_startup","_revertAll","_media","matchMedia","_revertRecorded","_creatingMedia","_refreshAll","_softRefresh","ScrollTrigger","_swapPinIn","pin","spacer","cs","spacerState","parentNode","_propNamesToCopy","spacerStyle","pinStyle","position","display","overflow","boxSizing","_width","_horizontal","_px","_height","_padding","_margin","_left","_setState","appendChild","_getState","l","_stateProps","state","t","_parsePosition","trigger","scrollerSize","scroll","marker","markerScroller","self","scrollerBounds","borderWidth","scrollerMax","localOffset","globalOffset","_toArray","bounds","offsets","left","top","removeProperty","m","round","_getTweenCreator","scroller","lastScroll","getScroll","prop","p2","getTween","scrollTo","vars","initialValue","change1","change2","tween","onComplete","modifiers","kill","abs","ratio","call","to","_coreInitted","_clamp","_time2","_syncInterval","_pointerIsDown","_transformProp","_i","_prevWidth","_prevHeight","_sort","_limitCallbacks","Date","now","_time1","_enabled","_abs","_scrollLeft","_scrollTop","_Right","_Left","_Top","_Bottom","_Width","_Height","os","os2","pageXOffset","pageYOffset","withoutTransforms","x","y","xPercent","yPercent","rotation","rotationX","rotationY","scale","skewX","skewY","progress","getBoundingClientRect","_markerDefaults","_defaults","toggleActions","anticipatePin","center","bottom","right","start","flipped","side","oppositeSide","_isFlipped","set","_triggers","_ids","_listeners","_emptyArray","map","f","_savedStyles","media","uncache","rec","revert","force","skipRevert","refreshInits","sort","refresh","result","render","_lastScroll","_direction","time","recordVelocity","update","concat","_capsExp","replace","toLowerCase","_prefixExp","init","animation","this","tweenTo","pinCache","snapFunc","isReverted","scroll1","scroll2","end","markerStart","markerEnd","markerStartTrigger","markerEndTrigger","markerVars","change","pinOriginalState","pinActiveState","pinState","pinGetter","pinSetter","pinStart","pinChange","spacingStart","markerStartSetter","markerEndSetter","snap1","snap2","scrubScrollTime","scrubTween","scrubSmooth","snapDurClamp","snapDelayedCall","prevProgress","prevScroll","prevAnimProgress","nodeType","horizontal","onUpdate","toggleClass","id","onToggle","onRefresh","scrub","pinSpacing","invalidateOnRefresh","onScrubComplete","onSnapComplete","once","snap","pinReparent","isToggle","scrollerCache","core","getCache","isViewport","callbacks","onEnter","onLeave","onEnterBack","onLeaveBack","markers","onRefreshInit","getScrollerSize","_getSizeFunc","getScrollerOffsets","_getOffsetsFunc","tweenScroll","lazy","_initted","immediateRender","pause","scrollTrigger","ease","duration","snapTo","scrollBehavior","_getLabels","labels","utils","min","delayedCall","delay","totalProgress","velocity","naturalEnd","endValue","endScroll","data","targets","className","force3D","getProperty","quickSetter","firstChild","_makePositionable","r","enabled","prevRefreshing","_swapPinOut","removeChild","soft","invalidate","isVertical","override","curTrigger","curPin","otherPinOffset","parsedEnd","parsedEndTrigger","endTrigger","parsedStart","triggerIndex","_pinPush","ceil","_copyState","omitOffsets","splice","_pinOffset","getVelocity","reset","isActive","toggleState","action","stateChanged","toggled","clipped","_reparent","_stOrig","test","el","classList","enable","add","disable","allowScrub","register","document","documentElement","body","toArray","clamp","globals","requestAnimationFrame","setTimeout","bodyStyle","border","borderTop","setInterval","checkPrefix","w","h","hidden","config","slice","limitCallbacks","ms","syncInterval","clearInterval","autoRefreshEvents","scrollerProxy","target","unshift","mq","addListener","console","warn","version","saveStyles","create","safe","maxScroll","getScrollFunc","getById","getAll","isScrolling","batch","proxyCallback","elements","triggers","interval","batchMax","varsCopy","b","refreshPriority"],"mappings":"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"}