{"version":3,"file":"static/chunks/9662-a8a707145e4577f9.js","mappings":"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","sources":["webpack://_N_E/./node_modules/next/dist/api/link.js","webpack://_N_E/./node_modules/@radix-ui/react-direction/dist/index.mjs","webpack://_N_E/../src/Popover.tsx","webpack://_N_E/./node_modules/@radix-ui/number/dist/index.mjs","webpack://_N_E/../src/ScrollArea.tsx","webpack://_N_E/../src/useStateMachine.ts","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":["export { default } from \"../client/link\";\nexport * from \"../client/link\";\n\n//# sourceMappingURL=link.js.map","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { useId } from '@radix-ui/react-id';\nimport * as PopperPrimitive from '@radix-ui/react-popper';\nimport { createPopperScope } from '@radix-ui/react-popper';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { hideOthers } from 'aria-hidden';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst POPOVER_NAME = 'Popover';\n\ntype ScopedProps

= P & { __scopePopover?: Scope };\nconst [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope,\n]);\nconst usePopperScope = createPopperScope();\n\ntype PopoverContextValue = {\n triggerRef: React.RefObject;\n contentId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n hasCustomAnchor: boolean;\n onCustomAnchorAdd(): void;\n onCustomAnchorRemove(): void;\n modal: boolean;\n};\n\nconst [PopoverProvider, usePopoverContext] =\n createPopoverContext(POPOVER_NAME);\n\ninterface PopoverProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nconst Popover: React.FC = (props: ScopedProps) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false,\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n \n setOpen((prevOpen) => !prevOpen), [setOpen])}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n modal={modal}\n >\n {children}\n \n \n );\n};\n\nPopover.displayName = POPOVER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverAnchor\n * -----------------------------------------------------------------------------------------------*/\n\nconst ANCHOR_NAME = 'PopoverAnchor';\n\ntype PopoverAnchorElement = React.ElementRef;\ntype PopperAnchorProps = React.ComponentPropsWithoutRef;\ninterface PopoverAnchorProps extends PopperAnchorProps {}\n\nconst PopoverAnchor = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n\n return ;\n }\n);\n\nPopoverAnchor.displayName = ANCHOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'PopoverTrigger';\n\ntype PopoverTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef;\ninterface PopoverTriggerProps extends PrimitiveButtonProps {}\n\nconst PopoverTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n\n const trigger = (\n \n );\n\n return context.hasCustomAnchor ? (\n trigger\n ) : (\n \n {trigger}\n \n );\n }\n);\n\nPopoverTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'PopoverPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef;\ninterface PopoverPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\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 PopoverPortal: React.FC = (props: ScopedProps) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nPopoverPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'PopoverContent';\n\ninterface PopoverContentProps extends PopoverContentTypeProps {\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 PopoverContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return (\n \n {context.modal ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n\nPopoverContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentTypeElement = PopoverContentImplElement;\ninterface PopoverContentTypeProps\n extends Omit {}\n\nconst PopoverContentModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n \n {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n )}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )}\n />\n \n );\n }\n);\n\nconst PopoverContentNonModal = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PopoverContentImplElement = React.ElementRef;\ntype FocusScopeProps = React.ComponentPropsWithoutRef;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef;\ntype PopperContentProps = React.ComponentPropsWithoutRef;\ninterface PopoverContentImplProps\n extends Omit,\n Omit {\n /**\n * Whether focus should be trapped within the `Popover`\n * (default: false)\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst PopoverContentImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n\n // Make sure the whole tree has focus guards as our `Popover` may be\n // the last element in the DOM (beacuse of the `Portal`)\n useFocusGuards();\n\n return (\n \n context.onOpenChange(false)}\n >\n \n \n \n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'PopoverClose';\n\ntype PopoverCloseElement = React.ElementRef;\ninterface PopoverCloseProps extends PrimitiveButtonProps {}\n\nconst PopoverClose = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return (\n context.onOpenChange(false))}\n />\n );\n }\n);\n\nPopoverClose.displayName = CLOSE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * PopoverArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'PopoverArrow';\n\ntype PopoverArrowElement = React.ElementRef;\ntype PopperArrowProps = React.ComponentPropsWithoutRef;\ninterface PopoverArrowProps extends PopperArrowProps {}\n\nconst PopoverArrow = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return ;\n }\n);\n\nPopoverArrow.displayName = ARROW_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Popover;\nconst Anchor = PopoverAnchor;\nconst Trigger = PopoverTrigger;\nconst Portal = PopoverPortal;\nconst Content = PopoverContent;\nconst Close = PopoverClose;\nconst Arrow = PopoverArrow;\n\nexport {\n createPopoverScope,\n //\n Popover,\n PopoverAnchor,\n PopoverTrigger,\n PopoverPortal,\n PopoverContent,\n PopoverClose,\n PopoverArrow,\n //\n Root,\n Anchor,\n Trigger,\n Portal,\n Content,\n Close,\n Arrow,\n};\nexport type {\n PopoverProps,\n PopoverAnchorProps,\n PopoverTriggerProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n};\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","/// \n\nimport * as React from 'react';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { clamp } from '@radix-ui/number';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useStateMachine } from './useStateMachine';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Sizes = {\n content: number;\n viewport: number;\n scrollbar: {\n size: number;\n paddingStart: number;\n paddingEnd: number;\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollArea\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps

= P & { __scopeScrollArea?: Scope };\nconst [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n dir: Direction;\n scrollHideDelay: number;\n scrollArea: ScrollAreaElement | null;\n viewport: ScrollAreaViewportElement | null;\n onViewportChange(viewport: ScrollAreaViewportElement | null): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement): void;\n scrollbarX: ScrollAreaScrollbarElement | null;\n onScrollbarXChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarXEnabled: boolean;\n onScrollbarXEnabledChange(rendered: boolean): void;\n scrollbarY: ScrollAreaScrollbarElement | null;\n onScrollbarYChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarYEnabled: boolean;\n onScrollbarYEnabledChange(rendered: boolean): void;\n onCornerWidthChange(width: number): void;\n onCornerHeightChange(height: number): void;\n};\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createScrollAreaContext(SCROLL_AREA_NAME);\n\ntype ScrollAreaElement = React.ElementRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface ScrollAreaProps extends PrimitiveDivProps {\n type?: ScrollAreaContextValue['type'];\n dir?: ScrollAreaContextValue['dir'];\n scrollHideDelay?: number;\n}\n\nconst ScrollArea = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = 'hover',\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const [scrollbarX, setScrollbarX] = React.useState(null);\n const [scrollbarY, setScrollbarY] = React.useState(null);\n const [cornerWidth, setCornerWidth] = React.useState(0);\n const [cornerHeight, setCornerHeight] = React.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n\n return (\n \n \n \n );\n }\n);\n\nScrollArea.displayName = SCROLL_AREA_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'ScrollAreaViewport';\n\ntype ScrollAreaViewportElement = React.ElementRef;\ninterface ScrollAreaViewportProps extends PrimitiveDivProps {\n nonce?: string;\n}\n\nconst ScrollAreaViewport = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n \n

\n {children}\n
\n \n \n );\n }\n);\n\nScrollAreaViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaScrollbar\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLLBAR_NAME = 'ScrollAreaScrollbar';\n\ntype ScrollAreaScrollbarElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbar = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === 'horizontal';\n\n React.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n\n return context.type === 'hover' ? (\n \n ) : context.type === 'scroll' ? (\n \n ) : context.type === 'auto' ? (\n \n ) : context.type === 'always' ? (\n \n ) : null;\n }\n);\n\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarHoverElement = ScrollAreaScrollbarAutoElement;\ninterface ScrollAreaScrollbarHoverProps extends ScrollAreaScrollbarAutoProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarHover = React.forwardRef<\n ScrollAreaScrollbarHoverElement,\n ScrollAreaScrollbarHoverProps\n>((props: ScopedProps, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\n scrollArea.addEventListener('pointerenter', handlePointerEnter);\n scrollArea.addEventListener('pointerleave', handlePointerLeave);\n return () => {\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener('pointerenter', handlePointerEnter);\n scrollArea.removeEventListener('pointerleave', handlePointerLeave);\n };\n }\n }, [context.scrollArea, context.scrollHideDelay]);\n\n return (\n \n \n \n );\n});\n\ntype ScrollAreaScrollbarScrollElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarScrollProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarScroll = React.forwardRef<\n ScrollAreaScrollbarScrollElement,\n ScrollAreaScrollbarScrollProps\n>((props: ScopedProps, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === 'horizontal';\n const debounceScrollEnd = useDebounceCallback(() => send('SCROLL_END'), 100);\n const [state, send] = useStateMachine('hidden', {\n hidden: {\n SCROLL: 'scrolling',\n },\n scrolling: {\n SCROLL_END: 'idle',\n POINTER_ENTER: 'interacting',\n },\n interacting: {\n SCROLL: 'interacting',\n POINTER_LEAVE: 'idle',\n },\n idle: {\n HIDE: 'hidden',\n SCROLL: 'scrolling',\n POINTER_ENTER: 'interacting',\n },\n });\n\n React.useEffect(() => {\n if (state === 'idle') {\n const hideTimer = window.setTimeout(() => send('HIDE'), context.scrollHideDelay);\n return () => window.clearTimeout(hideTimer);\n }\n }, [state, context.scrollHideDelay, send]);\n\n React.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send('SCROLL');\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener('scroll', handleScroll);\n return () => viewport.removeEventListener('scroll', handleScroll);\n }\n }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n\n return (\n \n send('POINTER_ENTER'))}\n onPointerLeave={composeEventHandlers(props.onPointerLeave, () => send('POINTER_LEAVE'))}\n />\n \n );\n});\n\ntype ScrollAreaScrollbarAutoElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarAutoProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarAuto = React.forwardRef<\n ScrollAreaScrollbarAutoElement,\n ScrollAreaScrollbarAutoProps\n>((props: ScopedProps, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React.useState(false);\n const isHorizontal = props.orientation === 'horizontal';\n const handleResize = useDebounceCallback(() => {\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n \n \n \n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarVisibleElement = ScrollAreaScrollbarAxisElement;\ninterface ScrollAreaScrollbarVisibleProps\n extends Omit {\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst ScrollAreaScrollbarVisible = React.forwardRef<\n ScrollAreaScrollbarVisibleElement,\n ScrollAreaScrollbarVisibleProps\n>((props: ScopedProps, forwardedRef) => {\n const { orientation = 'vertical', ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React.useRef(null);\n const pointerOffsetRef = React.useRef(0);\n const [sizes, setSizes] = React.useState({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 },\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n\n type UncommonProps = 'onThumbPositionChange' | 'onDragScroll' | 'onWheelScroll';\n const commonProps: Omit = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: (thumb) => (thumbRef.current = thumb),\n onThumbPointerUp: () => (pointerOffsetRef.current = 0),\n onThumbPointerDown: (pointerPos) => (pointerOffsetRef.current = pointerPos),\n };\n\n function getScrollPosition(pointerPos: number, dir?: Direction) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n\n if (orientation === 'horizontal') {\n return (\n {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n }}\n onWheelScroll={(scrollPos) => {\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n }}\n onDragScroll={(pointerPos) => {\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }}\n />\n );\n }\n\n if (orientation === 'vertical') {\n return (\n {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n }}\n onWheelScroll={(scrollPos) => {\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n }}\n onDragScroll={(pointerPos) => {\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }}\n />\n );\n }\n\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarAxisPrivateProps = {\n hasThumb: boolean;\n sizes: Sizes;\n onSizesChange(sizes: Sizes): void;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerDown(pointerPos: number): void;\n onThumbPointerUp(): void;\n onThumbPositionChange(): void;\n onWheelScroll(scrollPos: number): void;\n onDragScroll(pointerPos: number): void;\n};\n\ntype ScrollAreaScrollbarAxisElement = ScrollAreaScrollbarImplElement;\ninterface ScrollAreaScrollbarAxisProps\n extends Omit,\n ScrollAreaScrollbarAxisPrivateProps {}\n\nconst ScrollAreaScrollbarX = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState();\n const ref = React.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n props.onThumbPointerDown(pointerPos.x)}\n onDragScroll={(pointerPos) => props.onDragScroll(pointerPos.x)}\n onWheelScroll={(event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n // prevent window scroll when wheeling on scrollbar\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n }}\n onResize={() => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight),\n },\n });\n }\n }}\n />\n );\n});\n\nconst ScrollAreaScrollbarY = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState();\n const ref = React.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n props.onThumbPointerDown(pointerPos.y)}\n onDragScroll={(pointerPos) => props.onDragScroll(pointerPos.y)}\n onWheelScroll={(event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n // prevent window scroll when wheeling on scrollbar\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n }}\n onResize={() => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom),\n },\n });\n }\n }}\n />\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollbarContext = {\n hasThumb: boolean;\n scrollbar: ScrollAreaScrollbarElement | null;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerUp(): void;\n onThumbPointerDown(pointerPos: { x: number; y: number }): void;\n onThumbPositionChange(): void;\n};\n\nconst [ScrollbarProvider, useScrollbarContext] =\n createScrollAreaContext(SCROLLBAR_NAME);\n\ntype ScrollAreaScrollbarImplElement = React.ElementRef;\ntype ScrollAreaScrollbarImplPrivateProps = {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContext['onThumbChange'];\n onThumbPointerUp: ScrollbarContext['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContext['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContext['onThumbPositionChange'];\n onWheelScroll(event: WheelEvent, maxScrollPos: number): void;\n onDragScroll(pointerPos: { x: number; y: number }): void;\n onResize(): void;\n};\ninterface ScrollAreaScrollbarImplProps\n extends Omit,\n ScrollAreaScrollbarImplPrivateProps {}\n\nconst ScrollAreaScrollbarImpl = React.forwardRef<\n ScrollAreaScrollbarImplElement,\n ScrollAreaScrollbarImplProps\n>((props: ScopedProps, forwardedRef) => {\n const {\n __scopeScrollArea,\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = React.useState(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React.useRef(null);\n const prevWebkitUserSelectRef = React.useRef('');\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useCallbackRef(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n\n function handleDragScroll(event: React.PointerEvent) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n }\n\n /**\n * We bind wheel event imperatively so we can switch off passive\n * mode for document wheel event to allow it to be prevented\n */\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\n document.addEventListener('wheel', handleWheel, { passive: false });\n return () => document.removeEventListener('wheel', handleWheel, { passive: false } as any);\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n\n /**\n * Update thumb position on sizes change\n */\n React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n \n {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n // pointer capture doesn't prevent text selection in Safari\n // so we remove text selection manually when scrolling\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = 'none';\n if (context.viewport) context.viewport.style.scrollBehavior = 'auto';\n handleDragScroll(event);\n }\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, handleDragScroll)}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target as HTMLElement;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = '';\n rectRef.current = null;\n })}\n />\n \n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'ScrollAreaThumb';\n\ntype ScrollAreaThumbElement = ScrollAreaThumbImplElement;\ninterface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {\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 ScrollAreaThumb = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return (\n \n \n \n );\n }\n);\n\ntype ScrollAreaThumbImplElement = React.ElementRef;\ninterface ScrollAreaThumbImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaThumbImpl = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = useComposedRefs(forwardedRef, (node) =>\n scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React.useRef<() => void>();\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = undefined;\n }\n }, 100);\n\n React.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n /**\n * We only bind to native scroll event so we know when scroll starts and ends.\n * When scroll starts we start a requestAnimationFrame loop that checks for\n * changes to scroll position. That rAF loop triggers our thumb position change\n * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.\n * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\n */\n const handleScroll = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\n onThumbPositionChange();\n viewport.addEventListener('scroll', handleScroll);\n return () => viewport.removeEventListener('scroll', handleScroll);\n }\n }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n\n return (\n {\n const thumb = event.target as HTMLElement;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({ x, y });\n })}\n onPointerUp={composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)}\n />\n );\n }\n);\n\nScrollAreaThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaCorner\n * -----------------------------------------------------------------------------------------------*/\n\nconst CORNER_NAME = 'ScrollAreaCorner';\n\ntype ScrollAreaCornerElement = ScrollAreaCornerImplElement;\ninterface ScrollAreaCornerProps extends ScrollAreaCornerImplProps {}\n\nconst ScrollAreaCorner = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== 'scroll' && hasBothScrollbarsVisible;\n return hasCorner ? : null;\n }\n);\n\nScrollAreaCorner.displayName = CORNER_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaCornerImplElement = React.ElementRef;\ninterface ScrollAreaCornerImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaCornerImpl = React.forwardRef<\n ScrollAreaCornerImplElement,\n ScrollAreaCornerImplProps\n>((props: ScopedProps, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const hasSize = Boolean(width && height);\n\n useResizeObserver(context.scrollbarX, () => {\n const height = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height);\n setHeight(height);\n });\n\n useResizeObserver(context.scrollbarY, () => {\n const width = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width);\n setWidth(width);\n });\n\n return hasSize ? (\n \n ) : null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction toInt(value?: string) {\n return value ? parseInt(value, 10) : 0;\n}\n\nfunction getThumbRatio(viewportSize: number, contentSize: number) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n\nfunction getThumbSize(sizes: Sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n // minimum of 18 matches macOS minimum\n return Math.max(thumbSize, 18);\n}\n\nfunction getScrollPositionFromPointer(\n pointerPos: number,\n pointerOffset: number,\n sizes: Sizes,\n dir: Direction = 'ltr'\n) {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === 'ltr' ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange as [number, number]);\n return interpolate(pointerPos);\n}\n\nfunction getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = 'ltr') {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === 'ltr' ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange as [number, number]);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\nfunction isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\n// Custom scroll handler to avoid scroll-linked effects\n// https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\nconst addUnlinkedScrollListener = (node: HTMLElement, handler = () => {}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\n\nfunction useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React.useRef(0);\n React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = ScrollArea;\nconst Viewport = ScrollAreaViewport;\nconst Scrollbar = ScrollAreaScrollbar;\nconst Thumb = ScrollAreaThumb;\nconst Corner = ScrollAreaCorner;\n\nexport {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n};\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n};\n","import * as React from 'react';\n\ntype Machine = { [k: string]: { [k: string]: S } };\ntype MachineState = keyof T;\ntype MachineEvent = keyof UnionToIntersection;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine(\n initialState: MachineState,\n machine: M & Machine>\n) {\n return React.useReducer((state: MachineState, event: MachineEvent): MachineState => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\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":["DirectionContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","useDirection","localDir","globalDir","useContext","POPOVER_NAME","createPopoverContext","createPopoverScope","createContextScope","createPopperScope","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","children","open","openProp","defaultOpen","onOpenChange","modal","props","popperScope","triggerRef","React","hasCustomAnchor","setHasCustomAnchor","setOpen","useControllableState","prop","defaultProp","onChange","jsx","PopperPrimitive","scope","contentId","useId","onOpenToggle","prevOpen","onCustomAnchorAdd","onCustomAnchorRemove","displayName","ANCHOR_NAME","PopoverAnchor","forwardedRef","anchorProps","context","ref","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","useComposedRefs","trigger","Primitive","button","type","getState","onClick","composeEventHandlers","asChild","PORTAL_NAME","PortalProvider","usePortalContext","forceMount","PopoverPortal","container","Presence","present","PortalPrimitive","CONTENT_NAME","PopoverContent","portalContext","contentProps","PopoverContentModal","PopoverContentNonModal","contentRef","composedRefs","isRightClickOutsideRef","content","current","hideOthers","RemoveScroll","as","Slot","allowPinchZoom","PopoverContentImpl","trapFocus","disableOutsidePointerEvents","onCloseAutoFocus","event","preventDefault","focus","onPointerDownOutside","originalEvent","detail","ctrlLeftClick","ctrlKey","isRightClick","checkForDefaultPrevented","onFocusOutside","hasInteractedOutsideRef","hasPointerDownOutsideRef","defaultPrevented","onInteractOutside","target","targetIsTrigger","contains","onOpenAutoFocus","onEscapeKeyDown","useFocusGuards","FocusScope","loop","trapped","onMountAutoFocus","onUnmountAutoFocus","DismissableLayer","onDismiss","role","id","style","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","arrowProps","Root","Anchor","Trigger","Portal","Content","SCROLL_AREA_NAME","createScrollAreaContext","createScrollAreaScope","ScrollAreaProvider","useScrollAreaContext","ScrollArea","React2","__scopeScrollArea","dir","scrollHideDelay","scrollAreaProps","scrollArea","setScrollArea","viewport","setViewport","setContent","scrollbarX","setScrollbarX","scrollbarY","setScrollbarY","cornerWidth","setCornerWidth","cornerHeight","setCornerHeight","scrollbarXEnabled","setScrollbarXEnabled","scrollbarYEnabled","setScrollbarYEnabled","node","direction","onViewportChange","onContentChange","onScrollbarXChange","onScrollbarXEnabledChange","onScrollbarYChange","onScrollbarYEnabledChange","onCornerWidthChange","onCornerHeightChange","div","position","VIEWPORT_NAME","ScrollAreaViewport","nonce","viewportProps","jsxs","Fragment","dangerouslySetInnerHTML","__html","overflowX","overflowY","minWidth","display","SCROLLBAR_NAME","ScrollAreaScrollbar","scrollbarProps","isHorizontal","orientation","ScrollAreaScrollbarHover","ScrollAreaScrollbarScroll","ScrollAreaScrollbarAuto","ScrollAreaScrollbarVisible","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","initialState","machine","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","nextState","scrollDirection","prevScrollPos","handleScroll","scrollPos","onPointerEnter","onPointerLeave","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","getScrollPositionFromPointer","pointerOffset","thumbSizePx","getThumbSize","offset","minPointerPos","maxPointerPos","maxScrollPos","interpolate","ScrollAreaScrollbarX","onThumbPositionChange","getThumbOffsetFromScroll","scrollLeft","transform","concat","onWheelScroll","onDragScroll","ScrollAreaScrollbarY","scrollTop","computedStyle","setComputedStyle","composeRefs","getComputedStyle","ScrollAreaScrollbarImpl","bottom","left","right","x","deltaX","onResize","clientWidth","toInt","paddingLeft","paddingRight","top","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","useCallbackRef","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","document","passive","onPointerDown","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","ScrollAreaThumb","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","ScrollAreaCorner","hasBothScrollbarsVisible","hasCorner","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","Math","max","scrollWithoutMomentum","clamp","min","linearScale","input","output","handler","prevPosition","rAF","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useLayoutEffect","resizeObserver","ResizeObserver","observe","unobserve","Viewport","Corner","LayoutGroupContext","MotionConfigContext","transformPagePoint","p","isStatic","reducedMotion","PresenceContext","Queue","constructor","order","scheduled","Set","add","process","has","push","remove","index","indexOf","splice","delete","clear","length","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","delta","timestamp","isProcessing","flagRunNextFrame","steps","reduce","acc","key","createRenderStep","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","keepAlive","immediate","addToCurrentFrame","queue","cancel","i","frameData","read","resolveKeyframes","update","preRender","render","postRender","processBatch","GlobalConfig","c","useManualTiming","performance","now","wake","frame","cancelFrame","_batcher_mjs__WEBPACK_IMPORTED_MODULE_0__","Z","_utils_noop_mjs__WEBPACK_IMPORTED_MODULE_1__","isValidProp","MotionContext","react","LazyContext","strict","camelToDash","str","replace","toLowerCase","optimizedAppearDataAttribute","microtask","cancelMicrotask","batcher","queueMicrotask","isRefObject","Object","prototype","hasOwnProperty","call","SwitchLayoutGroupContext","scheduleHandoffComplete","completeHandoff","HandoffComplete","isVariantLabel","v","Array","isArray","isAnimationControls","start","variantPriorityOrder","variantProps","isControllingVariants","animate","some","name","isVariantNode","variants","variantLabelsAsDependency","join","featureProps","animation","exit","drag","hover","tap","pan","inView","layout","featureDefinitions","isEnabled","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","Component","includes","test","scaleCorrectors","transformPropOrder","transformProps","isForcedMotionValue","layoutId","startsWith","undefined","isMotionValue","getVelocity","translateAlias","z","transformPerspective","numTransforms","checkStringStartsWith","token","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","split","trim","getValueAsType","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","padding","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","dashKeys","array","camelKeys","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","latest","isSVGTag","viewBox","attrs","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","keys","createSvgRenderState","tag","renderHTML","styleProp","projection","assign","getProjectionStyles","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","setAttribute","scrapeMotionValuesFromProps","prevProps","visualElement","newValues","getValue","liveStyle","scrape_motion_values_scrapeMotionValuesFromProps","charAt","toUpperCase","substring","getValueState","values","forEach","get","resolveVariantFromProps","definition","custom","velocity","isKeyframesTarget","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","makeUseVisualState","presenceContext","context_PresenceContext","O","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","motionValues","initial","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","resolved","transitionEnd","transition","valueTarget","mount","instance","config","use_constant","h","svgMotionConfig","useVisualState","frameloop_frame","Wi","getBBox","e","tagName","htmlMotionConfig","addDomEvent","eventName","isPrimaryPointer","pointerType","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addPointerEvent","combineFunctions","a","b","pipe","transformers","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","isMounted","addHoverEvent","isActive","callbackName","info","getProps","animationState","whileHover","setActive","HoverGesture","unmount","FocusGesture","arguments","onFocus","isFocusVisible","matches","onBlur","isNodeOrChild","parent","child","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","root","rootMargin","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","set","rootObservers","JSON","stringify","IntersectionObserver","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","filter","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","from","resolver","needsMeasurement","elementsToMeasure","map","transformsToRestore","Map","removedTransforms","removeNonTranslationalTransform","measureInitialState","restore","measureEndState","suspendedScrollY","scrollTo","complete","readAllKeyframes","readKeyframes","KeyframeResolver","unresolvedKeyframes","onComplete","motionValue","isAsync","isComplete","scheduleResolve","currentValue","valueAsRead","readValue","setFinalKeyframe","renderEndStyles","resume","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hex","r","g","hsla","hue","saturation","lightness","color","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","toString","indexes","var","types","tokenised","parsedValue","parseComplexValue","createTransformer","numSections","convertNumbersToZero","complex","_b","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","slice","defaultValue","functionRegex","functions","defaultValueTypes","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","invalidTemplates","DOMKeyframesResolver","owner","keyframe","getVariableValue","depth","errors","k","fallback","parseCSSVariable","exec","token1","token2","getPropertyValue","trimmed","resolveNoneKeyframes","originType","targetType","noneKeyframeIndexes","makeNoneKeyframesAnimatable","animatableTemplate","noneIndex","pageYOffset","measuredOrigin","measureViewportBox","measureKeyframe","jump","finalKeyframeIndex","unsetTransformName","unsetTransformValue","memo","result","isAnimatable","BaseAnimation","autoplay","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","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","item","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","isInitialRender","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","isPresent","onExitComplete","prevIsPresent","prevPresenceContext","exitAnimation","register","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","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","group","didUpdate","safeToRemove","setOptions","getSnapshotBeforeUpdate","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","componentDidUpdate","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","MeasureLayout","usePresence","useEffect","jsx_runtime","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","findIndex","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","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","HTMLProjectionNode","documentNode","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","updateMotionValuesFromProps","nextValue","prevValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","startAtParent","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","DOMVisualElement","compareDocumentPosition","HTMLVisualElement","defaultType","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","useMemo","layoutProjection","getProjectionFunctionality","combined","useVisualElement","ProjectionNodeConstructor","lazyContext","visualElementRef","useRef","renderer","initialLayoutGroupConfig","createProjectionNode","getClosestProjectingNode","useInsertionEffect","wantsHandoff","use_isomorphic_effect","L","Provider","useCallback","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","createElement","MotionGlobalConfig","warning","_noop_mjs__WEBPACK_IMPORTED_MODULE_0__","invariant","isBrowser","any","useConstant","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__"],"sourceRoot":""}