{"version":3,"file":"static/chunks/6353-f6e17c85d6a7b255.js","mappings":"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","sources":["webpack://_N_E/./node_modules/next/dist/compiled/client-only/index.js","webpack://_N_E/./node_modules/styled-jsx/dist/index/index.js","webpack://_N_E/./node_modules/styled-jsx/style.js","webpack://_N_E/./node_modules/canvas-confetti/dist/confetti.module.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","webpack://_N_E/./node_modules/motion-utils/dist/es/memo.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/controls/BaseGroup.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/controls/Group.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/is-bezier-definition.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/supports/flags.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/supports/memo.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs","webpack://_N_E/./node_modules/motion-utils/dist/es/progress.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/utils/easing.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/utils/resolve-elements.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/hover.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/press/index.mjs","webpack://_N_E/./node_modules/motion-utils/dist/es/time-conversion.mjs","webpack://_N_E/./node_modules/motion-utils/dist/es/noop.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/NativeAnimationControls.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/utils/convert-options.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/animation/waapi/PseudoAnimation.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/view/utils/css.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/view/start.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/view/index.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs","webpack://_N_E/./node_modules/motion-dom/dist/es/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/keys-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/keys-position.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/render-step.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/batcher.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/frame.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/back.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/circ.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","webpack://_N_E/./node_modules/motion-utils/dist/es/errors.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/color.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/complex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/spring/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/ease.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/map.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/interpolate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/offsets/default.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/offsets/time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/Feature.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/microtask.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animate/single-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/hover.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/focus.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/press.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/create-factory.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/store.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/VisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/motion/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs"],"sourcesContent":[null,"require('client-only');\nvar React = require('react');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n/*\nBased on Glamor's sheet\nhttps://github.com/threepointone/glamor/blob/667b480d31b3721a905021b26e1290ce92ca2879/src/sheet.js\n*/ function _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nvar isProd = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\";\nvar isString = function(o) {\n return Object.prototype.toString.call(o) === \"[object String]\";\n};\nvar StyleSheet = /*#__PURE__*/ function() {\n function StyleSheet(param) {\n var ref = param === void 0 ? {} : param, _name = ref.name, name = _name === void 0 ? \"stylesheet\" : _name, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? isProd : _optimizeForSpeed;\n invariant$1(isString(name), \"`name` must be a string\");\n this._name = name;\n this._deletedRulePlaceholder = \"#\" + name + \"-deleted-rule____{}\";\n invariant$1(typeof optimizeForSpeed === \"boolean\", \"`optimizeForSpeed` must be a boolean\");\n this._optimizeForSpeed = optimizeForSpeed;\n this._serverSheet = undefined;\n this._tags = [];\n this._injected = false;\n this._rulesCount = 0;\n var node = typeof window !== \"undefined\" && document.querySelector('meta[property=\"csp-nonce\"]');\n this._nonce = node ? node.getAttribute(\"content\") : null;\n }\n var _proto = StyleSheet.prototype;\n _proto.setOptimizeForSpeed = function setOptimizeForSpeed(bool) {\n invariant$1(typeof bool === \"boolean\", \"`setOptimizeForSpeed` accepts a boolean\");\n invariant$1(this._rulesCount === 0, \"optimizeForSpeed cannot be when rules have already been inserted\");\n this.flush();\n this._optimizeForSpeed = bool;\n this.inject();\n };\n _proto.isOptimizeForSpeed = function isOptimizeForSpeed() {\n return this._optimizeForSpeed;\n };\n _proto.inject = function inject() {\n var _this = this;\n invariant$1(!this._injected, \"sheet already injected\");\n this._injected = true;\n if (typeof window !== \"undefined\" && this._optimizeForSpeed) {\n this._tags[0] = this.makeStyleTag(this._name);\n this._optimizeForSpeed = \"insertRule\" in this.getSheet();\n if (!this._optimizeForSpeed) {\n if (!isProd) {\n console.warn(\"StyleSheet: optimizeForSpeed mode not supported falling back to standard mode.\");\n }\n this.flush();\n this._injected = true;\n }\n return;\n }\n this._serverSheet = {\n cssRules: [],\n insertRule: function(rule, index) {\n if (typeof index === \"number\") {\n _this._serverSheet.cssRules[index] = {\n cssText: rule\n };\n } else {\n _this._serverSheet.cssRules.push({\n cssText: rule\n });\n }\n return index;\n },\n deleteRule: function(index) {\n _this._serverSheet.cssRules[index] = null;\n }\n };\n };\n _proto.getSheetForTag = function getSheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n }\n // this weirdness brought to you by firefox\n for(var i = 0; i < document.styleSheets.length; i++){\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n };\n _proto.getSheet = function getSheet() {\n return this.getSheetForTag(this._tags[this._tags.length - 1]);\n };\n _proto.insertRule = function insertRule(rule, index) {\n invariant$1(isString(rule), \"`insertRule` accepts only strings\");\n if (typeof window === \"undefined\") {\n if (typeof index !== \"number\") {\n index = this._serverSheet.cssRules.length;\n }\n this._serverSheet.insertRule(rule, index);\n return this._rulesCount++;\n }\n if (this._optimizeForSpeed) {\n var sheet = this.getSheet();\n if (typeof index !== \"number\") {\n index = sheet.cssRules.length;\n }\n // this weirdness for perf, and chrome's weird bug\n // https://stackoverflow.com/questions/20007992/chrome-suddenly-stopped-accepting-insertrule\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n return -1;\n }\n } else {\n var insertionPoint = this._tags[index];\n this._tags.push(this.makeStyleTag(this._name, rule, insertionPoint));\n }\n return this._rulesCount++;\n };\n _proto.replaceRule = function replaceRule(index, rule) {\n if (this._optimizeForSpeed || typeof window === \"undefined\") {\n var sheet = typeof window !== \"undefined\" ? this.getSheet() : this._serverSheet;\n if (!rule.trim()) {\n rule = this._deletedRulePlaceholder;\n }\n if (!sheet.cssRules[index]) {\n // @TBD Should we throw an error?\n return index;\n }\n sheet.deleteRule(index);\n try {\n sheet.insertRule(rule, index);\n } catch (error) {\n if (!isProd) {\n console.warn(\"StyleSheet: illegal rule: \\n\\n\" + rule + \"\\n\\nSee https://stackoverflow.com/q/20007992 for more info\");\n }\n // In order to preserve the indices we insert a deleteRulePlaceholder\n sheet.insertRule(this._deletedRulePlaceholder, index);\n }\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"old rule at index `\" + index + \"` not found\");\n tag.textContent = rule;\n }\n return index;\n };\n _proto.deleteRule = function deleteRule(index) {\n if (typeof window === \"undefined\") {\n this._serverSheet.deleteRule(index);\n return;\n }\n if (this._optimizeForSpeed) {\n this.replaceRule(index, \"\");\n } else {\n var tag = this._tags[index];\n invariant$1(tag, \"rule at index `\" + index + \"` not found\");\n tag.parentNode.removeChild(tag);\n this._tags[index] = null;\n }\n };\n _proto.flush = function flush() {\n this._injected = false;\n this._rulesCount = 0;\n if (typeof window !== \"undefined\") {\n this._tags.forEach(function(tag) {\n return tag && tag.parentNode.removeChild(tag);\n });\n this._tags = [];\n } else {\n // simpler on server\n this._serverSheet.cssRules = [];\n }\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n if (typeof window === \"undefined\") {\n return this._serverSheet.cssRules;\n }\n return this._tags.reduce(function(rules, tag) {\n if (tag) {\n rules = rules.concat(Array.prototype.map.call(_this.getSheetForTag(tag).cssRules, function(rule) {\n return rule.cssText === _this._deletedRulePlaceholder ? null : rule;\n }));\n } else {\n rules.push(null);\n }\n return rules;\n }, []);\n };\n _proto.makeStyleTag = function makeStyleTag(name, cssString, relativeToTag) {\n if (cssString) {\n invariant$1(isString(cssString), \"makeStyleTag accepts only strings as second parameter\");\n }\n var tag = document.createElement(\"style\");\n if (this._nonce) tag.setAttribute(\"nonce\", this._nonce);\n tag.type = \"text/css\";\n tag.setAttribute(\"data-\" + name, \"\");\n if (cssString) {\n tag.appendChild(document.createTextNode(cssString));\n }\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n if (relativeToTag) {\n head.insertBefore(tag, relativeToTag);\n } else {\n head.appendChild(tag);\n }\n return tag;\n };\n _createClass(StyleSheet, [\n {\n key: \"length\",\n get: function get() {\n return this._rulesCount;\n }\n }\n ]);\n return StyleSheet;\n}();\nfunction invariant$1(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheet: \" + message + \".\");\n }\n}\n\nfunction hash(str) {\n var _$hash = 5381, i = str.length;\n while(i){\n _$hash = _$hash * 33 ^ str.charCodeAt(--i);\n }\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */ return _$hash >>> 0;\n}\nvar stringHash = hash;\n\nvar sanitize = function(rule) {\n return rule.replace(/\\/style/gi, \"\\\\/style\");\n};\nvar cache = {};\n/**\n * computeId\n *\n * Compute and memoize a jsx id from a basedId and optionally props.\n */ function computeId(baseId, props) {\n if (!props) {\n return \"jsx-\" + baseId;\n }\n var propsToString = String(props);\n var key = baseId + propsToString;\n if (!cache[key]) {\n cache[key] = \"jsx-\" + stringHash(baseId + \"-\" + propsToString);\n }\n return cache[key];\n}\n/**\n * computeSelector\n *\n * Compute and memoize dynamic selectors.\n */ function computeSelector(id, css) {\n var selectoPlaceholderRegexp = /__jsx-style-dynamic-selector/g;\n // Sanitize SSR-ed CSS.\n // Client side code doesn't need to be sanitized since we use\n // document.createTextNode (dev) and the CSSOM api sheet.insertRule (prod).\n if (typeof window === \"undefined\") {\n css = sanitize(css);\n }\n var idcss = id + css;\n if (!cache[idcss]) {\n cache[idcss] = css.replace(selectoPlaceholderRegexp, id);\n }\n return cache[idcss];\n}\n\nfunction mapRulesToStyle(cssRules, options) {\n if (options === void 0) options = {};\n return cssRules.map(function(args) {\n var id = args[0];\n var css = args[1];\n return /*#__PURE__*/ React__default[\"default\"].createElement(\"style\", {\n id: \"__\" + id,\n // Avoid warnings upon render with a key\n key: \"__\" + id,\n nonce: options.nonce ? options.nonce : undefined,\n dangerouslySetInnerHTML: {\n __html: css\n }\n });\n });\n}\nvar StyleSheetRegistry = /*#__PURE__*/ function() {\n function StyleSheetRegistry(param) {\n var ref = param === void 0 ? {} : param, _styleSheet = ref.styleSheet, styleSheet = _styleSheet === void 0 ? null : _styleSheet, _optimizeForSpeed = ref.optimizeForSpeed, optimizeForSpeed = _optimizeForSpeed === void 0 ? false : _optimizeForSpeed;\n this._sheet = styleSheet || new StyleSheet({\n name: \"styled-jsx\",\n optimizeForSpeed: optimizeForSpeed\n });\n this._sheet.inject();\n if (styleSheet && typeof optimizeForSpeed === \"boolean\") {\n this._sheet.setOptimizeForSpeed(optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n }\n var _proto = StyleSheetRegistry.prototype;\n _proto.add = function add(props) {\n var _this = this;\n if (undefined === this._optimizeForSpeed) {\n this._optimizeForSpeed = Array.isArray(props.children);\n this._sheet.setOptimizeForSpeed(this._optimizeForSpeed);\n this._optimizeForSpeed = this._sheet.isOptimizeForSpeed();\n }\n if (typeof window !== \"undefined\" && !this._fromServer) {\n this._fromServer = this.selectFromServer();\n this._instancesCounts = Object.keys(this._fromServer).reduce(function(acc, tagName) {\n acc[tagName] = 0;\n return acc;\n }, {});\n }\n var ref = this.getIdAndRules(props), styleId = ref.styleId, rules = ref.rules;\n // Deduping: just increase the instances count.\n if (styleId in this._instancesCounts) {\n this._instancesCounts[styleId] += 1;\n return;\n }\n var indices = rules.map(function(rule) {\n return _this._sheet.insertRule(rule);\n })// Filter out invalid rules\n .filter(function(index) {\n return index !== -1;\n });\n this._indices[styleId] = indices;\n this._instancesCounts[styleId] = 1;\n };\n _proto.remove = function remove(props) {\n var _this = this;\n var styleId = this.getIdAndRules(props).styleId;\n invariant(styleId in this._instancesCounts, \"styleId: `\" + styleId + \"` not found\");\n this._instancesCounts[styleId] -= 1;\n if (this._instancesCounts[styleId] < 1) {\n var tagFromServer = this._fromServer && this._fromServer[styleId];\n if (tagFromServer) {\n tagFromServer.parentNode.removeChild(tagFromServer);\n delete this._fromServer[styleId];\n } else {\n this._indices[styleId].forEach(function(index) {\n return _this._sheet.deleteRule(index);\n });\n delete this._indices[styleId];\n }\n delete this._instancesCounts[styleId];\n }\n };\n _proto.update = function update(props, nextProps) {\n this.add(nextProps);\n this.remove(props);\n };\n _proto.flush = function flush() {\n this._sheet.flush();\n this._sheet.inject();\n this._fromServer = undefined;\n this._indices = {};\n this._instancesCounts = {};\n };\n _proto.cssRules = function cssRules() {\n var _this = this;\n var fromServer = this._fromServer ? Object.keys(this._fromServer).map(function(styleId) {\n return [\n styleId,\n _this._fromServer[styleId]\n ];\n }) : [];\n var cssRules = this._sheet.cssRules();\n return fromServer.concat(Object.keys(this._indices).map(function(styleId) {\n return [\n styleId,\n _this._indices[styleId].map(function(index) {\n return cssRules[index].cssText;\n }).join(_this._optimizeForSpeed ? \"\" : \"\\n\")\n ];\n })// filter out empty rules\n .filter(function(rule) {\n return Boolean(rule[1]);\n }));\n };\n _proto.styles = function styles(options) {\n return mapRulesToStyle(this.cssRules(), options);\n };\n _proto.getIdAndRules = function getIdAndRules(props) {\n var css = props.children, dynamic = props.dynamic, id = props.id;\n if (dynamic) {\n var styleId = computeId(id, dynamic);\n return {\n styleId: styleId,\n rules: Array.isArray(css) ? css.map(function(rule) {\n return computeSelector(styleId, rule);\n }) : [\n computeSelector(styleId, css)\n ]\n };\n }\n return {\n styleId: computeId(id),\n rules: Array.isArray(css) ? css : [\n css\n ]\n };\n };\n /**\n * selectFromServer\n *\n * Collects style tags from the document with id __jsx-XXX\n */ _proto.selectFromServer = function selectFromServer() {\n var elements = Array.prototype.slice.call(document.querySelectorAll('[id^=\"__jsx-\"]'));\n return elements.reduce(function(acc, element) {\n var id = element.id.slice(2);\n acc[id] = element;\n return acc;\n }, {});\n };\n return StyleSheetRegistry;\n}();\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(\"StyleSheetRegistry: \" + message + \".\");\n }\n}\nvar StyleSheetContext = /*#__PURE__*/ React.createContext(null);\nStyleSheetContext.displayName = \"StyleSheetContext\";\nfunction createStyleRegistry() {\n return new StyleSheetRegistry();\n}\nfunction StyleRegistry(param) {\n var configuredRegistry = param.registry, children = param.children;\n var rootRegistry = React.useContext(StyleSheetContext);\n var ref = React.useState(function() {\n return rootRegistry || configuredRegistry || createStyleRegistry();\n }), registry = ref[0];\n return /*#__PURE__*/ React__default[\"default\"].createElement(StyleSheetContext.Provider, {\n value: registry\n }, children);\n}\nfunction useStyleRegistry() {\n return React.useContext(StyleSheetContext);\n}\n\n// Opt-into the new `useInsertionEffect` API in React 18, fallback to `useLayoutEffect`.\n// https://github.com/reactwg/react-18/discussions/110\nvar useInsertionEffect = React__default[\"default\"].useInsertionEffect || React__default[\"default\"].useLayoutEffect;\nvar defaultRegistry = typeof window !== \"undefined\" ? createStyleRegistry() : undefined;\nfunction JSXStyle(props) {\n var registry = defaultRegistry ? defaultRegistry : useStyleRegistry();\n // If `registry` does not exist, we do nothing here.\n if (!registry) {\n return null;\n }\n if (typeof window === \"undefined\") {\n registry.add(props);\n return null;\n }\n useInsertionEffect(function() {\n registry.add(props);\n return function() {\n registry.remove(props);\n };\n // props.children can be string[], will be striped since id is identical\n }, [\n props.id,\n String(props.dynamic)\n ]);\n return null;\n}\nJSXStyle.dynamic = function(info) {\n return info.map(function(tagInfo) {\n var baseId = tagInfo[0];\n var props = tagInfo[1];\n return computeId(baseId, props);\n }).join(\" \");\n};\n\nexports.StyleRegistry = StyleRegistry;\nexports.createStyleRegistry = createStyleRegistry;\nexports.style = JSXStyle;\nexports.useStyleRegistry = useStyleRegistry;\n","module.exports = require('./dist/index').style\n","// canvas-confetti v1.9.3 built on 2024-04-30T22:19:17.794Z\nvar module = {};\n\n// source content\n/* globals Map */\n\n(function main(global, module, isWorker, workerSize) {\n var canUseWorker = !!(\n global.Worker &&\n global.Blob &&\n global.Promise &&\n global.OffscreenCanvas &&\n global.OffscreenCanvasRenderingContext2D &&\n global.HTMLCanvasElement &&\n global.HTMLCanvasElement.prototype.transferControlToOffscreen &&\n global.URL &&\n global.URL.createObjectURL);\n\n var canUsePaths = typeof Path2D === 'function' && typeof DOMMatrix === 'function';\n var canDrawBitmap = (function () {\n // this mostly supports ssr\n if (!global.OffscreenCanvas) {\n return false;\n }\n\n var canvas = new OffscreenCanvas(1, 1);\n var ctx = canvas.getContext('2d');\n ctx.fillRect(0, 0, 1, 1);\n var bitmap = canvas.transferToImageBitmap();\n\n try {\n ctx.createPattern(bitmap, 'no-repeat');\n } catch (e) {\n return false;\n }\n\n return true;\n })();\n\n function noop() {}\n\n // create a promise if it exists, otherwise, just\n // call the function directly\n function promise(func) {\n var ModulePromise = module.exports.Promise;\n var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise;\n\n if (typeof Prom === 'function') {\n return new Prom(func);\n }\n\n func(noop, noop);\n\n return null;\n }\n\n var bitmapMapper = (function (skipTransform, map) {\n // see https://github.com/catdad/canvas-confetti/issues/209\n // creating canvases is actually pretty expensive, so we should create a\n // 1:1 map for bitmap:canvas, so that we can animate the confetti in\n // a performant manner, but also not store them forever so that we don't\n // have a memory leak\n return {\n transform: function(bitmap) {\n if (skipTransform) {\n return bitmap;\n }\n\n if (map.has(bitmap)) {\n return map.get(bitmap);\n }\n\n var canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(bitmap, 0, 0);\n\n map.set(bitmap, canvas);\n\n return canvas;\n },\n clear: function () {\n map.clear();\n }\n };\n })(canDrawBitmap, new Map());\n\n var raf = (function () {\n var TIME = Math.floor(1000 / 60);\n var frame, cancel;\n var frames = {};\n var lastFrameTime = 0;\n\n if (typeof requestAnimationFrame === 'function' && typeof cancelAnimationFrame === 'function') {\n frame = function (cb) {\n var id = Math.random();\n\n frames[id] = requestAnimationFrame(function onFrame(time) {\n if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) {\n lastFrameTime = time;\n delete frames[id];\n\n cb();\n } else {\n frames[id] = requestAnimationFrame(onFrame);\n }\n });\n\n return id;\n };\n cancel = function (id) {\n if (frames[id]) {\n cancelAnimationFrame(frames[id]);\n }\n };\n } else {\n frame = function (cb) {\n return setTimeout(cb, TIME);\n };\n cancel = function (timer) {\n return clearTimeout(timer);\n };\n }\n\n return { frame: frame, cancel: cancel };\n }());\n\n var getWorker = (function () {\n var worker;\n var prom;\n var resolves = {};\n\n function decorate(worker) {\n function execute(options, callback) {\n worker.postMessage({ options: options || {}, callback: callback });\n }\n worker.init = function initWorker(canvas) {\n var offscreen = canvas.transferControlToOffscreen();\n worker.postMessage({ canvas: offscreen }, [offscreen]);\n };\n\n worker.fire = function fireWorker(options, size, done) {\n if (prom) {\n execute(options, null);\n return prom;\n }\n\n var id = Math.random().toString(36).slice(2);\n\n prom = promise(function (resolve) {\n function workerDone(msg) {\n if (msg.data.callback !== id) {\n return;\n }\n\n delete resolves[id];\n worker.removeEventListener('message', workerDone);\n\n prom = null;\n\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n worker.addEventListener('message', workerDone);\n execute(options, id);\n\n resolves[id] = workerDone.bind(null, { data: { callback: id }});\n });\n\n return prom;\n };\n\n worker.reset = function resetWorker() {\n worker.postMessage({ reset: true });\n\n for (var id in resolves) {\n resolves[id]();\n delete resolves[id];\n }\n };\n }\n\n return function () {\n if (worker) {\n return worker;\n }\n\n if (!isWorker && canUseWorker) {\n var code = [\n 'var CONFETTI, SIZE = {}, module = {};',\n '(' + main.toString() + ')(this, module, true, SIZE);',\n 'onmessage = function(msg) {',\n ' if (msg.data.options) {',\n ' CONFETTI(msg.data.options).then(function () {',\n ' if (msg.data.callback) {',\n ' postMessage({ callback: msg.data.callback });',\n ' }',\n ' });',\n ' } else if (msg.data.reset) {',\n ' CONFETTI && CONFETTI.reset();',\n ' } else if (msg.data.resize) {',\n ' SIZE.width = msg.data.resize.width;',\n ' SIZE.height = msg.data.resize.height;',\n ' } else if (msg.data.canvas) {',\n ' SIZE.width = msg.data.canvas.width;',\n ' SIZE.height = msg.data.canvas.height;',\n ' CONFETTI = module.exports.create(msg.data.canvas);',\n ' }',\n '}',\n ].join('\\n');\n try {\n worker = new Worker(URL.createObjectURL(new Blob([code])));\n } catch (e) {\n // eslint-disable-next-line no-console\n typeof console !== undefined && typeof console.warn === 'function' ? console.warn('🎊 Could not load worker', e) : null;\n\n return null;\n }\n\n decorate(worker);\n }\n\n return worker;\n };\n })();\n\n var defaults = {\n particleCount: 50,\n angle: 90,\n spread: 45,\n startVelocity: 45,\n decay: 0.9,\n gravity: 1,\n drift: 0,\n ticks: 200,\n x: 0.5,\n y: 0.5,\n shapes: ['square', 'circle'],\n zIndex: 100,\n colors: [\n '#26ccff',\n '#a25afd',\n '#ff5e7e',\n '#88ff5a',\n '#fcff42',\n '#ffa62d',\n '#ff36ff'\n ],\n // probably should be true, but back-compat\n disableForReducedMotion: false,\n scalar: 1\n };\n\n function convert(val, transform) {\n return transform ? transform(val) : val;\n }\n\n function isOk(val) {\n return !(val === null || val === undefined);\n }\n\n function prop(options, name, transform) {\n return convert(\n options && isOk(options[name]) ? options[name] : defaults[name],\n transform\n );\n }\n\n function onlyPositiveInt(number){\n return number < 0 ? 0 : Math.floor(number);\n }\n\n function randomInt(min, max) {\n // [min, max)\n return Math.floor(Math.random() * (max - min)) + min;\n }\n\n function toDecimal(str) {\n return parseInt(str, 16);\n }\n\n function colorsToRgb(colors) {\n return colors.map(hexToRgb);\n }\n\n function hexToRgb(str) {\n var val = String(str).replace(/[^0-9a-f]/gi, '');\n\n if (val.length < 6) {\n val = val[0]+val[0]+val[1]+val[1]+val[2]+val[2];\n }\n\n return {\n r: toDecimal(val.substring(0,2)),\n g: toDecimal(val.substring(2,4)),\n b: toDecimal(val.substring(4,6))\n };\n }\n\n function getOrigin(options) {\n var origin = prop(options, 'origin', Object);\n origin.x = prop(origin, 'x', Number);\n origin.y = prop(origin, 'y', Number);\n\n return origin;\n }\n\n function setCanvasWindowSize(canvas) {\n canvas.width = document.documentElement.clientWidth;\n canvas.height = document.documentElement.clientHeight;\n }\n\n function setCanvasRectSize(canvas) {\n var rect = canvas.getBoundingClientRect();\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n function getCanvas(zIndex) {\n var canvas = document.createElement('canvas');\n\n canvas.style.position = 'fixed';\n canvas.style.top = '0px';\n canvas.style.left = '0px';\n canvas.style.pointerEvents = 'none';\n canvas.style.zIndex = zIndex;\n\n return canvas;\n }\n\n function ellipse(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {\n context.save();\n context.translate(x, y);\n context.rotate(rotation);\n context.scale(radiusX, radiusY);\n context.arc(0, 0, 1, startAngle, endAngle, antiClockwise);\n context.restore();\n }\n\n function randomPhysics(opts) {\n var radAngle = opts.angle * (Math.PI / 180);\n var radSpread = opts.spread * (Math.PI / 180);\n\n return {\n x: opts.x,\n y: opts.y,\n wobble: Math.random() * 10,\n wobbleSpeed: Math.min(0.11, Math.random() * 0.1 + 0.05),\n velocity: (opts.startVelocity * 0.5) + (Math.random() * opts.startVelocity),\n angle2D: -radAngle + ((0.5 * radSpread) - (Math.random() * radSpread)),\n tiltAngle: (Math.random() * (0.75 - 0.25) + 0.25) * Math.PI,\n color: opts.color,\n shape: opts.shape,\n tick: 0,\n totalTicks: opts.ticks,\n decay: opts.decay,\n drift: opts.drift,\n random: Math.random() + 2,\n tiltSin: 0,\n tiltCos: 0,\n wobbleX: 0,\n wobbleY: 0,\n gravity: opts.gravity * 3,\n ovalScalar: 0.6,\n scalar: opts.scalar,\n flat: opts.flat\n };\n }\n\n function updateFetti(context, fetti) {\n fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift;\n fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity;\n fetti.velocity *= fetti.decay;\n\n if (fetti.flat) {\n fetti.wobble = 0;\n fetti.wobbleX = fetti.x + (10 * fetti.scalar);\n fetti.wobbleY = fetti.y + (10 * fetti.scalar);\n\n fetti.tiltSin = 0;\n fetti.tiltCos = 0;\n fetti.random = 1;\n } else {\n fetti.wobble += fetti.wobbleSpeed;\n fetti.wobbleX = fetti.x + ((10 * fetti.scalar) * Math.cos(fetti.wobble));\n fetti.wobbleY = fetti.y + ((10 * fetti.scalar) * Math.sin(fetti.wobble));\n\n fetti.tiltAngle += 0.1;\n fetti.tiltSin = Math.sin(fetti.tiltAngle);\n fetti.tiltCos = Math.cos(fetti.tiltAngle);\n fetti.random = Math.random() + 2;\n }\n\n var progress = (fetti.tick++) / fetti.totalTicks;\n\n var x1 = fetti.x + (fetti.random * fetti.tiltCos);\n var y1 = fetti.y + (fetti.random * fetti.tiltSin);\n var x2 = fetti.wobbleX + (fetti.random * fetti.tiltCos);\n var y2 = fetti.wobbleY + (fetti.random * fetti.tiltSin);\n\n context.fillStyle = 'rgba(' + fetti.color.r + ', ' + fetti.color.g + ', ' + fetti.color.b + ', ' + (1 - progress) + ')';\n\n context.beginPath();\n\n if (canUsePaths && fetti.shape.type === 'path' && typeof fetti.shape.path === 'string' && Array.isArray(fetti.shape.matrix)) {\n context.fill(transformPath2D(\n fetti.shape.path,\n fetti.shape.matrix,\n fetti.x,\n fetti.y,\n Math.abs(x2 - x1) * 0.1,\n Math.abs(y2 - y1) * 0.1,\n Math.PI / 10 * fetti.wobble\n ));\n } else if (fetti.shape.type === 'bitmap') {\n var rotation = Math.PI / 10 * fetti.wobble;\n var scaleX = Math.abs(x2 - x1) * 0.1;\n var scaleY = Math.abs(y2 - y1) * 0.1;\n var width = fetti.shape.bitmap.width * fetti.scalar;\n var height = fetti.shape.bitmap.height * fetti.scalar;\n\n var matrix = new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n fetti.x,\n fetti.y\n ]);\n\n // apply the transform matrix from the confetti shape\n matrix.multiplySelf(new DOMMatrix(fetti.shape.matrix));\n\n var pattern = context.createPattern(bitmapMapper.transform(fetti.shape.bitmap), 'no-repeat');\n pattern.setTransform(matrix);\n\n context.globalAlpha = (1 - progress);\n context.fillStyle = pattern;\n context.fillRect(\n fetti.x - (width / 2),\n fetti.y - (height / 2),\n width,\n height\n );\n context.globalAlpha = 1;\n } else if (fetti.shape === 'circle') {\n context.ellipse ?\n context.ellipse(fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI) :\n ellipse(context, fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI);\n } else if (fetti.shape === 'star') {\n var rot = Math.PI / 2 * 3;\n var innerRadius = 4 * fetti.scalar;\n var outerRadius = 8 * fetti.scalar;\n var x = fetti.x;\n var y = fetti.y;\n var spikes = 5;\n var step = Math.PI / spikes;\n\n while (spikes--) {\n x = fetti.x + Math.cos(rot) * outerRadius;\n y = fetti.y + Math.sin(rot) * outerRadius;\n context.lineTo(x, y);\n rot += step;\n\n x = fetti.x + Math.cos(rot) * innerRadius;\n y = fetti.y + Math.sin(rot) * innerRadius;\n context.lineTo(x, y);\n rot += step;\n }\n } else {\n context.moveTo(Math.floor(fetti.x), Math.floor(fetti.y));\n context.lineTo(Math.floor(fetti.wobbleX), Math.floor(y1));\n context.lineTo(Math.floor(x2), Math.floor(y2));\n context.lineTo(Math.floor(x1), Math.floor(fetti.wobbleY));\n }\n\n context.closePath();\n context.fill();\n\n return fetti.tick < fetti.totalTicks;\n }\n\n function animate(canvas, fettis, resizer, size, done) {\n var animatingFettis = fettis.slice();\n var context = canvas.getContext('2d');\n var animationFrame;\n var destroy;\n\n var prom = promise(function (resolve) {\n function onDone() {\n animationFrame = destroy = null;\n\n context.clearRect(0, 0, size.width, size.height);\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n function update() {\n if (isWorker && !(size.width === workerSize.width && size.height === workerSize.height)) {\n size.width = canvas.width = workerSize.width;\n size.height = canvas.height = workerSize.height;\n }\n\n if (!size.width && !size.height) {\n resizer(canvas);\n size.width = canvas.width;\n size.height = canvas.height;\n }\n\n context.clearRect(0, 0, size.width, size.height);\n\n animatingFettis = animatingFettis.filter(function (fetti) {\n return updateFetti(context, fetti);\n });\n\n if (animatingFettis.length) {\n animationFrame = raf.frame(update);\n } else {\n onDone();\n }\n }\n\n animationFrame = raf.frame(update);\n destroy = onDone;\n });\n\n return {\n addFettis: function (fettis) {\n animatingFettis = animatingFettis.concat(fettis);\n\n return prom;\n },\n canvas: canvas,\n promise: prom,\n reset: function () {\n if (animationFrame) {\n raf.cancel(animationFrame);\n }\n\n if (destroy) {\n destroy();\n }\n }\n };\n }\n\n function confettiCannon(canvas, globalOpts) {\n var isLibCanvas = !canvas;\n var allowResize = !!prop(globalOpts || {}, 'resize');\n var hasResizeEventRegistered = false;\n var globalDisableForReducedMotion = prop(globalOpts, 'disableForReducedMotion', Boolean);\n var shouldUseWorker = canUseWorker && !!prop(globalOpts || {}, 'useWorker');\n var worker = shouldUseWorker ? getWorker() : null;\n var resizer = isLibCanvas ? setCanvasWindowSize : setCanvasRectSize;\n var initialized = (canvas && worker) ? !!canvas.__confetti_initialized : false;\n var preferLessMotion = typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion)').matches;\n var animationObj;\n\n function fireLocal(options, size, done) {\n var particleCount = prop(options, 'particleCount', onlyPositiveInt);\n var angle = prop(options, 'angle', Number);\n var spread = prop(options, 'spread', Number);\n var startVelocity = prop(options, 'startVelocity', Number);\n var decay = prop(options, 'decay', Number);\n var gravity = prop(options, 'gravity', Number);\n var drift = prop(options, 'drift', Number);\n var colors = prop(options, 'colors', colorsToRgb);\n var ticks = prop(options, 'ticks', Number);\n var shapes = prop(options, 'shapes');\n var scalar = prop(options, 'scalar');\n var flat = !!prop(options, 'flat');\n var origin = getOrigin(options);\n\n var temp = particleCount;\n var fettis = [];\n\n var startX = canvas.width * origin.x;\n var startY = canvas.height * origin.y;\n\n while (temp--) {\n fettis.push(\n randomPhysics({\n x: startX,\n y: startY,\n angle: angle,\n spread: spread,\n startVelocity: startVelocity,\n color: colors[temp % colors.length],\n shape: shapes[randomInt(0, shapes.length)],\n ticks: ticks,\n decay: decay,\n gravity: gravity,\n drift: drift,\n scalar: scalar,\n flat: flat\n })\n );\n }\n\n // if we have a previous canvas already animating,\n // add to it\n if (animationObj) {\n return animationObj.addFettis(fettis);\n }\n\n animationObj = animate(canvas, fettis, resizer, size , done);\n\n return animationObj.promise;\n }\n\n function fire(options) {\n var disableForReducedMotion = globalDisableForReducedMotion || prop(options, 'disableForReducedMotion', Boolean);\n var zIndex = prop(options, 'zIndex', Number);\n\n if (disableForReducedMotion && preferLessMotion) {\n return promise(function (resolve) {\n resolve();\n });\n }\n\n if (isLibCanvas && animationObj) {\n // use existing canvas from in-progress animation\n canvas = animationObj.canvas;\n } else if (isLibCanvas && !canvas) {\n // create and initialize a new canvas\n canvas = getCanvas(zIndex);\n document.body.appendChild(canvas);\n }\n\n if (allowResize && !initialized) {\n // initialize the size of a user-supplied canvas\n resizer(canvas);\n }\n\n var size = {\n width: canvas.width,\n height: canvas.height\n };\n\n if (worker && !initialized) {\n worker.init(canvas);\n }\n\n initialized = true;\n\n if (worker) {\n canvas.__confetti_initialized = true;\n }\n\n function onResize() {\n if (worker) {\n // TODO this really shouldn't be immediate, because it is expensive\n var obj = {\n getBoundingClientRect: function () {\n if (!isLibCanvas) {\n return canvas.getBoundingClientRect();\n }\n }\n };\n\n resizer(obj);\n\n worker.postMessage({\n resize: {\n width: obj.width,\n height: obj.height\n }\n });\n return;\n }\n\n // don't actually query the size here, since this\n // can execute frequently and rapidly\n size.width = size.height = null;\n }\n\n function done() {\n animationObj = null;\n\n if (allowResize) {\n hasResizeEventRegistered = false;\n global.removeEventListener('resize', onResize);\n }\n\n if (isLibCanvas && canvas) {\n if (document.body.contains(canvas)) {\n document.body.removeChild(canvas); \n }\n canvas = null;\n initialized = false;\n }\n }\n\n if (allowResize && !hasResizeEventRegistered) {\n hasResizeEventRegistered = true;\n global.addEventListener('resize', onResize, false);\n }\n\n if (worker) {\n return worker.fire(options, size, done);\n }\n\n return fireLocal(options, size, done);\n }\n\n fire.reset = function () {\n if (worker) {\n worker.reset();\n }\n\n if (animationObj) {\n animationObj.reset();\n }\n };\n\n return fire;\n }\n\n // Make default export lazy to defer worker creation until called.\n var defaultFire;\n function getDefaultFire() {\n if (!defaultFire) {\n defaultFire = confettiCannon(null, { useWorker: true, resize: true });\n }\n return defaultFire;\n }\n\n function transformPath2D(pathString, pathMatrix, x, y, scaleX, scaleY, rotation) {\n var path2d = new Path2D(pathString);\n\n var t1 = new Path2D();\n t1.addPath(path2d, new DOMMatrix(pathMatrix));\n\n var t2 = new Path2D();\n // see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix\n t2.addPath(t1, new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n x,\n y\n ]));\n\n return t2;\n }\n\n function shapeFromPath(pathData) {\n if (!canUsePaths) {\n throw new Error('path confetti are not supported in this browser');\n }\n\n var path, matrix;\n\n if (typeof pathData === 'string') {\n path = pathData;\n } else {\n path = pathData.path;\n matrix = pathData.matrix;\n }\n\n var path2d = new Path2D(path);\n var tempCanvas = document.createElement('canvas');\n var tempCtx = tempCanvas.getContext('2d');\n\n if (!matrix) {\n // attempt to figure out the width of the path, up to 1000x1000\n var maxSize = 1000;\n var minX = maxSize;\n var minY = maxSize;\n var maxX = 0;\n var maxY = 0;\n var width, height;\n\n // do some line skipping... this is faster than checking\n // every pixel and will be mostly still correct\n for (var x = 0; x < maxSize; x += 2) {\n for (var y = 0; y < maxSize; y += 2) {\n if (tempCtx.isPointInPath(path2d, x, y, 'nonzero')) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n }\n\n width = maxX - minX;\n height = maxY - minY;\n\n var maxDesiredSize = 10;\n var scale = Math.min(maxDesiredSize/width, maxDesiredSize/height);\n\n matrix = [\n scale, 0, 0, scale,\n -Math.round((width/2) + minX) * scale,\n -Math.round((height/2) + minY) * scale\n ];\n }\n\n return {\n type: 'path',\n path: path,\n matrix: matrix\n };\n }\n\n function shapeFromText(textData) {\n var text,\n scalar = 1,\n color = '#000000',\n // see https://nolanlawson.com/2022/04/08/the-struggle-of-using-native-emoji-on-the-web/\n fontFamily = '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\", \"Twemoji Mozilla\", \"system emoji\", sans-serif';\n\n if (typeof textData === 'string') {\n text = textData;\n } else {\n text = textData.text;\n scalar = 'scalar' in textData ? textData.scalar : scalar;\n fontFamily = 'fontFamily' in textData ? textData.fontFamily : fontFamily;\n color = 'color' in textData ? textData.color : color;\n }\n\n // all other confetti are 10 pixels,\n // so this pixel size is the de-facto 100% scale confetti\n var fontSize = 10 * scalar;\n var font = '' + fontSize + 'px ' + fontFamily;\n\n var canvas = new OffscreenCanvas(fontSize, fontSize);\n var ctx = canvas.getContext('2d');\n\n ctx.font = font;\n var size = ctx.measureText(text);\n var width = Math.ceil(size.actualBoundingBoxRight + size.actualBoundingBoxLeft);\n var height = Math.ceil(size.actualBoundingBoxAscent + size.actualBoundingBoxDescent);\n\n var padding = 2;\n var x = size.actualBoundingBoxLeft + padding;\n var y = size.actualBoundingBoxAscent + padding;\n width += padding + padding;\n height += padding + padding;\n\n canvas = new OffscreenCanvas(width, height);\n ctx = canvas.getContext('2d');\n ctx.font = font;\n ctx.fillStyle = color;\n\n ctx.fillText(text, x, y);\n\n var scale = 1 / scalar;\n\n return {\n type: 'bitmap',\n // TODO these probably need to be transfered for workers\n bitmap: canvas.transferToImageBitmap(),\n matrix: [scale, 0, 0, scale, -width * scale / 2, -height * scale / 2]\n };\n }\n\n module.exports = function() {\n return getDefaultFire().apply(this, arguments);\n };\n module.exports.reset = function() {\n getDefaultFire().reset();\n };\n module.exports.create = confettiCannon;\n module.exports.shapeFromPath = shapeFromPath;\n module.exports.shapeFromText = shapeFromText;\n}((function () {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n return this || {};\n})(), module, false));\n\n// end source content\n\nexport default module.exports;\nexport var create = module.exports.create;\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\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(() => {\n if (subscribe)\n register(id);\n }, [subscribe]);\n const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\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\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\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","/*#__NO_SIDE_EFFECTS__*/\nfunction memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { memo } from 'motion-utils';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { supportsScrollTimeline } from '../../utils/supports/scroll-timeline.mjs';\n\nclass BaseGroupPlaybackControls {\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 get finished() {\n // Support for new finished Promise and legacy thennable API\n return Promise.all(this.animations.map((animation) => \"finished\" in animation ? animation.finished : animation));\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 if (typeof fallback === \"function\") {\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 { BaseGroupPlaybackControls };\n","import { BaseGroupPlaybackControls } from './BaseGroup.mjs';\n\n/**\n * TODO: This is a temporary class to support the legacy\n * thennable API\n */\nclass GroupPlaybackControls extends BaseGroupPlaybackControls {\n then(onResolve, onReject) {\n return Promise.all(this.animations).then(onResolve).catch(onReject);\n }\n}\n\nexport { GroupPlaybackControls };\n","function getValueTransition(transition, key) {\n return transition\n ? transition[key] ||\n transition[\"default\"] ||\n transition\n : undefined;\n}\n\nexport { getValueTransition };\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","function isGenerator(type) {\n return typeof type === \"function\";\n}\n\nexport { isGenerator };\n","function attachTimeline(animation, timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n}\n\nexport { attachTimeline };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\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 'motion-utils';\nimport { supportsFlags } from './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.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","/*\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*/\n/*#__NO_SIDE_EFFECTS__*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { progress } from 'motion-utils';\n\nconst generateLinearEasing = (easing, duration, // as milliseconds\nresolution = 10 // 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","import { isBezierDefinition } from '../../../utils/is-bezier-definition.mjs';\nimport { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { generateLinearEasing } from './linear.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","const isDragging = {\n x: false,\n y: false,\n};\nfunction isDragActive() {\n return isDragging.x || isDragging.y;\n}\n\nexport { isDragActive, isDragging };\n","function resolveElements(elementOrSelector, scope, selectorCache) {\n var _a;\n if (elementOrSelector instanceof Element) {\n return [elementOrSelector];\n }\n else if (typeof elementOrSelector === \"string\") {\n let root = document;\n if (scope) {\n // TODO: Refactor to utils package\n // invariant(\n // Boolean(scope.current),\n // \"Scope provided, but no element detected.\"\n // )\n root = scope.current;\n }\n const elements = (_a = selectorCache === null || selectorCache === void 0 ? void 0 : selectorCache[elementOrSelector]) !== null && _a !== void 0 ? _a : root.querySelectorAll(elementOrSelector);\n return elements ? Array.from(elements) : [];\n }\n return Array.from(elementOrSelector);\n}\n\nexport { resolveElements };\n","import { resolveElements } from '../../utils/resolve-elements.mjs';\n\nfunction setupGesture(elementOrSelector, options) {\n const elements = resolveElements(elementOrSelector);\n const gestureAbortController = new AbortController();\n const eventOptions = {\n passive: true,\n ...options,\n signal: gestureAbortController.signal,\n };\n const cancel = () => gestureAbortController.abort();\n return [elements, eventOptions, cancel];\n}\n\nexport { setupGesture };\n","import { isDragActive } from './drag/state/is-active.mjs';\nimport { setupGesture } from './utils/setup.mjs';\n\n/**\n * Filter out events that are not pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction filterEvents(callback) {\n return (event) => {\n if (event.pointerType === \"touch\" || isDragActive())\n return;\n callback(event);\n };\n}\n/**\n * Create a hover gesture. hover() is different to .addEventListener(\"pointerenter\")\n * in that it has an easier syntax, filters out polyfilled touch events, interoperates\n * with drag gestures, and automatically removes the \"pointerennd\" event listener when the hover ends.\n *\n * @public\n */\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n const onPointerEnter = filterEvents((enterEvent) => {\n const { target } = enterEvent;\n const onHoverEnd = onHoverStart(enterEvent);\n if (typeof onHoverEnd !== \"function\" || !target)\n return;\n const onPointerLeave = filterEvents((leaveEvent) => {\n onHoverEnd(leaveEvent);\n target.removeEventListener(\"pointerleave\", onPointerLeave);\n });\n target.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n });\n elements.forEach((element) => {\n element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n });\n return cancel;\n}\n\nexport { hover };\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","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","const focusableElements = new Set([\n \"BUTTON\",\n \"INPUT\",\n \"SELECT\",\n \"TEXTAREA\",\n \"A\",\n]);\nfunction isElementKeyboardAccessible(element) {\n return (focusableElements.has(element.tagName) ||\n element.tabIndex !== -1);\n}\n\nexport { isElementKeyboardAccessible };\n","const isPressing = new WeakSet();\n\nexport { isPressing };\n","import { isPressing } from './state.mjs';\n\n/**\n * Filter out events that are not \"Enter\" keys.\n */\nfunction filterEvents(callback) {\n return (event) => {\n if (event.key !== \"Enter\")\n return;\n callback(event);\n };\n}\nfunction firePointerEvent(target, type) {\n target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nconst enableKeyboardPress = (focusEvent, eventOptions) => {\n const element = focusEvent.currentTarget;\n if (!element)\n return;\n const handleKeydown = filterEvents(() => {\n if (isPressing.has(element))\n return;\n firePointerEvent(element, \"down\");\n const handleKeyup = filterEvents(() => {\n firePointerEvent(element, \"up\");\n });\n const handleBlur = () => firePointerEvent(element, \"cancel\");\n element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n element.addEventListener(\"blur\", handleBlur, eventOptions);\n });\n element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n /**\n * Add an event listener that fires on blur to remove the keydown events.\n */\n element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\nexport { enableKeyboardPress };\n","import { isDragActive } from '../drag/state/is-active.mjs';\nimport { isNodeOrChild } from '../utils/is-node-or-child.mjs';\nimport { isPrimaryPointer } from '../utils/is-primary-pointer.mjs';\nimport { setupGesture } from '../utils/setup.mjs';\nimport { isElementKeyboardAccessible } from './utils/is-keyboard-accessible.mjs';\nimport { enableKeyboardPress } from './utils/keyboard.mjs';\nimport { isPressing } from './utils/state.mjs';\n\n/**\n * Filter out events that are not primary pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction isValidPressEvent(event) {\n return isPrimaryPointer(event) && !isDragActive();\n}\n/**\n * Create a press gesture.\n *\n * Press is different to `\"pointerdown\"`, `\"pointerup\"` in that it\n * automatically filters out secondary pointer events like right\n * click and multitouch.\n *\n * It also adds accessibility support for keyboards, where\n * an element with a press gesture will receive focus and\n * trigger on Enter `\"keydown\"` and `\"keyup\"` events.\n *\n * This is different to a browser's `\"click\"` event, which does\n * respond to keyboards but only for the `\"click\"` itself, rather\n * than the press start and end/cancel. The element also needs\n * to be focusable for this to work, whereas a press gesture will\n * make an element focusable by default.\n *\n * @public\n */\nfunction press(elementOrSelector, onPressStart, options = {}) {\n const [elements, eventOptions, cancelEvents] = setupGesture(elementOrSelector, options);\n const startPress = (startEvent) => {\n const element = startEvent.currentTarget;\n if (!isValidPressEvent(startEvent) || isPressing.has(element))\n return;\n isPressing.add(element);\n const onPressEnd = onPressStart(startEvent);\n const onPointerEnd = (endEvent, success) => {\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerCancel);\n if (!isValidPressEvent(endEvent) || !isPressing.has(element)) {\n return;\n }\n isPressing.delete(element);\n if (typeof onPressEnd === \"function\") {\n onPressEnd(endEvent, { success });\n }\n };\n const onPointerUp = (upEvent) => {\n onPointerEnd(upEvent, options.useGlobalTarget ||\n isNodeOrChild(element, upEvent.target));\n };\n const onPointerCancel = (cancelEvent) => {\n onPointerEnd(cancelEvent, false);\n };\n window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n window.addEventListener(\"pointercancel\", onPointerCancel, eventOptions);\n };\n elements.forEach((element) => {\n if (!isElementKeyboardAccessible(element) &&\n element.getAttribute(\"tabindex\") === null) {\n element.tabIndex = 0;\n }\n const target = options.useGlobalTarget ? window : element;\n target.addEventListener(\"pointerdown\", startPress, eventOptions);\n element.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions), eventOptions);\n });\n return cancelEvents;\n}\n\nexport { press };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n/*#__NO_SIDE_EFFECTS__*/\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n/*#__NO_SIDE_EFFECTS__*/\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","/*#__NO_SIDE_EFFECTS__*/\nconst noop = (any) => any;\n\nexport { noop };\n","import { millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils';\nimport { attachTimeline } from './utils/attach-timeline.mjs';\n\nclass NativeAnimationControls {\n constructor(animation) {\n this.animation = animation;\n }\n get duration() {\n var _a, _b, _c;\n const durationInMs = ((_b = (_a = this.animation) === null || _a === void 0 ? void 0 : _a.effect) === null || _b === void 0 ? void 0 : _b.getComputedTiming().duration) ||\n ((_c = this.options) === null || _c === void 0 ? void 0 : _c.duration) ||\n 300;\n return millisecondsToSeconds(Number(durationInMs));\n }\n get time() {\n var _a;\n if (this.animation) {\n return millisecondsToSeconds(((_a = this.animation) === null || _a === void 0 ? void 0 : _a.currentTime) || 0);\n }\n return 0;\n }\n set time(newTime) {\n if (this.animation) {\n this.animation.currentTime = secondsToMilliseconds(newTime);\n }\n }\n get speed() {\n return this.animation ? this.animation.playbackRate : 1;\n }\n set speed(newSpeed) {\n if (this.animation) {\n this.animation.playbackRate = newSpeed;\n }\n }\n get state() {\n return this.animation ? this.animation.playState : \"finished\";\n }\n get startTime() {\n return this.animation ? this.animation.startTime : null;\n }\n get finished() {\n return this.animation ? this.animation.finished : Promise.resolve();\n }\n play() {\n this.animation && this.animation.play();\n }\n pause() {\n this.animation && this.animation.pause();\n }\n stop() {\n if (!this.animation ||\n this.state === \"idle\" ||\n this.state === \"finished\") {\n return;\n }\n if (this.animation.commitStyles) {\n this.animation.commitStyles();\n }\n this.cancel();\n }\n flatten() {\n var _a;\n if (!this.animation)\n return;\n (_a = this.animation.effect) === null || _a === void 0 ? void 0 : _a.updateTiming({ easing: \"linear\" });\n }\n attachTimeline(timeline) {\n if (this.animation)\n attachTimeline(this.animation, timeline);\n return noop;\n }\n complete() {\n this.animation && this.animation.finish();\n }\n cancel() {\n try {\n this.animation && this.animation.cancel();\n }\n catch (e) { }\n }\n}\n\nexport { NativeAnimationControls };\n","import { millisecondsToSeconds } from 'motion-utils';\nimport { calcGeneratorDuration, maxGeneratorDuration } from './calc-duration.mjs';\n\n/**\n * Create a progress => progress easing function from a generator.\n */\nfunction createGeneratorEasing(options, scale = 100, createGenerator) {\n const generator = createGenerator({ ...options, keyframes: [0, scale] });\n const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n return {\n type: \"keyframes\",\n ease: (progress) => {\n return generator.next(duration * progress).value / scale;\n },\n duration: millisecondsToSeconds(duration),\n };\n}\n\nexport { createGeneratorEasing };\n","import { secondsToMilliseconds } from 'motion-utils';\nimport { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { createGeneratorEasing } from '../../generators/utils/create-generator-easing.mjs';\nimport { isGenerator } from '../../generators/utils/is-generator.mjs';\nimport { mapEasingToNativeEasing } from './easing.mjs';\n\nconst defaultEasing = \"easeOut\";\nfunction applyGeneratorOptions(options) {\n var _a;\n if (isGenerator(options.type)) {\n const generatorOptions = createGeneratorEasing(options, 100, options.type);\n options.ease = supportsLinearEasing()\n ? generatorOptions.ease\n : defaultEasing;\n options.duration = secondsToMilliseconds(generatorOptions.duration);\n options.type = \"keyframes\";\n }\n else {\n options.duration = secondsToMilliseconds((_a = options.duration) !== null && _a !== void 0 ? _a : 0.3);\n options.ease = options.ease || defaultEasing;\n }\n}\n// TODO: Reuse for NativeAnimation\nfunction convertMotionOptionsToNative(valueName, keyframes, options) {\n var _a;\n const nativeKeyframes = {};\n const nativeOptions = {\n fill: \"both\",\n easing: \"linear\",\n composite: \"replace\",\n };\n nativeOptions.delay = secondsToMilliseconds((_a = options.delay) !== null && _a !== void 0 ? _a : 0);\n applyGeneratorOptions(options);\n nativeOptions.duration = options.duration;\n const { ease, times } = options;\n if (times)\n nativeKeyframes.offset = times;\n nativeKeyframes[valueName] = keyframes;\n const easing = mapEasingToNativeEasing(ease, options.duration);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing)) {\n nativeKeyframes.easing = easing;\n }\n else {\n nativeOptions.easing = easing;\n }\n return {\n keyframes: nativeKeyframes,\n options: nativeOptions,\n };\n}\n\nexport { applyGeneratorOptions, convertMotionOptionsToNative };\n","import { NativeAnimationControls } from './NativeAnimationControls.mjs';\nimport { convertMotionOptionsToNative } from './utils/convert-options.mjs';\n\nclass PseudoAnimation extends NativeAnimationControls {\n constructor(target, pseudoElement, valueName, keyframes, options) {\n const animationOptions = convertMotionOptionsToNative(valueName, keyframes, options);\n const animation = target.animate(animationOptions.keyframes, {\n pseudoElement,\n ...animationOptions.options,\n });\n super(animation);\n }\n}\n\nexport { PseudoAnimation };\n","let pendingRules = {};\nlet style = null;\nconst css = {\n set: (selector, values) => {\n pendingRules[selector] = values;\n },\n commit: () => {\n if (!style) {\n style = document.createElement(\"style\");\n style.id = \"motion-view\";\n }\n let cssText = \"\";\n for (const selector in pendingRules) {\n const rule = pendingRules[selector];\n cssText += `${selector} {\\n`;\n for (const [property, value] of Object.entries(rule)) {\n cssText += ` ${property}: ${value};\\n`;\n }\n cssText += \"}\\n\";\n }\n style.textContent = cssText;\n document.head.appendChild(style);\n pendingRules = {};\n },\n remove: () => {\n if (style && style.parentElement) {\n style.parentElement.removeChild(style);\n }\n },\n};\n\nexport { css };\n","import { secondsToMilliseconds } from 'motion-utils';\nimport { BaseGroupPlaybackControls } from '../animation/controls/BaseGroup.mjs';\nimport { getValueTransition } from '../animation/utils/get-value-transition.mjs';\nimport { NativeAnimationControls } from '../animation/waapi/NativeAnimationControls.mjs';\nimport { PseudoAnimation } from '../animation/waapi/PseudoAnimation.mjs';\nimport { applyGeneratorOptions } from '../animation/waapi/utils/convert-options.mjs';\nimport { mapEasingToNativeEasing } from '../animation/waapi/utils/easing.mjs';\nimport { chooseLayerType } from './utils/choose-layer-type.mjs';\nimport { css } from './utils/css.mjs';\nimport { getLayerName } from './utils/get-layer-name.mjs';\nimport { getViewAnimations } from './utils/get-view-animations.mjs';\nimport { hasTarget } from './utils/has-target.mjs';\n\nconst definitionNames = [\"layout\", \"enter\", \"exit\", \"new\", \"old\"];\nfunction startViewAnimation(update, defaultOptions, targets) {\n if (!document.startViewTransition) {\n return new Promise(async (resolve) => {\n await update();\n resolve(new BaseGroupPlaybackControls([]));\n });\n }\n // TODO: Go over existing targets and ensure they all have ids\n /**\n * If we don't have any animations defined for the root target,\n * remove it from being captured.\n */\n if (!hasTarget(\"root\", targets)) {\n css.set(\":root\", {\n \"view-transition-name\": \"none\",\n });\n }\n /**\n * Set the timing curve to linear for all view transition layers.\n * This gets baked into the keyframes, which can't be changed\n * without breaking the generated animation.\n *\n * This allows us to set easing via updateTiming - which can be changed.\n */\n css.set(\"::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*)\", { \"animation-timing-function\": \"linear !important\" });\n css.commit(); // Write\n const transition = document.startViewTransition(async () => {\n await update();\n // TODO: Go over new targets and ensure they all have ids\n });\n transition.finished.finally(() => {\n css.remove(); // Write\n });\n return new Promise((resolve) => {\n transition.ready.then(() => {\n var _a;\n const generatedViewAnimations = getViewAnimations();\n const animations = [];\n /**\n * Create animations for our definitions\n */\n targets.forEach((definition, target) => {\n // TODO: If target is not \"root\", resolve elements\n // and iterate over each\n for (const key of definitionNames) {\n if (!definition[key])\n continue;\n const { keyframes, options } = definition[key];\n for (let [valueName, valueKeyframes] of Object.entries(keyframes)) {\n if (!valueKeyframes)\n continue;\n const valueOptions = {\n ...getValueTransition(defaultOptions, valueName),\n ...getValueTransition(options, valueName),\n };\n const type = chooseLayerType(key);\n /**\n * If this is an opacity animation, and keyframes are not an array,\n * we need to convert them into an array and set an initial value.\n */\n if (valueName === \"opacity\" &&\n !Array.isArray(valueKeyframes)) {\n const initialValue = type === \"new\" ? 0 : 1;\n valueKeyframes = [initialValue, valueKeyframes];\n }\n /**\n * Resolve stagger function if provided.\n */\n if (typeof valueOptions.delay === \"function\") {\n valueOptions.delay = valueOptions.delay(0, 1);\n }\n const animation = new PseudoAnimation(document.documentElement, `::view-transition-${type}(${target})`, valueName, valueKeyframes, valueOptions);\n animations.push(animation);\n }\n }\n });\n /**\n * Handle browser generated animations\n */\n for (const animation of generatedViewAnimations) {\n if (animation.playState === \"finished\")\n continue;\n const { effect } = animation;\n if (!effect || !(effect instanceof KeyframeEffect))\n continue;\n const { pseudoElement } = effect;\n if (!pseudoElement)\n continue;\n const name = getLayerName(pseudoElement);\n if (!name)\n continue;\n const targetDefinition = targets.get(name.layer);\n if (!targetDefinition) {\n /**\n * If transition name is group then update the timing of the animation\n * whereas if it's old or new then we could possibly replace it using\n * the above method.\n */\n const transitionName = name.type === \"group\" ? \"layout\" : \"\";\n const animationTransition = {\n ...getValueTransition(defaultOptions, transitionName),\n };\n applyGeneratorOptions(animationTransition);\n const easing = mapEasingToNativeEasing(animationTransition.ease, animationTransition.duration);\n effect.updateTiming({\n delay: secondsToMilliseconds((_a = animationTransition.delay) !== null && _a !== void 0 ? _a : 0),\n duration: animationTransition.duration,\n easing,\n });\n animations.push(new NativeAnimationControls(animation));\n }\n else if (hasOpacity(targetDefinition, \"enter\") &&\n hasOpacity(targetDefinition, \"exit\") &&\n effect\n .getKeyframes()\n .some((keyframe) => keyframe.mixBlendMode)) {\n animations.push(new NativeAnimationControls(animation));\n }\n else {\n animation.cancel();\n }\n }\n resolve(new BaseGroupPlaybackControls(animations));\n });\n });\n}\nfunction hasOpacity(target, key) {\n var _a;\n return (_a = target === null || target === void 0 ? void 0 : target[key]) === null || _a === void 0 ? void 0 : _a.keyframes.opacity;\n}\n\nexport { startViewAnimation };\n","import { noop } from 'motion-utils';\nimport { startViewAnimation } from './start.mjs';\n\n/**\n * TODO:\n * - Create view transition on next tick\n * - Replace animations with Motion animations\n * - Return GroupAnimation on next tick\n */\nclass ViewTransitionBuilder {\n constructor(update, options = {}) {\n this.currentTarget = \"root\";\n this.targets = new Map();\n this.notifyReady = noop;\n this.readyPromise = new Promise((resolve) => {\n this.notifyReady = resolve;\n });\n queueMicrotask(() => {\n startViewAnimation(update, options, this.targets).then((animation) => this.notifyReady(animation));\n });\n }\n get(selector) {\n this.currentTarget = selector;\n return this;\n }\n layout(keyframes, options) {\n this.updateTarget(\"layout\", keyframes, options);\n return this;\n }\n new(keyframes, options) {\n this.updateTarget(\"new\", keyframes, options);\n return this;\n }\n old(keyframes, options) {\n this.updateTarget(\"old\", keyframes, options);\n return this;\n }\n enter(keyframes, options) {\n this.updateTarget(\"enter\", keyframes, options);\n return this;\n }\n exit(keyframes, options) {\n this.updateTarget(\"exit\", keyframes, options);\n return this;\n }\n crossfade(options) {\n this.updateTarget(\"enter\", { opacity: 1 }, options);\n this.updateTarget(\"exit\", { opacity: 0 }, options);\n return this;\n }\n updateTarget(target, keyframes, options = {}) {\n const { currentTarget, targets } = this;\n if (!targets.has(currentTarget)) {\n targets.set(currentTarget, {});\n }\n const targetData = targets.get(currentTarget);\n targetData[target] = { keyframes, options };\n }\n then(resolve, reject) {\n return this.readyPromise.then(resolve, reject);\n }\n}\nfunction view(update, defaultOptions = {}) {\n return new ViewTransitionBuilder(update, defaultOptions);\n}\n\nexport { ViewTransitionBuilder, view };\n","import { isDragging } from './is-active.mjs';\n\nfunction setDragLock(axis) {\n if (axis === \"x\" || axis === \"y\") {\n if (isDragging[axis]) {\n return null;\n }\n else {\n isDragging[axis] = true;\n return () => {\n isDragging[axis] = false;\n };\n }\n }\n else {\n if (isDragging.x || isDragging.y) {\n return null;\n }\n else {\n isDragging.x = isDragging.y = true;\n return () => {\n isDragging.x = isDragging.y = false;\n };\n }\n }\n}\n\nexport { setDragLock };\n","export { GroupPlaybackControls } from './animation/controls/Group.mjs';\nexport { getValueTransition } from './animation/utils/get-value-transition.mjs';\nexport { calcGeneratorDuration, maxGeneratorDuration } from './animation/generators/utils/calc-duration.mjs';\nexport { createGeneratorEasing } from './animation/generators/utils/create-generator-easing.mjs';\nexport { isGenerator } from './animation/generators/utils/is-generator.mjs';\nexport { NativeAnimationControls } from './animation/waapi/NativeAnimationControls.mjs';\nexport { attachTimeline } from './animation/waapi/utils/attach-timeline.mjs';\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing } from './animation/waapi/utils/easing.mjs';\nexport { generateLinearEasing } from './animation/waapi/utils/linear.mjs';\nexport { hover } from './gestures/hover.mjs';\nexport { press } from './gestures/press/index.mjs';\nexport { isBezierDefinition } from './utils/is-bezier-definition.mjs';\nexport { resolveElements } from './utils/resolve-elements.mjs';\nexport { supportsFlags } from './utils/supports/flags.mjs';\nexport { supportsLinearEasing } from './utils/supports/linear-easing.mjs';\nexport { supportsScrollTimeline } from './utils/supports/scroll-timeline.mjs';\nexport { ViewTransitionBuilder, view } from './view/index.mjs';\nexport { isDragActive, isDragging } from './gestures/drag/state/is-active.mjs';\nexport { setDragLock } from './gestures/drag/state/set-active.mjs';\nexport { isNodeOrChild } from './gestures/utils/is-node-or-child.mjs';\nexport { isPrimaryPointer } from './gestures/utils/is-primary-pointer.mjs';\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { transformPropOrder } from './keys-transform.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n ...transformPropOrder,\n]);\n\nexport { positionalKeys };\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","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\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 // Execute this frame\n thisFrame.forEach(triggerCallback);\n // Clear the frame so no callbacks remain. This is to avoid\n // memory leaks should this render step not run for a while.\n thisFrame.clear();\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 'motion-utils';\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 { 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","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.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.18.2\";\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 \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","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","/**\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 instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","import { noop } from 'motion-utils';\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","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","// 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","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 { 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 { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { transformPropOrder } from '../../html/utils/keys-transform.mjs';\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, positionalValues, removeNonTranslationalTransform };\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","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 'motion-utils';\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","/**\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 { isNone } from '../../animation/utils/is-none.mjs';\nimport { positionalKeys } from '../html/utils/keys-position.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.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","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 { isGenerator } from 'motion-dom';\nimport { warning } from 'motion-utils';\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","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","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 &&\n onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete && 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 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 'motion-utils';\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","/**\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","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 'motion-utils';\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 { 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","const springDefaults = {\n // Default spring physics\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n velocity: 0.0,\n // Default duration/bounce-based options\n duration: 800, // in ms\n bounce: 0.3,\n visualDuration: 0.3, // in seconds\n // Rest thresholds\n restSpeed: {\n granular: 0.01,\n default: 2,\n },\n restDelta: {\n granular: 0.005,\n default: 0.5,\n },\n // Limits\n minDuration: 0.01, // in seconds\n maxDuration: 10.0, // in seconds\n minDamping: 0.05,\n maxDamping: 1,\n};\n\nexport { springDefaults };\n","import { warning, secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { springDefaults } from './defaults.mjs';\n\nconst safeMin = 0.001;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(springDefaults.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(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n duration = clamp(springDefaults.minDuration, springDefaults.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: springDefaults.stiffness,\n damping: springDefaults.damping,\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 };\n","import { calcGeneratorDuration, maxGeneratorDuration, generateLinearEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { springDefaults } from './defaults.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: springDefaults.velocity,\n stiffness: springDefaults.stiffness,\n damping: springDefaults.damping,\n mass: springDefaults.mass,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n if (options.visualDuration) {\n const visualDuration = options.visualDuration;\n const root = (2 * Math.PI) / (visualDuration * 1.2);\n const stiffness = root * root;\n const damping = 2 *\n clamp(0.05, 1, 1 - (options.bounce || 0)) *\n Math.sqrt(stiffness);\n springOptions = {\n ...springOptions,\n mass: springDefaults.mass,\n stiffness,\n damping,\n };\n }\n else {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: springDefaults.mass,\n };\n springOptions.isResolvedFromDuration = true;\n }\n }\n return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n const options = typeof optionsOrVisualDuration !== \"object\"\n ? {\n visualDuration: optionsOrVisualDuration,\n keyframes: [0, 1],\n bounce,\n }\n : optionsOrVisualDuration;\n let { restSpeed, restDelta } = options;\n const origin = options.keyframes[0];\n const target = options.keyframes[options.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\n ? springDefaults.restSpeed.granular\n : springDefaults.restSpeed.default);\n restDelta || (restDelta = isGranularScale\n ? springDefaults.restDelta.granular\n : springDefaults.restDelta.default);\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 const generator = {\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 toString: () => {\n const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n const easing = generateLinearEasing((progress) => generator.next(calculatedDuration * progress).value, calculatedDuration, 30);\n return calculatedDuration + \"ms \" + easing;\n },\n };\n return generator;\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","import { isBezierDefinition } from 'motion-dom';\nimport { invariant, noop } from 'motion-utils';\nimport { anticipate } from '../anticipate.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.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","import { invariant, noop, progress } from 'motion-utils';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix/index.mjs';\nimport { pipe } from './pipe.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 && output[0] === output[1])\n return () => output[1];\n const isZeroDeltaRange = input[0] === input[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 if (isZeroDeltaRange && v < input[0])\n return output[0];\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 { progress } from 'motion-utils';\nimport { mixNumber } from '../mix/number.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","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 { isGenerator, calcGeneratorDuration } from 'motion-dom';\nimport { invariant, millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.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 { mapEasingToNativeEasing } from 'motion-dom';\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","import { memo } from 'motion-utils';\n\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\nexport { supportsWaapi };\n","import { supportsLinearEasing, attachTimeline, isGenerator, isWaapiSupportedEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils';\nimport { 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 { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { acceleratedValues } from './utils/accelerated-values.mjs';\nimport { startWaapiAnimation } from './waapi/index.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.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 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 (!motionValue.owner || !motionValue.owner.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 if (!motionValue ||\n !motionValue.owner ||\n !(motionValue.owner.current instanceof HTMLElement)) {\n return false;\n }\n const { onUpdate, transformTemplate } = motionValue.owner.getProps();\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\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 !onUpdate &&\n !transformTemplate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","import { transformProps } from '../../render/html/utils/keys-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","/**\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 { getValueTransition, GroupPlaybackControls } from 'motion-dom';\nimport { secondsToMilliseconds } from 'motion-utils';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.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 { getValueTransition } from 'motion-dom';\nimport { positionalKeys } from '../../render/html/utils/keys-position.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { animateMotionValue } from './motion-value.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 && positionalKeys.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","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 { isPrimaryPointer } from 'motion-dom';\n\nfunction extractEventInfo(event) {\n return {\n point: {\n x: event.pageX,\n y: event.pageY,\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\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 { isPrimaryPointer } from 'motion-dom';\nimport { secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { pipe } from '../../utils/pipe.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 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 'motion-utils';\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/motiondivision/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from 'motion-utils';\nimport { setDragLock } from 'motion-dom';\nimport { PanSession } from '../pan/PanSession.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.openDragLock = 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).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.openDragLock)\n this.openDragLock();\n this.openDragLock = setDragLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openDragLock)\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.openDragLock)\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.openDragLock) {\n this.openDragLock();\n this.openDragLock = 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 'motion-utils';\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 'motion-utils';\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","\"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 { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { animateMotionValue } from '../interfaces/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","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\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 { secondsToMilliseconds } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\nfunction delayInSeconds(callback, timeout) {\n return delay(callback, secondsToMilliseconds(timeout));\n}\n\nexport { delay, delayInSeconds };\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 { progress, noop } from 'motion-utils';\nimport { circOut } from '../../easing/circ.mjs';\nimport { mixNumber } from '../../utils/mix/number.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","import { getValueTransition } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { cancelFrame, frameData, frameSteps, frame } from '../../frameloop/frame.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.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 { createBox, createDelta } from '../geometry/models.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 { globalProjectionState } from './state.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 { Feature } from '../motion/features/Feature.mjs';\nimport { hover } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handleHoverEvent(node, event, lifecycle) {\n const { props } = node;\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n }\n const eventName = (\"onHover\" + lifecycle);\n const callback = props[eventName];\n if (callback) {\n frame.postRender(() => callback(event, extractEventInfo(event)));\n }\n}\nclass HoverGesture extends Feature {\n mount() {\n const { current } = this.node;\n if (!current)\n return;\n this.unmount = hover(current, (startEvent) => {\n handleHoverEvent(this.node, startEvent, \"Start\");\n return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n });\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","import { Feature } from '../motion/features/Feature.mjs';\nimport { press } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handlePressEvent(node, event, lifecycle) {\n const { props } = node;\n if (node.animationState && props.whileTap) {\n node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n }\n const eventName = (\"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle));\n const callback = props[eventName];\n if (callback) {\n frame.postRender(() => callback(event, extractEventInfo(event)));\n }\n}\nclass PressGesture extends Feature {\n mount() {\n const { current } = this.node;\n if (!current)\n return;\n this.unmount = press(current, (startEvent) => {\n handlePressEvent(this.node, startEvent, \"Start\");\n return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n }, { useGlobalTarget: this.node.props.globalTapTarget });\n }\n unmount() { }\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\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\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","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 if (instance) {\n visualState.onMount && visualState.onMount(instance);\n }\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 { 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(null);\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","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { warning, invariant } from 'motion-utils';\nimport { forwardRef, useContext } from 'react';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useVisualElement } from './utils/use-visual-element.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 var _a, _b;\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 MotionComponent.displayName = `motion.${typeof Component === \"string\"\n ? Component\n : `create(${(_b = (_a = Component.displayName) !== null && _a !== void 0 ? _a : Component.name) !== null && _b !== void 0 ? _b : \"\"})`}`;\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","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.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';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onUpdate, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onUpdate) {\n /**\n * onMount works without the VisualElement because it could be\n * called before the VisualElement payload has been hydrated.\n * (e.g. if someone is using m components )\n */\n state.onMount = (instance) => onUpdate({ props, current: instance, ...state });\n state.onUpdate = (visualElement) => onUpdate(visualElement);\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","/**\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 { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { transformPropOrder } from './keys-transform.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 { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { buildTransform } from './build-transform.mjs';\nimport { transformProps } from './keys-transform.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\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 { 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 { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { buildSVGPath } from './path.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.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 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","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\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/keys-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 { transformPropOrder } from '../../html/utils/keys-transform.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.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 { frame } from '../../frameloop/frame.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nfunction updateSVGDimensions(instance, renderState) {\n try {\n renderState.dimensions =\n typeof instance.getBBox === \"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}\nconst layoutProps = [\"x\", \"y\", \"width\", \"height\", \"cx\", \"cy\", \"r\"];\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onUpdate: ({ props, prevProps, current, renderState, latestValues, }) => {\n if (!current)\n return;\n let hasTransform = !!props.drag;\n if (!hasTransform) {\n for (const key in latestValues) {\n if (transformProps.has(key)) {\n hasTransform = true;\n break;\n }\n }\n }\n if (!hasTransform)\n return;\n let needsMeasure = !prevProps;\n if (prevProps) {\n /**\n * Check the layout props for changes, if any are found we need to\n * measure the element again.\n */\n for (let i = 0; i < layoutProps.length; i++) {\n const key = layoutProps[i];\n if (props[key] !==\n prevProps[key]) {\n needsMeasure = true;\n }\n }\n }\n if (!needsMeasure)\n return;\n frame.read(() => {\n updateSVGDimensions(current, renderState);\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, isSVGTag(current.tagName), props.transformTemplate);\n renderSVG(current, renderState);\n });\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 { 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","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\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.18.2\", `Attempting to mix Motion versions ${nextValue.version} with 11.18.2 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","import { time } from '../frameloop/sync-time.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { transformProps } from './html/utils/keys-transform.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.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, onUpdate } = visualState;\n this.onUpdate = onUpdate;\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 this.onUpdate && this.onUpdate(this);\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';\nimport { isMotionValue } from '../../value/utils/is-motion-value.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 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}\n\nexport { DOMVisualElement };\n","import { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { transformProps } from './utils/keys-transform.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.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}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { createBox } from '../../projection/geometry/models.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.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","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n"],"names":["require","React","React__default","e","isProd","process","env","isString","o","Object","prototype","toString","call","StyleSheet","param","ref","_name","name","_optimizeForSpeed","optimizeForSpeed","invariant$1","_deletedRulePlaceholder","_serverSheet","undefined","_tags","_injected","_rulesCount","node","window","document","querySelector","_nonce","getAttribute","_proto","setOptimizeForSpeed","bool","flush","inject","isOptimizeForSpeed","_this","makeStyleTag","getSheet","console","warn","cssRules","insertRule","rule","index","cssText","push","deleteRule","getSheetForTag","tag","sheet","i","styleSheets","length","ownerNode","error","insertionPoint","replaceRule","trim","textContent","parentNode","removeChild","forEach","reduce","rules","concat","Array","map","cssString","relativeToTag","createElement","setAttribute","type","appendChild","createTextNode","head","getElementsByTagName","insertBefore","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","Constructor","get","condition","message","stringHash","str","_$hash","charCodeAt","cache","computeId","baseId","propsToString","String","computeSelector","id","css","replace","idcss","StyleSheetRegistry","_styleSheet","styleSheet","_sheet","_fromServer","_indices","_instancesCounts","add","isArray","children","selectFromServer","keys","acc","tagName","getIdAndRules","styleId","indices","filter","remove","invariant","tagFromServer","update","nextProps","fromServer","join","Boolean","styles","options","args","nonce","dangerouslySetInnerHTML","__html","dynamic","elements","slice","querySelectorAll","element","StyleSheetContext","createContext","displayName","useInsertionEffect","useLayoutEffect","defaultRegistry","JSXStyle","registry","useContext","info","tagInfo","exports","module","main","global","isWorker","workerSize","skipTransform","frame","cancel","TIME","frames","lastFrameTime","worker","prom","resolves","defaultFire","canUseWorker","Worker","Blob","Promise","OffscreenCanvas","OffscreenCanvasRenderingContext2D","HTMLCanvasElement","transferControlToOffscreen","URL","createObjectURL","canUsePaths","Path2D","DOMMatrix","noop","promise","func","ModulePromise","Prom","bitmapMapper","canvas","ctx","getContext","fillRect","bitmap","transferToImageBitmap","createPattern","Map","transform","has","width","height","drawImage","set","clear","raf","Math","floor","requestAnimationFrame","cancelAnimationFrame","cb","random","onFrame","time","setTimeout","timer","clearTimeout","getWorker","code","decorate","execute","callback","postMessage","init","offscreen","fire","size","done","resolve","workerDone","msg","data","removeEventListener","addEventListener","bind","reset","defaults","particleCount","angle","spread","startVelocity","decay","gravity","drift","ticks","x","y","shapes","zIndex","colors","disableForReducedMotion","scalar","prop","val","onlyPositiveInt","number","toDecimal","parseInt","colorsToRgb","hexToRgb","r","substring","g","b","setCanvasWindowSize","documentElement","clientWidth","clientHeight","setCanvasRectSize","rect","getBoundingClientRect","confettiCannon","globalOpts","animationObj","isLibCanvas","allowResize","hasResizeEventRegistered","globalDisableForReducedMotion","shouldUseWorker","resizer","initialized","__confetti_initialized","preferLessMotion","matchMedia","matches","Number","style","position","top","left","pointerEvents","body","onResize","obj","resize","contains","fireLocal","origin","animationFrame","destroy","animatingFettis","context","flat","temp","fettis","startX","startY","randomPhysics","opts","radAngle","PI","radSpread","wobble","wobbleSpeed","min","velocity","angle2D","tiltAngle","color","shape","tick","totalTicks","tiltSin","tiltCos","wobbleX","wobbleY","ovalScalar","max","addFettis","onDone","clearRect","fetti","updateFetti","cos","sin","pathString","pathMatrix","scaleX","scaleY","rotation","path2d","t1","t2","radiusX","radiusY","endAngle","progress","x1","y1","x2","y2","fillStyle","beginPath","path","matrix","fill","abs","addPath","multiplySelf","pattern","setTransform","globalAlpha","ellipse","save","translate","rotate","scale","arc","antiClockwise","restore","rot","innerRadius","outerRadius","spikes","step","lineTo","moveTo","closePath","getDefaultFire","useWorker","apply","arguments","create","shapeFromPath","pathData","tempCtx","tempCanvas","minX","minY","maxX","maxY","isPointInPath","maxDesiredSize","round","shapeFromText","textData","text","fontFamily","fontSize","font","measureText","ceil","actualBoundingBoxRight","actualBoundingBoxLeft","actualBoundingBoxAscent","actualBoundingBoxDescent","padding","fillText","self","__webpack_exports__","Z","usePresence","subscribe","react__WEBPACK_IMPORTED_MODULE_0__","_context_PresenceContext_mjs__WEBPACK_IMPORTED_MODULE_1__","O","isPresent","onExitComplete","register","useId","useEffect","safeToRemove","useCallback","LayoutGroupContext","MotionConfigContext","transformPagePoint","p","isStatic","reducedMotion","PresenceContext","now","isAnimationControls","v","start","isKeyframesTarget","shallowCompare","next","prev","prevLength","isVariantLabel","getValueState","visualElement","state","values","value","getVelocity","resolveVariantFromProps","definition","custom","current","variants","resolveVariant","getProps","variantPriorityOrder","variantProps","memo","result","supportsScrollTimeline","ScrollTimeline","BaseGroup_BaseGroupPlaybackControls","constructor","animations","stop","runAll","finished","all","animation","getAll","propName","setAll","newValue","attachTimeline","timeline","fallback","subscriptions","speed","startTime","duration","methodName","controls","flatten","play","pause","complete","GroupPlaybackControls","then","onResolve","onReject","catch","get_value_transition_getValueTransition","transition","calcGeneratorDuration","generator","Infinity","isGenerator","onfinish","isBezierDefinition","easing","supportsFlags","linearEasing","supportsLinearEasing","memoSupports","supportsFlag","memoized","_a","animate","opacity","from","to","toFromDifference","generateLinearEasing","resolution","points","numPoints","cubicBezierAsString","a","c","d","supportedWaapiEasing","linear","ease","easeIn","easeOut","easeInOut","circIn","circOut","backIn","backOut","isDragging","setupGesture","elementOrSelector","resolveElements","scope","selectorCache","Element","root","gestureAbortController","AbortController","passive","signal","abort","filterEvents","event","pointerType","isNodeOrChild","parent","child","parentElement","isPrimaryPointer","button","isPrimary","focusableElements","Set","isPressing","WeakSet","keyboard_filterEvents","firePointerEvent","dispatchEvent","PointerEvent","bubbles","enableKeyboardPress","focusEvent","eventOptions","currentTarget","handleKeydown","handleKeyup","isValidPressEvent","time_conversion_secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","noop_noop","any","transformPropOrder","transformProps","positionalKeys","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","MotionGlobalConfig","skipAnimations","useManualTiming","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","delta","timestamp","isProcessing","flagRunNextFrame","steps","createRenderStep","thisFrame","nextFrame","flushNextFrame","toKeepAlive","latestFrameData","triggerCallback","schedule","keepAlive","immediate","queue","addToCurrentFrame","delete","frameData","read","resolveKeyframes","preRender","render","postRender","processBatch","performance","wake","frame_frame","cancelFrame","frameSteps","clearTime","newTime","queueMicrotask","addUniqueItem","arr","item","indexOf","removeItem","splice","SubscriptionManager","handler","notify","numSubscriptions","getSize","isFloat","isNaN","parseFloat","collectMotionValues","MotionValue","version","canTrackVelocity","events","updateAndNotify","currentTime","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","hasAnimated","owner","prevFrameValue","prevUpdatedAt","onChange","subscription","on","eventName","unsubscribe","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","setWithVelocity","jump","endAnimation","getPrevious","frameDuration","startAnimation","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","motionValue","isMotionValue","addValueToWillChange","willChange","getValue","camelToDash","toLowerCase","optimizedAppearDataAttribute","instantAnimationState","calcBezier","t","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","binarySubdivide","lowerBound","upperBound","currentX","currentT","aX","mirrorEasing","reverseEasing","backInOut","anticipate","pow","acos","circInOut","isZeroValueString","test","clamp","parse","alpha","default","sanitize","floatRegex","singleColorRegex","isColorString","testProp","startsWith","hasOwnProperty","splitColor","aName","bName","cName","match","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hex","createUnitType","endsWith","unit","split","degrees","percent","px","vh","vw","progressPercentage","hsla","hue","saturation","lightness","colorRegex","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","indexes","var","types","tokenised","parsedValue","parseComplexValue","createTransformer","source","numSections","output","convertNumbersToZero","complex","_b","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","defaultValue","functionRegex","functions","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","right","bottom","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","backgroundPositionX","backgroundPositionY","rotateX","rotateY","rotateZ","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","z","perspective","transformPerspective","originX","originY","originZ","fillOpacity","strokeOpacity","numOctaves","defaultValueTypes","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","invalidTemplates","isNumOrPxType","getPosFromMatrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","toResolve","isScheduled","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","resolver","needsMeasurement","elementsToMeasure","transformsToRestore","removedTransforms","removeNonTranslationalTransform","measureInitialState","measureEndState","suspendedScrollY","scrollTo","readAllKeyframes","readKeyframes","KeyframeResolver","unresolvedKeyframes","onComplete","isAsync","isComplete","scheduleResolve","currentValue","finalKeyframe","valueAsRead","readValue","setFinalKeyframe","renderEndStyles","resume","isNumericalString","checkStringStartsWith","token","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","splitCSSVariableRegex","testValueType","dimensionValueTypes","findDimensionValueType","find","DOMKeyframesResolver","keyframe","resolved","getVariableValue","depth","parseCSSVariable","exec","token1","token2","getComputedStyle","getPropertyValue","trimmed","resolveNoneKeyframes","originType","targetType","noneKeyframeIndexes","makeNoneKeyframesAnimatable","animatableTemplate","noneIndex","pageYOffset","measuredOrigin","measureViewportBox","measureKeyframe","finalKeyframeIndex","unsetTransformName","unsetTransformValue","isAnimatable","isNotNull","getFinalKeyframe","keyframes","repeat","repeatType","resolvedKeyframes","BaseAnimation","autoplay","delay","repeatDelay","isStopped","hasAttemptedResolve","createdAt","updateFinishedPromise","calcStartTime","resolvedAt","_resolved","onKeyframesResolved","onUpdate","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","hasKeyframesChanged","resolveFinishedPromise","resolvedAnimation","initPlayback","onPostResolved","reject","currentFinishedPromise","mixNumber","hueToRgb","q","mixImmediate","mixLinearColor","fromExpo","expo","sqrt","colorTypes","getColorType","asRGBA","warning","model","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","combineFunctions","pipe","transformers","invisibleValues","complex_mixNumber","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","template","originStats","targetStats","matchOrder","orderedOrigin","pointers","originIndex","originValue","mixer","calcGeneratorVelocity","resolveValue","prevT","springDefaults","stiffness","damping","mass","bounce","visualDuration","restSpeed","granular","restDelta","minDuration","maxDuration","minDamping","maxDamping","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","some","spring","optionsOrVisualDuration","resolveSpring","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","envelope","derivative","exponentialDecay","safeMin","exp","approximateRoot","initialGuess","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","dampedAngularFreq","freqForT","sinh","cosh","calculatedDuration","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","timeReachedBoundary","spring$1","isOutOfBounds","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","checkCatchBoundary","hasUpdatedFrame","isEasingArray","easingLookup","easingDefinitionToFunction","keyframeValues","times","easingFunctions","mapTimeToKeyframe","interpolate","input","isClamp","inputLength","isZeroDeltaRange","reverse","mixers","createMixers","customMixer","mixerFactory","numMixers","interpolator","progressInRange","offset","defaultOffset","fillOffset","remaining","offsetProgress","frameloopDriver","passTimestamp","generators","tween","percentToProgress","MainThreadAnimation","holdTime","cancelTime","playbackSpeed","pendingPlayState","teardown","onStop","KeyframeResolver$1","assign","keyframes$1","mapPercentToKeyframes","mirroredGenerator","generatorFactory","resolvedDuration","totalDuration","sample","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","iterationProgress","isAnimationFinished","finish","driver","newSpeed","hasChanged","onPlay","stopDriver","acceleratedValues","supportsWaapi","unsupportedEasingFunctions","AcceleratedAnimation","isWaapiSupportedEasing","every","pregeneratedAnimation","pregenerateKeyframes","sampleAnimation","pregeneratedKeyframes","startWaapiAnimation","valueName","keyframeOptions","easing_mapEasingToNativeEasing","segmentEasing","iterations","direction","pendingTimeline","playbackRate","playState","sampleTime","supports","HTMLElement","transformTemplate","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","animateMotionValue","isHandoff","valueTransition","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","shouldSkip","animateTarget","targetAndTransition","transitionOverride","transitionEnd","animationTypeState","animationState","getState","latestValues","valueTarget","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","MotionHandoffAnimation","appearId","shouldReduceMotion","setTarget","hasValue","addValue","animateVariant","variant","presenceContext","getAnimation","getChildAnimations","variantChildren","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sort","sortByTreeOrder","first","last","sortNodePosition","numVariantProps","reversePriorityOrder","numAnimationTypes","createTypeState","isActive","prevResolvedValues","createState","whileInView","whileHover","whileTap","whileDrag","whileFocus","exit","Feature","isMounted","AnimationFeature","createAnimationState","animateVisualElement","resolvedDefinition","isInitialRender","buildResolvedTypeValues","animateChanges","changedActiveType","getVariantContext","isControllingVariants","initial","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","shouldAnimateType","handledRemovedValues","definitionList","resolvedValues","allKeys","markToAnimate","liveStyle","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setActive","setAnimateFunction","makeAnimator","updateAnimationControlsSubscription","unmountControls","mount","prevAnimate","prevProps","unmount","ExitAnimationFeature","prevIsPresent","prevPresenceContext","exitAnimation","addDomEvent","extractEventInfo","point","pageX","pageY","addPointerInfo","addPointerEvent","PanSession","handlers","contextWindow","dragSnapToOrigin","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","isRefObject","calcLength","axis","calcAxisDelta","originPoint","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","layout","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","hasTransform","has2DTranslate","is2DTranslate","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","translateAxis","transformAxis","axisTranslate","axisScale","axisOrigin","transformBox","instance","transformBoxPoints","topLeft","bottomRight","getContextWindow","ownerDocument","defaultView","elementDragControls","WeakMap","VisualElementDragControls","openDragLock","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","pauseAnimation","stopAnimation","drag","dragPropagation","onDragStart","resolveConstraints","projection","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","getAnimationState","getTransformPagePoint","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","dragConstraints","measure","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measurePageBox","rootProjectionNode","viewportBox","scroll","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","onDragTransitionEnd","startAxisValueAnimation","dragKey","toUpperCase","externalMotionValue","scalePositionWithinConstraints","boxProgress","calcOrigin","sourceLength","targetLength","updateScroll","updateLayout","addListeners","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","DragGesture","removeGroupControls","dragControls","asyncHandler","PanGesture","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","isValidProp","preloadedFeatures","createVisualElement","SwitchLayoutGroupContext","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","scaleCorrectors","microtask","cancelMicrotask","MeasureLayoutWithContext","Component","componentDidMount","layoutGroup","switchLayoutGroup","layoutId","defaultScaleCorrectors","group","didUpdate","setOptions","getSnapshotBeforeUpdate","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","componentDidUpdate","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","MeasureLayout","jsx","applyTo","boxShadow","treeScale","projectionDelta","shadow","xScale","yScale","averageScale","compareByDepth","FlatTree","isDirty","resolveMotionValue","unwrappedValue","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","copyAxisDeltaInto","originDelta","removePointDelta","removeAxisTransforms","transforms","scaleKey","originKey","sourceAxis","removeAxisDelta","relativeProgress","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","axisEquals","axisEqualsRounded","boxEqualsRounded","aspectRatio","axisDeltaEquals","NodeStack","scheduleRender","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","metrics","totalNodes","resolvedTargetDeltas","recalculatedProjection","isDebug","MotionDebug","transformAxes","hiddenVisibility","visibility","create_projection_node_id","resetDistortingTransform","sharedAnimationValues","setStaticValue","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","hasCheckedOptimisedAppear","eventHandlers","hasTreeAnimated","updateScheduled","scheduleUpdate","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","record","resolvedRelativeTargetAt","hasProjected","isVisible","animationProgress","sharedNodes","notifyListeners","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","MotionCancelOptimisedAnimation","cancelTreeOptimisedTransformAnimations","projectionNode","MotionHasOptimisedAnimation","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","layoutScroll","isRoot","wasRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","checkNodeWasScrollRoot","boxWithoutScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","applyTreeDeltas","treePath","isSharedTransition","treeLength","display","prevProjectionDelta","createProjectionDeltas","notifyAll","projectionDeltaWithTransform","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacityExit","borderLabel","followRadius","leadRadius","animateSingleValue","motionValue$1","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","config","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","resetValues","getProjectionStyles","styleProp","emptyStyles","valuesToRender","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","elementScaleX","elementScaleY","transformOrigin","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","includes","string","roundPoint","DocumentProjectionNode","scrollLeft","scrollTop","HTMLProjectionNode","documentNode","handleHoverEvent","lifecycle","HoverGesture","hover","onHoverStart","onPointerEnter","enterEvent","onHoverEnd","onPointerLeave","leaveEvent","endEvent","FocusGesture","onFocus","isFocusVisible","onBlur","handlePressEvent","PressGesture","press","onPressStart","cancelEvents","startPress","onPressEnd","onPointerEnd","success","onPointerUp","onPointerCancel","upEvent","useGlobalTarget","cancelEvent","tabIndex","globalTapTarget","observerCallbacks","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","InViewFeature","hasEnteredView","isInView","startObserver","viewport","rootMargin","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","JSON","stringify","IntersectionObserver","observe","unobserve","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","LazyContext","strict","MotionContext","isVariantNode","variantLabelsAsDependency","featureProps","focus","tap","pan","inView","featureDefinitions","isEnabled","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","makeUseVisualState","react","make","makeState","scrapeMotionValuesFromProps","createRenderState","makeLatestValues","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","renderState","onMount","use_constant","h","getValueAsType","translateAlias","numTransforms","buildHTMLStyles","vars","hasTransformOrigin","valueAsType","buildTransform","transformString","transformIsDefault","valueIsDefault","transformName","dashKeys","array","camelKeys","transform_origin_calcOrigin","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","isSVGTag","viewBox","attrs","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","createHtmlRenderState","createSvgRenderState","renderHTML","setProperty","camelCaseAttributes","renderSVG","_styleProp","isForcedMotionValue","newValues","scrape_motion_values_scrapeMotionValuesFromProps","charAt","layoutProps","svgMotionConfig","useVisualState","needsMeasure","updateSVGDimensions","getBBox","htmlMotionConfig","copyRawValuesOnly","validMotionProps","isValidMotionProp","shouldForward","prefersReducedMotion","hasReducedMotionListener","valueTypes","findValueType","visualElementStore","propEventHandlers","VisualElement","_props","_prevProps","_visualElement","reducedMotionConfig","visualState","features","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","renderScheduledAt","baseTarget","initialValues","initialMotionValues","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","is_browser","j","motionMediaQuery","setReducedMotionPreferences","addListener","feature","removeSyncCheck","valueIsTransform","removeOnChange","latestValue","removeOnRenderRequest","MotionCheckAppearSync","other","sortInstanceNodePosition","updateFeatures","featureDefinition","FeatureConstructor","build","measureInstanceViewportBox","getStaticValue","listener","updateMotionValuesFromProps","nextValue","prevValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","DOMVisualElement","compareDocumentPosition","childSubscription","HTMLVisualElement","defaultType","computedStyle","SVGVisualElement","motion","createDOMMotionComponentProxy","componentFactory","Proxy","componentCache","_target","ProjectionNode","allowProjection","Fragment","forwardMotionProps","createRendererMotionComponent","useRender","MotionComponent","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","useMemo","isBrowser","layoutProjection","getProjectionFunctionality","combined","useVisualElement","ProjectionNodeConstructor","lazyContext","_","visualElementRef","useRef","renderer","initialLayoutGroupConfig","use_visual_element_createProjectionNode","getClosestProjectingNode","optimisedAppearId","wantsHandoff","MotionHandoffIsComplete","use_isomorphic_effect","L","MotionIsMounted","MotionHandoffMarkAsComplete","jsxs","Provider","loadFeatures","ForwardRefMotionComponent","forwardRef","createUseRender","visualProps","useVisualProps","_isStatic","rawStyles","htmlProps","useStyle","useInitialMotionValues","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","onTap","onTapStart","filteredProps","filterProps","isDom","elementProps","renderedChildren","useConstant","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__"],"sourceRoot":""}