{"version":3,"file":"static/chunks/520.857e32d52384b7c3.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@swc/helpers/esm/_tagged_template_literal.js","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/wrap.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/sequence/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animate.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/utils/calc-duration.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/utils/default-transitions.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/animation/animators/waapi/utils/get-final-keyframe.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/BaseAnimation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/ease.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/utils/map.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/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/utils/interpolate.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/easing/utils/is-bezier-definition.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/waapi/easing.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/AcceleratedAnimation.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/single-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.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/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/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/animation/utils/transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/circ.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/utils/is-easing-array.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/motion/features/definitions.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/projection/geometry/conversion.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/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.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/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-none.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/html/utils/make-none-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/find.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/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/microtask.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/utils/use-motion-ref.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/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.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/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/Feature.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/utils/is-node-or-child.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/utils/shallow-compare.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/animation-state.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/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/debug/record.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/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.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/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/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/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/store.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.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/render/utils/is-variant-label.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/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/errors.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/memo.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/noop.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/fill.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/progress.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/rgba.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/complex/filter.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/numbers/index.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/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-combine-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-motion-template.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-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/utils/is-motion-value.mjs","webpack://_N_E/"],"sourcesContent":["export function _tagged_template_literal(strings, raw) {\n if (!raw) raw = strings.slice(0);\n\n return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } }));\n}\nexport { _tagged_template_literal as _ };\n","import { frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nfunction observeTimeline(update, timeline) {\n let prevProgress;\n const onFrame = () => {\n const { currentTime } = timeline;\n const percentage = currentTime === null ? 0 : currentTime.value;\n const progress = percentage / 100;\n if (prevProgress !== progress) {\n update(progress);\n }\n prevProgress = progress;\n };\n frame.update(onFrame, true);\n return () => cancelFrame(onFrame);\n}\n\nexport { observeTimeline };\n","import { memo } from '../../../utils/memo.mjs';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { observeTimeline } from '../render/dom/scroll/observe.mjs';\nimport { supportsScrollTimeline } from '../render/dom/scroll/supports.mjs';\n\nclass GroupPlaybackControls {\n constructor(animations) {\n // Bound to accomodate common `return animation.stop` pattern\n this.stop = () => this.runAll(\"stop\");\n this.animations = animations.filter(Boolean);\n }\n then(onResolve, onReject) {\n return Promise.all(this.animations).then(onResolve).catch(onReject);\n }\n /**\n * TODO: Filter out cancelled or stopped animations before returning\n */\n getAll(propName) {\n return this.animations[0][propName];\n }\n setAll(propName, newValue) {\n for (let i = 0; i < this.animations.length; i++) {\n this.animations[i][propName] = newValue;\n }\n }\n attachTimeline(timeline) {\n const cancelAll = this.animations.map((animation) => {\n if (supportsScrollTimeline() && animation.attachTimeline) {\n animation.attachTimeline(timeline);\n }\n else {\n animation.pause();\n return observeTimeline((progress) => {\n animation.time = animation.duration * progress;\n }, timeline);\n }\n });\n return () => {\n cancelAll.forEach((cancelTimeline, i) => {\n if (cancelTimeline)\n cancelTimeline();\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 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 play() {\n this.runAll(\"play\");\n }\n pause() {\n this.runAll(\"pause\");\n }\n cancel() {\n this.runAll(\"cancel\");\n }\n complete() {\n this.runAll(\"complete\");\n }\n}\n\nexport { GroupPlaybackControls };\n","import { invariant } from '../../../utils/errors.mjs';\n\nfunction resolveElements(elements, scope, selectorCache) {\n var _a;\n if (typeof elements === \"string\") {\n let root = document;\n if (scope) {\n invariant(Boolean(scope.current), \"Scope provided, but no element detected.\");\n root = scope.current;\n }\n if (selectorCache) {\n (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : (selectorCache[elements] = root.querySelectorAll(elements));\n elements = selectorCache[elements];\n }\n else {\n elements = root.querySelectorAll(elements);\n }\n }\n else if (elements instanceof Element) {\n elements = [elements];\n }\n /**\n * Return an empty array\n */\n return Array.from(elements || []);\n}\n\nexport { resolveElements };\n","function isDOMKeyframes(keyframes) {\n return typeof keyframes === \"object\" && !Array.isArray(keyframes);\n}\n\nexport { isDOMKeyframes };\n","import { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { SVGVisualElement } from '../../render/svg/SVGVisualElement.mjs';\nimport { HTMLVisualElement } from '../../render/html/HTMLVisualElement.mjs';\nimport { visualElementStore } from '../../render/store.mjs';\n\nfunction createVisualElement(element) {\n const options = {\n presenceContext: null,\n props: {},\n visualState: {\n renderState: {\n transform: {},\n transformOrigin: {},\n style: {},\n vars: {},\n attrs: {},\n },\n latestValues: {},\n },\n };\n const node = isSVGElement(element)\n ? new SVGVisualElement(options, {\n enableHardwareAcceleration: false,\n })\n : new HTMLVisualElement(options, {\n enableHardwareAcceleration: true,\n });\n node.mount(element);\n visualElementStore.set(element, node);\n}\n\nexport { createVisualElement };\n","import { spring } from '../../animation/generators/spring/index.mjs';\nimport { calcGeneratorDuration, maxGeneratorDuration } from '../../animation/generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds } from '../../utils/time-conversion.mjs';\n\n/**\n * Create a progress => progress easing function from a generator.\n */\nfunction createGeneratorEasing(options, scale = 100) {\n const generator = spring({ keyframes: [0, scale], ...options });\n const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n return {\n type: \"keyframes\",\n ease: (progress) => generator.next(duration * progress).value / scale,\n duration: millisecondsToSeconds(duration),\n };\n}\n\nexport { createGeneratorEasing };\n","/**\n * Given a absolute or relative time definition and current/prev time state of the sequence,\n * calculate an absolute time for the next keyframes.\n */\nfunction calcNextTime(current, next, prev, labels) {\n var _a;\n if (typeof next === \"number\") {\n return next;\n }\n else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n return Math.max(0, current + parseFloat(next));\n }\n else if (next === \"<\") {\n return prev;\n }\n else {\n return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current;\n }\n}\n\nexport { calcNextTime };\n","const wrap = (min, max, v) => {\n const rangeSize = max - min;\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\nexport { wrap };\n","import { wrap } from '../../utils/wrap.mjs';\nimport { isEasingArray } from './is-easing-array.mjs';\n\nfunction getEasingForSegment(easing, i) {\n return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\nexport { getEasingForSegment };\n","import { getEasingForSegment } from '../../../easing/utils/get-easing-for-segment.mjs';\nimport { removeItem } from '../../../utils/array.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\nfunction eraseKeyframes(sequence, startTime, endTime) {\n for (let i = 0; i < sequence.length; i++) {\n const keyframe = sequence[i];\n if (keyframe.at > startTime && keyframe.at < endTime) {\n removeItem(sequence, keyframe);\n // If we remove this item we have to push the pointer back one\n i--;\n }\n }\n}\nfunction addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {\n /**\n * Erase every existing value between currentTime and targetTime,\n * this will essentially splice this timeline into any currently\n * defined ones.\n */\n eraseKeyframes(sequence, startTime, endTime);\n for (let i = 0; i < keyframes.length; i++) {\n sequence.push({\n value: keyframes[i],\n at: mixNumber(startTime, endTime, offset[i]),\n easing: getEasingForSegment(easing, i),\n });\n }\n}\n\nexport { addKeyframes, eraseKeyframes };\n","function compareByTime(a, b) {\n if (a.at === b.at) {\n if (a.value === null)\n return 1;\n if (b.value === null)\n return -1;\n return 0;\n }\n else {\n return a.at - b.at;\n }\n}\n\nexport { compareByTime };\n","import { createGeneratorEasing } from '../../easing/utils/create-generator-easing.mjs';\nimport { resolveElements } from '../../render/dom/utils/resolve-element.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { fillOffset } from '../../utils/offsets/fill.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { calcNextTime } from './utils/calc-time.mjs';\nimport { addKeyframes } from './utils/edit.mjs';\nimport { compareByTime } from './utils/sort.mjs';\n\nconst defaultSegmentEasing = \"easeInOut\";\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope) {\n const defaultDuration = defaultTransition.duration || 0.3;\n const animationDefinitions = new Map();\n const sequences = new Map();\n const elementCache = {};\n const timeLabels = new Map();\n let prevTime = 0;\n let currentTime = 0;\n let totalDuration = 0;\n /**\n * Build the timeline by mapping over the sequence array and converting\n * the definitions into keyframes and offsets with absolute time values.\n * These will later get converted into relative offsets in a second pass.\n */\n for (let i = 0; i < sequence.length; i++) {\n const segment = sequence[i];\n /**\n * If this is a timeline label, mark it and skip the rest of this iteration.\n */\n if (typeof segment === \"string\") {\n timeLabels.set(segment, currentTime);\n continue;\n }\n else if (!Array.isArray(segment)) {\n timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n continue;\n }\n let [subject, keyframes, transition = {}] = segment;\n /**\n * If a relative or absolute time value has been specified we need to resolve\n * it in relation to the currentTime.\n */\n if (transition.at !== undefined) {\n currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n }\n /**\n * Keep track of the maximum duration in this definition. This will be\n * applied to currentTime once the definition has been parsed.\n */\n let maxDuration = 0;\n const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numElements = 0) => {\n const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", ...remainingTransition } = valueTransition;\n let { ease = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n /**\n * Resolve stagger() if defined.\n */\n const calculatedDelay = typeof delay === \"function\"\n ? delay(elementIndex, numElements)\n : delay;\n /**\n * If this animation should and can use a spring, generate a spring easing function.\n */\n const numKeyframes = valueKeyframesAsList.length;\n if (numKeyframes <= 2 && type === \"spring\") {\n /**\n * As we're creating an easing function from a spring,\n * ideally we want to generate it using the real distance\n * between the two keyframes. However this isn't always\n * possible - in these situations we use 0-100.\n */\n let absoluteDelta = 100;\n if (numKeyframes === 2 &&\n isNumberKeyframesArray(valueKeyframesAsList)) {\n const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n absoluteDelta = Math.abs(delta);\n }\n const springTransition = { ...remainingTransition };\n if (duration !== undefined) {\n springTransition.duration = secondsToMilliseconds(duration);\n }\n const springEasing = createGeneratorEasing(springTransition, absoluteDelta);\n ease = springEasing.ease;\n duration = springEasing.duration;\n }\n duration !== null && duration !== void 0 ? duration : (duration = defaultDuration);\n const startTime = currentTime + calculatedDelay;\n const targetTime = startTime + duration;\n /**\n * If there's only one time offset of 0, fill in a second with length 1\n */\n if (times.length === 1 && times[0] === 0) {\n times[1] = 1;\n }\n /**\n * Fill out if offset if fewer offsets than keyframes\n */\n const remainder = times.length - valueKeyframesAsList.length;\n remainder > 0 && fillOffset(times, remainder);\n /**\n * If only one value has been set, ie [1], push a null to the start of\n * the keyframe array. This will let us mark a keyframe at this point\n * that will later be hydrated with the previous value.\n */\n valueKeyframesAsList.length === 1 &&\n valueKeyframesAsList.unshift(null);\n /**\n * Add keyframes, mapping offsets to absolute time.\n */\n addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime);\n maxDuration = Math.max(calculatedDelay + duration, maxDuration);\n totalDuration = Math.max(targetTime, totalDuration);\n };\n if (isMotionValue(subject)) {\n const subjectSequence = getSubjectSequence(subject, sequences);\n resolveValueSequence(keyframes, transition, getValueSequence(\"default\", subjectSequence));\n }\n else {\n /**\n * Find all the elements specified in the definition and parse value\n * keyframes from their timeline definitions.\n */\n const elements = resolveElements(subject, scope, elementCache);\n const numElements = elements.length;\n /**\n * For every element in this segment, process the defined values.\n */\n for (let elementIndex = 0; elementIndex < numElements; elementIndex++) {\n /**\n * Cast necessary, but we know these are of this type\n */\n keyframes = keyframes;\n transition = transition;\n const element = elements[elementIndex];\n const subjectSequence = getSubjectSequence(element, sequences);\n for (const key in keyframes) {\n resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), elementIndex, numElements);\n }\n }\n }\n prevTime = currentTime;\n currentTime += maxDuration;\n }\n /**\n * For every element and value combination create a new animation.\n */\n sequences.forEach((valueSequences, element) => {\n for (const key in valueSequences) {\n const valueSequence = valueSequences[key];\n /**\n * Arrange all the keyframes in ascending time order.\n */\n valueSequence.sort(compareByTime);\n const keyframes = [];\n const valueOffset = [];\n const valueEasing = [];\n /**\n * For each keyframe, translate absolute times into\n * relative offsets based on the total duration of the timeline.\n */\n for (let i = 0; i < valueSequence.length; i++) {\n const { at, value, easing } = valueSequence[i];\n keyframes.push(value);\n valueOffset.push(progress(0, totalDuration, at));\n valueEasing.push(easing || \"easeOut\");\n }\n /**\n * If the first keyframe doesn't land on offset: 0\n * provide one by duplicating the initial keyframe. This ensures\n * it snaps to the first keyframe when the animation starts.\n */\n if (valueOffset[0] !== 0) {\n valueOffset.unshift(0);\n keyframes.unshift(keyframes[0]);\n valueEasing.unshift(defaultSegmentEasing);\n }\n /**\n * If the last keyframe doesn't land on offset: 1\n * provide one with a null wildcard value. This will ensure it\n * stays static until the end of the animation.\n */\n if (valueOffset[valueOffset.length - 1] !== 1) {\n valueOffset.push(1);\n keyframes.push(null);\n }\n if (!animationDefinitions.has(element)) {\n animationDefinitions.set(element, {\n keyframes: {},\n transition: {},\n });\n }\n const definition = animationDefinitions.get(element);\n definition.keyframes[key] = keyframes;\n definition.transition[key] = {\n ...defaultTransition,\n duration: totalDuration,\n ease: valueEasing,\n times: valueOffset,\n ...sequenceTransition,\n };\n }\n });\n return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n !sequences.has(subject) && sequences.set(subject, {});\n return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n if (!sequences[name])\n sequences[name] = [];\n return sequences[name];\n}\nfunction keyframesAsList(keyframes) {\n return Array.isArray(keyframes) ? keyframes : [keyframes];\n}\nfunction getValueTransition(transition, key) {\n return transition[key]\n ? {\n ...transition,\n ...transition[key],\n }\n : { ...transition };\n}\nconst isNumber = (keyframe) => typeof keyframe === \"number\";\nconst isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber);\n\nexport { createAnimationsFromSequence, getValueTransition };\n","import { resolveElements } from '../render/dom/utils/resolve-element.mjs';\nimport { visualElementStore } from '../render/store.mjs';\nimport { invariant } from '../utils/errors.mjs';\nimport { GroupPlaybackControls } from './GroupPlaybackControls.mjs';\nimport { isDOMKeyframes } from './utils/is-dom-keyframes.mjs';\nimport { animateTarget } from './interfaces/visual-element-target.mjs';\nimport { createVisualElement } from './utils/create-visual-element.mjs';\nimport { animateSingleValue } from './interfaces/single-value.mjs';\nimport { createAnimationsFromSequence } from './sequence/create.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\n\nfunction animateElements(elementOrSelector, keyframes, options, scope) {\n const elements = resolveElements(elementOrSelector, scope);\n const numElements = elements.length;\n invariant(Boolean(numElements), \"No valid element provided.\");\n const animations = [];\n for (let i = 0; i < numElements; i++) {\n const element = elements[i];\n /**\n * Check each element for an associated VisualElement. If none exists,\n * we need to create one.\n */\n if (!visualElementStore.has(element)) {\n /**\n * TODO: We only need render-specific parts of the VisualElement.\n * With some additional work the size of the animate() function\n * could be reduced significantly.\n */\n createVisualElement(element);\n }\n const visualElement = visualElementStore.get(element);\n const transition = { ...options };\n /**\n * Resolve stagger function if provided.\n */\n if (typeof transition.delay === \"function\") {\n transition.delay = transition.delay(i, numElements);\n }\n animations.push(...animateTarget(visualElement, { ...keyframes, transition }, {}));\n }\n return new GroupPlaybackControls(animations);\n}\nconst isSequence = (value) => Array.isArray(value) && Array.isArray(value[0]);\nfunction animateSequence(sequence, options, scope) {\n const animations = [];\n const animationDefinitions = createAnimationsFromSequence(sequence, options, scope);\n animationDefinitions.forEach(({ keyframes, transition }, subject) => {\n let animation;\n if (isMotionValue(subject)) {\n animation = animateSingleValue(subject, keyframes.default, transition.default);\n }\n else {\n animation = animateElements(subject, keyframes, transition);\n }\n animations.push(animation);\n });\n return new GroupPlaybackControls(animations);\n}\nconst createScopedAnimate = (scope) => {\n /**\n * Implementation\n */\n function scopedAnimate(valueOrElementOrSequence, keyframes, options) {\n let animation;\n if (isSequence(valueOrElementOrSequence)) {\n animation = animateSequence(valueOrElementOrSequence, keyframes, scope);\n }\n else if (isDOMKeyframes(keyframes)) {\n animation = animateElements(valueOrElementOrSequence, keyframes, options, scope);\n }\n else {\n animation = animateSingleValue(valueOrElementOrSequence, keyframes, options);\n }\n if (scope) {\n scope.animations.push(animation);\n }\n return animation;\n }\n return scopedAnimate;\n};\nconst animate = createScopedAnimate();\n\nexport { animate, createScopedAnimate };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\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 { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { warning } from '../../../utils/errors.mjs';\nimport { 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) || (type === \"spring\" && velocity);\n}\n\nexport { canAnimate };\n","import { 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\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.options = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n ...options,\n };\n this.updateFinishedPromise();\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.hasAttemptedResolve = true;\n const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n // Finish immediately\n if (instantAnimationState.current || !delay) {\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n this.resolveFinishedPromise();\n return;\n }\n // Finish after a delay\n else {\n this.options.duration = 0;\n }\n }\n const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n if (resolvedAnimation === false)\n return;\n this._resolved = {\n keyframes,\n finalKeyframe,\n ...resolvedAnimation,\n };\n this.onPostResolved();\n }\n onPostResolved() { }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.currentFinishedPromise.then(resolve, reject);\n }\n updateFinishedPromise() {\n this.currentFinishedPromise = new Promise((resolve) => {\n this.resolveFinishedPromise = resolve;\n });\n }\n}\n\nexport { BaseAnimation };\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 { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from '../errors.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n var _a;\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return mixImmediate(origin, target);\n }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nexport { mix };\n","import { invariant } from './errors.mjs';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || mix;\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && input[0] === input[1])\n return () => output[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","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 { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { calcGeneratorDuration } from '../generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\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({ KeyframeResolver: KeyframeResolver$1 = KeyframeResolver, ...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 started.\n */\n this.startTime = 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 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, keyframes } = this.options;\n const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n if (name && motionValue && motionValue.owner) {\n this.resolver = motionValue.owner.resolveKeyframes(keyframes, onResolved, name, motionValue);\n }\n else {\n this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue);\n }\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes$1) {\n const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n const generatorFactory = 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 } = 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 || 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","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean(!easing ||\n (typeof easing === \"string\" && easing in supportedWaapiEasing) ||\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: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasingWithDefault(easing) {\n return (mapEasingToNativeEasing(easing) ||\n supportedWaapiEasing.easeOut);\n}\nfunction mapEasingToNativeEasing(easing) {\n if (!easing) {\n return undefined;\n }\n else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing);\n }\n else if (Array.isArray(easing)) {\n return easing.map(mapEasingToNativeEasingWithDefault);\n }\n else {\n return supportedWaapiEasing[easing];\n }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease);\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 { animateStyle };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { memo } from '../../utils/memo.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { animateStyle } from './waapi/index.mjs';\nimport { isWaapiSupportedEasing } from './waapi/easing.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\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/**\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 (options.type === \"spring\" ||\n options.name === \"backgroundColor\" ||\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}\nclass AcceleratedAnimation extends BaseAnimation {\n constructor(options) {\n super(options);\n const { name, motionValue, keyframes } = this.options;\n this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue);\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes, finalKeyframe) {\n var _a;\n let { duration = 300, times, ease, type, motionValue, name, } = this.options;\n /**\n * If element has since been unmounted, return false to indicate\n * the animation failed to initialised.\n */\n if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n return false;\n }\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(this.options)) {\n const { onComplete, onUpdate, motionValue, ...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 = animateStyle(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 = time.now();\n if (this.pendingTimeline) {\n animation.timeline = 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 /**\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 animation.timeline = timeline;\n animation.onfinish = null;\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 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, ...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 this.cancel();\n }\n complete() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.finish();\n }\n cancel() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.cancel();\n }\n static supports(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\n motionValue &&\n motionValue.owner &&\n motionValue.owner.current instanceof HTMLElement &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !motionValue.owner.getProps().onUpdate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","import { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { GroupPlaybackControls } from '../GroupPlaybackControls.mjs';\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 { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { 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","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.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 const willChange = visualElement.getValue(\"willChange\");\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 elapsed: 0,\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.HandoffAppearAnimations) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n if (elapsed !== null) {\n valueTransition.elapsed = elapsed;\n isHandoff = true;\n }\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff));\n const animation = value.animation;\n if (animation) {\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\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 { 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.getProps()[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\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","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n return (transition[key] ||\n transition[\"default\"] ||\n transition);\n}\n\nexport { getValueTransition, isTransitionDefined };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { 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","// 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","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction 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 Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(frameData);\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { 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,\n timestamp: 0,\n isProcessing: false,\n };\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n }, {});\n const processStep = (stepId) => {\n steps[stepId].process(state);\n };\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 stepsOrder.forEach(processStep);\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) => stepsOrder.forEach((key) => steps[key].cancel(process));\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\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","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 { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","/**\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","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}\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 instance = node.instance;\n if (instance &&\n instance.style &&\n instance.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 treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","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","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\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 { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue) {\n super(unresolvedKeyframes, onComplete, name, motionValue, motionValue === null || motionValue === void 0 ? void 0 : motionValue.owner, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!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.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.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","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"11.2.10\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.2.10 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n 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 { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\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 this.resolveKeyframes = (keyframes, \n // We use an onComplete callback here rather than a Promise as a Promise\n // resolution is a microtask and we want to retain the ability to force\n // the resolution of keyframes synchronously.\n onComplete, name, value) => {\n return new this.KeyframeResolver(keyframes, onComplete, name, value, this);\n };\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.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.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 neccessarily 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 if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\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 var _a;\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.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 (_a = this.features[key]) === null || _a === void 0 ? void 0 : _a.unmount();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate && 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 this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\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 loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\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 renderedProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent, } = featureDefinitions[name];\n if (ProjectionNode)\n ProjectionNodeConstructor = ProjectionNode;\n if (isEnabled(renderedProps)) {\n if (!this.features[name] && FeatureConstructor) {\n this.features[name] = new FeatureConstructor(this);\n }\n if (MeasureLayoutComponent) {\n MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if ((this.type === \"html\" || this.type === \"svg\") &&\n !this.projection &&\n ProjectionNodeConstructor) {\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection = new ProjectionNodeConstructor(this.latestValues, renderedProps[\"data-framer-portal-id\"]\n ? undefined\n : getClosestProjectingNode(this.parent));\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\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 triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n getVariantContext(startAtParent = false) {\n if (startAtParent) {\n return this.parent ? this.parent.getVariantContext() : undefined;\n }\n if (!this.isControllingVariants) {\n const context = this.parent\n ? this.parent.getVariantContext() || {}\n : {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = this.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n const existingValue = this.values.get(key);\n if (value !== existingValue) {\n if (existingValue)\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key, target) {\n var _a;\n let value = this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(target)) {\n value = getAnimatableNone(key, target);\n }\n this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n }\n return isMotionValue(value) ? value.get() : value;\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n let valueFromInitial;\n if (typeof initial === \"string\" || typeof initial === \"object\") {\n const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n if (variant) {\n valueFromInitial = variant[key];\n }\n }\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n}\n\nexport { VisualElement };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\n\nclass DOMVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.KeyframeResolver = DOMKeyframesResolver;\n }\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style\n ? props.style[key]\n : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n}\n\nexport { DOMVisualElement };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\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';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\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 wantsHandoff = useRef(Boolean(props[optimizedAppearDataAttribute] &&\n !window.HandoffComplete));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\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 visualElement.updateFeatures();\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n window.HandoffComplete = true;\n }\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","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","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","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n const isStrict = useContext(LazyContext).strict;\n if (context.visualElement) {\n MeasureLayout = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, isStrict, preloadedFeatures, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/u.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n 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 { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { 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 { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\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","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[`${pointType}X`],\n y: event[`${pointType}Y`],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } 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","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n const handleEvent = (event, info) => {\n if (event.pointerType === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n const callback = props[callbackName];\n if (callback) {\n frame.postRender(() => callback(event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removeStartListeners = noop;\n this.removeEndListeners = noop;\n this.removeAccessibleListeners = noop;\n this.startPointerPress = (startEvent, startInfo) => {\n if (this.isPressing)\n return;\n this.removeEndListeners();\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n const handler = !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel\n : onTap;\n if (handler) {\n frame.update(() => handler(endEvent, endInfo));\n }\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n passive: !(props.onTap || props[\"onPointerUp\"]),\n });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n passive: !(props.onTapCancel ||\n props[\"onPointerCancel\"]),\n });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.postRender(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n frame.postRender(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.postRender(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n passive: !(props.onTapStart ||\n props[\"onPointerStart\"]),\n });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","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","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';\nimport { frame } from '../../frameloop/frame.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 frame.postRender(() => {\n visualElement.notify(\"AnimationComplete\", definition);\n });\n });\n}\n\nexport { animateVisualElement };\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';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (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.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined\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 hard-block animations\n */\n if (shouldAnimateType && (!isInherited || handledRemovedValues)) {\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 };\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","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 this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = 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}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, calcViewportConstraints, rebaseAxisConstraints, 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 { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.postRender(() => onDragStart(event, info));\n }\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.postRender(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n var _a;\n const { dragConstraints, dragElastic } = this.getProps();\n const layout = this.visualElement.projection &&\n !this.visualElement.projection.layout\n ? this.visualElement.projection.measure(false)\n : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.constraints !== false &&\n this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement));\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)) {\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 measureDragConstraints();\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { 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 boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction boxEqualsRounded(a, b) {\n return (Math.round(a.x.min) === Math.round(b.x.min) &&\n Math.round(a.x.max) === Math.round(b.x.max) &&\n Math.round(a.y.min) === Math.round(b.y.min) &&\n Math.round(a.y.max) === Math.round(b.y.max));\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","function record(data) {\n if (window.MotionDebug) {\n window.MotionDebug.record(data);\n }\n}\n\nexport { record };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { record } from '../../debug/record.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\n\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;\n/**\n * Use a mutable data object for debug data so as to not create a new\n * object every frame.\n */\nconst projectionFrameData = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction isOptimisedAppearTree(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return false;\n const { visualElement } = projectionNode.options;\n if (!visualElement) {\n return false;\n }\n else if (getOptimisedAppearId(visualElement)) {\n return true;\n }\n else if (projectionNode.parent &&\n !projectionNode.parent.hasCheckedOptimisedAppear) {\n return isOptimisedAppearTree(projectionNode.parent);\n }\n else {\n return false;\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.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 projectionFrameData.totalNodes =\n projectionFrameData.resolvedTargetDeltas =\n projectionFrameData.recalculatedProjection =\n 0;\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n record(projectionFrameData);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.HandoffCancelAllAnimations &&\n isOptimisedAppearTree(this)) {\n window.HandoffCancelAllAnimations();\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(() => this.update());\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 this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\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 const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n 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 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 projectionFrameData.resolvedTargetDeltas++;\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.projectionTransform) {\n this.projectionDelta = createDelta();\n this.projectionTransform = \"none\";\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n projectionFrameData.recalculatedProjection++;\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 this.options.scheduleRender && this.options.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 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 projectionFrameData.totalNodes++;\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}\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 { 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, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n enableHardwareAcceleration: true,\n });\n};\n\nexport { createDomVisualElement };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layout } from '../../motion/features/layout.mjs';\n\nconst preloadedFeatures = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, preloadedFeatures, createDomVisualElement));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\nexport { createDomMotionComponent, motion };\n","/**\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","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst startsAsVariableToken = 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","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\n","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 { 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","/**\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 { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n backgroundPositionX: px,\n backgroundPositionY: px,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n }\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, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { transformPropOrder } from './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(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\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 if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * 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 { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","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","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","/**\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","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n }\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 measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // 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","/**\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","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\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 { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { 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 { 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","/**\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","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","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","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","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\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","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 { 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","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\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","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\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","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","/*\n 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","const noop = (any) => any;\n\nexport { noop };\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","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { 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 * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { 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","/*\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 { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.2.10\";\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 { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\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 { color } from '../color/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\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 { 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","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\nconst colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\nconst singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { useMotionValue } from './use-motion-value.mjs';\nimport { useIsomorphicLayoutEffect } from '../utils/use-isomorphic-effect.mjs';\nimport { cancelFrame, frame } from '../frameloop/frame.mjs';\n\nfunction useCombineMotionValues(values, combineValues) {\n /**\n * Initialise the returned motion value. This remains the same between renders.\n */\n const value = useMotionValue(combineValues());\n /**\n * Create a function that will update the template motion value with the latest values.\n * This is pre-bound so whenever a motion value updates it can schedule its\n * execution in Framesync. If it's already been scheduled it won't be fired twice\n * in a single frame.\n */\n const updateValue = () => value.set(combineValues());\n /**\n * Synchronously update the motion value with the latest values during the render.\n * This ensures that within a React render, the styles applied to the DOM are up-to-date.\n */\n updateValue();\n /**\n * Subscribe to all motion values found within the template. Whenever any of them change,\n * schedule an update.\n */\n useIsomorphicLayoutEffect(() => {\n const scheduleUpdate = () => frame.preRender(updateValue, false, true);\n const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n return () => {\n subscriptions.forEach((unsubscribe) => unsubscribe());\n cancelFrame(updateValue);\n };\n });\n return value;\n}\n\nexport { useCombineMotionValues };\n","import { useCombineMotionValues } from './use-combine-values.mjs';\nimport { isMotionValue } from './utils/is-motion-value.mjs';\n\n/**\n * Combine multiple motion values into a new one using a string template literal.\n *\n * ```jsx\n * import {\n * motion,\n * useSpring,\n * useMotionValue,\n * useMotionTemplate\n * } from \"framer-motion\"\n *\n * function Component() {\n * const shadowX = useSpring(0)\n * const shadowY = useMotionValue(0)\n * const shadow = useMotionTemplate`drop-shadow(${shadowX}px ${shadowY}px 20px rgba(0,0,0,0.3))`\n *\n * return \n * }\n * ```\n *\n * @public\n */\nfunction useMotionTemplate(fragments, ...values) {\n /**\n * Create a function that will build a string from the latest motion values.\n */\n const numFragments = fragments.length;\n function buildValue() {\n let output = ``;\n for (let i = 0; i < numFragments; i++) {\n output += fragments[i];\n const value = values[i];\n if (value) {\n output += isMotionValue(value) ? value.get() : value;\n }\n }\n return output;\n }\n return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\nexport { useMotionTemplate };\n","import { useContext, useState, useEffect } from 'react';\nimport { motionValue } from './index.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useConstant } from '../utils/use-constant.mjs';\n\n/**\n * Creates a `MotionValue` to track the state and velocity of a value.\n *\n * Usually, these are created automatically. For advanced use-cases, like use with `useTransform`, you can create `MotionValue`s externally and pass them into the animated component via the `style` prop.\n *\n * ```jsx\n * export const MyComponent = () => {\n * const scale = useMotionValue(1)\n *\n * return \n * }\n * ```\n *\n * @param initial - The initial state.\n *\n * @public\n */\nfunction useMotionValue(initial) {\n const value = useConstant(() => motionValue(initial));\n /**\n * If this motion value is being used in static mode, like on\n * the Framer canvas, force components to rerender when the motion\n * value is updated.\n */\n const { isStatic } = useContext(MotionConfigContext);\n if (isStatic) {\n const [, setLatest] = useState(initial);\n useEffect(() => value.on(\"change\", setLatest), []);\n }\n return value;\n}\n\nexport { useMotionValue };\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","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n"],"names":["_tagged_template_literal","strings","raw","slice","Object","freeze","defineProperties","value","supportsScrollTimeline","memo","X","window","undefined","ScrollTimeline","GroupPlaybackControls","constructor","animations","stop","runAll","filter","Boolean","then","onResolve","onReject","Promise","all","catch","getAll","propName","setAll","newValue","i","length","attachTimeline","timeline","cancelAll","map","animation","pause","observeTimeline","update","prevProgress","onFrame","currentTime","progress","percentage","frameloop_frame","Wi","Pn","time","duration","forEach","cancelTimeline","speed","max","Math","methodName","controls","play","cancel","complete","scope","resolveElements","elements","selectorCache","_a","root","document","errors","k","current","querySelectorAll","Element","Array","from","calcNextTime","next","prev","labels","startsWith","parseFloat","get","wrap","min","v","rangeSize","compareByTime","a","b","at","getSubjectSequence","subject","sequences","has","set","getValueSequence","name","isNumber","keyframe","isNumberKeyframesArray","keyframes","every","animateElements","elementOrSelector","options","numElements","element","store","R","createVisualElement","presenceContext","props","visualState","renderState","transform","transformOrigin","style","vars","attrs","latestValues","node","is_svg_element","SVGVisualElement","e","enableHardwareAcceleration","HTMLVisualElement","W","mount","visualElement","transition","delay","push","visual_element_target","w","s","isSequence","isArray","animate","valueOrElementOrSequence","animateSequence","sequence","animationDefinitions","defaultTransition","sequenceTransition","defaultDuration","Map","elementCache","timeLabels","prevTime","totalDuration","segment","maxDuration","resolveValueSequence","valueKeyframes","valueTransition","valueSequence","elementIndex","valueKeyframesAsList","times","offsets_default","Y","type","remainingTransition","ease","calculatedDelay","numKeyframes","absoluteDelta","abs","springTransition","time_conversion","springEasing","createGeneratorEasing","scale","generator","spring","S","calc_duration","E","startTime","targetTime","remainder","fill","c","unshift","addKeyframes","easing","offset","endTime","eraseKeyframes","array","cl","number","t","is_easing_array","N","is_motion_value","subjectSequence","key","valueSequences","sort","valueOffset","valueEasing","definition","single_value","D","default","calcAngularFreq","undampedFreq","dampingRatio","sqrt","durationKeys","physicsKeys","isSpringType","keys","some","restDelta","restSpeed","resolveSpring","origin","target","state","done","stiffness","damping","mass","velocity","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","K","clamp","u","exponentialDecay","delta","safeMin","exp","pow","g","d","approximateRoot","initialGuess","result","isNaN","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","sin","cos","dampedAngularFreq","freqForT","sinh","cosh","calculatedDuration","currentVelocity","utils_velocity","P","isBelowVelocityThreshold","isBelowDisplacementThreshold","maxGeneratorDuration","calcGeneratorDuration","Infinity","calcGeneratorVelocity","resolveValue","prevT","_utils_velocity_per_second_mjs__WEBPACK_IMPORTED_MODULE_0__","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","G","instantAnimationState","isNotNull","getFinalKeyframe","repeat","repeatType","finalKeyframe","resolvedKeyframes","index","isAnimatable","complex","test","BaseAnimation","autoplay","repeatDelay","isStopped","hasAttemptedResolve","updateFinishedPromise","resolved","_resolved","KeyframesResolver","m","onKeyframesResolved","onComplete","onUpdate","isGenerator","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","hasKeyframesChanged","resolveFinishedPromise","resolvedAnimation","initPlayback","onPostResolved","resolve","reject","currentFinishedPromise","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","timeReachedBoundary","spring$1","isOutOfBounds","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","checkCatchBoundary","hasUpdatedFrame","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","noop","Z","getTForX","binarySubdivide","x","lowerBound","upperBound","currentX","currentT","aX","easeIn","easeOut","easeInOut","backOut","backIn","reverse","M","backInOut","mirror","o","easingLookup","linear","circIn","circ","Z7","circInOut","X7","circOut","Bn","anticipate","p","easingDefinitionToFunction","x1","y1","x2","y2","hueToRgb","q","mixImmediate","mixLinearColor","to","fromExpo","expo","colorTypes","hex","$","rgba","hsla","J","getColorType","find","asRGBA","color","model","parse","hslaToRgba","hue","saturation","lightness","alpha","red","green","blue","round","mixColor","fromRGBA","toRGBA","blended","invisibleValues","Set","mixNumber","getMixer","is_css_variable","mixComplex","mixArray","mixObject","output","numValues","blendValue","template","createTransformer","originStats","V","targetStats","indexes","var","values","pipe","z","matchOrder","orderedOrigin","pointers","types","originIndex","originValue","mix","mixer","keyframeValues","easingFunctions","mapTimeToKeyframe","interpolate","input","isClamp","inputLength","mixers","createMixers","customMixer","mixerFactory","numMixers","easingFunction","interpolator","progressInRange","splice","frameloopDriver","passTimestamp","timestamp","start","now","frameData","isProcessing","sync_time","generators","decay","tween","percentToProgress","percent","MainThreadAnimation","KeyframeResolver","KeyframeResolver$1","holdTime","cancelTime","playbackSpeed","pendingPlayState","resolver","teardown","onStop","motionValue","onResolved","owner","resolveKeyframes","scheduleResolve","keyframes$1","mapPercentToKeyframes","mirroredGenerator","generatorFactory","resolvedDuration","tick","sample","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","floor","iterationProgress","isAnimationFinished","finish","newTime","driver","newSpeed","hasChanged","isScheduled","resume","onPlay","stopDriver","isBezierDefinition","cubicBezierAsString","supportedWaapiEasing","mapEasingToNativeEasingWithDefault","mapEasingToNativeEasing","supportsWaapi","hasOwnProperty","call","prototype","acceleratedValues","AcceleratedAnimation","DOMKeyframesResolver","isWaapiSupportedEasing","pregeneratedAnimation","pregenerateKeyframes","sampleAnimation","pregeneratedKeyframes","animateStyle","valueName","keyframeOptions","iterations","direction","pendingTimeline","onfinish","playbackRate","playState","sampleTime","setWithVelocity","supports","HTMLElement","getProps","animateMotionValue","isHandoff","transitions","getVelocity","r","shouldSkip","GlobalConfig","skipAnimations","animateSingleValue","motionValue$1","_value_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_index_mjs__WEBPACK_IMPORTED_MODULE_1__","BX","_motion_value_mjs__WEBPACK_IMPORTED_MODULE_2__","animateTarget","targetAndTransition","transitionOverride","transitionEnd","willChange","getValue","animationTypeState","animationState","getState","valueTarget","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","HandoffAppearAnimations","appearId","get_appear_id","motion_value","shouldReduceMotion","is","L","add","remove","setTarget","resolve_dynamic_variants","resolve_value","hasValue","addValue","es_value","optimizedAppearDataAttribute","_render_dom_utils_camel_to_dash_mjs__WEBPACK_IMPORTED_MODULE_0__","getOptimisedAppearId","_data_id_mjs__WEBPACK_IMPORTED_MODULE_0__","isAnimationControls","isKeyframesTarget","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","getValueTransition","MotionConfigContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","transformPagePoint","isStatic","reducedMotion","acos","_modifiers_reverse_mjs__WEBPACK_IMPORTED_MODULE_0__","_modifiers_mirror_mjs__WEBPACK_IMPORTED_MODULE_1__","mirrorEasing","reverseEasing","isEasingArray","Queue","order","scheduled","process","indexOf","delete","clear","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","steps","reduce","acc","createRenderStep","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","callback","keepAlive","immediate","addToCurrentFrame","queue","processStep","stepId","processBatch","useManualTiming","performance","wake","frame","cancelFrame","_batcher_mjs__WEBPACK_IMPORTED_MODULE_0__","requestAnimationFrame","_utils_noop_mjs__WEBPACK_IMPORTED_MODULE_1__","clearTime","_frame_mjs__WEBPACK_IMPORTED_MODULE_0__","_utils_GlobalConfig_mjs__WEBPACK_IMPORTED_MODULE_1__","queueMicrotask","featureProps","exit","drag","focus","hover","tap","pan","inView","layout","featureDefinitions","isEnabled","isForcedMotionValue","layoutId","_render_html_utils_transform_mjs__WEBPACK_IMPORTED_MODULE_0__","_projection_styles_scale_correction_mjs__WEBPACK_IMPORTED_MODULE_1__","convertBoundingBoxToBox","top","left","right","bottom","y","convertBoxToBoundingBox","transformBoxPoints","point","transformPoint","topLeft","bottomRight","scalePoint","originPoint","applyPointDelta","translate","boxScale","applyAxisDelta","axis","applyBoxDelta","box","applyTreeDeltas","treeScale","treePath","isSharedTransition","treeLength","projectionDelta","instance","display","layoutScroll","scroll","transformBox","_utils_has_transform_mjs__WEBPACK_IMPORTED_MODULE_0__","ud","snapToDefault","isInteger","translateAxis","distance","transformAxis","transforms","scaleKey","originKey","axisOrigin","_utils_mix_number_mjs__WEBPACK_IMPORTED_MODULE_1__","xKeys","yKeys","createAxisDelta","createDelta","createAxis","createBox","scaleCorrectors","addScaleCorrector","correctors","assign","isIdentityScale","hasScale","scaleX","scaleY","hasTransform","has2DTranslate","rotate","rotateX","rotateY","skewX","skewY","is2DTranslate","measureViewportBox","_geometry_conversion_mjs__WEBPACK_IMPORTED_MODULE_0__","i8","d7","getBoundingClientRect","measurePageBox","rootProjectionNode","viewportBox","_geometry_delta_apply_mjs__WEBPACK_IMPORTED_MODULE_1__","am","splitCSSVariableRegex","invalidTemplates","unresolvedKeyframes","readKeyframes","trim","getVariableValue","depth","token","fallback","parseCSSVariable","match","exec","token1","token2","getComputedStyle","getPropertyValue","trimmed","is_numerical_string","resolveNoneKeyframes","unit_conversion","z2","originType","dimensions","C","targetType","mP","needsMeasurement","noneKeyframeIndexes","is_zero_value_string","makeNoneKeyframesAnimatable","animatableTemplate","noneIndex","animatable_none","T","measureInitialState","suspendedScrollY","pageYOffset","measuredOrigin","lw","measureKeyframe","jump","measureEndState","finalKeyframeIndex","removedTransforms","unsetTransformName","unsetTransformValue","prefersReducedMotion","hasReducedMotionListener","valueTypes","findValueType","l","featureNames","definitions","A","numFeatures","propEventHandlers","numVariantProps","variant_props","VisualElement","scrapeMotionValuesFromProps","_props","_prevProps","_visualElement","parent","reducedMotionConfig","blockInitialAnimation","children","isVariantNode","isControllingVariants","features","valueSubscriptions","prevMotionValues","events","propEventSubscriptions","notifyUpdate","notify","render","triggerBuild","renderInstance","projection","scheduleRender","baseTarget","initialValues","initial","is_controlling_variants","variantChildren","manuallyAnimateOnMount","initialMotionValues","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","is_browser","j","matchMedia","motionMediaQuery","setReducedMotionPreferences","matches","addListener","unmount","valueIsTransform","removeOnChange","on","latestValue","preRender","isTransformDirty","removeOnRenderRequest","sortNodePosition","other","sortInstanceNodePosition","loadFeatures","renderedProps","isStrict","preloadedFeatures","initialLayoutGroupConfig","ProjectionNodeConstructor","MeasureLayout","Feature","FeatureConstructor","ProjectionNode","MeasureLayoutComponent","dragConstraints","layoutRoot","getClosestProjectingNode","allowProjection","setOptions","alwaysMeasureLayout","is_ref_object","I","animationType","initialPromotionConfig","updateFeatures","feature","isMounted","build","measureInstanceViewportBox","models","dO","getStaticValue","setStaticValue","transformTemplate","prevProps","prevPresenceContext","listener","updateMotionValuesFromProps","nextValue","prevValue","existingValue","liveStyle","hasAnimated","removeValue","handleChildMotionValue","getVariant","variants","getTransformPagePoint","getClosestVariantNode","getVariantContext","startAtParent","context","prop","is_variant_label","child","closestVariantNode","unsubscribe","removeValueFromRenderState","defaultValue","readValue","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","getBaseTarget","valueFromInitial","variant","resolve_variants","custom","eventName","subscription_manager","args","DOMVisualElement","arguments","compareDocumentPosition","isValidProp","MotionContext","react","PresenceContext_PresenceContext","LazyContext","strict","microtask","cancelMicrotask","batcher","variantLabelsAsDependency","join","LayoutGroupContext","SwitchLayoutGroupContext","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","Component","includes","createHtmlRenderState","copyRawValuesOnly","source","is_forced_motion_value","validMotionProps","isValidMotionProp","shouldForward","require","createSvgRenderState","resolveMotionValue","unwrappedValue","toValue","makeUseVisualState","useContext","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","is_animation_controls","H","list","config","use_constant","h","svgMotionConfig","useVisualState","scrape_motion_values","U","read","getBBox","width","height","build_attrs","is_svg_tag","tagName","htmlMotionConfig","utils_scrape_motion_values","addDomEvent","handler","passive","addEventListener","removeEventListener","isPrimaryPointer","event","pointerType","button","isPrimary","extractEventInfo","pointType","addPointerInfo","addPointerEvent","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","addHoverEvent","isActive","callbackName","info","whileHover","setActive","postRender","HoverGesture","FocusGesture","onFocus","isFocusVisible","onBlur","isNodeOrChild","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startEvent","startInfo","isPressing","removePointerUpListener","endEvent","endInfo","checkPressEnd","onTap","onTapCancel","globalTapTarget","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","removeKeydownListener","keydownEvent","keyupEvent","removeBlurListener","onTapStart","whileTap","removePointerListener","removeFocusListener","observerCallbacks","WeakMap","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","InViewFeature","hasEnteredView","isInView","startObserver","viewport","margin","rootMargin","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","JSON","stringify","IntersectionObserver","observe","unobserve","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","shallowCompare","prevLength","animateVariant","getAnimation","getChildAnimations","size","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","first","last","reversePriorityOrder","numAnimationTypes","createTypeState","prevResolvedValues","AnimationFeature","createAnimationState","animateVisualElement","resolvedDefinition","whileInView","whileDrag","whileFocus","isInitialRender","buildResolvedTypeValues","animateChanges","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","prevProp","shouldAnimateType","variantDidChange","handledRemovedValues","definitionList","resolvedValues","allKeys","markToAnimate","is_keyframes_target","fallbackAnimation","fallbackTarget","shouldAnimate","setAnimateFunction","makeAnimator","updateAnimationControlsSubscription","subscribe","prevAnimate","id","ExitAnimationFeature","isPresent","onExitComplete","prevIsPresent","exitAnimation","register","PanSession","handlers","contextWindow","dragSnapToOrigin","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","handlePointerUp","end","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","calcLength","isNear","maxDistance","calcAxisDelta","calcBoxDelta","originX","originY","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","eachAxis","getContextWindow","ownerDocument","defaultView","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","pauseAnimation","stopAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","units","aQ","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","getAnimationState","startAnimation","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","measure","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measuredConstraints","userConstraints","conversion","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","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","px","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","scale_correction","B","defaultScaleCorrectors","group","didUpdate","safeToRemove","getSnapshotBeforeUpdate","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","componentDidUpdate","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","usePresence","useId","useEffect","jsx_runtime","jsx","borderRadius","applyTo","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","boxShadow","shadow","xScale","yScale","averageScale","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","delta_apply","q2","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEqualsRounded","aspectRatio","NodeStack","y4","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","transformPerspective","elementScaleX","elementScaleY","compareByDepth","FlatTree","isDirty","transformAxes","hiddenVisibility","visibility","create_projection_node_id","projectionFrameData","totalNodes","resolvedTargetDeltas","recalculatedProjection","resetDistortingTransform","sharedAnimationValues","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","hasCheckedOptimisedAppear","eventHandlers","hasTreeAnimated","updateScheduled","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","MotionDebug","record","hasProjected","isVisible","animationProgress","sharedNodes","path","notifyListeners","subscriptionManager","hasListeners","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","HandoffCancelAllAnimations","isOptimisedAppearTree","projectionNode","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","S6","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","prevLayout","layoutCorrected","phase","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","has_transform","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","D2","boxWithoutTransform","Lj","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","resolvedRelativeTargetAt","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","o2","D_","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","YY","projectionTransform","wc","projectionDeltaWithTransform","prevProjectionTransform","notifyAll","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacity","opacityExit","borderLabel","followRadius","leadRadius","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","xLength","yLength","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","rotateZ","resetValues","getProjectionStyles","styleProp","_b","styles","pointerEvents","emptyStyles","valuesToRender","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","toLowerCase","string","roundPoint","DocumentProjectionNode","ref","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode","documentNode","position","create_visual_element_createDomVisualElement","Fragment","motion","createMotionProxy","createConfig","customMotionComponentConfig","motion_createMotionComponent","useRender","ForwardRefComponent","forwardRef","externalRef","configAndProps","_","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","useMemo","useVisualElement","lazyContext","visualElementRef","useRef","renderer","useInsertionEffect","wantsHandoff","data_id","HandoffComplete","use_isomorphic_effect","jsxs","Provider","useCallback","Proxy","componentCache","_target","create_config_createDomMotionConfig","forwardMotionProps","createUseRender","visualProps","useVisualProps","_isStatic","rawStyles","htmlProps","useStyle","useInitialMotionValues","build_styles","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","tabIndex","filteredProps","filterProps","isDom","elementProps","renderedChildren","createElement","camelToDash","str","replace","checkStringStartsWith","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","split","isSVGElement","SVGElement","positionalKeys","isNumOrPxType","_value_types_numbers_index_mjs__WEBPACK_IMPORTED_MODULE_0__","Rx","_value_types_numbers_units_mjs__WEBPACK_IMPORTED_MODULE_1__","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","_html_utils_transform_mjs__WEBPACK_IMPORTED_MODULE_2__","removeNonTranslationalTransform","positionalValues","paddingLeft","paddingRight","paddingTop","paddingBottom","translateX","translateY","getAnimatableNone","defaultValueType","_defaults_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_1__","_value_types_complex_index_mjs__WEBPACK_IMPORTED_MODULE_2__","defaultValueTypes","_number_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_types_color_index_mjs__WEBPACK_IMPORTED_MODULE_1__","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_2__","WebkitFilter","getDefaultValueType","dimensionValueTypes","numbers","RW","vw","vh","findDimensionValueType","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","radius","maxWidth","maxHeight","padding","marginTop","marginRight","marginBottom","marginLeft","bA","scaleZ","skew","translateZ","perspective","Fq","$C","originZ","zIndex","backgroundPositionX","backgroundPositionY","fillOpacity","strokeOpacity","numOctaves","testValueType","_dom_DOMVisualElement_mjs__WEBPACK_IMPORTED_MODULE_0__","_utils_transform_mjs__WEBPACK_IMPORTED_MODULE_1__","defaultType","_dom_value_types_defaults_mjs__WEBPACK_IMPORTED_MODULE_2__","computedStyle","_dom_utils_is_css_variable_mjs__WEBPACK_IMPORTED_MODULE_3__","f","_projection_utils_measure_mjs__WEBPACK_IMPORTED_MODULE_4__","_utils_build_styles_mjs__WEBPACK_IMPORTED_MODULE_5__","_utils_scrape_motion_values_mjs__WEBPACK_IMPORTED_MODULE_6__","childSubscription","_value_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_7__","textContent","_utils_render_mjs__WEBPACK_IMPORTED_MODULE_8__","translateAlias","numTransforms","utils_transform","getValueAsType","buildHTMLStyles","hasTransformOrigin","transformIsNone","valueType","valueAsType","buildTransform","allowTransformNone","transformIsDefault","transformString","transformName","renderHTML","setProperty","newValues","_motion_utils_is_forced_motion_value_mjs__WEBPACK_IMPORTED_MODULE_1__","transformPropOrder","transformProps","visualElementStore","isSVGTag","_html_utils_transform_mjs__WEBPACK_IMPORTED_MODULE_1__","_dom_utils_camel_to_dash_mjs__WEBPACK_IMPORTED_MODULE_4__","getAttribute","_projection_geometry_models_mjs__WEBPACK_IMPORTED_MODULE_5__","_utils_build_attrs_mjs__WEBPACK_IMPORTED_MODULE_7__","_utils_is_svg_tag_mjs__WEBPACK_IMPORTED_MODULE_9__","dashKeys","camelKeys","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","viewBox","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","camelCaseAttributes","tag","renderSVG","_styleProp","_html_utils_render_mjs__WEBPACK_IMPORTED_MODULE_0__","setAttribute","_dom_utils_camel_to_dash_mjs__WEBPACK_IMPORTED_MODULE_2__","_html_utils_scrape_motion_values_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_1__","charAt","substring","toResolve","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","elementsToMeasure","transformsToRestore","_dom_utils_unit_conversion_mjs__WEBPACK_IMPORTED_MODULE_0__","Ei","restore","scrollTo","readAllKeyframes","flushKeyframeResolvers","isAsync","isComplete","_frameloop_frame_mjs__WEBPACK_IMPORTED_MODULE_1__","currentValue","valueAsRead","setFinalKeyframe","renderEndStyles","_animation_utils_is_animation_controls_mjs__WEBPACK_IMPORTED_MODULE_0__","_variant_props_mjs__WEBPACK_IMPORTED_MODULE_1__","_is_variant_label_mjs__WEBPACK_IMPORTED_MODULE_2__","isVariantLabel","resolveVariant","_resolve_variants_mjs__WEBPACK_IMPORTED_MODULE_0__","getValueState","resolveVariantFromProps","variantPriorityOrder","variantProps","MotionGlobalConfig","addUniqueItem","arr","item","removeItem","warning","_noop_mjs__WEBPACK_IMPORTED_MODULE_0__","invariant","isBrowser","isNumericalString","isRefObject","isZeroValueString","any","defaultOffset","_fill_mjs__WEBPACK_IMPORTED_MODULE_0__","fillOffset","remaining","offsetProgress","_progress_mjs__WEBPACK_IMPORTED_MODULE_0__","_mix_number_mjs__WEBPACK_IMPORTED_MODULE_1__","combineFunctions","transformers","toFromDifference","isCustomValue","resolveFinalValueInKeyframes","_animation_utils_is_keyframes_target_mjs__WEBPACK_IMPORTED_MODULE_0__","SubscriptionManager","subscriptions","_array_mjs__WEBPACK_IMPORTED_MODULE_0__","numSubscriptions","getSize","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","useConstant","init","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__","useLayoutEffect","velocityPerSecond","frameDuration","isFloat","collectMotionValues","MotionValue","version","canTrackVelocity","updateAndNotify","_frameloop_sync_time_mjs__WEBPACK_IMPORTED_MODULE_0__","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","prevFrameValue","prevUpdatedAt","onChange","subscription","_utils_subscription_manager_mjs__WEBPACK_IMPORTED_MODULE_1__","_frameloop_frame_mjs__WEBPACK_IMPORTED_MODULE_2__","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","endAnimation","getPrevious","_utils_velocity_per_second_mjs__WEBPACK_IMPORTED_MODULE_3__","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","_utils_mjs__WEBPACK_IMPORTED_MODULE_0__","parseInt","_rgba_mjs__WEBPACK_IMPORTED_MODULE_1__","alpha$1","_numbers_units_mjs__WEBPACK_IMPORTED_MODULE_1__","_utils_mjs__WEBPACK_IMPORTED_MODULE_2__","Nw","_numbers_index_mjs__WEBPACK_IMPORTED_MODULE_3__","_rgba_mjs__WEBPACK_IMPORTED_MODULE_0__","_hex_mjs__WEBPACK_IMPORTED_MODULE_1__","_hsla_mjs__WEBPACK_IMPORTED_MODULE_2__","_utils_mjs__WEBPACK_IMPORTED_MODULE_3__","HD","clampRgbUnit","_utils_clamp_mjs__WEBPACK_IMPORTED_MODULE_0__","rgbUnit","_numbers_index_mjs__WEBPACK_IMPORTED_MODULE_1__","isColorString","testProp","mj","splitColor","aName","bName","cName","KP","maxDefaults","applyDefaultFilter","unit","functionRegex","_index_mjs__WEBPACK_IMPORTED_MODULE_1__","functions","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","toString","tokenised","_color_index_mjs__WEBPACK_IMPORTED_MODULE_1__","parsedValue","parseComplexValue","numSections","convertNumbersToZero","dA","parsed","transformer","createUnitType","endsWith","degrees","progressPercentage","sanitize","floatRegex","colorRegex","singleColorRegex","isString","useMotionTemplate","fragments","numFragments","useCombineMotionValues","combineValues","use_motion_value","updateValue","scheduleUpdate","useMotionValue","_utils_use_constant_mjs__WEBPACK_IMPORTED_MODULE_1__","_index_mjs__WEBPACK_IMPORTED_MODULE_2__","_context_MotionConfigContext_mjs__WEBPACK_IMPORTED_MODULE_3__","setLatest","useState","isWillChangeMotionValue","_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_0__","isMotionValue"],"sourceRoot":""}