{"version":3,"sources":["webpack:///./node_modules/framer-motion/dist/framer-motion.es.js"],"names":["MotionValue","init","_a","value","_this","this","_b","transformer","parent","timeDelta","lastUpdated","canTrackVelocity","updateAndNotify","v","render","prev","current","updateSubscribers","forEach","notifySubscriber","children","setChild","renderSubscribers","delta","timestamp","postRender","scheduleVelocityCheck","subscriber","velocityCheck","child","set","isNaN","parseFloat","prototype","addChild","config","Set","add","removeChild","delete","subscribeTo","subscriptions","subscription","updateSubscriber","onChange","onRenderRequest","attach","passiveEffect","get","getVelocity","start","animation","stop","Promise","resolve","stopAnimation","then","clearAnimation","isAnimating","destroy","clear","motionValue","opts","useConstant","ref","resolver","isMotionValue","updateStyler","onRead","onRender","state","onUpdate","MotionValuesMap","hasMounted","values","Map","unsubscribers","has","key","bindValueToOutput","defaultValue","undefined","callback","unsubscribeOnRender","output","unsubscribeOnChange","setOnUpdate","setTransformTemplate","transformTemplate","updateTransformTemplate","getTransformTemplate","mount","unmount","_value","unsubscribe","specialMotionValueProps","useMotionValues","props","motionValues","map","session","syncRenderSession","styler","push","Mount","innerRef","isStatic","Element","domStyler","preparseOutput","enableHardwareAcceleration","resolveCurrent","resolvedValues","transformOriginProps","isTransformOriginProp","buildStyleAttr","styleProp","motionValueStyles","transform","isKeyframesTarget","Array","isArray","resolveFinalValueInKeyframes","length","dimensionTypes","test","parse","valueTypes","testValueType","type","getDimensionValueType","find","getValueType","underDampedSpring","stiffness","damping","restDelta","restSpeed","overDampedSpring","to","linearTween","ease","duration","keyframes","defaultTransitions","x","y","z","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scale","opacity","backgroundColor","color","default","just","update","complete","easingDefinitionToFunction","definition","x1","y1","x2","y2","isEasingArray","isAnimatable","startsWith","secondsToMilliseconds","seconds","transitions","tween","spring","inertia","transitionOptionParser","from","velocity","easings","getTransitionDefinition","transitionDefinition","delay","when","delayChildren","staggerChildren","staggerDirection","transition","Object","keys","isTransitionDefined","valueKey","transitionFactory","getDefaultTransition","valueTransitionDefinition","hasOwnProperty","getAnimation","target","origin","isOriginAnimatable","isTargetAnimatable","actionFactory","preprocessOptions","repeatDelay","startAnimation","delay$1","activeAnimation","animationFactory","valueDelay","options","animate","ValueAnimationControls","readValueFromSource","makeTargetAnimatable","variants","baseTarget","overrides","resolvedOverrides","activeOverrides","hasValue","setProps","setVariants","setDefaultTransition","defaultTransition","setValues","_c","isActive","priority","_d","resolveVariant","transitionEnd","transformValues","targetValue","checkForNewValues","newValueKeys","filter","numNewValues","i","getAnimatableNone","variant","custom","getHighestPriority","size","Math","max","apply","setOverride","overrideIndex","startOverride","override","clearOverride","highest","resetIsAnimating","overrideTarget","remainingValues","onStart","onComplete","applyVariantLabels","variantLabelList","reverse","animateVariantLabels","animateVariant","animationDefinition","transitionOverride","_e","animatable","animations","valueTarget","allAnimations","all","variantLabels","label","variantLabel","getAnimations","getChildrenAnimations","animateChildren","last","first","maxStaggerDuration","generateStaggerDuration","childControls","onAnimationStart","onAnimationComplete","checkOverrideIsAnimating","numOverrides","resolvedOverride","controls","resetChildren","AnimationControls","pendingAnimations","componentControls","subscribe","animations_1","PresenceContext","MotionContext","static","isVariantLabel","isAnimationControls","useMotionContext","parentContext","initialState","initial","whileTap","whileHover","presenceContext","shouldPropagateControls","targetInitial","targetAnimate","initialDependency","animateDependency","context","isReducedMotion","isInitialOnly","isInitialRender","useInitialOrEveryRender","initialToApply","useValueAnimationControls","subscribeToParentControls","parentControls","isPresent","unmountProps","checkShouldInheritVariant","inherit","createMotionComponent","getValueControlsConfig","loadFunctionalityComponents","renderComponent","externalRef","useExternalRef","style","prevMotionStyles","thisStyle","useMotionStyles","shouldInheritVariant","functionality","renderedComponent","Provider","svgElements","MotionPluginContext","transformPagePoint","p","useUnmountEffect","addDomEvent","eventName","handler","addEventListener","removeEventListener","isMouseEvent","event","PointerEvent","pointerType","MouseEvent","isTouchEvent","touches","defaultPagePoint","pageX","pageY","pointFromTouch","e","changedTouches","pointFromMouse","extractEventInfo","point","Point","wrapHandler","shouldFilterPrimaryPointer","listener","eventHandler","button","filterPrimaryPointer","isBrowser","window","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","name","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","element","useDomEvent","subtract","a","b","relativeTo","idOrElem","elem","localElem","document","getElementById","rect","getBoundingClientRect","left","scrollX","top","scrollY","isViewportScrollBlocked","preventDefault","passive","unblockViewportScroll","PanSession","handlers","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","info","getPanInfo","history","isPanStarted","isDistancePastThreshold","offset","onMove","initialInfo","transformPoint","onSessionStart","removeOnPointerMove","handlePointerMove","removeOnPointerUp","handlePointerUp","removeListeners","buttons","end","onEnd","panInfo","updateHandlers","lastDevicePoint","startDevicePoint","getVelocity$1","timestampedPoint","lastPoint","time","currentVelocity","Infinity","order","getGesturePriority","gesture","indexOf","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","drag","openHorizontal_1","openVertical_1","tapGesturePriority","hoverPriority","filterTouch","useGestures","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","panSession","usePanGesture","onTap","onTapStart","onTapCancel","hasTapListeners","isTapping","cancelPointerEventListener","removePointerUp","onPointerUp","openGestureLock","isNodeOrChild","parentElement","useTapGesture","onHoverStart","onHoverEnd","useHoverGesture","makeRenderlessComponent","hook","gestureProps","Gestures","shouldRender","some","Component","isRefObject","noop","ComponentDragControls","isDragging","currentDirection","constraints","openGlobalLock","prevConstraintsBox","width","height","originEvent","snapToCursor","bothAxis","axis","axisPoint","constraintsNeedResolution","dragConstraints","transformPagePoint_1","calculateConstraintsFromDom","applyConstraintsToPoint","dragPropagation","onDragStart","convertPanToDrag","dragDirectionLock","lockThreshold","direction","abs","getCurrentDirection","onDirectionLock","onDrag","cancelDrag","dragMomentum","dragElastic","onDragEnd","animateDragEnd","recordBoxInfo","right","bottom","top_1","boundingBox","getBoundingBox","center","setPoint","shouldDrag","applyConstraints","updateProps","_f","_g","remainingProps","_dragValueX","_dragValueY","dragOriginX","dragOriginY","dragTransition","_dragTransitionControls","momentumAnimations","getConstraints","bounceStiffness","bounceDamping","animationControls","timeConstant","externalAxisMotionValue","scalePoint","onDragTransitionEnd","constraintsBox","draggableBox","scaleAxisPoint","dimension","pointToScale","stopPointerListener","dragListener","stopResizeListener","min","constraintsRef","draggableRef","parentBoundingBox","draggableBoundingBox","getCurrentOffset","constrainedValue","applyOverdrag","dragFactor","Drag","groupDragControls","dragControls","useDrag","isCSSVariable","cssVariableRegex","getVariableValue","depth","match","exec","parseCSSVariable","token","fallback","resolved","getComputedStyle","getPropertyValue","BoundingBoxDimension","positionalKeys","isPositionalKey","setAndResetVelocity","isNumOrPxType","getPosFromMatrix","matrix","pos","split","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","checkAndConvertChangedValueTypes","elementStyler","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","reduce","acc","toType","fromType","numKeyframes","removedTransforms","removeNonTranslationalTransform","convertedTarget","changedKeys","originBbox","elementComputedStyle","display","originComputedStyle","targetBbox","convertChangedValueTypes","unitConversion","hasPositionalKey","parseDomVariant","HTMLElement","resolveCSSVariables","useForceUpdate","forcedRenderCount","setForcedRenderCount","StepName","SyncLayoutContext","jobs","Prepare","Read","Render","jobsNeedProcessing","flushCallbackList","list","numJobs","createUseSyncEffect","stepName","layoutSync","flush","prepare","read","defaultLayoutTransition","defaultPositionTransition","axisLabels","id","centerOf","calcAxisDelta","next","names","sizeDelta","getLayout","measure","offsetLeft","offsetTop","offsetWidth","offsetHeight","readPositionStyle","position","isSizeKey","AnimatePropType","Layout","positionTransition","layoutTransition","_super","LayoutAnimation","arguments","getSnapshotBeforeUpdate","isHTMLElement","compare","getTransition","isPositionOnly","positionStyle","nextPosition","getLayoutType","calcDelta","originX","originY","isResolver","makeTransition","layoutKey","transformKey","visualOrigin","deltaKey","baseTransition","getDefaultLayoutTransition","offsetToApply","componentDidUpdate","contextType","validMotionProps","isValidMotionProp","targetWithoutTransition","mergeTransitionEnd","_a$1","resolveVariantLabels","unresolvedVariant","AnimatePropComponents","Target","targetAndTransition","prevValues","targetToAnimate","animatingTarget","finalTarget","shouldAnimateOnMount","isValidValue","valueHasUpdated","prevLength","shallowCompare","useAnimateProp","VariantLabel","targetVariants","parentAlreadyMounted","oldVariant","newVariant","shouldAnimate","join","useVariants","AnimationSubscription","useAnimationGroupSubscription","isAnimationSubscription","animationProps","animatePropTypeTests","prop","Exit","exit","onExitComplete","register","usePresence","isPlayingExitAnimation","isPropValid","emotionIsPropValid_1","functionalityComponents","numFunctionalityComponents","createDomMotionConfig","isDOM","isSVG","forwardedProps","domProps","filterValidProps","staticVisualStyles","buildSVGProps","isDrag","userSelect","draggable","buildHTMLProps","activeComponents","Animation","animatePropType","getAnimationComponent","Component_1","htmlMotionComponents","svgMotionComponents","motion","getMixer","mix","isCustomValueType","args","_i","useImmediate","argOffset","inputValue","inputRange","outputRange","interpolator","mixer","createScrollMotionValues","scrollXProgress","scrollYProgress","DragControls","nativeEvent","PresenceChild","_onExitComplete","numPresenceChildren","numExitComplete","allComplete","getChildKey","AnimatePresence","exitBeforeEnter","localForceUpdate","forceUpdate","filteredChildren","filtered","onlyElements","presentChildren","allChildren","exiting","updateChildLookup","childrenToRender","presentKeys","targetKeys","numPresent","insertionIndex","splice","removeIndex","findIndex","prefersReducedMotion","matchMedia","motionMediaQuery_1","setReducedMotionPreferences","matches","addListener"],"mappings":"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","file":"05d954cf-9ad77ccf8a4ef98590d7.js","sourcesContent":["import { __assign, __spreadArrays, __rest, __extends } from 'tslib';\nimport { useRef, memo, useEffect, createContext, useContext, useMemo, forwardRef, createElement, Fragment, useCallback, useState, Component, useLayoutEffect, cloneElement, Children, isValidElement } from 'react';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { velocityPerSecond, distance, mix, interpolate, wrap } from '@popmotion/popcorn';\nimport styler, { createStylerFactory, buildStyleProperty, isTransformProp, transformProps, buildSVGAttrs } from 'stylefire';\nimport { invariant, warning } from 'hey-listen';\nimport { color, complex, number, px, percent, degrees, vw, vh } from 'style-value-types';\nimport { action, delay, tween, spring, keyframes as keyframes$1, inertia } from 'popmotion';\nimport * as easingLookup from '@popmotion/easing';\nimport { cubicBezier, linear } from '@popmotion/easing';\n\nvar isFloat = function isFloat(value) {\n return !isNaN(parseFloat(value));\n};\n/**\r\n * `MotionValue` is used to track the state and velocity of motion values.\r\n *\r\n * @public\r\n */\n\n\nvar MotionValue =\n/** @class */\nfunction () {\n /**\r\n * @param init - The initiating value\r\n * @param config - Optional configuration options\r\n *\r\n * - `transformer`: A function to transform incoming values with.\r\n *\r\n * @internal\r\n */\n function MotionValue(init, _a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n transformer = _b.transformer,\n parent = _b.parent;\n /**\r\n * Duration, in milliseconds, since last updating frame.\r\n *\r\n * @internal\r\n */\n\n\n this.timeDelta = 0;\n /**\r\n * Timestamp of the last time this `MotionValue` was updated.\r\n *\r\n * @internal\r\n */\n\n this.lastUpdated = 0;\n /**\r\n * Tracks whether this value can output a velocity. Currently this is only true\r\n * if the value is numerical, but we might be able to widen the scope here and support\r\n * other value types.\r\n *\r\n * @internal\r\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 = _this.transformer ? _this.transformer(v) : v;\n\n if (_this.updateSubscribers && _this.prev !== _this.current) {\n _this.updateSubscribers.forEach(_this.notifySubscriber);\n }\n\n if (_this.children) {\n _this.children.forEach(_this.setChild);\n }\n\n if (render && _this.renderSubscribers) {\n _this.renderSubscribers.forEach(_this.notifySubscriber);\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 /**\r\n * Notify a subscriber with the latest value.\r\n *\r\n * This is an instanced and bound function to prevent generating a new\r\n * function once per frame.\r\n *\r\n * @param subscriber - The subscriber to notify.\r\n *\r\n * @internal\r\n */\n\n\n this.notifySubscriber = function (subscriber) {\n subscriber(_this.current);\n };\n /**\r\n * Schedule a velocity check for the next frame.\r\n *\r\n * This is an instanced and bound function to prevent generating a new\r\n * function once per frame.\r\n *\r\n * @internal\r\n */\n\n\n this.scheduleVelocityCheck = function () {\n return sync.postRender(_this.velocityCheck);\n };\n /**\r\n * Updates `prev` with `current` if the value hasn't been updated this frame.\r\n * This ensures velocity calculations return `0`.\r\n *\r\n * This is an instanced and bound function to prevent generating a new\r\n * function once per frame.\r\n *\r\n * @internal\r\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 /**\r\n * Updates child `MotionValue`.\r\n *\r\n * @param child - Child `MotionValue`.\r\n *\r\n * @internal\r\n */\n\n\n this.setChild = function (child) {\n return child.set(_this.current);\n };\n\n this.parent = parent;\n this.transformer = transformer;\n this.set(init, false);\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\r\n * Creates a new `MotionValue` that's subscribed to the output of this one.\r\n *\r\n * @param config - Optional configuration options\r\n *\r\n * - `transformer`: A function to transform incoming values with.\r\n *\r\n * @internal\r\n */\n\n\n MotionValue.prototype.addChild = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n var child = new MotionValue(this.current, __assign({\n parent: this\n }, config));\n if (!this.children) this.children = new Set();\n this.children.add(child);\n return child;\n };\n /**\r\n * Stops a `MotionValue` from being subscribed to this one.\r\n *\r\n * @param child - The subscribed `MotionValue`\r\n *\r\n * @internal\r\n */\n\n\n MotionValue.prototype.removeChild = function (child) {\n if (!this.children) {\n return;\n }\n\n this.children.delete(child);\n };\n /**\r\n * Subscribes a subscriber function to a subscription list.\r\n *\r\n * @param subscriptions - A `Set` of subscribers.\r\n * @param subscription - A subscriber function.\r\n */\n\n\n MotionValue.prototype.subscribeTo = function (subscriptions, subscription) {\n var _this = this;\n\n var updateSubscriber = function updateSubscriber() {\n return subscription(_this.current);\n };\n\n subscriptions.add(updateSubscriber);\n return function () {\n return subscriptions.delete(updateSubscriber);\n };\n };\n /**\r\n * Adds a function that will be notified when the `MotionValue` is updated.\r\n *\r\n * It returns a function that, when called, will cancel the subscription.\r\n *\r\n * When calling `onChange` inside a React component, it should be wrapped with the\r\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\r\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\r\n *\r\n * @library\r\n *\r\n * ```jsx\r\n * function MyComponent() {\r\n * const x = useMotionValue(0)\r\n * const y = useMotionValue(0)\r\n * const opacity = useMotionValue(1)\r\n *\r\n * useEffect(() => {\r\n * function updateOpacity() {\r\n * const maxXY = Math.max(x.get(), y.get())\r\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\r\n * opacity.set(newOpacity)\r\n * }\r\n *\r\n * const unsubscribeX = x.onChange(updateOpacity)\r\n * const unsubscribeY = y.onChange(updateOpacity)\r\n *\r\n * return () => {\r\n * unsubscribeX()\r\n * unsubscribeY()\r\n * }\r\n * }, [])\r\n *\r\n * return \r\n * }\r\n * ```\r\n *\r\n * @motion\r\n *\r\n * ```jsx\r\n * export const MyComponent = () => {\r\n * const x = useMotionValue(0)\r\n * const y = useMotionValue(0)\r\n * const opacity = useMotionValue(1)\r\n *\r\n * useEffect(() => {\r\n * function updateOpacity() {\r\n * const maxXY = Math.max(x.get(), y.get())\r\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\r\n * opacity.set(newOpacity)\r\n * }\r\n *\r\n * const unsubscribeX = x.onChange(updateOpacity)\r\n * const unsubscribeY = y.onChange(updateOpacity)\r\n *\r\n * return () => {\r\n * unsubscribeX()\r\n * unsubscribeY()\r\n * }\r\n * }, [])\r\n *\r\n * return \r\n * }\r\n * ```\r\n *\r\n * @internalremarks\r\n *\r\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\r\n *\r\n * ```jsx\r\n * useOnChange(x, () => {})\r\n * ```\r\n *\r\n * @param subscriber - A function that receives the latest value.\r\n * @returns A function that, when called, will cancel this subscription.\r\n *\r\n * @public\r\n */\n\n\n MotionValue.prototype.onChange = function (subscription) {\n if (!this.updateSubscribers) this.updateSubscribers = new Set();\n return this.subscribeTo(this.updateSubscribers, subscription);\n };\n /**\r\n * Adds a function that will be notified when the `MotionValue` requests a render.\r\n *\r\n * @param subscriber - A function that's provided the latest value.\r\n * @returns A function that, when called, will cancel this subscription.\r\n *\r\n * @internal\r\n */\n\n\n MotionValue.prototype.onRenderRequest = function (subscription) {\n if (!this.renderSubscribers) this.renderSubscribers = new Set(); // Render immediately\n\n this.notifySubscriber(subscription);\n return this.subscribeTo(this.renderSubscribers, subscription);\n };\n /**\r\n * Attaches a passive effect to the `MotionValue`.\r\n *\r\n * @internal\r\n */\n\n\n MotionValue.prototype.attach = function (passiveEffect) {\n this.passiveEffect = passiveEffect;\n };\n /**\r\n * Sets the state of the `MotionValue`.\r\n *\r\n * @remarks\r\n *\r\n * ```jsx\r\n * const x = useMotionValue(0)\r\n * x.set(10)\r\n * ```\r\n *\r\n * @param latest - Latest value to set.\r\n * @param render - Whether to notify render subscribers. Defaults to `true`\r\n *\r\n * @public\r\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 /**\r\n * Returns the latest state of `MotionValue`\r\n *\r\n * @returns - The latest state of `MotionValue`\r\n *\r\n * @public\r\n */\n\n\n MotionValue.prototype.get = function () {\n return this.current;\n };\n /**\r\n * Returns the latest velocity of `MotionValue`\r\n *\r\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\r\n *\r\n * @public\r\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 /**\r\n * Registers a new animation to control this `MotionValue`. Only one\r\n * animation can drive a `MotionValue` at one time.\r\n *\r\n * ```jsx\r\n * value.start()\r\n * ```\r\n *\r\n * @param animation - A function that starts the provided animation\r\n *\r\n * @internal\r\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 /**\r\n * Stop the currently active animation.\r\n *\r\n * @public\r\n */\n\n\n MotionValue.prototype.stop = function () {\n if (this.stopAnimation) this.stopAnimation();\n this.clearAnimation();\n };\n /**\r\n * Returns `true` if this value is currently animating.\r\n *\r\n * @public\r\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 /**\r\n * Destroy and clean up subscribers to this `MotionValue`.\r\n *\r\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\r\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\r\n * created a `MotionValue` via the `motionValue` function.\r\n *\r\n * @public\r\n */\n\n\n MotionValue.prototype.destroy = function () {\n this.updateSubscribers && this.updateSubscribers.clear();\n this.renderSubscribers && this.renderSubscribers.clear();\n this.parent && this.parent.removeChild(this);\n this.stop();\n };\n\n return MotionValue;\n}();\n/**\r\n * @internal\r\n */\n\n\nfunction motionValue(init, opts) {\n return new MotionValue(init, opts);\n}\n/**\r\n * Creates a constant value over the lifecycle of a component.\r\n *\r\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\r\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\r\n * you can ensure that initialisers don't execute twice or more.\r\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\nvar isMotionValue = function isMotionValue(value) {\n return value instanceof MotionValue;\n}; // Creating a styler factory for the `onUpdate` prop allows all values\n// to fire and the `onUpdate` prop will only fire once per frame\n\n\nvar updateStyler = createStylerFactory({\n onRead: function onRead() {\n return null;\n },\n onRender: function onRender(state, _a) {\n var onUpdate = _a.onUpdate;\n return onUpdate(state);\n }\n});\n\nvar MotionValuesMap =\n/** @class */\nfunction () {\n function MotionValuesMap() {\n this.hasMounted = false;\n this.values = new Map();\n this.unsubscribers = new Map();\n }\n\n MotionValuesMap.prototype.has = function (key) {\n return this.values.has(key);\n };\n\n MotionValuesMap.prototype.set = function (key, value) {\n this.values.set(key, value);\n\n if (this.hasMounted) {\n this.bindValueToOutput(key, value);\n }\n };\n\n MotionValuesMap.prototype.get = function (key, defaultValue) {\n var value = this.values.get(key);\n\n if (value === undefined && defaultValue !== undefined) {\n value = new MotionValue(defaultValue);\n this.set(key, value);\n }\n\n return value;\n };\n\n MotionValuesMap.prototype.forEach = function (callback) {\n return this.values.forEach(callback);\n };\n\n MotionValuesMap.prototype.bindValueToOutput = function (key, value) {\n var _this = this;\n\n var onRender = function onRender(v) {\n return _this.output && _this.output(key, v);\n };\n\n var unsubscribeOnRender = value.onRenderRequest(onRender);\n\n var onChange = function onChange(v) {\n _this.onUpdate && _this.onUpdate.set(key, v);\n };\n\n var unsubscribeOnChange = value.onChange(onChange);\n\n if (this.unsubscribers.has(key)) {\n this.unsubscribers.get(key)();\n }\n\n this.unsubscribers.set(key, function () {\n unsubscribeOnRender();\n unsubscribeOnChange();\n });\n };\n\n MotionValuesMap.prototype.setOnUpdate = function (onUpdate) {\n this.onUpdate = undefined;\n\n if (onUpdate) {\n this.onUpdate = updateStyler({\n onUpdate: onUpdate\n });\n }\n };\n\n MotionValuesMap.prototype.setTransformTemplate = function (transformTemplate) {\n if (this.transformTemplate !== transformTemplate) {\n this.transformTemplate = transformTemplate;\n this.updateTransformTemplate();\n }\n };\n\n MotionValuesMap.prototype.getTransformTemplate = function () {\n return this.transformTemplate;\n };\n\n MotionValuesMap.prototype.updateTransformTemplate = function () {\n if (this.output) {\n this.output(\"transform\", this.transformTemplate);\n }\n };\n\n MotionValuesMap.prototype.mount = function (output) {\n var _this = this;\n\n this.hasMounted = true;\n if (output) this.output = output;\n this.values.forEach(function (value, key) {\n return _this.bindValueToOutput(key, value);\n });\n this.updateTransformTemplate();\n };\n\n MotionValuesMap.prototype.unmount = function () {\n var _this = this;\n\n this.values.forEach(function (_value, key) {\n var unsubscribe = _this.unsubscribers.get(key);\n\n unsubscribe && unsubscribe();\n });\n };\n\n return MotionValuesMap;\n}();\n\nvar specialMotionValueProps = new Set([\"dragOriginX\", \"dragOriginY\"]);\n\nvar useMotionValues = function useMotionValues(props) {\n var motionValues = useConstant(function () {\n var map = new MotionValuesMap();\n /**\r\n * Loop through every prop and add any detected `MotionValue`s. This is SVG-specific\r\n * code that should be extracted, perhaps considered hollistically with `useMotionStyles`.\r\n *\r\n * \r\n */\n\n for (var key in props) {\n if (isMotionValue(props[key]) && !specialMotionValueProps.has(key)) {\n map.set(key, props[key]);\n }\n }\n\n return map;\n });\n motionValues.setOnUpdate(props.onUpdate);\n motionValues.setTransformTemplate(props.transformTemplate);\n return motionValues;\n};\n\nvar session = null;\nvar syncRenderSession = {\n isOpen: function isOpen() {\n return session !== null;\n },\n open: function open() {\n invariant(!session, \"Sync render session already open\");\n session = [];\n },\n flush: function flush() {\n invariant(session !== null, \"No sync render session found\");\n session && session.forEach(function (styler) {\n return styler.render();\n });\n session = null;\n },\n push: function push(styler) {\n invariant(session !== null, \"No sync render session found\");\n session && session.push(styler);\n }\n};\n/**\r\n * `useEffect` gets resolved bottom-up. We defer some optional functionality to child\r\n * components, so to ensure everything runs correctly we export the ref-binding logic\r\n * to a new component rather than in `useMotionValues`.\r\n */\n\nvar MountComponent = function MountComponent(_a) {\n var ref = _a.innerRef,\n values = _a.values,\n isStatic = _a.isStatic;\n useEffect(function () {\n invariant(ref.current instanceof Element, \"No `ref` found. Ensure components created with `motion.custom` forward refs using `React.forwardRef`\");\n var domStyler = styler(ref.current, {\n preparseOutput: false,\n enableHardwareAcceleration: !isStatic\n });\n values.mount(function (key, value) {\n domStyler.set(key, value);\n\n if (syncRenderSession.isOpen()) {\n syncRenderSession.push(domStyler);\n }\n });\n return function () {\n return values.unmount();\n };\n }, []);\n return null;\n};\n\nvar Mount = memo(MountComponent);\n\nvar createValueResolver = function createValueResolver(resolver) {\n return function (values) {\n var resolvedValues = {};\n values.forEach(function (value, key) {\n return resolvedValues[key] = resolver(value);\n });\n return resolvedValues;\n };\n};\n\nvar resolveCurrent = createValueResolver(function (value) {\n return value.get();\n});\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\n\nvar isTransformOriginProp = function isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n};\n\nvar buildStyleAttr = function buildStyleAttr(values, styleProp, isStatic) {\n var motionValueStyles = resolveCurrent(values);\n var transformTemplate = values.getTransformTemplate();\n\n if (transformTemplate) {\n // If `transform` has been manually set as a string, pass that through the template\n // otherwise pass it forward to Stylefire's style property builder\n motionValueStyles.transform = styleProp.transform ? transformTemplate({}, styleProp.transform) : transformTemplate;\n }\n\n return buildStyleProperty(__assign(__assign({}, styleProp), motionValueStyles), !isStatic);\n};\n\nvar useMotionStyles = function useMotionStyles(values, styleProp, isStatic, transformValues) {\n if (styleProp === void 0) {\n styleProp = {};\n }\n\n var style = {};\n var prevMotionStyles = useRef({}).current;\n\n for (var key in styleProp) {\n var thisStyle = styleProp[key];\n\n if (isMotionValue(thisStyle)) {\n // If this is a motion value, add it to our MotionValuesMap\n values.set(key, thisStyle);\n } else if (!isStatic && (isTransformProp(key) || isTransformOriginProp(key))) {\n // Or if it's a transform prop, create a motion value (or update an existing one)\n // to ensure Stylefire can reconcile all the transform values together.\n // A further iteration on this would be to create a single styler per component that gets\n // used in the DOM renderer's buildStyleAttr *and* animations, then we would only\n // have to convert animating values to `MotionValues` (we could probably remove this entire function).\n // The only architectural consideration is to allow Stylefire to have elements mounted after\n // a styler is created.\n if (!values.has(key)) {\n // If it doesn't exist as a motion value, create it\n values.set(key, motionValue(thisStyle));\n } else {\n // Otherwise only update it if it's changed from a previous render\n if (thisStyle !== prevMotionStyles[key]) {\n var value = values.get(key);\n value.set(thisStyle);\n }\n }\n\n prevMotionStyles[key] = thisStyle;\n } else {\n style[key] = thisStyle;\n }\n }\n\n return transformValues ? transformValues(style) : style;\n};\n\nvar isKeyframesTarget = function isKeyframesTarget(v) {\n return Array.isArray(v);\n};\n\nvar isCustomValue = function isCustomValue(v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\n\nvar resolveFinalValueInKeyframes = function resolveFinalValueInKeyframes(v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nvar auto = {\n test: function test(v) {\n return v === \"auto\";\n },\n parse: function parse(v) {\n return v;\n }\n};\nvar dimensionTypes = [number, px, percent, degrees, vw, vh, auto];\n\nvar valueTypes = __spreadArrays(dimensionTypes, [color, complex]);\n\nvar testValueType = function testValueType(v) {\n return function (type) {\n return type.test(v);\n };\n};\n\nvar getDimensionValueType = function getDimensionValueType(v) {\n return dimensionTypes.find(testValueType(v));\n};\n\nvar getValueType = function getValueType(v) {\n return valueTypes.find(testValueType(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: 700,\n damping: to === 0 ? 100 : 35\n };\n};\n\nvar linearTween = function linearTween() {\n return {\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/**\r\n * A Popmotion action that accepts a single `to` prop. When it starts, it immediately\r\n * updates with `to` and then completes. By using this we can compose instant transitions\r\n * in with the same logic that applies `delay` or returns a `Promise` etc.\r\n *\r\n * Accepting `duration` is a little bit of a hack that simply defers the completetion of\r\n * the animation until after the duration finishes. This is for situations when you're **only**\r\n * animating non-animatable values and then setting something on `transitionEnd`. Really\r\n * you want this to fire after the \"animation\" finishes, rather than instantly.\r\n *\r\n * ```\r\n * animate={{\r\n * display: 'block',\r\n * transitionEnd: { display: 'none' }\r\n * }}\r\n * ```\r\n */\n\n\nvar just = function just(_a) {\n var to = _a.to,\n duration = _a.duration;\n return action(function (_a) {\n var update = _a.update,\n complete = _a.complete;\n update(to);\n duration ? delay(duration).start({\n complete: complete\n }) : complete();\n });\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 var x1 = definition[0],\n y1 = definition[1],\n x2 = definition[2],\n y2 = definition[3];\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\nvar isDurationAnimation = function isDurationAnimation(v) {\n return v.hasOwnProperty(\"duration\") || v.hasOwnProperty(\"repeatDelay\");\n};\n/**\r\n * Check if a value is animatable. Examples:\r\n *\r\n * ✅: 100, \"100px\", \"#fff\"\r\n * ❌: \"block\", \"url(2.jpg)\"\r\n * @param value\r\n *\r\n * @internal\r\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/**\r\n * Converts seconds to milliseconds\r\n *\r\n * @param seconds - Time in seconds.\r\n * @return milliseconds - Converted time in milliseconds.\r\n */\n\n\nvar secondsToMilliseconds = function secondsToMilliseconds(seconds) {\n return seconds * 1000;\n};\n\nvar transitions = {\n tween: tween,\n spring: spring,\n keyframes: keyframes$1,\n inertia: inertia,\n just: just\n};\nvar transitionOptionParser = {\n tween: function tween(opts) {\n if (opts.ease) {\n var ease = isEasingArray(opts.ease) ? opts.ease[0] : opts.ease;\n opts.ease = easingDefinitionToFunction(ease);\n }\n\n return opts;\n },\n keyframes: function keyframes(_a) {\n var from = _a.from,\n to = _a.to,\n velocity = _a.velocity,\n opts = __rest(_a, [\"from\", \"to\", \"velocity\"]);\n\n if (opts.values && opts.values[0] === null) {\n var values = __spreadArrays(opts.values);\n\n values[0] = from;\n opts.values = values;\n }\n\n if (opts.ease) {\n opts.easings = isEasingArray(opts.ease) ? opts.ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(opts.ease);\n }\n\n opts.ease = linear;\n return opts;\n }\n};\n\nvar isTransitionDefined = function isTransitionDefined(_a) {\n var when = _a.when,\n delay = _a.delay,\n delayChildren = _a.delayChildren,\n staggerChildren = _a.staggerChildren,\n staggerDirection = _a.staggerDirection,\n transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\"]);\n\n return Object.keys(transition).length;\n};\n\nvar getTransitionDefinition = function getTransitionDefinition(key, to, transitionDefinition) {\n var delay = transitionDefinition ? transitionDefinition.delay : 0; // If no object, return default transition\n // A better way to handle this would be to deconstruct out all the shared Orchestration props\n // and see if there's any props remaining\n\n if (transitionDefinition === undefined || !isTransitionDefined(transitionDefinition)) {\n return __assign({\n delay: delay\n }, getDefaultTransition(key, to));\n }\n\n var valueTransitionDefinition = transitionDefinition[key] || transitionDefinition.default || transitionDefinition;\n\n if (valueTransitionDefinition.type === false) {\n return {\n delay: valueTransitionDefinition.hasOwnProperty(\"delay\") ? valueTransitionDefinition.delay : delay,\n to: isKeyframesTarget(to) ? to[to.length - 1] : to,\n type: \"just\"\n };\n } else if (isKeyframesTarget(to)) {\n return __assign(__assign({\n values: to,\n duration: 0.8,\n delay: delay,\n ease: \"linear\"\n }, valueTransitionDefinition), {\n // This animation must be keyframes if we're animating through an array\n type: \"keyframes\"\n });\n } else {\n return __assign({\n type: \"tween\",\n to: to,\n delay: delay\n }, valueTransitionDefinition);\n }\n};\n\nvar preprocessOptions = function preprocessOptions(type, opts) {\n return transitionOptionParser[type] ? transitionOptionParser[type](opts) : opts;\n};\n\nvar getAnimation = function getAnimation(key, value, target, transition) {\n var origin = value.get();\n var isOriginAnimatable = isAnimatable(key, origin);\n var isTargetAnimatable = isAnimatable(key, target); // TODO we could probably improve this check to ensure both values are of the same type -\n // for instance 100 to #fff. This might live better in Popmotion.\n\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.\"); // Parse the `transition` prop and return options for the Popmotion animation\n\n var _a = getTransitionDefinition(key, target, transition),\n _b = _a.type,\n type = _b === void 0 ? \"tween\" : _b,\n transitionDefinition = __rest(_a, [\"type\"]); // If this is an animatable pair of values, return an animation, otherwise use `just`\n\n\n var actionFactory = isOriginAnimatable && isTargetAnimatable ? transitions[type] : just;\n var opts = preprocessOptions(type, __assign({\n from: origin,\n velocity: value.getVelocity()\n }, transitionDefinition)); // Convert duration from Framer Motion's seconds into Popmotion's milliseconds\n\n if (isDurationAnimation(opts)) {\n if (opts.duration) {\n opts.duration = secondsToMilliseconds(opts.duration);\n }\n\n if (opts.repeatDelay) {\n opts.repeatDelay = secondsToMilliseconds(opts.repeatDelay);\n }\n }\n\n return [actionFactory, opts];\n};\n/**\r\n * Start animation on a value. This function completely encapsulates Popmotion-specific logic.\r\n *\r\n * @internal\r\n */\n\n\nfunction startAnimation(key, value, target, _a) {\n var _b = _a.delay,\n delay$1 = _b === void 0 ? 0 : _b,\n transition = __rest(_a, [\"delay\"]);\n\n return value.start(function (complete) {\n var activeAnimation;\n\n var _a = getAnimation(key, value, target, transition),\n animationFactory = _a[0],\n _b = _a[1],\n valueDelay = _b.delay,\n options = __rest(_b, [\"delay\"]);\n\n if (valueDelay !== undefined) {\n delay$1 = valueDelay;\n }\n\n var animate = function animate() {\n var animation = animationFactory(options); // Bind animation opts to animation\n\n activeAnimation = animation.start({\n update: function update(v) {\n return value.set(v);\n },\n complete: complete\n });\n }; // If we're delaying this animation, only resolve it **after** the delay to\n // ensure the value's resolve velocity is up-to-date.\n\n\n if (delay$1) {\n activeAnimation = delay(secondsToMilliseconds(delay$1)).start({\n complete: animate\n });\n } else {\n animate();\n }\n\n return function () {\n if (activeAnimation) activeAnimation.stop();\n };\n });\n}\n/**\r\n * Get the current value of every `MotionValue`\r\n * @param values -\r\n */\n\n\nvar getCurrent = function getCurrent(values) {\n var current = {};\n values.forEach(function (value, key) {\n return current[key] = value.get();\n });\n return current;\n};\n/**\r\n * Get the current velocity of every `MotionValue`\r\n * @param values -\r\n */\n\n\nvar getVelocity = function getVelocity(values) {\n var velocity = {};\n values.forEach(function (value, key) {\n return velocity[key] = value.getVelocity();\n });\n return velocity;\n};\n/**\r\n * Check if value is a function that returns a `Target`. A generic typeof === 'function'\r\n * check, just helps with typing.\r\n * @param p -\r\n */\n\n\nvar isTargetResolver = function isTargetResolver(p) {\n return typeof p === \"function\";\n};\n/**\r\n * Check if value is a list of variant labels\r\n * @param v -\r\n */\n\n\nvar isVariantLabels = function isVariantLabels(v) {\n return Array.isArray(v);\n};\n/**\r\n * Check if value is a numerical string, ie \"100\" or \"100px\"\r\n */\n\n\nvar isNumericalString = function isNumericalString(v) {\n return /^\\d*\\.?\\d+$/.test(v);\n};\n/**\r\n * Control animations for a single component\r\n *\r\n * @internal\r\n */\n\n\nvar ValueAnimationControls =\n/** @class */\nfunction () {\n function ValueAnimationControls(_a) {\n var _this = this;\n\n var values = _a.values,\n readValueFromSource = _a.readValueFromSource,\n makeTargetAnimatable = _a.makeTargetAnimatable;\n /**\r\n * A reference to the component's latest props. We could probably ditch this in\r\n * favour to a reference to the `custom` prop now we don't send all props through\r\n * to target resolvers.\r\n */\n\n this.props = {};\n /**\r\n * The component's variants, as provided by `variants`\r\n */\n\n this.variants = {};\n /**\r\n * A set of values that we animate back to when a value is cleared of all overrides.\r\n */\n\n this.baseTarget = {};\n /**\r\n * A series of target overrides that we can animate to/from when overrides are set/cleared.\r\n */\n\n this.overrides = [];\n /**\r\n * A series of target overrides as they were originally resolved.\r\n */\n\n this.resolvedOverrides = [];\n /**\r\n * A Set of currently active override indexes\r\n */\n\n this.activeOverrides = new Set();\n /**\r\n * A Set of value keys that are currently animating.\r\n */\n\n this.isAnimating = new Set();\n /**\r\n * Check if the associated `MotionValueMap` has a key with the provided string.\r\n * Pre-bound to the class so we can provide directly to the `filter` in `checkForNewValues`.\r\n */\n\n this.hasValue = function (key) {\n return !_this.values.has(key);\n };\n\n this.values = values;\n this.readValueFromSource = readValueFromSource;\n this.makeTargetAnimatable = makeTargetAnimatable;\n this.values.forEach(function (value, key) {\n return _this.baseTarget[key] = value.get();\n });\n }\n /**\r\n * Set the reference to the component's props.\r\n * @param props -\r\n */\n\n\n ValueAnimationControls.prototype.setProps = function (props) {\n this.props = props;\n };\n /**\r\n * Set the reference to the component's variants\r\n * @param variants -\r\n */\n\n\n ValueAnimationControls.prototype.setVariants = function (variants) {\n if (variants) this.variants = variants;\n };\n /**\r\n * Set the component's default transition\r\n * @param transition -\r\n */\n\n\n ValueAnimationControls.prototype.setDefaultTransition = function (transition) {\n if (transition) this.defaultTransition = transition;\n };\n /**\r\n * Set motion values without animation.\r\n *\r\n * @param definition -\r\n * @param isActive -\r\n */\n\n\n ValueAnimationControls.prototype.setValues = function (definition, _a) {\n var _this = this;\n\n var _b = _a === void 0 ? {} : _a,\n _c = _b.isActive,\n isActive = _c === void 0 ? new Set() : _c,\n priority = _b.priority;\n\n var _d = this.resolveVariant(definition),\n target = _d.target,\n transitionEnd = _d.transitionEnd;\n\n target = this.transformValues(__assign(__assign({}, target), transitionEnd));\n return Object.keys(target).forEach(function (key) {\n if (isActive.has(key)) return;\n isActive.add(key);\n\n if (target) {\n var targetValue = resolveFinalValueInKeyframes(target[key]);\n\n if (_this.values.has(key)) {\n var value = _this.values.get(key);\n\n value && value.set(targetValue);\n } else {\n _this.values.set(key, motionValue(targetValue));\n }\n\n if (!priority) _this.baseTarget[key] = targetValue;\n }\n });\n };\n /**\r\n * Allows `transformValues` to be set by a component that allows us to\r\n * transform the values in a given `Target`. This allows Framer Library\r\n * to extend Framer Motion to animate `Color` variables etc. Currently we have\r\n * to manually support these extended types here in Framer Motion.\r\n *\r\n * @param values -\r\n */\n\n\n ValueAnimationControls.prototype.transformValues = function (values) {\n var transformValues = this.props.transformValues;\n return transformValues ? transformValues(values) : values;\n };\n /**\r\n * Check a `Target` for new values we haven't animated yet, and add them\r\n * to the `MotionValueMap`.\r\n *\r\n * Currently there's functionality here that is DOM-specific, we should allow\r\n * this functionality to be injected by the factory that creates DOM-specific\r\n * components.\r\n *\r\n * @param target -\r\n */\n\n\n ValueAnimationControls.prototype.checkForNewValues = function (target) {\n var newValueKeys = Object.keys(target).filter(this.hasValue);\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 value = this.readValueFromSource(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 (!getValueType(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 this.values.set(key, motionValue(value));\n this.baseTarget[key] = value;\n }\n };\n /**\r\n * Resolve a variant from its label or resolver into an actual `Target` we can animate to.\r\n * @param variant -\r\n */\n\n\n ValueAnimationControls.prototype.resolveVariant = function (variant) {\n if (!variant) {\n return {\n target: undefined,\n transition: undefined,\n transitionEnd: undefined\n };\n }\n\n if (isTargetResolver(variant)) {\n // resolve current and velocity\n variant = variant(this.props.custom, getCurrent(this.values), getVelocity(this.values));\n }\n\n var _a = variant.transition,\n transition = _a === void 0 ? this.defaultTransition : _a,\n transitionEnd = variant.transitionEnd,\n target = __rest(variant, [\"transition\", \"transitionEnd\"]);\n\n return {\n transition: transition,\n transitionEnd: transitionEnd,\n target: target\n };\n };\n /**\r\n * Get the highest active override priority index\r\n */\n\n\n ValueAnimationControls.prototype.getHighestPriority = function () {\n if (!this.activeOverrides.size) return 0;\n return Math.max.apply(Math, Array.from(this.activeOverrides));\n };\n /**\r\n * Set an override. We add this layer of indirection so if, for instance, a tap gesture\r\n * starts and overrides a hover gesture, when we clear the tap gesture and fallback to the\r\n * hover gesture, if that hover gesture has changed in the meantime we can go to that rather\r\n * than the one that was resolved when the hover gesture animation started.\r\n *\r\n * @param definition -\r\n * @param overrideIndex -\r\n */\n\n\n ValueAnimationControls.prototype.setOverride = function (definition, overrideIndex) {\n this.overrides[overrideIndex] = definition;\n\n if (this.children) {\n this.children.forEach(function (child) {\n return child.setOverride(definition, overrideIndex);\n });\n }\n };\n /**\r\n * Start an override animation.\r\n * @param overrideIndex -\r\n */\n\n\n ValueAnimationControls.prototype.startOverride = function (overrideIndex) {\n var override = this.overrides[overrideIndex];\n\n if (override) {\n return this.start(override, {\n priority: overrideIndex\n });\n }\n };\n /**\r\n * Clear an override. We check every value we animated to in this override to see if\r\n * its present on any lower-priority overrides. If not, we animate it back to its base target.\r\n * @param overrideIndex -\r\n */\n\n\n ValueAnimationControls.prototype.clearOverride = function (overrideIndex) {\n var _this = this;\n\n if (this.children) {\n this.children.forEach(function (child) {\n return child.clearOverride(overrideIndex);\n });\n }\n\n var override = this.overrides[overrideIndex];\n if (!override) return;\n this.activeOverrides.delete(overrideIndex);\n var highest = this.getHighestPriority();\n this.resetIsAnimating();\n\n if (highest) {\n var highestOverride = this.overrides[highest];\n highestOverride && this.startOverride(highest);\n } // Figure out which remaining values were affected by the override and animate those\n\n\n var overrideTarget = this.resolvedOverrides[overrideIndex];\n if (!overrideTarget) return;\n var remainingValues = {};\n\n for (var key in this.baseTarget) {\n if (overrideTarget[key] !== undefined) {\n remainingValues[key] = this.baseTarget[key];\n }\n }\n\n this.onStart();\n this.animate(remainingValues).then(function () {\n return _this.onComplete();\n });\n };\n /**\r\n * Apply a target/variant without any animation\r\n */\n\n\n ValueAnimationControls.prototype.apply = function (definition) {\n if (Array.isArray(definition)) {\n return this.applyVariantLabels(definition);\n } else if (typeof definition === \"string\") {\n return this.applyVariantLabels([definition]);\n } else {\n this.setValues(definition);\n }\n };\n /**\r\n * Apply variant labels without animation\r\n */\n\n\n ValueAnimationControls.prototype.applyVariantLabels = function (variantLabelList) {\n var _this = this;\n\n var isActive = new Set();\n\n var reversedList = __spreadArrays(variantLabelList).reverse();\n\n reversedList.forEach(function (key) {\n var _a = _this.resolveVariant(_this.variants[key]),\n target = _a.target,\n transitionEnd = _a.transitionEnd;\n\n if (transitionEnd) {\n _this.setValues(transitionEnd, {\n isActive: isActive\n });\n }\n\n if (target) {\n _this.setValues(target, {\n isActive: isActive\n });\n }\n\n if (_this.children && _this.children.size) {\n _this.children.forEach(function (child) {\n return child.applyVariantLabels(variantLabelList);\n });\n }\n });\n };\n\n ValueAnimationControls.prototype.start = function (definition, opts) {\n var _this = this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n if (opts.priority) {\n this.activeOverrides.add(opts.priority);\n }\n\n this.resetIsAnimating(opts.priority);\n var animation;\n\n if (isVariantLabels(definition)) {\n animation = this.animateVariantLabels(definition, opts);\n } else if (typeof definition === \"string\") {\n animation = this.animateVariant(definition, opts);\n } else {\n animation = this.animate(definition, opts);\n }\n\n this.onStart();\n return animation.then(function () {\n return _this.onComplete();\n });\n };\n\n ValueAnimationControls.prototype.animate = function (animationDefinition, _a) {\n var _this = this;\n\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\n var _e = this.resolveVariant(animationDefinition),\n target = _e.target,\n transition = _e.transition,\n transitionEnd = _e.transitionEnd;\n\n if (transitionOverride) {\n transition = transitionOverride;\n }\n\n if (!target) return Promise.resolve();\n target = this.transformValues(target);\n\n if (transitionEnd) {\n transitionEnd = this.transformValues(transitionEnd);\n }\n\n this.checkForNewValues(target);\n\n if (this.makeTargetAnimatable) {\n var animatable = this.makeTargetAnimatable(target, transitionEnd);\n target = animatable.target;\n transitionEnd = animatable.transitionEnd;\n }\n\n if (priority) {\n this.resolvedOverrides[priority] = target;\n }\n\n this.checkForNewValues(target);\n var animations = [];\n\n for (var key in target) {\n var value = this.values.get(key);\n if (!value || !target || target[key] === undefined) continue;\n var valueTarget = target[key];\n\n if (!priority) {\n this.baseTarget[key] = resolveFinalValueInKeyframes(valueTarget);\n }\n\n if (this.isAnimating.has(key)) continue;\n this.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 _this.setValues(transitionEnd, {\n priority: priority\n });\n }) : allAnimations;\n };\n\n ValueAnimationControls.prototype.animateVariantLabels = function (variantLabels, opts) {\n var _this = this;\n\n var animations = __spreadArrays(variantLabels).reverse().map(function (label) {\n return _this.animateVariant(label, opts);\n });\n\n return Promise.all(animations);\n };\n\n ValueAnimationControls.prototype.animateVariant = function (variantLabel, opts) {\n var _this = this;\n\n var when = false;\n var delayChildren = 0;\n var staggerChildren = 0;\n var staggerDirection = 1;\n var priority = opts && opts.priority || 0;\n var variant = this.variants[variantLabel];\n var getAnimations = variant ? function () {\n return _this.animate(variant, opts);\n } : function () {\n return Promise.resolve();\n };\n var getChildrenAnimations = this.children ? function () {\n return _this.animateChildren(variantLabel, delayChildren, staggerChildren, staggerDirection, priority);\n } : function () {\n return Promise.resolve();\n };\n\n if (variant && this.children) {\n var transition = this.resolveVariant(variant).transition;\n\n if (transition) {\n when = transition.when || when;\n delayChildren = transition.delayChildren || delayChildren;\n staggerChildren = transition.staggerChildren || staggerChildren;\n staggerDirection = transition.staggerDirection || staggerDirection;\n }\n }\n\n if (when) {\n var _a = when === \"beforeChildren\" ? [getAnimations, getChildrenAnimations] : [getChildrenAnimations, getAnimations],\n first = _a[0],\n last = _a[1];\n\n return first().then(last);\n } else {\n return Promise.all([getAnimations(), getChildrenAnimations()]);\n }\n };\n\n ValueAnimationControls.prototype.animateChildren = function (variantLabel, delayChildren, staggerChildren, staggerDirection, priority) {\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 if (!this.children) {\n return Promise.resolve();\n }\n\n var animations = [];\n var maxStaggerDuration = (this.children.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(this.children).forEach(function (childControls, i) {\n var animation = childControls.animateVariant(variantLabel, {\n priority: priority,\n delay: delayChildren + generateStaggerDuration(i)\n });\n animations.push(animation);\n });\n return Promise.all(animations);\n };\n\n ValueAnimationControls.prototype.onStart = function () {\n var onAnimationStart = this.props.onAnimationStart;\n onAnimationStart && onAnimationStart();\n };\n\n ValueAnimationControls.prototype.onComplete = function () {\n var onAnimationComplete = this.props.onAnimationComplete;\n onAnimationComplete && onAnimationComplete();\n };\n\n ValueAnimationControls.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 ValueAnimationControls.prototype.resetIsAnimating = function (priority) {\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 < this.getHighestPriority()) {\n this.checkOverrideIsAnimating(priority);\n }\n\n if (this.children) {\n this.children.forEach(function (child) {\n return child.resetIsAnimating(priority);\n });\n }\n };\n\n ValueAnimationControls.prototype.stop = function () {\n this.values.forEach(function (value) {\n return value.stop();\n });\n };\n /**\r\n * Add the controls of a child component.\r\n * @param controls -\r\n */\n\n\n ValueAnimationControls.prototype.addChild = function (controls) {\n if (!this.children) {\n this.children = new Set();\n }\n\n this.children.add(controls); // We set child overrides when `setOverride` is called, but also have to do it here\n // as the first time `setOverride` is called all the children might not have been added yet.\n\n this.overrides.forEach(function (override, i) {\n override && controls.setOverride(override, i);\n });\n };\n\n ValueAnimationControls.prototype.removeChild = function (controls) {\n if (!this.children) {\n return;\n }\n\n this.children.delete(controls);\n };\n\n ValueAnimationControls.prototype.resetChildren = function () {\n if (this.children) this.children.clear();\n };\n\n return ValueAnimationControls;\n}();\n/**\r\n * Use callback either only on the initial render or on all renders. In concurrent mode\r\n * the \"initial\" render might run multiple times\r\n *\r\n * @param callback - Callback to run\r\n * @param isInitialOnly - Set to `true` to only run on initial render, or `false` for all renders. Defaults to `false`.\r\n *\r\n * @public\r\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/**\r\n * Control animations on one or more components.\r\n *\r\n * @public\r\n */\n\n\nvar AnimationControls =\n/** @class */\nfunction () {\n function AnimationControls() {\n /**\r\n * Track whether the host component has mounted.\r\n *\r\n * @internal\r\n */\n this.hasMounted = false;\n /**\r\n * Pending animations that are started before a component is mounted.\r\n *\r\n * @internal\r\n */\n\n this.pendingAnimations = [];\n /**\r\n * A collection of linked component animation controls.\r\n *\r\n * @internal\r\n */\n\n this.componentControls = new Set();\n }\n /**\r\n * Set variants on this and all child components.\r\n *\r\n * @param variants - The variants to set\r\n *\r\n * @internal\r\n */\n\n\n AnimationControls.prototype.setVariants = function (variants) {\n this.variants = variants;\n this.componentControls.forEach(function (controls) {\n return controls.setVariants(variants);\n });\n };\n /**\r\n * Set a default transition on this and all child components\r\n *\r\n * @param transition - The default transition to set\r\n *\r\n * @internal\r\n */\n\n\n AnimationControls.prototype.setDefaultTransition = function (transition) {\n this.defaultTransition = transition;\n this.componentControls.forEach(function (controls) {\n return controls.setDefaultTransition(transition);\n });\n };\n /**\r\n * Subscribes a component's animation controls to this.\r\n *\r\n * @param controls - The controls to subscribe\r\n * @returns An unsubscribe function.\r\n *\r\n * @internal\r\n */\n\n\n AnimationControls.prototype.subscribe = function (controls) {\n var _this = this;\n\n this.componentControls.add(controls);\n if (this.variants) controls.setVariants(this.variants);\n if (this.defaultTransition) controls.setDefaultTransition(this.defaultTransition);\n return function () {\n return _this.componentControls.delete(controls);\n };\n };\n /**\r\n * Starts an animation on all linked components.\r\n *\r\n * @remarks\r\n *\r\n * ```jsx\r\n * controls.start(\"variantLabel\")\r\n * controls.start({\r\n * x: 0,\r\n * transition: { duration: 1 }\r\n * })\r\n * ```\r\n *\r\n * @param definition - Properties or variant label to animate to\r\n * @param transition - Optional `transtion` to apply to a variant\r\n * @returns - A `Promise` that resolves when all animations have completed.\r\n *\r\n * @public\r\n */\n\n\n AnimationControls.prototype.start = function (definition, transitionOverride) {\n var _this = this;\n\n if (this.hasMounted) {\n var animations_1 = [];\n this.componentControls.forEach(function (controls) {\n var animation = controls.start(definition, {\n transitionOverride: transitionOverride\n });\n animations_1.push(animation);\n });\n return Promise.all(animations_1);\n } else {\n return new Promise(function (resolve) {\n _this.pendingAnimations.push({\n animation: [definition, transitionOverride],\n resolve: resolve\n });\n });\n }\n };\n /**\r\n * Instantly set to a set of properties or a variant.\r\n *\r\n * ```jsx\r\n * // With properties\r\n * controls.set({ opacity: 0 })\r\n *\r\n * // With variants\r\n * controls.set(\"hidden\")\r\n * ```\r\n *\r\n * @internalremarks\r\n * We could perform a similar trick to `.start` where this can be called before mount\r\n * and we maintain a list of of pending actions that get applied on mount. But the\r\n * expectation of `set` is that it happens synchronously and this would be difficult\r\n * to do before any children have even attached themselves. It's also poor practise\r\n * and we should discourage render-synchronous `.start` calls rather than lean into this.\r\n *\r\n * @public\r\n */\n\n\n AnimationControls.prototype.set = function (definition) {\n invariant(this.hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return this.componentControls.forEach(function (controls) {\n return controls.apply(definition);\n });\n };\n /**\r\n * Stops animations on all linked components.\r\n *\r\n * ```jsx\r\n * controls.stop()\r\n * ```\r\n *\r\n * @public\r\n */\n\n\n AnimationControls.prototype.stop = function () {\n this.componentControls.forEach(function (controls) {\n return controls.stop();\n });\n };\n /**\r\n * Initialises the animation controls.\r\n *\r\n * @internal\r\n */\n\n\n AnimationControls.prototype.mount = function () {\n var _this = this;\n\n this.hasMounted = true;\n this.pendingAnimations.forEach(function (_a) {\n var animation = _a.animation,\n resolve = _a.resolve;\n return _this.start.apply(_this, animation).then(resolve);\n });\n };\n /**\r\n * Stops all child animations when the host component unmounts.\r\n *\r\n * @internal\r\n */\n\n\n AnimationControls.prototype.unmount = function () {\n this.hasMounted = false;\n this.stop();\n };\n\n return AnimationControls;\n}();\n/**\r\n * @internal\r\n */\n\n\nvar animationControls = function animationControls() {\n return new AnimationControls();\n};\n\nvar PresenceContext = createContext(null);\n/**\r\n * @internal\r\n */\n\nvar MotionContext = createContext({\n static: false\n});\n\nvar isVariantLabel = function isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n};\n\nvar isAnimationControls = function isAnimationControls(v) {\n return v instanceof AnimationControls;\n};\n/**\r\n * Set up the context for children motion components.\r\n *\r\n * We also use this opportunity to apply `initial` values\r\n */\n\n\nvar useMotionContext = function useMotionContext(parentContext, controls, values, isStatic, _a) {\n if (isStatic === void 0) {\n isStatic = false;\n }\n\n var initial = _a.initial,\n animate = _a.animate,\n variants = _a.variants,\n whileTap = _a.whileTap,\n whileHover = _a.whileHover;\n\n var _b;\n\n var presenceContext = useContext(PresenceContext); // Override initial with that from a parent context, if defined\n\n if (((_b = presenceContext) === null || _b === void 0 ? void 0 : _b.initial) !== undefined) {\n initial = presenceContext.initial;\n }\n\n var initialState;\n\n if (initial === false && !isAnimationControls(animate)) {\n initialState = animate;\n } else if (typeof initial !== \"boolean\") {\n initialState = initial;\n } // Track mounted status so children can detect whether they were present during their\n // parent's first render\n\n\n var hasMounted = useRef(false); // We propagate this component's ValueAnimationControls *if* we're being provided variants,\n // if we're being used to control variants, or if we're being passed animation controls.\n // Otherwise this component should be \"invisible\" to variant propagation. This is a slight concession\n // to Framer X where every `Frame` is a `motion` component and it might be if we change that in the future\n // that this restriction is removed.\n\n var shouldPropagateControls = variants || isVariantLabel(animate) || isVariantLabel(whileTap) || isVariantLabel(whileHover) || isAnimationControls(animate); // If this component's `initial` prop is a variant label, propagate it. Otherwise pass the parent's.\n\n var targetInitial = isVariantLabel(initialState) ? initialState : parentContext.initial; // If this is a variant tree we need to propagate the `animate` prop in case new children are added after\n // the tree initially animates.\n\n var targetAnimate = isVariantLabel(animate) ? animate : parentContext.animate; // Only allow `initial` to trigger context re-renders if this is a `static` component (ie we're on the Framer canvas)\n // or in another non-animation/interaction environment.\n\n var initialDependency = isStatic ? targetInitial : null; // Only allow `animate` to trigger context re-renders if it's a variant label. If this is an array of\n // variant labels there's probably an optimisation to deep-compare but it might be an over-optimisation.\n // We want to do this as we rely on React's component rendering order each render cycle to determine\n // the new order of any child components for the `staggerChildren` functionality.\n\n var animateDependency = shouldPropagateControls && isVariantLabel(targetAnimate) ? targetAnimate : null; // The context to provide to the child. We `useMemo` because although `controls` and `initial` are\n // unlikely to change, by making the context an object it'll be considered a new value every render.\n // So all child motion components will re-render as a result.\n\n var context = useMemo(function () {\n return {\n controls: shouldPropagateControls ? controls : parentContext.controls,\n initial: targetInitial,\n animate: targetAnimate,\n values: values,\n hasMounted: hasMounted,\n isReducedMotion: parentContext.isReducedMotion\n };\n }, [initialDependency, animateDependency, parentContext.isReducedMotion]); // Update the `static` property every render. This is unlikely to change but also essentially free.\n\n context.static = isStatic; // 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 = initialState || parentContext.initial;\n initialToApply && controls.apply(initialToApply);\n }, !isStatic);\n useEffect(function () {\n hasMounted.current = true;\n }, []);\n return context;\n};\n/**\r\n * Creates an imperative set of controls to trigger animations.\r\n *\r\n * This allows a consolidated, uniform API for animations, to be triggered by other APIs like the `animate` prop, or the gesture handlers.\r\n *\r\n * @param values\r\n * @param props\r\n * @param ref\r\n * @param subscribeToParentControls\r\n *\r\n * @internal\r\n */\n\n\nfunction useValueAnimationControls(config, props, subscribeToParentControls) {\n var variants = props.variants,\n transition = props.transition;\n var parentControls = useContext(MotionContext).controls;\n var presenceContext = useContext(PresenceContext);\n var controls = useConstant(function () {\n return new ValueAnimationControls(config);\n }); // Reset and resubscribe children every render to ensure stagger order is correct\n\n if (!presenceContext || presenceContext.isPresent) {\n controls.resetChildren();\n controls.setProps(props);\n controls.setVariants(variants);\n controls.setDefaultTransition(transition);\n } // We have to subscribe to the parent controls within a useEffect rather than during render,\n // as\n\n\n useEffect(function () {\n if (subscribeToParentControls && parentControls) {\n parentControls.addChild(controls);\n }\n });\n useEffect(function () {\n return function () {\n // Remove reference to onAnimationComplete from controls. All the MotionValues\n // are unsubscribed from this component separately. We let animations run out\n // as they might be animating other components.\n var onAnimationComplete = props.onAnimationComplete,\n unmountProps = __rest(props, [\"onAnimationComplete\"]);\n\n controls.setProps(unmountProps);\n parentControls && parentControls.removeChild(controls);\n };\n }, []);\n return controls;\n}\n\nvar checkShouldInheritVariant = function checkShouldInheritVariant(_a) {\n var animate = _a.animate,\n variants = _a.variants,\n _b = _a.inherit,\n inherit = _b === void 0 ? true : _b;\n return inherit && !!variants && (!animate || animate instanceof AnimationControls);\n};\n/**\r\n * Uses the ref that is passed in, or creates a new one\r\n * @param external - External ref\r\n * @internal\r\n */\n\n\nfunction useExternalRef(externalRef) {\n // We're conditionally calling `useRef` here which is sort of naughty as hooks\n // shouldn't be called conditionally. However, Framer Motion will break if this\n // condition changes anyway. It might be possible to use an invariant here to\n // make it explicit, but I expect changing `ref` is not normal behaviour.\n var ref = !externalRef || typeof externalRef === \"function\" ? useRef(null) : externalRef; // Handle `ref` functions. Again, calling the hook conditionally is kind of naughty\n // but `ref` types changing between renders would break Motion anyway. If we receive\n // bug reports about this, we should track the provided ref and throw an invariant\n // rather than move the conditional to inside the useEffect as this will be fired\n // for every Frame component within Framer.\n\n if (externalRef && typeof externalRef === \"function\") {\n useEffect(function () {\n externalRef(ref.current);\n return function () {\n return externalRef(null);\n };\n }, []);\n }\n\n return ref;\n}\n/**\r\n * @internal\r\n */\n\n\nvar createMotionComponent = function createMotionComponent(_a) {\n var getValueControlsConfig = _a.getValueControlsConfig,\n loadFunctionalityComponents = _a.loadFunctionalityComponents,\n renderComponent = _a.renderComponent;\n\n function MotionComponent(props, externalRef) {\n var ref = useExternalRef(externalRef);\n var parentContext = useContext(MotionContext);\n var isStatic = parentContext.static || props.static || false;\n var values = useMotionValues(props);\n var style = useMotionStyles(values, props.style, isStatic, props.transformValues);\n var shouldInheritVariant = checkShouldInheritVariant(props);\n var controlsConfig = useConstant(function () {\n return getValueControlsConfig(ref, values);\n });\n var controls = useValueAnimationControls(controlsConfig, props, shouldInheritVariant);\n var context = useMotionContext(parentContext, controls, values, isStatic, props);\n var functionality = isStatic ? null : loadFunctionalityComponents(ref, values, props, parentContext, controls, shouldInheritVariant);\n var renderedComponent = renderComponent(ref, style, values, props, isStatic);\n return createElement(Fragment, null, createElement(MotionContext.Provider, {\n value: context\n }, renderedComponent), createElement(Fragment, null, createElement(Mount, {\n innerRef: ref,\n values: values,\n isStatic: isStatic\n }), functionality));\n }\n\n return forwardRef(MotionComponent);\n};\n/**\r\n * @internal\r\n */\n\n\nvar htmlElements = [\"a\", \"abbr\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"bdi\", \"bdo\", \"big\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"webview\"];\n/**\r\n * @internal\r\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\"];\n/**\r\n * @internal\r\n */\n\nvar MotionPluginContext = createContext({\n transformPagePoint: function transformPagePoint(p) {\n return p;\n }\n});\n/**\r\n * @remarks For now I think this should remain a private API for our own use\r\n * until we can figure out a nicer way of allowing people to add these\r\n *\r\n * @internal\r\n */\n\nfunction MotionPlugins(_a) {\n var children = _a.children,\n props = __rest(_a, [\"children\"]);\n\n var pluginContext = useContext(MotionPluginContext);\n var value = useRef(__assign({}, pluginContext)).current; // 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(MotionPluginContext.Provider, {\n value: value\n }, children);\n}\n\nfunction useUnmountEffect(callback) {\n return useEffect(function () {\n return function () {\n return callback();\n };\n }, []);\n}\n\nfunction addDomEvent(target, eventName, handler, options) {\n if (!handler) return;\n target.addEventListener(eventName, handler, options);\n return function () {\n return target.removeEventListener(eventName, handler, options);\n };\n}\n/**\r\n * Attaches an event listener directly to the provided DOM element.\r\n *\r\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\r\n * event handlers.\r\n *\r\n * ```jsx\r\n * const ref = useRef(null)\r\n *\r\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\r\n *\r\n * return
\r\n * ```\r\n *\r\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\r\n * @param eventName - Name of the event you want listen for.\r\n * @param handler - Function to fire when receiving the event.\r\n * @param options - Options to pass to `Event.addEventListener`.\r\n *\r\n * @public\r\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/**\r\n * Filters out events not attached to the primary pointer (currently left mouse button)\r\n * @param eventHandler\r\n */\n\n\nfunction filterPrimaryPointer(eventHandler) {\n if (!eventHandler) return undefined;\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) {\n var primaryTouch = e.touches[0] || e.changedTouches[0];\n\n var _a = primaryTouch || defaultPagePoint,\n pageX = _a.pageX,\n pageY = _a.pageY;\n\n return {\n x: pageX,\n y: pageY\n };\n}\n\nfunction pointFromMouse(_a) {\n var _b = _a.pageX,\n pageX = _b === void 0 ? 0 : _b,\n _c = _a.pageY,\n pageY = _c === void 0 ? 0 : _c;\n return {\n x: pageX,\n y: pageY\n };\n}\n\nfunction extractEventInfo(event) {\n return {\n point: isTouchEvent(event) ? pointFromTouch(event) : pointFromMouse(event)\n };\n}\n\nvar wrapHandler = function wrapHandler(handler, shouldFilterPrimaryPointer) {\n if (shouldFilterPrimaryPointer === void 0) {\n shouldFilterPrimaryPointer = false;\n }\n\n if (!handler) return;\n\n var listener = function listener(event) {\n return handler(event, extractEventInfo(event));\n };\n\n return shouldFilterPrimaryPointer ? filterPrimaryPointer(listener) : listener;\n};\n\nvar isBrowser = typeof window !== \"undefined\"; // We check for event support via functions in case they've been mocked by a testing suite.\n\nvar supportsPointerEvents = function supportsPointerEvents() {\n return isBrowser && window.onpointerdown === null;\n};\n\nvar supportsTouchEvents = function supportsTouchEvents() {\n return isBrowser && window.ontouchstart === null;\n};\n\nvar supportsMouseEvents = function supportsMouseEvents() {\n return isBrowser && window.onmousedown === null;\n};\n\nvar mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\"\n};\nvar touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\"\n};\n\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n } else if (supportsTouchEvents()) {\n return touchEventNames[name];\n } else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n\n return name;\n}\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n/** @public */\n\n\nvar Point;\n\n(function (Point) {\n /** @beta */\n Point.subtract = function (a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n };\n /** @beta */\n\n\n Point.relativeTo = function (idOrElem) {\n var elem;\n\n var getElem = function getElem() {\n // Caching element here could be leaky because of React lifecycle\n if (elem !== undefined) return elem;\n\n if (typeof idOrElem === \"string\") {\n elem = document.getElementById(idOrElem);\n } else {\n elem = idOrElem;\n }\n\n return elem;\n };\n\n return function (_a) {\n var x = _a.x,\n y = _a.y;\n var localElem = getElem();\n if (!localElem) return undefined;\n var rect = localElem.getBoundingClientRect();\n return {\n x: x - rect.left - window.scrollX,\n y: y - rect.top - window.scrollY\n };\n };\n };\n})(Point || (Point = {}));\n\nvar isViewportScrollBlocked = false;\nvar isBrowser$1 = typeof window !== \"undefined\";\n\nif (isBrowser$1) {\n document.addEventListener(\"touchmove\", function (event) {\n if (isViewportScrollBlocked) {\n event.preventDefault();\n }\n }, {\n passive: false\n });\n}\n\nvar blockViewportScroll = function blockViewportScroll() {\n return isViewportScrollBlocked = true;\n};\n\nvar unblockViewportScroll = function unblockViewportScroll() {\n return isViewportScrollBlocked = false;\n};\n/**\r\n * @internal\r\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 /**\r\n * @internal\r\n */\n\n this.startEvent = null;\n /**\r\n * @internal\r\n */\n\n this.lastMoveEvent = null;\n /**\r\n * @internal\r\n */\n\n this.lastMoveEventInfo = null;\n /**\r\n * @internal\r\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 }; // If we have more than one touch, don't start detecting this gesture\n\n\n if (isTouchEvent(event) && event.touches.length > 1) return;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n var info = extractEventInfo(event);\n var initialInfo = transformPoint(info, this.transformPagePoint);\n var point = initialInfo.point;\n var timestamp = getFrameData().timestamp;\n this.history = [__assign(__assign({}, point), {\n timestamp: timestamp\n })];\n var onSessionStart = handlers.onSessionStart;\n onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n var removeOnPointerMove = addPointerEvent(window, \"pointermove\", function (event, info) {\n return _this.handlePointerMove(event, info);\n });\n var removeOnPointerUp = addPointerEvent(window, \"pointerup\", function (event, info) {\n return _this.handlePointerUp(event, info);\n });\n\n this.removeListeners = function () {\n removeOnPointerMove && removeOnPointerMove();\n removeOnPointerUp && removeOnPointerUp();\n };\n }\n\n PanSession.prototype.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 `