{"version":3,"file":"static/chunks/598-17f6833c9f61af98.js","mappings":"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","sources":["webpack://_N_E/./node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion.mjs"],"sourcesContent":["import { invariant } from '../../utils/errors.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n let hasMounted = false;\n /**\n * A collection of linked component animation controls.\n */\n const subscribers = new Set();\n const controls = {\n subscribe(visualElement) {\n subscribers.add(visualElement);\n return () => void subscribers.delete(visualElement);\n },\n start(definition, transitionOverride) {\n invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n const animations = [];\n subscribers.forEach((visualElement) => {\n animations.push(animateVisualElement(visualElement, definition, {\n transitionOverride,\n }));\n });\n return Promise.all(animations);\n },\n set(definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach((visualElement) => {\n setValues(visualElement, definition);\n });\n },\n stop() {\n subscribers.forEach((visualElement) => {\n stopAnimation(visualElement);\n });\n },\n mount() {\n hasMounted = true;\n return () => {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls, setValues };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return \n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n const controls = useConstant(animationControls);\n useIsomorphicLayoutEffect(controls.mount, []);\n return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n isNaN(delta.scale)) {\n delta.scale = 1.0;\n }\n if ((delta.translate >= TRANSLATE_MIN &&\n delta.translate <= TRANSLATE_MAX) ||\n isNaN(delta.translate)) {\n delta.translate = 0.0;\n }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n var _a;\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.postRender(() => onDragStart(event, info));\n }\n (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\n this.removeWillChange = addValueToWillChange(this.visualElement, \"transform\");\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n var _a;\n (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.postRender(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n var _a;\n const { dragConstraints, dragElastic } = this.getProps();\n const layout = this.visualElement.projection &&\n !this.visualElement.projection.layout\n ? this.visualElement.projection.measure(false)\n : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.constraints !== false &&\n this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false, addValueToWillChange(this.visualElement, axis)));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n pauseAnimation() {\n eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n }\n getAnimationState(axis) {\n var _a;\n return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = `_drag${axis.toUpperCase()}`;\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial\n ? props.initial[axis]\n : undefined) || 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.layoutBox[axis];\n axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue && this.constraints !== false) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mixNumber(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints) && dragConstraints.current) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n frame.read(measureDragConstraints);\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id), [id, onExitComplete]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n delta.translate = originDelta.translate;\n delta.scale = originDelta.scale;\n delta.originPoint = originDelta.originPoint;\n delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n return (Math.round(a.min) === Math.round(b.min) &&\n Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n return (a.translate === b.translate &&\n a.scale === b.scale &&\n a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\n\nconst metrics = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nconst isDebug = typeof window !== \"undefined\" && window.MotionDebug !== undefined;\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction isOptimisedAppearTree(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return false;\n const { visualElement } = projectionNode.options;\n if (!visualElement) {\n return false;\n }\n else if (getOptimisedAppearId(visualElement)) {\n return true;\n }\n else if (projectionNode.parent &&\n !projectionNode.parent.hasCheckedOptimisedAppear) {\n return isOptimisedAppearTree(projectionNode.parent);\n }\n else {\n return false;\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n if (isDebug) {\n metrics.totalNodes =\n metrics.resolvedTargetDeltas =\n metrics.recalculatedProjection =\n 0;\n }\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n if (isDebug) {\n window.MotionDebug.record(metrics);\n }\n };\n /**\n * Frame calculations\n */\n this.resolvedRelativeTargetAt = 0.0;\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.HandoffCancelAllAnimations &&\n isOptimisedAppearTree(this)) {\n window.HandoffCancelAllAnimations();\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(this.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n const isRoot = checkIsScrollRoot(this.instance);\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot,\n offset: measureScroll(this.instance),\n wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n var _a;\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n if (!wasInScrollRoot) {\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n }\n return box;\n }\n removeElementScroll(box) {\n var _a;\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n return boxWithoutScroll;\n }\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.wasRoot) {\n copyBoxInto(boxWithoutScroll, box);\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget ||\n this.root.updateBlockedByResize);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n if (isDebug) {\n metrics.resolvedTargetDeltas++;\n }\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.prevProjectionDelta) {\n this.createProjectionDeltas();\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta || !this.prevProjectionDelta) {\n this.createProjectionDeltas();\n }\n else {\n copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n }\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n if (this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY ||\n !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n if (isDebug) {\n metrics.recalculatedProjection++;\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a;\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n createProjectionDeltas() {\n this.prevProjectionDelta = createDelta();\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n if (isDebug) {\n metrics.totalNodes++;\n }\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n var _a;\n return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layout } from '../../motion/features/layout.mjs';\n\nconst preloadedFeatures = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, preloadedFeatures, createDomVisualElement));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\nexport { createDomMotionComponent, motion };\n"],"names":["setVariants","visualElement","variantLabels","reversedLabels","reverse","forEach","variant","getVariant","key","setters","C","variantChildren","child","animationControls","hasMounted","subscribers","Set","controls","subscribe","add","delete","start","definition","transitionOverride","errors","k","animations","push","visual_element","d","Promise","all","set","isArray","stop","stopAnimation","values","value","mount","useAnimation","use_constant","h","use_isomorphic_effect","L","distance","a","b","Math","abs","PanSession","constructor","event","handlers","transformPagePoint","contextWindow","dragSnapToOrigin","startEvent","lastMoveEvent","lastMoveEventInfo","window","updatePoint","info","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","offset","x","y","sqrt","xDelta","yDelta","point","timestamp","frameloop_frame","frameData","onStart","onMove","handlePointerMove","transformPoint","Wi","update","handlePointerUp","end","onEnd","onSessionEnd","resumeAnimation","panInfo","type","is_primary_pointer","D","initialInfo","event_info","Q","onSessionStart","removeListeners","pipe","z","add_pointer_event","updateHandlers","Pn","subtractPoint","delta","lastDevicePoint","velocity","getVelocity","timeDelta","length","i","timestampedPoint","lastPoint","time_conversion","w","time","X","currentVelocity","Infinity","calcLength","axis","max","min","calcAxisDelta","source","target","origin","originPoint","number","t","scale","translate","isNaN","calcBoxDelta","originX","undefined","originY","calcRelativeAxis","relative","parent","calcRelativeAxisPosition","layout","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","eachAxis","callback","getContextWindow","current","ownerDocument","defaultView","elementDragControls","WeakMap","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","models","dO","originEvent","snapToCursor","presenceContext","isPresent","getProps","panSession","pauseAnimation","_a","drag","dragPropagation","onDragStart","lock","fJ","resolveConstraints","projection","isAnimationBlocked","getAxisMotionValue","get","units","aQ","test","measuredAxis","layoutBox","postRender","removeWillChange","call","add_will_change","K","animationState","setActive","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","direction","updateAxis","render","getAnimationState","animation","play","getTransformPagePoint","cancel","startAnimation","onDragEnd","_point","shouldDrag","axisValue","next","applyConstraints","dragConstraints","measure","prevConstraints","is_ref_object","I","resolveRefConstraints","calcRelativeConstraints","top","left","bottom","right","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","root","measuredConstraints","userConstraints","conversion","z2","i8","dragMomentum","dragTransition","onDragTransitionEnd","transition","inertia","bounceStiffness","bounceDamping","timeConstant","restDelta","restSpeed","startAxisValueAnimation","then","motion_value","v","pause","state","dragKey","toUpperCase","props","externalMotionValue","getValue","initial","scalePositionWithinConstraints","boxProgress","latest","calcOrigin","sourceLength","targetLength","progress","Y","clamp","u","transformTemplate","style","transform","updateScroll","updateLayout","addListeners","element","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","addEventListener","read","stopResizeListener","add_dom_event","E","stopLayoutUpdateListener","hasLayoutChanged","motionValue","DragGesture","Feature","node","removeGroupControls","noop","Z","dragControls","unmount","asyncHandler","handler","PanGesture","arguments","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","px","parseFloat","MeasureLayoutWithContext","react","Component","componentDidMount","layoutGroup","switchLayoutGroup","layoutId","scale_correction","B","defaultScaleCorrectors","group","register","didUpdate","safeToRemove","setOptions","options","onExitComplete","getSnapshotBeforeUpdate","prevProps","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","componentDidUpdate","microtask","g","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","remove","deregister","MeasureLayout","usePresence","context","useContext","context_PresenceContext","O","id","useId","useEffect","useCallback","LayoutGroupContext","p","jsx_runtime","jsx","SwitchLayoutGroupContext","borderRadius","applyTo","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","boxShadow","treeScale","projectionDelta","shadow","complex","P","parse","template","createTransformer","xScale","yScale","averageScale","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","circ","Bn","easeCrossfadeOut","easing","copyAxisInto","originAxis","copyBoxInto","box","originBox","copyAxisDeltaInto","originDelta","removePointDelta","boxScale","delta_apply","q2","removeAxisTransforms","transforms","scaleKey","originKey","sourceAxis","removeAxisDelta","relativeProgress","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","axisEquals","axisEqualsRounded","round","boxEqualsRounded","aspectRatio","axisDeltaEquals","NodeStack","array","y4","scheduleRender","cl","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","instance","resumeFrom","preserveOpacity","snapshot","latestValues","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","compareByDepth","depth","FlatTree","children","isDirty","sort","metrics","totalNodes","resolvedTargetDeltas","recalculatedProjection","isDebug","MotionDebug","transformAxes","hiddenVisibility","visibility","resetDistortingTransform","sharedAnimationValues","setStaticValue","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","hasCheckedOptimisedAppear","eventHandlers","Map","hasTreeAnimated","updateScheduled","scheduleUpdate","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","record","resolvedRelativeTargetAt","hasProjected","isVisible","animationProgress","sharedNodes","path","name","has","subscription_manager","notifyListeners","args","subscriptionManager","notify","hasListeners","SVGElement","tagName","cancelDelay","resizeUnblockUpdate","delay","timeout","sync_time","now","checkElapsed","elapsed","finishAnimation","registerSharedNode","animate","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","getDefaultTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","transitions","e","onPlay","onComplete","shouldReduceMotion","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","HandoffCancelAllAnimations","isOptimisedAppearTree","projectionNode","get_appear_id","s","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","isProcessing","S6","process","preRender","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","needsMeasurement","Boolean","layoutScroll","scroll","isRoot","wasRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","has_transform","ud","removeTransform","pageBox","measurePageBox","removeElementScroll","roundAxis","measuredBox","measureViewportBox","some","checkNodeWasScrollRoot","am","boxWithoutScroll","applyTransform","transformOnly","withTransforms","D2","boxWithoutTransform","Lj","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","o2","D_","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","YY","prevProjectionDelta","createProjectionDeltas","notifyAll","wc","projectionDeltaWithTransform","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","output","from","mixAxis","to","mixValues","follow","opacity","opacityExit","borderLabel","followRadius","leadRadius","rotate","animateSingleValue","keyframes","motionValue$1","is_motion_value","es_value","BX","onUpdate","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","config","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","rotateX","rotateY","rotateZ","skewX","skewY","resetValues","getProjectionStyles","styleProp","_b","styles","pointerEvents","resolve_motion_value","emptyStyles","valuesToRender","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","transformPerspective","elementScaleX","elementScaleY","transformOrigin","corrected","num","resetTree","clear","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","duration","ease","userAgentContains","navigator","userAgent","toLowerCase","includes","string","roundPoint","DocumentProjectionNode","ref","document","documentElement","scrollLeft","body","scrollTop","rootProjectionNode","HTMLProjectionNode","documentNode","getComputedStyle","position","preloadedFeatures","gestures","pan","ProjectionNode","motion","motion_proxy","create_config","create_visual_element"],"sourceRoot":""}