{"version":3,"file":"static/chunks/6641.fdfd418d4f3bdc08.js","mappings":"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","sources":["webpack://_N_E/../../../../src/client/components/router-reducer/router-reducer-types.ts","webpack://_N_E/../../src/client/get-domain-locale.ts","webpack://_N_E/../../src/client/image-component.tsx","webpack://_N_E/../../src/client/link.tsx","webpack://_N_E/../../src/client/normalize-locale-path.ts","webpack://_N_E/../../src/client/use-intersection.tsx","webpack://_N_E/../../../src/shared/lib/get-img-props.ts","webpack://_N_E/../../../src/shared/lib/image-blur-svg.ts","webpack://_N_E/../../../src/shared/lib/image-external.tsx","webpack://_N_E/../../../src/shared/lib/image-loader.ts","webpack://_N_E/./node_modules/next/image.js","webpack://_N_E/./node_modules/next/link.js","webpack://_N_E/./node_modules/next/script.js","webpack://_N_E/./node_modules/react-error-boundary/dist/react-error-boundary.esm.js","webpack://_N_E/./node_modules/classnames/index.js","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.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/GlobalConfig.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/utils/noop.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/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/errors.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/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/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/memo.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/sync-time.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/pipe.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/animation/animators/utils/accelerated-values.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/utils/resolve-value.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/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/Feature.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/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-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/microtask.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.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/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/motion/features/layout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.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-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/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.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/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/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/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/create-factory.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/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/render/components/motion/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,"module.exports = require('./dist/shared/lib/image-external')\n","module.exports = require('./dist/client/link')\n","module.exports = require('./dist/client/script')\n","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { warnOnce } from '../../utils/warn-once.mjs';\n\nfunction createDOMMotionComponentProxy(componentFactory) {\n if (typeof Proxy === \"undefined\") {\n return componentFactory;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n const deprecatedFactoryFunction = (...args) => {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n }\n return componentFactory(...args);\n };\n return new Proxy(deprecatedFactoryFunction, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n if (key === \"create\")\n return componentFactory;\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, componentFactory(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createDOMMotionComponentProxy };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function getValueState(visualElement) {\n const state = [{}, {}];\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n state[0][key] = value.get();\n state[1][key] = value.getVelocity();\n });\n return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","/**\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 MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\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","const noop = (any) => any;\n\nexport { noop };\n","function createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Set();\n let nextFrame = new Set();\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n let latestFrameData = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n function triggerCallback(callback) {\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(latestFrameData);\n }\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (!queue.has(callback))\n queue.add(callback);\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.delete(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n latestFrameData = frameData;\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n thisFrame.forEach(triggerCallback);\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"read\", // Read\n \"resolveKeyframes\", // Write/Read/Write/Read\n \"update\", // Compute\n \"preRender\", // Compute\n \"render\", // Write\n \"postRender\", // Compute\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n const flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame);\n return acc;\n }, {});\n const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n // Unrolled render loop for better per-frame performance\n read.process(state);\n resolveKeyframes.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = 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","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","/**\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 = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n var _a;\n (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete());\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n readAllKeyframes();\n measureAllKeyframes();\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n /**\n * Track whether this resolver has completed. Once complete, it never\n * needs to attempt keyframe resolution again.\n */\n this.isComplete = false;\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n /**\n * Track whether this resolver is currently scheduled to resolve\n * to allow it to be cancelled and resumed externally.\n */\n this.isScheduled = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.isScheduled = true;\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n /**\n * If a keyframe is null, we hydrate it either by reading it from\n * the instance, or propagating from previous keyframes.\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null) {\n /**\n * If the first keyframe is null, we need to find its value by sampling the element\n */\n if (i === 0) {\n const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n else {\n unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n }\n }\n }\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete() {\n this.isComplete = true;\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n toResolve.delete(this);\n }\n cancel() {\n if (!this.isComplete) {\n this.isScheduled = false;\n toResolve.delete(this);\n }\n }\n resume() {\n if (!this.isComplete)\n this.scheduleResolve();\n }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","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: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n parse: /*@__PURE__*/ splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: /*@__PURE__*/ isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n parse: /*@__PURE__*/ splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { 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 { 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 { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!element || !element.current)\n return;\n super.readKeyframes();\n /**\n * If any keyframe is a CSS variable, we need to find its value by sampling the element\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n let keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\") {\n keyframe = keyframe.trim();\n if (isCSSVariableToken(keyframe)) {\n const resolved = getVariableValue(keyframe, element.current);\n if (resolved !== undefined) {\n unresolvedKeyframes[i] = resolved;\n }\n if (i === unresolvedKeyframes.length - 1) {\n this.finalKeyframe = keyframe;\n }\n }\n }\n }\n /**\n * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n * have a far bigger performance impact.\n */\n this.resolveNoneKeyframes();\n /**\n * Check to see if unit type has changed. If so schedule jobs that will\n * temporarily set styles to the destination keyframes.\n * Skip if we have more than two keyframes or this isn't a positional value.\n * TODO: We can throw if there are multiple keyframes and the value type changes.\n */\n if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n return;\n }\n const [origin, target] = unresolvedKeyframes;\n const originType = findDimensionValueType(origin);\n const targetType = findDimensionValueType(target);\n /**\n * Either we don't recognise these value types or we can animate between them.\n */\n if (originType === targetType)\n return;\n /**\n * If both values are numbers or pixels, we can animate between them by\n * converting them to numbers.\n */\n if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const value = unresolvedKeyframes[i];\n if (typeof value === \"string\") {\n unresolvedKeyframes[i] = parseFloat(value);\n }\n }\n }\n else {\n /**\n * Else, the only way to resolve this is by measuring the element.\n */\n this.needsMeasurement = true;\n }\n }\n resolveNoneKeyframes() {\n const { unresolvedKeyframes, name } = this;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (isNone(unresolvedKeyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n }\n if (noneKeyframeIndexes.length) {\n makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n }\n }\n measureInitialState() {\n const { element, unresolvedKeyframes, name } = this;\n if (!element || !element.current)\n return;\n if (name === \"height\") {\n this.suspendedScrollY = window.pageYOffset;\n }\n this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n unresolvedKeyframes[0] = this.measuredOrigin;\n // Set final key frame to measure after next render\n const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (measureKeyframe !== undefined) {\n element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n }\n }\n measureEndState() {\n var _a;\n const { element, name, unresolvedKeyframes } = this;\n if (!element || !element.current)\n return;\n const value = element.getValue(name);\n value && value.jump(this.measuredOrigin, false);\n const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n this.finalKeyframe = finalKeyframe;\n }\n // If we removed transform values, reapply them before the next render\n if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n element\n .getValue(unsetTransformName)\n .set(unsetTransformValue);\n });\n }\n this.resolveNoneKeyframes();\n }\n}\n\nexport { DOMKeyframesResolver };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nexport { time };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { warning } from '../../../utils/errors.mjs';\nimport { 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 { time } from '../../frameloop/sync-time.mjs';\nimport { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass BaseAnimation {\n constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n // Track whether the animation has been stopped. Stopped animations won't restart.\n this.isStopped = false;\n this.hasAttemptedResolve = false;\n this.createdAt = time.now();\n this.options = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n ...options,\n };\n this.updateFinishedPromise();\n }\n /**\n * This method uses the createdAt and resolvedAt to calculate the\n * animation startTime. *Ideally*, we would use the createdAt time as t=0\n * as the following frame would then be the first frame of the animation in\n * progress, which would feel snappier.\n *\n * However, if there's a delay (main thread work) between the creation of\n * the animation and the first commited frame, we prefer to use resolvedAt\n * to avoid a sudden jump into the animation.\n */\n calcStartTime() {\n if (!this.resolvedAt)\n return this.createdAt;\n return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n ? this.resolvedAt\n : this.createdAt;\n }\n /**\n * A getter for resolved data. If keyframes are not yet resolved, accessing\n * this.resolved will synchronously flush all pending keyframe resolvers.\n * This is a deoptimisation, but at its worst still batches read/writes.\n */\n get resolved() {\n if (!this._resolved && !this.hasAttemptedResolve) {\n flushKeyframeResolvers();\n }\n return this._resolved;\n }\n /**\n * A method to be called when the keyframes resolver completes. This method\n * will check if its possible to run the animation and, if not, skip it.\n * Otherwise, it will call initPlayback on the implementing class.\n */\n onKeyframesResolved(keyframes, finalKeyframe) {\n this.resolvedAt = time.now();\n this.hasAttemptedResolve = true;\n const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n // Finish immediately\n if (instantAnimationState.current || !delay) {\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n this.resolveFinishedPromise();\n return;\n }\n // Finish after a delay\n else {\n this.options.duration = 0;\n }\n }\n const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n if (resolvedAnimation === false)\n return;\n this._resolved = {\n keyframes,\n finalKeyframe,\n ...resolvedAnimation,\n };\n this.onPostResolved();\n }\n onPostResolved() { }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.currentFinishedPromise.then(resolve, reject);\n }\n updateFinishedPromise() {\n this.currentFinishedPromise = new Promise((resolve) => {\n this.resolveFinishedPromise = resolve;\n });\n }\n}\n\nexport { BaseAnimation };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = 0.0;\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity =\n t === 0\n ? secondsToMilliseconds(initialVelocity)\n : calcGeneratorVelocity(resolveSpring, t, current);\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { 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 = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","// 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 = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { 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 * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since 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(options) {\n super(options);\n /**\n * The time at which the animation was paused.\n */\n this.holdTime = null;\n /**\n * The time at which the animation was cancelled.\n */\n this.cancelTime = null;\n /**\n * The current time of the animation.\n */\n this.currentTime = 0;\n /**\n * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n */\n this.playbackSpeed = 1;\n /**\n * The state of the animation to apply when the animation is resolved. This\n * allows calls to the public API to control the animation before it is resolved,\n * without us having to resolve it first.\n */\n this.pendingPlayState = \"running\";\n /**\n * The time at which the animation was started.\n */\n this.startTime = null;\n this.state = \"idle\";\n /**\n * This method is bound to the instance to fix a pattern where\n * animation.stop is returned as a reference from a useEffect.\n */\n this.stop = () => {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.teardown();\n const { onStop } = this.options;\n onStop && onStop();\n };\n const { name, motionValue, element, keyframes } = this.options;\n const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue, element);\n this.resolver.scheduleResolve();\n }\n 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, startTime } = this.options;\n if (!this.driver) {\n this.driver = driver((timestamp) => this.tick(timestamp));\n }\n onPlay && onPlay();\n const now = this.driver.now();\n if (this.holdTime !== null) {\n this.startTime = now - this.holdTime;\n }\n else if (!this.startTime) {\n this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n }\n else if (this.state === \"finished\") {\n this.startTime = now;\n }\n if (this.state === \"finished\") {\n this.updateFinishedPromise();\n }\n this.cancelTime = this.startTime;\n this.holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n this.state = \"running\";\n this.driver.start();\n }\n pause() {\n var _a;\n if (!this._resolved) {\n this.pendingPlayState = \"paused\";\n return;\n }\n this.state = \"paused\";\n this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n }\n complete() {\n if (this.state !== \"running\") {\n this.play();\n }\n this.pendingPlayState = this.state = \"finished\";\n this.holdTime = null;\n }\n finish() {\n this.teardown();\n this.state = \"finished\";\n const { onComplete } = this.options;\n onComplete && onComplete();\n }\n cancel() {\n if (this.cancelTime !== null) {\n this.tick(this.cancelTime);\n }\n this.teardown();\n this.updateFinishedPromise();\n }\n teardown() {\n this.state = \"idle\";\n this.stopDriver();\n this.resolveFinishedPromise();\n this.updateFinishedPromise();\n this.startTime = this.cancelTime = null;\n this.resolver.cancel();\n }\n stopDriver() {\n if (!this.driver)\n return;\n this.driver.stop();\n this.driver = undefined;\n }\n sample(time) {\n this.startTime = 0;\n return this.tick(time, true);\n }\n}\n// Legacy interface\nfunction animateValue(options) {\n return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n // or until we implement support for linear() easing.\n // \"background-color\"\n]);\n\nexport { acceleratedValues };\n","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: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction 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 { 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 { acceleratedValues } from './utils/accelerated-values.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 = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\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\" || !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, element, keyframes } = this.options;\n this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue, element);\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes, finalKeyframe) {\n var _a;\n let { duration = 300, times, ease, type, motionValue, name, startTime, } = this.options;\n /**\n * If element has since been unmounted, return false to indicate\n * the animation failed to initialised.\n */\n if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n return false;\n }\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(this.options)) {\n const { onComplete, onUpdate, motionValue, element, ...options } = this.options;\n const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n keyframes = pregeneratedAnimation.keyframes;\n // If this is a very short animation, ensure we have\n // at least two keyframes to animate between as older browsers\n // can't animate between a single keyframe.\n if (keyframes.length === 1) {\n keyframes[1] = keyframes[0];\n }\n duration = pregeneratedAnimation.duration;\n times = pregeneratedAnimation.times;\n ease = pregeneratedAnimation.ease;\n type = \"keyframes\";\n }\n const animation = 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 = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\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 get startTime() {\n const { resolved } = this;\n if (!resolved)\n return null;\n const { animation } = resolved;\n // Coerce to number as TypeScript incorrectly types this\n // as CSSNumberish\n return animation.startTime;\n }\n /**\n * Replace the default DocumentTimeline with another AnimationTimeline.\n * Currently used for scroll animations.\n */\n attachTimeline(timeline) {\n if (!this._resolved) {\n this.pendingTimeline = timeline;\n }\n else {\n const { resolved } = this;\n if (!resolved)\n return noop;\n const { animation } = resolved;\n 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 this.resolveFinishedPromise();\n this.updateFinishedPromise();\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation, keyframes, duration, type, ease, times } = resolved;\n if (animation.playState === \"idle\" ||\n animation.playState === \"finished\") {\n return;\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n if (this.time) {\n const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n duration,\n type,\n ease,\n times,\n isGenerator: true,\n });\n const sampleTime = secondsToMilliseconds(this.time);\n motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n }\n const { onStop } = this.options;\n onStop && onStop();\n this.cancel();\n }\n complete() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.finish();\n }\n cancel() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.cancel();\n }\n static supports(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\n motionValue &&\n motionValue.owner &&\n motionValue.owner.current instanceof HTMLElement &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !motionValue.owner.getProps().onUpdate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","import { 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 startTime() {\n return this.getAll(\"startTime\");\n }\n get duration() {\n let max = 0;\n for (let i = 0; i < this.animations.length; i++) {\n max = Math.max(max, this.animations[i].duration);\n }\n return max;\n }\n runAll(methodName) {\n this.animations.forEach((controls) => controls[methodName]());\n }\n 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, \n/**\n * Currently used to remove values from will-change when an animation ends.\n * Preferably this would be handled by event listeners on the MotionValue\n * but these aren't consistent enough yet when considering the different ways\n * an animation can be cancelled.\n */\nonEnd) => (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 onEnd && onEnd();\n },\n onStop: onEnd,\n name,\n motionValue: value,\n element: isHandoff ? undefined : element,\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(name, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n if (options.from !== undefined) {\n options.keyframes[0] = options.from;\n }\n let shouldSkip = false;\n if (options.type === false ||\n (options.duration === 0 && !options.repeatDelay)) {\n options.duration = 0;\n if (options.delay === 0) {\n shouldSkip = true;\n }\n }\n if (instantAnimationState.current ||\n MotionGlobalConfig.skipAnimations) {\n shouldSkip = true;\n options.duration = 0;\n options.delay = 0;\n }\n /**\n * If we can or must skip creating the animation, and apply only\n * the final keyframe, do so. We also check once keyframes are resolved but\n * this early check prevents the need to create an animation at all.\n */\n if (shouldSkip && !isHandoff && value.get() !== undefined) {\n const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n if (finalKeyframe !== undefined) {\n frame.update(() => {\n options.onUpdate(finalKeyframe);\n options.onComplete();\n });\n // We still want to return some animation controls here rather\n // than returning undefined\n return new GroupPlaybackControls([]);\n }\n }\n /**\n * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n * optimised animation.\n */\n if (!isHandoff && AcceleratedAnimation.supports(options)) {\n return new AcceleratedAnimation(options);\n }\n else {\n return new MainThreadAnimation(options);\n }\n};\n\nexport { animateMotionValue };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.5.4\";\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","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.props[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","import { acceleratedValues } from '../../animation/animators/utils/accelerated-values.mjs';\nimport { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction getWillChangeName(name) {\n if (transformProps.has(name)) {\n return \"transform\";\n }\n else if (acceleratedValues.has(name)) {\n return camelToDash(name);\n }\n}\n\nexport { getWillChangeName };\n","import { MotionValue } from '../index.mjs';\nimport { getWillChangeName } from './get-will-change-name.mjs';\nimport { removeItem } from '../../utils/array.mjs';\n\nclass WillChangeMotionValue extends MotionValue {\n constructor() {\n super(...arguments);\n this.output = [];\n this.counts = new Map();\n }\n add(name) {\n const styleName = getWillChangeName(name);\n if (!styleName)\n return;\n /**\n * Update counter. Each value has an indepdent counter\n * as multiple sources could be requesting the same value\n * gets added to will-change.\n */\n const prevCount = this.counts.get(styleName) || 0;\n this.counts.set(styleName, prevCount + 1);\n if (prevCount === 0) {\n this.output.push(styleName);\n this.update();\n }\n /**\n * Prevents the remove function from being called multiple times.\n */\n let hasRemoved = false;\n return () => {\n if (hasRemoved)\n return;\n hasRemoved = true;\n const newCount = this.counts.get(styleName) - 1;\n this.counts.set(styleName, newCount);\n if (newCount === 0) {\n removeItem(this.output, styleName);\n this.update();\n }\n };\n }\n update() {\n this.set(this.output.length ? this.output.join(\", \") : \"auto\");\n }\n}\n\nexport { WillChangeMotionValue };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { WillChangeMotionValue } from './WillChangeMotionValue.mjs';\nimport { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n var _a;\n if (!visualElement.applyWillChange)\n return;\n let willChange = visualElement.getValue(\"willChange\");\n /**\n * If we haven't created a willChange MotionValue, and the we haven't been\n * manually provided one, create one.\n */\n if (!willChange && !((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange)) {\n willChange = new WillChangeMotionValue(\"auto\");\n visualElement.addValue(\"willChange\", willChange);\n }\n /**\n * It could be that a user has set willChange to a regular MotionValue,\n * in which case we can't add the value to it.\n */\n if (isWillChangeMotionValue(willChange)) {\n return willChange.add(key);\n }\n}\n\nexport { addValueToWillChange };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n const valueTarget = target[key];\n if (valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n ...getValueTransition(transition || {}, key),\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n let isHandoff = false;\n if (window.MotionHandoffAnimation) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n if (startTime !== null) {\n valueTransition.startTime = startTime;\n isHandoff = true;\n }\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff, addValueToWillChange(visualElement, key)));\n const animation = value.animation;\n if (animation) {\n animations.push(animation);\n }\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n frame.update(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => {\n visualElement.notify(\"AnimationComplete\", definition);\n });\n}\n\nexport { animateVisualElement };\n","import { 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","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n if (isAnimationControls(animate)) {\n this.unmountControls = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() {\n var _a;\n this.node.animationState.reset();\n (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[`${pointType}X`],\n y: event[`${pointType}Y`],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n isNaN(delta.scale)) {\n delta.scale = 1.0;\n }\n if ((delta.translate >= TRANSLATE_MIN &&\n delta.translate <= TRANSLATE_MAX) ||\n isNaN(delta.translate)) {\n delta.translate = 0.0;\n }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY ||\n values.skewX ||\n values.skewY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const { visualElement } = node.options;\n if (visualElement &&\n visualElement.props.style &&\n visualElement.props.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n treeScale.x > TREE_SCALE_SNAP_MIN) {\n treeScale.x = 1.0;\n }\n if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n treeScale.y > TREE_SCALE_SNAP_MIN) {\n treeScale.y = 1.0;\n }\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform.x, transform.scaleX, transform.scale, transform.originX);\n transformAxis(box.y, transform.y, transform.scaleY, transform.scale, transform.originY);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n var _a;\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 (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\n this.removeWillChange = addValueToWillChange(this.visualElement, \"transform\");\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n var _a;\n (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\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, false, addValueToWillChange(this.visualElement, axis)));\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","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id), [id, onExitComplete]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut);\nconst easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n delta.translate = originDelta.translate;\n delta.scale = originDelta.scale;\n delta.originPoint = originDelta.originPoint;\n delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n return (Math.round(a.min) === Math.round(b.min) &&\n Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n return (a.translate === b.translate &&\n a.scale === b.scale &&\n a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { 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 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, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/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';\nimport { createBox, createDelta } from '../geometry/models.mjs';\n\nconst metrics = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nconst isDebug = typeof window !== \"undefined\" && window.MotionDebug !== undefined;\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return;\n const { visualElement } = projectionNode.options;\n if (!visualElement)\n return;\n const appearId = getOptimisedAppearId(visualElement);\n if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n const { layout, layoutId } = projectionNode.options;\n window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n }\n const { parent } = projectionNode;\n if (parent && !parent.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(parent);\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n if (isDebug) {\n metrics.totalNodes =\n metrics.resolvedTargetDeltas =\n metrics.recalculatedProjection =\n 0;\n }\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n if (isDebug) {\n window.MotionDebug.record(metrics);\n }\n };\n /**\n * Frame calculations\n */\n this.resolvedRelativeTargetAt = 0.0;\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.MotionCancelOptimisedAnimation &&\n !this.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(this);\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n 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 const isRoot = checkIsScrollRoot(this.instance);\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot,\n offset: measureScroll(this.instance),\n wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n var _a;\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n if (!wasInScrollRoot) {\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n }\n return box;\n }\n removeElementScroll(box) {\n var _a;\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n return boxWithoutScroll;\n }\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.wasRoot) {\n copyBoxInto(boxWithoutScroll, box);\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget ||\n this.root.updateBlockedByResize);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n if (isDebug) {\n metrics.resolvedTargetDeltas++;\n }\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.prevProjectionDelta) {\n this.createProjectionDeltas();\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta || !this.prevProjectionDelta) {\n this.createProjectionDeltas();\n }\n else {\n copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n }\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n if (this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY ||\n !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n if (isDebug) {\n metrics.recalculatedProjection++;\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a;\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n createProjectionDeltas() {\n this.prevProjectionDelta = createDelta();\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n if (isDebug) {\n metrics.totalNodes++;\n }\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n var _a;\n return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n const handleEvent = (event, info) => {\n if (event.pointerType === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n const callback = props[callbackName];\n if (callback) {\n frame.postRender(() => callback(event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removeStartListeners = noop;\n this.removeEndListeners = noop;\n this.removeAccessibleListeners = noop;\n this.startPointerPress = (startEvent, startInfo) => {\n if (this.isPressing)\n return;\n this.removeEndListeners();\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n const handler = !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel\n : onTap;\n if (handler) {\n frame.update(() => handler(endEvent, endInfo));\n }\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n passive: !(props.onTap || props[\"onPointerUp\"]),\n });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n passive: !(props.onTapCancel ||\n props[\"onPointerCancel\"]),\n });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.postRender(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n frame.postRender(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.postRender(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n passive: !(props.onTapStart ||\n props[\"onPointerStart\"]),\n });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nlet scheduleHandoffComplete = false;\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n var _a;\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 optimisedAppearId = props[optimizedAppearDataAttribute];\n const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n !window.MotionHandoffIsComplete &&\n ((_a = window.MotionHasOptimisedAnimation) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)));\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 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 return visualElement;\n}\nfunction completeHandoff() {\n window.MotionHandoffIsComplete = 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 /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig,\n layoutScroll,\n layoutRoot,\n });\n}\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n if (instance) {\n visualElement.mount(instance);\n }\n else {\n visualElement.unmount();\n }\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { warning, invariant } from '../utils/errors.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n useStrictMode(configAndProps, preloadedFeatures);\n const layoutProjection = getProjectionFunctionality(configAndProps);\n MeasureLayout = layoutProjection.MeasureLayout;\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n const ForwardRefMotionComponent = forwardRef(MotionComponent);\n ForwardRefMotionComponent[motionComponentSymbol] = Component;\n return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n const isStrict = useContext(LazyContext).strict;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n configAndProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n}\nfunction getProjectionFunctionality(props) {\n const { drag, layout } = featureDefinitions;\n if (!drag && !layout)\n return {};\n const combined = { ...drag, ...layout };\n return {\n MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n ? combined.MeasureLayout\n : undefined,\n ProjectionNode: combined.ProjectionNode,\n };\n}\n\nexport { createRendererMotionComponent };\n","/**\n * We keep these listed separately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/u.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n var _a;\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style &&\n isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props) ||\n ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n newValues[key] = style[key];\n }\n }\n /**\n * If the willChange style has been manually set as a string, set\n * applyWillChange to false to prevent it from automatically being applied.\n */\n if (visualElement && style && typeof style.willChange === \"string\") {\n visualElement.applyWillChange = false;\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\nimport { getWillChangeName } from '../../value/use-will-change/get-will-change-name.mjs';\nimport { addUniqueItem } from '../../utils/array.mjs';\n\nfunction makeState({ applyWillChange = false, scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext, isStatic) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, isStatic ? false : applyWillChange, 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, isStatic);\n return isStatic ? make() : useConstant(make);\n};\nfunction addWillChange(willChange, name) {\n const memberName = getWillChangeName(name);\n if (memberName) {\n addUniqueItem(willChange, memberName);\n }\n}\nfunction forEachDefinition(props, definition, callback) {\n const list = Array.isArray(definition) ? definition : [definition];\n for (let i = 0; i < list.length; i++) {\n const resolved = resolveVariantFromProps(props, list[i]);\n if (resolved) {\n const { transitionEnd, transition, ...target } = resolved;\n callback(target, transitionEnd);\n }\n }\n}\nfunction makeLatestValues(props, context, presenceContext, shouldApplyWillChange, scrapeMotionValues) {\n var _a;\n const values = {};\n const willChange = [];\n const applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === undefined;\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 forEachDefinition(props, variantToSet, (target, transitionEnd) => {\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd) {\n values[key] = transitionEnd[key];\n }\n });\n }\n // Add animating values to will-change\n if (applyWillChange) {\n if (animate && initial !== false && !isAnimationControls(animate)) {\n forEachDefinition(props, animate, (target) => {\n for (const key in target) {\n addWillChange(willChange, key);\n }\n });\n }\n if (willChange.length) {\n values.willChange = willChange.join(\",\");\n }\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { transformPropOrder } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(latestValues, transform, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n let transformIsDefault = true;\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n const value = latestValues[key];\n if (value === undefined)\n continue;\n let valueIsDefault = true;\n if (typeof value === \"number\") {\n valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n }\n else {\n valueIsDefault = parseFloat(value) === 0;\n }\n if (!valueIsDefault || transformTemplate) {\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (!valueIsDefault) {\n transformIsDefault = false;\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${valueAsType}) `;\n }\n if (transformTemplate) {\n transform[key] = valueAsType;\n }\n }\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n const { style, vars, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept separately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n continue;\n }\n else if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n else {\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] =\n valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(latestValues, state.transform, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n applyWillChange: true,\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState));\n return style;\n}\nfunction useHTMLProps(props, visualState) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] &&\n key.startsWith(\"onDrag\"))) {\n filteredProps[key] =\n props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { Fragment, useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = Component !== Fragment\n ? { ...filteredProps, ...visualProps, ref }\n : {};\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","import { createRendererMotionComponent } from '../../motion/index.mjs';\nimport { isSVGComponent } from '../dom/utils/is-svg-component.mjs';\nimport { svgMotionConfig } from '../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../html/config-motion.mjs';\nimport { createUseRender } from '../dom/use-render.mjs';\n\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n return function createMotionComponent(Component, { forwardMotionProps } = { forwardMotionProps: false }) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n const config = {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n return createRendererMotionComponent(config);\n };\n}\n\nexport { createMotionComponentFactory };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"11.5.4\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.5.4 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n if (existingValue.liveStyle === true) {\n existingValue.jump(nextValue);\n }\n else if (!existingValue.hasAnimated) {\n existingValue.set(nextValue);\n }\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { 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 { createBox } from '../projection/geometry/models.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 /**\n * If true, will-change will be applied to the element. Only HTMLVisualElements\n * currently support this.\n */\n this.applyWillChange = false;\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 this.isRenderScheduled = false;\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.isRenderScheduled = false;\n this.scheduleRender = () => {\n if (!this.isRenderScheduled) {\n this.isRenderScheduled = true;\n frame.render(this.render, false, true);\n }\n };\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.blockInitialAnimation = Boolean(blockInitialAnimation);\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't necessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n }\n }\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n visualElementStore.delete(this.current);\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.valueSubscriptions.clear();\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n if (this.valueSubscriptions.has(key)) {\n this.valueSubscriptions.get(key)();\n }\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate && frame.preRender(this.notifyUpdate);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n let removeSyncCheck;\n if (window.MotionCheckAppearSync) {\n removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n }\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n if (removeSyncCheck)\n removeSyncCheck();\n if (value.owner)\n value.stop();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n 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 this.applyWillChange = true;\n this.renderInstance = renderHTML;\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, props) {\n buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n this.measureInstanceViewportBox = createBox;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n build(renderState, latestValues, props) {\n buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { Fragment } from 'react';\nimport { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options)\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n });\n};\n\nexport { createDomVisualElement };\n","import { animations } from '../../../motion/features/animations.mjs';\nimport { drag } from '../../../motion/features/drag.mjs';\nimport { gestureAnimations } from '../../../motion/features/gestures.mjs';\nimport { layout } from '../../../motion/features/layout.mjs';\nimport { createMotionComponentFactory } from '../create-factory.mjs';\nimport { createDomVisualElement } from '../../dom/create-visual-element.mjs';\n\nconst createMotionComponent = /*@__PURE__*/ createMotionComponentFactory({\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n}, createDomVisualElement);\n\nexport { createMotionComponent };\n","import { createDOMMotionComponentProxy } from '../create-proxy.mjs';\nimport { createMotionComponent } from './create.mjs';\n\nconst motion = /*@__PURE__*/ createDOMMotionComponentProxy(createMotionComponent);\n\nexport { motion };\n"],"names":["PrefetchKind","PrefetchCacheEntryStatus","ACTION_FAST_REFRESH","ACTION_NAVIGATE","ACTION_PREFETCH","ACTION_REFRESH","ACTION_RESTORE","ACTION_SERVER_ACTION","ACTION_SERVER_PATCH","isThenable","value","then","getDomainLocale","path","locale","locales","domainLocales","normalizeLocalePath","require","detectDomainLocale","target","detectedLocale","domain","undefined","proto","http","finalLocale","defaultLocale","normalizePathTrailingSlash","_","_imageloader","_interop_require_default","configEnv","window","handleLoading","img","onLoadingCompleteRef","setBlurComplete","unoptimized","sizesInput","src","decode","Promise","resolve","parentElement","isConnected","onLoadRef","current","Object","defineProperty","event","writable","stopped","nativeEvent","currentTarget","isDefaultPrevented","isPropagationStopped","prevented","persist","preventDefault","stopPropagation","Boolean","use","_react","fetchPriority","fetchpriority","width","decoding","className","style","srcSet","sizes","height","_jsxruntime","jsx","getDynamicProps","data-nimg","ref","useCallback","forwardedRef","onError","placeholder","onLoad","setShowAltText","ImagePreload","param","imgAttributes","opts","as","imageSrcSet","imageSizes","crossOrigin","referrerPolicy","isAppRouter","_reactdom","default","preload","_head","link","rel","href","Image","useContext","RouterContext","pagesRouter","_routercontextsharedruntime","config","useMemo","_imageconfigcontextsharedruntime","ImageConfigContext","c","_c_qualities","allSizes","configContext","_imageconfig","imageConfigDefault","deviceSizes","a","b","sort","qualities","useRef","useEffect","onLoadingComplete","showAltText","useState","meta","imgMeta","getImgProps","defaultLoader","_getimgprops","props","imgConf","blurComplete","ImageElement","fill","prefetched","Set","router","prefetch","options","appOptions","_islocalurl","isLocalURL","prefetchedKey","has","add","process","env","formatStringOrUrl","urlObjOrString","_formaturl","formatUrl","children","legacyBehavior","childrenProp","appRouter","React","AppRouterContext","prefetchEnabled","prefetchProp","_routerreducertypes","AUTO","FULL","resolvedHref","hrefProp","asProp","resolvedAs","_resolvehref","resolveHref","previousAs","child","Children","only","childRef","setIntersectionRef","isVisible","resetVisible","useIntersection","rootMargin","_useintersection","setRef","previousHref","el","appPrefetchKind","onClick","e","defaultPrevented","linkClicked","replace","shallow","scroll","nodeName","isModifiedEvent","eventTarget","which","metaKey","ctrlKey","shiftKey","altKey","navigate","routerScroll","startTransition","onMouseEnter","onMouseEnterProp","priority","bypassPrefetchedCheck","onTouchStart","onTouchStartProp","childProps","curLocale","type","localeDomain","addBasePath","addLocale","_getdomainlocale","_addbasepath","_addlocale","restProps","cloneElement","pathname","hasIntersectionObserver","IntersectionObserver","observers","Map","idList","rootRef","disabled","isDisabled","visible","setVisible","elementRef","setElement","element","tagName","observe","callback","id","observer","elements","createObserver","instance","root","margin","existing","find","obj","get","entries","forEach","entry","isIntersecting","intersectionRatio","push","set","delete","unobserve","size","disconnect","index","findIndex","splice","idleCallback","requestIdleCallback","cancelIdleCallback","isStaticRequire","getInt","x","Number","isFinite","NaN","test","parseInt","_state","blurWidth","blurHeight","loading","quality","overrideSrc","blurDataURL","layout","objectFit","objectPosition","lazyBoundary","lazyRoot","rest","loader","isDefaultLoader","customImageLoader","layoutStyle","layoutToStyle","intrinsic","maxWidth","responsive","layoutSizes","layoutToSizes","staticSrc","widthInt","heightInt","staticImageData","JSON","stringify","ratio","Math","round","isLazy","startsWith","endsWith","dangerouslyAllowSVG","qualityInt","imgStyle","assign","position","left","top","right","bottom","color","backgroundImage","getImageBlurSvg","placeholderStyle","backgroundSize","backgroundPosition","backgroundRepeat","generateImgAttrs","widths","kind","getWidths","viewportWidthRe","percentSizes","match","exec","length","smallestRatio","min","filter","s","map","p","w","last","i","join","svgWidth","svgHeight","viewBox","_default","getImageProps","imgProps","key","q","reduce","prev","cur","abs","encodeURIComponent","__next_img_default","module","exports","__webpack_require__","ErrorBoundaryContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","initialState","didCatch","error","ErrorBoundary","Component","constructor","resetErrorBoundary","bind","state","getDerivedStateFromError","_this$props$onReset","_this$props","_len","arguments","args","_key","onReset","call","reason","setState","componentDidCatch","info","_this$props$onError","_this$props2","componentDidUpdate","prevProps","prevState","resetKeys","hasArrayChanged","some","item","is","_this$props$onReset2","_this$props3","next","render","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","Provider","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","hasOwnProperty","classNames","classes","arg","appendClass","parseValue","Array","isArray","apply","toString","prototype","includes","newClass","now","isAnimationControls","v","start","isKeyframesTarget","shallowCompare","prevLength","isVariantLabel","getValueState","visualElement","values","getVelocity","resolveVariantFromProps","definition","custom","velocity","variants","resolveVariant","getProps","variantPriorityOrder","variantProps","transformPropOrder","transformProps","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","underDampedSpring","stiffness","damping","restSpeed","criticallyDampedSpring","sqrt","keyframesTransition","duration","ease","getDefaultTransition","valueKey","keyframes","getValueTransition","transition","MotionGlobalConfig","skipAnimations","useManualTiming","instantAnimationState","isNotNull","getFinalKeyframe","repeat","repeatType","finalKeyframe","resolvedKeyframes","noop","any","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","delta","timestamp","isProcessing","flagRunNextFrame","steps","acc","createRenderStep","thisFrame","nextFrame","flushNextFrame","toKeepAlive","WeakSet","latestFrameData","triggerCallback","step","schedule","keepAlive","immediate","queue","addToCurrentFrame","cancel","frameData","clear","read","resolveKeyframes","update","preRender","postRender","processBatch","performance","max","wake","frame_frame","cancelFrame","requestAnimationFrame","isZeroValueString","isNumericalString","checkStringStartsWith","token","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","split","trim","splitCSSVariableRegex","clamp","number","parse","parseFloat","transform","alpha","scale","sanitize","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","unit","degrees","percent","px","vh","vw","progressPercentage","positionalKeys","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","paddingLeft","paddingRight","y","paddingTop","paddingBottom","translateX","translateY","testValueType","dimensionValueTypes","findDimensionValueType","toResolve","isScheduled","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","from","resolver","needsMeasurement","elementsToMeasure","transformsToRestore","removedTransforms","removeNonTranslationalTransform","getValue","measureInitialState","restore","_a","measureEndState","suspendedScrollY","scrollTo","complete","readAllKeyframes","readKeyframes","KeyframeResolver","unresolvedKeyframes","onComplete","name","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","substring","hsla","hue","saturation","lightness","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","indexes","var","types","tokenised","parsedValue","parseComplexValue","createTransformer","source","numSections","output","convertNumbersToZero","complex","_b","isNaN","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","slice","defaultValue","functionRegex","functions","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxHeight","padding","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateZ","z","perspective","transformPerspective","opacity","originX","originY","originZ","zIndex","backgroundPositionX","backgroundPositionY","fillOpacity","strokeOpacity","numOctaves","defaultValueTypes","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","invalidTemplates","DOMKeyframesResolver","keyframe","resolved","getVariableValue","depth","invariant","parseCSSVariable","token1","token2","getComputedStyle","getPropertyValue","trimmed","resolveNoneKeyframes","origin","originType","targetType","noneKeyframeIndexes","makeNoneKeyframesAnimatable","animatableTemplate","noneIndex","pageYOffset","measuredOrigin","measureViewportBox","measureKeyframe","jump","finalKeyframeIndex","unsetTransformName","unsetTransformValue","memo","result","clearTime","time","newTime","queueMicrotask","isAnimatable","BaseAnimation","autoplay","delay","repeatDelay","isStopped","hasAttemptedResolve","createdAt","updateFinishedPromise","calcStartTime","resolvedAt","_resolved","onKeyframesResolved","onUpdate","isGenerator","canAnimate","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","hasKeyframesChanged","resolveFinishedPromise","resolvedAnimation","initPlayback","onPostResolved","reject","currentFinishedPromise","calcGeneratorVelocity","resolveValue","t","frameDuration","prevT","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","keys","spring","restDelta","resolveSpring","done","mass","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","warning","exponentialDecay","safeMin","exp","pow","d","approximateRoot","initialGuess","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","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","latest","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","combineFunctions","pipe","transformers","progress","to","toFromDifference","mixNumber","hueToRgb","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","mix","mixer","keyframeValues","times","easingFunctions","mapTimeToKeyframe","interpolate","input","isClamp","inputLength","reverse","mixers","createMixers","customMixer","mixerFactory","numMixers","interpolator","progressInRange","offset","defaultOffset","arr","fillOffset","remaining","offsetProgress","o","frameloopDriver","passTimestamp","stop","generators","decay","tween","percentToProgress","MainThreadAnimation","holdTime","cancelTime","currentTime","playbackSpeed","pendingPlayState","startTime","teardown","onStop","KeyframeResolver$1","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","acceleratedValues","isBezierDefinition","cubicBezierAsString","supportedWaapiEasing","mapEasingToNativeEasingWithDefault","mapEasingToNativeEasing","supportsWaapi","Element","AcceleratedAnimation","owner","isWaapiSupportedEasing","every","pregeneratedAnimation","pregenerateKeyframes","sampleAnimation","pregeneratedKeyframes","animation","animateStyle","valueName","keyframeOptions","animate","iterations","direction","pendingTimeline","timeline","onfinish","playbackRate","playState","attachTimeline","sampleTime","setWithVelocity","supports","HTMLElement","supportsScrollTimeline","ScrollTimeline","GroupPlaybackControls","animations","runAll","onResolve","onReject","all","catch","getAll","propName","setAll","newValue","cancelAll","observeTimeline","prevProgress","onFrame","percentage","cancelTimeline","methodName","controls","animateMotionValue","isHandoff","onEnd","valueTransition","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","shouldSkip","isCustomValue","toValue","resolveFinalValueInKeyframes","addUniqueItem","indexOf","removeItem","SubscriptionManager","subscriptions","handler","notify","numSubscriptions","getSize","isFloat","collectMotionValues","MotionValue","init","version","canTrackVelocity","events","updateAndNotify","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","hasAnimated","prevFrameValue","prevUpdatedAt","onChange","subscription","on","eventName","unsubscribe","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","endAnimation","getPrevious","startAnimation","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","camelToDash","str","toLowerCase","optimizedAppearDataAttribute","getWillChangeName","WillChangeMotionValue","counts","styleName","prevCount","hasRemoved","newCount","isMotionValue","addValueToWillChange","applyWillChange","willChange","addValue","animateTarget","targetAndTransition","transitionOverride","transitionEnd","animationTypeState","animationState","getState","latestValues","valueTarget","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","MotionHandoffAnimation","appearId","shouldReduceMotion","setTarget","hasValue","animateVariant","variant","presenceContext","getAnimation","getChildAnimations","variantChildren","forwardDelay","animateChildren","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","first","sortNodePosition","reversePriorityOrder","numAnimationTypes","createTypeState","isActive","prevResolvedValues","createState","whileInView","whileHover","whileTap","whileDrag","whileFocus","exit","Feature","node","isMounted","AnimationFeature","createAnimationState","animateVisualElement","resolvedDefinition","isInitialRender","buildResolvedTypeValues","animateChanges","changedActiveType","context","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","prop","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","shouldAnimateType","variantDidChange","handledRemovedValues","definitionList","resolvedValues","allKeys","markToAnimate","liveStyle","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","initial","setActive","setAnimateFunction","makeAnimator","reset","updateAnimationControlsSubscription","unmountControls","subscribe","mount","prevAnimate","unmount","ExitAnimationFeature","isPresent","onExitComplete","prevIsPresent","prevPresenceContext","exitAnimation","register","isPrimaryPointer","pointerType","button","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addDomEvent","passive","addEventListener","removeEventListener","addPointerEvent","PanSession","handlers","transformPagePoint","contextWindow","dragSnapToOrigin","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal","openVertical","isDragActive","openGestureLock","isRefObject","calcLength","axis","calcAxisDelta","originPoint","translate","calcBoxDelta","calcRelativeAxis","relative","parent","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","hasTransform","has2DTranslate","is2DTranslate","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","translateAxis","transformAxis","axisTranslate","axisScale","axisOrigin","transformBox","transformBoxPoints","topLeft","bottomRight","getBoundingClientRect","getContextWindow","ownerDocument","defaultView","elementDragControls","WeakMap","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","pauseAnimation","stopAnimation","dragPropagation","onDragStart","resolveConstraints","projection","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","removeWillChange","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","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","onDragTransitionEnd","startAxisValueAnimation","dragKey","toUpperCase","externalMotionValue","scalePositionWithinConstraints","boxProgress","calcOrigin","sourceLength","targetLength","transformTemplate","updateScroll","updateLayout","addListeners","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","DragGesture","removeGroupControls","dragControls","asyncHandler","PanGesture","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","isValidProp","preloadedFeatures","createVisualElement","PresenceContext_PresenceContext","react","LayoutGroupContext","SwitchLayoutGroupContext","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","scaleCorrectors","microtask","cancelMicrotask","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","layoutId","defaultScaleCorrectors","group","didUpdate","safeToRemove","setOptions","getSnapshotBeforeUpdate","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","remove","deregister","MeasureLayout","usePresence","useId","jsx_runtime","applyTo","boxShadow","treeScale","projectionDelta","shadow","xScale","yScale","averageScale","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","copyAxisDeltaInto","originDelta","removePointDelta","removeAxisTransforms","transforms","scaleKey","originKey","sourceAxis","removeAxisDelta","relativeProgress","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","axisEquals","axisEqualsRounded","boxEqualsRounded","aspectRatio","axisDeltaEquals","NodeStack","scheduleRender","prevLead","lead","indexOfNode","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","compareByDepth","FlatTree","isDirty","resolveMotionValue","unwrappedValue","metrics","totalNodes","resolvedTargetDeltas","recalculatedProjection","isDebug","MotionDebug","transformAxes","hiddenVisibility","visibility","create_projection_node_id","resetDistortingTransform","sharedAnimationValues","setStaticValue","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","hasCheckedOptimisedAppear","eventHandlers","hasTreeAnimated","updateScheduled","scheduleUpdate","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","record","resolvedRelativeTargetAt","hasProjected","animationProgress","sharedNodes","notifyListeners","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","MotionCancelOptimisedAnimation","cancelTreeOptimisedTransformAnimations","projectionNode","MotionHasOptimisedAnimation","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","layoutScroll","isRoot","wasRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","checkNodeWasScrollRoot","boxWithoutScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","applyTreeDeltas","treePath","isSharedTransition","treeLength","display","prevProjectionDelta","createProjectionDeltas","notifyAll","projectionDeltaWithTransform","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","snapshotSource","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacityExit","borderLabel","followRadius","leadRadius","animateSingleValue","motionValue$1","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","resetValues","getProjectionStyles","styleProp","styles","pointerEvents","emptyStyles","valuesToRender","buildProjectionTransform","latestTransform","xTranslate","yTranslate","zTranslate","elementScaleX","elementScaleY","transformOrigin","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","string","roundPoint","DocumentProjectionNode","document","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode","documentNode","addHoverEvent","callbackName","HoverGesture","FocusGesture","onFocus","isFocusVisible","matches","onBlur","isNodeOrChild","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startInfo","isPressing","removePointerUpListener","endEvent","endInfo","checkPressEnd","onTap","onTapCancel","globalTapTarget","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","removeKeydownListener","keydownEvent","keyupEvent","removeBlurListener","onTapStart","removePointerListener","removeFocusListener","observerCallbacks","fireObserverCallback","fireAllObserverCallbacks","thresholdNames","InViewFeature","hasEnteredView","isInView","startObserver","viewport","amount","once","threshold","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","onViewportEnter","onViewportLeave","hasViewportOptionChanged","prevViewport","MotionConfigContext","isStatic","reducedMotion","MotionContext","isBrowser","useIsomorphicLayoutEffect","useLayoutEffect","LazyContext","strict","scheduleHandoffComplete","completeHandoff","MotionHandoffIsComplete","isControllingVariants","isVariantNode","variantLabelsAsDependency","featureProps","focus","hover","tap","pan","inView","featureDefinitions","isEnabled","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","renderHTML","vars","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","attrs","setAttribute","isForcedMotionValue","scrapeMotionValuesFromProps","newValues","scrape_motion_values_scrapeMotionValuesFromProps","charAt","makeUseVisualState","make","makeState","createRenderState","onMount","makeLatestValues","shouldApplyWillChange","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","forEachDefinition","addWillChange","memberName","useConstant","list","createHtmlRenderState","createSvgRenderState","getValueAsType","translateAlias","numTransforms","buildHTMLStyles","hasTransformOrigin","valueAsType","buildTransform","transformString","transformIsDefault","valueIsDefault","transformName","transform_origin_calcOrigin","dashKeys","array","camelKeys","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","isSVGTag","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","tag","svgMotionConfig","useVisualState","getBBox","htmlMotionConfig","copyRawValuesOnly","validMotionProps","isValidMotionProp","shouldForward","prefersReducedMotion","hasReducedMotionListener","visualElementStore","valueTypes","findValueType","propEventHandlers","numVariantProps","VisualElement","_props","_prevProps","_visualElement","reducedMotionConfig","visualState","features","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","isRenderScheduled","triggerBuild","renderInstance","baseTarget","initialValues","initialMotionValues","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","matchMedia","motionMediaQuery","setReducedMotionPreferences","addListener","feature","removeSyncCheck","valueIsTransform","removeOnChange","latestValue","removeOnRenderRequest","MotionCheckAppearSync","other","sortInstanceNodePosition","updateFeatures","featureDefinition","FeatureConstructor","build","measureInstanceViewportBox","getStaticValue","listener","updateMotionValuesFromProps","nextValue","prevValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","startAtParent","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","DOMVisualElement","compareDocumentPosition","HTMLVisualElement","defaultType","computedStyle","childSubscription","textContent","SVGVisualElement","getAttribute","motion","createDOMMotionComponentProxy","componentFactory","Proxy","componentCache","_target","ProjectionNode","allowProjection","Fragment","forwardMotionProps","createRendererMotionComponent","useRender","loadFeatures","ForwardRefMotionComponent","forwardRef","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","layoutProjection","getProjectionFunctionality","combined","useVisualElement","ProjectionNodeConstructor","lazyContext","visualElementRef","renderer","initialLayoutGroupConfig","use_visual_element_createProjectionNode","getClosestProjectingNode","useInsertionEffect","optimisedAppearId","wantsHandoff","jsxs","createUseRender","visualProps","useVisualProps","_isStatic","rawStyles","htmlProps","useStyle","useInitialMotionValues","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","tabIndex","filteredProps","filterProps","isDom","elementProps","renderedChildren"],"sourceRoot":""}