{"version":3,"sources":["webpack://@elegantstack/gatsby-starter-flexiblocks/../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","scheduleVelocityCheck","velocityCheck","set","isNaN","parseFloat","onChange","subscription","clearListeners","onRenderRequest","get","attach","passiveEffect","getPrevious","getVelocity","start","animation","stop","Promise","resolve","stopAnimation","then","clearAnimation","isAnimating","destroy","motionValue","secondsToMilliseconds","seconds","easingLookup","linear","easeIn","easeInOut","easeOut","circIn","circInOut","circOut","backIn","backInOut","backOut","anticipate","bounceIn","bounceInOut","bounceOut","easingDefinitionToFunction","definition","Array","isArray","length","x1","y1","x2","y2","undefined","isAnimatable","key","startsWith","isKeyframesTarget","underDampedSpring","type","stiffness","damping","restDelta","restSpeed","overDampedSpring","to","linearTween","ease","duration","keyframes","values","defaultTransitions","x","y","z","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scale","opacity","backgroundColor","color","default","convertTransitionToAnimationOptions","yoyo","loop","flip","times","transition","options","offset","repeatDelay","isEasingArray","map","repeatType","repeat","getPopmotionAnimationOptions","valueKey","transitionFactory","from","hydrateKeyframes","when","delay","delayChildren","staggerChildren","staggerDirection","Object","keys","isTransitionDefined","startAnimation","target","onComplete","delayTimer","controls","valueTransition","getValueTransition","origin","isTargetAnimatable","isOriginAnimatable","velocity","onUpdate","getAnimation","_d","_e","getDelayFromTransition","setTimeout","clearTimeout","resolveFinalValueInKeyframes","int","transform","Math","round","defaultValueTypes","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderWidth","px","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","width","maxWidth","height","maxHeight","top","right","bottom","left","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","perspective","transformPerspective","originX","originY","originZ","zIndex","fillOpacity","strokeOpacity","numOctaves","dimensionValueTypes","vw","vh","test","parse","testValueType","findDimensionValueType","find","valueTypes","findValueType","getDefaultValueType","getValueAsType","isVariantLabels","isVariantLabel","resolveVariant","visualElement","variant","custom","resolved","isVariantResolver","getVariantPayload","forEachValue","getCurrent","getDefaultTransition","setMotionValue","hasValue","getValue","addValue","setTarget","priority","makeTargetAnimatable","transitionEnd","baseTarget","setVariants","variantLabels","reverse","forEach","getVariant","variantChildren","child","setValues","checkTargetForNewValues","newValueKeys","filter","numNewValues","i","targetValue","readValue","readNativeValue","getOriginFromTransition","getOrigin","startVisualElementAnimation","opts","activeOverrides","resetIsAnimating","animations","label","animateVariant","all","animateVariantLabels","animateTarget","onAnimationStart","onAnimationComplete","variantDefinition","getChildrenAnimations","variantChildrenOrder","forwardDelay","variantLabel","maxStaggerDuration","generateStaggerDuration","push","animateChildren","first","last","transitionOverride","targetAndTransition","resolvedOverrides","valueTarget","has","allAnimations","setOverride","index","overrides","startOverride","override","clearOverride","highest","getHighestOverridePriortiy","overrideTarget","remainingValues","max","apply","VisualElement","parent","children","latest","Map","valueSubscriptions","config","isMounted","update","triggerRender","element","mount","unmount","externalRef","rootParent","treePath","depth","variants","addVariantChild","addVariantChildOrder","checkOverrideIsAnimating","numOverrides","resolvedOverride","subscribe","removeValue","setSingleStaticValue","subscribeToValue","defaultValue","callback","getInstance","updateConfig","setStaticValues","scheduleRender","scheduleUpdateLayoutDelta","updateLayoutDelta","unsubscribeOnChange","unsubscribeOnRender","removeFromParent","_","noop","any","convertBoundingBoxToAxisBox","min","copyAxisBox","box","zeroDelta","translate","originPoint","transformAxes","boxDistortingKeys","transformProps","sortTransformProps","indexOf","operationKey","isDistorting","axesKey","transformPropSet","isTransformProp","transformOriginProps","isTransformOriginProp","translateAlias","buildLayoutProjectionTransform","treeScale","identityProjection","isCSSVariable","isCSSVariable$1","cssVariableRegex","getVariableValue","match","exec","parseCSSVariable","token","fallback","window","getComputedStyle","getPropertyValue","trim","pixelsToPercent","pixels","axis","varToken","borderCorrectionDefinition","process","viewportBox","valueScaleCorrection","applyTo","boxShadow","_viewportBox","original","containsCSSVariables","includes","cssVariables","replace","shadow","template","xScale","yScale","averageScale","output","i_1","cssVariable","buildHTMLStyles","style","vars","transformOrigin","transformKeys","isLayoutProjectionEnabled","deltaFinal","targetBox","enableHardwareAcceleration","transformTemplate","allowTransformNone","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","bucket","corrected","num","transformString","sort","numTransformKeys","buildBoxDistortingTransforms","buildLayoutProjectionTransformOrigin","transformIsDefault","transformHasZ","buildTransform","buildTransformOrigin","resetAxis","originAxis","scalePoint","point","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","applyAxisTransforms","final","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","removePointDelta","removeAxisTransforms","removeAxisDelta","isNear","maxDistance","calcLength","calcOrigin","source","sourceLength","targetLength","updateAxisDelta","updateBoxDelta","eachAxis","getBoundingBox","transformPagePoint","transformPoint","topLeft","bottomRight","transformBoundingBox","getBoundingClientRect","BoundingBoxDimension","positionalKeys","isPositionalKey","setAndResetVelocity","isNumOrPxType","getPosFromMatrix","matrix","pos","split","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","removedTransforms","removeNonTranslationalTransform","convertedTarget","changedKeys","originBbox","elementComputedStyle","display","originComputedStyle","targetBbox","convertChangedValueTypes","unitConversion","some","hasPositionalKey","parseDomVariant","HTMLElement","resolveCSSVariables","HTMLVisualElement","_super","arguments","defaultConfig","reactStyle","layoutUpdateListeners","layoutMeasureListeners","viewportBoxUpdateListeners","hasViewportBoxUpdated","targetBoxFinal","prevTreeScale","deltaTransform","stopLayoutAxisAnimation","isTargetBoxLocked","axisProgress","updateLayoutDeltas","fireUpdateLayoutDelta","clean","read","layoutOrigin","defaultValueType","parseDOMValues","transformValues","parsed","enableLayoutProjection","hide","isVisible","show","onLayoutUpdate","onLayoutMeasure","onViewportBoxUpdate","layoutReady","prevViewportBox","getBoundingBoxWithoutTransforms","bbox","snapshotBoundingBox","rebaseTargetBox","force","shouldRebase","setAxisTarget","measureLayout","boxCorrected","lockTargetBox","unlockTargetBox","stopLayoutAnimation","resetTransform","targetAxis","startLayoutAxisAnimation","progress","animateMotionValue","originBox","parentTreeScale","parentDelta","treeLength","applyTreeDeltas","updateTransformDeltas","finalBox","build","visibility","assign","setProperty","useConstant","useRef","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","getAttribute","setAttribute","svgTagNames","isSVGComponent","Component","PresenceContext","createContext","MotionContext","variantContext","useVariantContext","useContext","useVisualElementContext","validMotionProps","isValidMotionProp","isPropValid","emotionIsPropValid_1","isMotionValue","isForcedMotionValue","layout","layoutId","addMotionValues","isStyle","props","foundMotionValue","reservedNames","Presence","VisibilityAction","empty","MotionConfigContext","p","features","isStatic","checkShouldInheritVariant","animate","inherit","defaultHandler","sortByDepth","createBatcher","queue","flush","order","isPresent","presence","Present","isSharedLayout","context","forceUpdate","SharedLayoutContext","FramerTreeLayoutContext","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","usePresence","onExitComplete","register","id","useUniqueId","counter","incrementId","useInitialOrEveryRender","isInitialOnly","isInitialRender","isVariantLabel$1","isAnimationControls","createMotionComponent","defaultFeatures","useVisualElement","forwardRef","isForced","existsAsProp","existsAsStyle","propIsMotionValue","styleIsMotionValue","useMotionValues","initial","whileTap","whileHover","parentInitial","parentAnimate","presenceContext","controlsVariants","isVariantNode","useMemo","initialToApply","useVariants","plugins","allFeatures","numFeatures","shouldRender","getComponent","createElement","useFeatures","component","syncLayout","framerSyncLayout","remove","useSnapshotOnUnmount","Fragment","Provider","createLock","name","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal_1","openVertical_1","addDomEvent","eventName","addEventListener","removeEventListener","isMouseEvent","event","PointerEvent","pointerType","MouseEvent","isTouchEvent","touches","defaultPagePoint","pageX","pageY","pointFromTouch","pointType","changedTouches","pointFromMouse","extractEventInfo","getViewportPointFromEvent","wrapHandler","shouldFilterPrimaryPointer","eventHandler","listener","button","isBrowser$1","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","useDomEvent","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","applyConstraints","elastic","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","lastPointerEvent","elementDragControls","WeakMap","VisualElementDragControls","isDragging","currentDirection","constraints","hasMutatedConstraints","cursorProgress","openGlobalLock","panSession","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","length_1","center","updateVisualElementAxis","shouldDrag","updateAxisMotionValue","nextValue","axisLayout","axisLength","calcConstrainedMinPoint","updateProps","_f","_g","remainingProps","dragKey","toUpperCase","dragTransition","momentumAnimations","bounceStiffness","bounceDamping","inertia","timeConstant","startAxisValueAnimation","onDragTransitionEnd","currentValue","boxProgress","calcPositionFromProgress","stopPointerListener","dragListener","stopResizeListener","stopLayoutUpdateListener","prevSnapshot","makeRenderlessComponent","hook","groupDragControls","dragControls","useDrag","Drag","useUnmountEffect","isNodeOrChild","parentElement","order$1","getGesturePriority","gesture","tapGesturePriority","hoverPriority","filterTouch","useGestures","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","onTap","onTapStart","onTapCancel","hasTapListeners","isTapping","cancelPointerEventListener","removePointerUp","onPointerUp","openGestureLock","useTapGesture","onHoverStart","onHoverEnd","useHoverGesture","gestureProps","GestureComponent","Gestures","AnimationControls","hasMounted","pendingAnimations","subscribers","animations_1","ExitComponent","exit","isPlayingExitAnimation","Exit","targetWithoutTransition","mergeTransitionEnd","resolveVariantLabels","unresolvedVariant","defaultTransition","prevValues","targetToAnimate","animatingTarget","finalTarget","shouldAnimateOnMount","isValidValue","valueHasUpdated","prevLength","shallowCompare","useAnimateProp","targetVariants","parentAlreadyMounted","oldVariant","newVariant","shouldAnimate","join","useVariantAnimations","unsubscribe","useAnimationGroupSubscription","Animation","Animate","frameTarget","stopAxisAnimation","visibilityAction","shouldStackAnimate","safeToRemove","boxHasMoved","hasMoved","animateAxis","Hide","onLayoutAnimationComplete","componentDidMount","unsubLayoutReady","componentWillUnmount","crossfadeOpacity","crossfade","layoutProgress","createCrossfadeAnimation","frame","tweenAxis","unsubscribeProgress","easeCrossfadeIn","easeCrossfadeOut","AnimateLayoutContextProvider","hasAxisMoved","compress","easing","AnimateLayout","Measure","getSnapshotBeforeUpdate","syncUpdate","componentDidUpdate","MeasureContextProvider","MeasureLayout","allMotionFeatures","domBaseConfig","presenceId","isPresenceRoot","forwardedProps","domProps","filterProps","visualProps","buildSVGProps","htmlProps","draggable","userSelect","touchAction","buildHTMLProps","createMotionProxy","componentCache","Proxy","motion","createSwitchAnimation","stack","lead","Entering","prevLead","Show","getFollowOrigin","Exiting","getFollowTarget","stackLead","stackLeadPresence","follow","getLeadTransition","getLeadTarget","getLeadOrigin","LayoutStack","hasChildren","snapshot","boundingBox","latestMotionValues","findIndex","stackChild","splice","updateLeadAndFollow","prevFollow","leadIndex","numInStack","lastIsPresent","findLeadAndFollow","updateSnapshot","isLeadPresent","AnimateSharedLayout","stacks","updateScheduled","renderScheduled","syncContext","scheduleUpdate","addChild","removeChild","updateStacks","startLayoutAnimation","shouldComponentUpdate","createAnimation","getStack","addToStack","removeFromStack","createScrollMotionValues","scrollX","scrollY","scrollXProgress","scrollYProgress","prefersReducedMotion","matchMedia","motionMediaQuery_1","setReducedMotionPreferences","matches","addListener","DragControls","componentControls","nativeEvent","updateConstraints","StateVisualElement","initialState"],"mappings":"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","file":"c8b05f54-64ff965ce5aff459a2ce.js","sourcesContent":["import { __values, __read, __assign, __rest, __spread, __extends } from 'tslib';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { velocityPerSecond, cubicBezier, linear, easeIn, easeInOut, easeOut, circIn, circInOut, circOut, backIn, backInOut, backOut, anticipate, bounceIn, bounceInOut, bounceOut, inertia, animate as animate$1, mix, clamp, distance, progress, pipe, interpolate, wrap } from 'popmotion';\nimport { invariant, warning } from 'hey-listen';\nimport { complex, number, color, px, percent, degrees, vw, vh, scale, alpha, progressPercentage } from 'style-value-types';\nimport React, { useRef, createContext, useContext, useEffect, createElement, useMemo, useLayoutEffect, forwardRef, Fragment, Component as Component$1, useCallback, useState, cloneElement, Children, isValidElement } from 'react';\n\nvar isRefObject = function 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.set(init, false);\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * @library\n *\n * ```jsx\n * function MyComponent() {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @internalremarks\n *\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n *\n * ```jsx\n * useOnChange(x, () => {})\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @public\n */\n\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 * 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\nvar easingLookup = {\n linear: linear,\n easeIn: easeIn,\n easeInOut: easeInOut,\n easeOut: easeOut,\n circIn: circIn,\n circInOut: circInOut,\n circOut: circOut,\n backIn: backIn,\n backInOut: backInOut,\n backOut: backOut,\n anticipate: anticipate,\n bounceIn: bounceIn,\n bounceInOut: bounceInOut,\n bounceOut: bounceOut\n};\n\nvar easingDefinitionToFunction = function easingDefinitionToFunction(definition) {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, \"Cubic bezier arrays must contain four numerical values.\");\n\n var _a = __read(definition, 4),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n return cubicBezier(x1, y1, x2, y2);\n } else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, \"Invalid easing type '\" + definition + \"'\");\n return easingLookup[definition];\n }\n\n return definition;\n};\n\nvar isEasingArray = function isEasingArray(ease) {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\n\n\nvar isAnimatable = function isAnimatable(key, value) {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\") return false; // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n\n if (typeof value === \"number\" || Array.isArray(value)) return true;\n\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n\n return false;\n};\n\nvar isKeyframesTarget = function isKeyframesTarget(v) {\n return Array.isArray(v);\n};\n\nvar underDampedSpring = function underDampedSpring() {\n return {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restDelta: 0.5,\n restSpeed: 10\n };\n};\n\nvar overDampedSpring = function overDampedSpring(to) {\n return {\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 100 : 30,\n restDelta: 0.01,\n restSpeed: 10\n };\n};\n\nvar linearTween = function linearTween() {\n return {\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3\n };\n};\n\nvar keyframes = function keyframes(values) {\n return {\n type: \"keyframes\",\n duration: 0.8,\n values: values\n };\n};\n\nvar defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: overDampedSpring,\n scaleY: overDampedSpring,\n scale: overDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: overDampedSpring\n};\n\nvar getDefaultTransition = function getDefaultTransition(valueKey, to) {\n var transitionFactory;\n\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n } else {\n transitionFactory = defaultTransitions[valueKey] || defaultTransitions.default;\n }\n\n return __assign({\n to: to\n }, transitionFactory(to));\n};\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\n\n\nfunction isTransitionDefined(_a) {\n var when = _a.when,\n delay = _a.delay,\n delayChildren = _a.delayChildren,\n staggerChildren = _a.staggerChildren,\n staggerDirection = _a.staggerDirection,\n repeat = _a.repeat,\n repeatType = _a.repeatType,\n repeatDelay = _a.repeatDelay,\n from = _a.from,\n transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\", \"repeat\", \"repeatType\", \"repeatDelay\", \"from\"]);\n\n return !!Object.keys(transition).length;\n}\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\n\n\nfunction convertTransitionToAnimationOptions(_a) {\n var yoyo = _a.yoyo,\n loop = _a.loop,\n flip = _a.flip,\n ease = _a.ease,\n times = _a.times,\n transition = __rest(_a, [\"yoyo\", \"loop\", \"flip\", \"ease\", \"times\"]);\n\n var options = __assign({}, transition);\n\n if (times) {\n options.offset = times;\n }\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n\n\n if (transition.duration) options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay) options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n\n if (ease) {\n options[\"ease\"] = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n\n\n if (transition.type === \"tween\") options.type = \"keyframes\";\n\n if (yoyo) {\n options.repeatType = \"reverse\";\n } else if (loop) {\n options.repeatType = \"loop\";\n } else if (flip) {\n options.repeatType = \"mirror\";\n }\n\n options.repeat = loop || yoyo || flip || transition.repeat;\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n\n if (transition.type !== \"spring\") options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\n\n\nfunction getDelayFromTransition(transition, key) {\n var _a, _b, _c, _d, _e;\n\n return (_e = (_d = (_b = (_a = transition[key]) === null || _a === void 0 ? void 0 : _a.delay) !== null && _b !== void 0 ? _b : (_c = transition[\"default\"]) === null || _c === void 0 ? void 0 : _c.delay) !== null && _d !== void 0 ? _d : transition.delay) !== null && _e !== void 0 ? _e : 0;\n}\n\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = __spread(options.to);\n options.to[0] = options.from;\n }\n\n return options;\n}\n\nfunction getPopmotionAnimationOptions(transition, options, key) {\n var _a;\n\n if (Array.isArray(options.to)) {\n (_a = transition.duration) !== null && _a !== void 0 ? _a : transition.duration = 0.8;\n }\n\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n\n if (!isTransitionDefined(transition)) {\n transition = __assign(__assign({}, transition), getDefaultTransition(key, options.to));\n }\n\n return __assign(__assign({}, options), convertTransitionToAnimationOptions(transition));\n}\n/**\n *\n */\n\n\nfunction getAnimation(key, value, target, transition, onComplete) {\n var _a;\n\n var valueTransition = getValueTransition(transition, key);\n var origin = (_a = valueTransition.from) !== null && _a !== void 0 ? _a : value.get();\n var isTargetAnimatable = isAnimatable(key, target);\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n origin = complex.getAnimatableNone(target);\n }\n\n var isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, \"You are trying to animate \" + key + \" from \\\"\" + origin + \"\\\" to \\\"\" + target + \"\\\". \" + origin + \" is not an animatable value - to enable this animation set \" + origin + \" to a value animatable to \" + target + \" via the `style` property.\");\n\n function start() {\n var options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete: onComplete,\n onUpdate: function onUpdate(v) {\n return value.set(v);\n }\n };\n return valueTransition.type === \"inertia\" || valueTransition.type === \"decay\" ? inertia(__assign(__assign({}, options), valueTransition)) : animate$1(__assign(__assign({}, getPopmotionAnimationOptions(valueTransition, options, key)), {\n onUpdate: function onUpdate(v) {\n var _a;\n\n options.onUpdate(v);\n (_a = valueTransition.onUpdate) === null || _a === void 0 ? void 0 : _a.call(valueTransition, v);\n },\n onComplete: function onComplete() {\n var _a;\n\n options.onComplete();\n (_a = valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n }\n }));\n }\n\n function set() {\n var _a;\n\n value.set(target);\n onComplete();\n (_a = valueTransition === null || valueTransition === void 0 ? void 0 : valueTransition.onComplete) === null || _a === void 0 ? void 0 : _a.call(valueTransition);\n return {\n stop: function stop() {}\n };\n }\n\n return !isOriginAnimatable || !isTargetAnimatable || valueTransition.type === false ? set : start;\n}\n\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n *\n * @internal\n */\n\n\nfunction startAnimation(key, value, target, transition) {\n if (transition === void 0) {\n transition = {};\n }\n\n return value.start(function (onComplete) {\n var delayTimer;\n var controls;\n var animation = getAnimation(key, value, target, transition, onComplete);\n var delay = getDelayFromTransition(transition, key);\n\n var start = function start() {\n return controls = animation();\n };\n\n if (delay) {\n delayTimer = setTimeout(start, secondsToMilliseconds(delay));\n } else {\n start();\n }\n\n return function () {\n clearTimeout(delayTimer);\n controls === null || controls === void 0 ? void 0 : controls.stop();\n };\n });\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 * 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/**\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 // 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/**\n * Decides if the supplied variable is a function that returns a variant\n */\n\n\nfunction isVariantResolver(variant) {\n return typeof variant === \"function\";\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, variant, custom) {\n var resolved = {};\n\n if (!variant) {\n return resolved;\n } else if (isVariantResolver(variant)) {\n resolved = variant(custom !== null && custom !== void 0 ? custom : visualElement.getVariantPayload(), getCurrent(visualElement), getVelocity(visualElement));\n } else {\n resolved = variant;\n }\n\n return __assign({\n transition: visualElement.getDefaultTransition()\n }, resolved);\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, _a) {\n var priority = (_a === void 0 ? {} : _a).priority;\n\n var _b = visualElement.makeTargetAnimatable(resolveVariant(visualElement, definition), false),\n _c = _b.transitionEnd,\n transitionEnd = _c === void 0 ? {} : _c,\n transition = _b.transition,\n target = __rest(_b, [\"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 if (!priority) visualElement.baseTarget[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 // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n value = complex.getAnimatableNone(targetValue);\n }\n\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/**\n * @internal\n */\n\n\nfunction startVisualElementAnimation(visualElement, definition, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (opts.priority) {\n visualElement.activeOverrides.add(opts.priority);\n }\n\n visualElement.resetIsAnimating(opts.priority);\n var animation;\n\n if (isVariantLabels(definition)) {\n animation = animateVariantLabels(visualElement, definition, opts);\n } else if (isVariantLabel(definition)) {\n animation = animateVariant(visualElement, definition, opts);\n } else {\n animation = animateTarget(visualElement, definition, opts);\n }\n\n visualElement.onAnimationStart();\n return animation.then(function () {\n return visualElement.onAnimationComplete();\n });\n}\n\nfunction animateVariantLabels(visualElement, variantLabels, opts) {\n var animations = __spread(variantLabels).reverse().map(function (label) {\n return animateVariant(visualElement, label, opts);\n });\n\n return Promise.all(animations);\n}\n\nfunction animateVariant(visualElement, label, opts) {\n var _a;\n\n var priority = opts && opts.priority || 0;\n var variantDefinition = visualElement.getVariant(label);\n var variant = resolveVariant(visualElement, variantDefinition, opts && opts.custom);\n var transition = variant.transition || {};\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n\n var getAnimation = variantDefinition ? function () {\n return animateTarget(visualElement, variant, opts);\n } : function () {\n return Promise.resolve();\n };\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n\n var getChildrenAnimations = ((_a = visualElement.variantChildrenOrder) === null || _a === void 0 ? void 0 : _a.size) ? function (forwardDelay) {\n if (forwardDelay === void 0) {\n forwardDelay = 0;\n }\n\n var _a = transition.delayChildren,\n delayChildren = _a === void 0 ? 0 : _a;\n return animateChildren(visualElement, label, delayChildren + forwardDelay, transition.staggerChildren, transition.staggerDirection, priority, opts === null || opts === void 0 ? void 0 : opts.custom);\n } : function () {\n return Promise.resolve();\n };\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n\n var when = transition.when;\n\n if (when) {\n var _b = __read(when === \"beforeChildren\" ? [getAnimation, getChildrenAnimations] : [getChildrenAnimations, getAnimation], 2),\n first = _b[0],\n last = _b[1];\n\n return first().then(last);\n } else {\n return Promise.all([getAnimation(), getChildrenAnimations(opts === null || opts === void 0 ? void 0 : opts.delay)]);\n }\n}\n\nfunction animateChildren(visualElement, variantLabel, delayChildren, staggerChildren, staggerDirection, priority, custom) {\n if (delayChildren === void 0) {\n delayChildren = 0;\n }\n\n if (staggerChildren === void 0) {\n staggerChildren = 0;\n }\n\n if (staggerDirection === void 0) {\n staggerDirection = 1;\n }\n\n if (priority === void 0) {\n priority = 0;\n }\n\n var animations = [];\n var maxStaggerDuration = (visualElement.variantChildrenOrder.size - 1) * staggerChildren;\n var generateStaggerDuration = staggerDirection === 1 ? function (i) {\n return i * staggerChildren;\n } : function (i) {\n return maxStaggerDuration - i * staggerChildren;\n };\n Array.from(visualElement.variantChildrenOrder).forEach(function (child, i) {\n var animation = animateVariant(child, variantLabel, {\n priority: priority,\n delay: delayChildren + generateStaggerDuration(i),\n custom: custom\n });\n animations.push(animation);\n });\n return Promise.all(animations);\n}\n\nfunction stopAnimation(visualElement) {\n visualElement.forEachValue(function (value) {\n return value.stop();\n });\n}\n\nfunction animateTarget(visualElement, definition, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.delay,\n delay = _c === void 0 ? 0 : _c,\n _d = _b.priority,\n priority = _d === void 0 ? 0 : _d,\n transitionOverride = _b.transitionOverride,\n custom = _b.custom;\n\n var targetAndTransition = resolveVariant(visualElement, definition, custom);\n if (transitionOverride) targetAndTransition.transition = transitionOverride;\n\n var _e = visualElement.makeTargetAnimatable(targetAndTransition),\n transitionEnd = _e.transitionEnd,\n transition = _e.transition,\n target = __rest(_e, [\"transitionEnd\", \"transition\"]);\n\n if (priority) visualElement.resolvedOverrides[priority] = target;\n var animations = [];\n\n for (var key in target) {\n var value = visualElement.getValue(key);\n if (!value || !target || target[key] === undefined) continue;\n var valueTarget = target[key];\n\n if (!priority) {\n visualElement.baseTarget[key] = resolveFinalValueInKeyframes(valueTarget);\n }\n\n if (visualElement.isAnimating.has(key)) continue;\n visualElement.isAnimating.add(key);\n animations.push(startAnimation(key, value, valueTarget, __assign({\n delay: delay\n }, transition)));\n }\n\n var allAnimations = Promise.all(animations);\n return transitionEnd ? allAnimations.then(function () {\n return setTarget(visualElement, transitionEnd, {\n priority: priority\n });\n }) : allAnimations;\n}\n\nfunction setOverride(visualElement, definition, index) {\n var _a;\n\n visualElement.overrides[index] = definition;\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n setOverride(child, definition, index);\n });\n}\n\nfunction startOverride(visualElement, index) {\n var override = visualElement.overrides[index];\n\n if (override) {\n return startVisualElementAnimation(visualElement, override, {\n priority: index\n });\n }\n}\n\nfunction clearOverride(visualElement, index) {\n var _a;\n\n (_a = visualElement.variantChildrenOrder) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n clearOverride(child, index);\n });\n var override = visualElement.overrides[index];\n if (!override) return;\n visualElement.activeOverrides.delete(index);\n var highest = getHighestOverridePriortiy(visualElement);\n visualElement.resetIsAnimating();\n\n if (highest) {\n var highestOverride = visualElement.overrides[highest];\n highestOverride && startOverride(visualElement, highest);\n } // Figure out which remaining values were affected by the override and animate those\n\n\n var overrideTarget = visualElement.resolvedOverrides[index];\n if (!overrideTarget) return;\n var remainingValues = {};\n\n for (var key in visualElement.baseTarget) {\n if (overrideTarget[key] !== undefined) {\n remainingValues[key] = visualElement.baseTarget[key];\n }\n }\n\n visualElement.onAnimationStart();\n animateTarget(visualElement, remainingValues).then(function () {\n visualElement.onAnimationComplete();\n });\n}\n\nfunction getHighestOverridePriortiy(visualElement) {\n if (!visualElement.activeOverrides.size) return 0;\n return Math.max.apply(Math, __spread(Array.from(visualElement.activeOverrides)));\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 /**\n * A set of values that we animate back to when a value is cleared of all overrides.\n */\n\n this.baseTarget = {};\n /**\n * A series of target overrides that we can animate to/from when overrides are set/cleared.\n */\n\n this.overrides = [];\n /**\n * A series of target overrides as they were originally resolved.\n */\n\n this.resolvedOverrides = [];\n /**\n * A Set of currently active override indexes\n */\n\n this.activeOverrides = new Set();\n /**\n * A Set of value keys that are currently animating.\n */\n\n this.isAnimating = new Set(); // 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 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 if (!this.variantChildren) this.variantChildren = new Set();\n this.variantChildren.add(visualElement);\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.resetIsAnimating = function (priority) {\n var _a;\n\n if (priority === void 0) {\n priority = 0;\n }\n\n this.isAnimating.clear(); // If this isn't the highest priority gesture, block the animation\n // of anything that's currently being animated\n\n if (priority < getHighestOverridePriortiy(this)) {\n this.checkOverrideIsAnimating(priority);\n }\n\n (_a = this.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n return child.resetIsAnimating(priority);\n });\n };\n\n VisualElement.prototype.checkOverrideIsAnimating = function (priority) {\n var numOverrides = this.overrides.length;\n\n for (var i = priority + 1; i < numOverrides; i++) {\n var resolvedOverride = this.resolvedOverrides[i];\n\n if (resolvedOverride) {\n for (var key in resolvedOverride) {\n this.isAnimating.add(key);\n }\n }\n }\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 }; // 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 * 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 * Used to store the keys of all transforms that will distorted a measured bounding box.\n */\n\nvar boxDistortingKeys = new Set();\n/**\n * Generate a list of every possible transform key.\n */\n\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n var isDistorting = new Set([\"rotate\", \"skew\"]).has(operationKey);\n transformAxes.forEach(function (axesKey) {\n var key = operationKey + axesKey;\n transformProps.push(key);\n isDistorting && boxDistortingKeys.add(key);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\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) {\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 return \"translate3d(\" + xTranslate + \"px, \" + yTranslate + \"px, 0) scale(\" + x.scale + \", \" + y.scale + \")\";\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 * Build a transform string only from the properties that distort bounding box measurements\n * (rotate and skew)\n */\n\n\nfunction buildBoxDistortingTransforms(transform, transformKeys) {\n var transformString = \"\";\n transformKeys.sort(sortTransformProps);\n var numTransformKeys = transformKeys.length;\n\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n\n if (boxDistortingKeys.has(key)) {\n transformString += key + \"(\" + transform[key] + \") \";\n }\n }\n\n return transformString;\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);\n if (style.transform === identityProjection) style.transform = \"\";\n /**\n * If we have transform styles, build only those that distort bounding boxes (rotate/skew)\n * as translations and scales will already have been used to calculate deltaFinal.\n */\n\n if (hasTransform) {\n style.transform += \" \" + buildBoxDistortingTransforms(transform, transformKeys);\n style.transform = style.transform.trim();\n }\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, treePath) {\n var treeLength = treePath.length;\n\n for (var i = 0; i < treeLength; i++) {\n applyBoxDelta(box, treePath[i].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}\n/**\n * Update the treeScale by incorporating the parent's latest scale into its treeScale.\n */\n\n\nfunction updateTreeScale(treeScale, parentTreeScale, parentDelta) {\n treeScale.x = parentTreeScale.x * parentDelta.x.scale;\n treeScale.y = parentTreeScale.y * parentDelta.y.scale;\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 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 * 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 _this.prevTreeScale = {\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 *\n */\n\n _this.axisProgress = {\n x: motionValue(0),\n y: motionValue(0)\n };\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 return this.getComputedStyle()[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 * 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.axisProgress,\n x = _a.x,\n y = _a.y;\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 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 *\n */\n\n\n HTMLVisualElement.prototype.startLayoutAxisAnimation = function (axis, transition) {\n var _this = this;\n\n var _a;\n\n var progress = this.axisProgress[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.axisProgress[axis].stop();\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 /**\n * If this component has a parent, update this treeScale by incorporating the parent's\n * delta into its treeScale.\n */\n\n if (this.parent) {\n this.prevTreeScale.x = this.treeScale.x;\n this.prevTreeScale.y = this.treeScale.y;\n updateTreeScale(this.treeScale, this.parent.treeScale, this.parent.delta);\n }\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n\n\n applyTreeDeltas(this.boxCorrected, this.treePath);\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n\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 this.prevTreeScale.x !== this.treeScale.x || this.prevTreeScale.y !== 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 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 /**\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\nfunction useVariantContext() {\n return useContext(MotionContext).variantContext;\n}\n\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n/**\n * DOM-flavoured variation of the useVisualElement hook. Used to create either a HTMLVisualElement\n * or SVGVisualElement for the component.\n *\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 visualElement.updateConfig(__assign(__assign(__assign({}, visualElement.config), {\n enableHardwareAcceleration: !isStatic\n }), props));\n visualElement.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 if (props.onViewportBoxUpdate) {\n return visualElement.onViewportBoxUpdate(props.onViewportBoxUpdate);\n }\n }, [props.onViewportBoxUpdate]);\n return visualElement;\n};\n/**\n * A list of all valid MotionProps.\n *\n * @internalremarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\n\n\nvar validMotionProps = new Set([\"initial\", \"animate\", \"exit\", \"style\", \"variants\", \"transition\", \"transformTemplate\", \"transformValues\", \"custom\", \"inherit\", \"layout\", \"layoutId\", \"onLayoutAnimationComplete\", \"onViewportBoxUpdate\", \"onAnimationStart\", \"onAnimationComplete\", \"onUpdate\", \"onDragStart\", \"onDrag\", \"onDragEnd\", \"onMeasureDragConstraints\", \"onDirectionLock\", \"onDragTransitionEnd\", \"drag\", \"dragControls\", \"dragListener\", \"dragConstraints\", \"dragDirectionLock\", \"_dragX\", \"_dragY\", \"dragElastic\", \"dragMomentum\", \"dragPropagation\", \"dragTransition\", \"onPan\", \"onPanStart\", \"onPanEnd\", \"onPanSessionStart\", \"onTap\", \"onTapStart\", \"onTapCancel\", \"whileHover\", \"whileTap\", \"onHoverEnd\", \"onHoverStart\"]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\n\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nvar isPropValid = function isPropValid(key) {\n return !isValidMotionProp(key);\n};\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\n\n\ntry {\n var emotionIsPropValid_1 = require(\"@emotion/is-prop-valid\").default;\n\n isPropValid = function isPropValid(key) {\n // Handle events explicitly as Emotion validates them all as true\n if (key.startsWith(\"on\")) {\n return !isValidMotionProp(key);\n } else {\n return emotionIsPropValid_1(key);\n }\n };\n} catch (_a) {// We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\n\nfunction filterProps(props) {\n var domProps = {};\n\n for (var key in props) {\n if (isPropValid(key)) domProps[key] = props[key];\n }\n\n return domProps;\n}\n\nfunction buildHTMLProps(visualElement, _a) {\n var drag = _a.drag; // The `any` isn't ideal but it is the type of createElement props argument\n\n var htmlProps = {\n style: __assign(__assign(__assign({}, visualElement.reactStyle), visualElement.style), visualElement.vars)\n };\n\n if (!!drag) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false; // Disable text selection\n\n htmlProps.style.userSelect = \"none\"; // Disable scrolling on the draggable direction\n\n htmlProps.style.touchAction = drag === true ? \"none\" : \"pan-\" + (drag === \"x\" ? \"y\" : \"x\");\n }\n\n return htmlProps;\n}\n/**\n * Build React props for SVG elements\n */\n\n\nfunction buildSVGProps(visualElement) {\n return __assign(__assign({}, visualElement.attrs), {\n style: __assign({}, visualElement.reactStyle)\n });\n}\n\nfunction render(Component, props, visualElement) {\n // Only filter props from components we control, ie `motion.div`. If this\n // is a custom component pass along everything provided to it.\n var forwardedProps = typeof Component === \"string\" ? filterProps(props) : props;\n /**\n * Every render, empty and rebuild the animated values to be applied to our Element.\n * During animation these data structures are used in a mutable fashion to reduce\n * garbage collection, but between renders we can flush them to remove values\n * that might have been taken out of the provided props.\n */\n\n visualElement.clean();\n visualElement.build(); // Generate props to visually render this component\n\n var visualProps = isSVGComponent(Component) ? buildSVGProps(visualElement) : buildHTMLProps(visualElement, props);\n return createElement(Component, __assign(__assign(__assign({}, forwardedProps), {\n ref: visualElement.ref\n }), visualProps));\n}\n\nvar isMotionValue = function isMotionValue(value) {\n return value instanceof MotionValue;\n};\n\nfunction isForcedMotionValue(key, _a) {\n var layout = _a.layout,\n layoutId = _a.layoutId;\n return isTransformProp(key) || isTransformOriginProp(key) || (layout || layoutId !== undefined) && !!valueScaleCorrection[key];\n}\n/**\n * Scrape props for MotionValues and add/remove them to this component's\n * VisualElement\n */\n\n\nfunction useMotionValues(visualElement, props) {\n var prev = useConstant(empty);\n /**\n * Remove MotionValues that are no longer present\n */\n\n for (var key in prev) {\n var isForced = isForcedMotionValue(key, props);\n var existsAsProp = props[key] !== undefined;\n var existsAsStyle = props.style && props.style[key] !== undefined;\n var propIsMotionValue = existsAsProp && isMotionValue(props[key]);\n var styleIsMotionValue = existsAsStyle && isMotionValue(props.style[key]);\n var transformRemoved = isForced && !existsAsProp && !existsAsStyle;\n var motionValueRemoved = !isForced && !propIsMotionValue && !styleIsMotionValue;\n\n if (transformRemoved || motionValueRemoved) {\n visualElement.removeValue(key);\n delete prev[key];\n }\n }\n /**\n * Add incoming MotionValues\n */\n\n\n addMotionValues(visualElement, prev, props, false, props);\n if (props.style) addMotionValues(visualElement, prev, props.style, true, props);\n /**\n * Transform custom values if provided a handler, ie size -> width/height\n * Ideally we'd ditch this by removing support for size and other custom values from Framer.\n */\n\n if (props.transformValues) {\n visualElement.reactStyle = props.transformValues(visualElement.reactStyle);\n }\n}\n/**\n * Add incoming MotionValues\n *\n * TODO: Type the VisualElements properly\n */\n\n\nfunction addMotionValues(visualElement, prev, source, isStyle, props) {\n if (isStyle === void 0) {\n isStyle = false;\n }\n\n if (isStyle) visualElement.reactStyle = {};\n\n for (var key in source) {\n var value = source[key];\n var foundMotionValue = false;\n\n if (isMotionValue(value)) {\n // If this is a MotionValue, add it if it isn't a reserved key\n if (!reservedNames.has(key)) {\n visualElement.addValue(key, value);\n foundMotionValue = true;\n }\n } else if (isForcedMotionValue(key, props)) {\n // If this is a transform prop, always create a MotionValue\n // to ensure we can reconcile them all together.\n if (!visualElement.hasValue(key)) {\n visualElement.addValue(key, motionValue(value));\n } else if (value !== prev[key]) {\n if (isMotionValue(prev[key])) {\n /**\n * If the previous value was a MotionValue, and this value isn't,\n * we want to create a new MotionValue rather than update one that's been removed.\n */\n visualElement.addValue(key, motionValue(value));\n } else {\n /**\n * Otherwise, we just want to ensure the MotionValue is of the latest value.\n */\n var motion = visualElement.getValue(key);\n motion.set(value);\n }\n }\n\n foundMotionValue = true;\n } else if (isStyle) {\n visualElement.reactStyle[key] = value;\n }\n\n if (foundMotionValue) prev[key] = value;\n }\n}\n/**\n * These are props we accept as MotionValues but don't want to add\n * to the VisualElement\n */\n\n\nvar reservedNames = new Set([]);\n\nvar empty = function empty() {\n return {};\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 checkShouldInheritVariant(_a) {\n var animate = _a.animate,\n variants = _a.variants,\n inherit = _a.inherit;\n return inherit === undefined ? !!variants && !animate : inherit;\n}\n/**\n * Load features via renderless components based on the provided MotionProps\n */\n\n\nfunction useFeatures(defaultFeatures, isStatic, visualElement, props) {\n var plugins = useContext(MotionConfigContext); // If this is a static component, or we're rendering on the server, we don't load\n // any feature components\n\n if (isStatic || typeof window === \"undefined\") return null;\n\n var allFeatures = __spread(defaultFeatures, plugins.features);\n\n var numFeatures = allFeatures.length;\n var features = []; // Decide which features we should render and add them to the returned array\n\n for (var i = 0; i < numFeatures; i++) {\n var _a = allFeatures[i],\n shouldRender = _a.shouldRender,\n key = _a.key,\n getComponent = _a.getComponent;\n\n if (shouldRender(props)) {\n var Component = getComponent(props);\n Component && features.push(createElement(Component, __assign({\n key: key\n }, props, {\n visualElement: visualElement,\n inherit: checkShouldInheritVariant(props)\n })));\n }\n }\n\n return features;\n}\n\nvar Presence;\n\n(function (Presence) {\n Presence[Presence[\"Entering\"] = 0] = \"Entering\";\n Presence[Presence[\"Present\"] = 1] = \"Present\";\n Presence[Presence[\"Exiting\"] = 2] = \"Exiting\";\n})(Presence || (Presence = {}));\n\nvar VisibilityAction;\n\n(function (VisibilityAction) {\n VisibilityAction[VisibilityAction[\"Hide\"] = 0] = \"Hide\";\n VisibilityAction[VisibilityAction[\"Show\"] = 1] = \"Show\";\n})(VisibilityAction || (VisibilityAction = {}));\n/**\n * Default handlers for batching VisualElements\n */\n\n\nvar defaultHandler = {\n measureLayout: function measureLayout(child) {\n return child.measureLayout();\n },\n layoutReady: function layoutReady(child) {\n return child.layoutReady();\n }\n};\n/**\n * Sort VisualElements by tree depth, so we process the highest elements first.\n */\n\nvar sortByDepth = function sortByDepth(a, b) {\n return a.depth - b.depth;\n};\n/**\n * Create a batcher to process VisualElements\n */\n\n\nfunction createBatcher() {\n var queue = new Set();\n\n var add = function add(child) {\n return queue.add(child);\n };\n\n var flush = function flush(_a) {\n var _b = _a === void 0 ? defaultHandler : _a,\n measureLayout = _b.measureLayout,\n layoutReady = _b.layoutReady;\n\n var order = Array.from(queue).sort(sortByDepth);\n /**\n * Write: Reset any transforms on children elements so we can read their actual layout\n */\n\n order.forEach(function (child) {\n return child.resetTransform();\n });\n /**\n * Read: Measure the actual layout\n */\n\n order.forEach(measureLayout);\n /**\n * Write: Notify the VisualElements they're ready for further write operations.\n */\n\n order.forEach(layoutReady);\n /**\n * After all children have started animating, ensure any Entering components are set to Present.\n * If we add deferred animations (set up all animations and then start them in two loops) this\n * could be moved to the start loop. But it needs to happen after all the animations configs\n * are generated in AnimateSharedLayout as this relies on presence data\n */\n\n order.forEach(function (child) {\n if (child.isPresent) child.presence = Presence.Present;\n });\n queue.clear();\n };\n\n return {\n add: add,\n flush: flush\n };\n}\n\nfunction isSharedLayout(context) {\n return !!context.forceUpdate;\n}\n\nvar SharedLayoutContext = createContext(createBatcher());\n/**\n * @internal\n */\n\nvar FramerTreeLayoutContext = createContext(createBatcher());\nvar isBrowser = typeof window !== \"undefined\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nfunction useSnapshotOnUnmount(visualElement) {\n var syncLayout = useContext(SharedLayoutContext);\n var framerSyncLayout = useContext(FramerTreeLayoutContext);\n useIsomorphicLayoutEffect(function () {\n return function () {\n if (isSharedLayout(syncLayout)) {\n syncLayout.remove(visualElement);\n }\n\n if (isSharedLayout(framerSyncLayout)) {\n framerSyncLayout.remove(visualElement);\n }\n };\n }, []);\n}\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\n\n\nfunction usePresence() {\n var context = useContext(PresenceContext);\n if (context === null) return [true, null];\n var isPresent = context.isPresent,\n onExitComplete = context.onExitComplete,\n register = context.register; // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n // Replace with useOpaqueId when released in React\n\n var id = useUniqueId();\n useEffect(function () {\n return register(id);\n }, []);\n\n var safeToRemove = function safeToRemove() {\n return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id);\n };\n\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\n\n\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\n\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nvar counter = 0;\n\nvar incrementId = function incrementId() {\n return counter++;\n};\n\nvar useUniqueId = function useUniqueId() {\n return useConstant(incrementId);\n};\n/**\n * Use callback either only on the initial render or on all renders. In concurrent mode\n * the \"initial\" render might run multiple times\n *\n * @param callback - Callback to run\n * @param isInitialOnly - Set to `true` to only run on initial render, or `false` for all renders. Defaults to `false`.\n *\n * @public\n */\n\n\nfunction useInitialOrEveryRender(callback, isInitialOnly) {\n if (isInitialOnly === void 0) {\n isInitialOnly = false;\n }\n\n var isInitialRender = useRef(true);\n\n if (!isInitialOnly || isInitialOnly && isInitialRender.current) {\n callback();\n }\n\n isInitialRender.current = false;\n}\n/**\n * This hook is resonsible for creating the variant-propagation tree\n * relationship between VisualElements.\n */\n\n\nfunction useVariants(visualElement, _a, isStatic) {\n var _b, _c;\n\n var variants = _a.variants,\n initial = _a.initial,\n animate = _a.animate,\n whileTap = _a.whileTap,\n whileHover = _a.whileHover;\n\n var _d = useVariantContext(),\n parent = _d.parent,\n parentInitial = _d.initial,\n parentAnimate = _d.animate;\n\n var presenceContext = useContext(PresenceContext);\n /**\n * We only add this VisualElement to the variant tree *if* we're:\n * 1. Being provided a variants prop\n * 2. Being used to control variants (ie animate, whileHover etc)\n * 3. Or being passed animation controls, which we have to assume may control variants\n * Otherwise this component should be \"invisible\" to variant propagation. This is a concession\n * to Framer which uses a `motion` component in every `Frame` and it might be if we change that\n * in the future that this restriction is removed.\n */\n\n var controlsVariants = isVariantLabel$1(animate) || isVariantLabel$1(whileTap) || isVariantLabel$1(whileHover) || isAnimationControls(animate);\n var isVariantNode = variants || controlsVariants;\n /**\n * Override initial with one from a parent `AnimatePresence`, if present\n */\n\n initial = (_b = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) !== null && _b !== void 0 ? _b : initial;\n /**\n * If initial is false, and animate isn't animation controls, we assign animate\n * to initial and set our values to that for the initial render.\n */\n\n if (initial === false && !isAnimationControls(animate)) {\n initial = animate;\n }\n\n var context = useMemo(function () {\n return {\n parent: isVariantNode ? visualElement : parent,\n initial: isVariantLabel$1(initial) ? initial : parentInitial,\n animate: isVariantLabel$1(animate) ? animate : parentAnimate\n };\n },\n /**\n * Only create a new context value (thereby re-rendering children) if this\n * is a static component and `initial` changes.\n */\n [isStatic ? initial : null]); // Set initial state. If this is a static component (ie in Framer canvas), respond to updates\n // in `initial`.\n\n useInitialOrEveryRender(function () {\n var initialToApply = initial || parentInitial;\n initialToApply && setValues(visualElement, initialToApply);\n }, !isStatic);\n /**\n * Subscribe to the parent visualElement if this is a participant in the variant tree\n */\n\n isVariantNode && !controlsVariants && (parent === null || parent === void 0 ? void 0 : parent.addVariantChild(visualElement));\n /**\n * If this component isn't exiting the tree, clear all the children in the render phase.\n * This will allow children to resubscribe in the correct order to ensure the correct stagger order.\n */\n\n isPresent(presenceContext) && ((_c = visualElement.variantChildrenOrder) === null || _c === void 0 ? void 0 : _c.clear());\n /**\n * Subscribe to the propagated parent.\n */\n\n useEffect(function () {\n isVariantNode && (parent === null || parent === void 0 ? void 0 : parent.addVariantChildOrder(visualElement));\n });\n /**\n * Track mount status so children can detect whether they were present during the\n * component's initial mount.\n */\n\n useEffect(function () {\n visualElement.isMounted = true;\n return function () {\n var _a;\n\n visualElement.isMounted = false;\n (_a = parent === null || parent === void 0 ? void 0 : parent.variantChildren) === null || _a === void 0 ? void 0 : _a.delete(visualElement);\n };\n }, []);\n /**\n * We want to update the \"base\" (or fallback) value on the initial render.\n */\n\n useInitialOrEveryRender(function () {\n visualElement.forEachValue(function (value, key) {\n visualElement.baseTarget[key] = value.get();\n });\n }, true);\n return context;\n}\n\nfunction isVariantLabel$1(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nfunction isAnimationControls(v) {\n return typeof v === \"object\" && typeof v.start === \"function\";\n}\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n *\n * @internal\n */\n\n\nfunction createMotionComponent(Component, _a) {\n var defaultFeatures = _a.defaultFeatures,\n useVisualElement = _a.useVisualElement,\n render = _a.render;\n\n function MotionComponent(props, externalRef) {\n /**\n * If a component is static, we only visually update it as a\n * result of a React re-render, rather than any interactions or animations.\n * If this component or any ancestor is static, we disable hardware acceleration\n * and don't load any additional functionality.\n */\n var isStatic = useContext(MotionConfigContext).isStatic;\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n\n var visualElement = useVisualElement(Component, props, isStatic, externalRef);\n /**\n * Scrape MotionValues from props and add/remove them to/from the VisualElement.\n */\n\n useMotionValues(visualElement, props);\n /**\n * Add the visualElement as a node in the variant tree.\n */\n\n var variantContext = useVariants(visualElement, props, isStatic);\n /**\n * Load features as renderless components unless the component isStatic\n */\n\n var features = useFeatures(defaultFeatures, isStatic, visualElement, props);\n /**\n * Only create a new context value when the sub-contexts change.\n */\n\n var context = useMemo(function () {\n return {\n visualElement: visualElement,\n variantContext: variantContext\n };\n }, [visualElement, variantContext]);\n var component = render(Component, props, visualElement);\n /**\n * If this component is a child of AnimateSharedLayout, we need to snapshot the component\n * before it's unmounted. This lives here rather than in features/layout/Measure because\n * as a child component its unmount effect runs after this component has been unmounted.\n */\n\n useSnapshotOnUnmount(visualElement); // The mount order and hierarchy is specific to ensure our element ref is hydrated by the time\n // all plugins and features has to execute.\n\n return createElement(Fragment, null, createElement(MotionContext.Provider, {\n value: context\n }, component), features);\n }\n\n return forwardRef(MotionComponent);\n}\n\nfunction createLock(name) {\n var lock = null;\n return function () {\n var openLock = function openLock() {\n lock = null;\n };\n\n if (lock === null) {\n lock = name;\n return openLock;\n }\n\n return false;\n };\n}\n\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\n\nfunction getGlobalLock(drag) {\n var lock = false;\n\n if (drag === \"y\") {\n lock = globalVerticalLock();\n } else if (drag === \"x\") {\n lock = globalHorizontalLock();\n } else {\n var openHorizontal_1 = globalHorizontalLock();\n var openVertical_1 = globalVerticalLock();\n\n if (openHorizontal_1 && openVertical_1) {\n lock = function lock() {\n openHorizontal_1();\n openVertical_1();\n };\n } else {\n // Release the locks because we don't use them\n if (openHorizontal_1) openHorizontal_1();\n if (openVertical_1) openVertical_1();\n }\n }\n\n return lock;\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$1 = 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$1 && window.onpointerdown === null;\n};\n\nvar supportsTouchEvents = function supportsTouchEvents() {\n return isBrowser$1 && window.ontouchstart === null;\n};\n\nvar supportsMouseEvents = function supportsMouseEvents() {\n return isBrowser$1 && window.onmousedown === null;\n};\n\nvar mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\"\n};\nvar touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\"\n};\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 * @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 `