{"version":3,"file":"static/chunks/992-db7f7c6351e4c1b9.js","mappings":"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","sources":["webpack://_N_E/./node_modules/bezier-easing/src/index.js","webpack://_N_E/./node_modules/parallax-controller/dist/parallax-controller.esm.js","webpack://_N_E/./node_modules/react-scroll-parallax/dist/react-scroll-parallax.esm.js","webpack://_N_E/"],"sourcesContent":["/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","import bezier from 'bezier-easing';\n\nvar Limits = function Limits(properties) {\n this.startX = properties.startX;\n this.startY = properties.startY;\n this.endX = properties.endX;\n this.endY = properties.endY; // Used to calculate the progress of the element\n\n this.totalX = this.endX - this.startX;\n this.totalY = this.endY - this.startY; // Used to scale translate effects\n\n this.startMultiplierX = properties.startMultiplierX || 1;\n this.endMultiplierX = properties.endMultiplierX || 1;\n this.startMultiplierY = properties.startMultiplierY || 1;\n this.endMultiplierY = properties.endMultiplierY || 1;\n};\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar ValidCSSEffects;\n\n(function (ValidCSSEffects) {\n ValidCSSEffects[\"speed\"] = \"speed\";\n ValidCSSEffects[\"translateX\"] = \"translateX\";\n ValidCSSEffects[\"translateY\"] = \"translateY\";\n ValidCSSEffects[\"rotate\"] = \"rotate\";\n ValidCSSEffects[\"rotateX\"] = \"rotateX\";\n ValidCSSEffects[\"rotateY\"] = \"rotateY\";\n ValidCSSEffects[\"rotateZ\"] = \"rotateZ\";\n ValidCSSEffects[\"scale\"] = \"scale\";\n ValidCSSEffects[\"scaleX\"] = \"scaleX\";\n ValidCSSEffects[\"scaleY\"] = \"scaleY\";\n ValidCSSEffects[\"scaleZ\"] = \"scaleZ\";\n ValidCSSEffects[\"opacity\"] = \"opacity\";\n})(ValidCSSEffects || (ValidCSSEffects = {}));\n\nvar Units;\n\n(function (Units) {\n Units[\"px\"] = \"px\";\n Units[\"%\"] = \"%\";\n Units[\"vh\"] = \"vh\";\n Units[\"vw\"] = \"vw\";\n})(Units || (Units = {}));\n\nvar RotationUnits;\n\n(function (RotationUnits) {\n RotationUnits[\"deg\"] = \"deg\";\n RotationUnits[\"turn\"] = \"turn\";\n RotationUnits[\"rad\"] = \"rad\";\n})(RotationUnits || (RotationUnits = {}));\n\nvar ScaleUnits;\n\n(function (ScaleUnits) {\n ScaleUnits[\"\"] = \"\";\n})(ScaleUnits || (ScaleUnits = {}));\n\nvar ScrollAxis;\n\n(function (ScrollAxis) {\n ScrollAxis[\"vertical\"] = \"vertical\";\n ScrollAxis[\"horizontal\"] = \"horizontal\";\n})(ScrollAxis || (ScrollAxis = {}));\n\nvar EasingPreset;\n\n(function (EasingPreset) {\n EasingPreset[\"ease\"] = \"ease\";\n EasingPreset[\"easeIn\"] = \"easeIn\";\n EasingPreset[\"easeOut\"] = \"easeOut\";\n EasingPreset[\"easeInOut\"] = \"easeInOut\";\n EasingPreset[\"easeInQuad\"] = \"easeInQuad\";\n EasingPreset[\"easeInCubic\"] = \"easeInCubic\";\n EasingPreset[\"easeInQuart\"] = \"easeInQuart\";\n EasingPreset[\"easeInQuint\"] = \"easeInQuint\";\n EasingPreset[\"easeInSine\"] = \"easeInSine\";\n EasingPreset[\"easeInExpo\"] = \"easeInExpo\";\n EasingPreset[\"easeInCirc\"] = \"easeInCirc\";\n EasingPreset[\"easeOutQuad\"] = \"easeOutQuad\";\n EasingPreset[\"easeOutCubic\"] = \"easeOutCubic\";\n EasingPreset[\"easeOutQuart\"] = \"easeOutQuart\";\n EasingPreset[\"easeOutQuint\"] = \"easeOutQuint\";\n EasingPreset[\"easeOutSine\"] = \"easeOutSine\";\n EasingPreset[\"easeOutExpo\"] = \"easeOutExpo\";\n EasingPreset[\"easeOutCirc\"] = \"easeOutCirc\";\n EasingPreset[\"easeInOutQuad\"] = \"easeInOutQuad\";\n EasingPreset[\"easeInOutCubic\"] = \"easeInOutCubic\";\n EasingPreset[\"easeInOutQuart\"] = \"easeInOutQuart\";\n EasingPreset[\"easeInOutQuint\"] = \"easeInOutQuint\";\n EasingPreset[\"easeInOutSine\"] = \"easeInOutSine\";\n EasingPreset[\"easeInOutExpo\"] = \"easeInOutExpo\";\n EasingPreset[\"easeInOutCirc\"] = \"easeInOutCirc\";\n EasingPreset[\"easeInBack\"] = \"easeInBack\";\n EasingPreset[\"easeOutBack\"] = \"easeOutBack\";\n EasingPreset[\"easeInOutBack\"] = \"easeInOutBack\";\n})(EasingPreset || (EasingPreset = {}));\n\n/**\r\n * Creates a unique id to distinguish parallax elements.\r\n */\nvar id = 0;\nfunction createId() {\n ++id;\n return id;\n}\n\nvar Rect = /*#__PURE__*/function () {\n function Rect(options) {\n var rect = options.el.getBoundingClientRect(); // rect is based on viewport -- must adjust for relative scroll container\n\n if (options.view.scrollContainer) {\n var scrollRect = options.view.scrollContainer.getBoundingClientRect();\n rect = _extends({}, rect, {\n top: rect.top - scrollRect.top,\n right: rect.right - scrollRect.left,\n bottom: rect.bottom - scrollRect.top,\n left: rect.left - scrollRect.left\n });\n }\n\n this.height = options.el.offsetHeight;\n this.width = options.el.offsetWidth;\n this.left = rect.left;\n this.right = rect.right;\n this.top = rect.top;\n this.bottom = rect.bottom;\n\n if (options.rootMargin) {\n this._setRectWithRootMargin(options.rootMargin);\n }\n }\n /**\r\n * Apply root margin to all properties\r\n */\n\n\n var _proto = Rect.prototype;\n\n _proto._setRectWithRootMargin = function _setRectWithRootMargin(rootMargin) {\n var totalRootY = rootMargin.top + rootMargin.bottom;\n var totalRootX = rootMargin.left + rootMargin.right;\n this.top -= rootMargin.top;\n this.right += rootMargin.right;\n this.bottom += rootMargin.bottom;\n this.left -= rootMargin.left;\n this.height += totalRootY;\n this.width += totalRootX;\n };\n\n return Rect;\n}();\n\nvar VALID_UNITS = [ScaleUnits[''], Units.px, Units['%'], Units['vh'], Units['vw'], RotationUnits.deg, RotationUnits.turn, RotationUnits.rad];\n/**\r\n * Determines the unit of a string and parses the value\r\n */\n\nfunction parseValueAndUnit(str, defaultUnit) {\n if (defaultUnit === void 0) {\n defaultUnit = Units['%'];\n }\n\n var out = {\n value: 0,\n unit: defaultUnit\n };\n if (typeof str === 'undefined') return out;\n var isValid = typeof str === 'number' || typeof str === 'string';\n\n if (!isValid) {\n throw new Error('Invalid value provided. Must provide a value as a string or number');\n }\n\n str = String(str);\n out.value = parseFloat(str); // @ts-ignore\n\n out.unit = str.match(/[\\d.\\-+]*\\s*(.*)/)[1] || defaultUnit; // @ts-expect-error\n\n var isValidUnit = VALID_UNITS.includes(out.unit);\n\n if (!isValidUnit) {\n throw new Error('Invalid unit provided.');\n }\n\n return out;\n}\n\nvar easingPresets = {\n ease: [0.25, 0.1, 0.25, 1.0],\n easeIn: [0.42, 0.0, 1.0, 1.0],\n easeOut: [0.0, 0.0, 0.58, 1.0],\n easeInOut: [0.42, 0.0, 0.58, 1.0],\n\n /* Ease IN curves */\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeInSine: [0.47, 0.0, 0.745, 0.715],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n\n /* Ease Out Curves */\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeOutCubic: [0.215, 0.61, 0.355, 1.0],\n easeOutQuart: [0.165, 0.84, 0.44, 1.0],\n easeOutQuint: [0.23, 1.0, 0.32, 1.0],\n easeOutSine: [0.39, 0.575, 0.565, 1.0],\n easeOutExpo: [0.19, 1.0, 0.22, 1.0],\n easeOutCirc: [0.075, 0.82, 0.165, 1.0],\n\n /* Ease IN Out Curves */\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInOutCubic: [0.645, 0.045, 0.355, 1.0],\n easeInOutQuart: [0.77, 0.0, 0.175, 1.0],\n easeInOutQuint: [0.86, 0.0, 0.07, 1.0],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInOutExpo: [1.0, 0.0, 0.0, 1.0],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n\n /* Ease Bounce Curves */\n easeInBack: [0.6, -0.28, 0.735, 0.045],\n easeOutBack: [0.175, 0.885, 0.32, 1.275],\n easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n};\n\nfunction createEasingFunction(easing) {\n if (Array.isArray(easing)) {\n return bezier(easing[0], easing[1], easing[2], easing[3]);\n }\n\n if (typeof easing === 'string' && typeof easingPresets[easing] !== 'undefined') {\n var params = easingPresets[easing];\n return bezier(params[0], params[1], params[2], params[3]);\n }\n\n return;\n}\n\nvar PARALLAX_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects);\nvar MAP_EFFECT_TO_DEFAULT_UNIT = {\n speed: 'px',\n translateX: '%',\n translateY: '%',\n rotate: 'deg',\n rotateX: 'deg',\n rotateY: 'deg',\n rotateZ: 'deg',\n scale: '',\n scaleX: '',\n scaleY: '',\n scaleZ: '',\n opacity: ''\n};\n/**\r\n * Takes a parallax element effects and parses the properties to get the start and end values and units.\r\n */\n\nfunction parseElementTransitionEffects(props, scrollAxis) {\n var parsedEffects = {};\n PARALLAX_EFFECTS.forEach(function (key) {\n var defaultValue = MAP_EFFECT_TO_DEFAULT_UNIT[key]; // If the provided type is a number, this must be the speed prop\n // in which case we need to construct the proper translate config\n\n if (typeof (props == null ? void 0 : props[key]) === 'number') {\n var value = props == null ? void 0 : props[key];\n var startSpeed = (value || 0) * 10 + \"px\";\n var endSpeed = (value || 0) * -10 + \"px\";\n var startParsed = parseValueAndUnit(startSpeed);\n var endParsed = parseValueAndUnit(endSpeed);\n var speedConfig = {\n start: startParsed.value,\n end: endParsed.value,\n unit: startParsed.unit\n }; // Manually set translate y value\n\n if (scrollAxis === ScrollAxis.vertical) {\n parsedEffects.translateY = speedConfig;\n } // Manually set translate y value\n\n\n if (scrollAxis === ScrollAxis.horizontal) {\n parsedEffects.translateX = speedConfig;\n }\n } // The rest are standard effect being parsed\n\n\n if (Array.isArray(props == null ? void 0 : props[key])) {\n var _value = props == null ? void 0 : props[key];\n\n if (typeof _value[0] !== 'undefined' && typeof _value[1] !== 'undefined') {\n var _startParsed = parseValueAndUnit(_value == null ? void 0 : _value[0], defaultValue);\n\n var _endParsed = parseValueAndUnit(_value == null ? void 0 : _value[1], defaultValue);\n\n var easing = createEasingFunction(_value == null ? void 0 : _value[2]);\n parsedEffects[key] = {\n start: _startParsed.value,\n end: _endParsed.value,\n unit: _startParsed.unit,\n easing: easing\n };\n\n if (_startParsed.unit !== _endParsed.unit) {\n throw new Error('Must provide matching units for the min and max offset values of each axis.');\n }\n }\n }\n });\n return parsedEffects;\n}\n\n/**\r\n * Returns the percent (0 - 100) moved based on position in the viewport\r\n */\nfunction getProgressAmount(\n/*\r\n * The start value from cache\r\n */\nstart,\n/*\r\n * total dist the element has to move to be 100% complete (view width/height + element width/height)\r\n */\ntotalDist,\n/*\r\n * Current scroll value\r\n */\ncurrentScroll,\n/*\r\n * an optional easing function to apply\r\n */\neasing) {\n // adjust cached value\n var startAdjustedScroll = currentScroll - start; // Amount the element has moved based on current and total distance to move\n\n var amount = startAdjustedScroll / totalDist; // Apply bezier easing if provided\n\n if (easing) {\n amount = easing(amount);\n }\n\n return amount;\n}\n\n/**\r\n * Takes two values (start, end) and returns whether the current scroll is within range\r\n * @param {number} start - start of scroll (x/y)\r\n * @param {number} end - end of scroll (x/y)\r\n * @param {number} scroll - current scroll (x/y)\r\n * @return {boolean} isInView\r\n */\nfunction isElementInView(start, end, scroll) {\n var isInView = scroll >= start && scroll <= end;\n return isInView;\n}\n\n// Scale between AKA normalize\nfunction scaleBetween(value, newMin, newMax, oldMin, oldMax) {\n return (newMax - newMin) * (value - oldMin) / (oldMax - oldMin) + newMin;\n}\n\n/**\r\n * Scales a start and end value of an effect based on percent moved and easing function\r\n */\n\nfunction scaleEffectByProgress(effect, progress) {\n var value = scaleBetween(typeof effect.easing === 'function' ? effect.easing(progress) : progress, (effect == null ? void 0 : effect.start) || 0, (effect == null ? void 0 : effect.end) || 0, 0, 1);\n return {\n value: value,\n unit: effect == null ? void 0 : effect.unit\n };\n}\n\nvar TRANSFORM_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects).filter(function (v) {\n return v !== 'opacity';\n});\nfunction setWillChangeStyles(el, effects) {\n var keys = Object.keys(effects);\n var hasOpacity = keys.includes('opacity');\n var willChange = \"transform\" + (hasOpacity ? ',opacity' : '');\n el.style.willChange = willChange;\n}\nfunction setElementStyles(effects, progress, el) {\n if (!el) return;\n var transform = getTransformStyles(effects, progress);\n var opacity = getOpacityStyles(effects, progress);\n el.style.transform = transform;\n el.style.opacity = opacity;\n}\nfunction getOpacityStyles(effects, progress) {\n var scaledOpacity = effects['opacity'] && scaleEffectByProgress(effects['opacity'], progress);\n\n if (typeof scaledOpacity === 'undefined' || typeof scaledOpacity.value === 'undefined' || typeof scaledOpacity.unit === 'undefined') {\n return '';\n }\n\n var styleStr = \"\" + scaledOpacity.value;\n return styleStr;\n}\nfunction getTransformStyles(effects, progress) {\n var transform = TRANSFORM_EFFECTS.reduce(function (acc, key) {\n var scaledEffect = // @ts-expect-error\n effects[key] && scaleEffectByProgress(effects[key], progress);\n\n if (typeof scaledEffect === 'undefined' || typeof scaledEffect.value === 'undefined' || typeof scaledEffect.unit === 'undefined') {\n return acc;\n }\n\n var styleStr = key + \"(\" + scaledEffect.value + scaledEffect.unit + \")\";\n return acc + styleStr;\n }, '');\n return transform;\n}\n/**\r\n * Takes a parallax element and removes parallax offset styles.\r\n * @param {object} element\r\n */\n\nfunction resetStyles(element) {\n var el = element.el;\n if (!el) return;\n el.style.transform = '';\n el.style.opacity = '';\n}\n\nfunction createLimitsForRelativeElements(rect, view, scroll, shouldAlwaysCompleteAnimation) {\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right; // add scroll\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y;\n\n if (shouldAlwaysCompleteAnimation) {\n if (scroll.y + rect.top < view.height) {\n startY = 0;\n }\n\n if (scroll.x + rect.left < view.width) {\n startX = 0;\n }\n\n if (endY > view.scrollHeight - view.height) {\n endY = view.scrollHeight - view.height;\n }\n\n if (endX > view.scrollWidth - view.width) {\n endX = view.scrollWidth - view.width;\n }\n }\n\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY\n });\n return limits;\n}\n\nfunction getTranslateScalar(startTranslatePx, endTranslatePx, totalDist) {\n var slow = endTranslatePx > startTranslatePx; // calculating necessary scale to increase translations\n\n var totalAbsOff = (Math.abs(startTranslatePx) + Math.abs(endTranslatePx)) * (slow ? -1 : 1);\n var totalDistTrue = totalDist + totalAbsOff; // Determine multiple to scale by, only values greater than 1\n\n var scale = Math.max(totalDist / totalDistTrue, 1);\n return scale;\n}\n\n/**\r\n * Return the start and end pixel values for an elements translations\r\n */\nfunction getStartEndValueInPx(translate, elementSize) {\n var start = translate.start,\n end = translate.end,\n unit = translate.unit;\n\n if (unit === '%') {\n var scale = elementSize / 100;\n start = start * scale;\n end = end * scale;\n }\n\n if (unit === 'vw') {\n var startScale = start / 100;\n var endScale = end / 100;\n start = window.innerWidth * startScale;\n end = window.innerWidth * endScale;\n }\n\n if (unit === 'vh') {\n var _startScale = start / 100;\n\n var _endScale = end / 100;\n\n start = window.innerHeight * _startScale;\n end = window.innerHeight * _endScale;\n }\n\n return {\n start: start,\n end: end\n };\n}\n\nvar DEFAULT_VALUE = {\n start: 0,\n end: 0,\n unit: ''\n};\nfunction createLimitsWithTranslationsForRelativeElements(rect, view, effects, scroll, scrollAxis, shouldAlwaysCompleteAnimation) {\n // get start and end accounting for percent effects\n var translateX = effects.translateX || DEFAULT_VALUE;\n var translateY = effects.translateY || DEFAULT_VALUE;\n\n var _getStartEndValueInPx = getStartEndValueInPx(translateX, rect.width),\n startTranslateXPx = _getStartEndValueInPx.start,\n endTranslateXPx = _getStartEndValueInPx.end;\n\n var _getStartEndValueInPx2 = getStartEndValueInPx(translateY, rect.height),\n startTranslateYPx = _getStartEndValueInPx2.start,\n endTranslateYPx = _getStartEndValueInPx2.end; // default starting values\n\n\n var startY = rect.top - view.height;\n var startX = rect.left - view.width;\n var endY = rect.bottom;\n var endX = rect.right;\n var startMultiplierY = 1;\n var endMultiplierY = 1;\n\n if (scrollAxis === ScrollAxis.vertical) {\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, view.height + rect.height);\n endMultiplierY = startMultiplierY;\n }\n\n var startMultiplierX = 1;\n var endMultiplierX = 1;\n\n if (scrollAxis === ScrollAxis.horizontal) {\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, view.width + rect.width);\n endMultiplierX = startMultiplierX;\n } // Apply the scale to initial values\n\n\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n } // add scroll\n\n\n startX += scroll.x;\n endX += scroll.x;\n startY += scroll.y;\n endY += scroll.y; // NOTE: please refactor and isolate this :(\n\n if (shouldAlwaysCompleteAnimation) {\n var topBeginsInView = scroll.y + rect.top < view.height;\n var leftBeginsInView = scroll.x + rect.left < view.width;\n var bottomEndsInView = scroll.y + rect.bottom > view.scrollHeight - view.height;\n var rightEndsInView = scroll.x + rect.right > view.scrollWidth - view.height;\n\n if (topBeginsInView && bottomEndsInView) {\n startMultiplierY = 1;\n endMultiplierY = 1;\n startY = 0;\n endY = view.scrollHeight - view.height;\n }\n\n if (leftBeginsInView && rightEndsInView) {\n startMultiplierX = 1;\n endMultiplierX = 1;\n startX = 0;\n endX = view.scrollWidth - view.width;\n }\n\n if (!topBeginsInView && bottomEndsInView) {\n startY = rect.top - view.height + scroll.y;\n endY = view.scrollHeight - view.height;\n var totalDist = endY - startY;\n startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, totalDist);\n endMultiplierY = 1;\n\n if (startTranslateYPx < 0) {\n startY = startY + startTranslateYPx * startMultiplierY;\n }\n }\n\n if (!leftBeginsInView && rightEndsInView) {\n startX = rect.left - view.width + scroll.x;\n endX = view.scrollWidth - view.width;\n\n var _totalDist = endX - startX;\n\n startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist);\n endMultiplierX = 1;\n\n if (startTranslateXPx < 0) {\n startX = startX + startTranslateXPx * startMultiplierX;\n }\n }\n\n if (topBeginsInView && !bottomEndsInView) {\n startY = 0;\n endY = rect.bottom + scroll.y;\n\n var _totalDist2 = endY - startY;\n\n startMultiplierY = 1;\n endMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, _totalDist2);\n\n if (endTranslateYPx > 0) {\n endY = endY + endTranslateYPx * endMultiplierY;\n }\n }\n\n if (leftBeginsInView && !rightEndsInView) {\n startX = 0;\n endX = rect.right + scroll.x;\n\n var _totalDist3 = endX - startX;\n\n startMultiplierX = 1;\n endMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist3);\n\n if (endTranslateXPx > 0) {\n endX = endX + endTranslateXPx * endMultiplierX;\n }\n }\n }\n\n var limits = new Limits({\n startX: startX,\n startY: startY,\n endX: endX,\n endY: endY,\n startMultiplierX: startMultiplierX,\n endMultiplierX: endMultiplierX,\n startMultiplierY: startMultiplierY,\n endMultiplierY: endMultiplierY\n });\n return limits;\n}\n\nfunction scaleTranslateEffectsForSlowerScroll(effects, limits) {\n var effectsCopy = _extends({}, effects);\n\n if (effectsCopy.translateX) {\n effectsCopy.translateX = _extends({}, effects.translateX, {\n start: effectsCopy.translateX.start * limits.startMultiplierX,\n end: effectsCopy.translateX.end * limits.endMultiplierX\n });\n }\n\n if (effectsCopy.translateY) {\n effectsCopy.translateY = _extends({}, effects.translateY, {\n start: effectsCopy.translateY.start * limits.startMultiplierY,\n end: effectsCopy.translateY.end * limits.endMultiplierY\n });\n }\n\n return effectsCopy;\n}\n\nfunction getShouldScaleTranslateEffects(props, effects, scrollAxis) {\n if (props.rootMargin || props.targetElement || props.shouldDisableScalingTranslations) {\n return false;\n }\n\n if (!!effects.translateX && scrollAxis === ScrollAxis.horizontal || !!effects.translateY && scrollAxis === ScrollAxis.vertical) {\n return true;\n }\n\n return false;\n}\n\nvar clamp = function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n};\n\nvar Element = /*#__PURE__*/function () {\n function Element(options) {\n this.el = options.el;\n this.props = options.props;\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n this.id = createId();\n this.effects = parseElementTransitionEffects(this.props, this.scrollAxis);\n this.isInView = null;\n this.progress = 0;\n\n this._setElementEasing(options.props.easing);\n\n setWillChangeStyles(options.el, this.effects);\n }\n\n var _proto = Element.prototype;\n\n _proto.updateProps = function updateProps(nextProps) {\n this.props = _extends({}, this.props, nextProps);\n this.effects = parseElementTransitionEffects(nextProps, this.scrollAxis);\n\n this._setElementEasing(nextProps.easing);\n\n return this;\n };\n\n _proto.setCachedAttributes = function setCachedAttributes(view, scroll) {\n // NOTE: Must reset styles before getting the rect, as it might impact the natural position\n resetStyles(this);\n this.rect = new Rect({\n el: this.props.targetElement || this.el,\n rootMargin: this.props.rootMargin,\n view: view\n });\n var shouldScaleTranslateEffects = getShouldScaleTranslateEffects(this.props, this.effects, this.scrollAxis);\n\n if (typeof this.props.startScroll === 'number' && typeof this.props.endScroll === 'number') {\n this.limits = new Limits({\n startX: this.props.startScroll,\n startY: this.props.startScroll,\n endX: this.props.endScroll,\n endY: this.props.endScroll\n }); // Undo the reset -- place it back at current position with styles\n\n this._setElementStyles();\n\n return this;\n }\n\n if (shouldScaleTranslateEffects) {\n this.limits = createLimitsWithTranslationsForRelativeElements(this.rect, view, this.effects, scroll, this.scrollAxis, this.props.shouldAlwaysCompleteAnimation);\n this.scaledEffects = scaleTranslateEffectsForSlowerScroll(this.effects, this.limits);\n } else {\n this.limits = createLimitsForRelativeElements(this.rect, view, scroll, this.props.shouldAlwaysCompleteAnimation);\n } // Undo the reset -- place it back at current position with styles\n\n\n this._setElementStyles();\n\n return this;\n };\n\n _proto._updateElementIsInView = function _updateElementIsInView(nextIsInView) {\n // NOTE: Check if this is the first change to make sure onExit isn't called\n var isFirstChange = this.isInView === null;\n\n if (nextIsInView !== this.isInView) {\n if (nextIsInView) {\n this.props.onEnter && this.props.onEnter(this);\n } else if (!isFirstChange) {\n this._setFinalProgress();\n\n this._setElementStyles();\n\n this.props.onExit && this.props.onExit(this);\n }\n }\n\n this.isInView = nextIsInView;\n };\n\n _proto._setFinalProgress = function _setFinalProgress() {\n var finalProgress = clamp(Math.round(this.progress), 0, 1);\n\n this._updateElementProgress(finalProgress);\n };\n\n _proto._setElementStyles = function _setElementStyles() {\n if (this.props.disabled || this.disabledParallaxController) return;\n var effects = this.scaledEffects || this.effects;\n setElementStyles(effects, this.progress, this.el);\n };\n\n _proto._updateElementProgress = function _updateElementProgress(nextProgress) {\n this.progress = nextProgress;\n this.props.onProgressChange && this.props.onProgressChange(this.progress);\n this.props.onChange && this.props.onChange(this);\n };\n\n _proto._setElementEasing = function _setElementEasing(easing) {\n this.easing = createEasingFunction(easing);\n };\n\n _proto.updateElementOptions = function updateElementOptions(options) {\n this.scrollAxis = options.scrollAxis;\n this.disabledParallaxController = options.disabledParallaxController || false;\n };\n\n _proto.updatePosition = function updatePosition(scroll) {\n if (!this.limits) return this;\n var isVertical = this.scrollAxis === ScrollAxis.vertical;\n var isFirstChange = this.isInView === null; // based on scroll axis\n\n var start = isVertical ? this.limits.startY : this.limits.startX;\n var end = isVertical ? this.limits.endY : this.limits.endX;\n var total = isVertical ? this.limits.totalY : this.limits.totalX;\n var s = isVertical ? scroll.y : scroll.x; // check if in view\n\n var nextIsInView = isElementInView(start, end, s);\n\n this._updateElementIsInView(nextIsInView); // set the progress if in view or this is the first change\n\n\n if (nextIsInView) {\n var nextProgress = getProgressAmount(start, total, s, this.easing);\n\n this._updateElementProgress(nextProgress);\n\n this._setElementStyles();\n } else if (isFirstChange) {\n // NOTE: this._updateElementProgress -- dont use this because it will trigger onChange\n this.progress = clamp(Math.round(getProgressAmount(start, total, s, this.easing)), 0, 1);\n\n this._setElementStyles();\n }\n\n return this;\n };\n\n return Element;\n}();\n\nvar View = /*#__PURE__*/function () {\n function View(config) {\n this.scrollContainer = config.scrollContainer;\n this.width = config.width;\n this.height = config.height;\n this.scrollHeight = config.scrollHeight;\n this.scrollWidth = config.scrollWidth;\n }\n\n var _proto = View.prototype;\n\n _proto.hasChanged = function hasChanged(params) {\n if (params.width !== this.width || params.height !== this.height || params.scrollWidth !== this.scrollWidth || params.scrollHeight !== this.scrollHeight) {\n return true;\n }\n\n return false;\n };\n\n _proto.setSize = function setSize(params) {\n this.width = params.width;\n this.height = params.height;\n this.scrollHeight = params.scrollHeight;\n this.scrollWidth = params.scrollWidth;\n return this;\n };\n\n return View;\n}();\n\nvar Scroll = /*#__PURE__*/function () {\n function Scroll(x, y) {\n this.x = x;\n this.y = y;\n this.dx = 0;\n this.dy = 0;\n }\n\n var _proto = Scroll.prototype;\n\n _proto.setScroll = function setScroll(x, y) {\n this.dx = x - this.x;\n this.dy = y - this.y;\n this.x = x;\n this.y = y;\n return this;\n };\n\n return Scroll;\n}();\n\nfunction testForPassiveScroll() {\n var supportsPassiveOption = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n return true;\n }\n }); // @ts-expect-error\n\n window.addEventListener('test', null, opts); // @ts-expect-error\n\n window.removeEventListener('test', null, opts);\n } catch (e) {}\n\n return supportsPassiveOption;\n}\n\n/**\r\n * -------------------------------------------------------\r\n * Parallax Controller\r\n * -------------------------------------------------------\r\n *\r\n * The global controller for setting up and managing a scroll view of elements.\r\n *\r\n */\n\nvar ParallaxController = /*#__PURE__*/function () {\n function ParallaxController(_ref) {\n var _ref$scrollAxis = _ref.scrollAxis,\n scrollAxis = _ref$scrollAxis === void 0 ? ScrollAxis.vertical : _ref$scrollAxis,\n scrollContainer = _ref.scrollContainer,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled;\n this.disabled = disabled;\n this.scrollAxis = scrollAxis; // All parallax elements to be updated\n\n this.elements = [];\n this._hasScrollContainer = !!scrollContainer;\n this.viewEl = scrollContainer != null ? scrollContainer : window; // Scroll and View\n\n var _this$_getScrollPosit = this._getScrollPosition(),\n x = _this$_getScrollPosit[0],\n y = _this$_getScrollPosit[1];\n\n this.scroll = new Scroll(x, y);\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: this._hasScrollContainer ? scrollContainer : undefined\n }); // Ticking\n\n this._ticking = false; // Passive support\n\n this._supportsPassive = testForPassiveScroll(); // Bind methods to class\n\n this._bindAllMethods(); // If this is initialized disabled, don't do anything below.\n\n\n if (this.disabled) return;\n\n this._addListeners(this.viewEl);\n\n this._addResizeObserver();\n\n this._setViewSize();\n }\n /**\r\n * Static method to instantiate the ParallaxController.\r\n * @returns {Class} ParallaxController\r\n */\n\n\n ParallaxController.init = function init(options) {\n var hasWindow = typeof window !== 'undefined';\n\n if (!hasWindow) {\n throw new Error('Looks like ParallaxController.init() was called on the server. This method must be called on the client.');\n }\n\n return new ParallaxController(options);\n };\n\n var _proto = ParallaxController.prototype;\n\n _proto._bindAllMethods = function _bindAllMethods() {\n var _this = this;\n\n ['_addListeners', '_removeListeners', '_getScrollPosition', '_handleScroll', '_handleUpdateCache', '_updateAllElements', '_updateElementPosition', '_setViewSize', '_addResizeObserver', '_checkIfViewHasChanged', '_getViewParams', 'getElements', 'createElement', 'removeElementById', 'resetElementStyles', 'updateElementPropsById', 'update', 'updateScrollContainer', 'destroy'].forEach(function (method) {\n // @ts-expect-error\n _this[method] = _this[method].bind(_this);\n });\n };\n\n _proto._addListeners = function _addListeners(el) {\n el.addEventListener('scroll', this._handleScroll, this._supportsPassive ? {\n passive: true\n } : false);\n window.addEventListener('resize', this._handleUpdateCache, false);\n window.addEventListener('blur', this._handleUpdateCache, false);\n window.addEventListener('focus', this._handleUpdateCache, false);\n window.addEventListener('load', this._handleUpdateCache, false);\n };\n\n _proto._removeListeners = function _removeListeners(el) {\n var _this$_resizeObserver;\n\n el.removeEventListener('scroll', this._handleScroll, false);\n window.removeEventListener('resize', this._handleUpdateCache, false);\n window.removeEventListener('blur', this._handleUpdateCache, false);\n window.removeEventListener('focus', this._handleUpdateCache, false);\n window.removeEventListener('load', this._handleUpdateCache, false);\n (_this$_resizeObserver = this._resizeObserver) == null ? void 0 : _this$_resizeObserver.disconnect();\n };\n\n _proto._addResizeObserver = function _addResizeObserver() {\n var _this2 = this;\n\n try {\n var observedEl = this._hasScrollContainer ? this.viewEl : document.documentElement;\n this._resizeObserver = new ResizeObserver(function () {\n return _this2.update();\n });\n\n this._resizeObserver.observe(observedEl);\n } catch (e) {\n console.warn('Failed to create the resize observer in the ParallaxContoller');\n }\n };\n\n _proto._getScrollPosition = function _getScrollPosition() {\n // Save current scroll\n // Supports IE 9 and up.\n var nx = this._hasScrollContainer ? // @ts-expect-error\n this.viewEl.scrollLeft : window.pageXOffset;\n var ny = this._hasScrollContainer ? // @ts-expect-error\n this.viewEl.scrollTop : window.pageYOffset;\n return [nx, ny];\n }\n /**\r\n * Window scroll handler sets scroll position\r\n * and then calls '_updateAllElements()'.\r\n */\n ;\n\n _proto._handleScroll = function _handleScroll() {\n var _this$elements;\n\n var _this$_getScrollPosit2 = this._getScrollPosition(),\n nx = _this$_getScrollPosit2[0],\n ny = _this$_getScrollPosit2[1];\n\n this.scroll.setScroll(nx, ny); // Only called if the last animation request has been\n // completed and there are parallax elements to update\n\n if (!this._ticking && ((_this$elements = this.elements) == null ? void 0 : _this$elements.length) > 0) {\n this._ticking = true; // @ts-ignore\n\n window.requestAnimationFrame(this._updateAllElements);\n }\n }\n /**\r\n * Window resize handler. Sets the new window inner height\r\n * then updates parallax element attributes and positions.\r\n */\n ;\n\n _proto._handleUpdateCache = function _handleUpdateCache() {\n this._setViewSize();\n\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */\n ;\n\n _proto._updateAllElements = function _updateAllElements(_temp) {\n var _this3 = this;\n\n var _ref2 = _temp === void 0 ? {} : _temp,\n updateCache = _ref2.updateCache;\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n if (updateCache) {\n element.setCachedAttributes(_this3.view, _this3.scroll);\n }\n\n _this3._updateElementPosition(element);\n });\n } // reset ticking so more animations can be called\n\n\n this._ticking = false;\n }\n /**\r\n * Update element positions.\r\n * Determines if the element is in view based on the cached\r\n * attributes, if so set the elements parallax styles.\r\n */\n ;\n\n _proto._updateElementPosition = function _updateElementPosition(element) {\n if (element.props.disabled || this.disabled) return;\n element.updatePosition(this.scroll);\n }\n /**\r\n * Gets the params to set in the View from the scroll container or the window\r\n */\n ;\n\n _proto._getViewParams = function _getViewParams() {\n if (this._hasScrollContainer) {\n // @ts-expect-error\n var _width = this.viewEl.offsetWidth; // @ts-expect-error\n\n var _height = this.viewEl.offsetHeight; // @ts-expect-error\n\n var _scrollHeight = this.viewEl.scrollHeight; // @ts-expect-error\n\n var _scrollWidth = this.viewEl.scrollWidth;\n return this.view.setSize({\n width: _width,\n height: _height,\n scrollHeight: _scrollHeight,\n scrollWidth: _scrollWidth\n });\n }\n\n var html = document.documentElement;\n var width = window.innerWidth || html.clientWidth;\n var height = window.innerHeight || html.clientHeight;\n var scrollHeight = html.scrollHeight;\n var scrollWidth = html.scrollWidth;\n return {\n width: width,\n height: height,\n scrollHeight: scrollHeight,\n scrollWidth: scrollWidth\n };\n }\n /**\r\n * Cache the view attributes\r\n */\n ;\n\n _proto._setViewSize = function _setViewSize() {\n return this.view.setSize(this._getViewParams());\n }\n /**\r\n * Checks if any of the cached attributes of the view have changed.\r\n * @returns boolean\r\n */\n ;\n\n _proto._checkIfViewHasChanged = function _checkIfViewHasChanged() {\n return this.view.hasChanged(this._getViewParams());\n }\n /**\r\n * -------------------------------------------------------\r\n * Public methods\r\n * -------------------------------------------------------\r\n */\n\n /**\r\n * Returns all the parallax elements in the controller\r\n */\n ;\n\n _proto.getElements = function getElements() {\n return this.elements;\n }\n /**\r\n * Creates and returns new parallax element with provided options to be managed by the controller.\r\n */\n ;\n\n _proto.createElement = function createElement(options) {\n var newElement = new Element(_extends({}, options, {\n scrollAxis: this.scrollAxis,\n disabledParallaxController: this.disabled\n }));\n newElement.setCachedAttributes(this.view, this.scroll);\n this.elements = this.elements ? [].concat(this.elements, [newElement]) : [newElement];\n\n this._updateElementPosition(newElement); // NOTE: This checks if the view has changed then update the controller and all elements if it has\n // This shouldn't always be necessary with a resize observer watching the view element\n // but there seems to be cases where the resize observer does not catch and update.\n\n\n if (this._checkIfViewHasChanged()) {\n this.update();\n }\n\n return newElement;\n }\n /**\r\n * Remove an element by id\r\n */\n ;\n\n _proto.removeElementById = function removeElementById(id) {\n if (!this.elements) return;\n this.elements = this.elements.filter(function (el) {\n return el.id !== id;\n });\n }\n /**\r\n * Updates an existing parallax element object with new options.\r\n */\n ;\n\n _proto.updateElementPropsById = function updateElementPropsById(id, props) {\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n if (el.id === id) {\n return el.updateProps(props);\n }\n\n return el;\n });\n }\n\n this.update();\n }\n /**\r\n * Remove a target elements parallax styles\r\n */\n ;\n\n _proto.resetElementStyles = function resetElementStyles(element) {\n resetStyles(element);\n }\n /**\r\n * Updates all cached attributes on parallax elements.\r\n */\n ;\n\n _proto.update = function update() {\n // Save the latest scroll position because window.scroll\n // may be called and the handle scroll event may not be called.\n var _this$_getScrollPosit3 = this._getScrollPosition(),\n nx = _this$_getScrollPosit3[0],\n ny = _this$_getScrollPosit3[1];\n\n this.scroll.setScroll(nx, ny);\n\n this._setViewSize();\n\n this._updateAllElements({\n updateCache: true\n });\n }\n /**\r\n * Updates the scroll container of the parallax controller\r\n */\n ;\n\n _proto.updateScrollContainer = function updateScrollContainer(el) {\n // remove existing listeners with current el first\n this._removeListeners(this.viewEl);\n\n this.viewEl = el;\n this._hasScrollContainer = !!el;\n this.view = new View({\n width: 0,\n height: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n scrollContainer: el\n });\n\n this._setViewSize();\n\n this._addListeners(this.viewEl);\n\n this._updateAllElements({\n updateCache: true\n });\n };\n\n _proto.disableParallaxController = function disableParallaxController() {\n this.disabled = true; // remove listeners\n\n this._removeListeners(this.viewEl); // reset all styles\n\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n }\n };\n\n _proto.enableParallaxController = function enableParallaxController() {\n var _this4 = this;\n\n this.disabled = false;\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return element.updateElementOptions({\n disabledParallaxController: false,\n scrollAxis: _this4.scrollAxis\n });\n });\n } // add back listeners\n\n\n this._addListeners(this.viewEl);\n\n this._addResizeObserver();\n\n this._setViewSize();\n }\n /**\r\n * Disable all parallax elements\r\n */\n ;\n\n _proto.disableAllElements = function disableAllElements() {\n console.warn('deprecated: use disableParallaxController() instead');\n\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: true\n });\n });\n }\n\n this.update();\n }\n /**\r\n * Enable all parallax elements\r\n */\n ;\n\n _proto.enableAllElements = function enableAllElements() {\n console.warn('deprecated: use enableParallaxController() instead');\n\n if (this.elements) {\n this.elements = this.elements.map(function (el) {\n return el.updateProps({\n disabled: false\n });\n });\n }\n\n this.update();\n }\n /**\r\n * Removes all listeners and resets all styles on managed elements.\r\n */\n ;\n\n _proto.destroy = function destroy() {\n this._removeListeners(this.viewEl);\n\n if (this.elements) {\n this.elements.forEach(function (element) {\n return resetStyles(element);\n });\n } // @ts-expect-error\n\n\n this.elements = undefined;\n };\n\n return ParallaxController;\n}();\n\nexport { EasingPreset, Element, Limits, ParallaxController, Rect, RotationUnits, ScaleUnits, Scroll, ScrollAxis, Units, ValidCSSEffects, View, createId, getProgressAmount, isElementInView, parseElementTransitionEffects, parseValueAndUnit, resetStyles, scaleBetween, scaleEffectByProgress, setElementStyles, testForPassiveScroll };\n//# sourceMappingURL=parallax-controller.esm.js.map\n","import { ParallaxController, parseValueAndUnit, ScrollAxis } from 'parallax-controller';\nexport { EasingPreset } from 'parallax-controller';\nimport React, { useEffect, useContext, useRef, useState } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction removeUndefinedObjectKeys(obj) {\n Object.keys(obj).forEach(function (key) {\n return obj[key] === undefined && delete obj[key];\n });\n return obj;\n}\n\nvar _excluded = [\"disabled\", \"easing\", \"endScroll\", \"onChange\", \"onEnter\", \"onExit\", \"onProgressChange\", \"opacity\", \"rootMargin\", \"rotate\", \"rotateX\", \"rotateY\", \"rotateZ\", \"scale\", \"scaleX\", \"scaleY\", \"scaleZ\", \"shouldAlwaysCompleteAnimation\", \"shouldDisableScalingTranslations\", \"speed\", \"startScroll\", \"targetElement\", \"translateX\", \"translateY\"];\nfunction getIsolatedParallaxProps(props) {\n var disabled = props.disabled,\n easing = props.easing,\n endScroll = props.endScroll,\n onChange = props.onChange,\n onEnter = props.onEnter,\n onExit = props.onExit,\n onProgressChange = props.onProgressChange,\n opacity = props.opacity,\n rootMargin = props.rootMargin,\n rotate = props.rotate,\n rotateX = props.rotateX,\n rotateY = props.rotateY,\n rotateZ = props.rotateZ,\n scale = props.scale,\n scaleX = props.scaleX,\n scaleY = props.scaleY,\n scaleZ = props.scaleZ,\n shouldAlwaysCompleteAnimation = props.shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations = props.shouldDisableScalingTranslations,\n speed = props.speed,\n startScroll = props.startScroll,\n targetElement = props.targetElement,\n translateX = props.translateX,\n translateY = props.translateY,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var parallaxProps = removeUndefinedObjectKeys({\n disabled: disabled,\n easing: easing,\n endScroll: endScroll,\n onChange: onChange,\n onEnter: onEnter,\n onExit: onExit,\n onProgressChange: onProgressChange,\n opacity: opacity,\n rootMargin: rootMargin,\n rotate: rotate,\n rotateX: rotateX,\n rotateY: rotateY,\n rotateZ: rotateZ,\n scale: scale,\n scaleX: scaleX,\n scaleY: scaleY,\n scaleZ: scaleZ,\n shouldAlwaysCompleteAnimation: shouldAlwaysCompleteAnimation,\n shouldDisableScalingTranslations: shouldDisableScalingTranslations,\n speed: speed,\n startScroll: startScroll,\n targetElement: targetElement,\n translateX: translateX,\n translateY: translateY\n });\n return {\n parallaxProps: parallaxProps,\n rest: rest\n };\n}\n\nfunction useVerifyController(controller) {\n useEffect(function () {\n var isServer = typeof window === 'undefined'; // Make sure the provided controller is an instance of the Parallax Controller\n\n var isInstance = controller instanceof ParallaxController; // Throw if neither context or global is available\n\n if (!isServer && !controller && !isInstance) {\n throw new Error(\"Must wrap your application's components in a .\");\n }\n }, [controller]);\n}\n\nvar ParallaxContext = /*#__PURE__*/React.createContext(null);\n\nfunction useParallaxController() {\n var parallaxController = useContext(ParallaxContext);\n var isServer = typeof window === 'undefined';\n\n if (isServer) {\n return null;\n }\n\n if (!parallaxController) {\n throw new Error('Could not find `react-scroll-parallax` context value. Please ensure the component is wrapped in a ');\n }\n\n return parallaxController;\n}\n\nfunction useParallax(props) {\n var controller = useParallaxController();\n var ref = useRef(null);\n\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps;\n\n useVerifyController(controller);\n\n var _useState = useState(),\n element = _useState[0],\n setElement = _useState[1]; // create element\n\n\n useEffect(function () {\n var newElement;\n\n if (ref.current instanceof HTMLElement) {\n var options = {\n el: ref.current,\n props: parallaxProps\n };\n newElement = controller == null ? void 0 : controller.createElement(options);\n setElement(newElement);\n } else {\n throw new Error('You must assign the ref returned by the useParallax() hook to an HTML Element.');\n }\n\n return function () {\n if (newElement) {\n controller == null ? void 0 : controller.removeElementById(newElement.id);\n }\n };\n }, []); // update element\n\n useEffect(function () {\n if (element) {\n if (props.disabled) {\n controller == null ? void 0 : controller.resetElementStyles(element);\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n } else {\n controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n }\n }\n }, [props.disabled, props.easing, props.endScroll, props.onChange, props.onEnter, props.onExit, props.onProgressChange, props.opacity, props.rootMargin, props.rotate, props.rotateX, props.rotateY, props.rotateZ, props.scale, props.scaleX, props.scaleY, props.scaleZ, props.shouldAlwaysCompleteAnimation, props.shouldDisableScalingTranslations, props.speed, props.startScroll, props.targetElement, props.translateX, props.translateY]);\n return {\n ref: ref,\n controller: controller,\n element: element\n };\n}\n\nfunction Parallax(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n\n var _useParallax = useParallax(parallaxProps),\n ref = _useParallax.ref;\n\n return React.createElement(\"div\", Object.assign({\n ref: ref\n }, rest), props.children);\n}\n\nvar FALLBACK_RECT = {\n height: 0\n};\nfunction getExpandedStyle(layer) {\n if (Array.isArray(layer.translateY)) {\n var translateYStart = parseValueAndUnit(layer.translateY[0]);\n var translateYEnd = parseValueAndUnit(layer.translateY[1]);\n\n if (translateYStart.unit === 'px' && translateYEnd.unit === 'px') {\n return {\n top: Math.abs(translateYEnd.value) * -1 + \"px\",\n bottom: Math.abs(translateYStart.value) * -1 + \"px\"\n };\n }\n\n if (translateYStart.unit === '%' && translateYEnd.unit === '%') {\n var _layer$targetElement$, _layer$targetElement;\n\n var clientRect = (_layer$targetElement$ = (_layer$targetElement = layer.targetElement) == null ? void 0 : _layer$targetElement.getBoundingClientRect()) != null ? _layer$targetElement$ : FALLBACK_RECT;\n var top = Math.abs(clientRect.height * 0.01 * translateYEnd.value) * -1;\n var bottom = Math.abs(clientRect.height * 0.01 * translateYStart.value) * -1;\n return {\n top: top + \"px\",\n bottom: bottom + \"px\"\n };\n }\n }\n\n if (layer.speed) {\n var speed = layer.speed || 0;\n var absSpeed = Math.abs(speed) * 10 * -1;\n return {\n top: absSpeed + \"px\",\n bottom: absSpeed + \"px\"\n };\n }\n\n return {};\n}\n\nfunction getImageStyle(layer) {\n return layer.image ? {\n backgroundImage: \"url(\" + layer.image + \")\",\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n } : {};\n}\n\nvar _excluded$1 = [\"children\", \"disabled\", \"style\", \"expanded\", \"image\", \"testId\"];\nvar absoluteStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n};\nvar ParallaxBannerLayer = function ParallaxBannerLayer(props) {\n var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n parallaxProps = _getIsolatedParallaxP.parallaxProps,\n rest = _getIsolatedParallaxP.rest;\n\n var style = rest.style,\n _rest$expanded = rest.expanded,\n expanded = _rest$expanded === void 0 ? true : _rest$expanded,\n testId = rest.testId,\n divProps = _objectWithoutPropertiesLoose(rest, _excluded$1);\n\n var imageStyle = getImageStyle(props);\n var expandedStyle = expanded ? getExpandedStyle(props) : {};\n var parallax = useParallax(_extends({\n targetElement: props.targetElement,\n shouldDisableScalingTranslations: true\n }, parallaxProps));\n return React.createElement(\"div\", Object.assign({\n \"data-testid\": testId,\n ref: parallax.ref,\n style: _extends({}, imageStyle, absoluteStyle, expandedStyle, style)\n }, divProps), rest.children);\n};\n\nvar _excluded$2 = [\"disabled\", \"style\", \"layers\"];\nvar containerStyle = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%'\n};\nvar ParallaxBanner = function ParallaxBanner(props) {\n var _useState = useState(null),\n targetElement = _useState[0],\n setTargetElement = _useState[1];\n\n var containerRef = useRef(null);\n useEffect(function () {\n setTargetElement(containerRef.current);\n }, []);\n\n var rootStyle = props.style,\n _props$layers = props.layers,\n layers = _props$layers === void 0 ? [] : _props$layers,\n rootRest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n function renderLayers() {\n if (targetElement) {\n var shouldUseLayers = layers && layers.length > 0;\n\n if (shouldUseLayers) {\n return layers.map(function (layer, i) {\n return React.createElement(ParallaxBannerLayer, Object.assign({}, layer, {\n targetElement: targetElement,\n key: \"layer-\" + i,\n testId: \"layer-\" + i\n }));\n });\n }\n }\n\n return null;\n }\n\n function renderChildren() {\n if (targetElement) {\n return React.Children.map(props.children, function (child) {\n var item = child; // adds the targetElement prop to any ParallaxBannerLayer components\n\n if ((item == null ? void 0 : item.type) === ParallaxBannerLayer) {\n var clone = React.cloneElement(item, {\n targetElement: targetElement\n });\n return clone;\n }\n\n return child;\n });\n }\n\n return null;\n }\n\n return React.createElement(\"div\", Object.assign({\n ref: containerRef,\n style: _extends({}, containerStyle, rootStyle)\n }, rootRest), renderLayers(), renderChildren());\n};\n\nvar createController = function createController(options) {\n // Don't initialize on the server\n var isServer = typeof window === 'undefined';\n\n if (!isServer) {\n // Must not be the server so kick it off...\n return ParallaxController.init(options);\n }\n\n return null;\n};\n\nfunction ParallaxProvider(props) {\n var controller = useRef(null);\n\n if (!controller.current) {\n controller.current = createController({\n scrollAxis: props.scrollAxis || ScrollAxis.vertical,\n scrollContainer: props.scrollContainer,\n disabled: props.isDisabled\n });\n } // update scroll container\n\n\n useEffect(function () {\n if (props.scrollContainer && controller.current) {\n controller.current.updateScrollContainer(props.scrollContainer);\n }\n }, [props.scrollContainer, controller.current]); // disable/enable parallax\n\n useEffect(function () {\n if (props.isDisabled && controller.current) {\n controller.current.disableParallaxController();\n }\n\n if (!props.isDisabled && controller.current) {\n controller.current.enableParallaxController();\n }\n }, [props.isDisabled, controller.current]); // remove the controller when unmounting\n\n useEffect(function () {\n return function () {\n (controller == null ? void 0 : controller.current) && (controller == null ? void 0 : controller.current.destroy());\n };\n }, []);\n return React.createElement(ParallaxContext.Provider, {\n value: controller.current\n }, props.children);\n}\n\nexport { Parallax, ParallaxBanner, ParallaxBannerLayer, ParallaxContext, ParallaxProvider, useParallax, useParallaxController };\n//# sourceMappingURL=react-scroll-parallax.esm.js.map\n"],"names":["float32ArraySupported","Float32Array","calcBezier","aT","aA1","aA2","A","getSlope","LinearEasing","x","module","exports","mX1","mY1","mX2","mY2","sampleValues","i","getTForX","aX","intervalStart","currentSample","guessForT","dist","initialSlope","newtonRaphsonIterate","aGuessT","currentSlope","currentX","binarySubdivide","aA","aB","currentT","Math","abs","ValidCSSEffects","Units","RotationUnits","ScrollAxis","EasingPreset","ScaleUnits","Limits","properties","startX","startY","endX","endY","totalX","totalY","startMultiplierX","endMultiplierX","startMultiplierY","endMultiplierY","_extends","Object","assign","target","arguments","length","source","key","prototype","hasOwnProperty","call","apply","id","Rect","options","rect","el","getBoundingClientRect","view","scrollContainer","scrollRect","top","right","left","bottom","height","offsetHeight","width","offsetWidth","rootMargin","_setRectWithRootMargin","_proto","totalRootY","totalRootX","VALID_UNITS","px","deg","turn","rad","parallax_controller_esm_parseValueAndUnit","str","defaultUnit","out","value","unit","String","parseFloat","match","includes","easingPresets","ease","easeIn","easeOut","easeInOut","easeInQuad","easeInCubic","easeInQuart","easeInQuint","easeInSine","easeInExpo","easeInCirc","easeOutQuad","easeOutCubic","easeOutQuart","easeOutQuint","easeOutSine","easeOutExpo","easeOutCirc","easeInOutQuad","easeInOutCubic","easeInOutQuart","easeInOutQuint","easeInOutSine","easeInOutExpo","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","createEasingFunction","easing","Array","isArray","src_default","params","PARALLAX_EFFECTS","values","MAP_EFFECT_TO_DEFAULT_UNIT","speed","translateX","translateY","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","opacity","parseElementTransitionEffects","props","scrollAxis","parsedEffects","forEach","defaultValue","startParsed","endParsed","speedConfig","start","end","vertical","horizontal","_value","_startParsed","_endParsed","getProgressAmount","totalDist","currentScroll","amount","startAdjustedScroll","scaleEffectByProgress","effect","progress","newMin","newMax","oldMax","TRANSFORM_EFFECTS","filter","v","resetStyles","element","style","transform","getTranslateScalar","startTranslatePx","endTranslatePx","max","slow","getStartEndValueInPx","translate","elementSize","startScale","endScale","window","innerWidth","_startScale","_endScale","innerHeight","DEFAULT_VALUE","clamp","num","min","Element","hasOpacity","disabledParallaxController","effects","isInView","_setElementEasing","keys","willChange","updateProps","nextProps","setCachedAttributes","scroll","targetElement","limits","effectsCopy","shouldAlwaysCompleteAnimation","shouldScaleTranslateEffects","shouldDisableScalingTranslations","startScroll","endScroll","createLimitsWithTranslationsForRelativeElements","_getStartEndValueInPx","startTranslateXPx","endTranslateXPx","_getStartEndValueInPx2","startTranslateYPx","endTranslateYPx","y","topBeginsInView","leftBeginsInView","bottomEndsInView","scrollHeight","rightEndsInView","scrollWidth","scaledEffects","_setElementStyles","_updateElementIsInView","nextIsInView","isFirstChange","onEnter","_setFinalProgress","onExit","finalProgress","round","_updateElementProgress","disabled","setElementStyles","scaledOpacity","reduce","acc","scaledEffect","nextProgress","onProgressChange","onChange","updateElementOptions","updatePosition","isVertical","total","s","View","config","hasChanged","setSize","Scroll","dx","dy","setScroll","parallax_controller_esm_ParallaxController","ParallaxController","_ref","_ref$scrollAxis","_ref$disabled","elements","_hasScrollContainer","viewEl","_this$_getScrollPosit","_getScrollPosition","undefined","_ticking","_supportsPassive","testForPassiveScroll","supportsPassiveOption","opts","defineProperty","get","addEventListener","removeEventListener","e","_bindAllMethods","_addListeners","_addResizeObserver","_setViewSize","init","_this","method","bind","_handleScroll","passive","_handleUpdateCache","_removeListeners","_this$_resizeObserver","_resizeObserver","disconnect","_this2","observedEl","document","documentElement","ResizeObserver","update","observe","console","warn","scrollLeft","pageXOffset","scrollTop","pageYOffset","_this$elements","_this$_getScrollPosit2","nx","ny","requestAnimationFrame","_updateAllElements","updateCache","_temp","_this3","_ref2","_updateElementPosition","_getViewParams","_width","_height","_scrollHeight","_scrollWidth","html","clientWidth","clientHeight","_checkIfViewHasChanged","getElements","createElement","newElement","concat","removeElementById","updateElementPropsById","map","resetElementStyles","_this$_getScrollPosit3","updateScrollContainer","disableParallaxController","enableParallaxController","_this4","disableAllElements","enableAllElements","destroy","ParallaxContext","react","createContext","ParallaxProvider","controller","useRef","current","isDisabled","useEffect","Provider","children"],"sourceRoot":""}