{"version":3,"file":"Observer.min.js","sources":["../src/Observer.js"],"sourcesContent":["/*!\n * Observer 3.12.2\n * https://greensock.com\n *\n * @license Copyright 2008-2023, 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, jack@greensock.com\n*/\n/* eslint-disable */\n\nlet gsap, _coreInitted, _clamp, _win, _doc, _docEl, _body, _isTouch, _pointerType, ScrollTrigger, _root, _normalizer, _eventTypes, _context,\n\t_getGSAP = () => gsap || (typeof(window) !== \"undefined\" && (gsap = window.gsap) && gsap.registerPlugin && gsap),\n\t_startup = 1,\n\t_observers = [],\n\t_scrollers = [],\n\t_proxies = [],\n\t_getTime = Date.now,\n\t_bridge = (name, value) => value,\n\t_integrate = () => {\n\t\tlet core = ScrollTrigger.core,\n\t\t\tdata = core.bridge || {},\n\t\t\tscrollers = core._scrollers,\n\t\t\tproxies = core._proxies;\n\t\tscrollers.push(..._scrollers);\n\t\tproxies.push(..._proxies);\n\t\t_scrollers = scrollers;\n\t\t_proxies = proxies;\n\t\t_bridge = (name, value) => data[name](value);\n\t},\n\t_getProxyProp = (element, property) => ~_proxies.indexOf(element) && _proxies[_proxies.indexOf(element) + 1][property],\n\t_isViewport = el => !!~_root.indexOf(el),\n\t_addListener = (element, type, func, nonPassive, capture) => element.addEventListener(type, func, {passive: !nonPassive, capture: !!capture}),\n\t_removeListener = (element, type, func, capture) => element.removeEventListener(type, func, !!capture),\n\t_scrollLeft = \"scrollLeft\",\n\t_scrollTop = \"scrollTop\",\n\t_onScroll = () => (_normalizer && _normalizer.isPressed) || _scrollers.cache++,\n\t_scrollCacheFunc = (f, doNotCache) => {\n\t\tlet cachingFunc = value => { // since reading the scrollTop/scrollLeft/pageOffsetY/pageOffsetX can trigger a layout, this function allows us to cache the value so it only gets read fresh after a \"scroll\" event fires (or while we're refreshing because that can lengthen the page and alter the scroll position). when \"soft\" is true, that means don't actually set the scroll, but cache the new value instead (useful in ScrollSmoother)\n\t\t\tif (value || value === 0) {\n\t\t\t\t_startup && (_win.history.scrollRestoration = \"manual\"); // otherwise the new position will get overwritten by the browser onload.\n\t\t\t\tlet isNormalizing = _normalizer && _normalizer.isPressed;\n\t\t\t\tvalue = cachingFunc.v = Math.round(value) || (_normalizer && _normalizer.iOS ? 1 : 0); //TODO: iOS Bug: if you allow it to go to 0, Safari can start to report super strange (wildly inaccurate) touch positions!\n\t\t\t\tf(value);\n\t\t\t\tcachingFunc.cacheID = _scrollers.cache;\n\t\t\t\tisNormalizing && _bridge(\"ss\", value); // set scroll (notify ScrollTrigger so it can dispatch a \"scrollStart\" event if necessary\n\t\t\t} else if (doNotCache || _scrollers.cache !== cachingFunc.cacheID || _bridge(\"ref\")) {\n\t\t\t\tcachingFunc.cacheID = _scrollers.cache;\n\t\t\t\tcachingFunc.v = f();\n\t\t\t}\n\t\t\treturn cachingFunc.v + cachingFunc.offset;\n\t\t};\n\t\tcachingFunc.offset = 0;\n\t\treturn f && cachingFunc;\n\t},\n\t_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})},\n\t_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})},\n\t_getTarget = (t, self) => ((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),\n\n\t_getScrollFunc = (element, {s, sc}) => { // we store the scroller functions in an alternating sequenced Array like [element, verticalScrollFunc, horizontalScrollFunc, ...] so that we can minimize memory, maximize performance, and we also record the last position as a \".rec\" property in order to revert to that after refreshing to ensure things don't shift around.\n\t\t_isViewport(element) && (element = _doc.scrollingElement || _docEl);\n\t\tlet i = _scrollers.indexOf(element),\n\t\t\toffset = sc === _vertical.sc ? 1 : 2;\n\t\t!~i && (i = _scrollers.push(element) - 1);\n\t\t_scrollers[i + offset] || _addListener(element, \"scroll\", _onScroll); // clear the cache when a scroll occurs\n\t\tlet prev = _scrollers[i + offset],\n\t\t\tfunc = prev || (_scrollers[i + offset] = _scrollCacheFunc(_getProxyProp(element, s), true) || (_isViewport(element) ? sc : _scrollCacheFunc(function(value) { return arguments.length ? (element[s] = value) : element[s]; })));\n\t\tfunc.target = element;\n\t\tprev || (func.smooth = gsap.getProperty(element, \"scrollBehavior\") === \"smooth\"); // only set it the first time (don't reset every time a scrollFunc is requested because perhaps it happens during a refresh() when it's disabled in ScrollTrigger.\n\t\treturn func;\n\t},\n\t_getVelocityProp = (value, minTimeRefresh, useDelta) => {\n\t\tlet v1 = value,\n\t\t\tv2 = value,\n\t\t\tt1 = _getTime(),\n\t\t\tt2 = t1,\n\t\t\tmin = minTimeRefresh || 50,\n\t\t\tdropToZeroTime = Math.max(500, min * 3),\n\t\t\tupdate = (value, force) => {\n\t\t\t\tlet t = _getTime();\n\t\t\t\tif (force || t - t1 > min) {\n\t\t\t\t\tv2 = v1;\n\t\t\t\t\tv1 = value;\n\t\t\t\t\tt2 = t1;\n\t\t\t\t\tt1 = t;\n\t\t\t\t} else if (useDelta) {\n\t\t\t\t\tv1 += value;\n\t\t\t\t} else { // not totally necessary, but makes it a bit more accurate by adjusting the v1 value according to the new slope. This way we're not just ignoring the incoming data. Removing for now because it doesn't seem to make much practical difference and it's probably not worth the kb.\n\t\t\t\t\tv1 = v2 + (value - v2) / (t - t2) * (t1 - t2);\n\t\t\t\t}\n\t\t\t},\n\t\t\treset = () => { v2 = v1 = useDelta ? 0 : v1; t2 = t1 = 0; },\n\t\t\tgetVelocity = latestValue => {\n\t\t\t\tlet tOld = t2,\n\t\t\t\t\tvOld = v2,\n\t\t\t\t\tt = _getTime();\n\t\t\t\t(latestValue || latestValue === 0) && latestValue !== v1 && update(latestValue);\n\t\t\t\treturn (t1 === t2 || t - t2 > dropToZeroTime) ? 0 : (v1 + (useDelta ? vOld : -vOld)) / ((useDelta ? t : t1) - tOld) * 1000;\n\t\t\t};\n\t\treturn {update, reset, getVelocity};\n\t},\n\t_getEvent = (e, preventDefault) => {\n\t\tpreventDefault && !e._gsapAllow && e.preventDefault();\n\t\treturn e.changedTouches ? e.changedTouches[0] : e;\n\t},\n\t_getAbsoluteMax = a => {\n\t\tlet max = Math.max(...a),\n\t\t\tmin = Math.min(...a);\n\t\treturn Math.abs(max) >= Math.abs(min) ? max : min;\n\t},\n\t_setScrollTrigger = () => {\n\t\tScrollTrigger = gsap.core.globals().ScrollTrigger;\n\t\tScrollTrigger && ScrollTrigger.core && _integrate();\n\t},\n\t_initCore = core => {\n\t\tgsap = core || _getGSAP();\n\t\tif (gsap && typeof(document) !== \"undefined\" && document.body) {\n\t\t\t_win = window;\n\t\t\t_doc = document;\n\t\t\t_docEl = _doc.documentElement;\n\t\t\t_body = _doc.body;\n\t\t\t_root = [_win, _doc, _docEl, _body];\n\t\t\t_clamp = gsap.utils.clamp;\n\t\t\t_context = gsap.core.context || function() {};\n\t\t\t_pointerType = \"onpointerenter\" in _body ? \"pointer\" : \"mouse\";\n\t\t\t// isTouch is 0 if no touch, 1 if ONLY touch, and 2 if it can accommodate touch but also other types like mouse/pointer.\n\t\t\t_isTouch = Observer.isTouch = _win.matchMedia && _win.matchMedia(\"(hover: none), (pointer: coarse)\").matches ? 1 : (\"ontouchstart\" in _win || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0) ? 2 : 0;\n\t\t\t_eventTypes = Observer.eventTypes = (\"ontouchstart\" in _docEl ? \"touchstart,touchmove,touchcancel,touchend\" : !(\"onpointerdown\" in _docEl) ? \"mousedown,mousemove,mouseup,mouseup\" : \"pointerdown,pointermove,pointercancel,pointerup\").split(\",\");\n\t\t\tsetTimeout(() => _startup = 0, 500);\n\t\t\t_setScrollTrigger();\n\t\t\t_coreInitted = 1;\n\t\t}\n\t\treturn _coreInitted;\n\t};\n\n_horizontal.op = _vertical;\n_scrollers.cache = 0;\n\nexport class Observer {\n\tconstructor(vars) {\n\t\tthis.init(vars);\n\t}\n\n\tinit(vars) {\n\t\t_coreInitted || _initCore(gsap) || console.warn(\"Please gsap.registerPlugin(Observer)\");\n\t\tScrollTrigger || _setScrollTrigger();\n\t\tlet {tolerance, dragMinimum, type, target, lineHeight, debounce, preventDefault, onStop, onStopDelay, ignore, wheelSpeed, event, onDragStart, onDragEnd, onDrag, onPress, onRelease, onRight, onLeft, onUp, onDown, onChangeX, onChangeY, onChange, onToggleX, onToggleY, onHover, onHoverEnd, onMove, ignoreCheck, isNormalizer, onGestureStart, onGestureEnd, onWheel, onEnable, onDisable, onClick, scrollSpeed, capture, allowClicks, lockAxis, onLockAxis} = vars;\n\t\tthis.target = target = _getTarget(target) || _docEl;\n\t\tthis.vars = vars;\n\t\tignore && (ignore = gsap.utils.toArray(ignore));\n\t\ttolerance = tolerance || 1e-9;\n\t\tdragMinimum = dragMinimum || 0;\n\t\twheelSpeed = wheelSpeed || 1;\n\t\tscrollSpeed = scrollSpeed || 1;\n\t\ttype = type || \"wheel,touch,pointer\";\n\t\tdebounce = debounce !== false;\n\t\tlineHeight || (lineHeight = parseFloat(_win.getComputedStyle(_body).lineHeight) || 22); // note: browser may report \"normal\", so default to 22.\n\t\tlet id, onStopDelayedCall, dragged, moved, wheeled, locked, axis,\n\t\t\tself = this,\n\t\t\tprevDeltaX = 0,\n\t\t\tprevDeltaY = 0,\n\t\t\tscrollFuncX = _getScrollFunc(target, _horizontal),\n\t\t\tscrollFuncY = _getScrollFunc(target, _vertical),\n\t\t\tscrollX = scrollFuncX(),\n\t\t\tscrollY = scrollFuncY(),\n\t\t\tlimitToTouch = ~type.indexOf(\"touch\") && !~type.indexOf(\"pointer\") && _eventTypes[0] === \"pointerdown\", // for devices that accommodate mouse events and touch events, we need to distinguish.\n\t\t\tisViewport = _isViewport(target),\n\t\t\townerDoc = target.ownerDocument || _doc,\n\t\t\tdeltaX = [0, 0, 0], // wheel, scroll, pointer/touch\n\t\t\tdeltaY = [0, 0, 0],\n\t\t\tonClickTime = 0,\n\t\t\tclickCapture = () => onClickTime = _getTime(),\n\t\t\t_ignoreCheck = (e, isPointerOrTouch) => (self.event = e) && (ignore && ~ignore.indexOf(e.target)) || (isPointerOrTouch && limitToTouch && e.pointerType !== \"touch\") || (ignoreCheck && ignoreCheck(e, isPointerOrTouch)),\n\t\t\tonStopFunc = () => {\n\t\t\t\tself._vx.reset();\n\t\t\t\tself._vy.reset();\n\t\t\t\tonStopDelayedCall.pause();\n\t\t\t\tonStop && onStop(self);\n\t\t\t},\n\t\t\tupdate = () => {\n\t\t\t\tlet dx = self.deltaX = _getAbsoluteMax(deltaX),\n\t\t\t\t\tdy = self.deltaY = _getAbsoluteMax(deltaY),\n\t\t\t\t\tchangedX = Math.abs(dx) >= tolerance,\n\t\t\t\t\tchangedY = Math.abs(dy) >= tolerance;\n\t\t\t\tonChange && (changedX || changedY) && onChange(self, dx, dy, deltaX, deltaY); // in ScrollTrigger.normalizeScroll(), we need to know if it was touch/pointer so we need access to the deltaX/deltaY Arrays before we clear them out.\n\t\t\t\tif (changedX) {\n\t\t\t\t\tonRight && self.deltaX > 0 && onRight(self);\n\t\t\t\t\tonLeft && self.deltaX < 0 && onLeft(self);\n\t\t\t\t\tonChangeX && onChangeX(self);\n\t\t\t\t\tonToggleX && ((self.deltaX < 0) !== (prevDeltaX < 0)) && onToggleX(self);\n\t\t\t\t\tprevDeltaX = self.deltaX;\n\t\t\t\t\tdeltaX[0] = deltaX[1] = deltaX[2] = 0\n\t\t\t\t}\n\t\t\t\tif (changedY) {\n\t\t\t\t\tonDown && self.deltaY > 0 && onDown(self);\n\t\t\t\t\tonUp && self.deltaY < 0 && onUp(self);\n\t\t\t\t\tonChangeY && onChangeY(self);\n\t\t\t\t\tonToggleY && ((self.deltaY < 0) !== (prevDeltaY < 0)) && onToggleY(self);\n\t\t\t\t\tprevDeltaY = self.deltaY;\n\t\t\t\t\tdeltaY[0] = deltaY[1] = deltaY[2] = 0\n\t\t\t\t}\n\t\t\t\tif (moved || dragged) {\n\t\t\t\t\tonMove && onMove(self);\n\t\t\t\t\tif (dragged) {\n\t\t\t\t\t\tonDrag(self);\n\t\t\t\t\t\tdragged = false;\n\t\t\t\t\t}\n\t\t\t\t\tmoved = false;\n\t\t\t\t}\n\t\t\t\tlocked && !(locked = false) && onLockAxis && onLockAxis(self);\n\t\t\t\tif (wheeled) {\n\t\t\t\t\tonWheel(self);\n\t\t\t\t\twheeled = false;\n\t\t\t\t}\n\t\t\t\tid = 0;\n\t\t\t},\n\t\t\tonDelta = (x, y, index) => {\n\t\t\t\tdeltaX[index] += x;\n\t\t\t\tdeltaY[index] += y;\n\t\t\t\tself._vx.update(x);\n\t\t\t\tself._vy.update(y);\n\t\t\t\tdebounce ? id || (id = requestAnimationFrame(update)) : update();\n\t\t\t},\n\t\t\tonTouchOrPointerDelta = (x, y) => {\n\t\t\t\tif (lockAxis && !axis) {\n\t\t\t\t\tself.axis = axis = Math.abs(x) > Math.abs(y) ? \"x\" : \"y\";\n\t\t\t\t\tlocked = true;\n\t\t\t\t}\n\t\t\t\tif (axis !== \"y\") {\n\t\t\t\t\tdeltaX[2] += x;\n\t\t\t\t\tself._vx.update(x, true); // update the velocity as frequently as possible instead of in the debounced function so that very quick touch-scrolls (flicks) feel natural. If it's the mouse/touch/pointer, force it so that we get snappy/accurate momentum scroll.\n\t\t\t\t}\n\t\t\t\tif (axis !== \"x\") {\n\t\t\t\t\tdeltaY[2] += y;\n\t\t\t\t\tself._vy.update(y, true);\n\t\t\t\t}\n\t\t\t\tdebounce ? id || (id = requestAnimationFrame(update)) : update();\n\t\t\t},\n\t\t\t_onDrag = e => {\n\t\t\t\tif (_ignoreCheck(e, 1)) {return;}\n\t\t\t\te = _getEvent(e, preventDefault);\n\t\t\t\tlet x = e.clientX,\n\t\t\t\t\ty = e.clientY,\n\t\t\t\t\tdx = x - self.x,\n\t\t\t\t\tdy = y - self.y,\n\t\t\t\t\tisDragging = self.isDragging;\n\t\t\t\tself.x = x;\n\t\t\t\tself.y = y;\n\t\t\t\tif (isDragging || Math.abs(self.startX - x) >= dragMinimum || Math.abs(self.startY - y) >= dragMinimum) {\n\t\t\t\t\tonDrag && (dragged = true);\n\t\t\t\t\tisDragging || (self.isDragging = true);\n\t\t\t\t\tonTouchOrPointerDelta(dx, dy);\n\t\t\t\t\tisDragging || onDragStart && onDragStart(self);\n\t\t\t\t}\n\t\t\t},\n\t\t\t_onPress = self.onPress = e => {\n\t\t\t\tif (_ignoreCheck(e, 1) || (e && e.button)) {return;}\n\t\t\t\tself.axis = axis = null;\n\t\t\t\tonStopDelayedCall.pause();\n\t\t\t\tself.isPressed = true;\n\t\t\t\te = _getEvent(e); // note: may need to preventDefault(?) Won't side-scroll on iOS Safari if we do, though.\n\t\t\t\tprevDeltaX = prevDeltaY = 0;\n\t\t\t\tself.startX = self.x = e.clientX;\n\t\t\t\tself.startY = self.y = e.clientY;\n\t\t\t\tself._vx.reset(); // otherwise the t2 may be stale if the user touches and flicks super fast and releases in less than 2 requestAnimationFrame ticks, causing velocity to be 0.\n\t\t\t\tself._vy.reset();\n\t\t\t\t_addListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, preventDefault, true);\n\t\t\t\tself.deltaX = self.deltaY = 0;\n\t\t\t\tonPress && onPress(self);\n\t\t\t},\n\t\t\t_onRelease = self.onRelease = e => {\n\t\t\t\tif (_ignoreCheck(e, 1)) {return;}\n\t\t\t\t_removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\t\t\t\tlet isTrackingDrag = !isNaN(self.y - self.startY),\n\t\t\t\t\twasDragging = self.isDragging && (Math.abs(self.x - self.startX) > 3 || Math.abs(self.y - self.startY) > 3), // some touch devices need some wiggle room in terms of sensing clicks - the finger may move a few pixels.\n\t\t\t\t\teventData = _getEvent(e);\n\t\t\t\tif (!wasDragging && isTrackingDrag) {\n\t\t\t\t\tself._vx.reset();\n\t\t\t\t\tself._vy.reset();\n\t\t\t\t\tif (preventDefault && allowClicks) {\n\t\t\t\t\t\tgsap.delayedCall(0.08, () => { // some browsers (like Firefox) won't trust script-generated clicks, so if the user tries to click on a video to play it, for example, it simply won't work. Since a regular \"click\" event will most likely be generated anyway (one that has its isTrusted flag set to true), we must slightly delay our script-generated click so that the \"real\"/trusted one is prioritized. Remember, when there are duplicate events in quick succession, we suppress all but the first one. Some browsers don't even trigger the \"real\" one at all, so our synthetic one is a safety valve that ensures that no matter what, a click event does get dispatched.\n\t\t\t\t\t\t\tif (_getTime() - onClickTime > 300 && !e.defaultPrevented) {\n\t\t\t\t\t\t\t\tif (e.target.click) { //some browsers (like mobile Safari) don't properly trigger the click event\n\t\t\t\t\t\t\t\t\te.target.click();\n\t\t\t\t\t\t\t\t} else if (ownerDoc.createEvent) {\n\t\t\t\t\t\t\t\t\tlet syntheticEvent = ownerDoc.createEvent(\"MouseEvents\");\n\t\t\t\t\t\t\t\t\tsyntheticEvent.initMouseEvent(\"click\", true, true, _win, 1, eventData.screenX, eventData.screenY, eventData.clientX, eventData.clientY, false, false, false, false, 0, null);\n\t\t\t\t\t\t\t\t\te.target.dispatchEvent(syntheticEvent);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tself.isDragging = self.isGesturing = self.isPressed = false;\n\t\t\t\tonStop && !isNormalizer && onStopDelayedCall.restart(true);\n\t\t\t\tonDragEnd && wasDragging && onDragEnd(self);\n\t\t\t\tonRelease && onRelease(self, wasDragging);\n\t\t\t},\n\t\t\t_onGestureStart = e => e.touches && e.touches.length > 1 && (self.isGesturing = true) && onGestureStart(e, self.isDragging),\n\t\t\t_onGestureEnd = () => (self.isGesturing = false) || onGestureEnd(self),\n\t\t\tonScroll = e => {\n\t\t\t\tif (_ignoreCheck(e)) {return;}\n\t\t\t\tlet x = scrollFuncX(),\n\t\t\t\t\ty = scrollFuncY();\n\t\t\t\tonDelta((x - scrollX) * scrollSpeed, (y - scrollY) * scrollSpeed, 1);\n\t\t\t\tscrollX = x;\n\t\t\t\tscrollY = y;\n\t\t\t\tonStop && onStopDelayedCall.restart(true);\n\t\t\t},\n\t\t\t_onWheel = e => {\n\t\t\t\tif (_ignoreCheck(e)) {return;}\n\t\t\t\te = _getEvent(e, preventDefault);\n\t\t\t\tonWheel && (wheeled = true);\n\t\t\t\tlet multiplier = (e.deltaMode === 1 ? lineHeight : e.deltaMode === 2 ? _win.innerHeight : 1) * wheelSpeed;\n\t\t\t\tonDelta(e.deltaX * multiplier, e.deltaY * multiplier, 0);\n\t\t\t\tonStop && !isNormalizer && onStopDelayedCall.restart(true);\n\t\t\t},\n\t\t\t_onMove = e => {\n\t\t\t\tif (_ignoreCheck(e)) {return;}\n\t\t\t\tlet x = e.clientX,\n\t\t\t\t\ty = e.clientY,\n\t\t\t\t\tdx = x - self.x,\n\t\t\t\t\tdy = y - self.y;\n\t\t\t\tself.x = x;\n\t\t\t\tself.y = y;\n\t\t\t\tmoved = true;\n\t\t\t\t(dx || dy) && onTouchOrPointerDelta(dx, dy);\n\t\t\t},\n\t\t\t_onHover = e => {self.event = e; onHover(self);},\n\t\t\t_onHoverEnd = e => {self.event = e; onHoverEnd(self);},\n\t\t\t_onClick = e => _ignoreCheck(e) || (_getEvent(e, preventDefault) && onClick(self));\n\n\t\tonStopDelayedCall = self._dc = gsap.delayedCall(onStopDelay || 0.25, onStopFunc).pause();\n\n\t\tself.deltaX = self.deltaY = 0;\n\t\tself._vx = _getVelocityProp(0, 50, true);\n\t\tself._vy = _getVelocityProp(0, 50, true);\n\t\tself.scrollX = scrollFuncX;\n\t\tself.scrollY = scrollFuncY;\n\t\tself.isDragging = self.isGesturing = self.isPressed = false;\n\t\t_context(this);\n\t\tself.enable = e => {\n\t\t\tif (!self.isEnabled) {\n\t\t\t\t_addListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\t\t\t\ttype.indexOf(\"scroll\") >= 0 && _addListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, preventDefault, capture);\n\t\t\t\ttype.indexOf(\"wheel\") >= 0 && _addListener(target, \"wheel\", _onWheel, preventDefault, capture);\n\t\t\t\tif ((type.indexOf(\"touch\") >= 0 && _isTouch) || type.indexOf(\"pointer\") >= 0) {\n\t\t\t\t\t_addListener(target, _eventTypes[0], _onPress, preventDefault, capture);\n\t\t\t\t\t_addListener(ownerDoc, _eventTypes[2], _onRelease);\n\t\t\t\t\t_addListener(ownerDoc, _eventTypes[3], _onRelease);\n\t\t\t\t\tallowClicks && _addListener(target, \"click\", clickCapture, false, true);\n\t\t\t\t\tonClick && _addListener(target, \"click\", _onClick);\n\t\t\t\t\tonGestureStart && _addListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\t\t\t\t\tonGestureEnd && _addListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\t\t\t\t\tonHover && _addListener(target, _pointerType + \"enter\", _onHover);\n\t\t\t\t\tonHoverEnd && _addListener(target, _pointerType + \"leave\", _onHoverEnd);\n\t\t\t\t\tonMove && _addListener(target, _pointerType + \"move\", _onMove);\n\t\t\t\t}\n\t\t\t\tself.isEnabled = true;\n\t\t\t\te && e.type && _onPress(e);\n\t\t\t\tonEnable && onEnable(self);\n\t\t\t}\n\t\t\treturn self;\n\t\t};\n\t\tself.disable = () => {\n\t\t\tif (self.isEnabled) {\n\t\t\t\t// only remove the _onScroll listener if there aren't any others that rely on the functionality.\n\t\t\t\t_observers.filter(o => o !== self && _isViewport(o.target)).length || _removeListener(isViewport ? ownerDoc : target, \"scroll\", _onScroll);\n\t\t\t\tif (self.isPressed) {\n\t\t\t\t\tself._vx.reset();\n\t\t\t\t\tself._vy.reset();\n\t\t\t\t\t_removeListener(isNormalizer ? target : ownerDoc, _eventTypes[1], _onDrag, true);\n\t\t\t\t}\n\t\t\t\t_removeListener(isViewport ? ownerDoc : target, \"scroll\", onScroll, capture);\n\t\t\t\t_removeListener(target, \"wheel\", _onWheel, capture);\n\t\t\t\t_removeListener(target, _eventTypes[0], _onPress, capture);\n\t\t\t\t_removeListener(ownerDoc, _eventTypes[2], _onRelease);\n\t\t\t\t_removeListener(ownerDoc, _eventTypes[3], _onRelease);\n\t\t\t\t_removeListener(target, \"click\", clickCapture, true);\n\t\t\t\t_removeListener(target, \"click\", _onClick);\n\t\t\t\t_removeListener(ownerDoc, \"gesturestart\", _onGestureStart);\n\t\t\t\t_removeListener(ownerDoc, \"gestureend\", _onGestureEnd);\n\t\t\t\t_removeListener(target, _pointerType + \"enter\", _onHover);\n\t\t\t\t_removeListener(target, _pointerType + \"leave\", _onHoverEnd);\n\t\t\t\t_removeListener(target, _pointerType + \"move\", _onMove);\n\t\t\t\tself.isEnabled = self.isPressed = self.isDragging = false;\n\t\t\t\tonDisable && onDisable(self);\n\t\t\t}\n\t\t};\n\n\t\tself.kill = self.revert = () => {\n\t\t\tself.disable();\n\t\t\tlet i = _observers.indexOf(self);\n\t\t\ti >= 0 && _observers.splice(i, 1);\n\t\t\t_normalizer === self && (_normalizer = 0);\n\t\t}\n\n\t\t_observers.push(self);\n\t\tisNormalizer && _isViewport(target) && (_normalizer = self);\n\n\t\tself.enable(event);\n\t}\n\n\tget velocityX() {\n\t\treturn this._vx.getVelocity();\n\t}\n\tget velocityY() {\n\t\treturn this._vy.getVelocity();\n\t}\n\n}\n\nObserver.version = \"3.12.2\";\nObserver.create = vars => new Observer(vars);\nObserver.register = _initCore;\nObserver.getAll = () => _observers.slice();\nObserver.getById = id => _observers.filter(o => o.vars.id === id)[0];\n\n_getGSAP() && gsap.registerPlugin(Observer);\n\nexport { Observer as default, _isViewport, _scrollers, _getScrollFunc, _getProxyProp, _proxies, _getVelocityProp, _vertical, _horizontal, _getTarget };"],"names":["_getGSAP","gsap","window","registerPlugin","_coreInitted","_win","_doc","_docEl","_body","_isTouch","_pointerType","ScrollTrigger","_root","_normalizer","_eventTypes","_context","_startup","_observers","_scrollers","_proxies","_getProxyProp","element","property","indexOf","_isViewport","el","_addListener","type","func","nonPassive","capture","addEventListener","passive","_removeListener","removeEventListener","_onScroll","isPressed","cache","_scrollCacheFunc","f","doNotCache","cachingFunc","value","history","scrollRestoration","isNormalizing","v","Math","round","iOS","cacheID","_bridge","offset","_getTarget","t","self","_ctx","selector","utils","toArray","config","nullTargetWarn","console","warn","_getScrollFunc","s","sc","scrollingElement","i","_vertical","push","prev","arguments","length","target","smooth","getProperty","_getVelocityProp","minTimeRefresh","useDelta","update","force","_getTime","min","t1","v2","v1","t2","dropToZeroTime","max","reset","getVelocity","latestValue","tOld","vOld","_getEvent","e","preventDefault","_gsapAllow","changedTouches","_getAbsoluteMax","a","abs","_setScrollTrigger","core","globals","_integrate","data","bridge","scrollers","proxies","name","_initCore","document","body","documentElement","clamp","context","Observer","isTouch","matchMedia","matches","navigator","maxTouchPoints","msMaxTouchPoints","eventTypes","split","setTimeout","Date","now","_scrollLeft","_scrollTop","_horizontal","p","p2","os","os2","d","d2","scrollTo","pageXOffset","op","pageYOffset","init","vars","tolerance","dragMinimum","lineHeight","debounce","onStop","onStopDelay","ignore","wheelSpeed","event","onDragStart","onDragEnd","onDrag","onPress","onRelease","onRight","onLeft","onUp","onDown","onChangeX","onChangeY","onChange","onToggleX","onToggleY","onHover","onHoverEnd","onMove","ignoreCheck","isNormalizer","onGestureStart","onGestureEnd","onWheel","onEnable","onDisable","onClick","scrollSpeed","allowClicks","lockAxis","onLockAxis","clickCapture","onClickTime","_ignoreCheck","isPointerOrTouch","limitToTouch","pointerType","dx","deltaX","dy","deltaY","changedX","changedY","prevDeltaX","prevDeltaY","moved","dragged","locked","wheeled","id","onDelta","x","y","index","_vx","_vy","requestAnimationFrame","onTouchOrPointerDelta","axis","_onDrag","clientX","clientY","isDragging","startX","startY","_onGestureStart","touches","isGesturing","_onGestureEnd","onScroll","scrollFuncX","scrollFuncY","scrollX","scrollY","onStopDelayedCall","restart","_onWheel","multiplier","deltaMode","innerHeight","_onMove","_onHover","_onHoverEnd","_onClick","parseFloat","getComputedStyle","this","isViewport","ownerDoc","ownerDocument","_onPress","button","pause","_onRelease","isTrackingDrag","isNaN","wasDragging","eventData","delayedCall","defaultPrevented","click","createEvent","syntheticEvent","initMouseEvent","screenX","screenY","dispatchEvent","_dc","onStopFunc","enable","isEnabled","disable","filter","o","kill","revert","splice","version","create","register","getAll","slice","getById"],"mappings":"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"}