{"version":3,"file":"static/chunks/1263-5c2c2a688be07cc5.js","mappings":"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","sources":["webpack://_N_E/../src/Collapsible.tsx","webpack://_N_E/../src/Accordion.tsx","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-force-update.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/microtask.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.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/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/utils/pipe.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/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/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/frameloop/sync-time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/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/memo.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/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/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/utils/is-easing-array.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/circ.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/back.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/map.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/progress.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/color.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/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/fill.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/offsets/default.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/offsets/time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.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/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/animation/interfaces/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/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/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/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/render/dom/utils/is-svg-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/store.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/render/html/HTMLVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/utils/GlobalConfig.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/noop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs"],"sourcesContent":["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps

= P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ElementRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n \n \n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n \n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n \n {({ present }) => (\n \n )}\n \n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ElementRef;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef>();\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n

= P & { __scopeAccordion?: Scope };\nconst [createAccordionContext, createAccordionScope] = createContextScope(ACCORDION_NAME, [\n createCollectionScope,\n createCollapsibleScope,\n]);\nconst useCollapsibleScope = createCollapsibleScope();\n\ntype AccordionElement = AccordionImplMultipleElement | AccordionImplSingleElement;\ninterface AccordionSingleProps extends AccordionImplSingleProps {\n type: 'single';\n}\ninterface AccordionMultipleProps extends AccordionImplMultipleProps {\n type: 'multiple';\n}\n\nconst Accordion = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { type, ...accordionProps } = props;\n const singleProps = accordionProps as AccordionImplSingleProps;\n const multipleProps = accordionProps as AccordionImplMultipleProps;\n return (\n \n {type === 'multiple' ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n\nAccordion.displayName = ACCORDION_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionValueContextValue = {\n value: string[];\n onItemOpen(value: string): void;\n onItemClose(value: string): void;\n};\n\nconst [AccordionValueProvider, useAccordionValueContext] =\n createAccordionContext(ACCORDION_NAME);\n\nconst [AccordionCollapsibleProvider, useAccordionCollapsibleContext] = createAccordionContext(\n ACCORDION_NAME,\n { collapsible: false }\n);\n\ntype AccordionImplSingleElement = AccordionImplElement;\ninterface AccordionImplSingleProps extends AccordionImplProps {\n /**\n * The controlled stateful value of the accordion item whose content is expanded.\n */\n value?: string;\n /**\n * The value of the item whose content is expanded when the accordion is initially rendered. Use\n * `defaultValue` if you do not need to control the state of an accordion.\n */\n defaultValue?: string;\n /**\n * The callback that fires when the state of the accordion changes.\n */\n onValueChange?(value: string): void;\n /**\n * Whether an accordion item can be collapsed after it has been opened.\n * @default false\n */\n collapsible?: boolean;\n}\n\nconst AccordionImplSingle = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {},\n collapsible = false,\n ...accordionSingleProps\n } = props;\n\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n collapsible && setValue(''), [collapsible, setValue])}\n >\n \n \n \n \n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionImplMultipleElement = AccordionImplElement;\ninterface AccordionImplMultipleProps extends AccordionImplProps {\n /**\n * The controlled stateful value of the accordion items whose contents are expanded.\n */\n value?: string[];\n /**\n * The value of the items whose contents are expanded when the accordion is initially rendered. Use\n * `defaultValue` if you do not need to control the state of an accordion.\n */\n defaultValue?: string[];\n /**\n * The callback that fires when the state of the accordion changes.\n */\n onValueChange?(value: string[]): void;\n}\n\nconst AccordionImplMultiple = React.forwardRef<\n AccordionImplMultipleElement,\n AccordionImplMultipleProps\n>((props: ScopedProps, forwardedRef) => {\n const {\n value: valueProp,\n defaultValue,\n onValueChange = () => {},\n ...accordionMultipleProps\n } = props;\n\n const [value = [], setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n const handleItemOpen = React.useCallback(\n (itemValue: string) => setValue((prevValue = []) => [...prevValue, itemValue]),\n [setValue]\n );\n\n const handleItemClose = React.useCallback(\n (itemValue: string) =>\n setValue((prevValue = []) => prevValue.filter((value) => value !== itemValue)),\n [setValue]\n );\n\n return (\n \n \n \n \n \n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype AccordionImplContextValue = {\n disabled?: boolean;\n direction: AccordionImplProps['dir'];\n orientation: AccordionImplProps['orientation'];\n};\n\nconst [AccordionImplProvider, useAccordionContext] =\n createAccordionContext(ACCORDION_NAME);\n\ntype AccordionImplElement = React.ElementRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface AccordionImplProps extends PrimitiveDivProps {\n /**\n * Whether or not an accordion is disabled from user interaction.\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * The layout in which the Accordion operates.\n * @default vertical\n */\n orientation?: React.AriaAttributes['aria-orientation'];\n /**\n * The language read direction.\n */\n dir?: Direction;\n}\n\nconst AccordionImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeAccordion, disabled, dir, orientation = 'vertical', ...accordionProps } = props;\n const accordionRef = React.useRef(null);\n const composedRefs = useComposedRefs(accordionRef, forwardedRef);\n const getItems = useCollection(__scopeAccordion);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === 'ltr';\n\n const handleKeyDown = composeEventHandlers(props.onKeyDown, (event) => {\n if (!ACCORDION_KEYS.includes(event.key)) return;\n const target = event.target as HTMLElement;\n const triggerCollection = getItems().filter((item) => !item.ref.current?.disabled);\n const triggerIndex = triggerCollection.findIndex((item) => item.ref.current === target);\n const triggerCount = triggerCollection.length;\n\n if (triggerIndex === -1) return;\n\n // Prevents page scroll while user is navigating\n event.preventDefault();\n\n let nextIndex = triggerIndex;\n const homeIndex = 0;\n const endIndex = triggerCount - 1;\n\n const moveNext = () => {\n nextIndex = triggerIndex + 1;\n if (nextIndex > endIndex) {\n nextIndex = homeIndex;\n }\n };\n\n const movePrev = () => {\n nextIndex = triggerIndex - 1;\n if (nextIndex < homeIndex) {\n nextIndex = endIndex;\n }\n };\n\n switch (event.key) {\n case 'Home':\n nextIndex = homeIndex;\n break;\n case 'End':\n nextIndex = endIndex;\n break;\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) {\n moveNext();\n } else {\n movePrev();\n }\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n moveNext();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n if (isDirectionLTR) {\n movePrev();\n } else {\n moveNext();\n }\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n movePrev();\n }\n break;\n }\n\n const clampedIndex = nextIndex % triggerCount;\n triggerCollection[clampedIndex].ref.current?.focus();\n });\n\n return (\n \n \n \n \n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'AccordionItem';\n\ntype AccordionItemContextValue = { open?: boolean; disabled?: boolean; triggerId: string };\nconst [AccordionItemProvider, useAccordionItemContext] =\n createAccordionContext(ITEM_NAME);\n\ntype AccordionItemElement = React.ElementRef;\ntype CollapsibleProps = React.ComponentPropsWithoutRef;\ninterface AccordionItemProps\n extends Omit {\n /**\n * Whether or not an accordion item is disabled from user interaction.\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * A string value for the accordion item. All items within an accordion should use a unique value.\n */\n value: string;\n}\n\n/**\n * `AccordionItem` contains all of the parts of a collapsible section inside of an `Accordion`.\n */\nconst AccordionItem = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeAccordion, value, ...accordionItemProps } = props;\n const accordionContext = useAccordionContext(ITEM_NAME, __scopeAccordion);\n const valueContext = useAccordionValueContext(ITEM_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n const triggerId = useId();\n const open = (value && valueContext.value.includes(value)) || false;\n const disabled = accordionContext.disabled || props.disabled;\n\n return (\n \n {\n if (open) {\n valueContext.onItemOpen(value);\n } else {\n valueContext.onItemClose(value);\n }\n }}\n />\n \n );\n }\n);\n\nAccordionItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst HEADER_NAME = 'AccordionHeader';\n\ntype AccordionHeaderElement = React.ElementRef;\ntype PrimitiveHeading3Props = React.ComponentPropsWithoutRef;\ninterface AccordionHeaderProps extends PrimitiveHeading3Props {}\n\n/**\n * `AccordionHeader` contains the content for the parts of an `AccordionItem` that will be visible\n * whether or not its content is collapsed.\n */\nconst AccordionHeader = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeAccordion, ...headerProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(HEADER_NAME, __scopeAccordion);\n return (\n \n );\n }\n);\n\nAccordionHeader.displayName = HEADER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'AccordionTrigger';\n\ntype AccordionTriggerElement = React.ElementRef;\ntype CollapsibleTriggerProps = React.ComponentPropsWithoutRef;\ninterface AccordionTriggerProps extends CollapsibleTriggerProps {}\n\n/**\n * `AccordionTrigger` is the trigger that toggles the collapsed state of an `AccordionItem`. It\n * should always be nested inside of an `AccordionHeader`.\n */\nconst AccordionTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeAccordion, ...triggerProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(TRIGGER_NAME, __scopeAccordion);\n const collapsibleContext = useAccordionCollapsibleContext(TRIGGER_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n return (\n \n \n \n );\n }\n);\n\nAccordionTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * AccordionContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'AccordionContent';\n\ntype AccordionContentElement = React.ElementRef;\ntype CollapsibleContentProps = React.ComponentPropsWithoutRef;\ninterface AccordionContentProps extends CollapsibleContentProps {}\n\n/**\n * `AccordionContent` contains the collapsible content for an `AccordionItem`.\n */\nconst AccordionContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeAccordion, ...contentProps } = props;\n const accordionContext = useAccordionContext(ACCORDION_NAME, __scopeAccordion);\n const itemContext = useAccordionItemContext(CONTENT_NAME, __scopeAccordion);\n const collapsibleScope = useCollapsibleScope(__scopeAccordion);\n return (\n \n );\n }\n);\n\nAccordionContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Accordion;\nconst Item = AccordionItem;\nconst Header = AccordionHeader;\nconst Trigger = AccordionTrigger;\nconst Content = AccordionContent;\n\nexport {\n createAccordionScope,\n //\n Accordion,\n AccordionItem,\n AccordionHeader,\n AccordionTrigger,\n AccordionContent,\n //\n Root,\n Item,\n Header,\n Trigger,\n Content,\n};\nexport type {\n AccordionSingleProps,\n AccordionMultipleProps,\n AccordionItemProps,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n};\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? [Math.random()] : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = jsx(PopChild, { isPresent: isPresent, children: children });\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (jsx(Fragment, { children: childrenToRender.map((child) => (jsx(PresenceChild, { isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)))) }));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n // clean up the exiting children map\n exitingChildren.delete(key);\n // compute the keys of children that were rendered once but are no longer present\n // this could happen in case of too many fast consequent renderings\n // @link https://github.com/framer/motion/issues/2023\n const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n // clean up the all children map\n leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n // make sure to render only the children that are actually visible\n presentChildren.current = filteredChildren.filter((presentChild) => {\n const presentChildKey = getChildKey(presentChild);\n return (\n // filter out the node exiting\n presentChildKey === key ||\n // filter out the leftover children\n leftOverKeys.includes(presentChildKey));\n });\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (jsx(PresenceChild, { isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (jsx(PresenceChild, { isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (jsx(Fragment, { children: exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child)) }));\n};\n\nexport { AnimatePresence };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\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 flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame);\n return acc;\n }, {});\n const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n // Unrolled render loop for better per-frame performance\n read.process(state);\n resolveKeyframes.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nlet scheduleHandoffComplete = false;\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (visualElement &&\n !visualElement.projection &&\n ProjectionNodeConstructor &&\n (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n }\n 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 visualElement.updateFeatures();\n microtask.render(visualElement.render);\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n if (!scheduleHandoffComplete) {\n scheduleHandoffComplete = true;\n queueMicrotask(completeHandoff);\n }\n }\n });\n return visualElement;\n}\nfunction completeHandoff() {\n window.HandoffComplete = true;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n ? undefined\n : getClosestProjectingNode(visualElement.parent));\n visualElement.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n visualElement,\n scheduleRender: () => visualElement.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,\n layoutScroll,\n layoutRoot,\n });\n}\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n if (instance) {\n visualElement.mount(instance);\n }\n else {\n visualElement.unmount();\n }\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\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","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { warning, invariant } from '../utils/errors.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction 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 useStrictMode(configAndProps, preloadedFeatures);\n const layoutProjection = getProjectionFunctionality(configAndProps);\n MeasureLayout = layoutProjection.MeasureLayout;\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n const 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}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n const isStrict = useContext(LazyContext).strict;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n configAndProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n}\nfunction getProjectionFunctionality(props) {\n const { drag, layout } = featureDefinitions;\n if (!drag && !layout)\n return {};\n const combined = { ...drag, ...layout };\n return {\n MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n ? combined.MeasureLayout\n : undefined,\n ProjectionNode: combined.ProjectionNode,\n };\n}\n\nexport { 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 scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\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","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","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","/**\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}\nfunction isNullish(v) {\n return v == null;\n}\n\nexport { colorRegex, floatRegex, isNullish, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n backgroundPositionX: px,\n backgroundPositionY: px,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\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","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 { 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","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { 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","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n var _a;\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style &&\n isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props) ||\n ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","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 isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\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","/**\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","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 { 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","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","/**\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","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 { 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","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","/**\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","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 { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n var _a;\n (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete());\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n readAllKeyframes();\n measureAllKeyframes();\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n /**\n * Track whether this resolver has completed. Once complete, it never\n * needs to attempt keyframe resolution again.\n */\n this.isComplete = false;\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n /**\n * Track whether this resolver is currently scheduled to resolve\n * to allow it to be cancelled and resumed externally.\n */\n this.isScheduled = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.isScheduled = true;\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n /**\n * If a keyframe is null, we hydrate it either by reading it from\n * the instance, or propagating from previous keyframes.\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null) {\n /**\n * If the first keyframe is null, we need to find its value by sampling the element\n */\n if (i === 0) {\n const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n else {\n unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n }\n }\n }\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete() {\n this.isComplete = true;\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n toResolve.delete(this);\n }\n cancel() {\n if (!this.isComplete) {\n this.isScheduled = false;\n toResolve.delete(this);\n }\n }\n resume() {\n if (!this.isComplete)\n this.scheduleResolve();\n }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","import { isString, singleColorRegex, isNullish, 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 &&\n !isNullish(v) &&\n Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { alpha, number } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { 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 { 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 '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue) {\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","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\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","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } 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","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","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { invariant } from '../../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","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since 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","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nexport { defaultEasing, keyframes };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: () => frame.update(passTimestamp, true),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n };\n};\n\nexport { frameloopDriver };\n","import { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { calcGeneratorDuration } from '../generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\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 { 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 { 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 { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.2.14\";\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = null;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n const currentTime = time.now();\n /**\n * If we're updating the value during another frame or eventloop\n * than the previous frame, then the we set the previous frame value\n * to current.\n */\n if (this.updatedAt !== currentTime) {\n this.setPrevFrameValue();\n }\n this.prev = this.current;\n this.setCurrent(v);\n // Update update subscribers\n if (this.current !== this.prev && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n this.hasAnimated = false;\n this.setCurrent(init);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n if (this.canTrackVelocity === null && current !== undefined) {\n this.canTrackVelocity = isFloat(this.current);\n }\n }\n setPrevFrameValue(prevFrameValue = this.current) {\n this.prevFrameValue = prevFrameValue;\n this.prevUpdatedAt = this.updatedAt;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n }\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n frame.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = undefined;\n this.prevFrameValue = prev;\n this.prevUpdatedAt = this.updatedAt - delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v, endAnimation = true) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n endAnimation && this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nexport { setTarget };\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.getProps()[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\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 { 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 let state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (type) => (acc, definition) => {\n var _a;\n const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(changedActiveType) {\n const props = visualElement.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 reset: () => {\n state = createState();\n isInitialRender = true;\n },\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n if (isAnimationControls(animate)) {\n this.unmountControls = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() {\n var _a;\n this.node.animationState.reset();\n (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","const 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","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY ||\n values.skewX ||\n values.skewY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\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","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { 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) && dragConstraints.current) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n frame.read(measureDragConstraints);\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","import { useContext, useId, useEffect } 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","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } 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.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n 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.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n 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 ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n 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","// 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.14\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.2.14 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","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { createBox } from '../projection/geometry/models.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 propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\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 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 const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n 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 updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.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 { 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 { 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 { 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","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\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","const noop = (any) => any;\n\nexport { noop };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n"],"names":["COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","createContextScope","CollapsibleProvider","useCollapsibleContext","Collapsible","React","props","forwardedRef","__scopeCollapsible","open","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","setOpen","useControllableState","prop","defaultProp","onChange","jsx","scope","contentId","useId","onOpenToggle","prevOpen","children","Primitive","div","getState","ref","displayName","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","button","type","onClick","composeEventHandlers","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","Presence","present","param","CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","useComposedRefs","heightRef","height","current","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","useLayoutEffect","node","transitionDuration","style","animationName","rect","getBoundingClientRect","id","hidden","concat","ACCORDION_NAME","ACCORDION_KEYS","Collection","useCollection","createCollectionScope","createCollection","createAccordionContext","createAccordionScope","useCollapsibleScope","Accordion","accordionProps","Provider","__scopeAccordion","AccordionImplMultiple","AccordionImplSingle","AccordionValueProvider","useAccordionValueContext","AccordionCollapsibleProvider","useAccordionCollapsibleContext","collapsible","value","valueProp","defaultValue","onValueChange","accordionSingleProps","setValue","onItemOpen","onItemClose","AccordionImpl","accordionMultipleProps","handleItemOpen","prevValue","itemValue","handleItemClose","filter","AccordionImplProvider","useAccordionContext","dir","orientation","accordionRef","getItems","isDirectionLTR","direction","useDirection","handleKeyDown","onKeyDown","triggerCollection","includes","event","key","target","item","triggerIndex","findIndex","triggerCount","length","preventDefault","nextIndex","endIndex","moveNext","homeIndex","movePrev","focus","Slot","ITEM_NAME","AccordionItemProvider","useAccordionItemContext","AccordionItem","accordionItemProps","accordionContext","valueContext","collapsibleScope","triggerId","HEADER_NAME","AccordionHeader","headerProps","itemContext","h3","AccordionTrigger","collapsibleContext","ItemSlot","AccordionContent","role","Root","Item","Header","Trigger","Content","useIsMounted","isMounted","react","useRef","use_isomorphic_effect","L","PopChildMeasure","Component","getSnapshotBeforeUpdate","prevProps","element","childRef","size","sizeRef","offsetHeight","offsetWidth","top","offsetTop","left","offsetLeft","componentDidUpdate","render","PopChild","nonce","useContext","MotionConfigContext","_","useInsertionEffect","dataset","motionPopId","document","createElement","head","appendChild","sheet","insertRule","removeChild","jsx_runtime","cloneElement","PresenceChild","initial","onExitComplete","custom","presenceAffectsLayout","mode","presenceChildren","use_constant","h","newChildrenMap","useMemo","isComplete","set","childId","values","register","delete","Math","random","forEach","useEffect","PresenceContext","O","Map","getChildKey","child","AnimatePresence","exitBeforeEnter","callback","errors","k","forceRender","LayoutGroupContext","p","useForceUpdate","forcedRenderCount","setForcedRenderCount","useState","useCallback","frameloop_frame","Wi","postRender","filteredChildren","onlyElements","filtered","Children","isValidElement","push","childrenToRender","exitingChildren","presentChildren","allChildren","isInitialRender","updateChildLookup","clear","Fragment","map","undefined","presentKeys","targetKeys","numPresent","i","indexOf","has","component","get","insertionIndex","exitingComponent","leftOverKeys","Array","from","keys","childKey","leftOverKey","presentChildKey","presentChild","splice","react__WEBPACK_IMPORTED_MODULE_0__","createContext","transformPagePoint","isStatic","reducedMotion","Queue","constructor","order","scheduled","Set","add","process","remove","index","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","state","delta","timestamp","isProcessing","flagRunNextFrame","steps","reduce","acc","createRenderStep","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","keepAlive","immediate","addToCurrentFrame","queue","cancel","frameData","read","resolveKeyframes","update","preRender","processBatch","GlobalConfig","c","useManualTiming","performance","now","max","min","wake","frame","cancelFrame","_batcher_mjs__WEBPACK_IMPORTED_MODULE_0__","Z","_utils_noop_mjs__WEBPACK_IMPORTED_MODULE_1__","isValidProp","MotionContext","LazyContext","strict","camelToDash","str","replace","toLowerCase","optimizedAppearDataAttribute","microtask","cancelMicrotask","batcher","queueMicrotask","isRefObject","Object","prototype","hasOwnProperty","call","SwitchLayoutGroupContext","scheduleHandoffComplete","completeHandoff","window","HandoffComplete","isVariantLabel","v","isArray","isAnimationControls","start","variantPriorityOrder","variantProps","isControllingVariants","animate","some","name","isVariantNode","Boolean","variants","variantLabelsAsDependency","join","featureProps","animation","exit","drag","hover","tap","pan","inView","layout","featureDefinitions","isEnabled","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","test","scaleCorrectors","transformPropOrder","transformProps","isForcedMotionValue","layoutId","startsWith","isMotionValue","getVelocity","translateAlias","x","y","z","transformPerspective","numTransforms","checkStringStartsWith","token","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","split","trim","getValueAsType","transform","clamp","number","parse","parseFloat","alpha","scale","default","sanitize","round","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","endsWith","unit","degrees","percent","px","vh","vw","progressPercentage","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","right","bottom","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","perspective","opacity","originX","originY","originZ","zIndex","backgroundPositionX","backgroundPositionY","fillOpacity","strokeOpacity","numOctaves","buildHTMLStyles","latestValues","options","transformTemplate","vars","transformOrigin","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","buildTransform","enableHardwareAcceleration","allowTransformNone","transformIsDefault","transformString","transformName","createHtmlRenderState","copyRawValuesOnly","source","validMotionProps","isValidMotionProp","shouldForward","require","_a","calcOrigin","origin","offset","dashKeys","array","camelKeys","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","latest","isSVGTag","viewBox","attrs","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","createSvgRenderState","tag","renderHTML","styleProp","projection","assign","getProjectionStyles","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","setAttribute","scrapeMotionValuesFromProps","visualElement","newValues","getValue","liveStyle","scrape_motion_values_scrapeMotionValuesFromProps","charAt","toUpperCase","substring","getValueState","resolveVariantFromProps","definition","velocity","isKeyframesTarget","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","makeUseVisualState","presenceContext","context_PresenceContext","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","resolved","transitionEnd","transition","valueTarget","mount","instance","config","svgMotionConfig","useVisualState","getBBox","e","tagName","htmlMotionConfig","addDomEvent","eventName","handler","passive","addEventListener","removeEventListener","isPrimaryPointer","pointerType","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addPointerEvent","combineFunctions","a","b","pipe","transformers","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","addHoverEvent","isActive","callbackName","info","getProps","animationState","whileHover","setActive","HoverGesture","unmount","FocusGesture","arguments","onFocus","isFocusVisible","matches","onBlur","isNodeOrChild","parent","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","noop","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","all","InViewFeature","hasEnteredView","isInView","startObserver","viewport","root","rootMargin","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","JSON","stringify","IntersectionObserver","observe","unobserve","isIntersecting","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","shallowCompare","next","prev","prevLength","resolveVariant","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","underDampedSpring","stiffness","damping","restSpeed","criticallyDampedSpring","sqrt","keyframesTransition","duration","ease","getDefaultTransition","valueKey","keyframes","getValueTransition","instantAnimationState","isNotNull","getFinalKeyframe","repeat","repeatType","finalKeyframe","resolvedKeyframes","clearTime","time","newTime","isZeroValueString","isNumericalString","splitCSSVariableRegex","positionalKeys","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","match","transformKeys","nonTranslationalTransformKeys","positionalValues","testValueType","dimensionValueTypes","findDimensionValueType","find","toResolve","isScheduled","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","resolver","needsMeasurement","elementsToMeasure","transformsToRestore","removedTransforms","removeNonTranslationalTransform","measureInitialState","restore","measureEndState","suspendedScrollY","scrollTo","complete","readAllKeyframes","readKeyframes","KeyframeResolver","unresolvedKeyframes","onComplete","motionValue","isAsync","scheduleResolve","currentValue","valueAsRead","readValue","setFinalKeyframe","renderEndStyles","resume","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hex","r","g","parseInt","hsla","hue","saturation","lightness","color","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","toString","indexes","var","types","tokenised","parsedValue","parseComplexValue","createTransformer","numSections","output","convertNumbersToZero","complex","_b","isNaN","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","slice","functionRegex","functions","defaultValueTypes","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","invalidTemplates","DOMKeyframesResolver","owner","keyframe","getVariableValue","depth","fallback","parseCSSVariable","exec","token1","token2","getComputedStyle","getPropertyValue","trimmed","resolveNoneKeyframes","originType","targetType","noneKeyframeIndexes","makeNoneKeyframesAnimatable","animatableTemplate","noneIndex","pageYOffset","measuredOrigin","measureViewportBox","measureKeyframe","jump","finalKeyframeIndex","unsetTransformName","unsetTransformValue","memo","result","isAnimatable","BaseAnimation","autoplay","delay","repeatDelay","isStopped","hasAttemptedResolve","updateFinishedPromise","_resolved","onKeyframesResolved","onUpdate","isGenerator","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","K","hasKeyframesChanged","resolveFinishedPromise","resolvedAnimation","initPlayback","onPostResolved","then","resolve","reject","currentFinishedPromise","Promise","calcGeneratorVelocity","resolveValue","t","frameDuration","prevT","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","spring","restDelta","resolveSpring","done","mass","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","exponentialDecay","safeMin","exp","pow","d","approximateRoot","initialGuess","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","abs","angularFreq","sin","cos","dampedAngularFreq","freqForT","sinh","cosh","calculatedDuration","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","timeReachedBoundary","spring$1","isOutOfBounds","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","checkCatchBoundary","hasUpdatedFrame","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","binarySubdivide","lowerBound","upperBound","currentX","currentT","aX","easeIn","easeOut","easeInOut","isEasingArray","mirrorEasing","easing","reverseEasing","circIn","acos","circOut","circInOut","backOut","backIn","backInOut","easingLookup","linear","anticipate","easingDefinitionToFunction","x1","y1","x2","y2","progress","to","toFromDifference","mixNumber","hueToRgb","q","mixImmediate","mixLinearColor","fromExpo","expo","colorTypes","getColorType","asRGBA","model","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","invisibleValues","complex_mixNumber","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","template","originStats","targetStats","matchOrder","orderedOrigin","pointers","originIndex","originValue","mixer","keyframeValues","times","easingFunctions","mapTimeToKeyframe","interpolate","input","isClamp","inputLength","reverse","mixers","createMixers","customMixer","mixerFactory","numMixers","interpolator","progressInRange","defaultOffset","arr","fillOffset","remaining","offsetProgress","o","frameloopDriver","passTimestamp","stop","Pn","generators","decay","tween","percentToProgress","MainThreadAnimation","KeyframeResolver$1","holdTime","startTime","cancelTime","currentTime","playbackSpeed","pendingPlayState","teardown","onStop","onResolved","keyframes$1","mapPercentToKeyframes","mirroredGenerator","generatorFactory","generator","calcGeneratorDuration","Infinity","resolvedDuration","totalDuration","play","pause","tick","sample","speed","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","floor","iterationProgress","isAnimationFinished","finish","driver","newSpeed","hasChanged","onPlay","stopDriver","isBezierDefinition","cubicBezierAsString","supportedWaapiEasing","mapEasingToNativeEasingWithDefault","mapEasingToNativeEasing","supportsWaapi","Element","acceleratedValues","AcceleratedAnimation","isWaapiSupportedEasing","every","pregeneratedAnimation","pregenerateKeyframes","sampleAnimation","pregeneratedKeyframes","animateStyle","valueName","keyframeOptions","iterations","pendingTimeline","timeline","onfinish","playbackRate","playState","attachTimeline","sampleTime","setWithVelocity","supports","HTMLElement","supportsScrollTimeline","ScrollTimeline","GroupPlaybackControls","animations","runAll","onResolve","onReject","catch","getAll","propName","setAll","newValue","cancelAll","observeTimeline","prevProgress","onFrame","percentage","cancelTimeline","methodName","controls","animateMotionValue","isHandoff","valueTransition","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","shouldSkip","skipAnimations","isWillChangeMotionValue","addUniqueItem","removeItem","SubscriptionManager","subscriptions","notify","numSubscriptions","getSize","isFloat","collectMotionValues","MotionValue","init","version","canTrackVelocity","events","updateAndNotify","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","hasAnimated","prevFrameValue","prevUpdatedAt","subscription","on","unsubscribe","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","endAnimation","getPrevious","startAnimation","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","getOptimisedAppearId","animateTarget","targetAndTransition","transitionOverride","willChange","animationTypeState","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","HandoffAppearAnimations","appearId","shouldReduceMotion","setTarget","hasValue","addValue","animateVariant","variant","getAnimation","getChildAnimations","variantChildren","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sort","sortByTreeOrder","first","last","sortNodePosition","reversePriorityOrder","numAnimationTypes","createTypeState","prevResolvedValues","createState","whileInView","whileDrag","whileFocus","AnimationFeature","createAnimationState","animateVisualElement","resolvedDefinition","buildResolvedTypeValues","animateChanges","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","shouldAnimateType","variantDidChange","handledRemovedValues","definitionList","resolvedValues","allKeys","markToAnimate","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setAnimateFunction","makeAnimator","reset","updateAnimationControlsSubscription","unmountControls","subscribe","prevAnimate","ExitAnimationFeature","prevIsPresent","prevPresenceContext","exitAnimation","PanSession","handlers","contextWindow","dragSnapToOrigin","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","calcLength","axis","isNear","maxDistance","calcAxisDelta","originPoint","translate","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","has2DTranslate","is2DTranslate","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","transformBoxPoints","topLeft","bottomRight","getContextWindow","ownerDocument","defaultView","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","pauseAnimation","stopAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","getAnimationState","getTransformPagePoint","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","dragConstraints","measure","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measurePageBox","rootProjectionNode","viewportBox","scroll","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","onDragTransitionEnd","startAxisValueAnimation","dragKey","externalMotionValue","scalePositionWithinConstraints","boxProgress","constraints_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","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","group","didUpdate","safeToRemove","setOptions","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","MeasureLayout","usePresence","applyTo","boxShadow","treeScale","projectionDelta","shadow","xScale","yScale","averageScale","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","delta_remove_xKeys","delta_remove_yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEqualsRounded","aspectRatio","NodeStack","scheduleRender","prevLead","lead","indexOfNode","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","elementScaleX","elementScaleY","compareByDepth","FlatTree","isDirty","transformAxes","hiddenVisibility","visibility","create_projection_node_id","projectionFrameData","totalNodes","resolvedTargetDeltas","recalculatedProjection","resetDistortingTransform","sharedAnimationValues","setStaticValue","create_projection_node_createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","hasCheckedOptimisedAppear","eventHandlers","hasTreeAnimated","updateScheduled","scheduleUpdate","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","MotionDebug","record","hasProjected","isVisible","animationProgress","sharedNodes","path","notifyListeners","args","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","HandoffCancelAllAnimations","isOptimisedAppearTree","projectionNode","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","S6","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","layoutScroll","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","resolvedRelativeTargetAt","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","applyTreeDeltas","treePath","isSharedTransition","treeLength","display","projectionTransform","projectionDeltaWithTransform","prevProjectionTransform","notifyAll","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacityExit","borderLabel","followRadius","leadRadius","animateSingleValue","motionValue$1","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","resetValues","styles","pointerEvents","emptyStyles","valuesToRender","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","string","roundPoint","DocumentProjectionNode","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode","documentNode","position","prefersReducedMotion","hasReducedMotionListener","visualElementStore","valueTypes","findValueType","propEventHandlers","numVariantProps","VisualElement","_props","_prevProps","_visualElement","reducedMotionConfig","visualState","features","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","baseTarget","initialValues","initialMotionValues","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","is_browser","j","matchMedia","motionMediaQuery","setReducedMotionPreferences","addListener","feature","valueIsTransform","removeOnChange","latestValue","removeOnRenderRequest","other","sortInstanceNodePosition","updateFeatures","featureDefinition","FeatureConstructor","build","measureInstanceViewportBox","getStaticValue","listener","updateMotionValuesFromProps","nextValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","startAtParent","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","DOMVisualElement","compareDocumentPosition","HTMLVisualElement","defaultType","computedStyle","childSubscription","textContent","SVGVisualElement","getAttribute","create_visual_element_createDomVisualElement","allowProjection","preloadedFeatures","ProjectionNode","motion","createMotionProxy","createConfig","customMotionComponentConfig","motion_createMotionComponent","createVisualElement","useRender","loadFeatures","ForwardRefComponent","forwardRef","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","layoutProjection","getProjectionFunctionality","combined","useVisualElement","ProjectionNodeConstructor","lazyContext","visualElementRef","renderer","initialLayoutGroupConfig","createProjectionNode","getClosestProjectingNode","wantsHandoff","jsxs","Proxy","componentCache","_target","create_config_createDomMotionConfig","forwardMotionProps","createUseRender","visualProps","useVisualProps","_isStatic","rawStyles","htmlProps","useStyle","useInitialMotionValues","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","tabIndex","filteredProps","filterProps","isDom","elementProps","renderedChildren","MotionGlobalConfig","warning","_noop_mjs__WEBPACK_IMPORTED_MODULE_0__","invariant","isBrowser","any","useConstant","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__"],"sourceRoot":""}