{"version":3,"file":"index.cjs","sources":["../../../../node_modules/framer-motion/dist/es/utils/warn-once.mjs","../../../../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../../../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/get-value-transition.mjs","../../../../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../../../../node_modules/framer-motion/dist/es/utils/noop.mjs","../../../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../../../../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../../../../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../../../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../../../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../../../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../../../../node_modules/framer-motion/dist/es/easing/back.mjs","../../../../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../../../../node_modules/framer-motion/dist/es/easing/circ.mjs","../../../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../../../../node_modules/framer-motion/dist/es/utils/errors.mjs","../../../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../../../../node_modules/framer-motion/dist/es/utils/clamp.mjs","../../../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../../../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../../../../node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs","../../../../node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs","../../../../node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs","../../../../node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs","../../../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../../../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../../../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../../../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../../../../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../../../../node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs","../../../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../../../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/utils/is-generator.mjs","../../../../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../../../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../../../../node_modules/framer-motion/dist/es/easing/ease.mjs","../../../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../../../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","../../../../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../../../../node_modules/framer-motion/dist/es/utils/pipe.mjs","../../../../node_modules/framer-motion/dist/es/utils/progress.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../../../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../../../../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../../../../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../../../../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../../../../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../../../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../../../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs","../../../../node_modules/framer-motion/dist/es/utils/memo.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs","../../../../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs","../../../../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs","../../../../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs","../../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../../../../node_modules/framer-motion/dist/es/utils/array.mjs","../../../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../../../../node_modules/framer-motion/dist/es/value/index.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../../../../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../../../../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../../../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","../../../../node_modules/framer-motion/dist/es/events/event-info.mjs","../../../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../../../../node_modules/framer-motion/dist/es/utils/distance.mjs","../../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../../../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../../../../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../../../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../../node_modules/react/jsx-runtime.js","../../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../../../../node_modules/framer-motion/dist/es/projection/node/state.mjs","../../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../../../../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../../../../node_modules/framer-motion/dist/es/utils/delay.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../../../../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs","../../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../../../../node_modules/framer-motion/dist/es/gestures/hover.mjs","../../../../node_modules/framer-motion/dist/es/gestures/focus.mjs","../../../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../../../../node_modules/framer-motion/dist/es/gestures/press.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../../../../node_modules/framer-motion/dist/es/motion/index.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../../../../node_modules/framer-motion/dist/es/render/components/create-factory.mjs","../../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../../../../node_modules/framer-motion/dist/es/render/store.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../../../../node_modules/framer-motion/dist/es/render/components/motion/create.mjs","../../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs"],"sourcesContent":["const warned = new Set();\nfunction warnOnce(condition, message, element) {\n    if (condition || warned.has(message))\n        return;\n    console.warn(message);\n    if (element)\n        console.warn(element);\n    warned.add(message);\n}\n\nexport { warnOnce };\n","import { warnOnce } from '../../utils/warn-once.mjs';\n\nfunction createDOMMotionComponentProxy(componentFactory) {\n    if (typeof Proxy === \"undefined\") {\n        return componentFactory;\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    const deprecatedFactoryFunction = (...args) => {\n        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n        }\n        return componentFactory(...args);\n    };\n    return new Proxy(deprecatedFactoryFunction, {\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            if (key === \"create\")\n                return componentFactory;\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, componentFactory(key));\n            }\n            return componentCache.get(key);\n        },\n    });\n}\n\nexport { createDOMMotionComponentProxy };\n","function isAnimationControls(v) {\n    return (v !== null &&\n        typeof v === \"object\" &&\n        typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const isKeyframesTarget = (v) => {\n    return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\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 * 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 getValueState(visualElement) {\n    const state = [{}, {}];\n    visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n        state[0][key] = value.get();\n        state[1][key] = value.getVelocity();\n    });\n    return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n    /**\n     * If the variant definition is a function, resolve.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\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        const [current, velocity] = getValueState(visualElement);\n        definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n    }\n    return definition;\n}\n\nexport { resolveVariantFromProps };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n    const props = visualElement.getProps();\n    return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n","const variantPriorityOrder = [\n    \"animate\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileHover\",\n    \"whileTap\",\n    \"whileDrag\",\n    \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\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","/**\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;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst 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 keyframesTransition = {\n    type: \"keyframes\",\n    duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n    type: \"keyframes\",\n    ease: [0.25, 0.1, 0.35, 1],\n    duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n    if (keyframes.length > 2) {\n        return keyframesTransition;\n    }\n    else if (transformProps.has(valueKey)) {\n        return valueKey.startsWith(\"scale\")\n            ? criticallyDampedSpring(keyframes[1])\n            : underDampedSpring;\n    }\n    return ease;\n};\n\nexport { getDefaultTransition };\n","function getValueTransition(transition, key) {\n    return transition\n        ? transition[key] ||\n            transition[\"default\"] ||\n            transition\n        : undefined;\n}\n\nexport { getValueTransition };\n","const MotionGlobalConfig = {\n    skipAnimations: false,\n    useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n    const resolvedKeyframes = keyframes.filter(isNotNull);\n    const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n        ? 0\n        : resolvedKeyframes.length - 1;\n    return !index || finalKeyframe === undefined\n        ? resolvedKeyframes[index]\n        : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n","const noop = (any) => any;\n\nexport { noop };\n","function createRenderStep(runNextFrame) {\n    /**\n     * We create and reuse two queues, 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 thisFrame = new Set();\n    let nextFrame = new Set();\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    let latestFrameData = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    function triggerCallback(callback) {\n        if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame();\n        }\n        callback(latestFrameData);\n    }\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 queue = addToCurrentFrame ? thisFrame : nextFrame;\n            if (keepAlive)\n                toKeepAlive.add(callback);\n            if (!queue.has(callback))\n                queue.add(callback);\n            return callback;\n        },\n        /**\n         * Cancel the provided callback from running on the next frame.\n         */\n        cancel: (callback) => {\n            nextFrame.delete(callback);\n            toKeepAlive.delete(callback);\n        },\n        /**\n         * Execute all schedule callbacks.\n         */\n        process: (frameData) => {\n            latestFrameData = 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            [thisFrame, nextFrame] = [nextFrame, thisFrame];\n            // Clear the next frame queue\n            nextFrame.clear();\n            // Execute this frame\n            thisFrame.forEach(triggerCallback);\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 { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n    \"read\", // Read\n    \"resolveKeyframes\", // Write/Read/Write/Read\n    \"update\", // Compute\n    \"preRender\", // Compute\n    \"render\", // Write\n    \"postRender\", // Compute\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n    let runNextFrame = false;\n    let useDefaultElapsed = true;\n    const state = {\n        delta: 0.0,\n        timestamp: 0.0,\n        isProcessing: false,\n    };\n    const flagRunNextFrame = () => (runNextFrame = true);\n    const steps = stepsOrder.reduce((acc, key) => {\n        acc[key] = createRenderStep(flagRunNextFrame);\n        return acc;\n    }, {});\n    const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n    const processBatch = () => {\n        const timestamp = MotionGlobalConfig.useManualTiming\n            ? state.timestamp\n            : performance.now();\n        runNextFrame = false;\n        state.delta = useDefaultElapsed\n            ? 1000 / 60\n            : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n        state.timestamp = timestamp;\n        state.isProcessing = true;\n        // Unrolled render loop for better per-frame performance\n        read.process(state);\n        resolveKeyframes.process(state);\n        update.process(state);\n        preRender.process(state);\n        render.process(state);\n        postRender.process(state);\n        state.isProcessing = false;\n        if (runNextFrame && allowKeepAlive) {\n            useDefaultElapsed = false;\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const wake = () => {\n        runNextFrame = true;\n        useDefaultElapsed = true;\n        if (!state.isProcessing) {\n            scheduleNextBatch(processBatch);\n        }\n    };\n    const schedule = stepsOrder.reduce((acc, key) => {\n        const step = steps[key];\n        acc[key] = (process, keepAlive = false, immediate = false) => {\n            if (!runNextFrame)\n                wake();\n            return step.schedule(process, keepAlive, immediate);\n        };\n        return acc;\n    }, {});\n    const cancel = (process) => {\n        for (let i = 0; i < stepsOrder.length; i++) {\n            steps[stepsOrder[i]].cancel(process);\n        }\n    };\n    return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, frameSteps };\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","// 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 { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ 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 { 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(circIn);\n\nexport { circIn, circInOut, circOut };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n    if (typeof value === \"number\") {\n        return value === 0;\n    }\n    else if (value !== null) {\n        return value === \"none\" || value === \"0\" || isZeroValueString(value);\n    }\n    else {\n        return true;\n    }\n}\n\nexport { isNone };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n    warning = (check, message) => {\n        if (!check && typeof console !== \"undefined\") {\n            console.warn(message);\n        }\n    };\n    invariant = (check, message) => {\n        if (!check) {\n            throw new Error(message);\n        }\n    };\n}\n\nexport { invariant, warning };\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+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = \n/*@__PURE__*/ checkStringStartsWith(\"--\");\nconst startsAsVariableToken = \n/*@__PURE__*/ checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n    const startsWithToken = startsAsVariableToken(value);\n    if (!startsWithToken)\n        return false;\n    // Ensure any comments are stripped from the value as this can harm performance of the regex.\n    return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\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 splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n    const match = splitCSSVariableRegex.exec(current);\n    if (!match)\n        return [,];\n    const [, token1, token2, fallback] = match;\n    return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, 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        const trimmed = resolved.trim();\n        return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n    }\n    return isCSSVariableToken(fallback)\n        ? getVariableValue(fallback, element, depth + 1)\n        : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","const clamp = (min, max, v) => {\n    if (v > max)\n        return max;\n    if (v < min)\n        return min;\n    return v;\n};\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","const createUnitType = (unit) => ({\n    test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n    parse: parseFloat,\n    transform: (v) => `${v}${unit}`,\n});\nconst degrees = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ 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 { transformPropOrder } from '../../html/utils/transform.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    \"translateX\",\n    \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\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\\((.+)\\)$/u);\n    if (matrix3d) {\n        return getPosFromMatrix(matrix3d[1], pos3);\n    }\n    else {\n        const matrix = transform.match(/^matrix\\((.+)\\)$/u);\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    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};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\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 { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n    if (anyNeedsMeasurement) {\n        const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n        const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n        const transformsToRestore = new Map();\n        /**\n         * Write pass\n         * If we're measuring elements we want to remove bounding box-changing transforms.\n         */\n        elementsToMeasure.forEach((element) => {\n            const removedTransforms = removeNonTranslationalTransform(element);\n            if (!removedTransforms.length)\n                return;\n            transformsToRestore.set(element, removedTransforms);\n            element.render();\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n        // Write\n        elementsToMeasure.forEach((element) => {\n            element.render();\n            const restore = transformsToRestore.get(element);\n            if (restore) {\n                restore.forEach(([key, value]) => {\n                    var _a;\n                    (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n                });\n            }\n        });\n        // Read\n        resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n        // Write\n        resolversToMeasure.forEach((resolver) => {\n            if (resolver.suspendedScrollY !== undefined) {\n                window.scrollTo(0, resolver.suspendedScrollY);\n            }\n        });\n    }\n    anyNeedsMeasurement = false;\n    isScheduled = false;\n    toResolve.forEach((resolver) => resolver.complete());\n    toResolve.clear();\n}\nfunction readAllKeyframes() {\n    toResolve.forEach((resolver) => {\n        resolver.readKeyframes();\n        if (resolver.needsMeasurement) {\n            anyNeedsMeasurement = true;\n        }\n    });\n}\nfunction flushKeyframeResolvers() {\n    readAllKeyframes();\n    measureAllKeyframes();\n}\nclass KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n        /**\n         * Track whether this resolver has completed. Once complete, it never\n         * needs to attempt keyframe resolution again.\n         */\n        this.isComplete = false;\n        /**\n         * Track whether this resolver is async. If it is, it'll be added to the\n         * resolver queue and flushed in the next frame. Resolvers that aren't going\n         * to trigger read/write thrashing don't need to be async.\n         */\n        this.isAsync = false;\n        /**\n         * Track whether this resolver needs to perform a measurement\n         * to resolve its keyframes.\n         */\n        this.needsMeasurement = false;\n        /**\n         * Track whether this resolver is currently scheduled to resolve\n         * to allow it to be cancelled and resumed externally.\n         */\n        this.isScheduled = false;\n        this.unresolvedKeyframes = [...unresolvedKeyframes];\n        this.onComplete = onComplete;\n        this.name = name;\n        this.motionValue = motionValue;\n        this.element = element;\n        this.isAsync = isAsync;\n    }\n    scheduleResolve() {\n        this.isScheduled = true;\n        if (this.isAsync) {\n            toResolve.add(this);\n            if (!isScheduled) {\n                isScheduled = true;\n                frame.read(readAllKeyframes);\n                frame.resolveKeyframes(measureAllKeyframes);\n            }\n        }\n        else {\n            this.readKeyframes();\n            this.complete();\n        }\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, name, element, motionValue } = this;\n        /**\n         * If a keyframe is null, we hydrate it either by reading it from\n         * the instance, or propagating from previous keyframes.\n         */\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            if (unresolvedKeyframes[i] === null) {\n                /**\n                 * If the first keyframe is null, we need to find its value by sampling the element\n                 */\n                if (i === 0) {\n                    const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n                    const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n                    if (currentValue !== undefined) {\n                        unresolvedKeyframes[0] = currentValue;\n                    }\n                    else if (element && name) {\n                        const valueAsRead = element.readValue(name, finalKeyframe);\n                        if (valueAsRead !== undefined && valueAsRead !== null) {\n                            unresolvedKeyframes[0] = valueAsRead;\n                        }\n                    }\n                    if (unresolvedKeyframes[0] === undefined) {\n                        unresolvedKeyframes[0] = finalKeyframe;\n                    }\n                    if (motionValue && currentValue === undefined) {\n                        motionValue.set(unresolvedKeyframes[0]);\n                    }\n                }\n                else {\n                    unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n                }\n            }\n        }\n    }\n    setFinalKeyframe() { }\n    measureInitialState() { }\n    renderEndStyles() { }\n    measureEndState() { }\n    complete() {\n        this.isComplete = true;\n        this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n        toResolve.delete(this);\n    }\n    cancel() {\n        if (!this.isComplete) {\n            this.isScheduled = false;\n            toResolve.delete(this);\n        }\n    }\n    resume() {\n        if (!this.isComplete)\n            this.scheduleResolve();\n    }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\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;\n\nexport { sanitize };\n","const floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\nexport { floatRegex };\n","function isNullish(v) {\n    return v == null;\n}\n\nexport { isNullish };\n","const singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\nexport { singleColorRegex };\n","import { floatRegex } from '../utils/float-regex.mjs';\nimport { isNullish } from '../utils/is-nullish.mjs';\nimport { singleColorRegex } from '../utils/single-color-regex.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((typeof v === \"string\" &&\n        singleColorRegex.test(v) &&\n        v.startsWith(type)) ||\n        (testProp &&\n            !isNullish(v) &&\n            Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n    if (typeof v !== \"string\")\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 { alpha, number } from '../numbers/index.mjs';\nimport { sanitize } from '../utils/sanitize.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: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n    parse: /*@__PURE__*/ 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: /*@__PURE__*/ 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/sanitize.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n    test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n    parse: /*@__PURE__*/ 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 { 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 typeof v === \"string\"\n            ? v\n            : v.hasOwnProperty(\"red\")\n                ? rgba.transform(v)\n                : hsla.transform(v);\n    },\n};\n\nexport { color };\n","const colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\nexport { colorRegex };\n","import { color } from '../color/index.mjs';\nimport { colorRegex } from '../utils/color-regex.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\n\nfunction test(v) {\n    var _a, _b;\n    return (isNaN(v) &&\n        typeof v === \"string\" &&\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}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n    const originalValue = value.toString();\n    const values = [];\n    const indexes = {\n        color: [],\n        number: [],\n        var: [],\n    };\n    const types = [];\n    let i = 0;\n    const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n        if (color.test(parsedValue)) {\n            indexes.color.push(i);\n            types.push(COLOR_TOKEN);\n            values.push(color.parse(parsedValue));\n        }\n        else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n            indexes.var.push(i);\n            types.push(VAR_TOKEN);\n            values.push(parsedValue);\n        }\n        else {\n            indexes.number.push(i);\n            types.push(NUMBER_TOKEN);\n            values.push(parseFloat(parsedValue));\n        }\n        ++i;\n        return SPLIT_TOKEN;\n    });\n    const split = tokenised.split(SPLIT_TOKEN);\n    return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n    return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n    const { split, types } = analyseComplexValue(source);\n    const numSections = split.length;\n    return (v) => {\n        let output = \"\";\n        for (let i = 0; i < numSections; i++) {\n            output += split[i];\n            if (v[i] !== undefined) {\n                const type = types[i];\n                if (type === NUMBER_TOKEN) {\n                    output += sanitize(v[i]);\n                }\n                else if (type === COLOR_TOKEN) {\n                    output += color.transform(v[i]);\n                }\n                else {\n                    output += v[i];\n                }\n            }\n        }\n        return output;\n    };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n    const parsed = parseComplexValue(v);\n    const transformer = createTransformer(v);\n    return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n    test,\n    parse: parseComplexValue,\n    createTransformer,\n    getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils/float-regex.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 = /\\b([a-z-]*)\\(.*?\\)/gu;\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 { px } from '../../../value/types/numbers/units.mjs';\n\nconst browserNumberValueTypes = {\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    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    // Misc\n    backgroundPositionX: px,\n    backgroundPositionY: px,\n};\n\nexport { browserNumberValueTypes };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { degrees, px, progressPercentage } from '../../../value/types/numbers/units.mjs';\n\nconst transformValueTypes = {\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};\n\nexport { transformValueTypes };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n    ...number,\n    transform: Math.round,\n};\n\nexport { int };\n","import { alpha } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { browserNumberValueTypes } from './number-browser.mjs';\nimport { transformValueTypes } from './transform.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n    ...browserNumberValueTypes,\n    ...transformValueTypes,\n    zIndex: int,\n    size: px,\n    // SVG\n    fillOpacity: alpha,\n    strokeOpacity: alpha,\n    numOctaves: int,\n};\n\nexport { numberValueTypes };\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    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 defaultValueType.getAnimatableNone\n        ? defaultValueType.getAnimatableNone(value)\n        : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n    let i = 0;\n    let animatableTemplate = undefined;\n    while (i < unresolvedKeyframes.length && !animatableTemplate) {\n        const keyframe = unresolvedKeyframes[i];\n        if (typeof keyframe === \"string\" &&\n            !invalidTemplates.has(keyframe) &&\n            analyseComplexValue(keyframe).values.length) {\n            animatableTemplate = unresolvedKeyframes[i];\n        }\n        i++;\n    }\n    if (animatableTemplate && name) {\n        for (const noneIndex of noneKeyframeIndexes) {\n            unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n        }\n    }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n    constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n        super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n    }\n    readKeyframes() {\n        const { unresolvedKeyframes, element, name } = this;\n        if (!element || !element.current)\n            return;\n        super.readKeyframes();\n        /**\n         * If any keyframe is a CSS variable, we need to find its value by sampling the element\n         */\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            let keyframe = unresolvedKeyframes[i];\n            if (typeof keyframe === \"string\") {\n                keyframe = keyframe.trim();\n                if (isCSSVariableToken(keyframe)) {\n                    const resolved = getVariableValue(keyframe, element.current);\n                    if (resolved !== undefined) {\n                        unresolvedKeyframes[i] = resolved;\n                    }\n                    if (i === unresolvedKeyframes.length - 1) {\n                        this.finalKeyframe = keyframe;\n                    }\n                }\n            }\n        }\n        /**\n         * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n         * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n         * have a far bigger performance impact.\n         */\n        this.resolveNoneKeyframes();\n        /**\n         * Check to see if unit type has changed. If so schedule jobs that will\n         * temporarily set styles to the destination keyframes.\n         * Skip if we have more than two keyframes or this isn't a positional value.\n         * TODO: We can throw if there are multiple keyframes and the value type changes.\n         */\n        if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n            return;\n        }\n        const [origin, target] = unresolvedKeyframes;\n        const originType = findDimensionValueType(origin);\n        const targetType = findDimensionValueType(target);\n        /**\n         * Either we don't recognise these value types or we can animate between them.\n         */\n        if (originType === targetType)\n            return;\n        /**\n         * If both values are numbers or pixels, we can animate between them by\n         * converting them to numbers.\n         */\n        if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n            for (let i = 0; i < unresolvedKeyframes.length; i++) {\n                const value = unresolvedKeyframes[i];\n                if (typeof value === \"string\") {\n                    unresolvedKeyframes[i] = parseFloat(value);\n                }\n            }\n        }\n        else {\n            /**\n             * Else, the only way to resolve this is by measuring the element.\n             */\n            this.needsMeasurement = true;\n        }\n    }\n    resolveNoneKeyframes() {\n        const { unresolvedKeyframes, name } = this;\n        const noneKeyframeIndexes = [];\n        for (let i = 0; i < unresolvedKeyframes.length; i++) {\n            if (isNone(unresolvedKeyframes[i])) {\n                noneKeyframeIndexes.push(i);\n            }\n        }\n        if (noneKeyframeIndexes.length) {\n            makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n        }\n    }\n    measureInitialState() {\n        const { element, unresolvedKeyframes, name } = this;\n        if (!element || !element.current)\n            return;\n        if (name === \"height\") {\n            this.suspendedScrollY = window.pageYOffset;\n        }\n        this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        unresolvedKeyframes[0] = this.measuredOrigin;\n        // Set final key frame to measure after next render\n        const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n        if (measureKeyframe !== undefined) {\n            element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n        }\n    }\n    measureEndState() {\n        var _a;\n        const { element, name, unresolvedKeyframes } = this;\n        if (!element || !element.current)\n            return;\n        const value = element.getValue(name);\n        value && value.jump(this.measuredOrigin, false);\n        const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n        const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n        unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n        if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n            this.finalKeyframe = finalKeyframe;\n        }\n        // If we removed transform values, reapply them before the next render\n        if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n            this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n                element\n                    .getValue(unsetTransformName)\n                    .set(unsetTransformValue);\n            });\n        }\n        this.resolveNoneKeyframes();\n    }\n}\n\nexport { DOMKeyframesResolver };\n","function isGenerator(type) {\n    return typeof type === \"function\";\n}\n\nexport { isGenerator };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n    now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n    now: () => {\n        if (now === undefined) {\n            time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n                ? frameData.timestamp\n                : performance.now());\n        }\n        return now;\n    },\n    set: (newTime) => {\n        now = newTime;\n        queueMicrotask(clearTime);\n    },\n};\n\nexport { time };\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 = (value, name) => {\n    // If the list of keys tat might be non-animatable grows, replace with Set\n    if (name === \"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) || value === \"0\") && // 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 { warning } from '../../../utils/errors.mjs';\nimport { isGenerator } from '../../generators/utils/is-generator.mjs';\nimport { isAnimatable } from '../../utils/is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n    const current = keyframes[0];\n    if (keyframes.length === 1)\n        return true;\n    for (let i = 0; i < keyframes.length; i++) {\n        if (keyframes[i] !== current)\n            return true;\n    }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\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    if (originKeyframe === null)\n        return false;\n    /**\n     * These aren't traditionally animatable but we do support them.\n     * In future we could look into making this more generic or replacing\n     * this function with mix() === mixImmediate\n     */\n    if (name === \"display\" || name === \"visibility\")\n        return true;\n    const targetKeyframe = keyframes[keyframes.length - 1];\n    const isOriginAnimatable = isAnimatable(originKeyframe, name);\n    const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n    warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} 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    // Always skip if any of these are true\n    if (!isOriginAnimatable || !isTargetAnimatable) {\n        return false;\n    }\n    return (hasKeyframesChanged(keyframes) ||\n        ((type === \"spring\" || isGenerator(type)) && velocity));\n}\n\nexport { canAnimate };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass BaseAnimation {\n    constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n        // Track whether the animation has been stopped. Stopped animations won't restart.\n        this.isStopped = false;\n        this.hasAttemptedResolve = false;\n        this.createdAt = time.now();\n        this.options = {\n            autoplay,\n            delay,\n            type,\n            repeat,\n            repeatDelay,\n            repeatType,\n            ...options,\n        };\n        this.updateFinishedPromise();\n    }\n    /**\n     * This method uses the createdAt and resolvedAt to calculate the\n     * animation startTime. *Ideally*, we would use the createdAt time as t=0\n     * as the following frame would then be the first frame of the animation in\n     * progress, which would feel snappier.\n     *\n     * However, if there's a delay (main thread work) between the creation of\n     * the animation and the first commited frame, we prefer to use resolvedAt\n     * to avoid a sudden jump into the animation.\n     */\n    calcStartTime() {\n        if (!this.resolvedAt)\n            return this.createdAt;\n        return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n            ? this.resolvedAt\n            : this.createdAt;\n    }\n    /**\n     * A getter for resolved data. If keyframes are not yet resolved, accessing\n     * this.resolved will synchronously flush all pending keyframe resolvers.\n     * This is a deoptimisation, but at its worst still batches read/writes.\n     */\n    get resolved() {\n        if (!this._resolved && !this.hasAttemptedResolve) {\n            flushKeyframeResolvers();\n        }\n        return this._resolved;\n    }\n    /**\n     * A method to be called when the keyframes resolver completes. This method\n     * will check if its possible to run the animation and, if not, skip it.\n     * Otherwise, it will call initPlayback on the implementing class.\n     */\n    onKeyframesResolved(keyframes, finalKeyframe) {\n        this.resolvedAt = time.now();\n        this.hasAttemptedResolve = true;\n        const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n        /**\n         * If we can't animate this value with the resolved keyframes\n         * then we should complete it immediately.\n         */\n        if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n            // Finish immediately\n            if (instantAnimationState.current || !delay) {\n                onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n                onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n                this.resolveFinishedPromise();\n                return;\n            }\n            // Finish after a delay\n            else {\n                this.options.duration = 0;\n            }\n        }\n        const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n        if (resolvedAnimation === false)\n            return;\n        this._resolved = {\n            keyframes,\n            finalKeyframe,\n            ...resolvedAnimation,\n        };\n        this.onPostResolved();\n    }\n    onPostResolved() { }\n    /**\n     * Allows the returned animation to be awaited or promise-chained. Currently\n     * resolves when the animation finishes at all but in a future update could/should\n     * reject if its cancels.\n     */\n    then(resolve, reject) {\n        return this.currentFinishedPromise.then(resolve, reject);\n    }\n    flatten() {\n        this.options.type = \"keyframes\";\n        this.options.ease = \"linear\";\n    }\n    updateFinishedPromise() {\n        this.currentFinishedPromise = new Promise((resolve) => {\n            this.resolveFinishedPromise = resolve;\n        });\n    }\n}\n\nexport { BaseAnimation };\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 { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n    const prevT = Math.max(t - velocitySampleDuration, 0);\n    return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.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 <= secondsToMilliseconds(maxDuration), \"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, millisecondsToSeconds(duration));\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 = secondsToMilliseconds(duration);\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 { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.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            mass: 1.0,\n        };\n        springOptions.isResolvedFromDuration = true;\n    }\n    return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n    const origin = keyframes[0];\n    const 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, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n        ...options,\n        velocity: -millisecondsToSeconds(options.velocity || 0),\n    });\n    const initialVelocity = velocity || 0.0;\n    const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n    const initialDelta = target - origin;\n    const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\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    let resolveSpring;\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) * 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    return {\n        calculatedDuration: isResolvedFromDuration ? duration || null : null,\n        next: (t) => {\n            const current = resolveSpring(t);\n            if (!isResolvedFromDuration) {\n                let currentVelocity = 0.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                    currentVelocity =\n                        t === 0\n                            ? secondsToMilliseconds(initialVelocity)\n                            : calcGeneratorVelocity(resolveSpring, t, current);\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    };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n    const origin = keyframes[0];\n    const state = {\n        done: false,\n        value: origin,\n    };\n    const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n    const nearestBoundary = (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    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    const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n    const calcLatest = (t) => target + calcDelta(t);\n    const applyFriction = (t) => {\n        const delta = calcDelta(t);\n        const latest = calcLatest(t);\n        state.done = Math.abs(delta) <= restDelta;\n        state.value = state.done ? target : latest;\n    };\n    /**\n     * Ideally this would resolve for t in a stateless way, we could\n     * do that by always precalculating the animation but as we know\n     * this will be done anyway we can assume that spring will\n     * be discovered during that.\n     */\n    let timeReachedBoundary;\n    let spring$1;\n    const checkCatchBoundary = (t) => {\n        if (!isOutOfBounds(state.value))\n            return;\n        timeReachedBoundary = t;\n        spring$1 = spring({\n            keyframes: [state.value, nearestBoundary(state.value)],\n            velocity: calcGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n            damping: bounceDamping,\n            stiffness: bounceStiffness,\n            restDelta,\n            restSpeed,\n        });\n    };\n    checkCatchBoundary(0);\n    return {\n        calculatedDuration: null,\n        next: (t) => {\n            /**\n             * We need to resolve the friction to figure out if we need a\n             * spring but we don't want to do this twice per frame. So here\n             * we flag if we updated for this frame and later if we did\n             * we can skip doing it again.\n             */\n            let hasUpdatedFrame = false;\n            if (!spring$1 && timeReachedBoundary === undefined) {\n                hasUpdatedFrame = true;\n                applyFriction(t);\n                checkCatchBoundary(t);\n            }\n            /**\n             * If we have a spring and the provided t is beyond the moment the friction\n             * animation crossed the min/max boundary, use the spring.\n             */\n            if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n                return spring$1.next(t - timeReachedBoundary);\n            }\n            else {\n                !hasUpdatedFrame && applyFriction(t);\n                return state;\n            }\n        },\n    };\n}\n\nexport { inertia };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n    return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\nimport { isBezierDefinition } from './is-bezier-definition.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 (isBezierDefinition(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};\n\nexport { easingDefinitionToFunction };\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","/*\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","/*\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 mixNumber = (from, to, progress) => {\n    return from + (to - from) * progress;\n};\n\nexport { mixNumber };\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","function mixImmediate(a, b) {\n    return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\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';\nimport { mixImmediate } from './immediate.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    const expo = v * (to * to - fromExpo) + fromExpo;\n    return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n    const type = getColorType(color);\n    warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n    if (!Boolean(type))\n        return false;\n    let model = type.parse(color);\n    if (type === hsla) {\n        // TODO Remove this cast - needed since 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    if (!fromRGBA || !toRGBA) {\n        return mixImmediate(from, to);\n    }\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 = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n        return rgba.transform(blended);\n    };\n};\n\nexport { mixColor, mixLinearColor };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n    if (invisibleValues.has(origin)) {\n        return (p) => (p <= 0 ? origin : target);\n    }\n    else {\n        return (p) => (p >= 1 ? target : origin);\n    }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from '../errors.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n    return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n    if (typeof a === \"number\") {\n        return mixNumber;\n    }\n    else if (typeof a === \"string\") {\n        return isCSSVariableToken(a)\n            ? mixImmediate\n            : color.test(a)\n                ? mixColor\n                : mixComplex;\n    }\n    else if (Array.isArray(a)) {\n        return mixArray;\n    }\n    else if (typeof a === \"object\") {\n        return color.test(a) ? mixColor : mixObject;\n    }\n    return mixImmediate;\n}\nfunction mixArray(a, b) {\n    const output = [...a];\n    const numValues = output.length;\n    const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n    return (p) => {\n        for (let i = 0; i < numValues; i++) {\n            output[i] = blendValue[i](p);\n        }\n        return output;\n    };\n}\nfunction mixObject(a, b) {\n    const output = { ...a, ...b };\n    const blendValue = {};\n    for (const key in output) {\n        if (a[key] !== undefined && b[key] !== undefined) {\n            blendValue[key] = getMixer(a[key])(a[key], b[key]);\n        }\n    }\n    return (v) => {\n        for (const key in blendValue) {\n            output[key] = blendValue[key](v);\n        }\n        return output;\n    };\n}\nfunction matchOrder(origin, target) {\n    var _a;\n    const orderedOrigin = [];\n    const pointers = { color: 0, var: 0, number: 0 };\n    for (let i = 0; i < target.values.length; i++) {\n        const type = target.types[i];\n        const originIndex = origin.indexes[type][pointers[type]];\n        const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n        orderedOrigin[i] = originValue;\n        pointers[type]++;\n    }\n    return orderedOrigin;\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.indexes.var.length === targetStats.indexes.var.length &&\n        originStats.indexes.color.length === targetStats.indexes.color.length &&\n        originStats.indexes.number.length >= targetStats.indexes.number.length;\n    if (canInterpolate) {\n        if ((invisibleValues.has(origin) &&\n            !targetStats.values.length) ||\n            (invisibleValues.has(target) &&\n                !originStats.values.length)) {\n            return mixVisibility(origin, target);\n        }\n        return pipe(mixArray(matchOrder(originStats, targetStats), 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 mixImmediate(origin, target);\n    }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n    if (typeof from === \"number\" &&\n        typeof to === \"number\" &&\n        typeof p === \"number\") {\n        return mixNumber(from, to, p);\n    }\n    const mixer = getMixer(from);\n    return mixer(from, to);\n}\n\nexport { mix };\n","import { invariant } from './errors.mjs';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n    const mixers = [];\n    const mixerFactory = customMixer || mix;\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] || noop : 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    /**\n     * If we're only provided a single input, we can just make a function\n     * that returns the output.\n     */\n    if (inputLength === 1)\n        return () => output[0];\n    if (inputLength === 2 && input[0] === input[1])\n        return () => output[1];\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","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n    const min = offset[offset.length - 1];\n    for (let i = 1; i <= remaining; i++) {\n        const offsetProgress = progress(0, remaining, i);\n        offset.push(mixNumber(min, 1, offsetProgress));\n    }\n}\n\nexport { fillOffset };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n    const offset = [0];\n    fillOffset(offset, arr.length - 1);\n    return offset;\n}\n\nexport { defaultOffset };\n","function convertOffsetToTimes(offset, duration) {\n    return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n    return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\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    const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n        ease: Array.isArray(easingFunctions)\n            ? easingFunctions\n            : defaultEasing(keyframeValues, easingFunctions),\n    });\n    return {\n        calculatedDuration: duration,\n        next: (t) => {\n            state.value = mapTimeToKeyframe(t);\n            state.done = t >= duration;\n            return state;\n        },\n    };\n}\n\nexport { defaultEasing, keyframes };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n    let duration = 0;\n    const timeStep = 50;\n    let state = generator.next(duration);\n    while (!state.done && duration < maxGeneratorDuration) {\n        duration += timeStep;\n        state = generator.next(duration);\n    }\n    return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n    const passTimestamp = ({ timestamp }) => update(timestamp);\n    return {\n        start: () => frame.update(passTimestamp, true),\n        stop: () => cancelFrame(passTimestamp),\n        /**\n         * If we're processing this frame we can use the\n         * framelocked timestamp to keep things in sync.\n         */\n        now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n    };\n};\n\nexport { frameloopDriver };\n","import { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { calcGeneratorDuration } from '../generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\nimport { isGenerator } from '../generators/utils/is-generator.mjs';\n\nconst generators = {\n    decay: inertia,\n    inertia,\n    tween: keyframes,\n    keyframes: keyframes,\n    spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animation that runs on the main thread. Designed to be WAAPI-spec in the subset of\n * features we expose publically. Mostly the compatibility is to ensure visual identity\n * between both WAAPI and main thread animations.\n */\nclass MainThreadAnimation extends BaseAnimation {\n    constructor(options) {\n        super(options);\n        /**\n         * The time at which the animation was paused.\n         */\n        this.holdTime = null;\n        /**\n         * The time at which the animation was cancelled.\n         */\n        this.cancelTime = null;\n        /**\n         * The current time of the animation.\n         */\n        this.currentTime = 0;\n        /**\n         * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n         */\n        this.playbackSpeed = 1;\n        /**\n         * The state of the animation to apply when the animation is resolved. This\n         * allows calls to the public API to control the animation before it is resolved,\n         * without us having to resolve it first.\n         */\n        this.pendingPlayState = \"running\";\n        /**\n         * The time at which the animation was started.\n         */\n        this.startTime = null;\n        this.state = \"idle\";\n        /**\n         * This method is bound to the instance to fix a pattern where\n         * animation.stop is returned as a reference from a useEffect.\n         */\n        this.stop = () => {\n            this.resolver.cancel();\n            this.isStopped = true;\n            if (this.state === \"idle\")\n                return;\n            this.teardown();\n            const { onStop } = this.options;\n            onStop && onStop();\n        };\n        const { name, motionValue, element, keyframes } = this.options;\n        const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n        const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n        this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue, element);\n        this.resolver.scheduleResolve();\n    }\n    flatten() {\n        super.flatten();\n        // If we've already resolved the animation, re-initialise it\n        if (this._resolved) {\n            Object.assign(this._resolved, this.initPlayback(this._resolved.keyframes));\n        }\n    }\n    initPlayback(keyframes$1) {\n        const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n        const generatorFactory = isGenerator(type)\n            ? type\n            : generators[type] || keyframes;\n        /**\n         * If our generator doesn't support mixing numbers, we need to replace keyframes with\n         * [0, 100] and then make a function that maps that to the actual keyframes.\n         *\n         * 100 is chosen instead of 1 as it works nicer with spring animations.\n         */\n        let mapPercentToKeyframes;\n        let mirroredGenerator;\n        if (generatorFactory !== keyframes &&\n            typeof keyframes$1[0] !== \"number\") {\n            if (process.env.NODE_ENV !== \"production\") {\n                invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n            }\n            mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n            keyframes$1 = [0, 100];\n        }\n        const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n        /**\n         * If we have a mirror repeat type we need to create a second generator that outputs the\n         * mirrored (not reversed) animation and later ping pong between the two generators.\n         */\n        if (repeatType === \"mirror\") {\n            mirroredGenerator = generatorFactory({\n                ...this.options,\n                keyframes: [...keyframes$1].reverse(),\n                velocity: -velocity,\n            });\n        }\n        /**\n         * If duration is undefined and we have repeat options,\n         * we need to calculate a duration from the generator.\n         *\n         * We set it to the generator itself to cache the duration.\n         * Any timeline resolver will need to have already precalculated\n         * the duration by this step.\n         */\n        if (generator.calculatedDuration === null) {\n            generator.calculatedDuration = calcGeneratorDuration(generator);\n        }\n        const { calculatedDuration } = generator;\n        const resolvedDuration = calculatedDuration + repeatDelay;\n        const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n        return {\n            generator,\n            mirroredGenerator,\n            mapPercentToKeyframes,\n            calculatedDuration,\n            resolvedDuration,\n            totalDuration,\n        };\n    }\n    onPostResolved() {\n        const { autoplay = true } = this.options;\n        this.play();\n        if (this.pendingPlayState === \"paused\" || !autoplay) {\n            this.pause();\n        }\n        else {\n            this.state = this.pendingPlayState;\n        }\n    }\n    tick(timestamp, sample = false) {\n        const { resolved } = this;\n        // If the animations has failed to resolve, return the final keyframe.\n        if (!resolved) {\n            const { keyframes } = this.options;\n            return { done: true, value: keyframes[keyframes.length - 1] };\n        }\n        const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes, calculatedDuration, totalDuration, resolvedDuration, } = resolved;\n        if (this.startTime === null)\n            return generator.next(0);\n        const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n        /**\n         * requestAnimationFrame timestamps can come through as lower than\n         * the startTime as set by performance.now(). Here we prevent this,\n         * though in the future it could be possible to make setting startTime\n         * a pending operation that gets resolved here.\n         */\n        if (this.speed > 0) {\n            this.startTime = Math.min(this.startTime, timestamp);\n        }\n        else if (this.speed < 0) {\n            this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n        }\n        // Update currentTime\n        if (sample) {\n            this.currentTime = timestamp;\n        }\n        else if (this.holdTime !== null) {\n            this.currentTime = this.holdTime;\n        }\n        else {\n            // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n            // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n            // example.\n            this.currentTime =\n                Math.round(timestamp - this.startTime) * this.speed;\n        }\n        // Rebase on delay\n        const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);\n        const isInDelayPhase = this.speed >= 0\n            ? timeWithoutDelay < 0\n            : timeWithoutDelay > totalDuration;\n        this.currentTime = Math.max(timeWithoutDelay, 0);\n        // If this animation has finished, set the current time  to the total duration.\n        if (this.state === \"finished\" && this.holdTime === null) {\n            this.currentTime = totalDuration;\n        }\n        let elapsed = this.currentTime;\n        let frameGenerator = generator;\n        if (repeat) {\n            /**\n             * Get the current progress (0-1) of the animation. If t is >\n             * than duration we'll get values like 2.5 (midway through the\n             * third iteration)\n             */\n            const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n            /**\n             * Get the current iteration (0 indexed). For instance the floor of\n             * 2.5 is 2.\n             */\n            let currentIteration = Math.floor(progress);\n            /**\n             * Get the current progress of the iteration by taking the remainder\n             * so 2.5 is 0.5 through iteration 2\n             */\n            let iterationProgress = progress % 1.0;\n            /**\n             * If iteration progress is 1 we count that as the end\n             * of the previous iteration.\n             */\n            if (!iterationProgress && progress >= 1) {\n                iterationProgress = 1;\n            }\n            iterationProgress === 1 && currentIteration--;\n            currentIteration = Math.min(currentIteration, repeat + 1);\n            /**\n             * Reverse progress if we're not running in \"normal\" direction\n             */\n            const isOddIteration = Boolean(currentIteration % 2);\n            if (isOddIteration) {\n                if (repeatType === \"reverse\") {\n                    iterationProgress = 1 - iterationProgress;\n                    if (repeatDelay) {\n                        iterationProgress -= repeatDelay / resolvedDuration;\n                    }\n                }\n                else if (repeatType === \"mirror\") {\n                    frameGenerator = mirroredGenerator;\n                }\n            }\n            elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n        }\n        /**\n         * If we're in negative time, set state as the initial keyframe.\n         * This prevents delay: x, duration: 0 animations from finishing\n         * instantly.\n         */\n        const state = isInDelayPhase\n            ? { done: false, value: keyframes[0] }\n            : frameGenerator.next(elapsed);\n        if (mapPercentToKeyframes) {\n            state.value = mapPercentToKeyframes(state.value);\n        }\n        let { done } = state;\n        if (!isInDelayPhase && calculatedDuration !== null) {\n            done =\n                this.speed >= 0\n                    ? this.currentTime >= totalDuration\n                    : this.currentTime <= 0;\n        }\n        const isAnimationFinished = this.holdTime === null &&\n            (this.state === \"finished\" || (this.state === \"running\" && done));\n        if (isAnimationFinished && finalKeyframe !== undefined) {\n            state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe);\n        }\n        if (onUpdate) {\n            onUpdate(state.value);\n        }\n        if (isAnimationFinished) {\n            this.finish();\n        }\n        return state;\n    }\n    get duration() {\n        const { resolved } = this;\n        return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n    }\n    get time() {\n        return millisecondsToSeconds(this.currentTime);\n    }\n    set time(newTime) {\n        newTime = secondsToMilliseconds(newTime);\n        this.currentTime = newTime;\n        if (this.holdTime !== null || this.speed === 0) {\n            this.holdTime = newTime;\n        }\n        else if (this.driver) {\n            this.startTime = this.driver.now() - newTime / this.speed;\n        }\n    }\n    get speed() {\n        return this.playbackSpeed;\n    }\n    set speed(newSpeed) {\n        const hasChanged = this.playbackSpeed !== newSpeed;\n        this.playbackSpeed = newSpeed;\n        if (hasChanged) {\n            this.time = millisecondsToSeconds(this.currentTime);\n        }\n    }\n    play() {\n        if (!this.resolver.isScheduled) {\n            this.resolver.resume();\n        }\n        if (!this._resolved) {\n            this.pendingPlayState = \"running\";\n            return;\n        }\n        if (this.isStopped)\n            return;\n        const { driver = frameloopDriver, onPlay, startTime } = this.options;\n        if (!this.driver) {\n            this.driver = driver((timestamp) => this.tick(timestamp));\n        }\n        onPlay && onPlay();\n        const now = this.driver.now();\n        if (this.holdTime !== null) {\n            this.startTime = now - this.holdTime;\n        }\n        else if (!this.startTime) {\n            this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n        }\n        else if (this.state === \"finished\") {\n            this.startTime = now;\n        }\n        if (this.state === \"finished\") {\n            this.updateFinishedPromise();\n        }\n        this.cancelTime = this.startTime;\n        this.holdTime = null;\n        /**\n         * Set playState to running only after we've used it in\n         * the previous logic.\n         */\n        this.state = \"running\";\n        this.driver.start();\n    }\n    pause() {\n        var _a;\n        if (!this._resolved) {\n            this.pendingPlayState = \"paused\";\n            return;\n        }\n        this.state = \"paused\";\n        this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n    }\n    complete() {\n        if (this.state !== \"running\") {\n            this.play();\n        }\n        this.pendingPlayState = this.state = \"finished\";\n        this.holdTime = null;\n    }\n    finish() {\n        this.teardown();\n        this.state = \"finished\";\n        const { onComplete } = this.options;\n        onComplete && onComplete();\n    }\n    cancel() {\n        if (this.cancelTime !== null) {\n            this.tick(this.cancelTime);\n        }\n        this.teardown();\n        this.updateFinishedPromise();\n    }\n    teardown() {\n        this.state = \"idle\";\n        this.stopDriver();\n        this.resolveFinishedPromise();\n        this.updateFinishedPromise();\n        this.startTime = this.cancelTime = null;\n        this.resolver.cancel();\n    }\n    stopDriver() {\n        if (!this.driver)\n            return;\n        this.driver.stop();\n        this.driver = undefined;\n    }\n    sample(time) {\n        this.startTime = 0;\n        return this.tick(time, true);\n    }\n}\n// Legacy interface\nfunction animateValue(options) {\n    return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n    \"opacity\",\n    \"clipPath\",\n    \"filter\",\n    \"transform\",\n    // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n    // or until we implement support for linear() easing.\n    // \"background-color\"\n]);\n\nexport { acceleratedValues };\n","import { progress } from '../../../../utils/progress.mjs';\n\n// Create a linear easing point for every 10 ms\nconst resolution = 10;\nconst generateLinearEasing = (easing, duration // as milliseconds\n) => {\n    let points = \"\";\n    const numPoints = Math.max(Math.round(duration / resolution), 2);\n    for (let i = 0; i < numPoints; i++) {\n        points += easing(progress(0, numPoints - 1, i)) + \", \";\n    }\n    return `linear(${points.substring(0, points.length - 2)})`;\n};\n\nexport { generateLinearEasing };\n","function memo(callback) {\n    let result;\n    return () => {\n        if (result === undefined)\n            result = callback();\n        return result;\n    };\n}\n\nexport { memo };\n","/**\n * Add the ability for test suites to manually set support flags\n * to better test more environments.\n */\nconst supportsFlags = {\n    linearEasing: undefined,\n};\n\nexport { supportsFlags };\n","import { memo } from '../../../../utils/memo.mjs';\nimport { supportsFlags } from './supports-flags.mjs';\n\nfunction memoSupports(callback, supportsFlag) {\n    const memoized = memo(callback);\n    return () => { var _a; return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized(); };\n}\n\nexport { memoSupports };\n","import { memoSupports } from './memo-supports.mjs';\n\nconst supportsLinearEasing = /*@__PURE__*/ memoSupports(() => {\n    try {\n        document\n            .createElement(\"div\")\n            .animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n    }\n    catch (e) {\n        return false;\n    }\n    return true;\n}, \"linearEasing\");\n\nexport { supportsLinearEasing };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\nimport { generateLinearEasing } from './utils/linear.mjs';\nimport { supportsLinearEasing } from './utils/supports-linear-easing.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n    return Boolean((typeof easing === \"function\" && supportsLinearEasing()) ||\n        !easing ||\n        (typeof easing === \"string\" &&\n            (easing in supportedWaapiEasing || supportsLinearEasing())) ||\n        isBezierDefinition(easing) ||\n        (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\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: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n    circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n    backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n    backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing, duration) {\n    if (!easing) {\n        return undefined;\n    }\n    else if (typeof easing === \"function\" && supportsLinearEasing()) {\n        return generateLinearEasing(easing, duration);\n    }\n    else if (isBezierDefinition(easing)) {\n        return cubicBezierAsString(easing);\n    }\n    else if (Array.isArray(easing)) {\n        return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) ||\n            supportedWaapiEasing.easeOut);\n    }\n    else {\n        return supportedWaapiEasing[easing];\n    }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease = \"easeInOut\", times, } = {}) {\n    const keyframeOptions = { [valueName]: keyframes };\n    if (times)\n        keyframeOptions.offset = times;\n    const easing = mapEasingToNativeEasing(ease, duration);\n    /**\n     * If this is an easing array, apply to keyframes, not animation as a whole\n     */\n    if (Array.isArray(easing))\n        keyframeOptions.easing = easing;\n    return element.animate(keyframeOptions, {\n        delay,\n        duration,\n        easing: !Array.isArray(easing) ? easing : \"linear\",\n        fill: \"both\",\n        iterations: repeat + 1,\n        direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n    });\n}\n\nexport { startWaapiAnimation };\n","function attachTimeline(animation, timeline) {\n    animation.timeline = timeline;\n    animation.onfinish = null;\n}\n\nexport { attachTimeline };\n","import { memo } from '../../../../utils/memo.mjs';\n\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\nexport { supportsWaapi };\n","import { anticipate } from '../../easing/anticipate.mjs';\nimport { backInOut } from '../../easing/back.mjs';\nimport { circInOut } from '../../easing/circ.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { isGenerator } from '../generators/utils/is-generator.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { acceleratedValues } from './utils/accelerated-values.mjs';\nimport { startWaapiAnimation } from './waapi/index.mjs';\nimport { isWaapiSupportedEasing } from './waapi/easing.mjs';\nimport { attachTimeline } from './waapi/utils/attach-timeline.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\nimport { supportsLinearEasing } from './waapi/utils/supports-linear-easing.mjs';\nimport { supportsWaapi } from './waapi/utils/supports-waapi.mjs';\n\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\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\n/**\n * Check if an animation can run natively via WAAPI or requires pregenerated keyframes.\n * WAAPI doesn't support spring or function easings so we run these as JS animation before\n * handing off.\n */\nfunction requiresPregeneratedKeyframes(options) {\n    return (isGenerator(options.type) ||\n        options.type === \"spring\" ||\n        !isWaapiSupportedEasing(options.ease));\n}\nfunction pregenerateKeyframes(keyframes, options) {\n    /**\n     * Create a main-thread animation to pregenerate keyframes.\n     * We sample this at regular intervals to generate keyframes that we then\n     * linearly interpolate between.\n     */\n    const sampleAnimation = new MainThreadAnimation({\n        ...options,\n        keyframes,\n        repeat: 0,\n        delay: 0,\n        isGenerator: true,\n    });\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 < maxDuration) {\n        state = sampleAnimation.sample(t);\n        pregeneratedKeyframes.push(state.value);\n        t += sampleDelta;\n    }\n    return {\n        times: undefined,\n        keyframes: pregeneratedKeyframes,\n        duration: t - sampleDelta,\n        ease: \"linear\",\n    };\n}\nconst unsupportedEasingFunctions = {\n    anticipate,\n    backInOut,\n    circInOut,\n};\nfunction isUnsupportedEase(key) {\n    return key in unsupportedEasingFunctions;\n}\nclass AcceleratedAnimation extends BaseAnimation {\n    constructor(options) {\n        super(options);\n        const { name, motionValue, element, keyframes } = this.options;\n        this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue, element);\n        this.resolver.scheduleResolve();\n    }\n    initPlayback(keyframes, finalKeyframe) {\n        var _a;\n        let { duration = 300, times, ease, type, motionValue, name, startTime, } = this.options;\n        /**\n         * If element has since been unmounted, return false to indicate\n         * the animation failed to initialised.\n         */\n        if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n            return false;\n        }\n        /**\n         * If the user has provided an easing function name that isn't supported\n         * by WAAPI (like \"anticipate\"), we need to provide the corressponding\n         * function. This will later get converted to a linear() easing function.\n         */\n        if (typeof ease === \"string\" &&\n            supportsLinearEasing() &&\n            isUnsupportedEase(ease)) {\n            ease = unsupportedEasingFunctions[ease];\n        }\n        /**\n         * If this animation needs pre-generated keyframes then generate.\n         */\n        if (requiresPregeneratedKeyframes(this.options)) {\n            const { onComplete, onUpdate, motionValue, element, ...options } = this.options;\n            const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n            keyframes = pregeneratedAnimation.keyframes;\n            // If this is a very short animation, ensure we have\n            // at least two keyframes to animate between as older browsers\n            // can't animate between a single keyframe.\n            if (keyframes.length === 1) {\n                keyframes[1] = keyframes[0];\n            }\n            duration = pregeneratedAnimation.duration;\n            times = pregeneratedAnimation.times;\n            ease = pregeneratedAnimation.ease;\n            type = \"keyframes\";\n        }\n        const animation = startWaapiAnimation(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });\n        // Override the browser calculated startTime with one synchronised to other JS\n        // and WAAPI animations starting this event loop.\n        animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n        if (this.pendingTimeline) {\n            attachTimeline(animation, this.pendingTimeline);\n            this.pendingTimeline = undefined;\n        }\n        else {\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                const { onComplete } = this.options;\n                motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n                onComplete && onComplete();\n                this.cancel();\n                this.resolveFinishedPromise();\n            };\n        }\n        return {\n            animation,\n            duration,\n            times,\n            type,\n            ease,\n            keyframes: keyframes,\n        };\n    }\n    get duration() {\n        const { resolved } = this;\n        if (!resolved)\n            return 0;\n        const { duration } = resolved;\n        return millisecondsToSeconds(duration);\n    }\n    get time() {\n        const { resolved } = this;\n        if (!resolved)\n            return 0;\n        const { animation } = resolved;\n        return millisecondsToSeconds(animation.currentTime || 0);\n    }\n    set time(newTime) {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.currentTime = secondsToMilliseconds(newTime);\n    }\n    get speed() {\n        const { resolved } = this;\n        if (!resolved)\n            return 1;\n        const { animation } = resolved;\n        return animation.playbackRate;\n    }\n    set speed(newSpeed) {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.playbackRate = newSpeed;\n    }\n    get state() {\n        const { resolved } = this;\n        if (!resolved)\n            return \"idle\";\n        const { animation } = resolved;\n        return animation.playState;\n    }\n    get startTime() {\n        const { resolved } = this;\n        if (!resolved)\n            return null;\n        const { animation } = resolved;\n        // Coerce to number as TypeScript incorrectly types this\n        // as CSSNumberish\n        return animation.startTime;\n    }\n    /**\n     * Replace the default DocumentTimeline with another AnimationTimeline.\n     * Currently used for scroll animations.\n     */\n    attachTimeline(timeline) {\n        if (!this._resolved) {\n            this.pendingTimeline = timeline;\n        }\n        else {\n            const { resolved } = this;\n            if (!resolved)\n                return noop;\n            const { animation } = resolved;\n            attachTimeline(animation, timeline);\n        }\n        return noop;\n    }\n    play() {\n        if (this.isStopped)\n            return;\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        if (animation.playState === \"finished\") {\n            this.updateFinishedPromise();\n        }\n        animation.play();\n    }\n    pause() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation } = resolved;\n        animation.pause();\n    }\n    stop() {\n        this.resolver.cancel();\n        this.isStopped = true;\n        if (this.state === \"idle\")\n            return;\n        this.resolveFinishedPromise();\n        this.updateFinishedPromise();\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        const { animation, keyframes, duration, type, ease, times } = resolved;\n        if (animation.playState === \"idle\" ||\n            animation.playState === \"finished\") {\n            return;\n        }\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        if (this.time) {\n            const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n            const sampleAnimation = new MainThreadAnimation({\n                ...options,\n                keyframes,\n                duration,\n                type,\n                ease,\n                times,\n                isGenerator: true,\n            });\n            const sampleTime = secondsToMilliseconds(this.time);\n            motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n        }\n        const { onStop } = this.options;\n        onStop && onStop();\n        this.cancel();\n    }\n    complete() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        resolved.animation.finish();\n    }\n    cancel() {\n        const { resolved } = this;\n        if (!resolved)\n            return;\n        resolved.animation.cancel();\n    }\n    static supports(options) {\n        const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n        return (supportsWaapi() &&\n            name &&\n            acceleratedValues.has(name) &&\n            motionValue &&\n            motionValue.owner &&\n            motionValue.owner.current instanceof HTMLElement &&\n            /**\n             * If we're outputting values to onUpdate then we can't use WAAPI as there's\n             * no way to read the value from WAAPI every frame.\n             */\n            !motionValue.owner.getProps().onUpdate &&\n            !repeatDelay &&\n            repeatType !== \"mirror\" &&\n            damping !== 0 &&\n            type !== \"inertia\");\n    }\n}\n\nexport { AcceleratedAnimation };\n","import { memo } from '../../../utils/memo.mjs';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { supportsScrollTimeline } from '../render/dom/scroll/supports.mjs';\n\nclass GroupPlaybackControls {\n    constructor(animations) {\n        // Bound to accomodate common `return animation.stop` pattern\n        this.stop = () => this.runAll(\"stop\");\n        this.animations = animations.filter(Boolean);\n    }\n    then(onResolve, onReject) {\n        return Promise.all(this.animations).then(onResolve).catch(onReject);\n    }\n    /**\n     * TODO: Filter out cancelled or stopped animations before returning\n     */\n    getAll(propName) {\n        return this.animations[0][propName];\n    }\n    setAll(propName, newValue) {\n        for (let i = 0; i < this.animations.length; i++) {\n            this.animations[i][propName] = newValue;\n        }\n    }\n    attachTimeline(timeline, fallback) {\n        const subscriptions = this.animations.map((animation) => {\n            if (supportsScrollTimeline() && animation.attachTimeline) {\n                return animation.attachTimeline(timeline);\n            }\n            else {\n                return fallback(animation);\n            }\n        });\n        return () => {\n            subscriptions.forEach((cancel, i) => {\n                cancel && cancel();\n                this.animations[i].stop();\n            });\n        };\n    }\n    get time() {\n        return this.getAll(\"time\");\n    }\n    set time(time) {\n        this.setAll(\"time\", time);\n    }\n    get speed() {\n        return this.getAll(\"speed\");\n    }\n    set speed(speed) {\n        this.setAll(\"speed\", speed);\n    }\n    get startTime() {\n        return this.getAll(\"startTime\");\n    }\n    get duration() {\n        let max = 0;\n        for (let i = 0; i < this.animations.length; i++) {\n            max = Math.max(max, this.animations[i].duration);\n        }\n        return max;\n    }\n    runAll(methodName) {\n        this.animations.forEach((controls) => controls[methodName]());\n    }\n    flatten() {\n        this.runAll(\"flatten\");\n    }\n    play() {\n        this.runAll(\"play\");\n    }\n    pause() {\n        this.runAll(\"pause\");\n    }\n    cancel() {\n        this.runAll(\"cancel\");\n    }\n    complete() {\n        this.runAll(\"complete\");\n    }\n}\n\nexport { GroupPlaybackControls };\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}\n\nexport { isTransitionDefined };\n","import { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { getValueTransition } from '../utils/get-value-transition.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { GroupPlaybackControls } from '../GroupPlaybackControls.mjs';\nimport { isTransitionDefined } from '../utils/is-transition-defined.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n    const valueTransition = getValueTransition(transition, name) || {};\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    let options = {\n        keyframes: Array.isArray(target) ? target : [null, target],\n        ease: \"easeOut\",\n        velocity: value.getVelocity(),\n        ...valueTransition,\n        delay: -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        name,\n        motionValue: value,\n        element: isHandoff ? undefined : element,\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(name, 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    if (options.from !== undefined) {\n        options.keyframes[0] = options.from;\n    }\n    let shouldSkip = false;\n    if (options.type === false ||\n        (options.duration === 0 && !options.repeatDelay)) {\n        options.duration = 0;\n        if (options.delay === 0) {\n            shouldSkip = true;\n        }\n    }\n    if (instantAnimationState.current ||\n        MotionGlobalConfig.skipAnimations) {\n        shouldSkip = true;\n        options.duration = 0;\n        options.delay = 0;\n    }\n    /**\n     * If we can or must skip creating the animation, and apply only\n     * the final keyframe, do so. We also check once keyframes are resolved but\n     * this early check prevents the need to create an animation at all.\n     */\n    if (shouldSkip && !isHandoff && value.get() !== undefined) {\n        const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n        if (finalKeyframe !== undefined) {\n            frame.update(() => {\n                options.onUpdate(finalKeyframe);\n                options.onComplete();\n            });\n            // We still want to return some animation controls here rather\n            // than returning undefined\n            return new GroupPlaybackControls([]);\n        }\n    }\n    /**\n     * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n     * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n     * optimised animation.\n     */\n    if (!isHandoff && AcceleratedAnimation.supports(options)) {\n        return new AcceleratedAnimation(options);\n    }\n    else {\n        return new MainThreadAnimation(options);\n    }\n};\n\nexport { animateMotionValue };\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","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","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n    return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n    current: undefined,\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 = \"11.11.17\";\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 = null;\n        /**\n         * An object containing a SubscriptionManager for each active event.\n         */\n        this.events = {};\n        this.updateAndNotify = (v, render = true) => {\n            const currentTime = time.now();\n            /**\n             * If we're updating the value during another frame or eventloop\n             * than the previous frame, then the we set the previous frame value\n             * to current.\n             */\n            if (this.updatedAt !== currentTime) {\n                this.setPrevFrameValue();\n            }\n            this.prev = this.current;\n            this.setCurrent(v);\n            // Update update subscribers\n            if (this.current !== this.prev && this.events.change) {\n                this.events.change.notify(this.current);\n            }\n            // Update render subscribers\n            if (render && this.events.renderRequest) {\n                this.events.renderRequest.notify(this.current);\n            }\n        };\n        this.hasAnimated = false;\n        this.setCurrent(init);\n        this.owner = options.owner;\n    }\n    setCurrent(current) {\n        this.current = current;\n        this.updatedAt = time.now();\n        if (this.canTrackVelocity === null && current !== undefined) {\n            this.canTrackVelocity = isFloat(this.current);\n        }\n    }\n    setPrevFrameValue(prevFrameValue = this.current) {\n        this.prevFrameValue = prevFrameValue;\n        this.prevUpdatedAt = this.updatedAt;\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 <motion.div style={{ x }} />\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        if (process.env.NODE_ENV !== \"production\") {\n            warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n        }\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                frame.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 = undefined;\n        this.prevFrameValue = prev;\n        this.prevUpdatedAt = this.updatedAt - 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, endAnimation = true) {\n        this.updateAndNotify(v);\n        this.prev = v;\n        this.prevUpdatedAt = this.prevFrameValue = undefined;\n        endAnimation && 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        if (collectMotionValues.current) {\n            collectMotionValues.current.push(this);\n        }\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        const currentTime = time.now();\n        if (!this.canTrackVelocity ||\n            this.prevFrameValue === undefined ||\n            currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n            return 0;\n        }\n        const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n        // Casts because of parseFloat's poor typing\n        return velocityPerSecond(parseFloat(this.current) -\n            parseFloat(this.prevFrameValue), delta);\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);\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        delete this.animation;\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, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.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 || {};\n    target = { ...target, ...transitionEnd };\n    for (const key in target) {\n        const value = resolveFinalValueInKeyframes(target[key]);\n        setMotionValue(visualElement, key, value);\n    }\n}\n\nexport { setTarget };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\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","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n    return visualElement.props[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\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 { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n    const willChange = visualElement.getValue(\"willChange\");\n    /**\n     * It could be that a user has set willChange to a regular MotionValue,\n     * in which case we can't add the value to it.\n     */\n    if (isWillChangeMotionValue(willChange)) {\n        return willChange.add(key);\n    }\n}\n\nexport { addValueToWillChange };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/get-value-transition.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\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}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n    var _a;\n    let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n    if (transitionOverride)\n        transition = transitionOverride;\n    const animations = [];\n    const animationTypeState = type &&\n        visualElement.animationState &&\n        visualElement.animationState.getState()[type];\n    for (const key in target) {\n        const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n        const valueTarget = target[key];\n        if (valueTarget === undefined ||\n            (animationTypeState &&\n                shouldBlockAnimation(animationTypeState, key))) {\n            continue;\n        }\n        const valueTransition = {\n            delay,\n            ...getValueTransition(transition || {}, key),\n        };\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        let isHandoff = false;\n        if (window.MotionHandoffAnimation) {\n            const appearId = getOptimisedAppearId(visualElement);\n            if (appearId) {\n                const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n                if (startTime !== null) {\n                    valueTransition.startTime = startTime;\n                    isHandoff = true;\n                }\n            }\n        }\n        addValueToWillChange(visualElement, key);\n        value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n            ? { type: false }\n            : valueTransition, visualElement, isHandoff));\n        const animation = value.animation;\n        if (animation) {\n            animations.push(animation);\n        }\n    }\n    if (transitionEnd) {\n        Promise.all(animations).then(() => {\n            frame.update(() => {\n                transitionEnd && setTarget(visualElement, transitionEnd);\n            });\n        });\n    }\n    return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n    var _a;\n    const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n        ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n        : undefined);\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        ? () => Promise.all(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 = visualElement.variantChildren && visualElement.variantChildren.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}\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 sortByTreeOrder(a, b) {\n    return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.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 = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n    }\n    return animation.then(() => {\n        visualElement.notify(\"AnimationComplete\", definition);\n    });\n}\n\nexport { animateVisualElement };\n","import { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nconst numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n    if (!visualElement)\n        return undefined;\n    if (!visualElement.isControllingVariants) {\n        const context = visualElement.parent\n            ? getVariantContext(visualElement.parent) || {}\n            : {};\n        if (visualElement.props.initial !== undefined) {\n            context.initial = visualElement.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 = visualElement.props[name];\n        if (isVariantLabel(prop) || prop === false) {\n            context[name] = prop;\n        }\n    }\n    return context;\n}\n\nexport { getVariantContext };\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 { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\nimport { getVariantContext } from './get-variant-context.mjs';\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    let 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 = (type) => (acc, definition) => {\n        var _a;\n        const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n            ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n            : undefined);\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(changedActiveType) {\n        const { props } = visualElement;\n        const context = getVariantContext(visualElement.parent) || {};\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\n                ? props[type]\n                : 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] &&\n                prop !== props[type] &&\n                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            let handledRemovedValues = false;\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(type), {});\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                if (removedKeys.has(key)) {\n                    handledRemovedValues = true;\n                    removedKeys.delete(key);\n                }\n                typeState.needsAnimating[key] = true;\n                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = false;\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                let valueHasChanged = false;\n                if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n                    valueHasChanged = !shallowCompare(next, prev);\n                }\n                else {\n                    valueHasChanged = next !== prev;\n                }\n                if (valueHasChanged) {\n                    if (next !== undefined && next !== null) {\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 skip this animation\n             * unless the inherited variants haven't changed on this render.\n             */\n            const willAnimateViaParent = isInherited && variantDidChange;\n            const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n            if (shouldAnimateType && needsAnimating) {\n                animations.push(...definitionList.map((animation) => ({\n                    animation: animation,\n                    options: { type },\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                const motionValue = visualElement.getValue(key);\n                if (motionValue)\n                    motionValue.liveStyle = true;\n                // @ts-expect-error - @mattgperry to figure if we should do something here\n                fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n            });\n            animations.push({ animation: fallbackAnimation });\n        }\n        let shouldAnimate = Boolean(animations.length);\n        if (isInitialRender &&\n            (props.initial === false || props.initial === props.animate) &&\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) {\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(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        reset: () => {\n            state = createState();\n            isInitialRender = true;\n        },\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        animate: createTypeState(true),\n        whileInView: createTypeState(),\n        whileHover: createTypeState(),\n        whileTap: createTypeState(),\n        whileDrag: createTypeState(),\n        whileFocus: createTypeState(),\n        exit: createTypeState(),\n    };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","class Feature {\n    constructor(node) {\n        this.isMounted = false;\n        this.node = node;\n    }\n    update() { }\n}\n\nexport { Feature };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\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    constructor(node) {\n        super(node);\n        node.animationState || (node.animationState = createAnimationState(node));\n    }\n    updateAnimationControlsSubscription() {\n        const { animate } = this.node.getProps();\n        if (isAnimationControls(animate)) {\n            this.unmountControls = animate.subscribe(this.node);\n        }\n    }\n    /**\n     * Subscribe any provided AnimationControls to the component's VisualElement\n     */\n    mount() {\n        this.updateAnimationControlsSubscription();\n    }\n    update() {\n        const { animate } = this.node.getProps();\n        const { animate: prevAnimate } = this.node.prevProps || {};\n        if (animate !== prevAnimate) {\n            this.updateAnimationControlsSubscription();\n        }\n    }\n    unmount() {\n        var _a;\n        this.node.animationState.reset();\n        (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n    }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.id = id++;\n    }\n    update() {\n        if (!this.node.presenceContext)\n            return;\n        const { isPresent, onExitComplete } = this.node.presenceContext;\n        const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n        if (!this.node.animationState || isPresent === prevIsPresent) {\n            return;\n        }\n        const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n        if (onExitComplete && !isPresent) {\n            exitAnimation.then(() => onExitComplete(this.id));\n        }\n    }\n    mount() {\n        const { register } = this.node.presenceContext || {};\n        if (register) {\n            this.unmount = register(this.id);\n        }\n    }\n    unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n    animation: {\n        Feature: AnimationFeature,\n    },\n    exit: {\n        Feature: ExitAnimationFeature,\n    },\n};\n\nexport { animations };\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","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n    target.addEventListener(eventName, handler, options);\n    return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { addDomEvent } from './add-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}\n\nexport { addPointerEvent };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n    // Multi-dimensional\n    const xDelta = distance(a.x, b.x);\n    const yDelta = distance(a.y, b.y);\n    return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n    constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n        /**\n         * @internal\n         */\n        this.startEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEvent = null;\n        /**\n         * @internal\n         */\n        this.lastMoveEventInfo = null;\n        /**\n         * @internal\n         */\n        this.handlers = {};\n        /**\n         * @internal\n         */\n        this.contextWindow = window;\n        this.updatePoint = () => {\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            const info = getPanInfo(this.lastMoveEventInfo, this.history);\n            const isPanStarted = this.startEvent !== null;\n            // Only start panning if the offset is larger than 3 pixels. If we make it\n            // any larger than this we'll want to reset the pointer history\n            // on the first update to avoid visual snapping to the cursoe.\n            const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n            if (!isPanStarted && !isDistancePastThreshold)\n                return;\n            const { point } = info;\n            const { timestamp } = frameData;\n            this.history.push({ ...point, timestamp });\n            const { onStart, onMove } = this.handlers;\n            if (!isPanStarted) {\n                onStart && onStart(this.lastMoveEvent, info);\n                this.startEvent = this.lastMoveEvent;\n            }\n            onMove && onMove(this.lastMoveEvent, info);\n        };\n        this.handlePointerMove = (event, info) => {\n            this.lastMoveEvent = event;\n            this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n            // Throttle mouse move event to once per frame\n            frame.update(this.updatePoint, true);\n        };\n        this.handlePointerUp = (event, info) => {\n            this.end();\n            const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n            if (this.dragSnapToOrigin)\n                resumeAnimation && resumeAnimation();\n            if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n                return;\n            const panInfo = getPanInfo(event.type === \"pointercancel\"\n                ? this.lastMoveEventInfo\n                : transformPoint(info, this.transformPagePoint), this.history);\n            if (this.startEvent && onEnd) {\n                onEnd(event, panInfo);\n            }\n            onSessionEnd && onSessionEnd(event, panInfo);\n        };\n        // If we have more than one touch, don't start detecting this gesture\n        if (!isPrimaryPointer(event))\n            return;\n        this.dragSnapToOrigin = dragSnapToOrigin;\n        this.handlers = handlers;\n        this.transformPagePoint = transformPagePoint;\n        this.contextWindow = contextWindow || window;\n        const info = extractEventInfo(event);\n        const initialInfo = transformPoint(info, this.transformPagePoint);\n        const { point } = initialInfo;\n        const { timestamp } = frameData;\n        this.history = [{ ...point, timestamp }];\n        const { onSessionStart } = handlers;\n        onSessionStart &&\n            onSessionStart(event, getPanInfo(initialInfo, this.history));\n        this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n    }\n    updateHandlers(handlers) {\n        this.handlers = handlers;\n    }\n    end() {\n        this.removeListeners && this.removeListeners();\n        cancelFrame(this.updatePoint);\n    }\n}\nfunction transformPoint(info, transformPagePoint) {\n    return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n    return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n    return {\n        point,\n        delta: subtractPoint(point, lastDevicePoint(history)),\n        offset: subtractPoint(point, startDevicePoint(history)),\n        velocity: getVelocity(history, 0.1),\n    };\n}\nfunction startDevicePoint(history) {\n    return history[0];\n}\nfunction lastDevicePoint(history) {\n    return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n    if (history.length < 2) {\n        return { x: 0, y: 0 };\n    }\n    let i = history.length - 1;\n    let timestampedPoint = null;\n    const lastPoint = lastDevicePoint(history);\n    while (i >= 0) {\n        timestampedPoint = history[i];\n        if (lastPoint.timestamp - timestampedPoint.timestamp >\n            secondsToMilliseconds(timeDelta)) {\n            break;\n        }\n        i--;\n    }\n    if (!timestampedPoint) {\n        return { x: 0, y: 0 };\n    }\n    const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n    if (time === 0) {\n        return { x: 0, y: 0 };\n    }\n    const currentVelocity = {\n        x: (lastPoint.x - timestampedPoint.x) / time,\n        y: (lastPoint.y - timestampedPoint.y) / time,\n    };\n    if (currentVelocity.x === Infinity) {\n        currentVelocity.x = 0;\n    }\n    if (currentVelocity.y === Infinity) {\n        currentVelocity.y = 0;\n    }\n    return currentVelocity;\n}\n\nexport { PanSession };\n","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","function isRefObject(ref) {\n    return (ref &&\n        typeof ref === \"object\" &&\n        Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n    return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n    return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n    delta.origin = origin;\n    delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n    delta.scale = calcLength(target) / calcLength(source);\n    delta.translate =\n        mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n    if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n        isNaN(delta.scale)) {\n        delta.scale = 1.0;\n    }\n    if ((delta.translate >= TRANSLATE_MIN &&\n        delta.translate <= TRANSLATE_MAX) ||\n        isNaN(delta.translate)) {\n        delta.translate = 0.0;\n    }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n    calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n    calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n    target.min = parent.min + relative.min;\n    target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n    calcRelativeAxis(target.x, relative.x, parent.x);\n    calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n    target.min = layout.min - parent.min;\n    target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n    calcRelativeAxisPosition(target.x, layout.x, parent.x);\n    calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n    if (min !== undefined && point < min) {\n        // If we have a min point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(min, point, elastic.min)\n            : Math.max(point, min);\n    }\n    else if (max !== undefined && point > max) {\n        // If we have a max point defined, and this is outside of that, constrain\n        point = elastic\n            ? mixNumber(max, point, elastic.max)\n            : Math.min(point, max);\n    }\n    return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n    return {\n        min: min !== undefined ? axis.min + min : undefined,\n        max: max !== undefined\n            ? axis.max + max - (axis.max - axis.min)\n            : undefined,\n    };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n    return {\n        x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n        y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n    };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n    let min = constraintsAxis.min - layoutAxis.min;\n    let max = constraintsAxis.max - layoutAxis.max;\n    // If the constraints axis is actually smaller than the layout axis then we can\n    // flip the constraints\n    if (constraintsAxis.max - constraintsAxis.min <\n        layoutAxis.max - layoutAxis.min) {\n        [min, max] = [max, min];\n    }\n    return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n    return {\n        x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n        y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n    };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n    let origin = 0.5;\n    const sourceLength = calcLength(source);\n    const targetLength = calcLength(target);\n    if (targetLength > sourceLength) {\n        origin = progress(target.min, target.max - sourceLength, source.min);\n    }\n    else if (sourceLength > targetLength) {\n        origin = progress(source.min, source.max - targetLength, target.min);\n    }\n    return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n    const relativeConstraints = {};\n    if (constraints.min !== undefined) {\n        relativeConstraints.min = constraints.min - layout.min;\n    }\n    if (constraints.max !== undefined) {\n        relativeConstraints.max = constraints.max - layout.min;\n    }\n    return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n    if (dragElastic === false) {\n        dragElastic = 0;\n    }\n    else if (dragElastic === true) {\n        dragElastic = defaultElastic;\n    }\n    return {\n        x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n        y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n    };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n    return {\n        min: resolvePointElastic(dragElastic, minLabel),\n        max: resolvePointElastic(dragElastic, maxLabel),\n    };\n}\nfunction resolvePointElastic(dragElastic, label) {\n    return typeof dragElastic === \"number\"\n        ? dragElastic\n        : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","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        values.skewX ||\n        values.skewY);\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 { mixNumber } from '../../utils/mix/number.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}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\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    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        /**\n         * TODO: Prefer to remove this, but currently we have motion components with\n         * display: contents in Framer.\n         */\n        const { visualElement } = node.options;\n        if (visualElement &&\n            visualElement.props.style &&\n            visualElement.props.style.display === \"contents\") {\n            continue;\n        }\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    if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n        treeScale.x > TREE_SCALE_SNAP_MIN) {\n        treeScale.x = 1.0;\n    }\n    if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n        treeScale.y > TREE_SCALE_SNAP_MIN) {\n        treeScale.y = 1.0;\n    }\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, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n    const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n    // Apply the axis delta to the final axis\n    applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n    transformAxis(box.x, transform.x, transform.scaleX, transform.scale, transform.originX);\n    transformAxis(box.y, transform.y, transform.scaleY, transform.scale, transform.originY);\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","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n    return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n    constructor(visualElement) {\n        // This is a reference to the global drag gesture lock, ensuring only one component\n        // can \"capture\" the drag of one or both axes.\n        // TODO: Look into moving this into pansession?\n        this.openGlobalLock = null;\n        this.isDragging = false;\n        this.currentDirection = null;\n        this.originPoint = { x: 0, y: 0 };\n        /**\n         * The permitted boundaries of travel, in pixels.\n         */\n        this.constraints = false;\n        this.hasMutatedConstraints = false;\n        /**\n         * The per-axis resolved elastic values.\n         */\n        this.elastic = createBox();\n        this.visualElement = visualElement;\n    }\n    start(originEvent, { snapToCursor = false } = {}) {\n        /**\n         * Don't start dragging if this component is exiting\n         */\n        const { presenceContext } = this.visualElement;\n        if (presenceContext && presenceContext.isPresent === false)\n            return;\n        const onSessionStart = (event) => {\n            const { dragSnapToOrigin } = this.getProps();\n            // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n            // the component.\n            dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n            if (snapToCursor) {\n                this.snapToCursor(extractEventInfo(event, \"page\").point);\n            }\n        };\n        const onStart = (event, info) => {\n            // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n            const { drag, dragPropagation, onDragStart } = this.getProps();\n            if (drag && !dragPropagation) {\n                if (this.openGlobalLock)\n                    this.openGlobalLock();\n                this.openGlobalLock = getGlobalLock(drag);\n                // If we don 't have the lock, don't start dragging\n                if (!this.openGlobalLock)\n                    return;\n            }\n            this.isDragging = true;\n            this.currentDirection = null;\n            this.resolveConstraints();\n            if (this.visualElement.projection) {\n                this.visualElement.projection.isAnimationBlocked = true;\n                this.visualElement.projection.target = undefined;\n            }\n            /**\n             * Record gesture origin\n             */\n            eachAxis((axis) => {\n                let current = this.getAxisMotionValue(axis).get() || 0;\n                /**\n                 * If the MotionValue is a percentage value convert to px\n                 */\n                if (percent.test(current)) {\n                    const { projection } = this.visualElement;\n                    if (projection && projection.layout) {\n                        const measuredAxis = projection.layout.layoutBox[axis];\n                        if (measuredAxis) {\n                            const length = calcLength(measuredAxis);\n                            current = length * (parseFloat(current) / 100);\n                        }\n                    }\n                }\n                this.originPoint[axis] = current;\n            });\n            // Fire onDragStart event\n            if (onDragStart) {\n                frame.postRender(() => onDragStart(event, info));\n            }\n            addValueToWillChange(this.visualElement, \"transform\");\n            const { animationState } = this.visualElement;\n            animationState && animationState.setActive(\"whileDrag\", true);\n        };\n        const onMove = (event, info) => {\n            // latestPointerEvent = event\n            const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n            // If we didn't successfully receive the gesture lock, early return.\n            if (!dragPropagation && !this.openGlobalLock)\n                return;\n            const { offset } = info;\n            // Attempt to detect drag direction if directionLock is true\n            if (dragDirectionLock && this.currentDirection === null) {\n                this.currentDirection = getCurrentDirection(offset);\n                // If we've successfully set a direction, notify listener\n                if (this.currentDirection !== null) {\n                    onDirectionLock && onDirectionLock(this.currentDirection);\n                }\n                return;\n            }\n            // Update each point with the latest position\n            this.updateAxis(\"x\", info.point, offset);\n            this.updateAxis(\"y\", info.point, offset);\n            /**\n             * Ideally we would leave the renderer to fire naturally at the end of\n             * this frame but if the element is about to change layout as the result\n             * of a re-render we want to ensure the browser can read the latest\n             * bounding box to ensure the pointer and element don't fall out of sync.\n             */\n            this.visualElement.render();\n            /**\n             * This must fire after the render call as it might trigger a state\n             * change which itself might trigger a layout update.\n             */\n            onDrag && onDrag(event, info);\n        };\n        const onSessionEnd = (event, info) => this.stop(event, info);\n        const resumeAnimation = () => eachAxis((axis) => {\n            var _a;\n            return this.getAnimationState(axis) === \"paused\" &&\n                ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n        });\n        const { dragSnapToOrigin } = this.getProps();\n        this.panSession = new PanSession(originEvent, {\n            onSessionStart,\n            onStart,\n            onMove,\n            onSessionEnd,\n            resumeAnimation,\n        }, {\n            transformPagePoint: this.visualElement.getTransformPagePoint(),\n            dragSnapToOrigin,\n            contextWindow: getContextWindow(this.visualElement),\n        });\n    }\n    stop(event, info) {\n        const isDragging = this.isDragging;\n        this.cancel();\n        if (!isDragging)\n            return;\n        const { velocity } = info;\n        this.startAnimation(velocity);\n        const { onDragEnd } = this.getProps();\n        if (onDragEnd) {\n            frame.postRender(() => onDragEnd(event, info));\n        }\n    }\n    cancel() {\n        this.isDragging = false;\n        const { projection, animationState } = this.visualElement;\n        if (projection) {\n            projection.isAnimationBlocked = false;\n        }\n        this.panSession && this.panSession.end();\n        this.panSession = undefined;\n        const { dragPropagation } = this.getProps();\n        if (!dragPropagation && this.openGlobalLock) {\n            this.openGlobalLock();\n            this.openGlobalLock = null;\n        }\n        animationState && animationState.setActive(\"whileDrag\", false);\n    }\n    updateAxis(axis, _point, offset) {\n        const { drag } = this.getProps();\n        // If we're not dragging this axis, do an early return.\n        if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n            return;\n        const axisValue = this.getAxisMotionValue(axis);\n        let next = this.originPoint[axis] + offset[axis];\n        // Apply constraints\n        if (this.constraints && this.constraints[axis]) {\n            next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n        }\n        axisValue.set(next);\n    }\n    resolveConstraints() {\n        var _a;\n        const { dragConstraints, dragElastic } = this.getProps();\n        const layout = this.visualElement.projection &&\n            !this.visualElement.projection.layout\n            ? this.visualElement.projection.measure(false)\n            : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n        const prevConstraints = this.constraints;\n        if (dragConstraints && isRefObject(dragConstraints)) {\n            if (!this.constraints) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        }\n        else {\n            if (dragConstraints && layout) {\n                this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n            }\n            else {\n                this.constraints = false;\n            }\n        }\n        this.elastic = resolveDragElastic(dragElastic);\n        /**\n         * If we're outputting to external MotionValues, we want to rebase the measured constraints\n         * from viewport-relative to component-relative.\n         */\n        if (prevConstraints !== this.constraints &&\n            layout &&\n            this.constraints &&\n            !this.hasMutatedConstraints) {\n            eachAxis((axis) => {\n                if (this.constraints !== false &&\n                    this.getAxisMotionValue(axis)) {\n                    this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n                }\n            });\n        }\n    }\n    resolveRefConstraints() {\n        const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n        if (!constraints || !isRefObject(constraints))\n            return false;\n        const constraintsElement = constraints.current;\n        invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n        const { projection } = this.visualElement;\n        // TODO\n        if (!projection || !projection.layout)\n            return false;\n        const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n        let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n        /**\n         * If there's an onMeasureDragConstraints listener we call it and\n         * if different constraints are returned, set constraints to that\n         */\n        if (onMeasureDragConstraints) {\n            const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n            this.hasMutatedConstraints = !!userConstraints;\n            if (userConstraints) {\n                measuredConstraints = convertBoundingBoxToBox(userConstraints);\n            }\n        }\n        return measuredConstraints;\n    }\n    startAnimation(velocity) {\n        const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n        const constraints = this.constraints || {};\n        const momentumAnimations = eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, this.currentDirection)) {\n                return;\n            }\n            let transition = (constraints && constraints[axis]) || {};\n            if (dragSnapToOrigin)\n                transition = { min: 0, max: 0 };\n            /**\n             * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n             * of spring animations so we should look into adding a disable spring option to `inertia`.\n             * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n             * using the value of `dragElastic`.\n             */\n            const bounceStiffness = dragElastic ? 200 : 1000000;\n            const bounceDamping = dragElastic ? 40 : 10000000;\n            const inertia = {\n                type: \"inertia\",\n                velocity: dragMomentum ? velocity[axis] : 0,\n                bounceStiffness,\n                bounceDamping,\n                timeConstant: 750,\n                restDelta: 1,\n                restSpeed: 10,\n                ...dragTransition,\n                ...transition,\n            };\n            // If we're not animating on an externally-provided `MotionValue` we can use the\n            // component's animation controls which will handle interactions with whileHover (etc),\n            // otherwise we just have to animate the `MotionValue` itself.\n            return this.startAxisValueAnimation(axis, inertia);\n        });\n        // Run all animations and then resolve the new drag constraints.\n        return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n    }\n    startAxisValueAnimation(axis, transition) {\n        const axisValue = this.getAxisMotionValue(axis);\n        addValueToWillChange(this.visualElement, axis);\n        return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n    }\n    stopAnimation() {\n        eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n    }\n    pauseAnimation() {\n        eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n    }\n    getAnimationState(axis) {\n        var _a;\n        return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n    }\n    /**\n     * Drag works differently depending on which props are provided.\n     *\n     * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n     * - Otherwise, we apply the delta to the x/y motion values.\n     */\n    getAxisMotionValue(axis) {\n        const dragKey = `_drag${axis.toUpperCase()}`;\n        const props = this.visualElement.getProps();\n        const externalMotionValue = props[dragKey];\n        return externalMotionValue\n            ? externalMotionValue\n            : this.visualElement.getValue(axis, (props.initial\n                ? props.initial[axis]\n                : undefined) || 0);\n    }\n    snapToCursor(point) {\n        eachAxis((axis) => {\n            const { drag } = this.getProps();\n            // If we're not dragging this axis, do an early return.\n            if (!shouldDrag(axis, drag, this.currentDirection))\n                return;\n            const { projection } = this.visualElement;\n            const axisValue = this.getAxisMotionValue(axis);\n            if (projection && projection.layout) {\n                const { min, max } = projection.layout.layoutBox[axis];\n                axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n            }\n        });\n    }\n    /**\n     * When the viewport resizes we want to check if the measured constraints\n     * have changed and, if so, reposition the element within those new constraints\n     * relative to where it was before the resize.\n     */\n    scalePositionWithinConstraints() {\n        if (!this.visualElement.current)\n            return;\n        const { drag, dragConstraints } = this.getProps();\n        const { projection } = this.visualElement;\n        if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n            return;\n        /**\n         * Stop current animations as there can be visual glitching if we try to do\n         * this mid-animation\n         */\n        this.stopAnimation();\n        /**\n         * Record the relative position of the dragged element relative to the\n         * constraints box and save as a progress value.\n         */\n        const boxProgress = { x: 0, y: 0 };\n        eachAxis((axis) => {\n            const axisValue = this.getAxisMotionValue(axis);\n            if (axisValue && this.constraints !== false) {\n                const latest = axisValue.get();\n                boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n            }\n        });\n        /**\n         * Update the layout of this element and resolve the latest drag constraints\n         */\n        const { transformTemplate } = this.visualElement.getProps();\n        this.visualElement.current.style.transform = transformTemplate\n            ? transformTemplate({}, \"\")\n            : \"none\";\n        projection.root && projection.root.updateScroll();\n        projection.updateLayout();\n        this.resolveConstraints();\n        /**\n         * For each axis, calculate the current progress of the layout axis\n         * within the new constraints.\n         */\n        eachAxis((axis) => {\n            if (!shouldDrag(axis, drag, null))\n                return;\n            /**\n             * Calculate a new transform based on the previous box progress\n             */\n            const axisValue = this.getAxisMotionValue(axis);\n            const { min, max } = this.constraints[axis];\n            axisValue.set(mixNumber(min, max, boxProgress[axis]));\n        });\n    }\n    addListeners() {\n        if (!this.visualElement.current)\n            return;\n        elementDragControls.set(this.visualElement, this);\n        const element = this.visualElement.current;\n        /**\n         * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n         */\n        const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n            const { drag, dragListener = true } = this.getProps();\n            drag && dragListener && this.start(event);\n        });\n        const measureDragConstraints = () => {\n            const { dragConstraints } = this.getProps();\n            if (isRefObject(dragConstraints) && dragConstraints.current) {\n                this.constraints = this.resolveRefConstraints();\n            }\n        };\n        const { projection } = this.visualElement;\n        const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n        if (projection && !projection.layout) {\n            projection.root && projection.root.updateScroll();\n            projection.updateLayout();\n        }\n        frame.read(measureDragConstraints);\n        /**\n         * Attach a window resize listener to scale the draggable target within its defined\n         * constraints as the window resizes.\n         */\n        const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n        /**\n         * If the element's layout changes, calculate the delta and apply that to\n         * the drag gesture's origin point.\n         */\n        const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n            if (this.isDragging && hasLayoutChanged) {\n                eachAxis((axis) => {\n                    const motionValue = this.getAxisMotionValue(axis);\n                    if (!motionValue)\n                        return;\n                    this.originPoint[axis] += delta[axis].translate;\n                    motionValue.set(motionValue.get() + delta[axis].translate);\n                });\n                this.visualElement.render();\n            }\n        }));\n        return () => {\n            stopResizeListener();\n            stopPointerListener();\n            stopMeasureLayoutListener();\n            stopLayoutUpdateListener && stopLayoutUpdateListener();\n        };\n    }\n    getProps() {\n        const props = this.visualElement.getProps();\n        const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n        return {\n            ...props,\n            drag,\n            dragDirectionLock,\n            dragPropagation,\n            dragConstraints,\n            dragElastic,\n            dragMomentum,\n        };\n    }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n    return ((drag === true || drag === direction) &&\n        (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n    let direction = null;\n    if (Math.abs(offset.y) > lockThreshold) {\n        direction = \"y\";\n    }\n    else if (Math.abs(offset.x) > lockThreshold) {\n        direction = \"x\";\n    }\n    return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n    constructor(node) {\n        super(node);\n        this.removeGroupControls = noop;\n        this.removeListeners = noop;\n        this.controls = new VisualElementDragControls(node);\n    }\n    mount() {\n        // If we've been provided a DragControls for manual control over the drag gesture,\n        // subscribe this component to it on mount.\n        const { dragControls } = this.node.getProps();\n        if (dragControls) {\n            this.removeGroupControls = dragControls.subscribe(this.controls);\n        }\n        this.removeListeners = this.controls.addListeners() || noop;\n    }\n    unmount() {\n        this.removeGroupControls();\n        this.removeListeners();\n    }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n    if (handler) {\n        frame.postRender(() => handler(event, info));\n    }\n};\nclass PanGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.removePointerDownListener = noop;\n    }\n    onPointerDown(pointerDownEvent) {\n        this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n            transformPagePoint: this.node.getTransformPagePoint(),\n            contextWindow: getContextWindow(this.node),\n        });\n    }\n    createPanHandlers() {\n        const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n        return {\n            onSessionStart: asyncHandler(onPanSessionStart),\n            onStart: asyncHandler(onPanStart),\n            onMove: onPan,\n            onEnd: (event, info) => {\n                delete this.session;\n                if (onPanEnd) {\n                    frame.postRender(() => onPanEnd(event, info));\n                }\n            },\n        };\n    }\n    mount() {\n        this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n    }\n    update() {\n        this.session && this.session.updateHandlers(this.createPanHandlers());\n    }\n    unmount() {\n        this.removePointerDownListener();\n        this.session && this.session.end();\n    }\n}\n\nexport { PanGesture };\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    {\n      if (hasOwnProperty.call(props, 'key')) {\n        var componentName = getComponentNameFromType(type);\n        var keys = Object.keys(props).filter(function (k) {\n          return k !== 'key';\n        });\n        var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n        if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n          var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n          error('A props object containing a \"key\" prop is being spread into JSX:\\n' + '  let props = %s;\\n' + '  <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + '  let props = %s;\\n' + '  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n          didWarnAboutKeySpread[componentName + beforeExample] = true;\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const [isPresent, safeToRemove] = usePresence()\n *\n *   useEffect(() => {\n *     !isPresent && setTimeout(safeToRemove, 1000)\n *   }, [isPresent])\n *\n *   return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n    const context = useContext(PresenceContext);\n    if (context === null)\n        return [true, null];\n    const { isPresent, onExitComplete, register } = context;\n    // It's safe to call the following hooks conditionally (after an early return) because the context will always\n    // either be null or non-null for the lifespan of the component.\n    const id = useId();\n    useEffect(() => register(id), []);\n    const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id), [id, onExitComplete]);\n    return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n *   const isPresent = useIsPresent()\n *\n *   useEffect(() => {\n *     !isPresent && console.log(\"I've been removed!\")\n *   }, [isPresent])\n *\n *   return <div />\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","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n    /**\n     * Global flag as to whether the tree has animated since the last time\n     * we resized the window\n     */\n    hasAnimatedSinceResize: true,\n    /**\n     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n     * update will be given a `data-projection-id` attribute.\n     */\n    hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n    if (axis.max === axis.min)\n        return 0;\n    return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n    correct: (latest, node) => {\n        if (!node.target)\n            return latest;\n        /**\n         * If latest is a string, if it's a percentage we can return immediately as it's\n         * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n         */\n        if (typeof latest === \"string\") {\n            if (px.test(latest)) {\n                latest = parseFloat(latest);\n            }\n            else {\n                return latest;\n            }\n        }\n        /**\n         * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n         * pixel value as a percentage of each axis\n         */\n        const x = pixelsToPercent(latest, node.target.x);\n        const y = pixelsToPercent(latest, node.target.y);\n        return `${x}% ${y}%`;\n    },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n    correct: (latest, { treeScale, projectionDelta }) => {\n        const original = latest;\n        const shadow = complex.parse(latest);\n        // TODO: Doesn't support multiple shadows\n        if (shadow.length > 5)\n            return original;\n        const template = complex.createTransformer(latest);\n        const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n        // Calculate the overall context scale\n        const xScale = projectionDelta.x.scale * treeScale.x;\n        const yScale = projectionDelta.y.scale * treeScale.y;\n        shadow[0 + offset] /= xScale;\n        shadow[1 + offset] /= yScale;\n        /**\n         * Ideally we'd correct x and y scales individually, but because blur and\n         * spread apply to both we have to take a scale average and apply that instead.\n         * We could potentially improve the outcome of this by incorporating the ratio between\n         * the two scales.\n         */\n        const averageScale = mixNumber(xScale, yScale, 0.5);\n        // Blur\n        if (typeof shadow[2 + offset] === \"number\")\n            shadow[2 + offset] /= averageScale;\n        // Spread\n        if (typeof shadow[3 + offset] === \"number\")\n            shadow[3 + offset] /= averageScale;\n        return template(shadow);\n    },\n};\n\nexport { correctBoxShadow };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n    Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n    /**\n     * This only mounts projection nodes for components that\n     * need measuring, we might want to do it for all components\n     * in order to incorporate transforms\n     */\n    componentDidMount() {\n        const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n        const { projection } = visualElement;\n        addScaleCorrector(defaultScaleCorrectors);\n        if (projection) {\n            if (layoutGroup.group)\n                layoutGroup.group.add(projection);\n            if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n                switchLayoutGroup.register(projection);\n            }\n            projection.root.didUpdate();\n            projection.addEventListener(\"animationComplete\", () => {\n                this.safeToRemove();\n            });\n            projection.setOptions({\n                ...projection.options,\n                onExitComplete: () => this.safeToRemove(),\n            });\n        }\n        globalProjectionState.hasEverUpdated = true;\n    }\n    getSnapshotBeforeUpdate(prevProps) {\n        const { layoutDependency, visualElement, drag, isPresent } = this.props;\n        const projection = visualElement.projection;\n        if (!projection)\n            return null;\n        /**\n         * TODO: We use this data in relegate to determine whether to\n         * promote a previous element. There's no guarantee its presence data\n         * will have updated by this point - if a bug like this arises it will\n         * have to be that we markForRelegation and then find a new lead some other way,\n         * perhaps in didUpdate\n         */\n        projection.isPresent = isPresent;\n        if (drag ||\n            prevProps.layoutDependency !== layoutDependency ||\n            layoutDependency === undefined) {\n            projection.willUpdate();\n        }\n        else {\n            this.safeToRemove();\n        }\n        if (prevProps.isPresent !== isPresent) {\n            if (isPresent) {\n                projection.promote();\n            }\n            else if (!projection.relegate()) {\n                /**\n                 * If there's another stack member taking over from this one,\n                 * it's in charge of the exit animation and therefore should\n                 * be in charge of the safe to remove. Otherwise we call it here.\n                 */\n                frame.postRender(() => {\n                    const stack = projection.getStack();\n                    if (!stack || !stack.members.length) {\n                        this.safeToRemove();\n                    }\n                });\n            }\n        }\n        return null;\n    }\n    componentDidUpdate() {\n        const { projection } = this.props.visualElement;\n        if (projection) {\n            projection.root.didUpdate();\n            microtask.postRender(() => {\n                if (!projection.currentAnimation && projection.isLead()) {\n                    this.safeToRemove();\n                }\n            });\n        }\n    }\n    componentWillUnmount() {\n        const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n        const { projection } = visualElement;\n        if (projection) {\n            projection.scheduleCheckAfterUnmount();\n            if (layoutGroup && layoutGroup.group)\n                layoutGroup.group.remove(projection);\n            if (promoteContext && promoteContext.deregister)\n                promoteContext.deregister(projection);\n        }\n    }\n    safeToRemove() {\n        const { safeToRemove } = this.props;\n        safeToRemove && safeToRemove();\n    }\n    render() {\n        return null;\n    }\n}\nfunction MeasureLayout(props) {\n    const [isPresent, safeToRemove] = usePresence();\n    const layoutGroup = useContext(LayoutGroupContext);\n    return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n    borderRadius: {\n        ...correctBorderRadius,\n        applyTo: [\n            \"borderTopLeftRadius\",\n            \"borderTopRightRadius\",\n            \"borderBottomLeftRadius\",\n            \"borderBottomRightRadius\",\n        ],\n    },\n    borderTopLeftRadius: correctBorderRadius,\n    borderTopRightRadius: correctBorderRadius,\n    borderBottomLeftRadius: correctBorderRadius,\n    borderBottomRightRadius: correctBorderRadius,\n    boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n    if (shouldCrossfadeOpacity) {\n        target.opacity = mixNumber(0, \n        // TODO Reinstate this if only child\n        lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n        target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n    }\n    else if (isOnlyMember) {\n        target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n    }\n    /**\n     * Mix border radius\n     */\n    for (let i = 0; i < numBorders; i++) {\n        const borderLabel = `border${borders[i]}Radius`;\n        let followRadius = getRadius(follow, borderLabel);\n        let leadRadius = getRadius(lead, borderLabel);\n        if (followRadius === undefined && leadRadius === undefined)\n            continue;\n        followRadius || (followRadius = 0);\n        leadRadius || (leadRadius = 0);\n        const canMix = followRadius === 0 ||\n            leadRadius === 0 ||\n            isPx(followRadius) === isPx(leadRadius);\n        if (canMix) {\n            target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n            if (percent.test(leadRadius) || percent.test(followRadius)) {\n                target[borderLabel] += \"%\";\n            }\n        }\n        else {\n            target[borderLabel] = leadRadius;\n        }\n    }\n    /**\n     * Mix rotation\n     */\n    if (follow.rotate || lead.rotate) {\n        target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n    }\n}\nfunction getRadius(values, radiusName) {\n    return values[radiusName] !== undefined\n        ? values[radiusName]\n        : values.borderRadius;\n}\n// /**\n//  * We only want to mix the background color if there's a follow element\n//  * that we're not crossfading opacity between. For instance with switch\n//  * AnimateSharedLayout animations, this helps the illusion of a continuous\n//  * element being animated but also cuts down on the number of paints triggered\n//  * for elements where opacity is doing that work for us.\n//  */\n// if (\n//     !hasFollowElement &&\n//     latestLeadValues.backgroundColor &&\n//     latestFollowValues.backgroundColor\n// ) {\n//     /**\n//      * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n//      * We could probably create a mixer that runs at the start of the animation but\n//      * the idea behind the crossfader is that it runs dynamically between two potentially\n//      * changing targets (ie opacity or borderRadius may be animating independently via variants)\n//      */\n//     leadState.backgroundColor = followState.backgroundColor = mixColor(\n//         latestFollowValues.backgroundColor as string,\n//         latestLeadValues.backgroundColor as string\n//     )(p)\n// }\nconst easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut);\nconst easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n    return (p) => {\n        // Could replace ifs with clamp\n        if (p < min)\n            return 0;\n        if (p > max)\n            return 1;\n        return easing(progress(min, max, p));\n    };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n    axis.min = originAxis.min;\n    axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n    copyAxisInto(box.x, originBox.x);\n    copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n    delta.translate = originDelta.translate;\n    delta.scale = originDelta.scale;\n    delta.originPoint = originDelta.originPoint;\n    delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n    point -= translate;\n    point = scalePoint(point, 1 / scale, originPoint);\n    if (boxScale !== undefined) {\n        point = scalePoint(point, 1 / boxScale, originPoint);\n    }\n    return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n    if (percent.test(translate)) {\n        translate = parseFloat(translate);\n        const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n        translate = relativeProgress - sourceAxis.min;\n    }\n    if (typeof translate !== \"number\")\n        return;\n    let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n    if (axis === originAxis)\n        originPoint -= translate;\n    axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n    axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n    removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n    removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n    removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n    return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n    return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n    return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n    return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n    return (Math.round(a.min) === Math.round(b.min) &&\n        Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n    return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n    return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n    return (a.translate === b.translate &&\n        a.scale === b.scale &&\n        a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n    constructor() {\n        this.members = [];\n    }\n    add(node) {\n        addUniqueItem(this.members, node);\n        node.scheduleRender();\n    }\n    remove(node) {\n        removeItem(this.members, node);\n        if (node === this.prevLead) {\n            this.prevLead = undefined;\n        }\n        if (node === this.lead) {\n            const prevLead = this.members[this.members.length - 1];\n            if (prevLead) {\n                this.promote(prevLead);\n            }\n        }\n    }\n    relegate(node) {\n        const indexOfNode = this.members.findIndex((member) => node === member);\n        if (indexOfNode === 0)\n            return false;\n        /**\n         * Find the next projection node that is present\n         */\n        let prevLead;\n        for (let i = indexOfNode; i >= 0; i--) {\n            const member = this.members[i];\n            if (member.isPresent !== false) {\n                prevLead = member;\n                break;\n            }\n        }\n        if (prevLead) {\n            this.promote(prevLead);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    promote(node, preserveFollowOpacity) {\n        const prevLead = this.lead;\n        if (node === prevLead)\n            return;\n        this.prevLead = prevLead;\n        this.lead = node;\n        node.show();\n        if (prevLead) {\n            prevLead.instance && prevLead.scheduleRender();\n            node.scheduleRender();\n            node.resumeFrom = prevLead;\n            if (preserveFollowOpacity) {\n                node.resumeFrom.preserveOpacity = true;\n            }\n            if (prevLead.snapshot) {\n                node.snapshot = prevLead.snapshot;\n                node.snapshot.latestValues =\n                    prevLead.animationValues || prevLead.latestValues;\n            }\n            if (node.root && node.root.isUpdating) {\n                node.isLayoutDirty = true;\n            }\n            const { crossfade } = node.options;\n            if (crossfade === false) {\n                prevLead.hide();\n            }\n            /**\n             * TODO:\n             *   - Test border radius when previous node was deleted\n             *   - boxShadow mixing\n             *   - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n             *   - Shared between element A in transformed container and element B (transform stays the same or changes)\n             *   - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n             * ---\n             *   - Crossfade opacity of root nodes\n             *   - layoutId changes after animation\n             *   - layoutId changes mid animation\n             */\n        }\n    }\n    exitAnimationComplete() {\n        this.members.forEach((node) => {\n            const { options, resumingFrom } = node;\n            options.onExitComplete && options.onExitComplete();\n            if (resumingFrom) {\n                resumingFrom.options.onExitComplete &&\n                    resumingFrom.options.onExitComplete();\n            }\n        });\n    }\n    scheduleRender() {\n        this.members.forEach((node) => {\n            node.instance && node.scheduleRender(false);\n        });\n    }\n    /**\n     * Clear any leads that have been removed this render to prevent them from being\n     * used in future animations and to prevent memory leaks\n     */\n    removeLeadSnapshot() {\n        if (this.lead && this.lead.snapshot) {\n            this.lead.snapshot = undefined;\n        }\n    }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n    let transform = \"\";\n    /**\n     * The translations we use to calculate are always relative to the viewport coordinate space.\n     * But when we apply scales, we also scale the coordinate space of an element and its children.\n     * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n     * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n     */\n    const xTranslate = delta.x.translate / treeScale.x;\n    const yTranslate = delta.y.translate / treeScale.y;\n    const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n    if (xTranslate || yTranslate || zTranslate) {\n        transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n    }\n    /**\n     * Apply scale correction for the tree transform.\n     * This will apply scale to the screen-orientated axes.\n     */\n    if (treeScale.x !== 1 || treeScale.y !== 1) {\n        transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n    }\n    if (latestTransform) {\n        const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n        if (transformPerspective)\n            transform = `perspective(${transformPerspective}px) ${transform}`;\n        if (rotate)\n            transform += `rotate(${rotate}deg) `;\n        if (rotateX)\n            transform += `rotateX(${rotateX}deg) `;\n        if (rotateY)\n            transform += `rotateY(${rotateY}deg) `;\n        if (skewX)\n            transform += `skewX(${skewX}deg) `;\n        if (skewY)\n            transform += `skewY(${skewY}deg) `;\n    }\n    /**\n     * Apply scale to match the size of the element to the size we want it.\n     * This will apply scale to the element-orientated axes.\n     */\n    const elementScaleX = delta.x.scale * treeScale.x;\n    const elementScaleY = delta.y.scale * treeScale.y;\n    if (elementScaleX !== 1 || elementScaleY !== 1) {\n        transform += `scale(${elementScaleX}, ${elementScaleY})`;\n    }\n    return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n    constructor() {\n        this.children = [];\n        this.isDirty = false;\n    }\n    add(child) {\n        addUniqueItem(this.children, child);\n        this.isDirty = true;\n    }\n    remove(child) {\n        removeItem(this.children, child);\n        this.isDirty = true;\n    }\n    forEach(callback) {\n        this.isDirty && this.children.sort(compareByDepth);\n        this.isDirty = false;\n        this.children.forEach(callback);\n    }\n}\n\nexport { FlatTree };\n","import { 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 { time } from '../frameloop/sync-time.mjs';\nimport { secondsToMilliseconds } from './time-conversion.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n    const start = time.now();\n    const checkElapsed = ({ timestamp }) => {\n        const elapsed = timestamp - start;\n        if (elapsed >= timeout) {\n            cancelFrame(checkElapsed);\n            callback(elapsed - timeout);\n        }\n    };\n    frame.read(checkElapsed, true);\n    return () => cancelFrame(checkElapsed);\n}\nfunction delayInSeconds(callback, timeout) {\n    return delay(callback, secondsToMilliseconds(timeout));\n}\n\nexport { delay, delayInSeconds };\n","function isSVGElement(element) {\n    return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { animateMotionValue } from '../interfaces/motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n    const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n    motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n    return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { getValueTransition } from '../../animation/utils/get-value-transition.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, frameSteps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\n\nconst metrics = {\n    type: \"projectionFrame\",\n    totalNodes: 0,\n    resolvedTargetDeltas: 0,\n    recalculatedProjection: 0,\n};\nconst isDebug = typeof window !== \"undefined\" && window.MotionDebug !== undefined;\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n    const { latestValues } = visualElement;\n    // Record the distorting transform and then temporarily set it to 0\n    if (latestValues[key]) {\n        values[key] = latestValues[key];\n        visualElement.setStaticValue(key, 0);\n        if (sharedAnimationValues) {\n            sharedAnimationValues[key] = 0;\n        }\n    }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n    projectionNode.hasCheckedOptimisedAppear = true;\n    if (projectionNode.root === projectionNode)\n        return;\n    const { visualElement } = projectionNode.options;\n    if (!visualElement)\n        return;\n    const appearId = getOptimisedAppearId(visualElement);\n    if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n        const { layout, layoutId } = projectionNode.options;\n        window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n    }\n    const { parent } = projectionNode;\n    if (parent && !parent.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(parent);\n    }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n    return class ProjectionNode {\n        constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n            /**\n             * A unique ID generated for every projection node.\n             */\n            this.id = id++;\n            /**\n             * An id that represents a unique session instigated by startUpdate.\n             */\n            this.animationId = 0;\n            /**\n             * A Set containing all this component's children. This is used to iterate\n             * through the children.\n             *\n             * TODO: This could be faster to iterate as a flat array stored on the root node.\n             */\n            this.children = new Set();\n            /**\n             * Options for the node. We use this to configure what kind of layout animations\n             * we should perform (if any).\n             */\n            this.options = {};\n            /**\n             * We use this to detect when its safe to shut down part of a projection tree.\n             * We have to keep projecting children for scale correction and relative projection\n             * until all their parents stop performing layout animations.\n             */\n            this.isTreeAnimating = false;\n            this.isAnimationBlocked = false;\n            /**\n             * Flag to true if we think this layout has been changed. We can't always know this,\n             * currently we set it to true every time a component renders, or if it has a layoutDependency\n             * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n             * and if one node is dirtied, they all are.\n             */\n            this.isLayoutDirty = false;\n            /**\n             * Flag to true if we think the projection calculations for this node needs\n             * recalculating as a result of an updated transform or layout animation.\n             */\n            this.isProjectionDirty = false;\n            /**\n             * Flag to true if the layout *or* transform has changed. This then gets propagated\n             * throughout the projection tree, forcing any element below to recalculate on the next frame.\n             */\n            this.isSharedProjectionDirty = false;\n            /**\n             * Flag transform dirty. This gets propagated throughout the whole tree but is only\n             * respected by shared nodes.\n             */\n            this.isTransformDirty = false;\n            /**\n             * Block layout updates for instant layout transitions throughout the tree.\n             */\n            this.updateManuallyBlocked = false;\n            this.updateBlockedByResize = false;\n            /**\n             * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n             * call.\n             */\n            this.isUpdating = false;\n            /**\n             * If this is an SVG element we currently disable projection transforms\n             */\n            this.isSVG = false;\n            /**\n             * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n             * its projection styles.\n             */\n            this.needsReset = false;\n            /**\n             * Flags whether this node should have its transform reset prior to measuring.\n             */\n            this.shouldResetTransform = false;\n            /**\n             * Store whether this node has been checked for optimised appear animations. As\n             * effects fire bottom-up, and we want to look up the tree for appear animations,\n             * this makes sure we only check each path once, stopping at nodes that\n             * have already been checked.\n             */\n            this.hasCheckedOptimisedAppear = false;\n            /**\n             * An object representing the calculated contextual/accumulated/tree scale.\n             * This will be used to scale calculcated projection transforms, as these are\n             * calculated in screen-space but need to be scaled for elements to layoutly\n             * make it to their calculated destinations.\n             *\n             * TODO: Lazy-init\n             */\n            this.treeScale = { x: 1, y: 1 };\n            /**\n             *\n             */\n            this.eventHandlers = new Map();\n            this.hasTreeAnimated = false;\n            // Note: Currently only running on root node\n            this.updateScheduled = false;\n            this.scheduleUpdate = () => this.update();\n            this.projectionUpdateScheduled = false;\n            this.checkUpdateFailed = () => {\n                if (this.isUpdating) {\n                    this.isUpdating = false;\n                    this.clearAllSnapshots();\n                }\n            };\n            /**\n             * This is a multi-step process as shared nodes might be of different depths. Nodes\n             * are sorted by depth order, so we need to resolve the entire tree before moving to\n             * the next step.\n             */\n            this.updateProjection = () => {\n                this.projectionUpdateScheduled = false;\n                /**\n                 * Reset debug counts. Manually resetting rather than creating a new\n                 * object each frame.\n                 */\n                if (isDebug) {\n                    metrics.totalNodes =\n                        metrics.resolvedTargetDeltas =\n                            metrics.recalculatedProjection =\n                                0;\n                }\n                this.nodes.forEach(propagateDirtyNodes);\n                this.nodes.forEach(resolveTargetDelta);\n                this.nodes.forEach(calcProjection);\n                this.nodes.forEach(cleanDirtyNodes);\n                if (isDebug) {\n                    window.MotionDebug.record(metrics);\n                }\n            };\n            /**\n             * Frame calculations\n             */\n            this.resolvedRelativeTargetAt = 0.0;\n            this.hasProjected = false;\n            this.isVisible = true;\n            this.animationProgress = 0;\n            /**\n             * Shared layout\n             */\n            // TODO Only running on root node\n            this.sharedNodes = new Map();\n            this.latestValues = latestValues;\n            this.root = parent ? parent.root || parent : this;\n            this.path = parent ? [...parent.path, parent] : [];\n            this.parent = parent;\n            this.depth = parent ? parent.depth + 1 : 0;\n            for (let i = 0; i < this.path.length; i++) {\n                this.path[i].shouldResetTransform = true;\n            }\n            if (this.root === this)\n                this.nodes = new FlatTree();\n        }\n        addEventListener(name, handler) {\n            if (!this.eventHandlers.has(name)) {\n                this.eventHandlers.set(name, new SubscriptionManager());\n            }\n            return this.eventHandlers.get(name).add(handler);\n        }\n        notifyListeners(name, ...args) {\n            const subscriptionManager = this.eventHandlers.get(name);\n            subscriptionManager && subscriptionManager.notify(...args);\n        }\n        hasListeners(name) {\n            return this.eventHandlers.has(name);\n        }\n        /**\n         * Lifecycles\n         */\n        mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n            if (this.instance)\n                return;\n            this.isSVG = isSVGElement(instance);\n            this.instance = instance;\n            const { layoutId, layout, visualElement } = this.options;\n            if (visualElement && !visualElement.current) {\n                visualElement.mount(instance);\n            }\n            this.root.nodes.add(this);\n            this.parent && this.parent.children.add(this);\n            if (isLayoutDirty && (layout || layoutId)) {\n                this.isLayoutDirty = true;\n            }\n            if (attachResizeListener) {\n                let cancelDelay;\n                const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n                attachResizeListener(instance, () => {\n                    this.root.updateBlockedByResize = true;\n                    cancelDelay && cancelDelay();\n                    cancelDelay = delay(resizeUnblockUpdate, 250);\n                    if (globalProjectionState.hasAnimatedSinceResize) {\n                        globalProjectionState.hasAnimatedSinceResize = false;\n                        this.nodes.forEach(finishAnimation);\n                    }\n                });\n            }\n            if (layoutId) {\n                this.root.registerSharedNode(layoutId, this);\n            }\n            // Only register the handler if it requires layout animation\n            if (this.options.animate !== false &&\n                visualElement &&\n                (layoutId || layout)) {\n                this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n                    if (this.isTreeAnimationBlocked()) {\n                        this.target = undefined;\n                        this.relativeTarget = undefined;\n                        return;\n                    }\n                    // TODO: Check here if an animation exists\n                    const layoutTransition = this.options.transition ||\n                        visualElement.getDefaultTransition() ||\n                        defaultLayoutTransition;\n                    const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n                    /**\n                     * The target layout of the element might stay the same,\n                     * but its position relative to its parent has changed.\n                     */\n                    const targetChanged = !this.targetLayout ||\n                        !boxEqualsRounded(this.targetLayout, newLayout) ||\n                        hasRelativeTargetChanged;\n                    /**\n                     * If the layout hasn't seemed to have changed, it might be that the\n                     * element is visually in the same place in the document but its position\n                     * relative to its parent has indeed changed. So here we check for that.\n                     */\n                    const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n                    if (this.options.layoutRoot ||\n                        (this.resumeFrom && this.resumeFrom.instance) ||\n                        hasOnlyRelativeTargetChanged ||\n                        (hasLayoutChanged &&\n                            (targetChanged || !this.currentAnimation))) {\n                        if (this.resumeFrom) {\n                            this.resumingFrom = this.resumeFrom;\n                            this.resumingFrom.resumingFrom = undefined;\n                        }\n                        this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n                        const animationOptions = {\n                            ...getValueTransition(layoutTransition, \"layout\"),\n                            onPlay: onLayoutAnimationStart,\n                            onComplete: onLayoutAnimationComplete,\n                        };\n                        if (visualElement.shouldReduceMotion ||\n                            this.options.layoutRoot) {\n                            animationOptions.delay = 0;\n                            animationOptions.type = false;\n                        }\n                        this.startAnimation(animationOptions);\n                    }\n                    else {\n                        /**\n                         * If the layout hasn't changed and we have an animation that hasn't started yet,\n                         * finish it immediately. Otherwise it will be animating from a location\n                         * that was probably never commited to screen and look like a jumpy box.\n                         */\n                        if (!hasLayoutChanged) {\n                            finishAnimation(this);\n                        }\n                        if (this.isLead() && this.options.onExitComplete) {\n                            this.options.onExitComplete();\n                        }\n                    }\n                    this.targetLayout = newLayout;\n                });\n            }\n        }\n        unmount() {\n            this.options.layoutId && this.willUpdate();\n            this.root.nodes.remove(this);\n            const stack = this.getStack();\n            stack && stack.remove(this);\n            this.parent && this.parent.children.delete(this);\n            this.instance = undefined;\n            cancelFrame(this.updateProjection);\n        }\n        // only on the root\n        blockUpdate() {\n            this.updateManuallyBlocked = true;\n        }\n        unblockUpdate() {\n            this.updateManuallyBlocked = false;\n        }\n        isUpdateBlocked() {\n            return this.updateManuallyBlocked || this.updateBlockedByResize;\n        }\n        isTreeAnimationBlocked() {\n            return (this.isAnimationBlocked ||\n                (this.parent && this.parent.isTreeAnimationBlocked()) ||\n                false);\n        }\n        // Note: currently only running on root node\n        startUpdate() {\n            if (this.isUpdateBlocked())\n                return;\n            this.isUpdating = true;\n            this.nodes && this.nodes.forEach(resetSkewAndRotation);\n            this.animationId++;\n        }\n        getTransformTemplate() {\n            const { visualElement } = this.options;\n            return visualElement && visualElement.getProps().transformTemplate;\n        }\n        willUpdate(shouldNotifyListeners = true) {\n            this.root.hasTreeAnimated = true;\n            if (this.root.isUpdateBlocked()) {\n                this.options.onExitComplete && this.options.onExitComplete();\n                return;\n            }\n            /**\n             * If we're running optimised appear animations then these must be\n             * cancelled before measuring the DOM. This is so we can measure\n             * the true layout of the element rather than the WAAPI animation\n             * which will be unaffected by the resetSkewAndRotate step.\n             *\n             * Note: This is a DOM write. Worst case scenario is this is sandwiched\n             * between other snapshot reads which will cause unnecessary style recalculations.\n             * This has to happen here though, as we don't yet know which nodes will need\n             * snapshots in startUpdate(), but we only want to cancel optimised animations\n             * if a layout animation measurement is actually going to be affected by them.\n             */\n            if (window.MotionCancelOptimisedAnimation &&\n                !this.hasCheckedOptimisedAppear) {\n                cancelTreeOptimisedTransformAnimations(this);\n            }\n            !this.root.isUpdating && this.root.startUpdate();\n            if (this.isLayoutDirty)\n                return;\n            this.isLayoutDirty = true;\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                node.shouldResetTransform = true;\n                node.updateScroll(\"snapshot\");\n                if (node.options.layoutRoot) {\n                    node.willUpdate(false);\n                }\n            }\n            const { layoutId, layout } = this.options;\n            if (layoutId === undefined && !layout)\n                return;\n            const transformTemplate = this.getTransformTemplate();\n            this.prevTransformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            this.updateSnapshot();\n            shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n        }\n        update() {\n            this.updateScheduled = false;\n            const updateWasBlocked = this.isUpdateBlocked();\n            // When doing an instant transition, we skip the layout update,\n            // but should still clean up the measurements so that the next\n            // snapshot could be taken correctly.\n            if (updateWasBlocked) {\n                this.unblockUpdate();\n                this.clearAllSnapshots();\n                this.nodes.forEach(clearMeasurements);\n                return;\n            }\n            if (!this.isUpdating) {\n                this.nodes.forEach(clearIsLayoutDirty);\n            }\n            this.isUpdating = false;\n            /**\n             * Write\n             */\n            this.nodes.forEach(resetTransformStyle);\n            /**\n             * Read ==================\n             */\n            // Update layout measurements of updated children\n            this.nodes.forEach(updateLayout);\n            /**\n             * Write\n             */\n            // Notify listeners that the layout is updated\n            this.nodes.forEach(notifyLayoutUpdate);\n            this.clearAllSnapshots();\n            /**\n             * Manually flush any pending updates. Ideally\n             * we could leave this to the following requestAnimationFrame but this seems\n             * to leave a flash of incorrectly styled content.\n             */\n            const now = time.now();\n            frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n            frameData.timestamp = now;\n            frameData.isProcessing = true;\n            frameSteps.update.process(frameData);\n            frameSteps.preRender.process(frameData);\n            frameSteps.render.process(frameData);\n            frameData.isProcessing = false;\n        }\n        didUpdate() {\n            if (!this.updateScheduled) {\n                this.updateScheduled = true;\n                microtask.read(this.scheduleUpdate);\n            }\n        }\n        clearAllSnapshots() {\n            this.nodes.forEach(clearSnapshot);\n            this.sharedNodes.forEach(removeLeadSnapshots);\n        }\n        scheduleUpdateProjection() {\n            if (!this.projectionUpdateScheduled) {\n                this.projectionUpdateScheduled = true;\n                frame.preRender(this.updateProjection, false, true);\n            }\n        }\n        scheduleCheckAfterUnmount() {\n            /**\n             * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n             * we manually call didUpdate to give a chance to the siblings to animate.\n             * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n             */\n            frame.postRender(() => {\n                if (this.isLayoutDirty) {\n                    this.root.didUpdate();\n                }\n                else {\n                    this.root.checkUpdateFailed();\n                }\n            });\n        }\n        /**\n         * Update measurements\n         */\n        updateSnapshot() {\n            if (this.snapshot || !this.instance)\n                return;\n            this.snapshot = this.measure();\n        }\n        updateLayout() {\n            if (!this.instance)\n                return;\n            // TODO: Incorporate into a forwarded scroll offset\n            this.updateScroll();\n            if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n                !this.isLayoutDirty) {\n                return;\n            }\n            /**\n             * When a node is mounted, it simply resumes from the prevLead's\n             * snapshot instead of taking a new one, but the ancestors scroll\n             * might have updated while the prevLead is unmounted. We need to\n             * update the scroll again to make sure the layout we measure is\n             * up to date.\n             */\n            if (this.resumeFrom && !this.resumeFrom.instance) {\n                for (let i = 0; i < this.path.length; i++) {\n                    const node = this.path[i];\n                    node.updateScroll();\n                }\n            }\n            const prevLayout = this.layout;\n            this.layout = this.measure(false);\n            this.layoutCorrected = createBox();\n            this.isLayoutDirty = false;\n            this.projectionDelta = undefined;\n            this.notifyListeners(\"measure\", this.layout.layoutBox);\n            const { visualElement } = this.options;\n            visualElement &&\n                visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n        }\n        updateScroll(phase = \"measure\") {\n            let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n            if (this.scroll &&\n                this.scroll.animationId === this.root.animationId &&\n                this.scroll.phase === phase) {\n                needsMeasurement = false;\n            }\n            if (needsMeasurement) {\n                const isRoot = checkIsScrollRoot(this.instance);\n                this.scroll = {\n                    animationId: this.root.animationId,\n                    phase,\n                    isRoot,\n                    offset: measureScroll(this.instance),\n                    wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n                };\n            }\n        }\n        resetTransform() {\n            if (!resetTransform)\n                return;\n            const isResetRequested = this.isLayoutDirty ||\n                this.shouldResetTransform ||\n                this.options.alwaysMeasureLayout;\n            const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n            const transformTemplate = this.getTransformTemplate();\n            const transformTemplateValue = transformTemplate\n                ? transformTemplate(this.latestValues, \"\")\n                : undefined;\n            const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n            if (isResetRequested &&\n                (hasProjection ||\n                    hasTransform(this.latestValues) ||\n                    transformTemplateHasChanged)) {\n                resetTransform(this.instance, transformTemplateValue);\n                this.shouldResetTransform = false;\n                this.scheduleRender();\n            }\n        }\n        measure(removeTransform = true) {\n            const pageBox = this.measurePageBox();\n            let layoutBox = this.removeElementScroll(pageBox);\n            /**\n             * Measurements taken during the pre-render stage\n             * still have transforms applied so we remove them\n             * via calculation.\n             */\n            if (removeTransform) {\n                layoutBox = this.removeTransform(layoutBox);\n            }\n            roundBox(layoutBox);\n            return {\n                animationId: this.root.animationId,\n                measuredBox: pageBox,\n                layoutBox,\n                latestValues: {},\n                source: this.id,\n            };\n        }\n        measurePageBox() {\n            var _a;\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return createBox();\n            const box = visualElement.measureViewportBox();\n            const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n            if (!wasInScrollRoot) {\n                // Remove viewport scroll to give page-relative coordinates\n                const { scroll } = this.root;\n                if (scroll) {\n                    translateAxis(box.x, scroll.offset.x);\n                    translateAxis(box.y, scroll.offset.y);\n                }\n            }\n            return box;\n        }\n        removeElementScroll(box) {\n            var _a;\n            const boxWithoutScroll = createBox();\n            copyBoxInto(boxWithoutScroll, box);\n            if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n                return boxWithoutScroll;\n            }\n            /**\n             * Performance TODO: Keep a cumulative scroll offset down the tree\n             * rather than loop back up the path.\n             */\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                const { scroll, options } = node;\n                if (node !== this.root && scroll && options.layoutScroll) {\n                    /**\n                     * If this is a new scroll root, we want to remove all previous scrolls\n                     * from the viewport box.\n                     */\n                    if (scroll.wasRoot) {\n                        copyBoxInto(boxWithoutScroll, box);\n                    }\n                    translateAxis(boxWithoutScroll.x, scroll.offset.x);\n                    translateAxis(boxWithoutScroll.y, scroll.offset.y);\n                }\n            }\n            return boxWithoutScroll;\n        }\n        applyTransform(box, transformOnly = false) {\n            const withTransforms = createBox();\n            copyBoxInto(withTransforms, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!transformOnly &&\n                    node.options.layoutScroll &&\n                    node.scroll &&\n                    node !== node.root) {\n                    transformBox(withTransforms, {\n                        x: -node.scroll.offset.x,\n                        y: -node.scroll.offset.y,\n                    });\n                }\n                if (!hasTransform(node.latestValues))\n                    continue;\n                transformBox(withTransforms, node.latestValues);\n            }\n            if (hasTransform(this.latestValues)) {\n                transformBox(withTransforms, this.latestValues);\n            }\n            return withTransforms;\n        }\n        removeTransform(box) {\n            const boxWithoutTransform = createBox();\n            copyBoxInto(boxWithoutTransform, box);\n            for (let i = 0; i < this.path.length; i++) {\n                const node = this.path[i];\n                if (!node.instance)\n                    continue;\n                if (!hasTransform(node.latestValues))\n                    continue;\n                hasScale(node.latestValues) && node.updateSnapshot();\n                const sourceBox = createBox();\n                const nodeBox = node.measurePageBox();\n                copyBoxInto(sourceBox, nodeBox);\n                removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n            }\n            if (hasTransform(this.latestValues)) {\n                removeBoxTransforms(boxWithoutTransform, this.latestValues);\n            }\n            return boxWithoutTransform;\n        }\n        setTargetDelta(delta) {\n            this.targetDelta = delta;\n            this.root.scheduleUpdateProjection();\n            this.isProjectionDirty = true;\n        }\n        setOptions(options) {\n            this.options = {\n                ...this.options,\n                ...options,\n                crossfade: options.crossfade !== undefined ? options.crossfade : true,\n            };\n        }\n        clearMeasurements() {\n            this.scroll = undefined;\n            this.layout = undefined;\n            this.snapshot = undefined;\n            this.prevTransformTemplateValue = undefined;\n            this.targetDelta = undefined;\n            this.target = undefined;\n            this.isLayoutDirty = false;\n        }\n        forceRelativeParentToResolveTarget() {\n            if (!this.relativeParent)\n                return;\n            /**\n             * If the parent target isn't up-to-date, force it to update.\n             * This is an unfortunate de-optimisation as it means any updating relative\n             * projection will cause all the relative parents to recalculate back\n             * up the tree.\n             */\n            if (this.relativeParent.resolvedRelativeTargetAt !==\n                frameData.timestamp) {\n                this.relativeParent.resolveTargetDelta(true);\n            }\n        }\n        resolveTargetDelta(forceRecalculation = false) {\n            var _a;\n            /**\n             * Once the dirty status of nodes has been spread through the tree, we also\n             * need to check if we have a shared node of a different depth that has itself\n             * been dirtied.\n             */\n            const lead = this.getLead();\n            this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n            this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n            this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            /**\n             * We don't use transform for this step of processing so we don't\n             * need to check whether any nodes have changed transform.\n             */\n            const canSkip = !(forceRecalculation ||\n                (isShared && this.isSharedProjectionDirty) ||\n                this.isProjectionDirty ||\n                ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n                this.attemptToResolveRelativeTarget ||\n                this.root.updateBlockedByResize);\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If we have no layout, we can't perform projection, so early return\n             */\n            if (!this.layout || !(layout || layoutId))\n                return;\n            this.resolvedRelativeTargetAt = frameData.timestamp;\n            /**\n             * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n             * a relativeParent. This will allow a component to perform scale correction\n             * even if no animation has started.\n             */\n            if (!this.targetDelta && !this.relativeTarget) {\n                const relativeParent = this.getClosestProjectingParent();\n                if (relativeParent &&\n                    relativeParent.layout &&\n                    this.animationProgress !== 1) {\n                    this.relativeParent = relativeParent;\n                    this.forceRelativeParentToResolveTarget();\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n                else {\n                    this.relativeParent = this.relativeTarget = undefined;\n                }\n            }\n            /**\n             * If we have no relative target or no target delta our target isn't valid\n             * for this frame.\n             */\n            if (!this.relativeTarget && !this.targetDelta)\n                return;\n            /**\n             * Lazy-init target data structure\n             */\n            if (!this.target) {\n                this.target = createBox();\n                this.targetWithTransforms = createBox();\n            }\n            /**\n             * If we've got a relative box for this component, resolve it into a target relative to the parent.\n             */\n            if (this.relativeTarget &&\n                this.relativeTargetOrigin &&\n                this.relativeParent &&\n                this.relativeParent.target) {\n                this.forceRelativeParentToResolveTarget();\n                calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n                /**\n                 * If we've only got a targetDelta, resolve it into a target\n                 */\n            }\n            else if (this.targetDelta) {\n                if (Boolean(this.resumingFrom)) {\n                    // TODO: This is creating a new object every frame\n                    this.target = this.applyTransform(this.layout.layoutBox);\n                }\n                else {\n                    copyBoxInto(this.target, this.layout.layoutBox);\n                }\n                applyBoxDelta(this.target, this.targetDelta);\n            }\n            else {\n                /**\n                 * If no target, use own layout as target\n                 */\n                copyBoxInto(this.target, this.layout.layoutBox);\n            }\n            /**\n             * If we've been told to attempt to resolve a relative target, do so.\n             */\n            if (this.attemptToResolveRelativeTarget) {\n                this.attemptToResolveRelativeTarget = false;\n                const relativeParent = this.getClosestProjectingParent();\n                if (relativeParent &&\n                    Boolean(relativeParent.resumingFrom) ===\n                        Boolean(this.resumingFrom) &&\n                    !relativeParent.options.layoutScroll &&\n                    relativeParent.target &&\n                    this.animationProgress !== 1) {\n                    this.relativeParent = relativeParent;\n                    this.forceRelativeParentToResolveTarget();\n                    this.relativeTarget = createBox();\n                    this.relativeTargetOrigin = createBox();\n                    calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n                    copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n                }\n                else {\n                    this.relativeParent = this.relativeTarget = undefined;\n                }\n            }\n            /**\n             * Increase debug counter for resolved target deltas\n             */\n            if (isDebug) {\n                metrics.resolvedTargetDeltas++;\n            }\n        }\n        getClosestProjectingParent() {\n            if (!this.parent ||\n                hasScale(this.parent.latestValues) ||\n                has2DTranslate(this.parent.latestValues)) {\n                return undefined;\n            }\n            if (this.parent.isProjecting()) {\n                return this.parent;\n            }\n            else {\n                return this.parent.getClosestProjectingParent();\n            }\n        }\n        isProjecting() {\n            return Boolean((this.relativeTarget ||\n                this.targetDelta ||\n                this.options.layoutRoot) &&\n                this.layout);\n        }\n        calcProjection() {\n            var _a;\n            const lead = this.getLead();\n            const isShared = Boolean(this.resumingFrom) || this !== lead;\n            let canSkip = true;\n            /**\n             * If this is a normal layout animation and neither this node nor its nearest projecting\n             * is dirty then we can't skip.\n             */\n            if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n                canSkip = false;\n            }\n            /**\n             * If this is a shared layout animation and this node's shared projection is dirty then\n             * we can't skip.\n             */\n            if (isShared &&\n                (this.isSharedProjectionDirty || this.isTransformDirty)) {\n                canSkip = false;\n            }\n            /**\n             * If we have resolved the target this frame we must recalculate the\n             * projection to ensure it visually represents the internal calculations.\n             */\n            if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n                canSkip = false;\n            }\n            if (canSkip)\n                return;\n            const { layout, layoutId } = this.options;\n            /**\n             * If this section of the tree isn't animating we can\n             * delete our target sources for the following frame.\n             */\n            this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n                this.currentAnimation ||\n                this.pendingAnimation);\n            if (!this.isTreeAnimating) {\n                this.targetDelta = this.relativeTarget = undefined;\n            }\n            if (!this.layout || !(layout || layoutId))\n                return;\n            /**\n             * Reset the corrected box with the latest values from box, as we're then going\n             * to perform mutative operations on it.\n             */\n            copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n            /**\n             * Record previous tree scales before updating.\n             */\n            const prevTreeScaleX = this.treeScale.x;\n            const prevTreeScaleY = this.treeScale.y;\n            /**\n             * Apply all the parent deltas to this box to produce the corrected box. This\n             * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n             */\n            applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n            /**\n             * If this layer needs to perform scale correction but doesn't have a target,\n             * use the layout as the target.\n             */\n            if (lead.layout &&\n                !lead.target &&\n                (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n                lead.target = lead.layout.layoutBox;\n                lead.targetWithTransforms = createBox();\n            }\n            const { target } = lead;\n            if (!target) {\n                /**\n                 * If we don't have a target to project into, but we were previously\n                 * projecting, we want to remove the stored transform and schedule\n                 * a render to ensure the elements reflect the removed transform.\n                 */\n                if (this.prevProjectionDelta) {\n                    this.createProjectionDeltas();\n                    this.scheduleRender();\n                }\n                return;\n            }\n            if (!this.projectionDelta || !this.prevProjectionDelta) {\n                this.createProjectionDeltas();\n            }\n            else {\n                copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n                copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n            }\n            /**\n             * Update the delta between the corrected box and the target box before user-set transforms were applied.\n             * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n             * for our layout reprojection, but still allow them to be scaled correctly by the user.\n             * It might be that to simplify this we may want to accept that user-set scale is also corrected\n             * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n             * to allow people to choose whether these styles are corrected based on just the\n             * layout reprojection or the final bounding box.\n             */\n            calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n            if (this.treeScale.x !== prevTreeScaleX ||\n                this.treeScale.y !== prevTreeScaleY ||\n                !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n                !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n                this.hasProjected = true;\n                this.scheduleRender();\n                this.notifyListeners(\"projectionUpdate\", target);\n            }\n            /**\n             * Increase debug counter for recalculated projections\n             */\n            if (isDebug) {\n                metrics.recalculatedProjection++;\n            }\n        }\n        hide() {\n            this.isVisible = false;\n            // TODO: Schedule render\n        }\n        show() {\n            this.isVisible = true;\n            // TODO: Schedule render\n        }\n        scheduleRender(notifyAll = true) {\n            var _a;\n            (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n            if (notifyAll) {\n                const stack = this.getStack();\n                stack && stack.scheduleRender();\n            }\n            if (this.resumingFrom && !this.resumingFrom.instance) {\n                this.resumingFrom = undefined;\n            }\n        }\n        createProjectionDeltas() {\n            this.prevProjectionDelta = createDelta();\n            this.projectionDelta = createDelta();\n            this.projectionDeltaWithTransform = createDelta();\n        }\n        setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n            const snapshot = this.snapshot;\n            const snapshotLatestValues = snapshot\n                ? snapshot.latestValues\n                : {};\n            const mixedValues = { ...this.latestValues };\n            const targetDelta = createDelta();\n            if (!this.relativeParent ||\n                !this.relativeParent.options.layoutRoot) {\n                this.relativeTarget = this.relativeTargetOrigin = undefined;\n            }\n            this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n            const relativeLayout = createBox();\n            const snapshotSource = snapshot ? snapshot.source : undefined;\n            const layoutSource = this.layout ? this.layout.source : undefined;\n            const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n            const stack = this.getStack();\n            const isOnlyMember = !stack || stack.members.length <= 1;\n            const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n                !isOnlyMember &&\n                this.options.crossfade === true &&\n                !this.path.some(hasOpacityCrossfade));\n            this.animationProgress = 0;\n            let prevRelativeTarget;\n            this.mixTargetDelta = (latest) => {\n                const progress = latest / 1000;\n                mixAxisDelta(targetDelta.x, delta.x, progress);\n                mixAxisDelta(targetDelta.y, delta.y, progress);\n                this.setTargetDelta(targetDelta);\n                if (this.relativeTarget &&\n                    this.relativeTargetOrigin &&\n                    this.layout &&\n                    this.relativeParent &&\n                    this.relativeParent.layout) {\n                    calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n                    mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n                    /**\n                     * If this is an unchanged relative target we can consider the\n                     * projection not dirty.\n                     */\n                    if (prevRelativeTarget &&\n                        boxEquals(this.relativeTarget, prevRelativeTarget)) {\n                        this.isProjectionDirty = false;\n                    }\n                    if (!prevRelativeTarget)\n                        prevRelativeTarget = createBox();\n                    copyBoxInto(prevRelativeTarget, this.relativeTarget);\n                }\n                if (isSharedLayoutAnimation) {\n                    this.animationValues = mixedValues;\n                    mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n                }\n                this.root.scheduleUpdateProjection();\n                this.scheduleRender();\n                this.animationProgress = progress;\n            };\n            this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n        }\n        startAnimation(options) {\n            this.notifyListeners(\"animationStart\");\n            this.currentAnimation && this.currentAnimation.stop();\n            if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n                this.resumingFrom.currentAnimation.stop();\n            }\n            if (this.pendingAnimation) {\n                cancelFrame(this.pendingAnimation);\n                this.pendingAnimation = undefined;\n            }\n            /**\n             * Start the animation in the next frame to have a frame with progress 0,\n             * where the target is the same as when the animation started, so we can\n             * calculate the relative positions correctly for instant transitions.\n             */\n            this.pendingAnimation = frame.update(() => {\n                globalProjectionState.hasAnimatedSinceResize = true;\n                this.currentAnimation = animateSingleValue(0, animationTarget, {\n                    ...options,\n                    onUpdate: (latest) => {\n                        this.mixTargetDelta(latest);\n                        options.onUpdate && options.onUpdate(latest);\n                    },\n                    onComplete: () => {\n                        options.onComplete && options.onComplete();\n                        this.completeAnimation();\n                    },\n                });\n                if (this.resumingFrom) {\n                    this.resumingFrom.currentAnimation = this.currentAnimation;\n                }\n                this.pendingAnimation = undefined;\n            });\n        }\n        completeAnimation() {\n            if (this.resumingFrom) {\n                this.resumingFrom.currentAnimation = undefined;\n                this.resumingFrom.preserveOpacity = undefined;\n            }\n            const stack = this.getStack();\n            stack && stack.exitAnimationComplete();\n            this.resumingFrom =\n                this.currentAnimation =\n                    this.animationValues =\n                        undefined;\n            this.notifyListeners(\"animationComplete\");\n        }\n        finishAnimation() {\n            if (this.currentAnimation) {\n                this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n                this.currentAnimation.stop();\n            }\n            this.completeAnimation();\n        }\n        applyTransformsToTarget() {\n            const lead = this.getLead();\n            let { targetWithTransforms, target, layout, latestValues } = lead;\n            if (!targetWithTransforms || !target || !layout)\n                return;\n            /**\n             * If we're only animating position, and this element isn't the lead element,\n             * then instead of projecting into the lead box we instead want to calculate\n             * a new target that aligns the two boxes but maintains the layout shape.\n             */\n            if (this !== lead &&\n                this.layout &&\n                layout &&\n                shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n                target = this.target || createBox();\n                const xLength = calcLength(this.layout.layoutBox.x);\n                target.x.min = lead.target.x.min;\n                target.x.max = target.x.min + xLength;\n                const yLength = calcLength(this.layout.layoutBox.y);\n                target.y.min = lead.target.y.min;\n                target.y.max = target.y.min + yLength;\n            }\n            copyBoxInto(targetWithTransforms, target);\n            /**\n             * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n             * This is the final box that we will then project into by calculating a transform delta and\n             * applying it to the corrected box.\n             */\n            transformBox(targetWithTransforms, latestValues);\n            /**\n             * Update the delta between the corrected box and the final target box, after\n             * user-set transforms are applied to it. This will be used by the renderer to\n             * create a transform style that will reproject the element from its layout layout\n             * into the desired bounding box.\n             */\n            calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n        }\n        registerSharedNode(layoutId, node) {\n            if (!this.sharedNodes.has(layoutId)) {\n                this.sharedNodes.set(layoutId, new NodeStack());\n            }\n            const stack = this.sharedNodes.get(layoutId);\n            stack.add(node);\n            const config = node.options.initialPromotionConfig;\n            node.promote({\n                transition: config ? config.transition : undefined,\n                preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n                    ? config.shouldPreserveFollowOpacity(node)\n                    : undefined,\n            });\n        }\n        isLead() {\n            const stack = this.getStack();\n            return stack ? stack.lead === this : true;\n        }\n        getLead() {\n            var _a;\n            const { layoutId } = this.options;\n            return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n        }\n        getPrevLead() {\n            var _a;\n            const { layoutId } = this.options;\n            return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n        }\n        getStack() {\n            const { layoutId } = this.options;\n            if (layoutId)\n                return this.root.sharedNodes.get(layoutId);\n        }\n        promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n            const stack = this.getStack();\n            if (stack)\n                stack.promote(this, preserveFollowOpacity);\n            if (needsReset) {\n                this.projectionDelta = undefined;\n                this.needsReset = true;\n            }\n            if (transition)\n                this.setOptions({ transition });\n        }\n        relegate() {\n            const stack = this.getStack();\n            if (stack) {\n                return stack.relegate(this);\n            }\n            else {\n                return false;\n            }\n        }\n        resetSkewAndRotation() {\n            const { visualElement } = this.options;\n            if (!visualElement)\n                return;\n            // If there's no detected skew or rotation values, we can early return without a forced render.\n            let hasDistortingTransform = false;\n            /**\n             * An unrolled check for rotation values. Most elements don't have any rotation and\n             * skipping the nested loop and new object creation is 50% faster.\n             */\n            const { latestValues } = visualElement;\n            if (latestValues.z ||\n                latestValues.rotate ||\n                latestValues.rotateX ||\n                latestValues.rotateY ||\n                latestValues.rotateZ ||\n                latestValues.skewX ||\n                latestValues.skewY) {\n                hasDistortingTransform = true;\n            }\n            // If there's no distorting values, we don't need to do any more.\n            if (!hasDistortingTransform)\n                return;\n            const resetValues = {};\n            if (latestValues.z) {\n                resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n            }\n            // Check the skew and rotate value of all axes and reset to 0\n            for (let i = 0; i < transformAxes.length; i++) {\n                resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n                resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n            }\n            // Force a render of this element to apply the transform with all skews and rotations\n            // set to 0.\n            visualElement.render();\n            // Put back all the values we reset\n            for (const key in resetValues) {\n                visualElement.setStaticValue(key, resetValues[key]);\n                if (this.animationValues) {\n                    this.animationValues[key] = resetValues[key];\n                }\n            }\n            // Schedule a render for the next frame. This ensures we won't visually\n            // see the element with the reset rotate value applied.\n            visualElement.scheduleRender();\n        }\n        getProjectionStyles(styleProp) {\n            var _a, _b;\n            if (!this.instance || this.isSVG)\n                return undefined;\n            if (!this.isVisible) {\n                return hiddenVisibility;\n            }\n            const styles = {\n                visibility: \"\",\n            };\n            const transformTemplate = this.getTransformTemplate();\n            if (this.needsReset) {\n                this.needsReset = false;\n                styles.opacity = \"\";\n                styles.pointerEvents =\n                    resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n                styles.transform = transformTemplate\n                    ? transformTemplate(this.latestValues, \"\")\n                    : \"none\";\n                return styles;\n            }\n            const lead = this.getLead();\n            if (!this.projectionDelta || !this.layout || !lead.target) {\n                const emptyStyles = {};\n                if (this.options.layoutId) {\n                    emptyStyles.opacity =\n                        this.latestValues.opacity !== undefined\n                            ? this.latestValues.opacity\n                            : 1;\n                    emptyStyles.pointerEvents =\n                        resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n                }\n                if (this.hasProjected && !hasTransform(this.latestValues)) {\n                    emptyStyles.transform = transformTemplate\n                        ? transformTemplate({}, \"\")\n                        : \"none\";\n                    this.hasProjected = false;\n                }\n                return emptyStyles;\n            }\n            const valuesToRender = lead.animationValues || lead.latestValues;\n            this.applyTransformsToTarget();\n            styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n            if (transformTemplate) {\n                styles.transform = transformTemplate(valuesToRender, styles.transform);\n            }\n            const { x, y } = this.projectionDelta;\n            styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n            if (lead.animationValues) {\n                /**\n                 * If the lead component is animating, assign this either the entering/leaving\n                 * opacity\n                 */\n                styles.opacity =\n                    lead === this\n                        ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n                        : this.preserveOpacity\n                            ? this.latestValues.opacity\n                            : valuesToRender.opacityExit;\n            }\n            else {\n                /**\n                 * Or we're not animating at all, set the lead component to its layout\n                 * opacity and other components to hidden.\n                 */\n                styles.opacity =\n                    lead === this\n                        ? valuesToRender.opacity !== undefined\n                            ? valuesToRender.opacity\n                            : \"\"\n                        : valuesToRender.opacityExit !== undefined\n                            ? valuesToRender.opacityExit\n                            : 0;\n            }\n            /**\n             * Apply scale correction\n             */\n            for (const key in scaleCorrectors) {\n                if (valuesToRender[key] === undefined)\n                    continue;\n                const { correct, applyTo } = scaleCorrectors[key];\n                /**\n                 * Only apply scale correction to the value if we have an\n                 * active projection transform. Otherwise these values become\n                 * vulnerable to distortion if the element changes size without\n                 * a corresponding layout animation.\n                 */\n                const corrected = styles.transform === \"none\"\n                    ? valuesToRender[key]\n                    : correct(valuesToRender[key], lead);\n                if (applyTo) {\n                    const num = applyTo.length;\n                    for (let i = 0; i < num; i++) {\n                        styles[applyTo[i]] = corrected;\n                    }\n                }\n                else {\n                    styles[key] = corrected;\n                }\n            }\n            /**\n             * Disable pointer events on follow components. This is to ensure\n             * that if a follow component covers a lead component it doesn't block\n             * pointer events on the lead.\n             */\n            if (this.options.layoutId) {\n                styles.pointerEvents =\n                    lead === this\n                        ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n                        : \"none\";\n            }\n            return styles;\n        }\n        clearSnapshot() {\n            this.resumeFrom = this.snapshot = undefined;\n        }\n        // Only run on root\n        resetTree() {\n            this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n            this.root.nodes.forEach(clearMeasurements);\n            this.root.sharedNodes.clear();\n        }\n    };\n}\nfunction updateLayout(node) {\n    node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n    var _a;\n    const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n    if (node.isLead() &&\n        node.layout &&\n        snapshot &&\n        node.hasListeners(\"didUpdate\")) {\n        const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n        const { animationType } = node.options;\n        const isShared = snapshot.source !== node.layout.source;\n        // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n        // animations for instance if layout=\"size\" and an element has only changed position\n        if (animationType === \"size\") {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(axisSnapshot);\n                axisSnapshot.min = layout[axis].min;\n                axisSnapshot.max = axisSnapshot.min + length;\n            });\n        }\n        else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n            eachAxis((axis) => {\n                const axisSnapshot = isShared\n                    ? snapshot.measuredBox[axis]\n                    : snapshot.layoutBox[axis];\n                const length = calcLength(layout[axis]);\n                axisSnapshot.max = axisSnapshot.min + length;\n                /**\n                 * Ensure relative target gets resized and rerendererd\n                 */\n                if (node.relativeTarget && !node.currentAnimation) {\n                    node.isProjectionDirty = true;\n                    node.relativeTarget[axis].max =\n                        node.relativeTarget[axis].min + length;\n                }\n            });\n        }\n        const layoutDelta = createDelta();\n        calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n        const visualDelta = createDelta();\n        if (isShared) {\n            calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n        }\n        else {\n            calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n        }\n        const hasLayoutChanged = !isDeltaZero(layoutDelta);\n        let hasRelativeTargetChanged = false;\n        if (!node.resumeFrom) {\n            const relativeParent = node.getClosestProjectingParent();\n            /**\n             * If the relativeParent is itself resuming from a different element then\n             * the relative snapshot is not relavent\n             */\n            if (relativeParent && !relativeParent.resumeFrom) {\n                const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n                if (parentSnapshot && parentLayout) {\n                    const relativeSnapshot = createBox();\n                    calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n                    const relativeLayout = createBox();\n                    calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n                    if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n                        hasRelativeTargetChanged = true;\n                    }\n                    if (relativeParent.options.layoutRoot) {\n                        node.relativeTarget = relativeLayout;\n                        node.relativeTargetOrigin = relativeSnapshot;\n                        node.relativeParent = relativeParent;\n                    }\n                }\n            }\n        }\n        node.notifyListeners(\"didUpdate\", {\n            layout,\n            snapshot,\n            delta: visualDelta,\n            layoutDelta,\n            hasLayoutChanged,\n            hasRelativeTargetChanged,\n        });\n    }\n    else if (node.isLead()) {\n        const { onExitComplete } = node.options;\n        onExitComplete && onExitComplete();\n    }\n    /**\n     * Clearing transition\n     * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n     * and why we need it at all\n     */\n    node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n    /**\n     * Increase debug counter for nodes encountered this frame\n     */\n    if (isDebug) {\n        metrics.totalNodes++;\n    }\n    if (!node.parent)\n        return;\n    /**\n     * If this node isn't projecting, propagate isProjectionDirty. It will have\n     * no performance impact but it will allow the next child that *is* projecting\n     * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n     * correcting.\n     */\n    if (!node.isProjecting()) {\n        node.isProjectionDirty = node.parent.isProjectionDirty;\n    }\n    /**\n     * Propagate isSharedProjectionDirty and isTransformDirty\n     * throughout the whole tree. A future revision can take another look at\n     * this but for safety we still recalcualte shared nodes.\n     */\n    node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n        node.parent.isProjectionDirty ||\n        node.parent.isSharedProjectionDirty));\n    node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n    node.isProjectionDirty =\n        node.isSharedProjectionDirty =\n            node.isTransformDirty =\n                false;\n}\nfunction clearSnapshot(node) {\n    node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n    node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n    node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n        visualElement.notify(\"BeforeLayoutMeasure\");\n    }\n    node.resetTransform();\n}\nfunction finishAnimation(node) {\n    node.finishAnimation();\n    node.targetDelta = node.relativeTarget = node.target = undefined;\n    node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n    node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n    node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n    node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n    stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n    output.translate = mixNumber(delta.translate, 0, p);\n    output.scale = mixNumber(delta.scale, 1, p);\n    output.origin = delta.origin;\n    output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n    output.min = mixNumber(from.min, to.min, p);\n    output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n    mixAxis(output.x, from.x, to.x, p);\n    mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n    return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n    duration: 0.45,\n    ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n    navigator.userAgent &&\n    navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n    ? Math.round\n    : noop;\nfunction roundAxis(axis) {\n    // Round to the nearest .5 pixels to support subpixel layouts\n    axis.min = roundPoint(axis.min);\n    axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n    roundAxis(box.x);\n    roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n    return (animationType === \"position\" ||\n        (animationType === \"preserve-aspect\" &&\n            !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n    var _a;\n    return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n    attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n    measureScroll: () => ({\n        x: document.documentElement.scrollLeft || document.body.scrollLeft,\n        y: document.documentElement.scrollTop || document.body.scrollTop,\n    }),\n    checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n    current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n    measureScroll: (instance) => ({\n        x: instance.scrollLeft,\n        y: instance.scrollTop,\n    }),\n    defaultParent: () => {\n        if (!rootProjectionNode.current) {\n            const documentNode = new DocumentProjectionNode({});\n            documentNode.mount(window);\n            documentNode.setOptions({ layoutScroll: true });\n            rootProjectionNode.current = documentNode;\n        }\n        return rootProjectionNode.current;\n    },\n    resetTransform: (instance, value) => {\n        instance.style.transform = value !== undefined ? value : \"none\";\n    },\n    checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n    pan: {\n        Feature: PanGesture,\n    },\n    drag: {\n        Feature: DragGesture,\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { drag };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n    const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n    const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n    const handleEvent = (event, info) => {\n        if (event.pointerType === \"touch\" || isDragActive())\n            return;\n        const props = node.getProps();\n        if (node.animationState && props.whileHover) {\n            node.animationState.setActive(\"whileHover\", isActive);\n        }\n        const callback = props[callbackName];\n        if (callback) {\n            frame.postRender(() => callback(event, info));\n        }\n    };\n    return addPointerEvent(node.current, eventName, handleEvent, {\n        passive: !node.getProps()[callbackName],\n    });\n}\nclass HoverGesture extends Feature {\n    mount() {\n        this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n    }\n    unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.isActive = false;\n    }\n    onFocus() {\n        let isFocusVisible = false;\n        /**\n         * If this element doesn't match focus-visible then don't\n         * apply whileHover. But, if matches throws that focus-visible\n         * is not a valid selector then in that browser outline styles will be applied\n         * to the element by default and we want to match that behaviour with whileFocus.\n         */\n        try {\n            isFocusVisible = this.node.current.matches(\":focus-visible\");\n        }\n        catch (e) {\n            isFocusVisible = true;\n        }\n        if (!isFocusVisible || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", true);\n        this.isActive = true;\n    }\n    onBlur() {\n        if (!this.isActive || !this.node.animationState)\n            return;\n        this.node.animationState.setActive(\"whileFocus\", false);\n        this.isActive = false;\n    }\n    mount() {\n        this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n    }\n    unmount() { }\n}\n\nexport { FocusGesture };\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","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n    if (!handler)\n        return;\n    const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n    handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n    constructor() {\n        super(...arguments);\n        this.removeStartListeners = noop;\n        this.removeEndListeners = noop;\n        this.removeAccessibleListeners = noop;\n        this.startPointerPress = (startEvent, startInfo) => {\n            if (this.isPressing)\n                return;\n            this.removeEndListeners();\n            const props = this.node.getProps();\n            const endPointerPress = (endEvent, endInfo) => {\n                if (!this.checkPressEnd())\n                    return;\n                const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\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                const handler = !globalTapTarget &&\n                    !isNodeOrChild(this.node.current, endEvent.target)\n                    ? onTapCancel\n                    : onTap;\n                if (handler) {\n                    frame.update(() => handler(endEvent, endInfo));\n                }\n            };\n            const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n                passive: !(props.onTap || props[\"onPointerUp\"]),\n            });\n            const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n                passive: !(props.onTapCancel ||\n                    props[\"onPointerCancel\"]),\n            });\n            this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n            this.startPress(startEvent, startInfo);\n        };\n        this.startAccessiblePress = () => {\n            const handleKeydown = (keydownEvent) => {\n                if (keydownEvent.key !== \"Enter\" || this.isPressing)\n                    return;\n                const handleKeyup = (keyupEvent) => {\n                    if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n                        return;\n                    fireSyntheticPointerEvent(\"up\", (event, info) => {\n                        const { onTap } = this.node.getProps();\n                        if (onTap) {\n                            frame.postRender(() => onTap(event, info));\n                        }\n                    });\n                };\n                this.removeEndListeners();\n                this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n                fireSyntheticPointerEvent(\"down\", (event, info) => {\n                    this.startPress(event, info);\n                });\n            };\n            const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n            const handleBlur = () => {\n                if (!this.isPressing)\n                    return;\n                fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n            };\n            const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n            this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n        };\n    }\n    startPress(event, info) {\n        this.isPressing = true;\n        const { onTapStart, whileTap } = this.node.getProps();\n        /**\n         * Ensure we trigger animations before firing event callback\n         */\n        if (whileTap && this.node.animationState) {\n            this.node.animationState.setActive(\"whileTap\", true);\n        }\n        if (onTapStart) {\n            frame.postRender(() => onTapStart(event, info));\n        }\n    }\n    checkPressEnd() {\n        this.removeEndListeners();\n        this.isPressing = false;\n        const props = this.node.getProps();\n        if (props.whileTap && this.node.animationState) {\n            this.node.animationState.setActive(\"whileTap\", false);\n        }\n        return !isDragActive();\n    }\n    cancelPress(event, info) {\n        if (!this.checkPressEnd())\n            return;\n        const { onTapCancel } = this.node.getProps();\n        if (onTapCancel) {\n            frame.postRender(() => onTapCancel(event, info));\n        }\n    }\n    mount() {\n        const props = this.node.getProps();\n        const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n            passive: !(props.onTapStart ||\n                props[\"onPointerStart\"]),\n        });\n        const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n        this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n    }\n    unmount() {\n        this.removeStartListeners();\n        this.removeEndListeners();\n        this.removeAccessibleListeners();\n    }\n}\n\nexport { PressGesture };\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 { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n    some: 0,\n    all: 1,\n};\nclass InViewFeature extends Feature {\n    constructor() {\n        super(...arguments);\n        this.hasEnteredView = false;\n        this.isInView = false;\n    }\n    startObserver() {\n        this.unmount();\n        const { viewport = {} } = this.node.getProps();\n        const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n        const options = {\n            root: root ? root.current : undefined,\n            rootMargin,\n            threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n        };\n        const onIntersectionUpdate = (entry) => {\n            const { isIntersecting } = entry;\n            /**\n             * If there's been no change in the viewport state, early return.\n             */\n            if (this.isInView === isIntersecting)\n                return;\n            this.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 && this.hasEnteredView) {\n                return;\n            }\n            else if (isIntersecting) {\n                this.hasEnteredView = true;\n            }\n            if (this.node.animationState) {\n                this.node.animationState.setActive(\"whileInView\", isIntersecting);\n            }\n            /**\n             * Use the latest committed props rather than the ones in scope\n             * when this observer is created\n             */\n            const { onViewportEnter, onViewportLeave } = this.node.getProps();\n            const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n            callback && callback(entry);\n        };\n        return observeIntersection(this.node.current, options, onIntersectionUpdate);\n    }\n    mount() {\n        this.startObserver();\n    }\n    update() {\n        if (typeof IntersectionObserver === \"undefined\")\n            return;\n        const { props, prevProps } = this.node;\n        const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n        if (hasOptionsChanged) {\n            this.startObserver();\n        }\n    }\n    unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n    return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n    inView: {\n        Feature: InViewFeature,\n    },\n    tap: {\n        Feature: PressGesture,\n    },\n    focus: {\n        Feature: FocusGesture,\n    },\n    hover: {\n        Feature: HoverGesture,\n    },\n};\n\nexport { gestureAnimations };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n    layout: {\n        ProjectionNode: HTMLProjectionNode,\n        MeasureLayout,\n    },\n};\n\nexport { layout };\n","\"use client\";\nimport { 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","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } 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';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n    var _a, _b;\n    const { visualElement: parent } = useContext(MotionContext);\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            presenceContext,\n            blockInitialAnimation: presenceContext\n                ? presenceContext.initial === false\n                : false,\n            reducedMotionConfig,\n        });\n    }\n    const visualElement = visualElementRef.current;\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 initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n    if (visualElement &&\n        !visualElement.projection &&\n        ProjectionNodeConstructor &&\n        (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n        createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n    }\n    const isMounted = useRef(false);\n    useInsertionEffect(() => {\n        /**\n         * Check the component has already mounted before calling\n         * `update` unnecessarily. This ensures we skip the initial update.\n         */\n        if (visualElement && isMounted.current) {\n            visualElement.update(props, presenceContext);\n        }\n    });\n    /**\n     * Cache this value as we want to know whether HandoffAppearAnimations\n     * was present on initial render - it will be deleted after this.\n     */\n    const optimisedAppearId = props[optimizedAppearDataAttribute];\n    const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n        !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) &&\n        ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));\n    useIsomorphicLayoutEffect(() => {\n        if (!visualElement)\n            return;\n        isMounted.current = true;\n        window.MotionIsMounted = true;\n        visualElement.updateFeatures();\n        microtask.render(visualElement.render);\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        if (wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n    });\n    useEffect(() => {\n        if (!visualElement)\n            return;\n        if (!wantsHandoff.current && visualElement.animationState) {\n            visualElement.animationState.animateChanges();\n        }\n        if (wantsHandoff.current) {\n            // This ensures all future calls to animateChanges() in this component will run in useEffect\n            queueMicrotask(() => {\n                var _a;\n                (_a = window.MotionHandoffMarkAsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId);\n            });\n            wantsHandoff.current = false;\n        }\n    });\n    return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n    const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n    visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n        ? undefined\n        : getClosestProjectingNode(visualElement.parent));\n    visualElement.projection.setOptions({\n        layoutId,\n        layout,\n        alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n        visualElement,\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,\n        layoutScroll,\n        layoutRoot,\n    });\n}\nfunction getClosestProjectingNode(visualElement) {\n    if (!visualElement)\n        return undefined;\n    return visualElement.options.allowProjection !== false\n        ? visualElement.projection\n        : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\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            if (instance) {\n                visualElement.mount(instance);\n            }\n            else {\n                visualElement.unmount();\n            }\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","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\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 featureProps = {\n    animation: [\n        \"animate\",\n        \"variants\",\n        \"whileHover\",\n        \"whileTap\",\n        \"exit\",\n        \"whileInView\",\n        \"whileFocus\",\n        \"whileDrag\",\n    ],\n    exit: [\"exit\"],\n    drag: [\"drag\", \"dragControls\"],\n    focus: [\"whileFocus\"],\n    hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n    tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n    pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n    inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n    layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n    featureDefinitions[key] = {\n        isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n    };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n    for (const key in features) {\n        featureDefinitions[key] = {\n            ...featureDefinitions[key],\n            ...features[key],\n        };\n    }\n}\n\nexport { loadFeatures };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\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 { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { warning, invariant } from '../utils/errors.mjs';\nimport { featureDefinitions } from './features/definitions.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 createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n    preloadedFeatures && loadFeatures(preloadedFeatures);\n    function MotionComponent(props, externalRef) {\n        /**\n         * If we need to measure the element we load this functionality in a\n         * separate class component in order to gain access to getSnapshotBeforeUpdate.\n         */\n        let MeasureLayout;\n        const configAndProps = {\n            ...useContext(MotionConfigContext),\n            ...props,\n            layoutId: useLayoutId(props),\n        };\n        const { isStatic } = configAndProps;\n        const context = useCreateMotionContext(props);\n        const visualState = useVisualState(props, isStatic);\n        if (!isStatic && isBrowser) {\n            useStrictMode(configAndProps, preloadedFeatures);\n            const layoutProjection = getProjectionFunctionality(configAndProps);\n            MeasureLayout = layoutProjection.MeasureLayout;\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, layoutProjection.ProjectionNode);\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 (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n    }\n    const ForwardRefMotionComponent = forwardRef(MotionComponent);\n    ForwardRefMotionComponent[motionComponentSymbol] = Component;\n    return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n    const layoutGroupId = useContext(LayoutGroupContext).id;\n    return layoutGroupId && layoutId !== undefined\n        ? layoutGroupId + \"-\" + layoutId\n        : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n    const isStrict = useContext(LazyContext).strict;\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        const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n        configAndProps.ignoreStrict\n            ? warning(false, strictMessage)\n            : invariant(false, strictMessage);\n    }\n}\nfunction getProjectionFunctionality(props) {\n    const { drag, layout } = featureDefinitions;\n    if (!drag && !layout)\n        return {};\n    const combined = { ...drag, ...layout };\n    return {\n        MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n            ? combined.MeasureLayout\n            : undefined,\n        ProjectionNode: combined.ProjectionNode,\n    };\n}\n\nexport { createRendererMotionComponent };\n","/**\n * We keep these listed separately 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]/u.test(Component)) {\n        return true;\n    }\n    return false;\n}\n\nexport { isSVGComponent };\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 { 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","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    var _a;\n    const { style } = props;\n    const newValues = {};\n    for (const key in style) {\n        if (isMotionValue(style[key]) ||\n            (prevProps.style &&\n                isMotionValue(prevProps.style[key])) ||\n            isForcedMotionValue(key, props) ||\n            ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\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';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n    for (const key in props) {\n        if (isMotionValue(props[key]) ||\n            isMotionValue(prevProps[key])) {\n            const targetKey = transformPropOrder.indexOf(key) !== -1\n                ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n                : key;\n            newValues[targetKey] = props[key];\n        }\n    }\n    return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\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 { 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        for (let i = 0; i < list.length; i++) {\n            const resolved = resolveVariantFromProps(props, list[i]);\n            if (resolved) {\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        }\n    }\n    return values;\n}\n\nexport { makeUseVisualState };\n","const createHtmlRenderState = () => ({\n    style: {},\n    transform: {},\n    transformOrigin: {},\n    vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n    ...createHtmlRenderState(),\n    attrs: {},\n});\n\nexport { createSvgRenderState };\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","import { transformPropOrder } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nconst translateAlias = {\n    x: \"translateX\",\n    y: \"translateY\",\n    z: \"translateZ\",\n    transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\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(latestValues, transform, transformTemplate) {\n    // The transform string we're going to build into.\n    let transformString = \"\";\n    let transformIsDefault = true;\n    /**\n     * Loop over all possible transforms in order, adding the ones that\n     * are present to the transform string.\n     */\n    for (let i = 0; i < numTransforms; i++) {\n        const key = transformPropOrder[i];\n        const value = latestValues[key];\n        if (value === undefined)\n            continue;\n        let valueIsDefault = true;\n        if (typeof value === \"number\") {\n            valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n        }\n        else {\n            valueIsDefault = parseFloat(value) === 0;\n        }\n        if (!valueIsDefault || transformTemplate) {\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (!valueIsDefault) {\n                transformIsDefault = false;\n                const transformName = translateAlias[key] || key;\n                transformString += `${transformName}(${valueAsType}) `;\n            }\n            if (transformTemplate) {\n                transform[key] = valueAsType;\n            }\n        }\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 (transformIsDefault) {\n        transformString = \"none\";\n    }\n    return transformString;\n}\n\nexport { buildTransform };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } 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, transformTemplate) {\n    const { style, vars, transformOrigin } = state;\n    // Track whether we encounter any transform or transformOrigin values.\n    let hasTransform = false;\n    let hasTransformOrigin = false;\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 separately for further processing.\n     */\n    for (const key in latestValues) {\n        const value = latestValues[key];\n        if (transformProps.has(key)) {\n            // If this is a transform, flag to enable further transform processing\n            hasTransform = true;\n            continue;\n        }\n        else if (isCSSVariableName(key)) {\n            vars[key] = value;\n            continue;\n        }\n        else {\n            // Convert the value to its default value type, ie 0 -> \"0px\"\n            const valueAsType = getValueAsType(value, numberValueTypes[key]);\n            if (key.startsWith(\"origin\")) {\n                // If this is a transform origin, flag and enable further transform-origin processing\n                hasTransformOrigin = true;\n                transformOrigin[key] =\n                    valueAsType;\n            }\n            else {\n                style[key] = valueAsType;\n            }\n        }\n    }\n    if (!latestValues.transform) {\n        if (hasTransform || transformTemplate) {\n            style.transform = buildTransform(latestValues, state.transform, 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","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, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate) {\n    buildHTMLStyles(state, latest, 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    // Render attrX/attrY/attrScale as attributes\n    if (attrX !== undefined)\n        attrs.x = attrX;\n    if (attrY !== undefined)\n        attrs.y = attrY;\n    if (attrScale !== undefined)\n        attrs.scale = attrScale;\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","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\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';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n    useVisualState: makeUseVisualState({\n        scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n        createRenderState: createSvgRenderState,\n        onMount: (props, instance, { renderState, latestValues }) => {\n            frame.read(() => {\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            });\n            frame.render(() => {\n                buildSVGAttrs(renderState, latestValues, isSVGTag(instance.tagName), props.transformTemplate);\n                renderSVG(instance, renderState);\n            });\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 { 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) {\n    return useMemo(() => {\n        const state = createHtmlRenderState();\n        buildHTMLStyles(state, visualState, transformTemplate);\n        return Object.assign({}, state.vars, state.style);\n    }, [visualState]);\n}\nfunction useStyle(props, visualState) {\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));\n    return style;\n}\nfunction useHTMLProps(props, visualState) {\n    // The `any` isn't ideal but it is the type of createElement props argument\n    const htmlProps = {};\n    const style = useStyle(props, visualState);\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    if (props.tabIndex === undefined &&\n        (props.onTap || props.onTapStart || props.whileTap)) {\n        htmlProps.tabIndex = 0;\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    \"custom\",\n    \"inherit\",\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    \"globalTapTarget\",\n    \"ignoreStrict\",\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        key.startsWith(\"onLayout\") ||\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\"] &&\n                key.startsWith(\"onDrag\"))) {\n            filteredProps[key] =\n                props[key];\n        }\n    }\n    return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\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, 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 { Fragment, 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, 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 = Component !== Fragment\n            ? { ...filteredProps, ...visualProps, 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        return createElement(Component, {\n            ...elementProps,\n            children: renderedChildren,\n        });\n    };\n    return useRender;\n}\n\nexport { createUseRender };\n","import { createRendererMotionComponent } from '../../motion/index.mjs';\nimport { isSVGComponent } from '../dom/utils/is-svg-component.mjs';\nimport { svgMotionConfig } from '../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../html/config-motion.mjs';\nimport { createUseRender } from '../dom/use-render.mjs';\n\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n    return function createMotionComponent(Component, { forwardMotionProps } = { forwardMotionProps: false }) {\n        const baseConfig = isSVGComponent(Component)\n            ? svgMotionConfig\n            : htmlMotionConfig;\n        const config = {\n            ...baseConfig,\n            preloadedFeatures,\n            useRender: createUseRender(forwardMotionProps),\n            createVisualElement,\n            Component,\n        };\n        return createRendererMotionComponent(config);\n    };\n}\n\nexport { createMotionComponentFactory };\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 { 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    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            /**\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 === \"11.11.17\", `Attempting to mix Motion versions ${nextValue.version} with 11.11.17 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        }\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                if (existingValue.liveStyle === true) {\n                    existingValue.jump(nextValue);\n                }\n                else if (!existingValue.hasAnimated) {\n                    existingValue.set(nextValue);\n                }\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","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\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 { 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 { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\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    /**\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, _visualElement) {\n        return {};\n    }\n    constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, 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        this.KeyframeResolver = KeyframeResolver;\n        /**\n         * Cleanup functions for active features (hover/tap/exit etc)\n         */\n        this.features = {};\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.renderScheduledAt = 0.0;\n        this.scheduleRender = () => {\n            const now = time.now();\n            if (this.renderScheduledAt < now) {\n                this.renderScheduledAt = now;\n                frame.render(this.render, false, true);\n            }\n        };\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.presenceContext = presenceContext;\n        this.depth = parent ? parent.depth + 1 : 0;\n        this.reducedMotionConfig = reducedMotionConfig;\n        this.options = options;\n        this.blockInitialAnimation = Boolean(blockInitialAnimation);\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 necessarily a breaking change,\n         * more a reflection of the test.\n         */\n        const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\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            }\n        }\n    }\n    mount(instance) {\n        this.current = instance;\n        visualElementStore.set(instance, this);\n        if (this.projection && !this.projection.instance) {\n            this.projection.mount(instance);\n        }\n        if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n            this.removeFromVariantTree = this.parent.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.update(this.props, this.presenceContext);\n    }\n    unmount() {\n        visualElementStore.delete(this.current);\n        this.projection && this.projection.unmount();\n        cancelFrame(this.notifyUpdate);\n        cancelFrame(this.render);\n        this.valueSubscriptions.forEach((remove) => remove());\n        this.valueSubscriptions.clear();\n        this.removeFromVariantTree && this.removeFromVariantTree();\n        this.parent && this.parent.children.delete(this);\n        for (const key in this.events) {\n            this.events[key].clear();\n        }\n        for (const key in this.features) {\n            const feature = this.features[key];\n            if (feature) {\n                feature.unmount();\n                feature.isMounted = false;\n            }\n        }\n        this.current = null;\n    }\n    bindToMotionValue(key, value) {\n        if (this.valueSubscriptions.has(key)) {\n            this.valueSubscriptions.get(key)();\n        }\n        const valueIsTransform = transformProps.has(key);\n        const removeOnChange = value.on(\"change\", (latestValue) => {\n            this.latestValues[key] = latestValue;\n            this.props.onUpdate && frame.preRender(this.notifyUpdate);\n            if (valueIsTransform && this.projection) {\n                this.projection.isTransformDirty = true;\n            }\n        });\n        const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n        let removeSyncCheck;\n        if (window.MotionCheckAppearSync) {\n            removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n        }\n        this.valueSubscriptions.set(key, () => {\n            removeOnChange();\n            removeOnRenderRequest();\n            if (removeSyncCheck)\n                removeSyncCheck();\n            if (value.owner)\n                value.stop();\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        }\n        return this.sortInstanceNodePosition(this.current, other.current);\n    }\n    updateFeatures() {\n        let key = \"animation\";\n        for (key in featureDefinitions) {\n            const featureDefinition = featureDefinitions[key];\n            if (!featureDefinition)\n                continue;\n            const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n            /**\n             * If this feature is enabled but not active, make a new instance.\n             */\n            if (!this.features[key] &&\n                FeatureConstructor &&\n                isEnabled(this.props)) {\n                this.features[key] = new FeatureConstructor(this);\n            }\n            /**\n             * If we have a feature, mount or update it.\n             */\n            if (this.features[key]) {\n                const feature = this.features[key];\n                if (feature.isMounted) {\n                    feature.update();\n                }\n                else {\n                    feature.mount();\n                    feature.isMounted = true;\n                }\n            }\n        }\n    }\n    triggerBuild() {\n        this.build(this.renderState, this.latestValues, 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     * Update the provided props. Ensure any newly-added motion values are\n     * added to our map, old ones removed, and listeners updated.\n     */\n    update(props, presenceContext) {\n        if (props.transformTemplate || this.props.transformTemplate) {\n            this.scheduleRender();\n        }\n        this.prevProps = this.props;\n        this.props = props;\n        this.prevPresenceContext = this.presenceContext;\n        this.presenceContext = presenceContext;\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 listenerName = (\"on\" + key);\n            const listener = props[listenerName];\n            if (listener) {\n                this.propEventSubscriptions[key] = this.on(key, listener);\n            }\n        }\n        this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), 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        return this.props.variants ? this.props.variants[name] : undefined;\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        return this.isVariantNode\n            ? this\n            : this.parent\n                ? this.parent.getClosestVariantNode()\n                : undefined;\n    }\n    /**\n     * Add a child visual element to our set of children.\n     */\n    addVariantChild(child) {\n        const closestVariantNode = this.getClosestVariantNode();\n        if (closestVariantNode) {\n            closestVariantNode.variantChildren &&\n                closestVariantNode.variantChildren.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        const existingValue = this.values.get(key);\n        if (value !== existingValue) {\n            if (existingValue)\n                this.removeValue(key);\n            this.bindToMotionValue(key, value);\n            this.values.set(key, value);\n            this.latestValues[key] = value.get();\n        }\n    }\n    /**\n     * Remove a motion value and unbind any active subscriptions.\n     */\n    removeValue(key) {\n        this.values.delete(key);\n        const unsubscribe = this.valueSubscriptions.get(key);\n        if (unsubscribe) {\n            unsubscribe();\n            this.valueSubscriptions.delete(key);\n        }\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 === null ? undefined : 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, target) {\n        var _a;\n        let value = this.latestValues[key] !== undefined || !this.current\n            ? this.latestValues[key]\n            : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n        if (value !== undefined && value !== null) {\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(target)) {\n                value = getAnimatableNone(key, target);\n            }\n            this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n        }\n        return isMotionValue(value) ? value.get() : value;\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        let valueFromInitial;\n        if (typeof initial === \"string\" || typeof initial === \"object\") {\n            const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n            if (variant) {\n                valueFromInitial = variant[key];\n            }\n        }\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        if (this.events[eventName]) {\n            this.events[eventName].notify(...args);\n        }\n    }\n}\n\nexport { VisualElement };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\n\nclass DOMVisualElement extends VisualElement {\n    constructor() {\n        super(...arguments);\n        this.KeyframeResolver = DOMKeyframesResolver;\n    }\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        return props.style\n            ? props.style[key]\n            : undefined;\n    }\n    removeValueFromRenderState(key, { vars, style }) {\n        delete vars[key];\n        delete style[key];\n    }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } 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    constructor() {\n        super(...arguments);\n        this.type = \"html\";\n        this.renderInstance = renderHTML;\n    }\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 = (isCSSVariableName(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, props) {\n        buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\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}\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.type = \"svg\";\n        this.isSVGTag = false;\n        this.measureInstanceViewportBox = createBox;\n    }\n    getBaseTargetFromProps(props, key) {\n        return props[key];\n    }\n    readValueFromInstance(instance, key) {\n        if (transformProps.has(key)) {\n            const defaultType = getDefaultValueType(key);\n            return defaultType ? defaultType.default || 0 : 0;\n        }\n        key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n        return instance.getAttribute(key);\n    }\n    scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n        return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n    }\n    build(renderState, latestValues, props) {\n        buildSVGAttrs(renderState, latestValues, 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 { Fragment } from 'react';\nimport { 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)\n        : new HTMLVisualElement(options, {\n            allowProjection: Component !== Fragment,\n        });\n};\n\nexport { createDomVisualElement };\n","import { animations } from '../../../motion/features/animations.mjs';\nimport { drag } from '../../../motion/features/drag.mjs';\nimport { gestureAnimations } from '../../../motion/features/gestures.mjs';\nimport { layout } from '../../../motion/features/layout.mjs';\nimport { createMotionComponentFactory } from '../create-factory.mjs';\nimport { createDomVisualElement } from '../../dom/create-visual-element.mjs';\n\nconst createMotionComponent = /*@__PURE__*/ createMotionComponentFactory({\n    ...animations,\n    ...gestureAnimations,\n    ...drag,\n    ...layout,\n}, createDomVisualElement);\n\nexport { createMotionComponent };\n","import { createDOMMotionComponentProxy } from '../create-proxy.mjs';\nimport { createMotionComponent } from './create.mjs';\n\nconst motion = /*@__PURE__*/ createDOMMotionComponentProxy(createMotionComponent);\n\nexport { motion };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n    getSnapshotBeforeUpdate(prevProps) {\n        const element = this.props.childRef.current;\n        if (element && prevProps.isPresent && !this.props.isPresent) {\n            const size = this.props.sizeRef.current;\n            size.height = element.offsetHeight || 0;\n            size.width = element.offsetWidth || 0;\n            size.top = element.offsetTop;\n            size.left = element.offsetLeft;\n        }\n        return null;\n    }\n    /**\n     * Required with getSnapshotBeforeUpdate to stop React complaining.\n     */\n    componentDidUpdate() { }\n    render() {\n        return this.props.children;\n    }\n}\nfunction PopChild({ children, isPresent }) {\n    const id = useId();\n    const ref = useRef(null);\n    const size = useRef({\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n    });\n    const { nonce } = useContext(MotionConfigContext);\n    /**\n     * We create and inject a style block so we can apply this explicit\n     * sizing in a non-destructive manner by just deleting the style block.\n     *\n     * We can't apply size via render as the measurement happens\n     * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n     * styles directly on the DOM node, we might be overwriting\n     * styles set via the style prop.\n     */\n    useInsertionEffect(() => {\n        const { width, height, top, left } = size.current;\n        if (isPresent || !ref.current || !width || !height)\n            return;\n        ref.current.dataset.motionPopId = id;\n        const style = document.createElement(\"style\");\n        if (nonce)\n            style.nonce = nonce;\n        document.head.appendChild(style);\n        if (style.sheet) {\n            style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n        }\n        return () => {\n            document.head.removeChild(style);\n        };\n    }, [isPresent]);\n    return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n    const presenceChildren = useConstant(newChildrenMap);\n    const id = useId();\n    const memoizedOnExitComplete = useCallback((childId) => {\n        presenceChildren.set(childId, true);\n        for (const isComplete of presenceChildren.values()) {\n            if (!isComplete)\n                return; // can stop searching when any is incomplete\n        }\n        onExitComplete && onExitComplete();\n    }, [presenceChildren, onExitComplete]);\n    const context = useMemo(() => ({\n        id,\n        initial,\n        isPresent,\n        custom,\n        onExitComplete: memoizedOnExitComplete,\n        register: (childId) => {\n            presenceChildren.set(childId, false);\n            return () => presenceChildren.delete(childId);\n        },\n    }), \n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout\n        ? [Math.random(), memoizedOnExitComplete]\n        : [isPresent, memoizedOnExitComplete]);\n    useMemo(() => {\n        presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n    }, [isPresent]);\n    /**\n     * If there's no `motion` components to fire exit animations, we want to remove this\n     * component immediately.\n     */\n    React.useEffect(() => {\n        !isPresent &&\n            !presenceChildren.size &&\n            onExitComplete &&\n            onExitComplete();\n    }, [isPresent]);\n    if (mode === \"popLayout\") {\n        children = jsx(PopChild, { isPresent: isPresent, children: children });\n    }\n    return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n    return new Map();\n}\n\nexport { PresenceChild };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n    const filtered = [];\n    // We use forEach here instead of map as map mutates the component key by preprending `.$`\n    Children.forEach(children, (child) => {\n        if (isValidElement(child))\n            filtered.push(child);\n    });\n    return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n *   <AnimatePresence>\n *     {items.map(item => (\n *       <motion.div\n *         key={item.id}\n *         initial={{ opacity: 0 }}\n *         animate={{ opacity: 1 }}\n *         exit={{ opacity: 0 }}\n *       />\n *     ))}\n *   </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, exitBeforeEnter, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", }) => {\n    invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n    /**\n     * Filter any children that aren't ReactElements. We can only track components\n     * between renders with a props.key.\n     */\n    const presentChildren = useMemo(() => onlyElements(children), [children]);\n    /**\n     * Track the keys of the currently rendered children. This is used to\n     * determine which children are exiting.\n     */\n    const presentKeys = presentChildren.map(getChildKey);\n    /**\n     * If `initial={false}` we only want to pass this to components in the first render.\n     */\n    const isInitialRender = useRef(true);\n    /**\n     * A ref containing the currently present children. When all exit animations\n     * are complete, we use this to re-render the component with the latest children\n     * *committed* rather than the latest children *rendered*.\n     */\n    const pendingPresentChildren = useRef(presentChildren);\n    /**\n     * Track which exiting children have finished animating out.\n     */\n    const exitComplete = useConstant(() => new Map());\n    /**\n     * Save children to render as React state. To ensure this component is concurrent-safe,\n     * we check for exiting children via an effect.\n     */\n    const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n    const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n    useIsomorphicLayoutEffect(() => {\n        isInitialRender.current = false;\n        pendingPresentChildren.current = presentChildren;\n        /**\n         * Update complete status of exiting children.\n         */\n        for (let i = 0; i < renderedChildren.length; i++) {\n            const key = getChildKey(renderedChildren[i]);\n            if (!presentKeys.includes(key)) {\n                if (exitComplete.get(key) !== true) {\n                    exitComplete.set(key, false);\n                }\n            }\n            else {\n                exitComplete.delete(key);\n            }\n        }\n    }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n    const exitingChildren = [];\n    if (presentChildren !== diffedChildren) {\n        let nextChildren = [...presentChildren];\n        /**\n         * Loop through all the currently rendered components and decide which\n         * are exiting.\n         */\n        for (let i = 0; i < renderedChildren.length; i++) {\n            const child = renderedChildren[i];\n            const key = getChildKey(child);\n            if (!presentKeys.includes(key)) {\n                nextChildren.splice(i, 0, child);\n                exitingChildren.push(child);\n            }\n        }\n        /**\n         * If we're in \"wait\" mode, and we have exiting children, we want to\n         * only render these until they've all exited.\n         */\n        if (mode === \"wait\" && exitingChildren.length) {\n            nextChildren = exitingChildren;\n        }\n        setRenderedChildren(onlyElements(nextChildren));\n        setDiffedChildren(presentChildren);\n        /**\n         * Early return to ensure once we've set state with the latest diffed\n         * children, we can immediately re-render.\n         */\n        return;\n    }\n    if (process.env.NODE_ENV !== \"production\" &&\n        mode === \"wait\" &&\n        renderedChildren.length > 1) {\n        console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n    }\n    /**\n     * If we've been provided a forceRender function by the LayoutGroupContext,\n     * we can use it to force a re-render amongst all surrounding components once\n     * all components have finished animating out.\n     */\n    const { forceRender } = useContext(LayoutGroupContext);\n    return (jsx(Fragment, { children: renderedChildren.map((child) => {\n            const key = getChildKey(child);\n            const isPresent = presentChildren === renderedChildren ||\n                presentKeys.includes(key);\n            const onExit = () => {\n                if (exitComplete.has(key)) {\n                    exitComplete.set(key, true);\n                }\n                else {\n                    return;\n                }\n                let isEveryExitComplete = true;\n                exitComplete.forEach((isExitComplete) => {\n                    if (!isExitComplete)\n                        isEveryExitComplete = false;\n                });\n                if (isEveryExitComplete) {\n                    forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n                    setRenderedChildren(pendingPresentChildren.current);\n                    onExitComplete && onExitComplete();\n                }\n            };\n            return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n                    ? undefined\n                    : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n        }) }));\n};\n\nexport { AnimatePresence };\n"],"names":["getAnimatableNone","maxDuration","mixNumber","id","calcOrigin","require$$0","React","jsxRuntimeModule","require$$1","createContext","useContext","useId","useEffect","useCallback","Component","jsx","createProjectionNode","useLayoutEffect","useRef","useInsertionEffect","useMemo","jsxs","forwardRef","scrapeMotionValuesFromProps","Fragment","createElement","Children","isValidElement","useState"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238]}