{"version":3,"file":"static/chunks/6806-0c4e120d832e37fe.js","mappings":"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","sources":["webpack://_N_E/./node_modules/react-hotjar/index.js","webpack://_N_E/./node_modules/react-hotjar/src/react-hotjar.js","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/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/waapi/utils/get-final-keyframe.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/back.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/utils/map.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/color.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/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/animation/animators/js/driver-frameloop.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/js/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/memo.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animators/instant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-force-update.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/circ.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/render-step.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/batcher.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/frame.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/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/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/microtask.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.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/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/Feature.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/hover.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/focus.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/press.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/get-context-window.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/pan/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/debug/record.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.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/VisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/errors.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/noop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/progress.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/"],"sourcesContent":["var hotjar = require('./src/react-hotjar');\n\nfunction hj() {\n\tvar params = Array.prototype.slice.call(arguments);\n\tif (!window.hj) {\n\t\tthrow new Error('Hotjar is not initialized');\n\t}\n\n\twindow.hj.apply(undefined, params);\n}\n\nmodule.exports = {\n\thotjar: {\n\t\tinitialize: function initialize(id, sv) {\n\t\t\thotjar(id, sv);\n\t\t},\n\t\tinitialized: function initialized() {\n\t\t\treturn typeof window !== 'undefined' && typeof window?.hj === 'function';\n\t\t},\n\t\tidentify: function identify(userId, properties) {\n\t\t\thj('identify', userId, properties);\n\t\t},\n\t\tevent: function event(event) {\n\t\t\thj('event', event);\n\t\t},\n\t\tstateChange: function stateChange(relativePath) {\n\t\t\thj('stateChange', relativePath);\n\t\t}\n\t}\n};\n","module.exports = function(id, sv, debug=false) {\n\t(function(h, o, t, j, a, r) {\n\t\th.hj =\n\t\t\th.hj ||\n\t\t\tfunction() {\n\t\t\t\t(h.hj.q = h.hj.q || []).push(arguments);\n\t\t\t};\n\t\th._hjSettings = { hjid: id, hjsv: sv, hjDebug: debug };\n\t\th._scriptPath = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n\t\tif(!document.querySelector(\n\t\t\t'script[src*=\"' + h._scriptPath + '\"]'\n\t\t)){\n\t\t\ta = o.getElementsByTagName('head')[0];\n\t\t\tr = o.createElement('script');\n\t\t\tr.async = 1;\n\t\t\tr.src = h._scriptPath;\n\t\t\ta.appendChild(r);\n\t\t}\n\t})(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');\n};\n","import { invariant } from '../../utils/errors.mjs';\nimport { setValues } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n let hasMounted = false;\n /**\n * A collection of linked component animation controls.\n */\n const subscribers = new Set();\n const controls = {\n subscribe(visualElement) {\n subscribers.add(visualElement);\n return () => void subscribers.delete(visualElement);\n },\n start(definition, transitionOverride) {\n invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n const animations = [];\n subscribers.forEach((visualElement) => {\n animations.push(animateVisualElement(visualElement, definition, {\n transitionOverride,\n }));\n });\n return Promise.all(animations);\n },\n set(definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach((visualElement) => {\n setValues(visualElement, definition);\n });\n },\n stop() {\n subscribers.forEach((visualElement) => {\n stopAnimation(visualElement);\n });\n },\n mount() {\n hasMounted = true;\n return () => {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return \n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n const controls = useConstant(animationControls);\n useIsomorphicLayoutEffect(controls.mount, []);\n return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\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\" && supportedWaapiEasing[easing]) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing) {\n if (!easing)\n return undefined;\n return isBezierDefinition(easing)\n ? cubicBezierAsString(easing)\n : Array.isArray(easing)\n ? easing.map(mapEasingToNativeEasing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, 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","function getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }) {\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : keyframes.length - 1;\n return keyframes[index];\n}\n\nexport { getFinalKeyframe };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mixNumber } from './number.mjs';\nimport { invariant } 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';\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 invariant(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\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 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","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';\n\nfunction mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\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 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 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","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value),\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 { 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","/**\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 { keyframes } from '../../generators/keyframes.mjs';\nimport { spring } from '../../generators/spring/index.mjs';\nimport { inertia } from '../../generators/inertia.mjs';\nimport { frameloopDriver } from './driver-frameloop.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorDuration } from '../../generators/utils/calc-duration.mjs';\nimport { invariant } from '../../../utils/errors.mjs';\nimport { mix } from '../../../utils/mix/index.mjs';\nimport { pipe } from '../../../utils/pipe.mjs';\n\nconst types = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animate a single value on the main thread.\n *\n * This function is written, where functionality overlaps,\n * to be largely spec-compliant with WAAPI to allow fungibility\n * between the two.\n */\nfunction animateValue({ autoplay = true, delay = 0, driver = frameloopDriver, keyframes: keyframes$1, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", onPlay, onStop, onComplete, onUpdate, ...options }) {\n let speed = 1;\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let animationDriver;\n const generatorFactory = types[type] || keyframes;\n /**\n * If this isn't the keyframes generator and we've been provided\n * strings as keyframes, we need to interpolate these.\n */\n let mapNumbersToKeyframes;\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 mapNumbersToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n let mirroredGenerator;\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -(options.velocity || 0),\n });\n }\n let playState = \"idle\";\n let holdTime = null;\n let startTime = null;\n let cancelTime = null;\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 && repeat) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n let resolvedDuration = Infinity;\n let totalDuration = Infinity;\n if (calculatedDuration !== null) {\n resolvedDuration = calculatedDuration + repeatDelay;\n totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n }\n let currentTime = 0;\n const tick = (timestamp) => {\n if (startTime === null)\n return;\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 (speed > 0)\n startTime = Math.min(startTime, timestamp);\n if (speed < 0)\n startTime = Math.min(timestamp - totalDuration / speed, startTime);\n if (holdTime !== null) {\n currentTime = 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 currentTime = Math.round(timestamp - startTime) * speed;\n }\n // Rebase on delay\n const timeWithoutDelay = currentTime - delay * (speed >= 0 ? 1 : -1);\n const isInDelayPhase = speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n currentTime = Math.max(timeWithoutDelay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (playState === \"finished\" && holdTime === null) {\n currentTime = totalDuration;\n }\n let elapsed = 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(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$1[0] }\n : frameGenerator.next(elapsed);\n if (mapNumbersToKeyframes) {\n state.value = mapNumbersToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done = speed >= 0 ? currentTime >= totalDuration : currentTime <= 0;\n }\n const isAnimationFinished = holdTime === null &&\n (playState === \"finished\" || (playState === \"running\" && done));\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n finish();\n }\n return state;\n };\n const stopAnimationDriver = () => {\n animationDriver && animationDriver.stop();\n animationDriver = undefined;\n };\n const cancel = () => {\n playState = \"idle\";\n stopAnimationDriver();\n resolveFinishedPromise();\n updateFinishedPromise();\n startTime = cancelTime = null;\n };\n const finish = () => {\n playState = \"finished\";\n onComplete && onComplete();\n stopAnimationDriver();\n resolveFinishedPromise();\n };\n const play = () => {\n if (hasStopped)\n return;\n if (!animationDriver)\n animationDriver = driver(tick);\n const now = animationDriver.now();\n onPlay && onPlay();\n if (holdTime !== null) {\n startTime = now - holdTime;\n }\n else if (!startTime || playState === \"finished\") {\n startTime = now;\n }\n if (playState === \"finished\") {\n updateFinishedPromise();\n }\n cancelTime = startTime;\n holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n playState = \"running\";\n animationDriver.start();\n };\n if (autoplay) {\n play();\n }\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n get time() {\n return millisecondsToSeconds(currentTime);\n },\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n currentTime = newTime;\n if (holdTime !== null || !animationDriver || speed === 0) {\n holdTime = newTime;\n }\n else {\n startTime = animationDriver.now() - newTime / speed;\n }\n },\n get duration() {\n const duration = generator.calculatedDuration === null\n ? calcGeneratorDuration(generator)\n : generator.calculatedDuration;\n return millisecondsToSeconds(duration);\n },\n get speed() {\n return speed;\n },\n set speed(newSpeed) {\n if (newSpeed === speed || !animationDriver)\n return;\n speed = newSpeed;\n controls.time = millisecondsToSeconds(currentTime);\n },\n get state() {\n return playState;\n },\n play,\n pause: () => {\n playState = \"paused\";\n holdTime = currentTime;\n },\n stop: () => {\n hasStopped = true;\n if (playState === \"idle\")\n return;\n playState = \"idle\";\n onStop && onStop();\n cancel();\n },\n cancel: () => {\n if (cancelTime !== null)\n tick(cancelTime);\n cancel();\n },\n complete: () => {\n playState = \"finished\";\n },\n sample: (elapsed) => {\n startTime = 0;\n return tick(elapsed);\n },\n };\n return controls;\n}\n\nexport { animateValue };\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 { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\nimport { animateValue } from '../js/index.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { memo } from '../../../utils/memo.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n]);\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;\nconst requiresPregeneratedKeyframes = (valueName, options) => options.type === \"spring\" ||\n valueName === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease);\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supportsWaapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0 &&\n options.type !== \"inertia\";\n if (!canAccelerateAnimation)\n return false;\n /**\n * TODO: Unify with js/index\n */\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Cancelling an animation will write to the DOM. For safety we want to defer\n * this until the next `update` frame lifecycle. This flag tracks whether we\n * have a pending cancel, if so we shouldn't allow animations to finish.\n */\n let pendingCancel = false;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let { keyframes, duration = 300, ease, times } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(valueName, options)) {\n const sampleAnimation = animateValue({\n ...options,\n repeat: 0,\n delay: 0,\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 times = undefined;\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n duration,\n /**\n * This function is currently not called if ease is provided\n * as a function so the cast is safe.\n *\n * However it would be possible for a future refinement to port\n * in easing pregeneration from Motion One for browsers that\n * support the upcoming `linear()` easing function.\n */\n ease: ease,\n times,\n });\n const cancelAnimation = () => {\n pendingCancel = false;\n animation.cancel();\n };\n const safeCancel = () => {\n pendingCancel = true;\n frame.update(cancelAnimation);\n resolveFinishedPromise();\n updateFinishedPromise();\n };\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 if (pendingCancel)\n return;\n value.set(getFinalKeyframe(keyframes, options));\n onComplete && onComplete();\n safeCancel();\n };\n /**\n * Animation interrupt callback.\n */\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n attachTimeline(timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n return noop;\n },\n get time() {\n return millisecondsToSeconds(animation.currentTime || 0);\n },\n set time(newTime) {\n animation.currentTime = secondsToMilliseconds(newTime);\n },\n get speed() {\n return animation.playbackRate;\n },\n set speed(newSpeed) {\n animation.playbackRate = newSpeed;\n },\n get duration() {\n return millisecondsToSeconds(duration);\n },\n play: () => {\n if (hasStopped)\n return;\n animation.play();\n /**\n * Cancel any pending cancel tasks\n */\n cancelFrame(cancelAnimation);\n },\n pause: () => animation.pause(),\n stop: () => {\n hasStopped = true;\n if (animation.playState === \"idle\")\n return;\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 const { currentTime } = animation;\n if (currentTime) {\n const sampleAnimation = animateValue({\n ...options,\n autoplay: false,\n });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n safeCancel();\n },\n complete: () => {\n if (pendingCancel)\n return;\n animation.finish();\n },\n cancel: safeCancel,\n };\n return controls;\n}\n\nexport { createAcceleratedAnimation };\n","import { animateValue } from './js/index.mjs';\nimport { noop } from '../../utils/noop.mjs';\n\nfunction createInstantAnimation({ keyframes, delay, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n /**\n * TODO: As this API grows it could make sense to always return\n * animateValue. This will be a bigger project as animateValue\n * is frame-locked whereas this function resolves instantly.\n * This is a behavioural change and also has ramifications regarding\n * assumptions within tests.\n */\n return {\n time: 0,\n speed: 1,\n duration: 0,\n play: (noop),\n pause: (noop),\n stop: (noop),\n then: (resolve) => {\n resolve();\n return Promise.resolve();\n },\n cancel: (noop),\n complete: (noop),\n };\n };\n return delay\n ? animateValue({\n keyframes: [0, 1],\n duration: 0,\n delay,\n onComplete: setValue,\n })\n : setValue();\n}\n\nexport { createInstantAnimation };\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","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 = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"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 { 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}\n\nexport { isNone };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isNone } from './is-none.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let keyframes;\n if (Array.isArray(target)) {\n keyframes = [...target];\n }\n else {\n keyframes = [null, target];\n }\n const defaultOrigin = transition.from !== undefined ? transition.from : value.get();\n let animatableTemplateValue = undefined;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < keyframes.length; i++) {\n /**\n * Fill null/wildcard keyframes\n */\n if (keyframes[i] === null) {\n keyframes[i] = i === 0 ? defaultOrigin : keyframes[i - 1];\n }\n if (isNone(keyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n // TODO: Clean this conditional, it works for now\n if (typeof keyframes[i] === \"string\" &&\n keyframes[i] !== \"none\" &&\n keyframes[i] !== \"0\") {\n animatableTemplateValue = keyframes[i];\n }\n }\n if (isTargetAnimatable &&\n noneKeyframeIndexes.length &&\n animatableTemplateValue) {\n for (let i = 0; i < noneKeyframeIndexes.length; i++) {\n const index = noneKeyframeIndexes[i];\n keyframes[index] = getAnimatableNone(valueName, animatableTemplateValue);\n }\n }\n return keyframes;\n}\n\nexport { getKeyframes };\n","import { warning } from '../../utils/errors.mjs';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from '../animators/waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from '../animators/instant.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isAnimatable } from '../utils/is-animatable.mjs';\nimport { getKeyframes } from '../utils/keyframes.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { animateValue } from '../animators/js/index.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\n\nconst animateMotionValue = (valueName, value, target, transition = {}) => {\n return (onComplete) => {\n const valueTransition = getValueTransition(transition, valueName) || {};\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 const keyframes = getKeyframes(value, valueName, target, valueTransition);\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 const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} 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 let options = {\n keyframes,\n velocity: value.getVelocity(),\n ease: \"easeOut\",\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\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(valueName, 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 (!isOriginAnimatable ||\n !isTargetAnimatable ||\n instantAnimationState.current ||\n valueTransition.type === false ||\n MotionGlobalConfig.skipAnimations) {\n /**\n * If we can't animate this value, or the global instant animation flag is set,\n * or this is simply defined as an instant transition, return an instant transition.\n */\n return createInstantAnimation(instantAnimationState.current\n ? { ...options, delay: 0 }\n : options);\n }\n /**\n * Animate via WAAPI if possible.\n */\n if (\n /**\n * 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 !transition.isHandoff &&\n value.owner &&\n value.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 !value.owner.getProps().onUpdate) {\n const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n if (acceleratedAnimation)\n return acceleratedAnimation;\n }\n /**\n * If we didn't create an accelerated animation, create a JS animation\n */\n return animateValue(options);\n };\n};\n\nexport { animateMotionValue };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { optimizedAppearDataAttribute } from '../optimized-appear/data-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { 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 hasKeyframesChanged(value, target) {\n const current = value.get();\n if (Array.isArray(target)) {\n for (let i = 0; i < target.length; i++) {\n if (target[i] !== current)\n return true;\n }\n }\n else {\n return current !== target;\n }\n}\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...getValueTransition(transition || {}, key),\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n if (window.HandoffAppearAnimations) {\n const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n if (appearId) {\n const elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n if (elapsed !== null) {\n valueTransition.elapsed = elapsed;\n valueTransition.isHandoff = true;\n }\n }\n }\n let canSkip = !valueTransition.isHandoff &&\n !hasKeyframesChanged(value, valueTarget);\n if (valueTransition.type === \"spring\" &&\n (value.getVelocity() || valueTransition.velocity)) {\n canSkip = false;\n }\n /**\n * Temporarily disable skipping animations if there's an animation in\n * progress. Better would be to track the current target of a value\n * and compare that against valueTarget.\n */\n if (value.animation) {\n canSkip = false;\n }\n if (canSkip)\n continue;\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n const animation = value.animation;\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\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 const resolved = resolveVariant(visualElement, variant, options.custom);\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(() => visualElement.notify(\"AnimationComplete\", definition));\n}\n\nexport { animateVisualElement };\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","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, isTransitionDefined };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n // clean up the exiting children map\n exitingChildren.delete(key);\n // compute the keys of children that were rendered once but are no longer present\n // this could happen in case of too many fast consequent renderings\n // @link https://github.com/framer/motion/issues/2023\n const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n // clean up the all children map\n leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n // make sure to render only the children that are actually visible\n presentChildren.current = filteredChildren.filter((presentChild) => {\n const presentChildKey = getChildKey(presentChild);\n return (\n // filter out the node exiting\n presentChildKey === key ||\n // filter out the leftover children\n leftOverKeys.includes(presentChildKey));\n });\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(frameData);\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"prepare\",\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0,\n timestamp: 0,\n isProcessing: false,\n };\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n }, {});\n const processStep = (stepId) => {\n steps[stepId].process(state);\n };\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n stepsOrder.forEach(processStep);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => stepsOrder.forEach((key) => steps[key].cancel(process));\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nexport { time };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const wantsHandoff = useRef(Boolean(props[optimizedAppearDataAttribute] && !window.HandoffComplete));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n microtask.postRender(visualElement.render);\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n window.HandoffComplete = true;\n }\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n const isStrict = useContext(LazyContext).strict;\n if (context.visualElement) {\n MeasureLayout = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, isStrict, preloadedFeatures, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(MotionContext.Provider, { value: context },\n MeasureLayout && context.visualElement ? (React.createElement(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null,\n useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n return new Proxy(custom, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","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 { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { 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 = {\n ...filteredProps,\n ...visualProps,\n ref,\n };\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style && isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps);\n for (const key in props) {\n if (isMotionValue(props[key]) || 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 { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[pointType + \"X\"],\n y: event[pointType + \"Y\"],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = \"pointer\" + (isActive ? \"enter\" : \"leave\");\n const callbackName = \"onHover\" + (isActive ? \"Start\" : \"End\");\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 if (props[callbackName]) {\n frame.update(() => props[callbackName](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 frame.update(() => {\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 !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel && onTapCancel(endEvent, endInfo)\n : onTap && onTap(endEvent, endInfo);\n });\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, { passive: !(props.onTap || props[\"onPointerUp\"]) });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), { passive: !(props.onTapCancel || props[\"onPointerCancel\"]) });\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.update(() => 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.update(() => 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.update(() => 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, { passive: !(props.onTapStart || props[\"onPointerStart\"]) });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\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(options, 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 ? props[type] : 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] && prop !== props[type] && 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, {});\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 };\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) {\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, ...options },\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 if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\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, options) {\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(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() { }\n}\n\nexport { AnimationFeature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete, custom } = 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, { custom: custom !== null && custom !== void 0 ? custom : this.node.getProps().custom });\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => onExitComplete(this.id));\n }\n }\n mount() {\n const { register } = this.node.presenceContext || {};\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const instance = node.instance;\n if (instance &&\n instance.style &&\n instance.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, calcOrigin } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.update(() => onDragStart(event, info), false, true);\n }\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.update(() => 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.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));\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 ? props.initial[axis] : 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) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mixNumber(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints)) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n measureDragConstraints();\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.update(() => 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.update(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","import { useContext, useId, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = () => onExitComplete && onExitComplete(id);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import React__default, { useContext } 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 React__default.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 (React__default.createElement(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction boxEqualsRounded(a, b) {\n return (Math.round(a.x.min) === Math.round(b.x.min) &&\n Math.round(a.x.max) === Math.round(b.x.max) &&\n Math.round(a.y.min) === Math.round(b.y.min) &&\n Math.round(a.y.max) === Math.round(b.y.max));\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n if (xTranslate || yTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\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 { rotate, rotateX, rotateY } = latestTransform;\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 }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","function record(data) {\n if (window.MotionDebug) {\n window.MotionDebug.record(data);\n }\n}\n\nexport { record };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { record } from '../../debug/record.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\n/**\n * Use a mutable data object for debug data so as to not create a new\n * object every frame.\n */\nconst projectionFrameData = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nfunction 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 * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n projectionFrameData.totalNodes =\n projectionFrameData.resolvedTargetDeltas =\n projectionFrameData.recalculatedProjection =\n 0;\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n record(projectionFrameData);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetRotation);\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 !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(() => this.update());\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n projectionFrameData.resolvedTargetDeltas++;\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.projectionTransform) {\n this.projectionDelta = createDelta();\n this.projectionTransform = \"none\";\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n projectionFrameData.recalculatedProjection++;\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n this.options.scheduleRender && this.options.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n let hasRotate = 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.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ) {\n hasRotate = true;\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n const resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n const key = \"rotate\" + transformAxes[i];\n // Record the rotation and then temporarily set it to 0\n if (latestValues[key]) {\n resetValues[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n }\n }\n // Force a render of this element to apply the transform with all 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 }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n projectionFrameData.totalNodes++;\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { 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 = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, 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 else if (isCSSVariableToken(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.current;\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.values.forEach((value) => {\n const current = value.get();\n if (!isCSSVariableToken(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariableToken(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n if (!transitionEnd)\n transitionEnd = {};\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { parseCSSVariable, resolveCSSVariables };\n","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from '../../../utils/errors.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.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 isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\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\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\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 // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\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;\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.current;\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n value && value.jump(origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n /**\n * Don't allow wildcard keyframes to be used to detect\n * a difference in value types.\n */\n if (to[i] === null)\n break;\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n value.jump(to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"11.0.5\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.0.5 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\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 { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n constructor({ parent, props, presenceContext, reducedMotionConfig, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n /**\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) {\n return {};\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n visualElementStore.delete(this.current);\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n this.features[key].unmount();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate &&\n frame.update(this.notifyUpdate, false, true);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n renderedProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent, } = featureDefinitions[name];\n if (ProjectionNode)\n ProjectionNodeConstructor = ProjectionNode;\n if (isEnabled(renderedProps)) {\n if (!this.features[name] && FeatureConstructor) {\n this.features[name] = new FeatureConstructor(this);\n }\n if (MeasureLayoutComponent) {\n MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if ((this.type === \"html\" || this.type === \"svg\") &&\n !this.projection &&\n ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent && this.parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return this.makeTargetAnimatableFromInstance(target, canMutate);\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 listener = props[\"on\" + key];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps), 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 if (value !== this.values.get(key)) {\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n }\n this.values.set(key, value);\n this.latestValues[key] = value.get();\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, { 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) {\n var _a;\n return 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 }\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 const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\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 { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { parseDomVariant } from './utils/parse-dom-variant.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\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 ? props.style[key] : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, isMounted) {\n const origin = getOrigin(target, transition || {}, this);\n if (isMounted) {\n checkTargetForNewValues(this, target, origin);\n const parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layout } from '../../motion/features/layout.mjs';\n\nconst preloadedFeatures = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, preloadedFeatures, createDomVisualElement));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\nexport { createDomMotionComponent, motion };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst startsAsVariableToken = checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (key) => startsAsVariableToken(key) && singleCssVariableRegex.test(key);\nconst singleCssVariableRegex = /var\\s*\\(\\s*--[\\w-]+(\\s*,\\s*(?:(?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)+)?\\s*\\)$/i;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.values.forEach((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\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 definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\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 { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.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 ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\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(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n if (value !== null)\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n if (transitionOrigin !== undefined) {\n origin[key] = transitionOrigin;\n }\n else {\n const value = visualElement.getValue(key);\n if (value) {\n origin[key] = value.get();\n }\n }\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\nexport { isNumericalString };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","const noop = (any) => any;\n\nexport { noop };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.0.5\";\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 = false;\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.canTrackVelocity = isFloat(this.current);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\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) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /([a-z-]*)\\(.*?\\)/g;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { color } from '../color/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\nconst complexRegex = /(var\\s*\\(\\s*--[\\w-]+(\\s*,\\s*(?:(?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)+)?\\s*\\))|(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))|((-)?([\\d]*\\.?[\\d])+)/gi;\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const matchedValues = originalValue.match(complexRegex) || [];\n const values = [];\n const indexes = {\n color: [],\n number: [],\n var: [],\n };\n const types = [];\n for (let i = 0; i < matchedValues.length; i++) {\n const parsedValue = matchedValues[i];\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 }\n const tokenised = originalValue.replace(complexRegex, SPLIT_TOKEN);\n const split = tokenised.split(SPLIT_TOKEN);\n return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { split, types } = analyseComplexValue(source);\n const numSections = split.length;\n return (v) => {\n let output = \"\";\n for (let i = 0; i < numSections; i++) {\n output += split[i];\n if (v[i] !== undefined) {\n const type = types[i];\n if (type === NUMBER_TOKEN) {\n output += sanitize(v[i]);\n }\n else if (type === COLOR_TOKEN) {\n output += color.transform(v[i]);\n }\n else {\n output += v[i];\n }\n }\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parseComplexValue(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nconst colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n"],"names":["hotjar","__webpack_require__","hj","params","Array","prototype","slice","call","arguments","window","apply","undefined","module","exports","initialize","id","sv","initialized","identify","userId","properties","event","stateChange","relativePath","debug","h","o","a","r","document","q","push","_hjSettings","hjid","hjsv","hjDebug","_scriptPath","t","querySelector","getElementsByTagName","createElement","async","src","appendChild","animationControls","hasMounted","subscribers","Set","controls","subscribe","add","visualElement","delete","start","definition","transitionOverride","errors","k","animations","forEach","visual_element","d","Promise","all","set","setters","gg","stop","stopAnimation","values","value","mount","useAnimation","use_constant","use_isomorphic_effect","L","result","callback","instantAnimationState","current","isBezierDefinition","isArray","easing","cubicBezierAsString","b","c","supportedWaapiEasing","linear","ease","easeIn","easeOut","easeInOut","circIn","circOut","backIn","backOut","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","noop","Z","getTForX","binarySubdivide","x","lowerBound","upperBound","currentX","currentT","i","Math","abs","aX","isEasingArray","reverse","M","backInOut","mirror","anticipate","p","pow","easingLookup","circ","Z7","circInOut","X7","Bn","easingDefinitionToFunction","length","x1","y1","x2","y2","hueToRgb","mixLinearColor","from","to","v","fromExpo","expo","sqrt","colorTypes","hex","$","rgba","m","hsla","J","getColorType","find","type","test","asRGBA","color","Boolean","model","parse","hslaToRgba","hue","saturation","lightness","alpha","red","green","blue","round","mixColor","fromRGBA","toRGBA","blended","number","transform","mixImmediate","mixNumber","getMixer","is_css_variable","mixComplex","mixArray","mixObject","output","numValues","blendValue","map","key","origin","target","template","complex","P","createTransformer","originStats","V","targetStats","canInterpolate","indexes","var","pipe","z","matchOrder","_a","orderedOrigin","pointers","types","originIndex","originValue","K","mix","mixer","keyframes","duration","keyframeValues","times","easingFunctions","state","done","absoluteTimes","offset","defaultOffset","arr","fillOffset","remaining","min","offsetProgress","progress","Y","mapTimeToKeyframe","interpolate","input","clamp","isClamp","inputLength","mixers","createMixers","customMixer","mixerFactory","numMixers","easingFunction","interpolator","progressInRange","u","splice","calculatedDuration","next","calcGeneratorVelocity","resolveValue","prevT","max","velocity_per_second","R","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","options","keys","some","spring","restDelta","restSpeed","resolveSpring","stiffness","damping","mass","velocity","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","bounce","envelope","derivative","time_conversion","w","X","exponentialDecay","delta","safeMin","exp","e","g","factor","f","initialGuess","approximateRoot","isNaN","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","sin","cos","dampedAngularFreq","freqForT","sinh","cosh","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","timeReachedBoundary","spring$1","isOutOfBounds","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","checkCatchBoundary","hasUpdatedFrame","frameloopDriver","passTimestamp","timestamp","update","frameloop_frame","Wi","Pn","now","w0","isProcessing","sync_time","calcGeneratorDuration","generator","Infinity","decay","tween","percentToProgress","percent","animateValue","autoplay","delay","driver","keyframes$1","repeat","repeatDelay","repeatType","onPlay","onStop","onComplete","onUpdate","resolveFinishedPromise","currentFinishedPromise","animationDriver","mapNumbersToKeyframes","mirroredGenerator","speed","hasStopped","updateFinishedPromise","resolve","generatorFactory","playState","holdTime","startTime","cancelTime","resolvedDuration","totalDuration","currentTime","tick","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","floor","iterationProgress","isOddIteration","isAnimationFinished","finish","stopAnimationDriver","cancel","play","then","reject","time","newTime","newSpeed","pause","complete","sample","supportsWaapi","Object","hasOwnProperty","Element","acceleratedValues","requiresPregeneratedKeyframes","valueName","isWaapiSupportedEasing","every","underDampedSpring","criticallyDampedSpring","keyframesTransition","getDefaultTransition","valueKey","G","has","startsWith","isAnimatable","animateMotionValue","transition","valueTransition","transitions","getKeyframes","animatableTemplateValue","isTargetAnimatable","defaultOrigin","get","noneKeyframeIndexes","is_zero_value_string","W","index","animatable_none","T","originKeyframe","targetKeyframe","isOriginAnimatable","getVelocity","GlobalConfig","skipAnimations","createInstantAnimation","setValue","isHandoff","owner","HTMLElement","getProps","acceleratedAnimation","createAcceleratedAnimation","canAccelerateAnimation","pendingCancel","sampleAnimation","pregeneratedKeyframes","animation","animateStyle","element","keyframeOptions","mapEasingToNativeEasing","animate","fill","iterations","direction","cancelAnimation","safeCancel","onfinish","getFinalKeyframe","attachTimeline","timeline","playbackRate","setWithVelocity","animateTarget","transitionEnd","makeTargetAnimatable","willChange","getValue","animationTypeState","animationState","getState","valueTarget","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","HandoffAppearAnimations","appearId","data_id","canSkip","hasKeyframesChanged","motion_value","shouldReduceMotion","is","remove","CD","animateVariant","variant","resolved","resolve_dynamic_variants","custom","getAnimation","getChildAnimations","variantChildren","size","forwardDelay","delayChildren","staggerChildren","staggerDirection","animateChildren","maxStaggerDuration","generateStaggerDuration","sort","sortByTreeOrder","child","notify","when","first","last","sortNodePosition","animateVisualElement","resolvedDefinition","optimizedAppearDataAttribute","_render_dom_utils_camel_to_dash_mjs__WEBPACK_IMPORTED_MODULE_0__","D","isKeyframesTarget","isTransitionDefined","_delay","getValueTransition","useIsMounted","isMounted","react","useRef","PopChildMeasure","Component","getSnapshotBeforeUpdate","prevProps","props","childRef","isPresent","sizeRef","height","offsetHeight","width","offsetWidth","top","offsetTop","left","offsetLeft","componentDidUpdate","render","children","PopChild","useId","ref","useInsertionEffect","dataset","motionPopId","style","head","sheet","insertRule","removeChild","cloneElement","PresenceChild","initial","onExitComplete","presenceAffectsLayout","mode","presenceChildren","newChildrenMap","context","useMemo","isComplete","childId","register","_","useEffect","PresenceContext","O","Provider","Map","getChildKey","AnimatePresence","exitBeforeEnter","forceRender","useContext","LayoutGroupContext","useForceUpdate","forcedRenderCount","setForcedRenderCount","useState","useCallback","deferredForceRender","postRender","filteredChildren","onlyElements","filtered","Children","isValidElement","childrenToRender","exitingChildren","presentChildren","allChildren","isInitialRender","updateChildLookup","clear","Fragment","presentKeys","targetKeys","numPresent","indexOf","component","insertionIndex","exitingComponent","onExit","leftOverKeys","filter","includes","childKey","leftOverKey","presentChildKey","presentChild","react__WEBPACK_IMPORTED_MODULE_0__","createContext","acos","_modifiers_reverse_mjs__WEBPACK_IMPORTED_MODULE_0__","_modifiers_mirror_mjs__WEBPACK_IMPORTED_MODULE_1__","mirrorEasing","reverseEasing","Queue","constructor","order","scheduled","process","stepsOrder","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","steps","reduce","acc","createRenderStep","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","keepAlive","immediate","addToCurrentFrame","queue","frameData","processStep","stepId","processBatch","useManualTiming","performance","wake","frame","cancelFrame","_batcher_mjs__WEBPACK_IMPORTED_MODULE_0__","requestAnimationFrame","_utils_noop_mjs__WEBPACK_IMPORTED_MODULE_1__","clearTime","_frame_mjs__WEBPACK_IMPORTED_MODULE_0__","_utils_GlobalConfig_mjs__WEBPACK_IMPORTED_MODULE_1__","queueMicrotask","isValidProp","MotionConfigContext","transformPagePoint","isStatic","reducedMotion","MotionContext","LazyContext","strict","microtask","cancelMicrotask","batcher","isRefObject","isVariantLabel","isAnimationControls","variantPriorityOrder","variantProps","isControllingVariants","name","isVariantNode","variants","variantLabelsAsDependency","prop","join","featureProps","exit","drag","focus","hover","tap","pan","inView","layout","featureDefinitions","isEnabled","SwitchLayoutGroupContext","motionComponentSymbol","Symbol","for","lowercaseSVGElements","isSVGComponent","scaleCorrectors","isForcedMotionValue","layoutId","utils_transform","translateAlias","y","transformPerspective","numTransforms","getValueAsType","buildHTMLStyles","latestValues","transformTemplate","vars","transformOrigin","hasTransform","hasTransformOrigin","transformIsNone","valueType","j","valueAsType","default","buildTransform","enableHardwareAcceleration","allowTransformNone","transformIsDefault","transformString","transformName","trim","originX","originY","originZ","createHtmlRenderState","copyRawValuesOnly","source","is_motion_value","useHTMLProps","visualState","htmlProps","useStyle","styleProp","assign","useInitialMotionValues","dragListener","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","tabIndex","onTap","onTapStart","whileTap","validMotionProps","isValidMotionProp","shouldForward","require","calcOrigin","units","px","dashKeys","array","camelKeys","buildSVGAttrs","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","isSVGTag","viewBox","attrs","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","scale","buildSVGPath","spacing","useDashCase","createSvgRenderState","tag","toLowerCase","useSVGProps","_isStatic","visualProps","rawStyles","renderHTML","projection","getProjectionStyles","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","setAttribute","camel_to_dash","scrapeMotionValuesFromProps","newValues","scrape_motion_values_scrapeMotionValuesFromProps","targetKey","charAt","toUpperCase","substring","resolveMotionValue","unwrappedValue","resolve_value","toValue","makeUseVisualState","presenceContext","context_PresenceContext","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","resolve_variants","instance","config","svgMotionConfig","useVisualState","read","getBBox","getBoundingClientRect","tagName","htmlMotionConfig","addDomEvent","eventName","handler","passive","addEventListener","removeEventListener","isPrimaryPointer","pointerType","button","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addPointerEvent","createLock","lock","openLock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","node","addHoverEvent","isActive","callbackName","handleEvent","info","whileHover","setActive","isNodeOrChild","parent","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","observerCallbacks","WeakMap","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","shallowCompare","prev","prevLength","reversePriorityOrder","numAnimationTypes","createTypeState","prevResolvedValues","distance","PanSession","handlers","contextWindow","dragSnapToOrigin","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","timeDelta","timestampedPoint","lastPoint","calcLength","axis","isNear","maxDistance","calcAxisDelta","originPoint","mix_number","translate","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","right","bottom","isIdentityScale","hasScale","scaleX","scaleY","has2DTranslate","rotate","rotateX","rotateY","is2DTranslate","applyPointDelta","boxScale","scalePoint","applyAxisDelta","applyBoxDelta","box","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","measureViewportBox","transformBoxPoints","topLeft","bottomRight","getContextWindow","ownerDocument","defaultView","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","pauseAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","aQ","measuredAxis","layoutBox","parseFloat","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","getAnimationState","panSession","getTransformPagePoint","startAnimation","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","dragConstraints","measure","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measurePageBox","rootProjectionNode","viewportBox","scroll","root","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","onDragTransitionEnd","momentumAnimations","startAxisValueAnimation","dragKey","externalMotionValue","scalePositionWithinConstraints","boxProgress","constraints_calcOrigin","sourceLength","targetLength","updateScroll","updateLayout","addListeners","stopPointerListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","motionValue","asyncHandler","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","group","didUpdate","safeToRemove","setOptions","layoutDependency","willUpdate","promote","relegate","stack","getStack","members","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","MeasureLayout","usePresence","borderRadius","applyTo","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","boxShadow","treeScale","projectionDelta","shadow","xScale","yScale","averageScale","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","delta_remove_xKeys","delta_remove_yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEqualsRounded","aspectRatio","NodeStack","y4","scheduleRender","cl","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","elementScaleX","elementScaleY","compareByDepth","depth","FlatTree","isDirty","transformAxes","hiddenVisibility","visibility","create_projection_node_id","projectionFrameData","totalNodes","resolvedTargetDeltas","recalculatedProjection","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","hasTreeAnimated","updateScheduled","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","MotionDebug","record","hasProjected","isVisible","animationProgress","sharedNodes","path","subscription_manager","notifyListeners","args","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","unmount","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetRotation","getTransformTemplate","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","updateWasBlocked","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","S6","preRender","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","needsMeasurement","layoutScroll","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","nodeBox","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","resolvedRelativeTargetAt","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isProjecting","pendingAnimation","prevTreeScaleX","prevTreeScaleY","applyTreeDeltas","treePath","isSharedTransition","treeLength","display","projectionTransform","projectionDeltaWithTransform","prevProjectionTransform","notifyAll","prevRelativeTarget","snapshotLatestValues","mixedValues","relativeLayout","snapshotSource","layoutSource","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacity","opacityExit","borderLabel","followRadius","leadRadius","canMix","animateSingleValue","motionValue$1","es_value","BX","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasRotate","rotateZ","resetValues","setStaticValue","_b","styles","pointerEvents","emptyStyles","valuesToRender","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","userAgentContains","navigator","userAgent","string","roundPoint","DocumentProjectionNode","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode","documentNode","getComputedStyle","position","splitCSSVariableRegex","getVariableValue","token","fallback","parseCSSVariable","match","exec","getPropertyValue","trimmed","is_numerical_string","positionalKeys","isPositionalKey","hasPositionalKey","isNumOrPxType","numbers","Rx","getPosFromMatrix","matrix","pos","split","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","paddingLeft","paddingRight","paddingTop","paddingBottom","translateX","translateY","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","targetBbox","jump","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","hasValue","fromType","C","is_keyframes_target","numKeyframes","fromIndex","removeNonTranslationalTransform","removedTransforms","scrollY","pageYOffset","convertedTarget","is_browser","scrollTo","parseDomVariant","resolveCSSVariables","prefersReducedMotion","hasReducedMotionListener","visualElementStore","featureNames","numFeatures","propEventHandlers","numVariantProps","VisualElement","reducedMotionConfig","features","valueSubscriptions","prevMotionValues","events","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","baseTarget","initialValues","manuallyAnimateOnMount","initialMotionValues","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","matchMedia","motionMediaQuery","setReducedMotionPreferences","matches","addListener","valueIsTransform","removeOnChange","on","latestValue","removeOnRenderRequest","other","sortInstanceNodePosition","loadFeatures","renderedProps","isStrict","preloadedFeatures","initialLayoutGroupConfig","ProjectionNodeConstructor","FeatureConstructor","ProjectionNode","MeasureLayoutComponent","updateFeatures","feature","build","measureInstanceViewportBox","getStaticValue","canMutate","makeTargetAnimatableFromInstance","prevPresenceContext","listener","updateMotionValuesFromProps","nextValue","prevValue","addValue","existingValue","hasAnimated","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","getVariantContext","startAtParent","closestVariantNode","unsubscribe","removeValueFromRenderState","defaultValue","readValue","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","getBaseTarget","valueFromInitial","DOMVisualElement","compareDocumentPosition","P$","GJ","parsed","HTMLVisualElement","defaultType","defaults","A","computedStyle","childSubscription","textContent","SVGVisualElement","getAttribute","create_visual_element_createDomVisualElement","createAnimationState","whileInView","whileDrag","whileFocus","buildResolvedTypeValues","animateChanges","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","prevProp","variantDidChange","shouldAnimateType","handledRemovedValues","definitionList","resolvedValues","allKeys","markToAnimate","blockInitialAnimation","fallbackAnimation","fallbackTarget","shouldAnimate","setAnimateFunction","makeAnimator","updateAnimationControlsSubscription","prevAnimate","prevIsPresent","exitAnimation","hasEnteredView","isInView","startObserver","viewport","margin","rootMargin","amount","once","threshold","onIntersectionUpdate","isIntersecting","onViewportEnter","onViewportLeave","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","rootObservers","JSON","stringify","IntersectionObserver","observe","unobserve","hasOptionsChanged","hasViewportOptionChanged","prevViewport","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startInfo","isPressing","endPointerPress","endEvent","endInfo","checkPressEnd","onTapCancel","globalTapTarget","removePointerUpListener","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","handleKeydown","keydownEvent","handleKeyup","keyupEvent","removeKeydownListener","handleBlur","removeBlurListener","removePointerListener","removeFocusListener","onFocus","isFocusVisible","onBlur","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","removeGroupControls","dragControls","motion","createMotionProxy","createConfig","customMotionComponentConfig","motion_createMotionComponent","createVisualElement","useRender","ForwardRefComponent","forwardRef","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","useVisualElement","lazyContext","visualElementRef","renderer","wantsHandoff","HandoffComplete","Proxy","componentCache","_target","create_config_createDomMotionConfig","forwardMotionProps","baseConfig","createUseRender","useVisualProps","filteredProps","filterProps","isDom","elementProps","renderedChildren","camelToDash","str","replace","checkStringStartsWith","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","getAnimatableNone","defaultValueType","_defaults_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_1__","_value_types_complex_index_mjs__WEBPACK_IMPORTED_MODULE_2__","defaultValueTypes","_number_mjs__WEBPACK_IMPORTED_MODULE_0__","_value_types_color_index_mjs__WEBPACK_IMPORTED_MODULE_1__","backgroundColor","outlineColor","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","_value_types_complex_filter_mjs__WEBPACK_IMPORTED_MODULE_2__","WebkitFilter","getDefaultValueType","dimensionValueTypes","RW","vw","vh","findDimensionValueType","l","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","radius","maxWidth","maxHeight","padding","marginTop","marginRight","marginBottom","marginLeft","bA","scaleZ","skew","skewX","skewY","translateZ","perspective","Fq","$C","zIndex","fillOpacity","strokeOpacity","numOctaves","testValueType","transformPropOrder","transformProps","resolveVariant","_resolve_variants_mjs__WEBPACK_IMPORTED_MODULE_0__","getCurrent","resolveVariantFromProps","currentValues","valueTypes","findValueType","setTarget","setVariants","variantLabels","reversedLabels","setValues","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","getOrigin","transitionOrigin","getOriginFromTransition","MotionGlobalConfig","addUniqueItem","item","removeItem","warning","_noop_mjs__WEBPACK_IMPORTED_MODULE_0__","invariant","isBrowser","isNumericalString","isZeroValueString","any","combineFunctions","transformers","toFromDifference","isCustomValue","resolveFinalValueInKeyframes","_animation_utils_is_keyframes_target_mjs__WEBPACK_IMPORTED_MODULE_0__","SubscriptionManager","subscriptions","_array_mjs__WEBPACK_IMPORTED_MODULE_0__","numSubscriptions","getSize","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","useConstant","init","useIsomorphicLayoutEffect","_is_browser_mjs__WEBPACK_IMPORTED_MODULE_1__","useLayoutEffect","velocityPerSecond","frameDuration","isFloat","collectMotionValues","MotionValue","version","canTrackVelocity","updateAndNotify","_frameloop_sync_time_mjs__WEBPACK_IMPORTED_MODULE_0__","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","prevFrameValue","prevUpdatedAt","onChange","subscription","_utils_subscription_manager_mjs__WEBPACK_IMPORTED_MODULE_1__","_frameloop_frame_mjs__WEBPACK_IMPORTED_MODULE_2__","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","getPrevious","_utils_velocity_per_second_mjs__WEBPACK_IMPORTED_MODULE_3__","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","_utils_mjs__WEBPACK_IMPORTED_MODULE_0__","parseInt","_rgba_mjs__WEBPACK_IMPORTED_MODULE_1__","alpha$1","_numbers_units_mjs__WEBPACK_IMPORTED_MODULE_1__","_utils_mjs__WEBPACK_IMPORTED_MODULE_2__","Nw","_numbers_index_mjs__WEBPACK_IMPORTED_MODULE_3__","_rgba_mjs__WEBPACK_IMPORTED_MODULE_0__","_hex_mjs__WEBPACK_IMPORTED_MODULE_1__","_hsla_mjs__WEBPACK_IMPORTED_MODULE_2__","_utils_mjs__WEBPACK_IMPORTED_MODULE_3__","HD","clampRgbUnit","_utils_clamp_mjs__WEBPACK_IMPORTED_MODULE_0__","rgbUnit","_numbers_index_mjs__WEBPACK_IMPORTED_MODULE_1__","isColorString","testProp","mj","splitColor","aName","bName","cName","KP","maxDefaults","applyDefaultFilter","unit","functionRegex","_index_mjs__WEBPACK_IMPORTED_MODULE_1__","functions","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","toString","matchedValues","parsedValue","_color_index_mjs__WEBPACK_IMPORTED_MODULE_1__","tokenised","parseComplexValue","numSections","convertNumbersToZero","dA","transformer","createUnitType","endsWith","degrees","progressPercentage","sanitize","floatRegex","colorRegex","singleColorRegex","isString","isWillChangeMotionValue","_utils_is_motion_value_mjs__WEBPACK_IMPORTED_MODULE_0__","isMotionValue"],"sourceRoot":""}