{"version":3,"file":"index.es-DMeczQ4E.js","sources":["../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js","../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js","../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js","../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js"],"sourcesContent":["import { resolveElements } from '../../utils/resolve-elements.es.js';\n\nconst resizeHandlers = new WeakMap();\nlet observer;\nfunction getElementSize(target, borderBoxSize) {\n if (borderBoxSize) {\n const { inlineSize, blockSize } = borderBoxSize[0];\n return { width: inlineSize, height: blockSize };\n }\n else if (target instanceof SVGElement && \"getBBox\" in target) {\n return target.getBBox();\n }\n else {\n return {\n width: target.offsetWidth,\n height: target.offsetHeight,\n };\n }\n}\nfunction notifyTarget({ target, contentRect, borderBoxSize, }) {\n var _a;\n (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {\n handler({\n target,\n contentSize: contentRect,\n get size() {\n return getElementSize(target, borderBoxSize);\n },\n });\n });\n}\nfunction notifyAll(entries) {\n entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n if (typeof ResizeObserver === \"undefined\")\n return;\n observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n if (!observer)\n createResizeObserver();\n const elements = resolveElements(target);\n elements.forEach((element) => {\n let elementHandlers = resizeHandlers.get(element);\n if (!elementHandlers) {\n elementHandlers = new Set();\n resizeHandlers.set(element, elementHandlers);\n }\n elementHandlers.add(handler);\n observer === null || observer === void 0 ? void 0 : observer.observe(element);\n });\n return () => {\n elements.forEach((element) => {\n const elementHandlers = resizeHandlers.get(element);\n elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);\n if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {\n observer === null || observer === void 0 ? void 0 : observer.unobserve(element);\n }\n });\n };\n}\n\nexport { resizeElement };\n","const windowCallbacks = new Set();\nlet windowResizeHandler;\nfunction createWindowResizeHandler() {\n windowResizeHandler = () => {\n const size = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n const info = {\n target: window,\n size,\n contentSize: size,\n };\n windowCallbacks.forEach((callback) => callback(info));\n };\n window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n windowCallbacks.add(callback);\n if (!windowResizeHandler)\n createWindowResizeHandler();\n return () => {\n windowCallbacks.delete(callback);\n if (!windowCallbacks.size && windowResizeHandler) {\n windowResizeHandler = undefined;\n }\n };\n}\n\nexport { resizeWindow };\n","import { resizeElement } from './handle-element.es.js';\nimport { resizeWindow } from './handle-window.es.js';\nimport { isFunction } from '@motionone/utils';\n\nfunction resize(a, b) {\n return isFunction(a) ? resizeWindow(a) : resizeElement(a, b);\n}\n\nexport { resize };\n","import { progress, velocityPerSecond } from '@motionone/utils';\n\n/**\n * A time in milliseconds, beyond which we consider the scroll velocity to be 0.\n */\nconst maxElapsed = 50;\nconst createAxisInfo = () => ({\n current: 0,\n offset: [],\n progress: 0,\n scrollLength: 0,\n targetOffset: 0,\n targetLength: 0,\n containerLength: 0,\n velocity: 0,\n});\nconst createScrollInfo = () => ({\n time: 0,\n x: createAxisInfo(),\n y: createAxisInfo(),\n});\nconst keys = {\n x: {\n length: \"Width\",\n position: \"Left\",\n },\n y: {\n length: \"Height\",\n position: \"Top\",\n },\n};\nfunction updateAxisInfo(element, axisName, info, time) {\n const axis = info[axisName];\n const { length, position } = keys[axisName];\n const prev = axis.current;\n const prevTime = info.time;\n axis.current = element[`scroll${position}`];\n axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];\n axis.offset.length = 0;\n axis.offset[0] = 0;\n axis.offset[1] = axis.scrollLength;\n axis.progress = progress(0, axis.scrollLength, axis.current);\n const elapsed = time - prevTime;\n axis.velocity =\n elapsed > maxElapsed ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time) {\n updateAxisInfo(element, \"x\", info, time);\n updateAxisInfo(element, \"y\", info, time);\n info.time = time;\n}\n\nexport { createScrollInfo, updateScrollInfo };\n","function calcInset(element, container) {\n let inset = { x: 0, y: 0 };\n let current = element;\n while (current && current !== container) {\n if (current instanceof HTMLElement) {\n inset.x += current.offsetLeft;\n inset.y += current.offsetTop;\n current = current.offsetParent;\n }\n else if (current instanceof SVGGraphicsElement && \"getBBox\" in current) {\n const { top, left } = current.getBBox();\n inset.x += left;\n inset.y += top;\n /**\n * Assign the next parent element as the tag.\n */\n while (current && current.tagName !== \"svg\") {\n current = current.parentNode;\n }\n }\n }\n return inset;\n}\n\nexport { calcInset };\n","const ScrollOffset = {\n Enter: [\n [0, 1],\n [1, 1],\n ],\n Exit: [\n [0, 0],\n [1, 0],\n ],\n Any: [\n [1, 0],\n [0, 1],\n ],\n All: [\n [0, 0],\n [1, 1],\n ],\n};\n\nexport { ScrollOffset };\n","import { isString, isNumber } from '@motionone/utils';\n\nconst namedEdges = {\n start: 0,\n center: 0.5,\n end: 1,\n};\nfunction resolveEdge(edge, length, inset = 0) {\n let delta = 0;\n /**\n * If we have this edge defined as a preset, replace the definition\n * with the numerical value.\n */\n if (namedEdges[edge] !== undefined) {\n edge = namedEdges[edge];\n }\n /**\n * Handle unit values\n */\n if (isString(edge)) {\n const asNumber = parseFloat(edge);\n if (edge.endsWith(\"px\")) {\n delta = asNumber;\n }\n else if (edge.endsWith(\"%\")) {\n edge = asNumber / 100;\n }\n else if (edge.endsWith(\"vw\")) {\n delta = (asNumber / 100) * document.documentElement.clientWidth;\n }\n else if (edge.endsWith(\"vh\")) {\n delta = (asNumber / 100) * document.documentElement.clientHeight;\n }\n else {\n edge = asNumber;\n }\n }\n /**\n * If the edge is defined as a number, handle as a progress value.\n */\n if (isNumber(edge)) {\n delta = length * edge;\n }\n return inset + delta;\n}\n\nexport { namedEdges, resolveEdge };\n","import { isNumber, isString } from '@motionone/utils';\nimport { resolveEdge, namedEdges } from './edge.es.js';\n\nconst defaultOffset = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset;\n let targetPoint = 0;\n let containerPoint = 0;\n if (isNumber(offset)) {\n /**\n * If we're provided offset: [0, 0.5, 1] then each number x should become\n * [x, x], so we default to the behaviour of mapping 0 => 0 of both target\n * and container etc.\n */\n offsetDefinition = [offset, offset];\n }\n else if (isString(offset)) {\n offset = offset.trim();\n if (offset.includes(\" \")) {\n offsetDefinition = offset.split(\" \");\n }\n else {\n /**\n * If we're provided a definition like \"100px\" then we want to apply\n * that only to the top of the target point, leaving the container at 0.\n * Whereas a named offset like \"end\" should be applied to both.\n */\n offsetDefinition = [\n offset,\n namedEdges[offset] ? offset : `0`,\n ];\n }\n }\n targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n return targetPoint - containerPoint;\n}\n\nexport { resolveOffset };\n","import { interpolate, defaultOffset } from '@motionone/utils';\nimport { calcInset } from './inset.es.js';\nimport { ScrollOffset } from './presets.es.js';\nimport { resolveOffset } from './offset.es.js';\n\nconst point = { x: 0, y: 0 };\nfunction resolveOffsets(container, info, options) {\n let { offset: offsetDefinition = ScrollOffset.All } = options;\n const { target = container, axis = \"y\" } = options;\n const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n const inset = target !== container ? calcInset(target, container) : point;\n /**\n * Measure the target and container. If they're the same thing then we\n * use the container's scrollWidth/Height as the target, from there\n * all other calculations can remain the same.\n */\n const targetSize = target === container\n ? { width: container.scrollWidth, height: container.scrollHeight }\n : { width: target.clientWidth, height: target.clientHeight };\n const containerSize = {\n width: container.clientWidth,\n height: container.clientHeight,\n };\n /**\n * Reset the length of the resolved offset array rather than creating a new one.\n * TODO: More reusable data structures for targetSize/containerSize would also be good.\n */\n info[axis].offset.length = 0;\n /**\n * Populate the offset array by resolving the user's offset definition into\n * a list of pixel scroll offets.\n */\n let hasChanged = !info[axis].interpolate;\n const numOffsets = offsetDefinition.length;\n for (let i = 0; i < numOffsets; i++) {\n const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n hasChanged = true;\n }\n info[axis].offset[i] = offset;\n }\n /**\n * If the pixel scroll offsets have changed, create a new interpolator function\n * to map scroll value into a progress.\n */\n if (hasChanged) {\n info[axis].interpolate = interpolate(defaultOffset(numOffsets), info[axis].offset);\n info[axis].interpolatorOffsets = [...info[axis].offset];\n }\n info[axis].progress = info[axis].interpolate(info[axis].current);\n}\n\nexport { resolveOffsets };\n","import { isFunction, noopReturn } from '@motionone/utils';\nimport { updateScrollInfo } from './info.es.js';\nimport { resolveOffsets } from './offsets/index.es.js';\n\nfunction measure(container, target = container, info) {\n /**\n * Find inset of target within scrollable container\n */\n info.x.targetOffset = 0;\n info.y.targetOffset = 0;\n if (target !== container) {\n let node = target;\n while (node && node != container) {\n info.x.targetOffset += node.offsetLeft;\n info.y.targetOffset += node.offsetTop;\n node = node.offsetParent;\n }\n }\n info.x.targetLength =\n target === container ? target.scrollWidth : target.clientWidth;\n info.y.targetLength =\n target === container ? target.scrollHeight : target.clientHeight;\n info.x.containerLength = container.clientWidth;\n info.y.containerLength = container.clientHeight;\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n const axis = options.axis || \"y\";\n return {\n measure: () => measure(element, options.target, info),\n update: (time) => {\n updateScrollInfo(element, info, time);\n if (options.offset || options.target) {\n resolveOffsets(element, info, options);\n }\n },\n notify: isFunction(onScroll)\n ? () => onScroll(info)\n : scrubAnimation(onScroll, info[axis]),\n };\n}\nfunction scrubAnimation(controls, axisInfo) {\n controls.pause();\n controls.forEachNative((animation, { easing }) => {\n var _a, _b;\n if (animation.updateDuration) {\n if (!easing)\n animation.easing = noopReturn;\n animation.updateDuration(1);\n }\n else {\n const timingOptions = { duration: 1000 };\n if (!easing)\n timingOptions.easing = \"linear\";\n (_b = (_a = animation.effect) === null || _a === void 0 ? void 0 : _a.updateTiming) === null || _b === void 0 ? void 0 : _b.call(_a, timingOptions);\n }\n });\n return () => {\n controls.currentTime = axisInfo.progress;\n };\n}\n\nexport { createOnScrollHandler };\n","import { __rest } from 'tslib';\nimport { resize } from '../resize/index.es.js';\nimport { createScrollInfo } from './info.es.js';\nimport { createOnScrollHandler } from './on-scroll-handler.es.js';\n\nconst scrollListeners = new WeakMap();\nconst resizeListeners = new WeakMap();\nconst onScrollHandlers = new WeakMap();\nconst getEventTarget = (element) => element === document.documentElement ? window : element;\nfunction scroll(onScroll, _a = {}) {\n var { container = document.documentElement } = _a, options = __rest(_a, [\"container\"]);\n let containerHandlers = onScrollHandlers.get(container);\n /**\n * Get the onScroll handlers for this container.\n * If one isn't found, create a new one.\n */\n if (!containerHandlers) {\n containerHandlers = new Set();\n onScrollHandlers.set(container, containerHandlers);\n }\n /**\n * Create a new onScroll handler for the provided callback.\n */\n const info = createScrollInfo();\n const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n containerHandlers.add(containerHandler);\n /**\n * Check if there's a scroll event listener for this container.\n * If not, create one.\n */\n if (!scrollListeners.has(container)) {\n const listener = () => {\n const time = performance.now();\n for (const handler of containerHandlers)\n handler.measure();\n for (const handler of containerHandlers)\n handler.update(time);\n for (const handler of containerHandlers)\n handler.notify();\n };\n scrollListeners.set(container, listener);\n const target = getEventTarget(container);\n window.addEventListener(\"resize\", listener, { passive: true });\n if (container !== document.documentElement) {\n resizeListeners.set(container, resize(container, listener));\n }\n target.addEventListener(\"scroll\", listener, { passive: true });\n }\n const listener = scrollListeners.get(container);\n const onLoadProcesss = requestAnimationFrame(listener);\n return () => {\n var _a;\n if (typeof onScroll !== \"function\")\n onScroll.stop();\n cancelAnimationFrame(onLoadProcesss);\n /**\n * Check if we even have any handlers for this container.\n */\n const containerHandlers = onScrollHandlers.get(container);\n if (!containerHandlers)\n return;\n containerHandlers.delete(containerHandler);\n if (containerHandlers.size)\n return;\n /**\n * If no more handlers, remove the scroll listener too.\n */\n const listener = scrollListeners.get(container);\n scrollListeners.delete(container);\n if (listener) {\n getEventTarget(container).removeEventListener(\"scroll\", listener);\n (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a();\n window.removeEventListener(\"resize\", listener);\n }\n };\n}\n\nexport { scroll };\n"],"names":["resizeHandlers","observer","getElementSize","target","borderBoxSize","inlineSize","blockSize","notifyTarget","contentRect","_a","handler","notifyAll","entries","createResizeObserver","resizeElement","elements","resolveElements","element","elementHandlers","windowCallbacks","windowResizeHandler","createWindowResizeHandler","size","info","callback","resizeWindow","resize","a","b","isFunction","maxElapsed","createAxisInfo","createScrollInfo","keys","updateAxisInfo","axisName","time","axis","length","position","prev","prevTime","progress","elapsed","velocityPerSecond","updateScrollInfo","calcInset","container","inset","current","top","left","ScrollOffset","namedEdges","resolveEdge","edge","delta","isString","asNumber","isNumber","defaultOffset","resolveOffset","offset","containerLength","targetLength","targetInset","offsetDefinition","targetPoint","containerPoint","point","resolveOffsets","options","lengthLabel","targetSize","containerSize","hasChanged","numOffsets","i","interpolate","measure","node","createOnScrollHandler","onScroll","scrubAnimation","controls","axisInfo","animation","easing","_b","noopReturn","timingOptions","scrollListeners","resizeListeners","onScrollHandlers","getEventTarget","scroll","__rest","containerHandlers","containerHandler","listener","onLoadProcesss"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10]}