{"version":3,"file":"static/chunks/1010-a2168417bc0a9a9a.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/frameloop/data.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/frameloop/on-next-frame.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/frameloop/create-render-step.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/frameloop/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/node/id.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/utils.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/types.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/../../node_modules/hey-listen/dist/hey-listen.es.js","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/ease.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/mix.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/mix-color.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/mix-complex.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/progress.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/interpolate.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/noop.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/circ.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/back.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/easing.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/keyframes.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/find-spring.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/spring.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/decay.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/waapi/easing.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/waapi/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/waapi/supports.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/waapi/utils/get-final-keyframe.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/waapi/create-accelerated-animation.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/create-instant-animation.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/inertia.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/animation.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/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/geometry/models.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/projection/utils/measure.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/use-drag.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/VisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.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/motion/features/layout/index.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/animate.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/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/render/dom/motion.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs"],"sourcesContent":["import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","const frameData = {\n delta: 0,\n timestamp: 0,\n};\n\nexport { frameData };\n","/*\n Detect and load appropriate clock setting for the execution environment\n */\nconst defaultTimestep = (1 / 60) * 1000;\nconst getCurrentTime = typeof performance !== \"undefined\"\n ? () => performance.now()\n : () => Date.now();\nconst onNextFrame = typeof window !== \"undefined\"\n ? (callback) => window.requestAnimationFrame(callback)\n : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\nexport { defaultTimestep, onNextFrame };\n","function createRenderStep(runNextFrame) {\n /**\n * We create and reuse two arrays, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let toRun = [];\n let toRunNextFrame = [];\n /**\n *\n */\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n // If the buffer doesn't already contain this callback, add it\n if (buffer.indexOf(callback) === -1) {\n buffer.push(callback);\n // If we're adding it to the currently running buffer, update its measured size\n if (addToCurrentFrame && isProcessing)\n numToRun = toRun.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n const index = toRunNextFrame.indexOf(callback);\n if (index !== -1)\n toRunNextFrame.splice(index, 1);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n // Clear the next frame list\n toRunNextFrame.length = 0;\n // Execute this frame\n numToRun = toRun.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = toRun[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { onNextFrame, defaultTimestep } from './on-next-frame.mjs';\nimport { createRenderStep } from './create-render-step.mjs';\nimport { frameData } from './data.mjs';\n\nconst maxElapsed = 40;\nlet useDefaultElapsed = true;\nlet runNextFrame = false;\nlet isProcessing = false;\nconst stepsOrder = [\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n}, {});\nconst sync = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n startLoop();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n}, {});\nconst cancelSync = stepsOrder.reduce((acc, key) => {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nconst flushSync = stepsOrder.reduce((acc, key) => {\n acc[key] = () => steps[key].process(frameData);\n return acc;\n}, {});\nconst processStep = (stepId) => steps[stepId].process(frameData);\nconst processFrame = (timestamp) => {\n runNextFrame = false;\n frameData.delta = useDefaultElapsed\n ? defaultTimestep\n : Math.max(Math.min(timestamp - frameData.timestamp, maxElapsed), 1);\n frameData.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (runNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nconst startLoop = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing)\n onNextFrame(processFrame);\n};\n\nexport { cancelSync, flushSync, sync };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext, useContext } from 'react';\n\nconst MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const parent = useVisualElementContext();\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceId: presenceContext ? presenceContext.id : undefined,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(() => {\n visualElement && visualElement.render();\n });\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n const useAnimateChangesEffect = window.HandoffAppearAnimations\n ? useIsomorphicLayoutEffect\n : useEffect;\n useAnimateChangesEffect(() => {\n if (visualElement && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\nexport { isAnimationControls };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\n\nconst variantProps = [\n \"initial\",\n \"animate\",\n \"exit\",\n \"whileHover\",\n \"whileDrag\",\n \"whileTap\",\n \"whileFocus\",\n \"whileInView\",\n];\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const createDefinition = (propNames) => ({\n isEnabled: (props) => propNames.some((name) => !!props[name]),\n});\nconst featureDefinitions = {\n measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n inView: createDefinition([\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n ]),\n};\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n if (key === \"projectionNodeConstructor\") {\n featureDefinitions.projectionNodeConstructor = features[key];\n }\n else {\n featureDefinitions[key].Component = features[key];\n }\n }\n}\n\nexport { loadFeatures };\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 { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nlet id = 1;\nfunction useProjectionId() {\n return useConstant(() => {\n if (globalProjectionState.hasEverUpdated) {\n return id++;\n }\n });\n}\n\nexport { useProjectionId };\n","import React__default from 'react';\n\nclass VisualElementHandler extends React__default.Component {\n /**\n * Update visual element props as soon as we know this update is going to be commited.\n */\n getSnapshotBeforeUpdate() {\n const { visualElement, props } = this.props;\n if (visualElement)\n visualElement.setProps(props);\n return null;\n }\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\n\nexport { VisualElementHandler };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, projectionNodeConstructor, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n let features = null;\n const context = useCreateMotionContext(props);\n /**\n * Create a unique projection ID for this component. If a new component is added\n * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n * us to measure it as soon as any layout effect flushes pending layout animations.\n *\n * Performance note: It'd be better not to have to search the DOM for these elements.\n * For newly-entering components it could be enough to only correct treeScale, in which\n * case we could mount in a scale-correction mode. This wouldn't be enough for\n * shared element transitions however. Perhaps for those we could revert to a root node\n * that gets forceRendered and layout animations are triggered on its layout effect.\n */\n const projectionId = isStatic ? undefined : useProjectionId();\n /**\n *\n */\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const lazyStrictMode = useContext(LazyContext).strict;\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (context.visualElement) {\n features = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, lazyStrictMode, preloadedFeatures, projectionId, projectionNodeConstructor ||\n featureDefinitions.projectionNodeConstructor, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(VisualElementHandler, { visualElement: context.visualElement, props: configAndProps },\n features,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement))));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","const isMotionValue = (value) => !!(value === null || value === void 0 ? void 0 : value.getVelocity);\n\nexport { isMotionValue };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst sortTransformProps = (a, b) => transformPropOrder.indexOf(a) - transformPropOrder.indexOf(b);\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform({ transform, transformKeys, }, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Loop over each transform and build them into transformString\n for (const key of transformKeys) {\n transformString += `${translateAlias[key] || key}(${transform[key]}) `;\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariable } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformKeys, transformOrigin } = state;\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariable(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformKeys: [],\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"onLayoutAnimationStart\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, projectionId, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = {\n ...filteredProps,\n ...visualProps,\n ref,\n };\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n if (projectionId) {\n elementProps[\"data-projection-id\"] = projectionId;\n }\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style && isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps);\n for (const key in props) {\n if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n const targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n projectionNodeConstructor,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n AnimationType[\"Animate\"] = \"animate\";\n AnimationType[\"Hover\"] = \"whileHover\";\n AnimationType[\"Tap\"] = \"whileTap\";\n AnimationType[\"Drag\"] = \"whileDrag\";\n AnimationType[\"Focus\"] = \"whileFocus\";\n AnimationType[\"InView\"] = \"whileInView\";\n AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return
\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(() => {\n const element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { useDomEvent } from '../events/use-dom-event.mjs';\nimport { useCallback } from 'react';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture({ whileFocus, visualElement, }) {\n const { animationState } = visualElement;\n const onFocus = useCallback(() => {\n animationState && animationState.setActive(AnimationType.Focus, true);\n }, [animationState]);\n const onBlur = useCallback(() => {\n animationState && animationState.setActive(AnimationType.Focus, false);\n }, [animationState]);\n useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[pointType + \"X\"],\n y: event[pointType + \"Y\"],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent, useDomEvent } from './use-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, eventName, handler && addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { useMemo } from 'react';\n\nfunction createHoverEvent(visualElement, isActive, applyVariants, callback) {\n return (event, info) => {\n if (event.type === \"touch\" || isDragActive())\n return;\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (applyVariants && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Hover, isActive);\n }\n callback && callback(event, info);\n };\n}\nfunction useHoverGesture({ onHoverStart, onHoverEnd, whileHover, visualElement, }) {\n usePointerEvent(visualElement, \"pointerenter\", useMemo(() => {\n return onHoverStart || whileHover\n ? createHoverEvent(visualElement, true, Boolean(whileHover), onHoverStart)\n : undefined;\n }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverStart });\n usePointerEvent(visualElement, \"pointerleave\", useMemo(() => {\n return onHoverEnd || whileHover\n ? createHoverEvent(visualElement, false, Boolean(whileHover), onHoverEnd)\n : undefined;\n }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverEnd });\n}\n\nexport { useHoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","import { useRef, useCallback } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { addPointerEvent, usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture({ onTap, onTapStart, onTapCancel, whileTap, visualElement, ...props }) {\n const hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n const isPressing = useRef(false);\n const cancelPointerEndListeners = useRef(null);\n /**\n * Only set listener to passive if there are no external listeners.\n */\n const eventOptions = {\n passive: !(onTapStart ||\n onTap ||\n onTapCancel ||\n props[\"onPointerDown\"]),\n };\n function removePointerEndListener() {\n cancelPointerEndListeners.current && cancelPointerEndListeners.current();\n cancelPointerEndListeners.current = null;\n }\n function checkPointerEnd() {\n removePointerEndListener();\n isPressing.current = false;\n const latestProps = visualElement.getProps();\n if (latestProps.whileTap && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Tap, false);\n }\n return !isDragActive();\n }\n function onPointerUp(event, info) {\n var _a, _b, _c, _d;\n if (!checkPointerEnd())\n return;\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !isNodeOrChild(visualElement.current, event.target)\n ? (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info)\n : (_d = (_c = visualElement.getProps()).onTap) === null || _d === void 0 ? void 0 : _d.call(_c, event, info);\n }\n function onPointerCancel(event, info) {\n var _a, _b;\n if (!checkPointerEnd())\n return;\n (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info);\n }\n const startPress = useCallback((event, info) => {\n var _a;\n removePointerEndListener();\n if (isPressing.current)\n return;\n isPressing.current = true;\n cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n const latestProps = visualElement.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (latestProps.whileTap && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Tap, true);\n }\n (_a = latestProps.onTapStart) === null || _a === void 0 ? void 0 : _a.call(latestProps, event, info);\n }, [Boolean(onTapStart), visualElement]);\n usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? startPress : undefined, eventOptions);\n useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { useRef, useEffect } from 'react';\nimport { AnimationType } from '../../../render/utils/types.mjs';\nimport { warnOnce } from '../../../utils/warn-once.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nfunction useViewport({ visualElement, whileInView, onViewportEnter, onViewportLeave, viewport = {}, }) {\n const state = useRef({\n hasEnteredView: false,\n isInView: false,\n });\n let shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n if (viewport.once && state.current.hasEnteredView)\n shouldObserve = false;\n const useObserver = typeof IntersectionObserver === \"undefined\"\n ? useMissingIntersectionObserver\n : useIntersectionObserver;\n useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, { root, margin: rootMargin, amount = \"some\", once }) {\n useEffect(() => {\n if (!shouldObserve || !visualElement.current)\n return;\n const options = {\n root: root === null || root === void 0 ? void 0 : root.current,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const intersectionCallback = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (state.isInView === isIntersecting)\n return;\n state.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && state.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n state.hasEnteredView = true;\n }\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const props = visualElement.getProps();\n const callback = isIntersecting\n ? props.onViewportEnter\n : props.onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(visualElement.current, options, intersectionCallback);\n }, [shouldObserve, root, rootMargin, amount]);\n}\n/**\n * If IntersectionObserver is missing, we activate inView and fire onViewportEnter\n * on mount. This way, the page will be in the state the author expects users\n * to see it in for everyone.\n */\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, { fallback = true }) {\n useEffect(() => {\n if (!shouldObserve || !fallback)\n return;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n }\n /**\n * Fire this in an rAF because, at this point, the animation state\n * won't have flushed for the first time and there's certain logic in\n * there that behaves differently on the initial animation.\n *\n * This hook should be quite rarely called so setting this in an rAF\n * is preferred to changing the behaviour of the animation state.\n */\n requestAnimationFrame(() => {\n state.hasEnteredView = true;\n const { onViewportEnter } = visualElement.getProps();\n onViewportEnter && onViewportEnter(null);\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, true);\n }\n });\n }, [shouldObserve]);\n}\n\nexport { useViewport };\n","const makeRenderlessComponent = (hook) => (props) => {\n hook(props);\n return null;\n};\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.mjs';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.mjs';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.mjs';\nimport { useViewport } from './viewport/use-viewport.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst gestureAnimations = {\n inView: makeRenderlessComponent(useViewport),\n tap: makeRenderlessComponent(useTapGesture),\n focus: makeRenderlessComponent(useFocusGesture),\n hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\n","import { useContext, useId, useEffect } 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 // Replace with useId when released in React\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\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","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { frameData } from '../frameloop/data.mjs';\nimport { sync } from '../frameloop/index.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\n\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"8.5.5\";\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n this.prev = this.current;\n this.current = v;\n // Update timestamp\n const { delta, timestamp } = frameData;\n if (this.lastUpdated !== timestamp) {\n this.timeDelta = delta;\n this.lastUpdated = timestamp;\n sync.postRender(this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (this.prev !== this.current && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update velocity subscribers\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = () => sync.postRender(this.velocityCheck);\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = ({ timestamp }) => {\n if (timestamp !== this.lastUpdated) {\n this.prev = this.current;\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n this.owner = options.owner;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n sync.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = prev;\n this.timeDelta = delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v) {\n this.updateAndNotify(v);\n this.prev = v;\n this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve) || null;\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n this.animation = null;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, motionValue };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = \"${c}\";\nconst numberToken = \"${n}\";\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nfunction analyseComplexValue(v) {\n if (typeof v === \"number\")\n v = `${v}`;\n const values = [];\n let numColors = 0;\n let numNumbers = 0;\n const colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n // Strip colors from input so they're not picked up by number regex.\n // There's a better way to combine these regex searches, but its beyond my regex skills\n v = v.replace(colorRegex, colorToken);\n values.push(...colors.map(color.parse));\n }\n const numbers = v.match(floatRegex);\n if (numbers) {\n numNumbers = numbers.length;\n v = v.replace(floatRegex, numberToken);\n values.push(...numbers.map(number.parse));\n }\n return { values, numColors, numNumbers, tokenised: v };\n}\nfunction parse(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { values, numColors, tokenised } = analyseComplexValue(source);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors\n ? color.transform(v[i])\n : sanitize(v[i]));\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parse(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n var _a;\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.values.forEach((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","import { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n var _a;\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n setVariants(child, variantLabels);\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}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n if (value !== null)\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n var _a;\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n origin[key] =\n transitionOrigin !== undefined\n ? transitionOrigin\n : (_a = visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.get();\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n\nexport { secondsToMilliseconds };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst easeIn = (p) => p * p;\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\n\nexport { easeIn, easeInOut, easeOut };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { invariant } from 'hey-listen';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\nimport { hex } from '../value/types/color/hex.mjs';\nimport { rgba } from '../value/types/color/rgba.mjs';\nimport { hsla } from '../value/types/color/hsla.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n return Math.sqrt(Math.max(0, v * (to * to - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n invariant(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mix(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\nimport { color } from '../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../value/types/complex/index.mjs';\n\nfunction getMixer(origin, target) {\n if (typeof origin === \"number\") {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = { ...origin, ...target };\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.numColors === targetStats.numColors &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.values, targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return (p) => `${p > 0 ? target : origin}`;\n }\n};\n\nexport { mixArray, mixComplex, mixObject };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { invariant } from 'hey-listen';\nimport { color } from '../value/types/color/index.mjs';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === \"number\") {\n return mixNumber;\n }\n else if (typeof v === \"string\") {\n if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === \"object\") {\n return mixObject;\n }\n return mixNumber;\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, \"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.\");\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","const noop = (any) => any;\n\nexport { noop };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circOut);\n\nexport { circIn, circInOut, circOut };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { invariant } from 'hey-listen';\nimport { cubicBezier } from '../../easing/cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../../easing/ease.mjs';\nimport { circIn, circInOut, circOut } from '../../easing/circ.mjs';\nimport { backIn, backInOut, backOut } from '../../easing/back.mjs';\nimport { anticipate } from '../../easing/anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\nconst isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { isEasingArray, easingDefinitionToFunction } from '../utils/easing.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n const numValues = values.length;\n return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\nfunction keyframes({ keyframes: keyframeValues, ease = easeInOut, times, duration = 300, }) {\n keyframeValues = [...keyframeValues];\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n function createInterpolator() {\n return interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n }\n let interpolator = createInterpolator();\n return {\n next: (t) => {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: () => {\n keyframeValues.reverse();\n interpolator = createInterpolator();\n },\n };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= maxDuration * 1000, \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, duration / 1000);\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = duration * 1000;\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { findSpring, calcAngularFreq } from './find-spring.mjs';\nimport { velocityPerSecond } from '../../utils/velocity-per-second.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n velocity: 0.0,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nconst velocitySampleDuration = 5;\n/**\n * This is based on the spring implementation of Wobble https://github.com/skevy/wobble\n */\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n let origin = keyframes[0];\n let target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n let resolveSpring = zero;\n let initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n function createSpring() {\n const initialDelta = target - origin;\n const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) *\n t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n }\n createSpring();\n return {\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n const prevT = Math.max(0, t - velocitySampleDuration);\n currentVelocity = velocityPerSecond(current - resolveSpring(prevT), t - prevT);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n flipTarget: () => {\n initialVelocity = -initialVelocity;\n [origin, target] = [target, origin];\n createSpring();\n },\n };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nconst zero = (_t) => 0;\n\nexport { spring };\n","function decay({ \n/**\n * The decay animation dynamically calculates an end of the animation\n * based on the initial keyframe, so we only need to define a single keyframe\n * as default.\n */\nkeyframes = [0], velocity = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget, }) {\n const origin = keyframes[0];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n return {\n next: (t) => {\n const delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: () => { },\n };\n}\n\nexport { decay };\n","import { keyframes } from './keyframes.mjs';\nimport { spring } from './spring.mjs';\nimport { decay } from './decay.mjs';\nimport { sync, cancelSync } from '../../frameloop/index.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\n\nconst types = {\n decay,\n keyframes: keyframes,\n tween: keyframes,\n spring,\n};\nfunction loopElapsed(elapsed, duration, delay = 0) {\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration = 0, delay = 0, isForwardPlayback = true) {\n return isForwardPlayback\n ? loopElapsed(duration + -elapsed, duration, delay)\n : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\nconst framesync = (update) => {\n const passTimestamp = ({ delta }) => update(delta);\n return {\n start: () => sync.update(passTimestamp, true),\n stop: () => cancelSync.update(passTimestamp),\n };\n};\nfunction animate({ duration, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, keyframes: keyframes$1, autoplay = true, onPlay, onStop, onComplete, onRepeat, onUpdate, type = \"keyframes\", ...options }) {\n var _a, _b;\n const initialElapsed = elapsed;\n let driverControls;\n let repeatCount = 0;\n let computedDuration = duration;\n let isComplete = false;\n let isForwardPlayback = true;\n let interpolateFromNumber;\n const animator = types[keyframes$1.length > 2 ? \"keyframes\" : type] || keyframes;\n const origin = keyframes$1[0];\n const target = keyframes$1[keyframes$1.length - 1];\n let state = { done: false, value: origin };\n if ((_b = (_a = animator).needsInterpolation) === null || _b === void 0 ? void 0 : _b.call(_a, origin, target)) {\n interpolateFromNumber = interpolate([0, 100], [origin, target], {\n clamp: false,\n });\n keyframes$1 = [0, 100];\n }\n const animation = animator({\n ...options,\n duration,\n keyframes: keyframes$1,\n });\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n }\n else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\")\n animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls && driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback)\n delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n state = animation.next(Math.max(0, elapsed));\n if (interpolateFromNumber)\n state.value = interpolateFromNumber(state.value);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate && onUpdate(state.value);\n if (isComplete) {\n if (repeatCount === 0) {\n computedDuration =\n computedDuration !== undefined ? computedDuration : elapsed;\n }\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n }\n else {\n complete();\n }\n }\n }\n function play() {\n onPlay && onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: () => {\n onStop && onStop();\n driverControls && driverControls.stop();\n },\n /**\n * Set the current time of the animation. This is purposefully\n * mirroring the WAAPI animation API to make them interchanagable.\n * Going forward this file should be ported more towards\n * https://github.com/motiondivision/motionone/blob/main/packages/animation/src/Animation.ts\n * Which behaviourally adheres to WAAPI as far as possible.\n *\n * WARNING: This is not safe to use for most animations. We currently\n * only use it for handoff from WAAPI within Framer.\n *\n * This animation function consumes time every frame rather than being sampled for time.\n * So the sample() method performs some headless frames to ensure\n * repeats are handled correctly. Ideally in the future we will replace\n * that method with this, once repeat calculations are pure.\n */\n set currentTime(t) {\n elapsed = initialElapsed;\n update(t);\n },\n /**\n * animate() can't yet be sampled for time, instead it\n * consumes time. So to sample it we have to run a low\n * temporal-resolution version.\n */\n sample: (t) => {\n elapsed = initialElapsed;\n const sampleResolution = duration && typeof duration === \"number\"\n ? Math.max(duration * 0.5, 50)\n : 50;\n let sampleElapsed = 0;\n update(0);\n while (sampleElapsed <= t) {\n const remaining = t - sampleElapsed;\n update(Math.min(remaining, sampleResolution));\n sampleElapsed += sampleResolution;\n }\n return state;\n },\n };\n}\n\nexport { animate, hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","function isWaapiSupportedEasing(easing) {\n return (!easing || // Default easing\n Array.isArray(easing) || // Bezier curve\n (typeof easing === \"string\" && supportedWaapiEasing[easing]));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing) {\n if (!easing)\n return undefined;\n return Array.isArray(easing)\n ? cubicBezierAsString(easing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n return element.animate({ [valueName]: keyframes, offset: times }, {\n delay,\n duration,\n easing: mapEasingToNativeEasing(ease),\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n}\n\nexport { animateStyle };\n","const featureTests = {\n waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\"),\n};\nconst results = {};\nconst supports = {};\n/**\n * Generate features tests that cache their results.\n */\nfor (const key in featureTests) {\n supports[key] = () => {\n if (results[key] === undefined)\n results[key] = featureTests[key]();\n return results[key];\n };\n}\n\nexport { supports };\n","function getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }) {\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : keyframes.length - 1;\n return keyframes[index];\n}\n\nexport { getFinalKeyframe };\n","import { sync } from '../../frameloop/index.mjs';\nimport { animate } from '../legacy-popmotion/index.mjs';\nimport { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { supports } from './supports.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\n\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\"opacity\"]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supports.waapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0;\n if (!canAccelerateAnimation)\n return false;\n let { keyframes, duration = 300, elapsed = 0, ease } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (options.type === \"spring\" || !isWaapiSupportedEasing(options.ease)) {\n /**\n * If we need to pre-generate keyframes and repeat is infinite then\n * early return as this will lock the thread.\n */\n if (options.repeat === Infinity)\n return;\n const sampleAnimation = animate({ ...options, elapsed: 0 });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < 20000) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n delay: -elapsed,\n duration,\n /**\n * This function is currently not called if ease is provided\n * as a function so the cast is safe.\n *\n * However it would be possible for a future refinement to port\n * in easing pregeneration from Motion One for browsers that\n * support the upcoming `linear()` easing function.\n */\n ease: ease,\n });\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n value.set(getFinalKeyframe(keyframes, options));\n sync.update(() => animation.cancel());\n onComplete && onComplete();\n };\n /**\n * Animation interrupt callback.\n */\n return {\n get currentTime() {\n return animation.currentTime || 0;\n },\n set currentTime(t) {\n animation.currentTime = t;\n },\n stop: () => {\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n const { currentTime } = animation;\n if (currentTime) {\n const sampleAnimation = animate({ ...options, autoplay: false });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n sync.update(() => animation.cancel());\n },\n };\n}\n\nexport { createAcceleratedAnimation };\n","import { sync, cancelSync } from '../frameloop/index.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = performance.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelSync.read(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n sync.read(checkElapsed, true);\n return () => cancelSync.read(checkElapsed);\n}\n\nexport { delay };\n","import { delay } from '../utils/delay.mjs';\n\nfunction createInstantAnimation({ keyframes, elapsed, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n };\n return elapsed ? { stop: delay(setValue, -elapsed) } : setValue();\n}\n\nexport { createInstantAnimation };\n","import { animate } from './index.mjs';\nimport { velocityPerSecond } from '../../utils/velocity-per-second.mjs';\nimport { frameData } from '../../frameloop/data.mjs';\n\nfunction inertia({ keyframes, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop, }) {\n const origin = keyframes[0];\n let currentAnimation;\n function isOutOfBounds(v) {\n return (min !== undefined && v < min) || (max !== undefined && v > max);\n }\n function findNearestBoundary(v) {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n }\n function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate({\n keyframes: [0, 1],\n velocity: 0,\n ...options,\n driver,\n onUpdate: (v) => {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n },\n onComplete,\n onStop,\n });\n }\n function startSpring(options) {\n startAnimation({\n type: \"spring\",\n stiffness: bounceStiffness,\n damping: bounceDamping,\n restDelta,\n ...options,\n });\n }\n if (isOutOfBounds(origin)) {\n // Start the animation with spring if outside the defined boundaries\n startSpring({\n velocity,\n keyframes: [origin, findNearestBoundary(origin)],\n });\n }\n else {\n /**\n * Or if the value is out of bounds, simulate the inertia movement\n * with the decay animation.\n *\n * Pre-calculate the target so we can detect if it's out-of-bounds.\n * If it is, we want to check per frame when to switch to a spring\n * animation\n */\n let target = power * velocity + origin;\n if (typeof modifyTarget !== \"undefined\")\n target = modifyTarget(target);\n const boundary = findNearestBoundary(target);\n const heading = boundary === min ? -1 : 1;\n let prev;\n let current;\n const checkBoundary = (v) => {\n prev = current;\n current = v;\n velocity = velocityPerSecond(v - prev, frameData.delta);\n if ((heading === 1 && v > boundary) ||\n (heading === -1 && v < boundary)) {\n startSpring({ keyframes: [v, boundary], velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n keyframes: [origin, 0],\n velocity,\n timeConstant,\n power,\n restDelta,\n modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n });\n }\n return {\n stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(),\n };\n}\n\nexport { inertia };\n","const underDampedSpring = () => ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n});\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst linearTween = () => ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\nconst defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: criticallyDampedSpring,\n scaleY: criticallyDampedSpring,\n scale: criticallyDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: criticallyDampedSpring,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else {\n const factory = defaultTransitions[valueKey] || defaultTransitions.default;\n return factory(keyframes[1]);\n }\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction isZero(value) {\n return (value === 0 ||\n (typeof value === \"string\" &&\n parseFloat(value) === 0 &&\n value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n return typeof potentialUnitType === \"number\"\n ? 0\n : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, getZeroUnit, isTransitionDefined, isZero };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isZero, getZeroUnit } from './transitions.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let origin = transition.from !== undefined ? transition.from : value.get();\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n origin = getAnimatableNone(valueName, target);\n }\n else if (isZero(origin) && typeof target === \"string\") {\n origin = getZeroUnit(target);\n }\n else if (!Array.isArray(target) &&\n isZero(target) &&\n typeof origin === \"string\") {\n target = getZeroUnit(origin);\n }\n /**\n * If the target has been defined as a series of keyframes\n */\n if (Array.isArray(target)) {\n /**\n * Ensure an initial wildcard keyframe is hydrated by the origin.\n * TODO: Support extra wildcard keyframes i.e [1, null, 0]\n */\n if (target[0] === null) {\n target[0] = origin;\n }\n return target;\n }\n else {\n return [origin, target];\n }\n}\n\nexport { getKeyframes };\n","import { warning } from 'hey-listen';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from './waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from './create-instant-animation.mjs';\nimport { animate } from './legacy-popmotion/index.mjs';\nimport { inertia } from './legacy-popmotion/inertia.mjs';\nimport { getDefaultTransition } from './utils/default-transitions.mjs';\nimport { isAnimatable } from './utils/is-animatable.mjs';\nimport { getKeyframes } from './utils/keyframes.mjs';\nimport { getValueTransition, isTransitionDefined } from './utils/transitions.mjs';\n\nconst createMotionValueAnimation = (valueName, value, target, transition = {}) => {\n return (onComplete) => {\n const valueTransition = getValueTransition(transition, valueName) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n const keyframes = getKeyframes(value, valueName, target, valueTransition);\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n let options = {\n keyframes,\n velocity: value.getVelocity(),\n ...valueTransition,\n elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\n if (!isOriginAnimatable ||\n !isTargetAnimatable ||\n instantAnimationState.current ||\n valueTransition.type === false) {\n /**\n * If we can't animate this value, or the global instant animation flag is set,\n * or this is simply defined as an instant transition, return an instant transition.\n */\n return createInstantAnimation(options);\n }\n else if (valueTransition.type === \"inertia\") {\n /**\n * If this is an inertia animation, we currently don't support pre-generating\n * keyframes for this as such it must always run on the main thread.\n */\n return inertia(options);\n }\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(valueName, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n const visualElement = value.owner;\n const element = visualElement && visualElement.current;\n /**\n * Animate via WAAPI if possible.\n */\n if (visualElement &&\n element instanceof HTMLElement &&\n !(visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onUpdate)) {\n const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n if (acceleratedAnimation)\n return acceleratedAnimation;\n }\n /**\n * If we didn't create an accelerated animation, create a JS animation\n */\n return animate(options);\n };\n};\n\nexport { createMotionValueAnimation };\n","import { setTarget } from './setters.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { createMotionValueAnimation } from '../../animation/index.mjs';\nimport { sync } from '../../frameloop/index.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = animateTarget(visualElement, resolvedDefinition, options);\n }\n return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.custom);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => animateTarget(visualElement, resolved, options)\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size)\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(last);\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\n/**\n * @internal\n */\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type && ((_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.getState()[type]);\n for (const key in target) {\n const value = visualElement.getValue(key);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = { delay, elapsed: 0, ...transition };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n if (window.HandoffAppearAnimations && !value.hasAnimated) {\n const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n if (appearId) {\n valueTransition.elapsed = window.HandoffAppearAnimations(appearId, key, value, sync);\n }\n }\n let animation = value.start(createMotionValueAnimation(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation = animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n return Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\n\nexport { animateVisualElement, sortByTreeOrder, stopAnimation };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { animateVisualElement } from './animation.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { AnimationType } from './types.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\nconst variantPriorityOrder = [\n AnimationType.Animate,\n AnimationType.InView,\n AnimationType.Focus,\n AnimationType.Hover,\n AnimationType.Tap,\n AnimationType.Drag,\n AnimationType.Exit,\n];\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(options, changedActiveType) {\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined ? props[type] : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev) || variantDidChange) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type, ...options },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive, options) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n [AnimationType.Animate]: createTypeState(true),\n [AnimationType.InView]: createTypeState(),\n [AnimationType.Hover]: createTypeState(),\n [AnimationType.Tap]: createTypeState(),\n [AnimationType.Drag]: createTypeState(),\n [AnimationType.Focus]: createTypeState(),\n [AnimationType.Exit]: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState, variantPriorityOrder };\n","import { useEffect, useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { usePresence } from '../../components/AnimatePresence/use-presence.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { createAnimationState } from '../../render/utils/animation-state.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst animations = {\n animation: makeRenderlessComponent(({ visualElement, animate }) => {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n if (isAnimationControls(animate)) {\n useEffect(() => animate.subscribe(visualElement), [animate]);\n }\n }),\n exit: makeRenderlessComponent((props) => {\n const { custom, visualElement } = props;\n const [isPresent, safeToRemove] = usePresence();\n const presenceContext = useContext(PresenceContext);\n useEffect(() => {\n visualElement.isPresent = isPresent;\n const animation = visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Exit, !isPresent, {\n custom: (presenceContext && presenceContext.custom) ||\n custom,\n });\n if (animation && !isPresent) {\n animation.then(safeToRemove);\n }\n }, [isPresent]);\n }),\n};\n\nexport { animations };\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 { sync, cancelSync } from '../frameloop/index.mjs';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { distance2D } from '../utils/distance.mjs';\nimport { frameData } from '../frameloop/data.mjs';\nimport { isPrimaryPointer } from '../events/utils/is-primary-pointer.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint } = {}) {\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 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 sync.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const { onEnd, onSessionEnd } = this.handlers;\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.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\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(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelSync.update(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 = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\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 { mix } from '../../utils/mix.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin === null || origin === void 0 ? void 0 : origin.originX);\n calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\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 { mix } from '../../../utils/mix.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 ? mix(min, point, elastic.min) : 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 ? mix(max, point, elastic.max) : 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","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mix } from '../../utils/mix.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n var _a, _b;\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n if (((_b = (_a = node.instance) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === \"contents\")\n continue;\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\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 * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","import { invariant } from 'hey-listen';\nimport { PanSession } from '../PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/use-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { AnimationType } from '../../render/utils/types.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/use-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { createMotionValueAnimation } from '../../animation/index.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 if (this.visualElement.isPresent === false)\n return;\n const onSessionStart = (event) => {\n // Stop any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n 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 var _a, _b;\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 measuredAxis = (_b = (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n (_a = this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, 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 === null || onDirectionLock === void 0 ? void 0 : 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 === null || onDrag === void 0 ? void 0 : onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n }\n stop(event, info) {\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 onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n }\n cancel() {\n var _a, _b;\n this.isDragging = false;\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = false;\n }\n (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, 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 const { dragConstraints, dragElastic } = this.getProps();\n const { layout } = this.visualElement.projection || {};\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.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 === null || constraints === void 0 ? void 0 : 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(createMotionValueAnimation(axis, axisValue, 0, transition));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\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 var _a;\n const dragKey = \"_drag\" + axis.toUpperCase();\n const externalMotionValue = this.visualElement.getProps()[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, ((_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) || 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] - mix(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 var _a;\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) {\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 (_a = projection.root) === null || _a === void 0 ? void 0 : _a.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(mix(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n var _a;\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)) {\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 (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n projection.updateLayout();\n }\n 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 === null || stopLayoutUpdateListener === void 0 ? void 0 : 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 { useEffect } from 'react';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * A hook that allows an element to be dragged.\n *\n * @internal\n */\nfunction useDrag(props) {\n const { dragControls: groupDragControls, visualElement } = props;\n const dragControls = useConstant(() => new VisualElementDragControls(visualElement));\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n useEffect(() => groupDragControls && groupDragControls.subscribe(dragControls), [dragControls, groupDragControls]);\n // Apply the event listeners to the element\n useEffect(() => dragControls.addListeners(), [dragControls]);\n}\n\nexport { useDrag };\n","import { useRef, useContext, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { PanSession } from './PanSession.mjs';\n\n/**\n *\n * @param handlers -\n * @param ref -\n *\n * @privateRemarks\n * Currently this sets new pan gesture functions every render. The memo route has been explored\n * in the past but ultimately we're still creating new functions every render. An optimisation\n * to explore is creating the pan gestures and loading them into a `ref`.\n *\n * @internal\n */\nfunction usePanGesture({ onPan, onPanStart, onPanEnd, onPanSessionStart, visualElement, }) {\n const hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n const panSession = useRef(null);\n const { transformPagePoint } = useContext(MotionConfigContext);\n const handlers = {\n onSessionStart: onPanSessionStart,\n onStart: onPanStart,\n onMove: onPan,\n onEnd: (event, info) => {\n panSession.current = null;\n onPanEnd && onPanEnd(event, info);\n },\n };\n useEffect(() => {\n if (panSession.current !== null) {\n panSession.current.updateHandlers(handlers);\n }\n });\n function onPointerDown(event) {\n panSession.current = new PanSession(event, handlers, {\n transformPagePoint,\n });\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n useUnmountEffect(() => panSession.current && panSession.current.end());\n}\n\nexport { usePanGesture };\n","import { useDrag } from '../../gestures/drag/use-drag.mjs';\nimport { usePanGesture } from '../../gestures/use-pan-gesture.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst drag = {\n pan: makeRenderlessComponent(usePanGesture),\n drag: makeRenderlessComponent(useDrag),\n};\n\nexport { drag };\n","import { invariant } from 'hey-listen';\n\nfunction isCSSVariable(value) {\n return typeof value === \"string\" && value.startsWith(\"var(--\");\n}\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = cssVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n return resolved.trim();\n }\n else if (isCSSVariable(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.current;\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.values.forEach((value) => {\n const current = value.get();\n if (!isCSSVariable(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariable(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd && transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { cssVariableRegex, parseCSSVariable, resolveCSSVariables };\n","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from 'hey-listen';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n]);\nconst isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\n};\nconst isNumOrPxType = (v) => v === number || v === px;\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n BoundingBoxDimension[\"width\"] = \"width\";\n BoundingBoxDimension[\"height\"] = \"height\";\n BoundingBoxDimension[\"left\"] = \"left\";\n BoundingBoxDimension[\"right\"] = \"right\";\n BoundingBoxDimension[\"top\"] = \"top\";\n BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.current;\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n value && value.jump(origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n value.jump(to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { BoundingBoxDimension, positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"8.5.5\", `Attempting to mix Framer Motion versions ${nextValue.version} with 8.5.5 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { sync, cancelSync } from '../frameloop/index.mjs';\nimport { invariant } from 'hey-listen';\nimport { createElement } from 'react';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { variantPriorityOrder } from './utils/animation-state.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n constructor({ parent, props, reducedMotionConfig, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n /**\n * Tracks whether this VisualElement's React component is currently present\n * within the defined React tree.\n */\n this.isPresent = true;\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => sync.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps) {\n return {};\n }\n mount(instance) {\n var _a;\n this.current = instance;\n if (this.projection) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.setProps(this.props);\n }\n unmount() {\n var _a, _b, _c;\n (_a = this.projection) === null || _a === void 0 ? void 0 : _a.unmount();\n cancelSync.update(this.notifyUpdate);\n cancelSync.render(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n (_b = this.removeFromVariantTree) === null || _b === void 0 ? void 0 : _b.call(this);\n (_c = this.parent) === null || _c === void 0 ? void 0 : _c.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate &&\n sync.update(this.notifyUpdate, false, true);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type)\n return 0;\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, projectionId, ProjectionNodeConstructor, initialLayoutGroupConfig) {\n const features = [];\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Component } = featureDefinitions[name];\n /**\n * It might be possible in the future to use this moment to\n * dynamically request functionality. In initial tests this\n * was producing a lot of duplication amongst bundles.\n */\n if (isEnabled(renderedProps) && Component) {\n features.push(createElement(Component, {\n key: name,\n ...renderedProps,\n visualElement: this,\n }));\n }\n }\n if (!this.projection && ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(projectionId, this.latestValues, this.parent && this.parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return features;\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n setProps(props) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n const prevProps = this.props;\n this.props = props;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listener = props[\"on\" + key];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, prevProps), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n var _a;\n return (_a = this.props.variants) === null || _a === void 0 ? void 0 : _a[name];\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n var _a;\n return this.isVariantNode ? this : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getClosestVariantNode();\n }\n getVariantContext(startAtParent = false) {\n var _a, _b;\n if (startAtParent)\n return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getVariantContext();\n if (!this.isControllingVariants) {\n const context = ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.getVariantContext()) || {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = this.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n var _a;\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n (_a = closestVariantNode.variantChildren) === null || _a === void 0 ? void 0 : _a.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n if (value !== this.values.get(key)) {\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n }\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n var _a;\n this.values.delete(key);\n (_a = this.valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n this.valueSubscriptions.delete(key);\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key) {\n return this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : this.readValueFromInstance(this.current, key, this.options);\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n var _a;\n (_a = this.events[eventName]) === null || _a === void 0 ? void 0 : _a.notify(...args);\n }\n}\nconst variantProps = [\"initial\", ...variantPriorityOrder];\nconst numVariantProps = variantProps.length;\n\nexport { VisualElement };\n","import { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { parseDomVariant } from './utils/parse-dom-variant.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n var _a;\n return (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n let origin = getOrigin(target, transition || {}, this);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (isMounted) {\n checkTargetForNewValues(this, target, origin);\n const parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariable } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariable(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n var _a;\n if (transformProps.has(key)) {\n return ((_a = getDefaultValueType(key)) === null || _a === void 0 ? void 0 : _a.default) || 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\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 { cssVariableRegex } from '../../render/dom/utils/css-variables-conversion.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst varToken = \"_$css\";\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n const containsCSSVariables = latest.includes(\"var(\");\n const cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, (match) => {\n cssVariables.push(match);\n return varToken;\n });\n }\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 = mix(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 let output = template(shadow);\n if (containsCSSVariables) {\n let i = 0;\n output = output.replace(varToken, () => {\n const cssVariable = cssVariables[i];\n i++;\n return cssVariable;\n });\n }\n return output;\n },\n};\n\nexport { correctBoxShadow };\n","import { sync } from '../../../frameloop/index.mjs';\nimport React__default, { useContext } 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';\n\nclass MeasureLayoutWithContext extends React__default.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 sync.postRender(() => {\n var _a;\n if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.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 if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\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 === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (React__default.createElement(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 { MeasureLayout } from './MeasureLayout.mjs';\n\nconst layoutFeatures = {\n measureLayout: MeasureLayout,\n};\n\nexport { layoutFeatures };\n","import { createMotionValueAnimation } from './index.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\n\n/**\n * Animate a single value or a `MotionValue`.\n *\n * The first argument is either a `MotionValue` to animate, or an initial animation value.\n *\n * The second is either a value to animate to, or an array of keyframes to animate through.\n *\n * The third argument can be either tween or spring options, and optional lifecycle methods: `onUpdate`, `onPlay`, `onComplete`, `onRepeat` and `onStop`.\n *\n * Returns `AnimationPlaybackControls`, currently just a `stop` method.\n *\n * ```javascript\n * const x = useMotionValue(0)\n *\n * useEffect(() => {\n * const controls = animate(x, 100, {\n * type: \"spring\",\n * stiffness: 2000,\n * onComplete: v => {}\n * })\n *\n * return controls.stop\n * })\n * ```\n *\n * @public\n */\nfunction animate(from, to, transition = {}) {\n const value = isMotionValue(from) ? from : motionValue(from);\n value.start(createMotionValueAnimation(\"\", value, to, transition));\n return {\n stop: () => value.stop(),\n isAnimating: () => value.isAnimating(),\n };\n}\n\nexport { animate };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mix } from '../../utils/mix.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 = mix(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mix(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mix(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(mix(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 = mix(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\nexport { copyAxisInto, copyBoxInto };\n","import { mix } from '../../utils/mix.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 = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mix(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 === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n removeAxisTransforms(box.y, transforms, yKeys, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\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 boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, 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 var _a;\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 ((_a = node.root) === null || _a === void 0 ? void 0 : _a.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 var _a, _b, _c, _d, _e;\n (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\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 if (xTranslate || yTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\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 { rotate, rotateX, rotateY } = latestTransform;\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 }\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 { cancelSync, flushSync, sync } from '../../frameloop/index.mjs';\nimport { animate } from '../../animation/animate.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } 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 { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEquals, isDeltaZero, aspectRatio } 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 { mix } from '../../utils/mix.mjs';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\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 createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(elementId, 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 this.isTransformDirty = false;\n /**\n * Flag to true if we think the projection calculations for this or any\n * child might need recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = 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 * 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 // Note: Currently only running on root node\n this.potentialNodes = new Map();\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.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n };\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.elementId = elementId;\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 elementId && this.root.registerPotentialNode(elementId, this);\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 === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n registerPotentialNode(elementId, node) {\n this.potentialNodes.set(elementId, node);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = false) {\n var _a;\n if (this.instance)\n return;\n this.isSVG =\n instance instanceof SVGElement && instance.tagName !== \"svg\";\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 (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n this.elementId && this.root.potentialNodes.delete(this.elementId);\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 var _a, _b, _c, _d, _e;\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 = (_b = (_a = this.options.transition) !== null && _a !== void 0 ? _a : visualElement.getDefaultTransition()) !== null && _b !== void 0 ? _b : 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 !boxEquals(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 ((_c = this.resumeFrom) === null || _c === void 0 ? void 0 : _c.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 this.animationProgress === 0) {\n finishAnimation(this);\n }\n this.isLead() && ((_e = (_d = this.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d));\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n var _a, _b;\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n this.instance = undefined;\n cancelSync.preRender(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 var _a;\n return (this.isAnimationBlocked ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n var _a;\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n var _a;\n return (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n var _a, _b, _c;\n if (this.root.isUpdateBlocked()) {\n (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n return;\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 this.prevTransformTemplateValue = (_c = this.getTransformTemplate()) === null || _c === void 0 ? void 0 : _c(this.latestValues, \"\");\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n // Note: Currently only running on root node\n didUpdate() {\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 return;\n this.isUpdating = false;\n /**\n * Search for and mount newly-added projection elements.\n *\n * TODO: Every time a new component is rendered we could search up the tree for\n * the closest mounted node and query from there rather than document.\n */\n if (this.potentialNodes.size) {\n this.potentialNodes.forEach(mountNodeEarly);\n this.potentialNodes.clear();\n }\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 // Flush any scheduled updates\n flushSync.update();\n flushSync.preRender();\n flushSync.render();\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n sync.preRender(this.updateProjection, false, true);\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 sync.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 var _a;\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 (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.layoutBox);\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 this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n var _a;\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplateValue = (_a = this.getTransformTemplate()) === null || _a === void 0 ? void 0 : _a(this.latestValues, \"\");\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 const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\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 return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\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.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\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 var _a;\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, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layoutBox, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n /**\n *\n */\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.isProjectionDirty = true;\n this.root.scheduleUpdateProjection();\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 /**\n * Frame calculations\n */\n resolveTargetDelta() {\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 /**\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 if (!this.isProjectionDirty && !this.attemptToResolveRelativeTarget)\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 /**\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 // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent && relativeParent.layout) {\n this.relativeParent = relativeParent;\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 ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\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.relativeParent = relativeParent;\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 getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if ((this.parent.relativeTarget ||\n this.parent.targetDelta ||\n this.parent.options.layoutRoot) &&\n this.parent.layout) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n calcProjection() {\n var _a;\n const { isProjectionDirty, isTransformDirty } = this;\n this.isProjectionDirty = this.isTransformDirty = false;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n if (isProjectionDirty)\n canSkip = false;\n if (isShared && isTransformDirty)\n canSkip = false;\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(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.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 * 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 const { target } = lead;\n if (!target)\n return;\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n const prevProjectionTransform = this.projectionTransform;\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 this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\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, _b, _c;\n (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n var _a, _b;\n const snapshot = this.snapshot;\n const snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\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 isSharedLayoutAnimation = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.source) !== ((_a = this.layout) === null || _a === void 0 ? void 0 : _a.source);\n const isOnlyMember = (((_b = this.getStack()) === null || _b === void 0 ? void 0 : _b.members.length) || 0) <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n this.mixTargetDelta = (latest) => {\n var _a;\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 ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\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 var _a, _b;\n this.notifyListeners(\"animationStart\");\n (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n if (this.resumingFrom) {\n (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n }\n if (this.pendingAnimation) {\n cancelSync.update(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 = sync.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animate(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n var _a;\n this.mixTargetDelta(latest);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n },\n onComplete: () => {\n var _a;\n (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\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 var _a;\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n var _a;\n if (this.currentAnimation) {\n (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, 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 var _a, _b, _c;\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 node.promote({\n transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\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 resetRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n let hasRotate = 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.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ) {\n hasRotate = true;\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n const resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n const key = \"rotate\" + transformAxes[i];\n // Record the rotation and then temporarily set it to 0\n if (latestValues[key]) {\n resetValues[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n }\n }\n // Force a render of this element to apply the transform with all rotations\n // set to 0.\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\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 // TODO: Return lifecycle-persistent object\n const styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(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.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.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, _b, _c;\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 }\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 (!boxEquals(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 (_c = (_b = node.options).onExitComplete) === null || _c === void 0 ? void 0 : _c.call(_b);\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 * Propagate isProjectionDirty. Nodes are ordered by depth, so if the parent here\n * is dirty we can simply pass this forward.\n */\n node.isProjectionDirty || (node.isProjectionDirty = Boolean(node.parent && node.parent.isProjectionDirty));\n /**\n * Propagate isTransformDirty.\n */\n node.isTransformDirty || (node.isTransformDirty = Boolean(node.parent && node.parent.isTransformDirty));\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement === null || visualElement === void 0 ? void 0 : 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}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(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};\nfunction mountNodeEarly(node, elementId) {\n /**\n * Rather than searching the DOM from document we can search the\n * path for the deepest mounted ancestor and search from there\n */\n let searchNode = node.root;\n for (let i = node.path.length - 1; i >= 0; i--) {\n if (Boolean(node.path[i].instance)) {\n searchNode = node.path[i];\n break;\n }\n }\n const searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n const element = searchElement.querySelector(`[data-projection-id=\"${elementId}\"]`);\n if (element)\n node.mount(element, true);\n}\nfunction roundAxis(axis) {\n axis.min = Math.round(axis.min);\n axis.max = Math.round(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}\n\nexport { createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/use-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(0, {});\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 { 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 { layoutFeatures } from '../../motion/features/layout/index.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst featureBundle = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layoutFeatures,\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, featureBundle, createDomVisualElement, HTMLProjectionNode));\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 }, featureBundle, createDomVisualElement, HTMLProjectionNode));\n}\n\nexport { createDomMotionComponent, motion };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n"],"names":["LayoutGroupContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","PresenceContext","frameData","delta","timestamp","defaultTimestep","getCurrentTime","performance","now","Date","onNextFrame","window","requestAnimationFrame","callback","setTimeout","useDefaultElapsed","runNextFrame","isProcessing","stepsOrder","steps","reduce","acc","key","createRenderStep","toRun","toRunNextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","keepAlive","immediate","addToCurrentFrame","buffer","add","indexOf","push","length","cancel","index","splice","delete","process","i","has","sync","startLoop","cancelSync","flushSync","data","processStep","stepId","processFrame","Math","max","min","forEach","isValidProp","AnimationType","BoundingBoxDimension","MotionConfigContext","react","transformPagePoint","p","isStatic","reducedMotion","MotionContext","LazyContext","strict","isRefObject","ref","Object","prototype","hasOwnProperty","call","isVariantLabel","v","Array","isArray","isAnimationControls","start","variantProps","isControllingVariants","props","animate","some","name","isVariantNode","Boolean","variants","variantLabelsAsDependency","prop","join","createDefinition","isEnabled","propNames","featureDefinitions","measureLayout","animation","exit","drag","focus","hover","tap","pan","inView","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","id","VisualElementHandler","Component","getSnapshotBeforeUpdate","visualElement","setProps","componentDidUpdate","render","children","SwitchLayoutGroupContext","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","includes","test","scaleCorrectors","transformPropOrder","transformProps","Set","isForcedMotionValue","layout","layoutId","startsWith","undefined","isMotionValue","value","getVelocity","translateAlias","x","y","z","transformPerspective","sortTransformProps","a","b","isCSSVariable","getValueAsType","type","transform","clamp","number","parse","parseFloat","alpha","scale","default","sanitize","round","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","endsWith","unit","split","degrees","percent","px","vh","vw","progressPercentage","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","width","maxWidth","height","maxHeight","size","top","right","bottom","left","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","perspective","opacity","originX","originY","originZ","zIndex","fillOpacity","strokeOpacity","numOctaves","buildHTMLStyles","state","latestValues","options","transformTemplate","style","vars","transformKeys","transformOrigin","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","buildTransform","enableHardwareAcceleration","allowTransformNone","transformIsDefault","transformString","sort","trim","createHtmlRenderState","copyRawValuesOnly","target","source","validMotionProps","isValidMotionProp","shouldForward","require","_a","calcOrigin","origin","offset","dashKeys","array","camelKeys","buildSVGAttrs","attrX","attrY","pathLength","pathSpacing","pathOffset","latest","isSVGTag","viewBox","attrs","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","keys","createSvgRenderState","tag","toLowerCase","camelToDash","str","replace","renderHTML","element","styleProp","projection","assign","getProjectionStyles","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","setAttribute","scrapeMotionValuesFromProps","prevProps","newValues","scrape_motion_values_scrapeMotionValuesFromProps","toUpperCase","resolveVariantFromProps","definition","custom","currentValues","currentVelocity","isKeyframesTarget","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","get","makeUseVisualState","context","useContext","presenceContext","context_PresenceContext","O","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","values","motionValues","initial","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","resolved","transitionEnd","transition","valueTarget","mount","instance","config","use_constant","h","svgMotionConfig","useVisualState","getBBox","getBoundingClientRect","e","tagName","htmlMotionConfig","addDomEvent","eventName","handler","passive","addEventListener","removeEventListener","useDomEvent","useEffect","current","isPrimaryPointer","event","pointerType","button","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addPointerEvent","usePointerEvent","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","createHoverEvent","isActive","applyVariants","info","animationState","setActive","Hover","isNodeOrChild","parent","child","parentElement","combineFunctions","pipe","transformers","observerCallbacks","WeakMap","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","all","makeRenderlessComponent","hook","gestureAnimations","whileInView","onViewportEnter","onViewportLeave","viewport","useRef","hasEnteredView","isInView","shouldObserve","once","useObserver","IntersectionObserver","fallback","getProps","InView","root","rootMargin","amount","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","document","set","rootObservers","JSON","stringify","observe","unobserve","isIntersecting","onTap","onTapStart","onTapCancel","whileTap","hasPressListeners","isPressing","cancelPointerEndListeners","eventOptions","removePointerEndListener","checkPointerEnd","latestProps","Tap","onPointerUp","_b","_c","_d","onPointerCancel","startPress","useCallback","use_unmount_effect","whileFocus","onFocus","Focus","onBlur","onHoverStart","onHoverEnd","whileHover","useMemo","usePresence","isPresent","onExitComplete","register","useId","shallowCompare","next","prev","prevLength","isNumericalString","isZeroValueString","addUniqueItem","arr","item","removeItem","SubscriptionManager","constructor","subscriptions","notify","c","numSubscriptions","getSize","clear","velocityPerSecond","velocity","frameDuration","isFloat","isNaN","MotionValue","init","version","timeDelta","lastUpdated","canTrackVelocity","events","updateAndNotify","frameloop","Z_","postRender","scheduleVelocityCheck","change","velocityChange","renderRequest","velocityCheck","hasAnimated","owner","onChange","subscription","on","unsubscribe","read","stop","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","setWithVelocity","jump","getPrevious","startAnimation","Promise","resolve","animationStart","then","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","motionValue","isColorString","testProp","splitColor","aName","bName","cName","match","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hex","r","g","substring","parseInt","hsla","hue","saturation","lightness","color","colorToken","numberToken","analyseComplexValue","numColors","numNumbers","colors","map","numbers","tokenised","createTransformer","numValues","output","convertNumbersToZero","complex","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","slice","defaultValue","functionRegex","filter","functions","defaultValueTypes","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","testValueType","dimensionValueTypes","findDimensionValueType","find","valueTypes","findValueType","resolveVariant","getCurrent","isWillChangeMotionValue","optimizedAppearDataAttribute","warning","invariant","secondsToMilliseconds","seconds","instantAnimationState","mirrorEasing","easing","reverseEasing","easeIn","easeOut","easeInOut","from","to","progress","hueToRgb","q","t","mixLinearColor","fromExpo","sqrt","colorTypes","getColorType","asRGBA","model","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","getMixer","mixComplex","mixArray","blendValue","fromThis","mixObject","template","originStats","targetStats","toFromDifference","mixNumber","interpolate","input","isClamp","ease","mixer","inputLength","reverse","mixers","createMixers","customMixer","mixerFactory","detectMixerFactory","numMixers","interpolator","progressInRange","noop","any","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","binarySubdivide","lowerBound","upperBound","currentX","currentT","abs","aX","circIn","sin","acos","circOut","circInOut","backOut","backIn","backInOut","easingLookup","linear","anticipate","pow","easingDefinitionToFunction","x1","y1","x2","y2","isEasingArray","keyframes","keyframeValues","times","duration","easingFunctions","done","absoluteTimes","defaultOffset","_value","o","createInterpolator","flipTarget","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","spring","restDelta","restSpeed","stiffness","damping","mass","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","maxDuration","exponentialDecay","safeMin","exp","d","approximateRoot","initialGuess","result","resolveSpring","zero","initialVelocity","createSpring","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","cos","dampedAngularFreq","freqForT","sinh","cosh","prevT","isBelowVelocityThreshold","isBelowDisplacementThreshold","needsInterpolation","types","decay","power","timeConstant","modifyTarget","amplitude","ideal","tween","loopElapsed","elapsed","delay","framesync","passTimestamp","update","qY","driver","repeat","repeatMax","repeatType","repeatDelay","keyframes$1","autoplay","onPlay","onStop","onComplete","onRepeat","onUpdate","driverControls","interpolateFromNumber","initialElapsed","repeatCount","computedDuration","isComplete","isForwardPlayback","animator","hasRepeatDelayElapsed","reverseElapsed","currentTime","sample","sampleResolution","sampleElapsed","cubicBezierAsString","supportedWaapiEasing","featureTests","waapi","Element","results","supports","acceleratedValues","timeout","checkElapsed","underDampedSpring","criticallyDampedSpring","linearTween","keyframesTransition","defaultTransitions","getDefaultTransition","valueKey","factory","isAnimatable","isZero","getZeroUnit","potentialUnitType","getValueTransition","createMotionValueAnimation","valueName","valueTransition","getKeyframes","isTargetAnimatable","originKeyframe","targetKeyframe","isOriginAnimatable","createInstantAnimation","setValue","inertia","bounceStiffness","bounceDamping","currentAnimation","isOutOfBounds","findNearestBoundary","startSpring","boundary","heading","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","HTMLElement","acceleratedAnimation","createAcceleratedAnimation","Infinity","sampleAnimation","pregeneratedKeyframes","animateStyle","mapEasingToNativeEasing","iterations","direction","onfinish","getFinalKeyframe","animateVariant","variant","transitionOverride","getAnimation","animateTarget","getChildAnimations","variantChildren","forwardDelay","animateChildren","animations","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","first","last","makeTargetAnimatable","willChange","getValue","animationTypeState","getState","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","HandoffAppearAnimations","appearId","shouldReduceMotion","remove","setTarget","hasValue","addValue","sortNodePosition","variantPriorityOrder","Animate","Drag","Exit","reversePriorityOrder","numAnimationTypes","createTypeState","prevResolvedValues","createAnimationState","animateVisualElement","resolvedDefinition","isInitialRender","buildResolvedTypeValues","animateChanges","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","shouldAnimateType","definitionList","resolvedValues","allKeys","markToAnimate","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setAnimateFunction","makeAnimator","subscribe","safeToRemove","PanSession","handlers","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","PanSession_getVelocity","timestampedPoint","lastPoint","time","calcLength","axis","isNear","maxDistance","calcAxisDelta","originPoint","translate","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","has2DTranslate","is2DTranslate","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","measureViewportBox","transformBoxPoints","topLeft","bottomRight","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","stopAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","getTransformPagePoint","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","dragConstraints","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measurePageBox","rootProjectionNode","viewportBox","scroll","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","startAxisValueAnimation","dragKey","externalMotionValue","scalePositionWithinConstraints","boxProgress","constraints_calcOrigin","sourceLength","targetLength","updateScroll","updateLayout","addListeners","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","dragControls","groupDragControls","css_variables_conversion_isCSSVariable","cssVariableRegex","getVariableValue","depth","token","parseCSSVariable","exec","getComputedStyle","getPropertyValue","positionalKeys","isPositionalKey","hasPositionalKey","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","display","setStaticValue","targetBbox","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","fromIndex","removeNonTranslationalTransform","removedTransforms","scrollY","pageYOffset","convertedTarget","is_browser","j","scrollTo","parseDomVariant","resolveCSSVariables","prefersReducedMotion","hasReducedMotionListener","featureNames","numFeatures","propEventHandlers","VisualElement","reducedMotionConfig","visualState","Map","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","scheduleRender","baseTarget","initialValues","initialMotionValues","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","matchMedia","motionMediaQuery","setReducedMotionPreferences","matches","addListener","unmount","valueIsTransform","removeOnChange","latestValue","isTransformDirty","removeOnRenderRequest","other","sortInstanceNodePosition","loadFeatures","renderedProps","isStrict","preloadedFeatures","projectionId","ProjectionNodeConstructor","initialLayoutGroupConfig","features","createElement","layoutScroll","layoutRoot","setOptions","alwaysMeasureLayout","animationType","initialPromotionConfig","build","measureInstanceViewportBox","getStaticValue","canMutate","makeTargetAnimatableFromInstance","listener","updateMotionValuesFromProps","nextValue","prevValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","startAtParent","numVariantProps","VisualElement_variantProps","closestVariantNode","removeValueFromRenderState","readValue","readValueFromInstance","setBaseTarget","valueFromInitial","getBaseTargetFromProps","args","DOMVisualElement","compareDocumentPosition","transformValues","isMounted","getOrigin","transitionOrigin","getOriginFromTransition","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","HTMLVisualElement","defaultType","computedStyle","childSubscription","textContent","SVGVisualElement","arguments","getAttribute","create_visual_element_createDomVisualElement","pixelsToPercent","pixels","correctBorderRadius","correct","node","varToken","correctBoxShadow","treeScale","projectionDelta","original","containsCSSVariables","cssVariables","shadow","xScale","yScale","averageScale","cssVariable","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","group","didUpdate","layoutDependency","willUpdate","promote","relegate","getStack","members","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","applyTo","boxShadow","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","delta_remove_xKeys","delta_remove_yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEquals","aspectRatio","NodeStack","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","_e","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","elementScaleX","elementScaleY","compareByDepth","FlatTree","isDirty","transformAxes","create_projection_node_id","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","elementId","animationId","isTreeAnimating","isProjectionDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","potentialNodes","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","hasProjected","isVisible","animationProgress","sharedNodes","path","registerPotentialNode","notifyListeners","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","setAnimationOrigin","animationOptions","preRender","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetRotation","getTransformTemplate","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","clearMeasurements","mountNodeEarly","resetTransformStyle","notifyLayoutUpdate","iW","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","measure","prevLayout","layoutCorrected","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","getLead","attemptToResolveRelativeTarget","relativeParent","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isShared","canSkip","pendingAnimation","applyTreeDeltas","treePath","isSharedTransition","treeLength","projectionDeltaWithTransform","prevTreeScaleX","prevTreeScaleY","prevProjectionTransform","projectionTransform","notifyAll","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacityExit","borderLabel","followRadius","leadRadius","animate_animate","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","xLength","yLength","stack","shouldPreserveFollowOpacity","getPrevLead","hasRotate","resetValues","styles","visibility","pointerEvents","emptyStyles","valuesToRender","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","searchNode","searchElement","querySelector","DocumentProjectionNode","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode_HTMLProjectionNode","documentNode","position","featureBundle","motion","createMotionProxy","createConfig","customMotionComponentConfig","motion_createMotionComponent","createVisualElement","projectionNodeConstructor","useRender","ForwardRefComponent","forwardRef","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","useVisualElement","lazyContext","visualElementRef","renderer","presenceId","use_isomorphic_effect","L","useAnimateChangesEffect","lazyStrictMode","Provider","Proxy","componentCache","_target","create_config_createDomMotionConfig","forwardMotionProps","createUseRender","visualProps","useVisualProps","_isStatic","rawStyles","htmlProps","useStyle","useInitialMotionValues","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","elementProps","filterProps","isDom","filteredProps","renderedChildren","isBrowser","useConstant","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__","useLayoutEffect","useUnmountEffect"],"sourceRoot":""}