{"version":3,"file":"js/framer-motion.chunk.js","mappings":"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UAAU6B,OAAOX,KAAKrB,MAEbA,KAAKskB,MACjBtkB,KAAK+T,QAAQgS,aAAcZ,GAAoBzmB,IAAIpB,GAA0BA,EAAnB+nB,GAAY/nB,GAAY0C,KAAKskB,MAAMhnB,GAErG,EACOkoB,CACX,CA7EqC,CA6EnCzF,IAWF,IA0DIiG,GAAc,IAAI9lB,IA1DJ,CACd,UACA,SACA,WACA,OACA,OACA,UACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,SACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,WACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,SACA,SACA,OACA,WACA,QACA,MACA,SAUJ,SAAS+lB,GAAeC,GACpB,MAA4B,iBAAdA,GAA0BF,GAAYtnB,IAAIwnB,EAC5D,CAKA,IAAIC,IAAkB,IAAAC,eAAc,MAEhCC,IAAgB,IAAAD,eAAc,CAC9BE,eAAgB,CAAC,IAErB,SAASC,KACL,OAAO,IAAAC,YAAWH,IAAeC,cACrC,CACA,SAASG,KACL,OAAO,IAAAD,YAAWH,IAAevX,aACrC,CAOA,IAuCI4X,GAAmB,IAAIxmB,IAAI,CAC3B,UACA,UACA,OACA,QACA,WACA,aACA,oBACA,kBACA,SACA,UACA,SACA,WACA,4BACA,sBACA,mBACA,sBACA,WACA,cACA,SACA,YACA,2BACA,kBACA,sBACA,OACA,eACA,eACA,kBACA,oBACA,SACA,SACA,cACA,eACA,kBACA,iBACA,QACA,aACA,WACA,oBACA,QACA,aACA,cACA,aACA,WACA,aACA,iBAUJ,SAASymB,GAAkBrpB,GACvB,OAAOopB,GAAiBhoB,IAAIpB,EAChC,CAEA,IAAIspB,GAAc,SAAUtpB,GAAO,OAAQqpB,GAAkBrpB,EAAM,EAcnE,IACI,IAAIupB,GAAuB,WAC3BD,GAAc,SAAUtpB,GAEpB,OAAIA,EAAImI,WAAW,OACPkhB,GAAkBrpB,GAGnBupB,GAAqBvpB,EAEp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","sources":["webpack:///./node_modules/framer-motion/node_modules/framesync/dist/framesync.es.js","webpack:///./node_modules/framer-motion/dist/framer-motion.es.js","webpack:///./node_modules/framer-motion/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/framer-motion/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js"],"sourcesContent":["import { invariant } from 'hey-listen';\n\nvar prevTime = 0;\nvar onNextFrame = typeof window !== 'undefined' && window.requestAnimationFrame !== undefined ? function (callback) {\n return window.requestAnimationFrame(callback);\n} : function (callback) {\n var timestamp = Date.now();\n var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));\n prevTime = timestamp + timeToCall;\n setTimeout(function () {\n return callback(prevTime);\n }, timeToCall);\n};\n\nvar createStep = function (setRunNextFrame) {\n var processToRun = [];\n var processToRunNextFrame = [];\n var numThisFrame = 0;\n var isProcessing = false;\n var i = 0;\n var cancelled = new WeakSet();\n var toKeepAlive = new WeakSet();\n var renderStep = {\n cancel: function (process) {\n var indexOfCallback = processToRunNextFrame.indexOf(process);\n cancelled.add(process);\n if (indexOfCallback !== -1) {\n processToRunNextFrame.splice(indexOfCallback, 1);\n }\n },\n process: function (frame) {\n var _a;\n isProcessing = true;\n _a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];\n processToRunNextFrame.length = 0;\n numThisFrame = processToRun.length;\n if (numThisFrame) {\n var process_1;\n for (i = 0; i < numThisFrame; i++) {\n process_1 = processToRun[i];\n process_1(frame);\n if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {\n renderStep.schedule(process_1);\n setRunNextFrame(true);\n }\n }\n }\n isProcessing = false;\n },\n schedule: function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n invariant(typeof process === \"function\", \"Argument must be a function\");\n var addToCurrentBuffer = immediate && isProcessing;\n var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;\n cancelled.delete(process);\n if (keepAlive) toKeepAlive.add(process);\n if (buffer.indexOf(process) === -1) {\n buffer.push(process);\n if (addToCurrentBuffer) numThisFrame = processToRun.length;\n }\n }\n };\n return renderStep;\n};\n\nvar maxElapsed = 40;\nvar defaultElapsed = 1 / 60 * 1000;\nvar useDefaultElapsed = true;\nvar willRunNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n delta: 0,\n timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar setWillRunNextFrame = function (willRun) {\n return willRunNextFrame = willRun;\n};\nvar steps = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = createStep(setWillRunNextFrame);\n return acc;\n}, {});\nvar sync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n var step = steps[key];\n acc[key] = function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n if (!willRunNextFrame) startLoop();\n step.schedule(process, keepAlive, immediate);\n return process;\n };\n return acc;\n}, {});\nvar cancelSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nvar processStep = function (stepId) {\n return steps[stepId].process(frame);\n};\nvar processFrame = function (timestamp) {\n willRunNextFrame = false;\n frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n if (!useDefaultElapsed) defaultElapsed = frame.delta;\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (willRunNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nvar startLoop = function () {\n willRunNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing) onNextFrame(processFrame);\n};\nvar getFrameData = function () {\n return frame;\n};\n\nexport default sync;\nexport { cancelSync, getFrameData };\n","import { __values, __read, __assign, __rest, __spread, __extends } from 'tslib';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { velocityPerSecond, cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut, inertia, animate as animate$1, mix, clamp, distance, progress, pipe, interpolate, wrap } from 'popmotion';\nimport { invariant, warning } from 'hey-listen';\nimport { complex, number, color, px, percent, degrees, vw, vh, scale, alpha, progressPercentage } from 'style-value-types';\nimport React, { useRef, createContext, useContext, useEffect, createElement, useMemo, useLayoutEffect, forwardRef, Fragment, Component as Component$1, useCallback, useState, cloneElement, Children, isValidElement } from 'react';\n\nvar isRefObject = function (ref) {\n return typeof ref === \"object\" && ref.hasOwnProperty(\"current\");\n};\n\n/**\n * A generic subscription manager.\n */\nvar SubscriptionManager = /** @class */ (function () {\n function SubscriptionManager() {\n this.subscriptions = new Set();\n }\n SubscriptionManager.prototype.add = function (handler) {\n var _this = this;\n this.subscriptions.add(handler);\n return function () { return void _this.subscriptions.delete(handler); };\n };\n SubscriptionManager.prototype.notify = function (\n /**\n * Using ...args would be preferable but it's array creation and this\n * might be fired every frame.\n */\n a, b, c) {\n var e_1, _a;\n if (!this.subscriptions.size)\n return;\n try {\n for (var _b = __values(this.subscriptions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n handler(a, b, c);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n SubscriptionManager.prototype.clear = function () {\n this.subscriptions.clear();\n };\n return SubscriptionManager;\n}());\n\nvar isFloat = function (value) {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nvar MotionValue = /** @class */ (function () {\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 function MotionValue(init) {\n var _this = this;\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\n this.updateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n *\n * @internal\n */\n this.renderSubscribers = new SubscriptionManager();\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 this.updateAndNotify = function (v, render) {\n if (render === void 0) { render = true; }\n _this.prev = _this.current;\n _this.current = v;\n if (_this.prev !== _this.current) {\n _this.updateSubscribers.notify(_this.current);\n }\n if (render) {\n _this.renderSubscribers.notify(_this.current);\n }\n // Update timestamp\n var _a = getFrameData(), delta = _a.delta, timestamp = _a.timestamp;\n if (_this.lastUpdated !== timestamp) {\n _this.timeDelta = delta;\n _this.lastUpdated = timestamp;\n sync.postRender(_this.scheduleVelocityCheck);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = function () { return sync.postRender(_this.velocityCheck); };\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = function (_a) {\n var timestamp = _a.timestamp;\n if (timestamp !== _this.lastUpdated) {\n _this.prev = _this.current;\n }\n };\n this.set(init, false);\n this.canTrackVelocity = isFloat(this.current);\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 * @library\n *\n * ```jsx\n * function 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.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @motion\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.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @internalremarks\n *\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n *\n * ```jsx\n * useOnChange(x, () => {})\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 * @public\n */\n MotionValue.prototype.onChange = function (subscription) {\n return this.updateSubscribers.add(subscription);\n };\n MotionValue.prototype.clearListeners = function () {\n this.updateSubscribers.clear();\n };\n /**\n * Adds a function that will be notified when the `MotionValue` requests a render.\n *\n * @param subscriber - A function that's provided the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @internal\n */\n MotionValue.prototype.onRenderRequest = function (subscription) {\n // Render immediately\n subscription(this.get());\n return this.renderSubscribers.add(subscription);\n };\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n MotionValue.prototype.attach = function (passiveEffect) {\n this.passiveEffect = passiveEffect;\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 MotionValue.prototype.set = function (v, render) {\n if (render === void 0) { render = true; }\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n };\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n MotionValue.prototype.get = function () {\n return this.current;\n };\n /**\n * @public\n */\n MotionValue.prototype.getPrevious = function () {\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 MotionValue.prototype.getVelocity = function () {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\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 MotionValue.prototype.start = function (animation) {\n var _this = this;\n this.stop();\n return new Promise(function (resolve) {\n _this.stopAnimation = animation(resolve);\n }).then(function () { return _this.clearAnimation(); });\n };\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n MotionValue.prototype.stop = function () {\n if (this.stopAnimation)\n this.stopAnimation();\n this.clearAnimation();\n };\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n MotionValue.prototype.isAnimating = function () {\n return !!this.stopAnimation;\n };\n MotionValue.prototype.clearAnimation = function () {\n this.stopAnimation = null;\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 MotionValue.prototype.destroy = function () {\n this.updateSubscribers.clear();\n this.renderSubscribers.clear();\n this.stop();\n };\n return MotionValue;\n}());\n/**\n * @internal\n */\nfunction motionValue(init) {\n return new MotionValue(init);\n}\n\n/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nvar secondsToMilliseconds = function (seconds) { return seconds * 1000; };\n\nvar easingLookup = {\n linear: linear,\n easeIn: easeIn,\n easeInOut: easeInOut,\n easeOut: easeOut,\n circIn: circIn,\n circInOut: circInOut,\n circOut: circOut,\n backIn: backIn,\n backInOut: backInOut,\n backOut: backOut,\n anticipate: anticipate,\n bounceIn: bounceIn,\n bounceInOut: bounceInOut,\n bounceOut: bounceOut,\n};\nvar easingDefinitionToFunction = function (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 var _a = __read(definition, 4), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];\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};\nvar isEasingArray = function (ease) {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\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 */\nvar isAnimatable = function (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) && // 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\nvar isKeyframesTarget = function (v) {\n return Array.isArray(v);\n};\n\nvar underDampedSpring = function () { return ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restDelta: 0.5,\n restSpeed: 10,\n}); };\nvar overDampedSpring = function (to) { return ({\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 100 : 30,\n restDelta: 0.01,\n restSpeed: 10,\n}); };\nvar linearTween = function () { return ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n}); };\nvar keyframes = function (values) { return ({\n type: \"keyframes\",\n duration: 0.8,\n values: values,\n}); };\nvar defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: overDampedSpring,\n scaleY: overDampedSpring,\n scale: overDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: overDampedSpring,\n};\nvar getDefaultTransition = function (valueKey, to) {\n var transitionFactory;\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n }\n else {\n transitionFactory =\n defaultTransitions[valueKey] || defaultTransitions.default;\n }\n return __assign({ to: to }, transitionFactory(to));\n};\n\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(_a) {\n var when = _a.when, delay = _a.delay, delayChildren = _a.delayChildren, staggerChildren = _a.staggerChildren, staggerDirection = _a.staggerDirection, repeat = _a.repeat, repeatType = _a.repeatType, repeatDelay = _a.repeatDelay, from = _a.from, transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\", \"repeat\", \"repeatType\", \"repeatDelay\", \"from\"]);\n return !!Object.keys(transition).length;\n}\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions(_a) {\n var yoyo = _a.yoyo, loop = _a.loop, flip = _a.flip, ease = _a.ease, times = _a.times, transition = __rest(_a, [\"yoyo\", \"loop\", \"flip\", \"ease\", \"times\"]);\n var options = __assign({}, transition);\n if (times) {\n options.offset = times;\n }\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n if (transition.duration)\n options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay)\n options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n if (ease) {\n options[\"ease\"] = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n if (transition.type === \"tween\")\n options.type = \"keyframes\";\n if (yoyo) {\n options.repeatType = \"reverse\";\n }\n else if (loop) {\n options.repeatType = \"loop\";\n }\n else if (flip) {\n options.repeatType = \"mirror\";\n }\n options.repeat = loop || yoyo || flip || transition.repeat;\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n if (transition.type !== \"spring\")\n options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n var _a, _b, _c, _d, _e;\n return ((_e = (_d = (_b = (_a = transition[key]) === null || _a === void 0 ? void 0 : _a.delay) !== null && _b !== void 0 ? _b : (_c = transition[\"default\"]) === null || _c === void 0 ? void 0 : _c.delay) !== null && _d !== void 0 ? _d : transition.delay) !== null && _e !== void 0 ? _e : 0);\n}\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = __spread(options.to);\n options.to[0] = options.from;\n }\n return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n var _a;\n if (Array.isArray(options.to)) {\n (_a = transition.duration) !== null && _a !== void 0 ? _a : (transition.duration = 0.8);\n }\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n if (!isTransitionDefined(transition)) {\n transition = __assign(__assign({}, transition), getDefaultTransition(key, options.to));\n }\n return __assign(__assign({}, options), convertTransitionToAnimationOptions(transition));\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n var _a;\n var valueTransition = getValueTransition(transition, key);\n var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get();\n var isTargetAnimatable = isAnimatable(key, target);\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n origin = complex.getAnimatableNone(target);\n }\n var isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, \"You are trying to animate \" + key + \" from \\\"\" + origin + \"\\\" to \\\"\" + target + \"\\\". \" + origin + \" is not an animatable value - to enable this animation set \" + origin + \" to a value animatable to \" + target + \" via the `style` property.\");\n function start() {\n var options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete: onComplete,\n onUpdate: function (v) { return value.set(v); },\n };\n return valueTransition.type === \"inertia\" ||\n valueTransition.type === \"decay\"\n ? inertia(__assign(__assign({}, options), valueTransition))\n : animate$1(__assign(__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), { onUpdate: function (v) {\n var _a;\n options.onUpdate(v);\n (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v);\n }, onComplete: function () {\n var _a;\n options.onComplete();\n (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n } }));\n }\n function set() {\n var _a;\n value.set(target);\n onComplete();\n (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n return { stop: function () { } };\n }\n return !isOriginAnimatable ||\n !isTargetAnimatable ||\n valueTransition.type === false\n ? set\n : start;\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n *\n * @internal\n */\nfunction startAnimation(key, value, target, transition) {\n if (transition === void 0) { transition = {}; }\n return value.start(function (onComplete) {\n var delayTimer;\n var controls;\n var animation = getAnimation(key, value, target, transition, onComplete);\n var delay = getDelayFromTransition(transition, key);\n var start = function () { return (controls = animation()); };\n if (delay) {\n delayTimer = setTimeout(start, secondsToMilliseconds(delay));\n }\n else {\n start();\n }\n return function () {\n clearTimeout(delayTimer);\n controls === null || controls === void 0 ? void 0 : controls.stop();\n };\n });\n}\n\nvar isCustomValue = function (v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = function (v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nvar isNumericalString = function (v) { return /^\\-?\\d*\\.?\\d+$/.test(v); };\n\n/**\n * ValueType for \"auto\"\n */\nvar auto = {\n test: function (v) { return v === \"auto\"; },\n parse: function (v) { return v; },\n};\n/**\n * ValueType for ints\n */\nvar int = __assign(__assign({}, number), { transform: Math.round });\n/**\n * A map of default value types for common values\n */\nvar defaultValueTypes = {\n // Color props\n color: 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 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: 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/**\n * A list of value types commonly used for dimensions\n */\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a provided value against a ValueType\n */\nvar testValueType = function (v) { return function (type) { return type.test(v); }; };\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nvar findDimensionValueType = function (v) {\n return dimensionValueTypes.find(testValueType(v));\n};\n/**\n * A list of all ValueTypes\n */\nvar valueTypes = __spread(dimensionValueTypes, [color, complex]);\n/**\n * Tests a value against the list of ValueTypes\n */\nvar findValueType = function (v) { return valueTypes.find(testValueType(v)); };\n/**\n * Gets the default ValueType for the provided value key\n */\nvar getDefaultValueType = function (key) { return defaultValueTypes[key]; };\n/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nvar getValueAsType = function (value, type) {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\n/**\n * Decides if the supplied variable is a function that returns a variant\n */\nfunction isVariantResolver(variant) {\n return typeof variant === \"function\";\n}\n/**\n * Decides if the supplied variable is an array of variant labels\n */\nfunction isVariantLabels(v) {\n return Array.isArray(v);\n}\n/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || isVariantLabels(v);\n}\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n var current = {};\n visualElement.forEachValue(function (value, key) { return (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 var velocity = {};\n visualElement.forEachValue(function (value, key) { return (velocity[key] = value.getVelocity()); });\n return velocity;\n}\n/**\n * Resovles a variant if it's a variant resolver\n */\nfunction resolveVariant(visualElement, variant, custom) {\n var resolved = {};\n if (!variant) {\n return resolved;\n }\n else if (isVariantResolver(variant)) {\n resolved = variant(custom !== null && custom !== void 0 ? custom : visualElement.getVariantPayload(), getCurrent(visualElement), getVelocity(visualElement));\n }\n else {\n resolved = variant;\n }\n return __assign({ transition: visualElement.getDefaultTransition() }, resolved);\n}\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, _a) {\n var priority = (_a === void 0 ? {} : _a).priority;\n var _b = visualElement.makeTargetAnimatable(resolveVariant(visualElement, definition), false), _c = _b.transitionEnd, transitionEnd = _c === void 0 ? {} : _c, transition = _b.transition, target = __rest(_b, [\"transitionEnd\", \"transition\"]);\n target = __assign(__assign({}, target), transitionEnd);\n for (var key in target) {\n var value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n if (!priority)\n visualElement.baseTarget[key] = value;\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n var reversedLabels = __spread(variantLabels).reverse();\n reversedLabels.forEach(function (key) {\n var _a;\n setTarget(visualElement, visualElement.getVariant(key));\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n setVariants(child, variantLabels);\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 var _c;\n var newValueKeys = Object.keys(target).filter(function (key) { return !visualElement.hasValue(key); });\n var numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (var i = 0; i < numNewValues; i++) {\n var key = newValueKeys[i];\n var targetValue = target[key];\n var value = null;\n // If this is a keyframes value, we can attempt to use the first value in the\n // array as that's going to be the first value of the animation anyway\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n // If it isn't a keyframes or the first keyframes value was set as `null`, read the\n // value from the DOM. It might be worth investigating whether to check props (for SVG)\n // or props.style (for HTML) if the value exists there before attempting to read.\n if (value === null) {\n var readValue = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readNativeValue(key);\n value = readValue !== undefined ? readValue : target[key];\n invariant(value !== null, \"No initial value for \\\"\" + key + \"\\\" can be inferred. Ensure an initial value for \\\"\" + key + \"\\\" is defined on the component.\");\n }\n if (typeof value === \"string\" && isNumericalString(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 // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n value = complex.getAnimatableNone(targetValue);\n }\n visualElement.addValue(key, motionValue(value));\n (_b = (_c = origin)[key]) !== null && _b !== void 0 ? _b : (_c[key] = value);\n visualElement.baseTarget[key] = value;\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n var valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n var _a, _b;\n var origin = {};\n for (var key in target) {\n origin[key] = (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get();\n }\n return origin;\n}\n\n/**\n * @internal\n */\nfunction startVisualElementAnimation(visualElement, definition, opts) {\n if (opts === void 0) { opts = {}; }\n if (opts.priority) {\n visualElement.activeOverrides.add(opts.priority);\n }\n visualElement.resetIsAnimating(opts.priority);\n var animation;\n if (isVariantLabels(definition)) {\n animation = animateVariantLabels(visualElement, definition, opts);\n }\n else if (isVariantLabel(definition)) {\n animation = animateVariant(visualElement, definition, opts);\n }\n else {\n animation = animateTarget(visualElement, definition, opts);\n }\n visualElement.onAnimationStart();\n return animation.then(function () { return visualElement.onAnimationComplete(); });\n}\nfunction animateVariantLabels(visualElement, variantLabels, opts) {\n var animations = __spread(variantLabels).reverse()\n .map(function (label) { return animateVariant(visualElement, label, opts); });\n return Promise.all(animations);\n}\nfunction animateVariant(visualElement, label, opts) {\n var _a;\n var priority = (opts && opts.priority) || 0;\n var variantDefinition = visualElement.getVariant(label);\n var variant = resolveVariant(visualElement, variantDefinition, opts && opts.custom);\n var transition = variant.transition || {};\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 var getAnimation = variantDefinition\n ? function () { return animateTarget(visualElement, variant, opts); }\n : function () { return 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 var getChildrenAnimations = ((_a = visualElement.variantChildrenOrder) === null || _a === void 0 ? void 0 : _a.size) ? function (forwardDelay) {\n if (forwardDelay === void 0) { forwardDelay = 0; }\n var _a = transition.delayChildren, delayChildren = _a === void 0 ? 0 : _a;\n return animateChildren(visualElement, label, delayChildren + forwardDelay, transition.staggerChildren, transition.staggerDirection, priority, opts === null || opts === void 0 ? void 0 : opts.custom);\n }\n : function () { return 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 var when = transition.when;\n if (when) {\n var _b = __read(when === \"beforeChildren\"\n ? [getAnimation, getChildrenAnimations]\n : [getChildrenAnimations, getAnimation], 2), first = _b[0], last = _b[1];\n return first().then(last);\n }\n else {\n return Promise.all([getAnimation(), getChildrenAnimations(opts === null || opts === void 0 ? void 0 : opts.delay)]);\n }\n}\nfunction animateChildren(visualElement, variantLabel, delayChildren, staggerChildren, staggerDirection, priority, custom) {\n if (delayChildren === void 0) { delayChildren = 0; }\n if (staggerChildren === void 0) { staggerChildren = 0; }\n if (staggerDirection === void 0) { staggerDirection = 1; }\n if (priority === void 0) { priority = 0; }\n var animations = [];\n var maxStaggerDuration = (visualElement.variantChildrenOrder.size - 1) * staggerChildren;\n var generateStaggerDuration = staggerDirection === 1\n ? function (i) { return i * staggerChildren; }\n : function (i) { return maxStaggerDuration - i * staggerChildren; };\n Array.from(visualElement.variantChildrenOrder).forEach(function (child, i) {\n var animation = animateVariant(child, variantLabel, {\n priority: priority,\n delay: delayChildren + generateStaggerDuration(i),\n custom: custom,\n });\n animations.push(animation);\n });\n return Promise.all(animations);\n}\nfunction stopAnimation(visualElement) {\n visualElement.forEachValue(function (value) { return value.stop(); });\n}\nfunction animateTarget(visualElement, definition, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.delay, delay = _c === void 0 ? 0 : _c, _d = _b.priority, priority = _d === void 0 ? 0 : _d, transitionOverride = _b.transitionOverride, custom = _b.custom;\n var targetAndTransition = resolveVariant(visualElement, definition, custom);\n if (transitionOverride)\n targetAndTransition.transition = transitionOverride;\n var _e = visualElement.makeTargetAnimatable(targetAndTransition), transitionEnd = _e.transitionEnd, transition = _e.transition, target = __rest(_e, [\"transitionEnd\", \"transition\"]);\n if (priority)\n visualElement.resolvedOverrides[priority] = target;\n var animations = [];\n for (var key in target) {\n var value = visualElement.getValue(key);\n if (!value || !target || target[key] === undefined)\n continue;\n var valueTarget = target[key];\n if (!priority) {\n visualElement.baseTarget[key] = resolveFinalValueInKeyframes(valueTarget);\n }\n if (visualElement.isAnimating.has(key))\n continue;\n visualElement.isAnimating.add(key);\n animations.push(startAnimation(key, value, valueTarget, __assign({ delay: delay }, transition)));\n }\n var allAnimations = Promise.all(animations);\n return transitionEnd\n ? allAnimations.then(function () {\n return setTarget(visualElement, transitionEnd, { priority: priority });\n })\n : allAnimations;\n}\n\nfunction setOverride(visualElement, definition, index) {\n var _a;\n visualElement.overrides[index] = definition;\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n setOverride(child, definition, index);\n });\n}\nfunction startOverride(visualElement, index) {\n var override = visualElement.overrides[index];\n if (override) {\n return startVisualElementAnimation(visualElement, override, {\n priority: index,\n });\n }\n}\nfunction clearOverride(visualElement, index) {\n var _a;\n (_a = visualElement.variantChildrenOrder) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n clearOverride(child, index);\n });\n var override = visualElement.overrides[index];\n if (!override)\n return;\n visualElement.activeOverrides.delete(index);\n var highest = getHighestOverridePriortiy(visualElement);\n visualElement.resetIsAnimating();\n if (highest) {\n var highestOverride = visualElement.overrides[highest];\n highestOverride && startOverride(visualElement, highest);\n }\n // Figure out which remaining values were affected by the override and animate those\n var overrideTarget = visualElement.resolvedOverrides[index];\n if (!overrideTarget)\n return;\n var remainingValues = {};\n for (var key in visualElement.baseTarget) {\n if (overrideTarget[key] !== undefined) {\n remainingValues[key] = visualElement.baseTarget[key];\n }\n }\n visualElement.onAnimationStart();\n animateTarget(visualElement, remainingValues).then(function () {\n visualElement.onAnimationComplete();\n });\n}\nfunction getHighestOverridePriortiy(visualElement) {\n if (!visualElement.activeOverrides.size)\n return 0;\n return Math.max.apply(Math, __spread(Array.from(visualElement.activeOverrides)));\n}\n\n/**\n * VisualElement is an abstract class that provides a generic animation-optimised interface to the\n * underlying renderer.\n *\n * Currently many features interact directly with HTMLVisualElement/SVGVisualElement\n * but the idea is we can create, for instance, a ThreeVisualElement that extends\n * VisualElement and we can quickly offer all the same features.\n */\nvar VisualElement = /** @class */ (function () {\n function VisualElement(parent, ref) {\n var _this = this;\n // An iterable list of current children\n this.children = new Set();\n /**\n * A set of values that we animate back to when a value is cleared of all overrides.\n */\n this.baseTarget = {};\n /**\n * A series of target overrides that we can animate to/from when overrides are set/cleared.\n */\n this.overrides = [];\n /**\n * A series of target overrides as they were originally resolved.\n */\n this.resolvedOverrides = [];\n /**\n * A Set of currently active override indexes\n */\n this.activeOverrides = new Set();\n /**\n * A Set of value keys that are currently animating.\n */\n this.isAnimating = new Set();\n // The latest resolved MotionValues\n this.latest = {};\n // A map of MotionValues used to animate this element\n this.values = new Map();\n // Unsubscription callbacks for MotionValue subscriptions\n this.valueSubscriptions = new Map();\n // A configuration for this VisualElement, each derived class can extend this.\n this.config = {};\n this.isMounted = false;\n // A pre-bound call to the user-provided `onUpdate` callback. This won't\n // be called more than once per frame.\n this.update = function () { return _this.config.onUpdate(_this.latest); };\n // Pre-bound version of render\n this.triggerRender = function () { return _this.render(); };\n // This function gets passed to the rendered component's `ref` prop\n // and is used to mount/unmount the VisualElement\n this.ref = function (element) {\n element ? _this.mount(element) : _this.unmount();\n if (!_this.externalRef)\n return;\n if (typeof _this.externalRef === \"function\") {\n _this.externalRef(element);\n }\n else if (isRefObject(_this.externalRef)) {\n _this.externalRef.current = element;\n }\n };\n // Create a relationship with the provided parent.\n this.parent = parent;\n this.rootParent = parent ? parent.rootParent : this;\n this.treePath = parent ? __spread(parent.treePath, [parent]) : [];\n // Calculate the depth of this node in the VisualElement graph\n this.depth = parent ? parent.depth + 1 : 0;\n // A reference to any externally-defined React ref. This might live better\n // outside the VisualElement and be handled in a hook.\n this.externalRef = ref;\n }\n VisualElement.prototype.getVariantPayload = function () {\n return this.config.custom;\n };\n VisualElement.prototype.getVariant = function (label) {\n var _a;\n return (_a = this.config.variants) === null || _a === void 0 ? void 0 : _a[label];\n };\n VisualElement.prototype.addVariantChild = function (visualElement) {\n if (!this.variantChildren)\n this.variantChildren = new Set();\n this.variantChildren.add(visualElement);\n };\n VisualElement.prototype.addVariantChildOrder = function (visualElement) {\n if (!this.variantChildrenOrder)\n this.variantChildrenOrder = new Set();\n this.variantChildrenOrder.add(visualElement);\n };\n VisualElement.prototype.onAnimationStart = function () {\n var _a, _b;\n (_b = (_a = this.config).onAnimationStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n VisualElement.prototype.onAnimationComplete = function () {\n var _a, _b;\n this.isMounted && ((_b = (_a = this.config).onAnimationComplete) === null || _b === void 0 ? void 0 : _b.call(_a));\n };\n VisualElement.prototype.getDefaultTransition = function () {\n return this.config.transition;\n };\n VisualElement.prototype.resetIsAnimating = function (priority) {\n var _a;\n if (priority === void 0) { priority = 0; }\n this.isAnimating.clear();\n // If this isn't the highest priority gesture, block the animation\n // of anything that's currently being animated\n if (priority < getHighestOverridePriortiy(this)) {\n this.checkOverrideIsAnimating(priority);\n }\n (_a = this.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n return child.resetIsAnimating(priority);\n });\n };\n VisualElement.prototype.checkOverrideIsAnimating = function (priority) {\n var numOverrides = this.overrides.length;\n for (var i = priority + 1; i < numOverrides; i++) {\n var resolvedOverride = this.resolvedOverrides[i];\n if (resolvedOverride) {\n for (var key in resolvedOverride) {\n this.isAnimating.add(key);\n }\n }\n }\n };\n VisualElement.prototype.subscribe = function (child) {\n var _this = this;\n this.children.add(child);\n return function () { return _this.children.delete(child); };\n };\n // Check whether this element has a MotionValue of the provided key\n VisualElement.prototype.hasValue = function (key) {\n return this.values.has(key);\n };\n // Add a MotionValue\n VisualElement.prototype.addValue = function (key, value) {\n if (this.hasValue(key))\n this.removeValue(key);\n this.values.set(key, value);\n this.setSingleStaticValue(key, value.get());\n this.subscribeToValue(key, value);\n };\n // Remove a MotionValue\n VisualElement.prototype.removeValue = function (key) {\n var _a;\n (_a = this.valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n this.valueSubscriptions.delete(key);\n this.values.delete(key);\n delete this.latest[key];\n };\n VisualElement.prototype.getValue = function (key, defaultValue) {\n var value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = new MotionValue(defaultValue);\n this.addValue(key, value);\n }\n return value;\n };\n // Iterate over all MotionValues\n VisualElement.prototype.forEachValue = function (callback) {\n this.values.forEach(callback);\n };\n // Get the underlying rendered instance of this VisualElement. For instance in\n // HTMLVisualElement this will be a HTMLElement.\n VisualElement.prototype.getInstance = function () {\n return this.element;\n };\n VisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) { config = {}; }\n this.config = __assign({}, config);\n };\n // Set a single `latest` value\n VisualElement.prototype.setSingleStaticValue = function (key, value) {\n this.latest[key] = value;\n };\n // Statically set values to `latest` without needing a MotionValue\n VisualElement.prototype.setStaticValues = function (values, value) {\n if (typeof values === \"string\") {\n this.setSingleStaticValue(values, value);\n }\n else {\n for (var key in values) {\n this.setSingleStaticValue(key, values[key]);\n }\n }\n };\n VisualElement.prototype.scheduleRender = function () {\n sync.render(this.triggerRender, false, true);\n };\n VisualElement.prototype.scheduleUpdateLayoutDelta = function () {\n sync.preRender(this.rootParent.updateLayoutDelta, false, true);\n };\n VisualElement.prototype.subscribeToValue = function (key, value) {\n var _this = this;\n var onChange = function (latest) {\n _this.setSingleStaticValue(key, latest);\n // Schedule onUpdate if we have an onUpdate listener and the component has mounted\n _this.element &&\n _this.config.onUpdate &&\n sync.update(_this.update, false, true);\n };\n var onRender = function () {\n _this.element && _this.scheduleRender();\n };\n var unsubscribeOnChange = value.onChange(onChange);\n var unsubscribeOnRender = value.onRenderRequest(onRender);\n this.valueSubscriptions.set(key, function () {\n unsubscribeOnChange();\n unsubscribeOnRender();\n });\n };\n // Mount the VisualElement with the actual DOM element\n VisualElement.prototype.mount = function (element) {\n invariant(!!element, \"No ref found. Ensure components created with motion.custom forward refs using React.forwardRef\");\n if (this.parent) {\n this.removeFromParent = this.parent.subscribe(this);\n }\n /**\n * Save the element to this.element as a semantic API, this.current to the VisualElement\n * is compatible with existing RefObject APIs.\n */\n this.element = this.current = element;\n };\n // Unmount the VisualElement and cancel any scheduled updates\n VisualElement.prototype.unmount = function () {\n var _this = this;\n this.forEachValue(function (_, key) { return _this.removeValue(key); });\n cancelSync.update(this.update);\n cancelSync.render(this.render);\n this.removeFromParent && this.removeFromParent();\n };\n return VisualElement;\n}());\n\nfunction noop(any) {\n return any;\n}\n\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 convertBoundingBoxToAxisBox(_a) {\n var top = _a.top, left = _a.left, right = _a.right, bottom = _a.bottom;\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertAxisBoxToBoundingBox(_a) {\n var x = _a.x, y = _a.y;\n return {\n top: y.min,\n bottom: y.max,\n left: x.min,\n right: x.max,\n };\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 transformBoundingBox(_a, transformPoint) {\n var top = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n if (transformPoint === void 0) { transformPoint = noop; }\n var topLeft = transformPoint({ x: left, y: top });\n var bottomRight = transformPoint({ x: right, y: bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n/**\n * Create an empty axis box of zero size\n */\nfunction axisBox() {\n return { x: { min: 0, max: 1 }, y: { min: 0, max: 1 } };\n}\nfunction copyAxisBox(box) {\n return {\n x: __assign({}, box.x),\n y: __assign({}, box.y),\n };\n}\n/**\n * Create an empty box delta\n */\nvar zeroDelta = {\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n};\nfunction delta() {\n return {\n x: __assign({}, zeroDelta),\n y: __assign({}, zeroDelta),\n };\n}\n\n/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nvar order = [\"perspective\", \"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Used to store the keys of all transforms that will distorted a measured bounding box.\n */\nvar boxDistortingKeys = new Set();\n/**\n * Generate a list of every possible transform key.\n */\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n var isDistorting = new Set([\"rotate\", \"skew\"]).has(operationKey);\n transformAxes.forEach(function (axesKey) {\n var key = operationKey + axesKey;\n transformProps.push(key);\n isDistorting && boxDistortingKeys.add(key);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\nvar transformPropSet = new Set(transformProps);\nfunction isTransformProp(key) {\n return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n}\n\nvar translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\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, transformKeys, transformTemplate, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n if (enableHardwareAcceleration === void 0) { enableHardwareAcceleration = true; }\n if (allowTransformNone === void 0) { allowTransformNone = true; }\n // The transform string we're going to build into.\n var transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Track whether the defined transform has a defined z so we don't add a\n // second to enable hardware acceleration\n var transformHasZ = false;\n // Loop over each transform and build them into transformString\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n if (key === \"z\")\n transformHasZ = true;\n }\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += \"translateZ(0)\";\n }\n else {\n transformString = transformString.trim();\n }\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/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\nfunction buildTransformOrigin(_a) {\n var _b = _a.originX, originX = _b === void 0 ? \"50%\" : _b, _c = _a.originY, originY = _c === void 0 ? \"50%\" : _c, _d = _a.originZ, originZ = _d === void 0 ? 0 : _d;\n return originX + \" \" + originY + \" \" + originZ;\n}\n/**\n * Build a transform style that takes a calculated delta between the element's current\n * space on screen and projects it into the desired space.\n */\nfunction buildLayoutProjectionTransform(_a, treeScale) {\n var x = _a.x, y = _a.y;\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 var xTranslate = x.translate / treeScale.x;\n var yTranslate = y.translate / treeScale.y;\n return \"translate3d(\" + xTranslate + \"px, \" + yTranslate + \"px, 0) scale(\" + x.scale + \", \" + y.scale + \")\";\n}\nvar identityProjection = buildLayoutProjectionTransform(delta(), {\n x: 1,\n y: 1,\n});\n/**\n * Take the calculated delta origin and apply it as a transform string.\n */\nfunction buildLayoutProjectionTransformOrigin(_a) {\n var x = _a.x, y = _a.y;\n return x.origin * 100 + \"% \" + y.origin * 100 + \"% 0\";\n}\n/**\n * Build a transform string only from the properties that distort bounding box measurements\n * (rotate and skew)\n */\nfunction buildBoxDistortingTransforms(transform, transformKeys) {\n var transformString = \"\";\n transformKeys.sort(sortTransformProps);\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n if (boxDistortingKeys.has(key)) {\n transformString += key + \"(\" + transform[key] + \") \";\n }\n }\n return transformString;\n}\n\n/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nfunction isCSSVariable$1(value) {\n return typeof value === \"string\" && value.startsWith(\"var(--\");\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 */\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n var match = cssVariableRegex.exec(current);\n if (!match)\n return [,];\n var _a = __read(match, 3), token = _a[1], fallback = _a[2];\n return [token, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth) {\n if (depth === void 0) { depth = 1; }\n invariant(depth <= maxDepth, \"Max CSS variable fallback depth detected in property \\\"\" + current + \"\\\". This may indicate a circular fallback dependency.\");\n var _a = __read(parseCSSVariable(current), 2), token = _a[0], fallback = _a[1];\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n var resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n return resolved.trim();\n }\n else if (isCSSVariable$1(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, _a, transitionEnd) {\n var _b;\n var target = __rest(_a, []);\n var element = visualElement.getInstance();\n if (!(element instanceof HTMLElement))\n return { target: target, transitionEnd: 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 = __assign({}, transitionEnd);\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.forEachValue(function (value) {\n var current = value.get();\n if (!isCSSVariable$1(current))\n return;\n var 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 (var key in target) {\n var current = target[key];\n if (!isCSSVariable$1(current))\n continue;\n var resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\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)\n (_b = transitionEnd[key]) !== null && _b !== void 0 ? _b : (transitionEnd[key] = current);\n }\n return { target: target, transitionEnd: transitionEnd };\n}\n\nfunction pixelsToPercent(pixels, axis) {\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 */\nfunction correctBorderRadius(latest, viewportBox) {\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 var x = pixelsToPercent(latest, viewportBox.x);\n var y = pixelsToPercent(latest, viewportBox.y);\n return x + \"% \" + y + \"%\";\n}\nvar varToken = \"_$css\";\nfunction correctBoxShadow(latest, _viewportBox, delta, treeScale) {\n var original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n var containsCSSVariables = latest.includes(\"var(\");\n var cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, function (match) {\n cssVariables.push(match);\n return varToken;\n });\n }\n var shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n var template = complex.createTransformer(latest);\n var offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n var xScale = delta.x.scale * treeScale.x;\n var yScale = delta.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 var averageScale = mix(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 var output = template(shadow);\n if (containsCSSVariables) {\n var i_1 = 0;\n output = output.replace(varToken, function () {\n var cssVariable = cssVariables[i_1];\n i_1++;\n return cssVariable;\n });\n }\n return output;\n}\nvar borderCorrectionDefinition = {\n process: correctBorderRadius,\n};\nvar valueScaleCorrection = {\n borderRadius: __assign(__assign({}, borderCorrectionDefinition), { applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ] }),\n borderTopLeftRadius: borderCorrectionDefinition,\n borderTopRightRadius: borderCorrectionDefinition,\n borderBottomLeftRadius: borderCorrectionDefinition,\n borderBottomRightRadius: borderCorrectionDefinition,\n boxShadow: {\n process: correctBoxShadow,\n },\n};\n/**\n * @internal\n */\nfunction addScaleCorrection(correctors) {\n for (var key in correctors) {\n valueScaleCorrection[key] = correctors[key];\n }\n}\n\n/**\n * Build style and CSS variables\n *\n * This function converts a Motion style prop:\n *\n * { x: 100, width: 100, originX: 0.5 }\n *\n * Into an object with default value types applied and default\n * transform order set:\n *\n * {\n * transform: 'translateX(100px) translateZ(0)`,\n * width: '100px',\n * transformOrigin: '50% 50%'\n * }\n *\n * Styles are saved to `style` and CSS vars to `vars`.\n *\n * This function works with mutative data structures.\n */\nfunction buildHTMLStyles(latest, style, vars, transform, transformOrigin, transformKeys, _a, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var enableHardwareAcceleration = _a.enableHardwareAcceleration, transformTemplate = _a.transformTemplate, allowTransformNone = _a.allowTransformNone;\n // Empty the transformKeys array. As we're throwing out refs to its items\n // this might not be as cheap as suspected. Maybe using the array as a buffer\n // with a manual incrementation would be better.\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n var hasTransform = false;\n var hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n var transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable. Transforms and transform origins are kept seperately\n * for further processing\n */\n for (var key in latest) {\n var value = latest[key];\n // Convert the value to its default value type, ie 0 -> \"0px\"\n var valueType = getDefaultValueType(key);\n var valueAsType = getValueAsType(value, valueType);\n if (isTransformProp(key)) {\n // If this is a transform, flag and enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n if (!transformIsNone)\n continue;\n // If all the transform keys we've so far encountered are their default value\n // then check to see if this one isn't\n var defaultValue = valueType.default !== undefined ? valueType.default : 0;\n if (value !== defaultValue)\n transformIsNone = false;\n }\n else if (isTransformOriginProp(key)) {\n // If this is a transform origin, flag and enable further transform-origin processing\n transformOrigin[key] = valueAsType;\n hasTransformOrigin = true;\n }\n else if (key !== \"transform\" || typeof value !== \"function\") {\n // Handle all remaining values. Decide which map to save to depending\n // on whether this is a CSS variable\n var bucket = isCSSVariable(key) ? vars : style;\n // If we need to perform scale correction, and we have a handler for this\n // value type (ie borderRadius), perform it\n if (isLayoutProjectionEnabled && valueScaleCorrection[key]) {\n var corrected = valueScaleCorrection[key].process(value, targetBox, delta, treeScale);\n /**\n * Scale-correctable values can define a number of other values to break\n * down into. For instance borderRadius needs applying to borderBottomLeftRadius etc\n */\n var applyTo = valueScaleCorrection[key].applyTo;\n if (applyTo) {\n var num = applyTo.length;\n for (var i = 0; i < num; i++) {\n bucket[applyTo[i]] = corrected;\n }\n }\n else {\n bucket[key] = corrected;\n }\n }\n else {\n bucket[key] = valueAsType;\n }\n }\n }\n /**\n * Build transform and transformOrigin. If we're performing layout projection these need\n * to be based off the deltaFinal data. Any user-set origins will have been pre-baked\n * into the deltaFinal.\n */\n if (isLayoutProjectionEnabled) {\n style.transform = buildLayoutProjectionTransform(deltaFinal, treeScale);\n if (style.transform === identityProjection)\n style.transform = \"\";\n /**\n * If we have transform styles, build only those that distort bounding boxes (rotate/skew)\n * as translations and scales will already have been used to calculate deltaFinal.\n */\n if (hasTransform) {\n style.transform +=\n \" \" + buildBoxDistortingTransforms(transform, transformKeys);\n style.transform = style.transform.trim();\n }\n if (transformTemplate) {\n style.transform = transformTemplate(transform, style.transform);\n }\n style.transformOrigin = buildLayoutProjectionTransformOrigin(deltaFinal);\n }\n else {\n if (hasTransform) {\n style.transform = buildTransform(transform, transformKeys, transformTemplate, transformIsNone, enableHardwareAcceleration, allowTransformNone);\n }\n if (hasTransformOrigin) {\n style.transformOrigin = buildTransformOrigin(transformOrigin);\n }\n }\n}\n\n/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction resetAxis(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 resetBox(box, originBox) {\n resetAxis(box.x, originBox.x);\n resetAxis(box.y, originBox.y);\n}\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n var distanceFromOrigin = point - originPoint;\n var 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, scale, originPoint, boxScale) {\n if (translate === void 0) { translate = 0; }\n if (scale === void 0) { scale = 1; }\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, _a) {\n var x = _a.x, y = _a.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 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 applyAxisTransforms(final, axis, transforms, _a) {\n var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n // Copy the current axis to the final axis before mutation\n final.min = axis.min;\n final.max = axis.max;\n var axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n var originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(final, 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 */\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction applyBoxTransforms(finalBox, box, transforms) {\n applyAxisTransforms(finalBox.x, box.x, transforms, xKeys);\n applyAxisTransforms(finalBox.y, box.y, transforms, yKeys);\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, scale, origin, boxScale) {\n if (translate === void 0) { translate = 0; }\n if (scale === void 0) { scale = 1; }\n if (origin === void 0) { origin = 0.5; }\n var originPoint = mix(axis.min, axis.max, origin) - 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, _a) {\n var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale);\n}\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) {\n removeAxisTransforms(box.x, transforms, xKeys);\n removeAxisTransforms(box.y, transforms, yKeys);\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 HTMLVisualElement.updateLayoutDelta\n */\nfunction applyTreeDeltas(box, treePath) {\n var treeLength = treePath.length;\n for (var i = 0; i < treeLength; i++) {\n applyBoxDelta(box, treePath[i].delta);\n }\n}\n\nvar clampProgress = function (v) { return clamp(0, 1, v); };\n/**\n * Returns true if the provided value is within maxDistance of the provided target\n */\nfunction isNear(value, target, maxDistance) {\n if (target === void 0) { target = 0; }\n if (maxDistance === void 0) { maxDistance = 0.01; }\n return distance(value, target) < maxDistance;\n}\nfunction calcLength(axis) {\n return axis.max - axis.min;\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 var origin = 0.5;\n var sourceLength = calcLength(source);\n var 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 clampProgress(origin);\n}\n/**\n * Update the AxisDelta with a transform that projects source into target.\n *\n * The transform `origin` is optional. If not provided, it'll be automatically\n * calculated based on the relative positions of the two bounding boxes.\n */\nfunction updateAxisDelta(delta, source, target, origin) {\n delta.origin = origin === undefined ? calcOrigin(source, target) : origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate))\n delta.translate = 0;\n}\n/**\n * Update the BoxDelta with a transform that projects the source into the target.\n *\n * The transform `origin` is optional. If not provided, it'll be automatically\n * calculated based on the relative positions of the two bounding boxes.\n */\nfunction updateBoxDelta(delta, source, target, origin) {\n updateAxisDelta(delta.x, source.x, target.x, origin);\n updateAxisDelta(delta.y, source.y, target.y, origin);\n}\n/**\n * Update the treeScale by incorporating the parent's latest scale into its treeScale.\n */\nfunction updateTreeScale(treeScale, parentTreeScale, parentDelta) {\n treeScale.x = parentTreeScale.x * parentDelta.x.scale;\n treeScale.y = parentTreeScale.y * parentDelta.y.scale;\n}\n\n// Call a handler once for each axis\nfunction eachAxis(handler) {\n return [handler(\"x\"), handler(\"y\")];\n}\n\n/**\n * Measure and return the element bounding box.\n *\n * We convert the box into an AxisBox2D to make it easier to work with each axis\n * individually and programmatically.\n *\n * This function optionally accepts a transformPagePoint function which allows us to compensate\n * for, for instance, measuring the element within a scaled plane like a Framer devivce preview component.\n */\nfunction getBoundingBox(element, transformPagePoint) {\n var box = element.getBoundingClientRect();\n return convertBoundingBoxToAxisBox(transformBoundingBox(box, transformPagePoint));\n}\n\nvar positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n]);\nvar isPositionalKey = function (key) { return positionalKeys.has(key); };\nvar hasPositionalKey = function (target) {\n return Object.keys(target).some(isPositionalKey);\n};\nvar setAndResetVelocity = function (value, to) {\n // Looks odd but setting it twice doesn't render, it'll just\n // set both prev and current to the latest value\n value.set(to, false);\n value.set(to);\n};\nvar isNumOrPxType = function (v) {\n return v === number || v === px;\n};\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n BoundingBoxDimension[\"width\"] = \"width\";\n BoundingBoxDimension[\"height\"] = \"height\";\n BoundingBoxDimension[\"left\"] = \"left\";\n BoundingBoxDimension[\"right\"] = \"right\";\n BoundingBoxDimension[\"top\"] = \"top\";\n BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nvar getPosFromMatrix = function (matrix, pos) {\n return parseFloat(matrix.split(\", \")[pos]);\n};\nvar getTranslateFromMatrix = function (pos2, pos3) { return function (_bbox, _a) {\n var transform = _a.transform;\n if (transform === \"none\" || !transform)\n return 0;\n var matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n var matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n}; };\nvar transformKeys = new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformProps.filter(function (key) { return !transformKeys.has(key); });\nfunction removeNonTranslationalTransform(visualElement) {\n var removedTransforms = [];\n nonTranslationalTransformKeys.forEach(function (key) {\n var 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}\nvar positionalValues = {\n // Dimensions\n width: function (_a) {\n var x = _a.x;\n return x.max - x.min;\n },\n height: function (_a) {\n var y = _a.y;\n return y.max - y.min;\n },\n top: function (_bbox, _a) {\n var top = _a.top;\n return parseFloat(top);\n },\n left: function (_bbox, _a) {\n var left = _a.left;\n return parseFloat(left);\n },\n bottom: function (_a, _b) {\n var y = _a.y;\n var top = _b.top;\n return parseFloat(top) + (y.max - y.min);\n },\n right: function (_a, _b) {\n var x = _a.x;\n var left = _b.left;\n return parseFloat(left) + (x.max - x.min);\n },\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\nvar convertChangedValueTypes = function (target, visualElement, changedKeys) {\n var originBbox = visualElement.getBoundingBox();\n var elementComputedStyle = visualElement.getComputedStyle();\n var display = elementComputedStyle.display, top = elementComputedStyle.top, left = elementComputedStyle.left, bottom = elementComputedStyle.bottom, right = elementComputedStyle.right, transform = elementComputedStyle.transform;\n var originComputedStyle = { top: top, left: left, bottom: bottom, right: right, transform: transform };\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.setStaticValues(\"display\", target.display || \"block\");\n }\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n var targetBbox = visualElement.getBoundingBox();\n changedKeys.forEach(function (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 var value = visualElement.getValue(key);\n setAndResetVelocity(value, positionalValues[key](originBbox, originComputedStyle));\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nvar checkAndConvertChangedValueTypes = function (visualElement, target, origin, transitionEnd) {\n if (origin === void 0) { origin = {}; }\n if (transitionEnd === void 0) { transitionEnd = {}; }\n target = __assign({}, target);\n transitionEnd = __assign({}, transitionEnd);\n var 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 var removedTransformValues = [];\n var hasAttemptedToRemoveTransformValues = false;\n var changedValueTypeKeys = [];\n targetPositionalKeys.forEach(function (key) {\n var value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n var from = origin[key];\n var to = target[key];\n var fromType = findDimensionValueType(from);\n var 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 var numKeyframes = to.length;\n for (var i = to[0] === null ? 1 : 0; i < numKeyframes; i++) {\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 var 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) && (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 = removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n setAndResetVelocity(value, to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n var convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n return { target: convertedTarget, transitionEnd: transitionEnd };\n }\n else {\n return { target: target, transitionEnd: 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: target, transitionEnd: transitionEnd };\n}\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 */\nvar parseDomVariant = function (visualElement, target, origin, transitionEnd) {\n var resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\n/**\n * A VisualElement for HTMLElements\n */\nvar HTMLVisualElement = /** @class */ (function (_super) {\n __extends(HTMLVisualElement, _super);\n function HTMLVisualElement() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n *\n */\n _this.defaultConfig = {\n enableHardwareAcceleration: true,\n allowTransformNone: true,\n };\n /**\n * A mutable record of styles we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.style = {};\n /**\n * A record of styles we only want to apply via React. This gets set in useMotionValues\n * and applied in the render function. I'd prefer this to live somewhere else to decouple\n * VisualElement from React but works for now.\n */\n _this.reactStyle = {};\n /**\n * A mutable record of CSS variables we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.vars = {};\n /**\n * A mutable record of transforms we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.transform = {};\n /**\n * A mutable record of transform origins we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.transformOrigin = {};\n /**\n * A mutable record of transform keys we want to apply to the rendered Element. We order\n * this to order transforms in the desired order. We use a mutable data structure to reduce GC during animations.\n */\n _this.transformKeys = [];\n _this.config = _this.defaultConfig;\n /**\n * ========================================\n * Layout\n * ========================================\n */\n _this.isLayoutProjectionEnabled = false;\n /**\n * A set of layout update event handlers. These are only called once all layouts have been read,\n * making it safe to perform DOM write operations.\n */\n _this.layoutUpdateListeners = new SubscriptionManager();\n _this.layoutMeasureListeners = new SubscriptionManager();\n _this.viewportBoxUpdateListeners = new SubscriptionManager();\n /**\n * Keep track of whether the viewport box has been updated since the last render.\n * If it has, we want to fire the onViewportBoxUpdate listener.\n */\n _this.hasViewportBoxUpdated = false;\n /**\n * The visual target we want to project our component into on a given frame\n * before applying transforms defined in `animate` or `style`.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.targetBoxFinal = axisBox();\n /**\n * The overall scale of the local coordinate system as transformed by all parents\n * of this component. We use this for scale correction on our calculated layouts\n * and scale-affected values like `boxShadow`.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.treeScale = { x: 1, y: 1 };\n _this.prevTreeScale = { x: 1, y: 1 };\n /**\n * The delta between the boxCorrected and the desired\n * targetBox (before user-set transforms are applied). The calculated output will be\n * handed to the renderer and used as part of the style correction calculations, for\n * instance calculating how to display the desired border-radius correctly.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.delta = delta();\n /**\n * The delta between the boxCorrected and the desired targetBoxFinal. The calculated\n * output will be handed to the renderer and used to project the boxCorrected into\n * the targetBoxFinal.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.deltaFinal = delta();\n /**\n * The computed transform string to apply deltaFinal to the element. Currently this is only\n * being used to diff and decide whether to render on the current frame, but a minor optimisation\n * could be to provide this to the buildHTMLStyle function.\n */\n _this.deltaTransform = identityProjection;\n /**\n *\n */\n _this.stopLayoutAxisAnimation = {\n x: function () { },\n y: function () { },\n };\n _this.isTargetBoxLocked = false;\n /**\n *\n */\n _this.axisProgress = {\n x: motionValue(0),\n y: motionValue(0),\n };\n _this.updateLayoutDelta = function () {\n _this.isLayoutProjectionEnabled && _this.box && _this.updateLayoutDeltas();\n /**\n * Ensure all children layouts are also updated.\n *\n * This uses a pre-bound function executor rather than a lamda to avoid creating a new function\n * multiple times per frame (source of mid-animation GC)\n */\n _this.children.forEach(fireUpdateLayoutDelta);\n };\n return _this;\n }\n /**\n * When a value is removed, we want to make sure it's removed from all rendered data structures.\n */\n HTMLVisualElement.prototype.removeValue = function (key) {\n _super.prototype.removeValue.call(this, key);\n delete this.vars[key];\n delete this.style[key];\n };\n /**\n * Empty the mutable data structures by re-creating them. We can do this every React render\n * as the comparative workload to the rest of the render is very low and this is also when\n * we want to reflect values that might have been removed by the render.\n */\n HTMLVisualElement.prototype.clean = function () {\n this.style = {};\n this.vars = {};\n this.transform = {};\n };\n HTMLVisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) { config = {}; }\n this.config = __assign(__assign({}, this.defaultConfig), config);\n };\n /**\n * Read a value directly from the HTMLElement style.\n */\n HTMLVisualElement.prototype.read = function (key) {\n return this.getComputedStyle()[key] || 0;\n };\n HTMLVisualElement.prototype.addValue = function (key, value) {\n _super.prototype.addValue.call(this, key, value);\n // If we have rotate values we want to foce the layoutOrigin used in layout projection\n // to the center of the element.\n if (key.startsWith(\"rotate\"))\n this.layoutOrigin = 0.5;\n };\n /**\n * Read a value directly from the HTMLElement in case it's not defined by a Motion\n * prop. If it's a transform, we just return a pre-defined default value as reading these\n * out of a matrix is either error-prone or can incur a big payload for little benefit.\n */\n HTMLVisualElement.prototype.readNativeValue = function (key) {\n if (isTransformProp(key)) {\n var defaultValueType = getDefaultValueType(key);\n return defaultValueType ? defaultValueType.default || 0 : 0;\n }\n else {\n return this.read(key);\n }\n };\n /**\n * Ensure that HTML and Framer-specific value types like `px`->`%` and `Color`\n * can be animated by Motion.\n */\n HTMLVisualElement.prototype.makeTargetAnimatable = function (_a, parseDOMValues) {\n if (parseDOMValues === void 0) { parseDOMValues = true; }\n var transition = _a.transition, transitionEnd = _a.transitionEnd, target = __rest(_a, [\"transition\", \"transitionEnd\"]);\n var transformValues = this.config.transformValues;\n var origin = getOrigin(target, transition || {}, this);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (parseDOMValues) {\n checkTargetForNewValues(this, target, origin);\n var parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return __assign({ transition: transition,\n transitionEnd: transitionEnd }, target);\n };\n HTMLVisualElement.prototype.enableLayoutProjection = function () {\n this.isLayoutProjectionEnabled = true;\n };\n HTMLVisualElement.prototype.hide = function () {\n if (this.isVisible === false)\n return;\n this.isVisible = false;\n this.scheduleRender();\n };\n HTMLVisualElement.prototype.show = function () {\n if (this.isVisible === true)\n return;\n this.isVisible = true;\n this.scheduleRender();\n };\n /**\n * Register an event listener to fire when the layout is updated. We might want to expose support\n * for this via a `motion` prop.\n */\n HTMLVisualElement.prototype.onLayoutUpdate = function (callback) {\n return this.layoutUpdateListeners.add(callback);\n };\n HTMLVisualElement.prototype.onLayoutMeasure = function (callback) {\n return this.layoutMeasureListeners.add(callback);\n };\n HTMLVisualElement.prototype.onViewportBoxUpdate = function (callback) {\n return this.viewportBoxUpdateListeners.add(callback);\n };\n /**\n * To be called when all layouts are successfully updated. In turn we can notify layoutUpdate\n * subscribers.\n */\n HTMLVisualElement.prototype.layoutReady = function (config) {\n this.layoutUpdateListeners.notify(this.box, this.prevViewportBox || this.box, config);\n };\n /**\n * Measure and return the Element's bounding box. We convert it to a AxisBox2D\n * structure to make it easier to work on each individual axis generically.\n */\n HTMLVisualElement.prototype.getBoundingBox = function () {\n var transformPagePoint = this.config.transformPagePoint;\n return getBoundingBox(this.element, transformPagePoint);\n };\n HTMLVisualElement.prototype.getBoundingBoxWithoutTransforms = function () {\n var bbox = this.getBoundingBox();\n removeBoxTransforms(bbox, this.latest);\n return bbox;\n };\n /**\n * Return the computed style after a render.\n */\n HTMLVisualElement.prototype.getComputedStyle = function () {\n return window.getComputedStyle(this.element);\n };\n /**\n * Record the bounding box as it exists before a re-render.\n */\n HTMLVisualElement.prototype.snapshotBoundingBox = function () {\n this.prevViewportBox = this.getBoundingBoxWithoutTransforms();\n /**\n * Update targetBox to match the prevViewportBox. This is just to ensure\n * that targetBox is affected by scroll in the same way as the measured box\n */\n this.rebaseTargetBox(false, this.prevViewportBox);\n };\n HTMLVisualElement.prototype.rebaseTargetBox = function (force, box) {\n var _this = this;\n if (force === void 0) { force = false; }\n if (box === void 0) { box = this.box; }\n var _a = this.axisProgress, x = _a.x, y = _a.y;\n var shouldRebase = this.box &&\n !this.isTargetBoxLocked &&\n !x.isAnimating() &&\n !y.isAnimating();\n if (force || shouldRebase) {\n eachAxis(function (axis) {\n var _a = box[axis], min = _a.min, max = _a.max;\n _this.setAxisTarget(axis, min, max);\n });\n }\n };\n HTMLVisualElement.prototype.measureLayout = function () {\n var _this = this;\n this.box = this.getBoundingBox();\n this.boxCorrected = copyAxisBox(this.box);\n if (!this.targetBox)\n this.targetBox = copyAxisBox(this.box);\n this.layoutMeasureListeners.notify(this.box, this.prevViewportBox || this.box);\n sync.update(function () { return _this.rebaseTargetBox(); });\n };\n HTMLVisualElement.prototype.lockTargetBox = function () {\n this.isTargetBoxLocked = true;\n };\n HTMLVisualElement.prototype.unlockTargetBox = function () {\n this.stopLayoutAnimation();\n this.isTargetBoxLocked = false;\n };\n /**\n * Reset the transform on the current Element. This is called as part\n * of a batched process across the entire layout tree. To remove this write\n * cycle it'd be interesting to see if it's possible to \"undo\" all the current\n * layout transforms up the tree in the same way this.getBoundingBoxWithoutTransforms\n * works\n */\n HTMLVisualElement.prototype.resetTransform = function () {\n var transformTemplate = this.config.transformTemplate;\n this.element.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n // Ensure that whatever happens next, we restore our transform\n this.scheduleRender();\n };\n /**\n * Set new min/max boundaries to project an axis into\n */\n HTMLVisualElement.prototype.setAxisTarget = function (axis, min, max) {\n var targetAxis = this.targetBox[axis];\n targetAxis.min = min;\n targetAxis.max = max;\n // Flag that we want to fire the onViewportBoxUpdate event handler\n this.hasViewportBoxUpdated = true;\n this.rootParent.scheduleUpdateLayoutDelta();\n };\n /**\n *\n */\n HTMLVisualElement.prototype.startLayoutAxisAnimation = function (axis, transition) {\n var _this = this;\n var _a;\n var progress = this.axisProgress[axis];\n var _b = this.targetBox[axis], min = _b.min, max = _b.max;\n var length = max - min;\n progress.clearListeners();\n progress.set(min);\n progress.set(min); // Set twice to hard-reset velocity\n progress.onChange(function (v) { return _this.setAxisTarget(axis, v, v + length); });\n return (_a = this.animateMotionValue) === null || _a === void 0 ? void 0 : _a.call(this, axis, progress, 0, transition);\n };\n HTMLVisualElement.prototype.stopLayoutAnimation = function () {\n var _this = this;\n eachAxis(function (axis) { return _this.axisProgress[axis].stop(); });\n };\n /**\n * Update the layout deltas to reflect the relative positions of the layout\n * and the desired target box\n */\n HTMLVisualElement.prototype.updateLayoutDeltas = function () {\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 resetBox(this.boxCorrected, this.box);\n /**\n * If this component has a parent, update this treeScale by incorporating the parent's\n * delta into its treeScale.\n */\n if (this.parent) {\n this.prevTreeScale.x = this.treeScale.x;\n this.prevTreeScale.y = this.treeScale.y;\n updateTreeScale(this.treeScale, this.parent.treeScale, this.parent.delta);\n }\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.boxCorrected, this.treePath);\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 updateBoxDelta(this.delta, this.boxCorrected, this.targetBox, this.layoutOrigin);\n /**\n * If we have a listener for the viewport box, fire it.\n */\n this.hasViewportBoxUpdated &&\n this.viewportBoxUpdateListeners.notify(this.targetBox, this.delta);\n this.hasViewportBoxUpdated = false;\n /**\n * Ensure this element renders on the next frame if the projection transform has changed.\n */\n var deltaTransform = buildLayoutProjectionTransform(this.delta, this.treeScale);\n if (deltaTransform !== this.deltaTransform ||\n // Also compare calculated treeScale, for values that rely on only this for scale correction.\n this.prevTreeScale.x !== this.treeScale.x ||\n this.prevTreeScale.y !== this.treeScale.y) {\n this.scheduleRender();\n }\n this.deltaTransform = deltaTransform;\n };\n HTMLVisualElement.prototype.updateTransformDeltas = function () {\n if (!this.isLayoutProjectionEnabled || !this.box)\n return;\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 applyBoxTransforms(this.targetBoxFinal, this.targetBox, this.latest);\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 actual layout\n * into the desired bounding box.\n */\n updateBoxDelta(this.deltaFinal, this.boxCorrected, this.targetBoxFinal, this.layoutOrigin);\n };\n /**\n * ========================================\n * Build & render\n * ========================================\n */\n /**\n * Build a style prop using the latest resolved MotionValues\n */\n HTMLVisualElement.prototype.build = function () {\n this.updateTransformDeltas();\n if (this.isVisible !== undefined) {\n this.style.visibility = this.isVisible ? \"visible\" : \"hidden\";\n }\n buildHTMLStyles(this.latest, this.style, this.vars, this.transform, this.transformOrigin, this.transformKeys, this.config, this.isLayoutProjectionEnabled && !!this.box, this.delta, this.deltaFinal, this.treeScale, this.targetBoxFinal);\n };\n /**\n * Render the Element by rebuilding and applying the latest styles and vars.\n */\n HTMLVisualElement.prototype.render = function () {\n // Rebuild the latest animated values into style and vars caches.\n this.build();\n // Directly assign style into the Element's style prop. In tests Object.assign is the\n // fastest way to assign styles.\n Object.assign(this.element.style, this.style);\n // Loop over any CSS variables and assign those.\n for (var key in this.vars) {\n this.element.style.setProperty(key, this.vars[key]);\n }\n };\n return HTMLVisualElement;\n}(VisualElement));\n/**\n * Pre-bound version of updateLayoutDelta so we're not creating a new function multiple\n * times per frame.\n */\nvar fireUpdateLayoutDelta = function (child) {\n return child.updateLayoutDelta();\n};\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 var ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nfunction calcOrigin$1(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 var pxOriginX = calcOrigin$1(originX, dimensions.x, dimensions.width);\n var pxOriginY = calcOrigin$1(originY, dimensions.y, dimensions.height);\n return pxOriginX + \" \" + pxOriginY;\n}\n\n// Convert a progress 0-1 to a pixels value based on the provided length\nvar progressToPixels = function (progress, length) {\n return px.transform(progress * length);\n};\nvar dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nvar 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, totalLength, length, spacing, offset, useDashCase) {\n if (spacing === void 0) { spacing = 1; }\n if (offset === void 0) { offset = 0; }\n if (useDashCase === void 0) { useDashCase = true; }\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 var keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = progressToPixels(-offset, totalLength);\n // Build the dash array\n var pathLength = progressToPixels(length, totalLength);\n var pathSpacing = progressToPixels(spacing, totalLength);\n attrs[keys.array] = pathLength + \" \" + pathSpacing;\n}\n\nvar unmeasured = { x: 0, y: 0, width: 0, height: 0 };\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(_a, style, vars, attrs, transform, transformOrigin, transformKeys, config, dimensions, totalPathLength, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, \n // This is object creation, which we try to avoid per-frame.\n latest = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n /**\n * With SVG we treat all animated values as attributes rather than CSS, so we build into attrs\n */\n buildHTMLStyles(latest, attrs, vars, transform, transformOrigin, transformKeys, config, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox);\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 style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (originX !== undefined || originY !== undefined || style.transform) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions || unmeasured, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been measured\n if (totalPathLength !== undefined && pathLength !== undefined) {\n buildSVGPath(attrs, totalPathLength, pathLength, pathSpacing, pathOffset, false);\n }\n return attrs;\n}\n\n/**\n * A set of attribute names that are always read/written as camel case.\n */\nvar 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]);\n\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\nvar camelToDash = function (str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\n/**\n * A VisualElement for SVGElements. Inherits from and extends HTMLVisualElement as the two\n * share data structures.\n */\nvar SVGVisualElement = /** @class */ (function (_super) {\n __extends(SVGVisualElement, _super);\n function SVGVisualElement() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * A mutable record of attributes we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.attrs = {};\n /**\n * We disable hardware acceleration for SVG transforms as they're not currently able to be accelerated.\n */\n _this.defaultConfig = {\n enableHardwareAcceleration: false,\n };\n /**\n * Without duplicating this call from HTMLVisualElement we end up with HTMLVisualElement.defaultConfig\n * being assigned to config\n */\n _this.config = _this.defaultConfig;\n return _this;\n }\n /**\n * Measure the SVG element on mount. This can affect page rendering so there might be a\n * better time to perform this - for instance dynamically only if there's a transform-origin dependent\n * transform being set (like rotate)\n */\n SVGVisualElement.prototype.mount = function (element) {\n _super.prototype.mount.call(this, element);\n this.measure();\n };\n /**\n * Update the SVG dimensions and path length\n */\n SVGVisualElement.prototype.measure = function () {\n try {\n this.dimensions =\n typeof this.element.getBBox ===\n \"function\"\n ? this.element.getBBox()\n : this.element.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n this.dimensions = { x: 0, y: 0, width: 0, height: 0 };\n }\n if (isPath(this.element)) {\n this.totalPathLength = this.element.getTotalLength();\n }\n };\n /**\n * Empty the mutable data structures in case attrs have been removed between renders.\n */\n SVGVisualElement.prototype.clean = function () {\n _super.prototype.clean.call(this);\n this.attrs = {};\n };\n /**\n * Read an attribute directly from the SVGElement\n */\n SVGVisualElement.prototype.read = function (key) {\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return this.element.getAttribute(key);\n };\n SVGVisualElement.prototype.build = function () {\n this.updateTransformDeltas();\n buildSVGAttrs(this.latest, this.style, this.vars, this.attrs, this.transform, this.transformOrigin, this.transformKeys, this.config, this.dimensions, this.totalPathLength, this.isLayoutProjectionEnabled && !!this.box, this.delta, this.deltaFinal, this.treeScale, this.targetBoxFinal);\n };\n SVGVisualElement.prototype.render = function () {\n // Update HTML styles and CSS variables\n _super.prototype.render.call(this);\n // Loop through attributes and apply them to the SVGElement\n for (var key in this.attrs) {\n this.element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, this.attrs[key]);\n }\n };\n return SVGVisualElement;\n}(HTMLVisualElement));\nfunction isPath(element) {\n return element.tagName === \"path\";\n}\n\n/**\n * @internal\n */\n/**\n * @internal\n */\nvar svgElements = [\n \"animate\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nvar svgTagNames = new Set(svgElements);\n/**\n * Determine whether this is a HTML or SVG component based on if the provided\n * Component is a string and a recognised SVG tag. A potentially better way to\n * do this would be to offer a `motion.customSVG` function and determine this\n * when we generate the `motion.circle` etc components.\n */\nfunction isSVGComponent(Component) {\n return typeof Component === \"string\" && svgTagNames.has(Component);\n}\n\n/**\n * @public\n */\nvar PresenceContext = createContext(null);\n\nvar MotionContext = createContext({\n variantContext: {},\n});\nfunction useVariantContext() {\n return useContext(MotionContext).variantContext;\n}\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\n/**\n * DOM-flavoured variation of the useVisualElement hook. Used to create either a HTMLVisualElement\n * or SVGVisualElement for the component.\n *\n */\nvar useDomVisualElement = function (Component, props, isStatic, ref) {\n var parent = useVisualElementContext();\n var visualElement = useConstant(function () {\n var DOMVisualElement = isSVGComponent(Component)\n ? SVGVisualElement\n : HTMLVisualElement;\n return new DOMVisualElement(parent, ref);\n });\n visualElement.updateConfig(__assign(__assign(__assign({}, visualElement.config), { enableHardwareAcceleration: !isStatic }), props));\n visualElement.layoutId = props.layoutId;\n var presenceContext = useContext(PresenceContext);\n /**\n * Update VisualElement with presence data.\n */\n var isPresent = presenceContext === null ? true : presenceContext.isPresent;\n visualElement.isPresent =\n props.isPresent !== undefined ? props.isPresent : isPresent;\n /**\n *\n */\n var presenceId = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id;\n visualElement.isPresenceRoot = !parent || parent.presenceId !== presenceId;\n /**\n * TODO: Investigate if we need this\n */\n useEffect(function () {\n if (props.onViewportBoxUpdate) {\n return visualElement.onViewportBoxUpdate(props.onViewportBoxUpdate);\n }\n }, [props.onViewportBoxUpdate]);\n return visualElement;\n};\n\n/**\n * A list of all valid MotionProps.\n *\n * @internalremarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nvar validMotionProps = new Set([\n \"initial\",\n \"animate\",\n \"exit\",\n \"style\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"onLayoutAnimationComplete\",\n \"onViewportBoxUpdate\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"onPan\",\n \"onPanStart\",\n \"onPanEnd\",\n \"onPanSessionStart\",\n \"onTap\",\n \"onTapStart\",\n \"onTapCancel\",\n \"whileHover\",\n \"whileTap\",\n \"onHoverEnd\",\n \"onHoverStart\",\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 validMotionProps.has(key);\n}\n\nvar isPropValid = function (key) { return !isValidMotionProp(key); };\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 var emotionIsPropValid_1 = require(\"@emotion/is-prop-valid\").default;\n isPropValid = function (key) {\n // Handle events explicitly as Emotion validates them all as true\n if (key.startsWith(\"on\")) {\n return !isValidMotionProp(key);\n }\n else {\n return emotionIsPropValid_1(key);\n }\n };\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props) {\n var domProps = {};\n for (var key in props) {\n if (isPropValid(key))\n domProps[key] = props[key];\n }\n return domProps;\n}\n\nfunction buildHTMLProps(visualElement, _a) {\n var drag = _a.drag;\n // The `any` isn't ideal but it is the type of createElement props argument\n var htmlProps = {\n style: __assign(__assign(__assign({}, visualElement.reactStyle), visualElement.style), visualElement.vars),\n };\n if (!!drag) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n htmlProps.style.userSelect = \"none\";\n // Disable scrolling on the draggable direction\n htmlProps.style.touchAction =\n drag === true ? \"none\" : \"pan-\" + (drag === \"x\" ? \"y\" : \"x\");\n }\n return htmlProps;\n}\n\n/**\n * Build React props for SVG elements\n */\nfunction buildSVGProps(visualElement) {\n return __assign(__assign({}, visualElement.attrs), { style: __assign({}, visualElement.reactStyle) });\n}\n\nfunction render(Component, props, visualElement) {\n // Only filter props from components we control, ie `motion.div`. If this\n // is a custom component pass along everything provided to it.\n var forwardedProps = typeof Component === \"string\" ? filterProps(props) : props;\n /**\n * Every render, empty and rebuild the animated values to be applied to our Element.\n * During animation these data structures are used in a mutable fashion to reduce\n * garbage collection, but between renders we can flush them to remove values\n * that might have been taken out of the provided props.\n */\n visualElement.clean();\n visualElement.build();\n // Generate props to visually render this component\n var visualProps = isSVGComponent(Component)\n ? buildSVGProps(visualElement)\n : buildHTMLProps(visualElement, props);\n return createElement(Component, __assign(__assign(__assign({}, forwardedProps), { ref: visualElement.ref }), visualProps));\n}\n\nvar isMotionValue = function (value) {\n return value instanceof MotionValue;\n};\n\nfunction isForcedMotionValue(key, _a) {\n var layout = _a.layout, layoutId = _a.layoutId;\n return (isTransformProp(key) ||\n isTransformOriginProp(key) ||\n ((layout || layoutId !== undefined) && !!valueScaleCorrection[key]));\n}\n/**\n * Scrape props for MotionValues and add/remove them to this component's\n * VisualElement\n */\nfunction useMotionValues(visualElement, props) {\n var prev = useConstant(empty);\n /**\n * Remove MotionValues that are no longer present\n */\n for (var key in prev) {\n var isForced = isForcedMotionValue(key, props);\n var existsAsProp = props[key] !== undefined;\n var existsAsStyle = props.style && props.style[key] !== undefined;\n var propIsMotionValue = existsAsProp && isMotionValue(props[key]);\n var styleIsMotionValue = existsAsStyle && isMotionValue(props.style[key]);\n var transformRemoved = isForced && !existsAsProp && !existsAsStyle;\n var motionValueRemoved = !isForced && !propIsMotionValue && !styleIsMotionValue;\n if (transformRemoved || motionValueRemoved) {\n visualElement.removeValue(key);\n delete prev[key];\n }\n }\n /**\n * Add incoming MotionValues\n */\n addMotionValues(visualElement, prev, props, false, props);\n if (props.style)\n addMotionValues(visualElement, prev, props.style, true, props);\n /**\n * Transform custom values if provided a handler, ie size -> width/height\n * Ideally we'd ditch this by removing support for size and other custom values from Framer.\n */\n if (props.transformValues) {\n visualElement.reactStyle = props.transformValues(visualElement.reactStyle);\n }\n}\n/**\n * Add incoming MotionValues\n *\n * TODO: Type the VisualElements properly\n */\nfunction addMotionValues(visualElement, prev, source, isStyle, props) {\n if (isStyle === void 0) { isStyle = false; }\n if (isStyle)\n visualElement.reactStyle = {};\n for (var key in source) {\n var value = source[key];\n var foundMotionValue = false;\n if (isMotionValue(value)) {\n // If this is a MotionValue, add it if it isn't a reserved key\n if (!reservedNames.has(key)) {\n visualElement.addValue(key, value);\n foundMotionValue = true;\n }\n }\n else if (isForcedMotionValue(key, props)) {\n // If this is a transform prop, always create a MotionValue\n // to ensure we can reconcile them all together.\n if (!visualElement.hasValue(key)) {\n visualElement.addValue(key, motionValue(value));\n }\n else if (value !== prev[key]) {\n if (isMotionValue(prev[key])) {\n /**\n * If the previous value was a MotionValue, and this value isn't,\n * we want to create a new MotionValue rather than update one that's been removed.\n */\n visualElement.addValue(key, motionValue(value));\n }\n else {\n /**\n * Otherwise, we just want to ensure the MotionValue is of the latest value.\n */\n var motion = visualElement.getValue(key);\n motion.set(value);\n }\n }\n foundMotionValue = true;\n }\n else if (isStyle) {\n visualElement.reactStyle[key] = value;\n }\n if (foundMotionValue)\n prev[key] = value;\n }\n}\n/**\n * These are props we accept as MotionValues but don't want to add\n * to the VisualElement\n */\nvar reservedNames = new Set([]);\nvar empty = function () { return ({}); };\n\n/**\n * @public\n */\nvar MotionConfigContext = createContext({\n transformPagePoint: function (p) { return p; },\n features: [],\n isStatic: false,\n});\n/**\n * MotionConfig can be used in combination with the `m` component to cut bundle size\n * and dynamically load only the features you use.\n *\n * ```jsx\n * import {\n * m as motion,\n * AnimationFeature,\n * MotionConfig\n * } from \"framer-motion\"\n *\n * export function App() {\n * return (\n * \n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction MotionConfig(_a) {\n var children = _a.children, _b = _a.features, features = _b === void 0 ? [] : _b, props = __rest(_a, [\"children\", \"features\"]);\n var pluginContext = useContext(MotionConfigContext);\n var loadedFeatures = __spread(pluginContext.features, features);\n // We do want to rerender children when the number of loaded features changes\n var value = useMemo(function () { return ({ features: loadedFeatures }); }, [\n loadedFeatures.length,\n ]);\n // Mutative to prevent triggering rerenders in all listening\n // components every time this component renders\n for (var key in props) {\n value[key] = props[key];\n }\n return (createElement(MotionConfigContext.Provider, { value: value }, children));\n}\n\nfunction checkShouldInheritVariant(_a) {\n var animate = _a.animate, variants = _a.variants, inherit = _a.inherit;\n return inherit === undefined ? !!variants && !animate : inherit;\n}\n\n/**\n * Load features via renderless components based on the provided MotionProps\n */\nfunction useFeatures(defaultFeatures, isStatic, visualElement, props) {\n var plugins = useContext(MotionConfigContext);\n // If this is a static component, or we're rendering on the server, we don't load\n // any feature components\n if (isStatic || typeof window === \"undefined\")\n return null;\n var allFeatures = __spread(defaultFeatures, plugins.features);\n var numFeatures = allFeatures.length;\n var features = [];\n // Decide which features we should render and add them to the returned array\n for (var i = 0; i < numFeatures; i++) {\n var _a = allFeatures[i], shouldRender = _a.shouldRender, key = _a.key, getComponent = _a.getComponent;\n if (shouldRender(props)) {\n var Component = getComponent(props);\n Component &&\n features.push(createElement(Component, __assign({ key: key }, props, { visualElement: visualElement, inherit: checkShouldInheritVariant(props) })));\n }\n }\n return features;\n}\n\nvar Presence;\n(function (Presence) {\n Presence[Presence[\"Entering\"] = 0] = \"Entering\";\n Presence[Presence[\"Present\"] = 1] = \"Present\";\n Presence[Presence[\"Exiting\"] = 2] = \"Exiting\";\n})(Presence || (Presence = {}));\nvar VisibilityAction;\n(function (VisibilityAction) {\n VisibilityAction[VisibilityAction[\"Hide\"] = 0] = \"Hide\";\n VisibilityAction[VisibilityAction[\"Show\"] = 1] = \"Show\";\n})(VisibilityAction || (VisibilityAction = {}));\n\n/**\n * Default handlers for batching VisualElements\n */\nvar defaultHandler = {\n measureLayout: function (child) { return child.measureLayout(); },\n layoutReady: function (child) { return child.layoutReady(); },\n};\n/**\n * Sort VisualElements by tree depth, so we process the highest elements first.\n */\nvar sortByDepth = function (a, b) {\n return a.depth - b.depth;\n};\n/**\n * Create a batcher to process VisualElements\n */\nfunction createBatcher() {\n var queue = new Set();\n var add = function (child) { return queue.add(child); };\n var flush = function (_a) {\n var _b = _a === void 0 ? defaultHandler : _a, measureLayout = _b.measureLayout, layoutReady = _b.layoutReady;\n var order = Array.from(queue).sort(sortByDepth);\n /**\n * Write: Reset any transforms on children elements so we can read their actual layout\n */\n order.forEach(function (child) { return child.resetTransform(); });\n /**\n * Read: Measure the actual layout\n */\n order.forEach(measureLayout);\n /**\n * Write: Notify the VisualElements they're ready for further write operations.\n */\n order.forEach(layoutReady);\n /**\n * After all children have started animating, ensure any Entering components are set to Present.\n * If we add deferred animations (set up all animations and then start them in two loops) this\n * could be moved to the start loop. But it needs to happen after all the animations configs\n * are generated in AnimateSharedLayout as this relies on presence data\n */\n order.forEach(function (child) {\n if (child.isPresent)\n child.presence = Presence.Present;\n });\n queue.clear();\n };\n return { add: add, flush: flush };\n}\nfunction isSharedLayout(context) {\n return !!context.forceUpdate;\n}\nvar SharedLayoutContext = createContext(createBatcher());\n/**\n * @internal\n */\nvar FramerTreeLayoutContext = createContext(createBatcher());\n\nvar isBrowser = typeof window !== \"undefined\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nfunction useSnapshotOnUnmount(visualElement) {\n var syncLayout = useContext(SharedLayoutContext);\n var framerSyncLayout = useContext(FramerTreeLayoutContext);\n useIsomorphicLayoutEffect(function () { return function () {\n if (isSharedLayout(syncLayout)) {\n syncLayout.remove(visualElement);\n }\n if (isSharedLayout(framerSyncLayout)) {\n framerSyncLayout.remove(visualElement);\n }\n }; }, []);\n}\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 var context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n var isPresent = context.isPresent, onExitComplete = context.onExitComplete, register = context.register;\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 // Replace with useOpaqueId when released in React\n var id = useUniqueId();\n useEffect(function () { return register(id); }, []);\n var safeToRemove = function () { return onExitComplete === null || onExitComplete === void 0 ? void 0 : 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}\nvar counter = 0;\nvar incrementId = function () { return counter++; };\nvar useUniqueId = function () { return useConstant(incrementId); };\n\n/**\n * Use callback either only on the initial render or on all renders. In concurrent mode\n * the \"initial\" render might run multiple times\n *\n * @param callback - Callback to run\n * @param isInitialOnly - Set to `true` to only run on initial render, or `false` for all renders. Defaults to `false`.\n *\n * @public\n */\nfunction useInitialOrEveryRender(callback, isInitialOnly) {\n if (isInitialOnly === void 0) { isInitialOnly = false; }\n var isInitialRender = useRef(true);\n if (!isInitialOnly || (isInitialOnly && isInitialRender.current)) {\n callback();\n }\n isInitialRender.current = false;\n}\n\n/**\n * This hook is resonsible for creating the variant-propagation tree\n * relationship between VisualElements.\n */\nfunction useVariants(visualElement, _a, isStatic) {\n var _b, _c;\n var variants = _a.variants, initial = _a.initial, animate = _a.animate, whileTap = _a.whileTap, whileHover = _a.whileHover;\n var _d = useVariantContext(), parent = _d.parent, parentInitial = _d.initial, parentAnimate = _d.animate;\n var presenceContext = useContext(PresenceContext);\n /**\n * We only add this VisualElement to the variant tree *if* we're:\n * 1. Being provided a variants prop\n * 2. Being used to control variants (ie animate, whileHover etc)\n * 3. Or being passed animation controls, which we have to assume may control variants\n * Otherwise this component should be \"invisible\" to variant propagation. This is a concession\n * to Framer which uses a `motion` component in every `Frame` and it might be if we change that\n * in the future that this restriction is removed.\n */\n var controlsVariants = isVariantLabel$1(animate) ||\n isVariantLabel$1(whileTap) ||\n isVariantLabel$1(whileHover) ||\n isAnimationControls(animate);\n var isVariantNode = variants || controlsVariants;\n /**\n * Override initial with one from a parent `AnimatePresence`, if present\n */\n initial = (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) !== null && _b !== void 0 ? _b : initial;\n /**\n * If initial is false, and animate isn't animation controls, we assign animate\n * to initial and set our values to that for the initial render.\n */\n if (initial === false && !isAnimationControls(animate)) {\n initial = animate;\n }\n var context = useMemo(function () { return ({\n parent: isVariantNode ? visualElement : parent,\n initial: isVariantLabel$1(initial) ? initial : parentInitial,\n animate: isVariantLabel$1(animate) ? animate : parentAnimate,\n }); }, \n /**\n * Only create a new context value (thereby re-rendering children) if this\n * is a static component and `initial` changes.\n */\n [isStatic ? initial : null]);\n // Set initial state. If this is a static component (ie in Framer canvas), respond to updates\n // in `initial`.\n useInitialOrEveryRender(function () {\n var initialToApply = initial || parentInitial;\n initialToApply && setValues(visualElement, initialToApply);\n }, !isStatic);\n /**\n * Subscribe to the parent visualElement if this is a participant in the variant tree\n */\n isVariantNode && !controlsVariants && (parent === null || parent === void 0 ? void 0 : parent.addVariantChild(visualElement));\n /**\n * If this component isn't exiting the tree, clear all the children in the render phase.\n * This will allow children to resubscribe in the correct order to ensure the correct stagger order.\n */\n isPresent(presenceContext) && ((_c = visualElement.variantChildrenOrder) === null || _c === void 0 ? void 0 : _c.clear());\n /**\n * Subscribe to the propagated parent.\n */\n useEffect(function () {\n isVariantNode && (parent === null || parent === void 0 ? void 0 : parent.addVariantChildOrder(visualElement));\n });\n /**\n * Track mount status so children can detect whether they were present during the\n * component's initial mount.\n */\n useEffect(function () {\n visualElement.isMounted = true;\n return function () {\n var _a;\n visualElement.isMounted = false;\n (_a = parent === null || parent === void 0 ? void 0 : parent.variantChildren) === null || _a === void 0 ? void 0 : _a.delete(visualElement);\n };\n }, []);\n /**\n * We want to update the \"base\" (or fallback) value on the initial render.\n */\n useInitialOrEveryRender(function () {\n visualElement.forEachValue(function (value, key) {\n visualElement.baseTarget[key] = value.get();\n });\n }, true);\n return context;\n}\nfunction isVariantLabel$1(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\nfunction isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\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 *\n * @internal\n */\nfunction createMotionComponent(Component, _a) {\n var defaultFeatures = _a.defaultFeatures, useVisualElement = _a.useVisualElement, render = _a.render;\n function MotionComponent(props, externalRef) {\n /**\n * If a component is static, we only visually update it as a\n * result of a React re-render, rather than any interactions or animations.\n * If this component or any ancestor is static, we disable hardware acceleration\n * and don't load any additional functionality.\n */\n var isStatic = useContext(MotionConfigContext).isStatic;\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 var visualElement = useVisualElement(Component, props, isStatic, externalRef);\n /**\n * Scrape MotionValues from props and add/remove them to/from the VisualElement.\n */\n useMotionValues(visualElement, props);\n /**\n * Add the visualElement as a node in the variant tree.\n */\n var variantContext = useVariants(visualElement, props, isStatic);\n /**\n * Load features as renderless components unless the component isStatic\n */\n var features = useFeatures(defaultFeatures, isStatic, visualElement, props);\n /**\n * Only create a new context value when the sub-contexts change.\n */\n var context = useMemo(function () { return ({ visualElement: visualElement, variantContext: variantContext }); }, [\n visualElement,\n variantContext,\n ]);\n var component = render(Component, props, visualElement);\n /**\n * If this component is a child of AnimateSharedLayout, we need to snapshot the component\n * before it's unmounted. This lives here rather than in features/layout/Measure because\n * as a child component its unmount effect runs after this component has been unmounted.\n */\n useSnapshotOnUnmount(visualElement);\n // The mount order and hierarchy is specific to ensure our element ref is hydrated by the time\n // all plugins and features has to execute.\n return (createElement(Fragment, null,\n createElement(MotionContext.Provider, { value: context }, component),\n features));\n }\n return forwardRef(MotionComponent);\n}\n\nfunction createLock(name) {\n var lock = null;\n return function () {\n var openLock = function () {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n var lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n var openHorizontal_1 = globalHorizontalLock();\n var openVertical_1 = globalVerticalLock();\n if (openHorizontal_1 && openVertical_1) {\n lock = function () {\n openHorizontal_1();\n openVertical_1();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal_1)\n openHorizontal_1();\n if (openVertical_1)\n openVertical_1();\n }\n }\n return lock;\n}\n\nfunction addDomEvent(target, eventName, handler, options) {\n target.addEventListener(eventName, handler, options);\n return function () { return target.removeEventListener(eventName, handler, options); };\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return
\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(function () {\n var element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nfunction isMouseEvent(event) {\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n return !!(event.pointerType === \"mouse\");\n }\n return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n var hasTouches = !!event.touches;\n return hasTouches;\n}\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n return function (event) {\n var isMouseEvent = event instanceof MouseEvent;\n var isPrimaryPointer = !isMouseEvent ||\n (isMouseEvent && event.button === 0);\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\nvar defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n var primaryTouch = e.touches[0] || e.changedTouches[0];\n var point = primaryTouch || defaultPagePoint;\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction pointFromMouse(point, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction extractEventInfo(event, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n };\n}\nfunction getViewportPointFromEvent(event) {\n return extractEventInfo(event, \"client\");\n}\nvar wrapHandler = function (handler, shouldFilterPrimaryPointer) {\n if (shouldFilterPrimaryPointer === void 0) { shouldFilterPrimaryPointer = false; }\n var listener = function (event) {\n return handler(event, extractEventInfo(event));\n };\n return shouldFilterPrimaryPointer\n ? filterPrimaryPointer(listener)\n : listener;\n};\n\nvar isBrowser$1 = typeof window !== \"undefined\";\n// We check for event support via functions in case they've been mocked by a testing suite.\nvar supportsPointerEvents = function () {\n return isBrowser$1 && window.onpointerdown === null;\n};\nvar supportsTouchEvents = function () {\n return isBrowser$1 && window.ontouchstart === null;\n};\nvar supportsMouseEvents = function () {\n return isBrowser$1 && window.onmousedown === null;\n};\n\nvar mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n};\nvar touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n }\n else if (supportsTouchEvents()) {\n return touchEventNames[name];\n }\n else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\n/**\n * @internal\n */\nvar PanSession = /** @class */ (function () {\n function PanSession(event, handlers, _a) {\n var _this = this;\n var transformPagePoint = (_a === void 0 ? {} : _a).transformPagePoint;\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 this.updatePoint = function () {\n if (!(_this.lastMoveEvent && _this.lastMoveEventInfo))\n return;\n var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n var 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 var isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n var point = info.point;\n var timestamp = getFrameData().timestamp;\n _this.history.push(__assign(__assign({}, point), { timestamp: timestamp }));\n var _a = _this.handlers, onStart = _a.onStart, onMove = _a.onMove;\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 = function (event, info) {\n _this.lastMoveEvent = event;\n _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint);\n // Because Safari doesn't trigger mouseup events when it's above a `