{"version":3,"sources":["webpack:///../node_modules/framer-motion/dist/framer-motion.es.js"],"names":["isRefObject","ref","hasOwnProperty","SubscriptionManager","this","subscriptions","Set","prototype","add","handler","_this","delete","notify","a","b","c","e_1","_a","size","_b","_c","next","done","value","e_1_1","error","return","call","clear","MotionValue","init","timeDelta","lastUpdated","updateSubscribers","renderSubscribers","canTrackVelocity","updateAndNotify","v","render","prev","current","delta","timestamp","postRender","scheduleVelocityCheck","velocityCheck","isNaN","parseFloat","onChange","subscription","clearListeners","onRenderRequest","get","attach","passiveEffect","set","getPrevious","getVelocity","start","animation","stop","Promise","resolve","stopAnimation","then","clearAnimation","isAnimating","destroy","motionValue","VisualElement","parent","children","isHoverEventsEnabled","baseTarget","latest","values","Map","valueSubscriptions","config","isMounted","update","onUpdate","triggerRender","element","mount","unmount","externalRef","rootParent","treePath","depth","suspendHoverEvents","setTimeout","getVariantPayload","custom","getVariant","label","variants","addVariantChild","visualElement","variantChildren","addVariantChildOrder","variantChildrenOrder","onAnimationStart","onAnimationComplete","getDefaultTransition","transition","subscribe","child","hasValue","key","has","addValue","removeValue","setSingleStaticValue","subscribeToValue","getValue","defaultValue","undefined","forEachValue","callback","forEach","getInstance","updateConfig","getBaseValue","_props","setStaticValues","scheduleRender","scheduleUpdateLayoutDelta","preRender","updateLayoutDelta","unsubscribeOnChange","unsubscribeOnRender","removeFromParent","_","noop","any","convertBoundingBoxToAxisBox","top","x","min","left","max","right","y","bottom","copyAxisBox","box","zeroDelta","translate","scale","origin","originPoint","int","transform","Math","round","defaultValueTypes","color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","width","maxWidth","height","maxHeight","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","z","perspective","transformPerspective","opacity","originX","originY","originZ","zIndex","filter","WebkitFilter","fillOpacity","strokeOpacity","numOctaves","dimensionValueTypes","test","parse","testValueType","type","findDimensionValueType","find","valueTypes","findValueType","getDefaultValueType","getValueAsType","getAnimatableNone","defaultValueType","transformAxes","transformProps","sortTransformProps","indexOf","operationKey","axesKey","push","transformPropSet","isTransformProp","transformOriginProps","isTransformOriginProp","translateAlias","buildLayoutProjectionTransform","treeScale","latestTransform","identityProjection","isCSSVariable","startsWith","isCSSVariable$1","cssVariableRegex","getVariableValue","match","exec","parseCSSVariable","token","fallback","resolved","window","getComputedStyle","getPropertyValue","trim","pixelsToPercent","pixels","axis","borderCorrectionDefinition","process","viewportBox","valueScaleCorrection","applyTo","boxShadow","_viewportBox","original","containsCSSVariables","includes","cssVariables","replace","shadow","length","template","createTransformer","offset","xScale","yScale","averageScale","output","i_1","cssVariable","buildHTMLStyles","style","vars","transformOrigin","transformKeys","isLayoutProjectionEnabled","deltaFinal","targetBox","enableHardwareAcceleration","transformTemplate","allowTransformNone","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","default","bucket","corrected","num","i","buildLayoutProjectionTransformOrigin","transformIsDefault","transformString","sort","transformHasZ","numTransformKeys","buildTransform","_d","buildTransformOrigin","resetAxis","originAxis","scalePoint","point","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","applyAxisTransforms","final","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","removePointDelta","removeAxisTransforms","removeAxisDelta","isNear","target","maxDistance","calcLength","calcOrigin","source","sourceLength","targetLength","updateAxisDelta","updateBoxDelta","eachAxis","getBoundingBox","transformPagePoint","transformPoint","topLeft","bottomRight","transformBoundingBox","getBoundingClientRect","BoundingBoxDimension","isKeyframesTarget","Array","isArray","positionalKeys","isPositionalKey","setAndResetVelocity","to","isNumOrPxType","getPosFromMatrix","matrix","pos","split","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","checkAndConvertChangedValueTypes","transitionEnd","targetPositionalKeys","Object","keys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","from","fromType","numKeyframes","map","removedTransforms","removeNonTranslationalTransform","convertedTarget","changedKeys","originBbox","elementComputedStyle","display","originComputedStyle","targetBbox","convertChangedValueTypes","unitConversion","some","hasPositionalKey","parseDomVariant","HTMLElement","resolveCSSVariables","isVariantLabels","resolveVariant","definition","getCurrent","velocity","setMotionValue","setTarget","makeTargetAnimatable","setVariants","variantLabels","reverse","setValues","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","readValue","readNativeValue","getOriginFromTransition","getOrigin","isMotionValue","HTMLVisualElement","_super","apply","arguments","defaultConfig","reactStyle","layoutUpdateListeners","layoutMeasureListeners","viewportBoxUpdateListeners","hasViewportBoxUpdated","targetBoxFinal","deltaTransform","stopLayoutAxisAnimation","isTargetBoxLocked","updateLayoutDeltas","fireUpdateLayoutDelta","clean","read","computedStyle","layoutOrigin","props","parseDOMValues","transformValues","parsed","enableLayoutProjection","hide","isVisible","show","onLayoutUpdate","onLayoutMeasure","onViewportBoxUpdate","layoutReady","prevViewportBox","getBoundingBoxWithoutTransforms","bbox","snapshotBoundingBox","rebaseTargetBox","force","getAxisProgress","shouldRebase","setAxisTarget","measureLayout","boxCorrected","lockTargetBox","unlockTargetBox","stopLayoutAnimation","resetTransform","targetAxis","axisProgress","startLayoutAxisAnimation","progress","animateMotionValue","withoutTransform","originBox","prevTreeScaleX","prevTreeScaleY","treeLength","applyTreeDeltas","updateTransformDeltas","finalBox","build","visibility","assign","setProperty","useConstant","calcOrigin$1","progressToPixels","dashKeys","array","camelKeys","unmeasured","buildSVGAttrs","attrs","dimensions","totalPathLength","attrX","attrY","pathLength","pathSpacing","pathOffset","calcSVGTransformOrigin","totalLength","spacing","useDashCase","buildSVGPath","camelCaseAttributes","CAMEL_CASE_PATTERN","camelToDash","str","toLowerCase","SVGVisualElement","measure","getBBox","e","tagName","getTotalLength","prop","getAttribute","setAttribute","svgTagNames","isSVGComponent","Component","PresenceContext","MotionContext","variantContext","useVariantContext","useVisualElementContext","LayoutGroupContext","MotionConfigContext","p","features","isStatic","useUnmountEffect","addDomEvent","eventName","options","addEventListener","removeEventListener","useDomEvent","isMouseEvent","event","PointerEvent","pointerType","MouseEvent","isTouchEvent","touches","defaultPagePoint","pageX","pageY","pointFromTouch","pointType","changedTouches","pointFromMouse","extractEventInfo","getViewportPointFromEvent","wrapHandler","shouldFilterPrimaryPointer","eventHandler","listener","button","isBrowser","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","name","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","secondsToMilliseconds","seconds","PanSession","handlers","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","info","getPanInfo","history","isPanStarted","isDistancePastThreshold","onStart","onMove","handlePointerMove","buttons","handlePointerUp","end","onEnd","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","startDevicePoint","getVelocity$1","timestampedPoint","lastPoint","time","currentVelocity","Infinity","easingLookup","linear","easeIn","easeInOut","easeOut","circIn","circInOut","circOut","backIn","backInOut","backOut","anticipate","bounceIn","bounceInOut","bounceOut","easingDefinitionToFunction","x1","y1","x2","y2","isAnimatable","underDampedSpring","stiffness","damping","restDelta","restSpeed","overDampedSpring","linearTween","ease","duration","keyframes","defaultTransitions","legacyRepeatWarning","convertTransitionToAnimationOptions","times","yoyo","flip","loop","repeatDelay","isEasingArray","repeatType","repeat","getPopmotionAnimationOptions","valueKey","transitionFactory","hydrateKeyframes","when","delay","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","startAnimation","onComplete","delayTimer","controls","valueTransition","getValueTransition","isTargetAnimatable","isOriginAnimatable","getAnimation","_e","getDelayFromTransition","clearTimeout","animateVisualElement","animations","variant","animateVariant","all","animateTarget","transitionOverride","getChildAnimations","forwardDelay","maxStaggerDuration","generateStaggerDuration","animateChildren","first","last","_f","protectedValues","animationState","getProtectedKeys","valueTarget","AnimationType","AnimationControls","hasMounted","pendingAnimations","subscribers","animations_1","variantPriorityOrder","Animate","Hover","Tap","Drag","Focus","Exit","reversePriorityOrder","numAnimationTypes","createAnimationState","currentProps","currentContext","animate","animateList","state","createTypeState","isInitialRender","buildResolvedTypeValues","acc","setProps","context","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","_loop_1","typeState","propIsVariant","activeDelta","isActive","isInherited","manuallyAnimateOnMount","prevSnapshot","prevResolvedValues","protectedKeys","prevProp","shouldAnimateType","prevLength","shallowCompare","variantsHaveChanged","definitionList","resolvedValues","reduce","allKeys","fallbackAnimation_1","fallbackTarget","shouldAnimate","Boolean","initial","setActive","setAnimateFunction","makeAnimator","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal_1","openVertical_1","useTapGesture","onTap","onTapStart","onTapCancel","whileTap","hasPressListeners","isPressing","cancelPointerEndListeners","removePointerEndListener","checkPointerEnd","openGestureLock","onPointerUp","isNodeOrChild","parentElement","onPointerCancel","createHoverEvent","useGestures","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","panSession","onHoverStart","onHoverEnd","whileHover","useHoverGesture","whileFocus","useFocusGesture","makeRenderlessComponent","hook","gestureProps","GestureComponent","Gestures","shouldRender","getComponent","validMotionProps","isValidMotionProp","isPropValid","emotionIsPropValid_1","isForcedMotionValue","layout","layoutId","addMotionValues","isStyle","foundMotionValue","reservedNames","Presence","VisibilityAction","empty","defaultHandler","sortByDepth","createBatcher","queue","flush","order","resetAndMeasure","isPresent","presence","Present","isSharedLayout","forceUpdate","SharedLayoutContext","FramerTreeLayoutContext","useIsomorphicLayoutEffect","usePresence","onExitComplete","register","id","useUniqueId","useIsPresent","counter","incrementId","useInitialOrEveryRender","isInitialOnly","checkShouldInheritVariant","inherit","useVariants","presenceContext","shouldInheritVariants","contextDependencies","isControllingVariants","isVariantLabel$1","whileDrag","exit","checkIfControllingVariants","isVariantNode","numVariantProps","name_1","variantProps","contextProp","initialToSet","remove","nextContext","inheritsVariants","createMotionComponent","defaultFeatures","useVisualElement","useRender","isForced","existsAsProp","existsAsStyle","propIsMotionValue","styleIsMotionValue","useMotionValues","plugins","allFeatures","numFeatures","useFeatures","component","syncLayout","framerSyncLayout","useSnapshotOnUnmount","Provider","applyConstraints","elastic","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","lastPointerEvent","elementDragControls","WeakMap","VisualElementDragControls","isDragging","currentDirection","constraints","hasMutatedConstraints","cursorProgress","openGlobalLock","originEvent","snapToCursor","stopMotion","dragPropagation","prepareBoundingBox","resolveDragConstraints","axisValue","getAxisMotionValue","onDragStart","dragDirectionLock","lockThreshold","direction","abs","getCurrentDirection","onDirectionLock","updateAxis","onDrag","layoutBox","dragConstraints","resolveRefConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measuredConstraints","calcViewportConstraints","userConstraints","convertAxisBoxToBoundingBox","cancelDrag","dragMomentum","dragElastic","onDragEnd","animateDragEnd","shouldDrag","length_1","center","updateVisualElementAxis","updateAxisMotionValue","nextValue","axisLayout","axisLength","calcConstrainedMinPoint","updateProps","_g","remainingProps","dragKey","toUpperCase","dragTransition","momentumAnimations","bounceStiffness","bounceDamping","inertia","timeConstant","startAxisValueAnimation","onDragTransitionEnd","currentValue","boxProgress","calcPositionFromProgress","stopPointerListener","dragListener","stopResizeListener","stopLayoutUpdateListener","groupDragControls","dragControls","useDrag","ExitComponent","AnimationState","unsubscribe","useAnimationGroupSubscription","Animation","frameTarget","stopAxisAnimation","visibilityAction","shouldStackAnimate","safeToRemove","boxHasMoved","hasMoved","animateAxis","Hide","onLayoutAnimationComplete","componentDidMount","unsubLayoutReady","componentWillUnmount","crossfadeOpacity","crossfade","layoutProgress","createCrossfadeAnimation","frame","tweenAxis","unsubscribeProgress","defaultTransition","easeCrossfadeIn","easeCrossfadeOut","AnimateLayoutContextProvider","isZeroBox","axisIsEqual","zeroAxis","compress","easing","AnimateLayout","Measure","getSnapshotBeforeUpdate","syncUpdate","componentDidUpdate","MeasureContextProvider","createElement","MeasureLayout","allMotionFeatures","domBaseConfig","layoutGroupId","presenceId","isPresenceRoot","cancelViewportBoxUpdate","cancelLayoutMeasureUpdate","_onLayoutMeasure","forwardedProps","domProps","filterProps","visualProps","buildSVGProps","htmlProps","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","buildHTMLProps","createMotionProxy","componentCache","Proxy","motion","getPresenceId","PresenceChild","_onExitComplete","presenceAffectsLayout","presenceChildren","newChildrenMap","childId","allComplete","isComplete","getChildKey","AnimatePresence","exitBeforeEnter","forceRender","unloadingRef","forcedRenderCount","setForcedRenderCount","useForceUpdate","layoutContext","filteredChildren","filtered","onlyElements","presentChildren","allChildren","exiting","updateChildLookup","childrenToRender","presentKeys","targetKeys","numPresent","insertionIndex","splice","removeIndex","findIndex","presentChild","createSwitchAnimation","stack","lead","Entering","prevLead","Show","getFollowOrigin","Exiting","getFollowTarget","stackLead","stackLeadPresence","follow","getLeadTransition","getLeadTarget","getLeadOrigin","LayoutStack","hasChildren","snapshot","boundingBox","latestMotionValues","index","stackChild","updateLeadAndFollow","prevFollow","leadIndex","numInStack","lastIsPresent","findLeadAndFollow","updateSnapshot","isLeadPresent","AnimateSharedLayout","stacks","updateScheduled","renderScheduled","syncContext","scheduleUpdate","addChild","removeChild","updateStacks","startLayoutAnimation","shouldComponentUpdate","createAnimation","getStack","hasRotate","resetValues","resetRotate","addToStack","removeFromStack","contextType","DragControls","componentControls","nativeEvent","updateConstraints","StateVisualElement","initialState"],"mappings":"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","file":"c8b05f54-4a341c95b15a93846919.js","sourcesContent":["import \"core-js/modules/es.array.reduce.js\";\nimport { __values, __assign, __spread, __rest, __read, __extends } from 'tslib';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { velocityPerSecond, mix, clamp, distance, progress, pipe, cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut, inertia, animate as animate$1, interpolate, wrap } from 'popmotion';\nimport { invariant, warning } from 'hey-listen';\nimport { number, color, complex, px, percent, degrees, vw, vh, scale, alpha, progressPercentage, filter } from 'style-value-types';\nimport React, { useRef, createContext, useContext, useEffect, useMemo, createElement, useLayoutEffect, forwardRef, Fragment, Component as Component$1, useCallback, useState, cloneElement, Children, isValidElement } from 'react';\n\nvar isRefObject = function isRefObject(ref) {\n return typeof ref === \"object\" && ref.hasOwnProperty(\"current\");\n};\n/**\n * A generic subscription manager.\n */\n\n\nvar SubscriptionManager =\n/** @class */\nfunction () {\n function SubscriptionManager() {\n this.subscriptions = new Set();\n }\n\n SubscriptionManager.prototype.add = function (handler) {\n var _this = this;\n\n this.subscriptions.add(handler);\n return function () {\n return void _this.subscriptions.delete(handler);\n };\n };\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\n if (!this.subscriptions.size) return;\n\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 } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n SubscriptionManager.prototype.clear = function () {\n this.subscriptions.clear();\n };\n\n return SubscriptionManager;\n}();\n\nvar isFloat = function isFloat(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 */\n\n\nvar MotionValue =\n/** @class */\nfunction () {\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\n\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\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\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\n this.canTrackVelocity = false;\n\n this.updateAndNotify = function (v, render) {\n if (render === void 0) {\n render = true;\n }\n\n _this.prev = _this.current;\n _this.current = v;\n\n if (_this.prev !== _this.current) {\n _this.updateSubscribers.notify(_this.current);\n }\n\n if (render) {\n _this.renderSubscribers.notify(_this.current);\n } // Update timestamp\n\n\n var _a = getFrameData(),\n delta = _a.delta,\n timestamp = _a.timestamp;\n\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\n\n this.scheduleVelocityCheck = function () {\n return sync.postRender(_this.velocityCheck);\n };\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\n\n this.velocityCheck = function (_a) {\n var timestamp = _a.timestamp;\n\n if (timestamp !== _this.lastUpdated) {\n _this.prev = _this.current;\n }\n };\n\n this.current = init;\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\n\n MotionValue.prototype.onChange = function (subscription) {\n return this.updateSubscribers.add(subscription);\n };\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\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\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\n\n MotionValue.prototype.set = function (v, render) {\n if (render === void 0) {\n render = true;\n }\n\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\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\n\n MotionValue.prototype.get = function () {\n return this.current;\n };\n /**\n * @public\n */\n\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\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 ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 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\n\n MotionValue.prototype.start = function (animation) {\n var _this = this;\n\n this.stop();\n return new Promise(function (resolve) {\n _this.stopAnimation = animation(resolve);\n }).then(function () {\n return _this.clearAnimation();\n });\n };\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n\n\n MotionValue.prototype.stop = function () {\n if (this.stopAnimation) this.stopAnimation();\n this.clearAnimation();\n };\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n\n\n MotionValue.prototype.isAnimating = function () {\n return !!this.stopAnimation;\n };\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\n\n MotionValue.prototype.destroy = function () {\n this.updateSubscribers.clear();\n this.renderSubscribers.clear();\n this.stop();\n };\n\n return MotionValue;\n}();\n/**\n * @internal\n */\n\n\nfunction motionValue(init) {\n return new MotionValue(init);\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 */\n\n\nvar VisualElement =\n/** @class */\nfunction () {\n function VisualElement(parent, ref) {\n var _this = this; // An iterable list of current children\n\n\n this.children = new Set();\n this.isHoverEventsEnabled = true;\n /**\n * A set of values that we animate back to when a value is cleared of all overrides.\n */\n\n this.baseTarget = {}; // The latest resolved MotionValues\n\n this.latest = {}; // A map of MotionValues used to animate this element\n\n this.values = new Map(); // Unsubscription callbacks for MotionValue subscriptions\n\n this.valueSubscriptions = new Map(); // A configuration for this VisualElement, each derived class can extend this.\n\n this.config = {};\n this.isMounted = false; // A pre-bound call to the user-provided `onUpdate` callback. This won't\n // be called more than once per frame.\n\n this.update = function () {\n return _this.config.onUpdate(_this.latest);\n }; // Pre-bound version of render\n\n\n this.triggerRender = function () {\n 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\n\n this.ref = function (element) {\n element ? _this.mount(element) : _this.unmount();\n if (!_this.externalRef) return;\n\n if (typeof _this.externalRef === \"function\") {\n _this.externalRef(element);\n } else if (isRefObject(_this.externalRef)) {\n _this.externalRef.current = element;\n }\n }; // Create a relationship with the provided parent.\n\n\n this.parent = parent;\n this.rootParent = parent ? parent.rootParent : this;\n this.treePath = parent ? __spread(parent.treePath, [parent]) : []; // Calculate the depth of this node in the VisualElement graph\n\n this.depth = parent ? parent.depth + 1 : 0; // A reference to any externally-defined React ref. This might live better\n // outside the VisualElement and be handled in a hook.\n\n this.externalRef = ref;\n }\n /**\n * Temporarily suspend hover events while we remove transforms in order to measure the layout.\n *\n * This seems like an odd bit of scheduling but what we're doing is saying after\n * the next render, wait 10 milliseconds before reenabling hover events. Waiting until\n * the next frame results in missed, valid hover events. But triggering on the postRender\n * frame is too soon to avoid triggering events with layout measurements.\n *\n * Note: If we figure out a way of measuring layout while transforms remain applied, this can be removed.\n */\n\n\n VisualElement.prototype.suspendHoverEvents = function () {\n var _this = this;\n\n this.isHoverEventsEnabled = false;\n sync.postRender(function () {\n return setTimeout(function () {\n return _this.isHoverEventsEnabled = true;\n }, 10);\n });\n };\n\n VisualElement.prototype.getVariantPayload = function () {\n return this.config.custom;\n };\n\n VisualElement.prototype.getVariant = function (label) {\n var _a;\n\n return (_a = this.config.variants) === null || _a === void 0 ? void 0 : _a[label];\n };\n\n VisualElement.prototype.addVariantChild = function (visualElement) {\n var _this = this;\n\n if (!this.variantChildren) this.variantChildren = new Set();\n this.variantChildren.add(visualElement);\n return function () {\n return _this.variantChildren.delete(visualElement);\n };\n };\n\n VisualElement.prototype.addVariantChildOrder = function (visualElement) {\n if (!this.variantChildrenOrder) this.variantChildrenOrder = new Set();\n this.variantChildrenOrder.add(visualElement);\n };\n\n VisualElement.prototype.onAnimationStart = function () {\n var _a, _b;\n\n (_b = (_a = this.config).onAnimationStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n\n VisualElement.prototype.onAnimationComplete = function () {\n var _a, _b;\n\n this.isMounted && ((_b = (_a = this.config).onAnimationComplete) === null || _b === void 0 ? void 0 : _b.call(_a));\n };\n\n VisualElement.prototype.getDefaultTransition = function () {\n return this.config.transition;\n };\n\n VisualElement.prototype.subscribe = function (child) {\n var _this = this;\n\n this.children.add(child);\n return function () {\n return _this.children.delete(child);\n };\n }; // Check whether this element has a MotionValue of the provided key\n\n\n VisualElement.prototype.hasValue = function (key) {\n return this.values.has(key);\n }; // Add a MotionValue\n\n\n VisualElement.prototype.addValue = function (key, value) {\n if (this.hasValue(key)) this.removeValue(key);\n this.values.set(key, value);\n this.setSingleStaticValue(key, value.get());\n this.subscribeToValue(key, value);\n }; // Remove a MotionValue\n\n\n VisualElement.prototype.removeValue = function (key) {\n var _a;\n\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\n VisualElement.prototype.getValue = function (key, defaultValue) {\n var value = this.values.get(key);\n\n if (value === undefined && defaultValue !== undefined) {\n value = new MotionValue(defaultValue);\n this.addValue(key, value);\n }\n\n return value;\n }; // Iterate over all MotionValues\n\n\n VisualElement.prototype.forEachValue = function (callback) {\n this.values.forEach(callback);\n }; // Get the underlying rendered instance of this VisualElement. For instance in\n // HTMLVisualElement this will be a HTMLElement.\n\n\n VisualElement.prototype.getInstance = function () {\n return this.element;\n };\n\n VisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n this.config = __assign({}, config);\n };\n\n VisualElement.prototype.getBaseValue = function (key, _props) {\n return this.baseTarget[key];\n }; // Set a single `latest` value\n\n\n VisualElement.prototype.setSingleStaticValue = function (key, value) {\n this.latest[key] = value;\n }; // Statically set values to `latest` without needing a MotionValue\n\n\n VisualElement.prototype.setStaticValues = function (values, value) {\n if (typeof values === \"string\") {\n this.setSingleStaticValue(values, value);\n } else {\n for (var key in values) {\n this.setSingleStaticValue(key, values[key]);\n }\n }\n };\n\n VisualElement.prototype.scheduleRender = function () {\n sync.render(this.triggerRender, false, true);\n };\n\n VisualElement.prototype.scheduleUpdateLayoutDelta = function () {\n sync.preRender(this.rootParent.updateLayoutDelta, false, true);\n };\n\n VisualElement.prototype.subscribeToValue = function (key, value) {\n var _this = this;\n\n var onChange = function onChange(latest) {\n _this.setSingleStaticValue(key, latest); // Schedule onUpdate if we have an onUpdate listener and the component has mounted\n\n\n _this.element && _this.config.onUpdate && sync.update(_this.update, false, true);\n };\n\n var onRender = function onRender() {\n _this.element && _this.scheduleRender();\n };\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 }; // Mount the VisualElement with the actual DOM element\n\n\n VisualElement.prototype.mount = function (element) {\n invariant(!!element, \"No ref found. Ensure components created with motion.custom forward refs using React.forwardRef\");\n\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\n\n this.element = this.current = element;\n }; // Unmount the VisualElement and cancel any scheduled updates\n\n\n VisualElement.prototype.unmount = function () {\n var _this = this;\n\n this.forEachValue(function (_, key) {\n return _this.removeValue(key);\n });\n cancelSync.update(this.update);\n cancelSync.render(this.render);\n this.removeFromParent && this.removeFromParent();\n };\n\n return VisualElement;\n}();\n\nfunction noop(any) {\n return any;\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 */\n\n\nfunction convertBoundingBoxToAxisBox(_a) {\n var top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom;\n return {\n x: {\n min: left,\n max: right\n },\n y: {\n min: top,\n max: bottom\n }\n };\n}\n\nfunction convertAxisBoxToBoundingBox(_a) {\n var x = _a.x,\n 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 */\n\n\nfunction transformBoundingBox(_a, transformPoint) {\n var top = _a.top,\n left = _a.left,\n bottom = _a.bottom,\n right = _a.right;\n\n if (transformPoint === void 0) {\n transformPoint = noop;\n }\n\n var topLeft = transformPoint({\n x: left,\n y: top\n });\n var bottomRight = transformPoint({\n x: right,\n y: bottom\n });\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 */\n\n\nfunction axisBox() {\n return {\n x: {\n min: 0,\n max: 1\n },\n y: {\n min: 0,\n max: 1\n }\n };\n}\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 */\n\n\nvar zeroDelta = {\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0\n};\n\nfunction delta() {\n return {\n x: __assign({}, zeroDelta),\n y: __assign({}, zeroDelta)\n };\n}\n/**\n * ValueType for \"auto\"\n */\n\n\nvar auto = {\n test: function test(v) {\n return v === \"auto\";\n },\n parse: function parse(v) {\n return v;\n }\n};\n/**\n * ValueType for ints\n */\n\nvar int = __assign(__assign({}, number), {\n transform: Math.round\n});\n/**\n * A map of default value types for common values\n */\n\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 filter: filter,\n WebkitFilter: filter,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int\n};\n/**\n * A list of value types commonly used for dimensions\n */\n\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a provided value against a ValueType\n */\n\nvar testValueType = function testValueType(v) {\n return function (type) {\n return type.test(v);\n };\n};\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\n\n\nvar findDimensionValueType = function findDimensionValueType(v) {\n return dimensionValueTypes.find(testValueType(v));\n};\n/**\n * A list of all ValueTypes\n */\n\n\nvar valueTypes = __spread(dimensionValueTypes, [color, complex]);\n/**\n * Tests a value against the list of ValueTypes\n */\n\n\nvar findValueType = function findValueType(v) {\n return valueTypes.find(testValueType(v));\n};\n/**\n * Gets the default ValueType for the provided value key\n */\n\n\nvar getDefaultValueType = function getDefaultValueType(key) {\n return defaultValueTypes[key];\n};\n/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\n\n\nvar getValueAsType = function getValueAsType(value, type) {\n return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\nfunction getAnimatableNone(key, value) {\n var _a;\n\n var defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter) defaultValueType = complex; // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n\n return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\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 */\n\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 */\n\nvar order = [\"perspective\", \"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Generate a list of every possible transform key.\n */\n\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n transformAxes.forEach(function (axesKey) {\n var key = operationKey + axesKey;\n transformProps.push(key);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\n\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\n\n\nvar transformPropSet = new Set(transformProps);\n\nfunction isTransformProp(key) {\n return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\n\n\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\n\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 */\n\nfunction buildTransform(transform, transformKeys, transformTemplate, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n if (enableHardwareAcceleration === void 0) {\n enableHardwareAcceleration = true;\n }\n\n if (allowTransformNone === void 0) {\n allowTransformNone = true;\n } // The transform string we're going to build into.\n\n\n var transformString = \"\"; // Transform keys into their default order - this will determine the output order.\n\n transformKeys.sort(sortTransformProps); // Track whether the defined transform has a defined z so we don't add a\n // second to enable hardware acceleration\n\n var transformHasZ = false; // Loop over each transform and build them into transformString\n\n var numTransformKeys = transformKeys.length;\n\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n if (key === \"z\") transformHasZ = true;\n }\n\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += \"translateZ(0)\";\n } else {\n transformString = transformString.trim();\n } // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n\n\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n } else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n\n return transformString;\n}\n/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n\n\nfunction buildTransformOrigin(_a) {\n var _b = _a.originX,\n originX = _b === void 0 ? \"50%\" : _b,\n _c = _a.originY,\n originY = _c === void 0 ? \"50%\" : _c,\n _d = _a.originZ,\n 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 */\n\n\nfunction buildLayoutProjectionTransform(_a, treeScale, latestTransform) {\n var x = _a.x,\n 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\n var xTranslate = x.translate / treeScale.x;\n var yTranslate = y.translate / treeScale.y;\n var transform = \"translate3d(\" + xTranslate + \"px, \" + yTranslate + \"px, 0) \";\n\n if (latestTransform) {\n var rotate = latestTransform.rotate,\n rotateX = latestTransform.rotateX,\n rotateY = latestTransform.rotateY;\n if (rotate) transform += \"rotate(\" + rotate + \") \";\n if (rotateX) transform += \"rotateX(\" + rotateX + \") \";\n if (rotateY) transform += \"rotateY(\" + rotateY + \") \";\n }\n\n transform += \"scale(\" + x.scale + \", \" + y.scale + \")\";\n return !latestTransform && transform === identityProjection ? \"\" : transform;\n}\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 */\n\nfunction buildLayoutProjectionTransformOrigin(_a) {\n var x = _a.x,\n y = _a.y;\n return x.origin * 100 + \"% \" + y.origin * 100 + \"% 0\";\n}\n/**\n * Returns true if the provided key is a CSS variable\n */\n\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 */\n\n\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nfunction parseCSSVariable(current) {\n var match = cssVariableRegex.exec(current);\n if (!match) return [,];\n\n var _a = __read(match, 3),\n token = _a[1],\n fallback = _a[2];\n\n return [token, fallback];\n}\n\nvar maxDepth = 4;\n\nfunction getVariableValue(current, element, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n\n invariant(depth <= maxDepth, \"Max CSS variable fallback depth detected in property \\\"\" + current + \"\\\". This may indicate a circular fallback dependency.\");\n\n var _a = __read(parseCSSVariable(current), 2),\n token = _a[0],\n fallback = _a[1]; // No CSS variable detected\n\n\n if (!token) return; // Attempt to read this CSS variable off the element\n\n var resolved = window.getComputedStyle(element).getPropertyValue(token);\n\n if (resolved) {\n return resolved.trim();\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 } else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\n\n\nfunction resolveCSSVariables(visualElement, _a, transitionEnd) {\n var _b;\n\n var target = __rest(_a, []);\n\n var element = visualElement.getInstance();\n if (!(element instanceof HTMLElement)) return {\n target: target,\n 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\n if (transitionEnd) {\n transitionEnd = __assign({}, transitionEnd);\n } // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n\n\n visualElement.forEachValue(function (value) {\n var current = value.get();\n if (!isCSSVariable$1(current)) return;\n var resolved = getVariableValue(current, element);\n if (resolved) value.set(resolved);\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\n for (var key in target) {\n var current = target[key];\n if (!isCSSVariable$1(current)) continue;\n var resolved = getVariableValue(current, element);\n if (!resolved) continue; // Clone target if it hasn't already been\n\n target[key] = resolved; // 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\n if (transitionEnd) (_b = transitionEnd[key]) !== null && _b !== void 0 ? _b : transitionEnd[key] = current;\n }\n\n return {\n target: target,\n transitionEnd: transitionEnd\n };\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 */\n\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 } 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\n\n var x = pixelsToPercent(latest, viewportBox.x);\n var y = pixelsToPercent(latest, viewportBox.y);\n return x + \"% \" + y + \"%\";\n}\n\nvar varToken = \"_$css\";\n\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\n var containsCSSVariables = latest.includes(\"var(\");\n var cssVariables = [];\n\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, function (match) {\n cssVariables.push(match);\n return varToken;\n });\n }\n\n var shadow = complex.parse(latest); // TODO: Doesn't support multiple shadows\n\n if (shadow.length > 5) return original;\n var template = complex.createTransformer(latest);\n var offset = typeof shadow[0] !== \"number\" ? 1 : 0; // Calculate the overall context scale\n\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\n var averageScale = mix(xScale, yScale, 0.5); // Blur\n\n if (typeof shadow[2 + offset] === \"number\") shadow[2 + offset] /= averageScale; // Spread\n\n if (typeof shadow[3 + offset] === \"number\") shadow[3 + offset] /= averageScale;\n var output = template(shadow);\n\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\n return output;\n}\n\nvar borderCorrectionDefinition = {\n process: correctBorderRadius\n};\nvar valueScaleCorrection = {\n borderRadius: __assign(__assign({}, borderCorrectionDefinition), {\n applyTo: [\"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderBottomLeftRadius\", \"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 */\n\nfunction addScaleCorrection(correctors) {\n for (var key in correctors) {\n valueScaleCorrection[key] = correctors[key];\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 */\n\n\nfunction buildHTMLStyles(latest, style, vars, transform, transformOrigin, transformKeys, _a, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var enableHardwareAcceleration = _a.enableHardwareAcceleration,\n transformTemplate = _a.transformTemplate,\n allowTransformNone = _a.allowTransformNone; // 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\n transformKeys.length = 0; // Track whether we encounter any transform or transformOrigin values.\n\n var hasTransform = false;\n var hasTransformOrigin = false; // Does the calculated transform essentially equal \"none\"?\n\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\n for (var key in latest) {\n var value = latest[key]; // Convert the value to its default value type, ie 0 -> \"0px\"\n\n var valueType = getDefaultValueType(key);\n var valueAsType = getValueAsType(value, valueType);\n\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) continue; // 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\n var defaultValue = valueType.default !== undefined ? valueType.default : 0;\n if (value !== defaultValue) transformIsNone = false;\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 } 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; // If we need to perform scale correction, and we have a handler for this\n // value type (ie borderRadius), perform it\n\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\n var applyTo = valueScaleCorrection[key].applyTo;\n\n if (applyTo) {\n var num = applyTo.length;\n\n for (var i = 0; i < num; i++) {\n bucket[applyTo[i]] = corrected;\n }\n } else {\n bucket[key] = corrected;\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\n\n if (isLayoutProjectionEnabled) {\n style.transform = buildLayoutProjectionTransform(deltaFinal, treeScale, hasTransform ? transform : undefined);\n\n if (transformTemplate) {\n style.transform = transformTemplate(transform, style.transform);\n }\n\n style.transformOrigin = buildLayoutProjectionTransformOrigin(deltaFinal);\n } else {\n if (hasTransform) {\n style.transform = buildTransform(transform, transformKeys, transformTemplate, transformIsNone, enableHardwareAcceleration, allowTransformNone);\n }\n\n if (hasTransformOrigin) {\n style.transformOrigin = buildTransformOrigin(transformOrigin);\n }\n }\n}\n/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\n\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 */\n\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 */\n\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 */\n\n\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\n\n\nfunction applyAxisDelta(axis, translate, scale, originPoint, boxScale) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (scale === void 0) {\n scale = 1;\n }\n\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 */\n\n\nfunction applyBoxDelta(box, _a) {\n var x = _a.x,\n 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 */\n\n\nfunction applyAxisTransforms(final, axis, transforms, _a) {\n var _b = __read(_a, 3),\n key = _b[0],\n scaleKey = _b[1],\n originKey = _b[2]; // Copy the current axis to the final axis before mutation\n\n\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); // Apply the axis delta to the final axis\n\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 */\n\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 */\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 */\n\n\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\n\n\nfunction removeAxisDelta(axis, translate, scale, origin, boxScale) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (scale === void 0) {\n scale = 1;\n }\n\n if (origin === void 0) {\n origin = 0.5;\n }\n\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 */\n\n\nfunction removeAxisTransforms(axis, transforms, _a) {\n var _b = __read(_a, 3),\n key = _b[0],\n scaleKey = _b[1],\n originKey = _b[2];\n\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 */\n\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 */\n\n\nfunction applyTreeDeltas(box, treeScale, treePath) {\n var treeLength = treePath.length;\n if (!treeLength) return; // Reset the treeScale\n\n treeScale.x = treeScale.y = 1;\n\n for (var i = 0; i < treeLength; i++) {\n var delta = treePath[i].delta; // Incoporate each ancestor's scale into a culmulative treeScale for this component\n\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale; // Apply each ancestor's calculated delta into this component's recorded layout box\n\n applyBoxDelta(box, delta);\n }\n}\n\nvar clampProgress = function clampProgress(v) {\n return clamp(0, 1, v);\n};\n/**\n * Returns true if the provided value is within maxDistance of the provided target\n */\n\n\nfunction isNear(value, target, maxDistance) {\n if (target === void 0) {\n target = 0;\n }\n\n if (maxDistance === void 0) {\n maxDistance = 0.01;\n }\n\n return distance(value, target) < maxDistance;\n}\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 */\n\n\nfunction calcOrigin(source, target) {\n var origin = 0.5;\n var sourceLength = calcLength(source);\n var targetLength = calcLength(target);\n\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n } else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\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 */\n\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)) delta.scale = 1;\n delta.translate = mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate)) 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 */\n\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} // Call a handler once for each axis\n\n\nfunction eachAxis(handler) {\n return [handler(\"x\"), handler(\"y\")];\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 */\n\n\nfunction getBoundingBox(element, transformPagePoint) {\n var box = element.getBoundingClientRect();\n return convertBoundingBoxToAxisBox(transformBoundingBox(box, transformPagePoint));\n}\n\nvar isKeyframesTarget = function isKeyframesTarget(v) {\n return Array.isArray(v);\n};\n\nvar positionalKeys = new Set([\"width\", \"height\", \"top\", \"left\", \"right\", \"bottom\", \"x\", \"y\"]);\n\nvar isPositionalKey = function isPositionalKey(key) {\n return positionalKeys.has(key);\n};\n\nvar hasPositionalKey = function hasPositionalKey(target) {\n return Object.keys(target).some(isPositionalKey);\n};\n\nvar setAndResetVelocity = function setAndResetVelocity(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};\n\nvar isNumOrPxType = function isNumOrPxType(v) {\n return v === number || v === px;\n};\n\nvar BoundingBoxDimension;\n\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 = {}));\n\nvar getPosFromMatrix = function getPosFromMatrix(matrix, pos) {\n return parseFloat(matrix.split(\", \")[pos]);\n};\n\nvar getTranslateFromMatrix = function getTranslateFromMatrix(pos2, pos3) {\n return function (_bbox, _a) {\n var transform = _a.transform;\n if (transform === \"none\" || !transform) return 0;\n var matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n } else {\n var matrix = transform.match(/^matrix\\((.+)\\)$/);\n\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n } else {\n return 0;\n }\n }\n };\n};\n\nvar transformKeys = new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformProps.filter(function (key) {\n return !transformKeys.has(key);\n});\n\nfunction removeNonTranslationalTransform(visualElement) {\n var removedTransforms = [];\n nonTranslationalTransformKeys.forEach(function (key) {\n var value = visualElement.getValue(key);\n\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n }); // Apply changes to element before measurement\n\n if (removedTransforms.length) visualElement.render();\n return removedTransforms;\n}\n\nvar positionalValues = {\n // Dimensions\n width: function width(_a) {\n var x = _a.x;\n return x.max - x.min;\n },\n height: function height(_a) {\n var y = _a.y;\n return y.max - y.min;\n },\n top: function top(_bbox, _a) {\n var top = _a.top;\n return parseFloat(top);\n },\n left: function left(_bbox, _a) {\n var left = _a.left;\n return parseFloat(left);\n },\n bottom: function bottom(_a, _b) {\n var y = _a.y;\n var top = _b.top;\n return parseFloat(top) + (y.max - y.min);\n },\n right: function right(_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};\n\nvar convertChangedValueTypes = function convertChangedValueTypes(target, visualElement, changedKeys) {\n var originBbox = visualElement.getBoundingBox();\n var elementComputedStyle = visualElement.getComputedStyle();\n var display = elementComputedStyle.display,\n top = elementComputedStyle.top,\n left = elementComputedStyle.left,\n bottom = elementComputedStyle.bottom,\n right = elementComputedStyle.right,\n transform = elementComputedStyle.transform;\n var originComputedStyle = {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n transform: transform\n }; // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n\n if (display === \"none\") {\n visualElement.setStaticValues(\"display\", target.display || \"block\");\n } // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n\n\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};\n\nvar checkAndConvertChangedValueTypes = function checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd) {\n if (origin === void 0) {\n origin = {};\n }\n\n if (transitionEnd === void 0) {\n transitionEnd = {};\n }\n\n target = __assign({}, target);\n transitionEnd = __assign({}, transitionEnd);\n var targetPositionalKeys = Object.keys(target).filter(isPositionalKey); // 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\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)) return;\n var from = origin[key];\n var to = target[key];\n var fromType = findDimensionValueType(from);\n var toType; // 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\n if (isKeyframesTarget(to)) {\n var numKeyframes = to.length;\n\n for (var i = to[0] === null ? 1 : 0; i < numKeyframes; i++) {\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType || isNumOrPxType(fromType) && isNumOrPxType(toType), \"Keyframes must be of the same dimension as the current value\");\n } else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n } else {\n toType = findDimensionValueType(to);\n }\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\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n } else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n } else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) && (toType === null || toType === void 0 ? void 0 : toType.transform) && (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 } else {\n target[key] = fromType.transform(to);\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\n changedValueTypeKeys.push(key);\n transitionEnd[key] = transitionEnd[key] !== undefined ? transitionEnd[key] : target[key];\n setAndResetVelocity(value, to);\n }\n }\n });\n\n if (changedValueTypeKeys.length) {\n var convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys); // If we removed transform values, reapply them before the next render\n\n if (removedTransformValues.length) {\n removedTransformValues.forEach(function (_a) {\n var _b = __read(_a, 2),\n key = _b[0],\n value = _b[1];\n\n visualElement.getValue(key).set(value);\n });\n } // Reapply original values\n\n\n visualElement.render();\n return {\n target: convertedTarget,\n transitionEnd: transitionEnd\n };\n } else {\n return {\n target: target,\n transitionEnd: transitionEnd\n };\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 */\n\n\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target) ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd) : {\n target: target,\n 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 */\n\n\nvar parseDomVariant = function parseDomVariant(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 * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\n\n\nvar isNumericalString = function isNumericalString(v) {\n return /^\\-?\\d*\\.?\\d+$/.test(v);\n};\n\nvar isCustomValue = function isCustomValue(v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\n\nvar resolveFinalValueInKeyframes = function resolveFinalValueInKeyframes(v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n/**\n * Decides if the supplied variable is an array of variant labels\n */\n\n\nfunction isVariantLabels(v) {\n return Array.isArray(v);\n}\n/**\n * Decides if the supplied variable is variant label\n */\n\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 */\n\n\nfunction getCurrent(visualElement) {\n var current = {};\n visualElement.forEachValue(function (value, key) {\n return current[key] = value.get();\n });\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\n\n\nfunction getVelocity(visualElement) {\n var velocity = {};\n visualElement.forEachValue(function (value, key) {\n return velocity[key] = value.getVelocity();\n });\n return velocity;\n}\n/**\n * Resovles a variant if it's a variant resolver\n */\n\n\nfunction resolveVariant(visualElement, definition, custom) {\n if (typeof definition === \"string\") {\n definition = visualElement.getVariant(definition);\n }\n\n return typeof definition === \"function\" ? definition(custom !== null && custom !== void 0 ? custom : visualElement.getVariantPayload(), getCurrent(visualElement), getVelocity(visualElement)) : definition;\n}\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\n\n\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n } else {\n visualElement.addValue(key, motionValue(value));\n }\n}\n\nfunction setTarget(visualElement, definition) {\n var resolved = resolveVariant(visualElement, definition);\n\n var _a = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {},\n _b = _a.transitionEnd,\n transitionEnd = _b === void 0 ? {} : _b,\n _c = _a.transition,\n target = __rest(_a, [\"transitionEnd\", \"transition\"]);\n\n target = __assign(__assign({}, target), transitionEnd);\n\n for (var key in target) {\n var value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nfunction setVariants(visualElement, variantLabels) {\n var reversedLabels = __spread(variantLabels).reverse();\n\n reversedLabels.forEach(function (key) {\n var _a;\n\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}\n\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n } else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n } else {\n setTarget(visualElement, definition);\n }\n}\n\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n\n var _c;\n\n var newValueKeys = Object.keys(target).filter(function (key) {\n return !visualElement.hasValue(key);\n });\n var numNewValues = newValueKeys.length;\n if (!numNewValues) return;\n\n for (var i = 0; i < numNewValues; i++) {\n var key = newValueKeys[i];\n var targetValue = target[key];\n var value = null; // 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\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\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\n\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\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 } else if (!findValueType(value) && complex.test(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\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}\n\nfunction getOriginFromTransition(key, transition) {\n if (!transition) return;\n var valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\n\nfunction getOrigin(target, transition, visualElement) {\n var _a, _b;\n\n var origin = {};\n\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\n return origin;\n}\n\nvar isMotionValue = function isMotionValue(value) {\n return value instanceof MotionValue;\n};\n/**\n * A VisualElement for HTMLElements\n */\n\n\nvar HTMLVisualElement =\n/** @class */\nfunction (_super) {\n __extends(HTMLVisualElement, _super);\n\n function HTMLVisualElement() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n *\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\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\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\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\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\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\n _this.transformKeys = [];\n _this.config = _this.defaultConfig;\n /**\n * ========================================\n * Layout\n * ========================================\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\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\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\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\n _this.treeScale = {\n x: 1,\n y: 1\n };\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\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\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\n _this.deltaTransform = identityProjection;\n /**\n *\n */\n\n _this.stopLayoutAxisAnimation = {\n x: function x() {},\n y: function y() {}\n };\n _this.isTargetBoxLocked = false;\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\n _this.children.forEach(fireUpdateLayoutDelta);\n };\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\n\n HTMLVisualElement.prototype.removeValue = function (key) {\n _super.prototype.removeValue.call(this, key);\n\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\n\n HTMLVisualElement.prototype.clean = function () {\n this.style = {};\n this.vars = {};\n this.transform = {};\n };\n\n HTMLVisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n this.config = __assign(__assign({}, this.defaultConfig), config);\n };\n /**\n * Read a value directly from the HTMLElement style.\n */\n\n\n HTMLVisualElement.prototype.read = function (key) {\n var computedStyle = this.getComputedStyle();\n return (isCSSVariable(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n };\n\n HTMLVisualElement.prototype.addValue = function (key, value) {\n _super.prototype.addValue.call(this, key, value); // If we have rotate values we want to foce the layoutOrigin used in layout projection\n // to the center of the element.\n\n\n if (key.startsWith(\"rotate\")) 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\n\n HTMLVisualElement.prototype.readNativeValue = function (key) {\n if (isTransformProp(key)) {\n var defaultValueType = getDefaultValueType(key);\n return defaultValueType ? defaultValueType.default || 0 : 0;\n } else {\n return this.read(key);\n }\n };\n\n HTMLVisualElement.prototype.getBaseValue = function (key, props) {\n var _a;\n\n var style = (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\n return style !== undefined && !isMotionValue(style) ? style : _super.prototype.getBaseValue.call(this, key, props);\n };\n /**\n * Ensure that HTML and Framer-specific value types like `px`->`%` and `Color`\n * can be animated by Motion.\n */\n\n\n HTMLVisualElement.prototype.makeTargetAnimatable = function (_a, parseDOMValues) {\n if (parseDOMValues === void 0) {\n parseDOMValues = true;\n }\n\n var transition = _a.transition,\n transitionEnd = _a.transitionEnd,\n target = __rest(_a, [\"transition\", \"transitionEnd\"]);\n\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\n if (transformValues) {\n if (transitionEnd) transitionEnd = transformValues(transitionEnd);\n if (target) target = transformValues(target);\n if (origin) origin = transformValues(origin);\n }\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\n return __assign({\n transition: transition,\n transitionEnd: transitionEnd\n }, target);\n };\n\n HTMLVisualElement.prototype.enableLayoutProjection = function () {\n this.isLayoutProjectionEnabled = true;\n };\n\n HTMLVisualElement.prototype.hide = function () {\n if (this.isVisible === false) return;\n this.isVisible = false;\n this.scheduleRender();\n };\n\n HTMLVisualElement.prototype.show = function () {\n if (this.isVisible === true) 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\n\n HTMLVisualElement.prototype.onLayoutUpdate = function (callback) {\n return this.layoutUpdateListeners.add(callback);\n };\n\n HTMLVisualElement.prototype.onLayoutMeasure = function (callback) {\n return this.layoutMeasureListeners.add(callback);\n };\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\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\n\n HTMLVisualElement.prototype.getBoundingBox = function () {\n var transformPagePoint = this.config.transformPagePoint;\n return getBoundingBox(this.element, transformPagePoint);\n };\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\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\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\n this.rebaseTargetBox(false, this.prevViewportBox);\n };\n\n HTMLVisualElement.prototype.rebaseTargetBox = function (force, box) {\n var _this = this;\n\n if (force === void 0) {\n force = false;\n }\n\n if (box === void 0) {\n box = this.box;\n }\n\n var _a = this.getAxisProgress(),\n x = _a.x,\n y = _a.y;\n\n var shouldRebase = this.box && !this.isTargetBoxLocked && !x.isAnimating() && !y.isAnimating();\n\n if (force || shouldRebase) {\n eachAxis(function (axis) {\n var _a = box[axis],\n min = _a.min,\n max = _a.max;\n\n _this.setAxisTarget(axis, min, max);\n });\n }\n };\n\n HTMLVisualElement.prototype.measureLayout = function () {\n var _this = this;\n\n this.box = this.getBoundingBox();\n this.boxCorrected = copyAxisBox(this.box);\n if (!this.targetBox) this.targetBox = copyAxisBox(this.box);\n this.layoutMeasureListeners.notify(this.box, this.prevViewportBox || this.box);\n sync.update(function () {\n return _this.rebaseTargetBox();\n });\n };\n\n HTMLVisualElement.prototype.lockTargetBox = function () {\n this.isTargetBoxLocked = true;\n };\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\n\n HTMLVisualElement.prototype.resetTransform = function () {\n /**\n * When we reset the transform of an element, there's a fair possibility that\n * the element will visually move from underneath the pointer, triggering attached\n * pointerenter/leave events. We temporarily suspend these while measurement takes place.\n */\n this.suspendHoverEvents();\n var transformTemplate = this.config.transformTemplate;\n this.element.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\"; // Ensure that whatever happens next, we restore our transform\n\n this.scheduleRender();\n };\n /**\n * Set new min/max boundaries to project an axis into\n */\n\n\n HTMLVisualElement.prototype.setAxisTarget = function (axis, min, max) {\n var targetAxis = this.targetBox[axis];\n targetAxis.min = min;\n targetAxis.max = max; // Flag that we want to fire the onViewportBoxUpdate event handler\n\n this.hasViewportBoxUpdated = true;\n this.rootParent.scheduleUpdateLayoutDelta();\n };\n\n HTMLVisualElement.prototype.getAxisProgress = function () {\n if (!this.axisProgress) {\n this.axisProgress = {\n x: motionValue(0),\n y: motionValue(0)\n };\n }\n\n return this.axisProgress;\n };\n /**\n *\n */\n\n\n HTMLVisualElement.prototype.startLayoutAxisAnimation = function (axis, transition) {\n var _this = this;\n\n var _a;\n\n var progress = this.getAxisProgress()[axis];\n var _b = this.targetBox[axis],\n min = _b.min,\n 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\n progress.onChange(function (v) {\n return _this.setAxisTarget(axis, v, v + length);\n });\n return (_a = this.animateMotionValue) === null || _a === void 0 ? void 0 : _a.call(this, axis, progress, 0, transition);\n };\n\n HTMLVisualElement.prototype.stopLayoutAnimation = function () {\n var _this = this;\n\n eachAxis(function (axis) {\n return _this.getAxisProgress()[axis].stop();\n });\n };\n\n HTMLVisualElement.prototype.withoutTransform = function (callback) {\n if (this.isLayoutProjectionEnabled) {\n this.resetTransform();\n }\n\n if (this.parent) {\n this.parent.withoutTransform(callback);\n } else {\n callback();\n }\n\n if (this.isLayoutProjectionEnabled) {\n this.element.style.transform = this.style.transform;\n }\n };\n /**\n * Update the layout deltas to reflect the relative positions of the layout\n * and the desired target box\n */\n\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 var prevTreeScaleX = this.treeScale.x;\n var prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n\n applyTreeDeltas(this.boxCorrected, this.treeScale, 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\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\n this.hasViewportBoxUpdated && 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\n var deltaTransform = buildLayoutProjectionTransform(this.delta, this.treeScale);\n\n if (deltaTransform !== this.deltaTransform || // Also compare calculated treeScale, for values that rely on only this for scale correction.\n prevTreeScaleX !== this.treeScale.x || prevTreeScaleY !== this.treeScale.y) {\n this.scheduleRender();\n }\n\n this.deltaTransform = deltaTransform;\n };\n\n HTMLVisualElement.prototype.updateTransformDeltas = function () {\n if (!this.isLayoutProjectionEnabled || !this.box) 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\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\n updateBoxDelta(this.deltaFinal, this.boxCorrected, this.targetBoxFinal, this.layoutOrigin);\n };\n /**\n * ========================================\n * Build & render\n * ========================================\n */\n\n /**\n * Build a style prop using the latest resolved MotionValues\n */\n\n\n HTMLVisualElement.prototype.build = function () {\n this.updateTransformDeltas();\n\n if (this.isVisible !== undefined) {\n this.style.visibility = this.isVisible ? \"visible\" : \"hidden\";\n }\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\n\n HTMLVisualElement.prototype.render = function () {\n // Rebuild the latest animated values into style and vars caches.\n this.build(); // Directly assign style into the Element's style prop. In tests Object.assign is the\n // fastest way to assign styles.\n\n Object.assign(this.element.style, this.style); // Loop over any CSS variables and assign those.\n\n for (var key in this.vars) {\n this.element.style.setProperty(key, this.vars[key]);\n }\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 */\n\n\nvar fireUpdateLayoutDelta = function fireUpdateLayoutDelta(child) {\n return child.updateLayoutDelta();\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 */\n\n\nfunction useConstant(init) {\n var ref = useRef(null);\n\n if (ref.current === null) {\n ref.current = init();\n }\n\n return ref.current;\n}\n\nfunction calcOrigin$1(origin, offset, size) {\n return typeof origin === \"string\" ? origin : 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 */\n\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} // Convert a progress 0-1 to a pixels value based on the provided length\n\n\nvar progressToPixels = function progressToPixels(progress, length) {\n return px.transform(progress * length);\n};\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 */\n\nfunction buildSVGPath(attrs, totalLength, length, spacing, offset, useDashCase) {\n if (spacing === void 0) {\n spacing = 1;\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n if (useDashCase === void 0) {\n 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\n\n var keys = useDashCase ? dashKeys : camelKeys; // Build the dash offset\n\n attrs[keys.offset] = progressToPixels(-offset, totalLength); // Build the dash array\n\n var pathLength = progressToPixels(length, totalLength);\n var pathSpacing = progressToPixels(spacing, totalLength);\n attrs[keys.array] = pathLength + \" \" + pathSpacing;\n}\n\nvar unmeasured = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n};\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\n\nfunction buildSVGAttrs(_a, style, vars, attrs, transform, transformOrigin, transformKeys, config, dimensions, totalPathLength, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var attrX = _a.attrX,\n attrY = _a.attrY,\n originX = _a.originX,\n originY = _a.originY,\n pathLength = _a.pathLength,\n _b = _a.pathSpacing,\n pathSpacing = _b === void 0 ? 1 : _b,\n _c = _a.pathOffset,\n 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\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\n if (attrs.transform) {\n style.transform = attrs.transform;\n delete attrs.transform;\n } // Parse transformOrigin\n\n\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 } // Treat x/y not as shortcuts but as actual attributes\n\n\n if (attrX !== undefined) attrs.x = attrX;\n if (attrY !== undefined) attrs.y = attrY; // Build SVG path if one has been measured\n\n if (totalPathLength !== undefined && pathLength !== undefined) {\n buildSVGPath(attrs, totalPathLength, pathLength, pathSpacing, pathOffset, false);\n }\n\n return attrs;\n}\n/**\n * A set of attribute names that are always read/written as camel case.\n */\n\n\nvar camelCaseAttributes = new Set([\"baseFrequency\", \"diffuseConstant\", \"kernelMatrix\", \"kernelUnitLength\", \"keySplines\", \"keyTimes\", \"limitingConeAngle\", \"markerHeight\", \"markerWidth\", \"numOctaves\", \"targetX\", \"targetY\", \"surfaceScale\", \"specularConstant\", \"specularExponent\", \"stdDeviation\", \"tableValues\", \"viewBox\"]);\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\n\nvar camelToDash = function camelToDash(str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n/**\n * A VisualElement for SVGElements. Inherits from and extends HTMLVisualElement as the two\n * share data structures.\n */\n\n\nvar SVGVisualElement =\n/** @class */\nfunction (_super) {\n __extends(SVGVisualElement, _super);\n\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\n\n _this.attrs = {};\n /**\n * We disable hardware acceleration for SVG transforms as they're not currently able to be accelerated.\n */\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\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\n\n SVGVisualElement.prototype.mount = function (element) {\n _super.prototype.mount.call(this, element);\n\n this.measure();\n };\n /**\n * Update the SVG dimensions and path length\n */\n\n\n SVGVisualElement.prototype.measure = function () {\n var _this = this;\n\n try {\n this.dimensions = typeof this.element.getBBox === \"function\" ? this.element.getBBox() : this.element.getBoundingClientRect();\n } catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n this.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n if (isPath(this.element)) {\n this.totalPathLength = this.element.getTotalLength();\n }\n /**\n * Ensure we render the element as soon as possible to reflect the measured dimensions.\n * Preferably this would happen synchronously but we put it in rAF to prevent layout thrashing.\n */\n\n\n sync.render(function () {\n return _this.render();\n });\n };\n\n SVGVisualElement.prototype.getBaseValue = function (key, props) {\n var prop = props[key];\n return prop !== undefined && !isMotionValue(prop) ? prop : _super.prototype.getBaseValue.call(this, key, props);\n };\n /**\n * Empty the mutable data structures in case attrs have been removed between renders.\n */\n\n\n SVGVisualElement.prototype.clean = function () {\n _super.prototype.clean.call(this);\n\n this.attrs = {};\n };\n /**\n * Read an attribute directly from the SVGElement\n */\n\n\n SVGVisualElement.prototype.read = function (key) {\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return this.element.getAttribute(key);\n };\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\n SVGVisualElement.prototype.render = function () {\n // Update HTML styles and CSS variables\n _super.prototype.render.call(this); // Loop through attributes and apply them to the SVGElement\n\n\n for (var key in this.attrs) {\n this.element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, this.attrs[key]);\n }\n };\n\n return SVGVisualElement;\n}(HTMLVisualElement);\n\nfunction isPath(element) {\n return element.tagName === \"path\";\n}\n/**\n * @internal\n */\n\n/**\n * @internal\n */\n\n\nvar svgElements = [\"animate\", \"circle\", \"clipPath\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"foreignObject\", \"g\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\", \"stop\", \"svg\", \"switch\", \"symbol\", \"text\", \"textPath\", \"tspan\", \"use\", \"view\"];\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 */\n\nfunction isSVGComponent(Component) {\n return typeof Component === \"string\" && svgTagNames.has(Component);\n}\n/**\n * @public\n */\n\n\nvar PresenceContext = createContext(null);\nvar MotionContext = createContext({\n variantContext: {}\n});\n/**\n * @internal\n */\n\nfunction useVariantContext() {\n return useContext(MotionContext).variantContext;\n}\n\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n/**\n * @internal\n */\n\n\nvar LayoutGroupContext = createContext(null);\n/**\n * DOM-flavoured variation of the useVisualElement hook. Used to create either a HTMLVisualElement\n * or SVGVisualElement for the component.\n *\n */\n\nvar useDomVisualElement = function useDomVisualElement(Component, props, isStatic, ref) {\n var parent = useVisualElementContext();\n var visualElement = useConstant(function () {\n var DOMVisualElement = isSVGComponent(Component) ? SVGVisualElement : HTMLVisualElement;\n return new DOMVisualElement(parent, ref);\n });\n /**\n * If this is a static component, for instance on the Framer canvas, we essentially want to\n * treat it as a new component every render.\n * TODO: This shouldn't live in a DOM-specific hook but there'll be a better sense of where this\n * and much of this hook should live when creating a new type of VisualElement (e.g Three.js).\n */\n\n if (isStatic) {\n visualElement.values.clear();\n visualElement.latest = {};\n }\n\n visualElement.updateConfig(__assign(__assign(__assign({}, visualElement.config), {\n enableHardwareAcceleration: !isStatic\n }), props));\n var layoutGroupId = useContext(LayoutGroupContext);\n visualElement.layoutId = layoutGroupId && props.layoutId ? layoutGroupId + \"-\" + props.layoutId : props.layoutId;\n var presenceContext = useContext(PresenceContext);\n /**\n * Update VisualElement with presence data.\n */\n\n var isPresent = presenceContext === null ? true : presenceContext.isPresent;\n visualElement.isPresent = props.isPresent !== undefined ? props.isPresent : isPresent;\n /**\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\n useEffect(function () {\n var cancelViewportBoxUpdate;\n var cancelLayoutMeasureUpdate;\n\n if (props.onViewportBoxUpdate) {\n cancelViewportBoxUpdate = visualElement.onViewportBoxUpdate(props.onViewportBoxUpdate);\n }\n\n if (props._onLayoutMeasure) {\n cancelLayoutMeasureUpdate = visualElement.onLayoutMeasure(props._onLayoutMeasure);\n }\n\n if (cancelViewportBoxUpdate || cancelLayoutMeasureUpdate) {\n return function () {\n cancelViewportBoxUpdate === null || cancelViewportBoxUpdate === void 0 ? void 0 : cancelViewportBoxUpdate();\n cancelLayoutMeasureUpdate === null || cancelLayoutMeasureUpdate === void 0 ? void 0 : cancelLayoutMeasureUpdate();\n };\n }\n }, [props.onViewportBoxUpdate, props._onLayoutMeasure]);\n return visualElement;\n};\n/**\n * @public\n */\n\n\nvar MotionConfigContext = createContext({\n transformPagePoint: function transformPagePoint(p) {\n return p;\n },\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 */\n\nfunction MotionConfig(_a) {\n var children = _a.children,\n _b = _a.features,\n features = _b === void 0 ? [] : _b,\n props = __rest(_a, [\"children\", \"features\"]);\n\n var pluginContext = useContext(MotionConfigContext);\n\n var loadedFeatures = __spread(pluginContext.features, features); // We do want to rerender children when the number of loaded features changes\n\n\n var value = useMemo(function () {\n return {\n features: loadedFeatures\n };\n }, [loadedFeatures.length]); // Mutative to prevent triggering rerenders in all listening\n // components every time this component renders\n\n for (var key in props) {\n value[key] = props[key];\n }\n\n return createElement(MotionConfigContext.Provider, {\n value: value\n }, children);\n}\n\nfunction useUnmountEffect(callback) {\n return useEffect(function () {\n return function () {\n return callback();\n };\n }, []);\n}\n\nfunction addDomEvent(target, eventName, handler, options) {\n target.addEventListener(eventName, handler, options);\n return function () {\n return target.removeEventListener(eventName, handler, options);\n };\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 */\n\n\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(function () {\n var element = ref.current;\n\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\n return event instanceof MouseEvent;\n}\n\nfunction isTouchEvent(event) {\n var hasTouches = !!event.touches;\n return hasTouches;\n}\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\n\n\nfunction filterPrimaryPointer(eventHandler) {\n return function (event) {\n var isMouseEvent = event instanceof MouseEvent;\n var isPrimaryPointer = !isMouseEvent || isMouseEvent && event.button === 0;\n\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\n\nvar defaultPagePoint = {\n pageX: 0,\n pageY: 0\n};\n\nfunction pointFromTouch(e, pointType) {\n if (pointType === void 0) {\n pointType = \"page\";\n }\n\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}\n\nfunction pointFromMouse(point, pointType) {\n if (pointType === void 0) {\n pointType = \"page\";\n }\n\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"]\n };\n}\n\nfunction extractEventInfo(event, pointType) {\n if (pointType === void 0) {\n pointType = \"page\";\n }\n\n return {\n point: isTouchEvent(event) ? pointFromTouch(event, pointType) : pointFromMouse(event, pointType)\n };\n}\n\nfunction getViewportPointFromEvent(event) {\n return extractEventInfo(event, \"client\");\n}\n\nvar wrapHandler = function wrapHandler(handler, shouldFilterPrimaryPointer) {\n if (shouldFilterPrimaryPointer === void 0) {\n shouldFilterPrimaryPointer = false;\n }\n\n var listener = function listener(event) {\n return handler(event, extractEventInfo(event));\n };\n\n return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener;\n};\n\nvar isBrowser = typeof window !== \"undefined\"; // We check for event support via functions in case they've been mocked by a testing suite.\n\nvar supportsPointerEvents = function supportsPointerEvents() {\n return isBrowser && window.onpointerdown === null;\n};\n\nvar supportsTouchEvents = function supportsTouchEvents() {\n return isBrowser && window.ontouchstart === null;\n};\n\nvar supportsMouseEvents = function supportsMouseEvents() {\n return isBrowser && 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};\n\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n } else if (supportsTouchEvents()) {\n return touchEventNames[name];\n } else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n\n return name;\n}\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), handler && wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n\n\nvar secondsToMilliseconds = function secondsToMilliseconds(seconds) {\n return seconds * 1000;\n};\n/**\n * @internal\n */\n\n\nvar PanSession =\n/** @class */\nfunction () {\n function PanSession(event, handlers, _a) {\n var _this = this;\n\n var transformPagePoint = (_a === void 0 ? {} : _a).transformPagePoint;\n /**\n * @internal\n */\n\n this.startEvent = null;\n /**\n * @internal\n */\n\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n\n this.handlers = {};\n\n this.updatePoint = function () {\n if (!(_this.lastMoveEvent && _this.lastMoveEventInfo)) return;\n var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n var isPanStarted = _this.startEvent !== null; // 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\n var isDistancePastThreshold = distance(info.offset, {\n x: 0,\n y: 0\n }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold) return;\n var point = info.point;\n var timestamp = getFrameData().timestamp;\n\n _this.history.push(__assign(__assign({}, point), {\n timestamp: timestamp\n }));\n\n var _a = _this.handlers,\n onStart = _a.onStart,\n onMove = _a.onMove;\n\n if (!isPanStarted) {\n onStart && onStart(_this.lastMoveEvent, info);\n _this.startEvent = _this.lastMoveEvent;\n }\n\n onMove && onMove(_this.lastMoveEvent, info);\n };\n\n this.handlePointerMove = function (event, info) {\n _this.lastMoveEvent = event;\n _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint); // Because Safari doesn't trigger mouseup events when it's above a `