@tamagui/animations-motion 3.0.18 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,6 +21,7 @@ function assignInlineStyles(node, styles) {
21
21
  }
22
22
  const MotionValueStrategy = /* @__PURE__ */ new WeakMap();
23
23
  const PendingMotionOnFinish = /* @__PURE__ */ new WeakMap();
24
+ const pendingDirectStyles = /* @__PURE__ */ new WeakMap();
24
25
  function settlePendingMotionOnFinish(mv, controls) {
25
26
  const onFinish = PendingMotionOnFinish.get(mv);
26
27
  if (!onFinish) return;
@@ -808,13 +809,31 @@ function createMotionView(defaultTag) {
808
809
  type: "spring",
809
810
  ...animationConfig
810
811
  };
811
- const animateNodeTo = (nextStyle, transition, motionValue3) => {
812
+ const animateNodeTo = (nextStyle, strategy, motionValue3) => {
812
813
  if (!(node instanceof HTMLElement) || hostRef.current !== node) return;
813
814
  const webStyle = resolvedAnimatedStyle?.resolve(nextStyle);
814
815
  if (!webStyle) return;
815
- settlePendingMotionOnFinish(motionValue3, animate(node, webStyle, transition));
816
+ const directStyle = pendingDirectStyles.get(node);
817
+ const isDirect = strategy?.type === "direct";
818
+ let target = webStyle;
819
+ if (directStyle && !isDirect) {
820
+ target = { ...webStyle };
821
+ for (const key in directStyle) {
822
+ if (key in webStyle) target[key] = [directStyle[key], webStyle[key]];
823
+ }
824
+ }
825
+ if (isDirect) {
826
+ assignInlineStyles(node, webStyle);
827
+ pendingDirectStyles.set(node, webStyle);
828
+ requestAnimationFrame(() => {
829
+ if (pendingDirectStyles.get(node) === webStyle) {
830
+ pendingDirectStyles.delete(node);
831
+ }
832
+ });
833
+ }
834
+ settlePendingMotionOnFinish(motionValue3, animate(node, target, toTransition(strategy)));
816
835
  };
817
- const animateChangedValue = (nextStyle, transition, motionValue3) => {
836
+ const animateChangedValue = (nextStyle, strategy, motionValue3) => {
818
837
  if (seededInCurrentFrame.current && seededNode.current === node) {
819
838
  const queuedFrame = queuedAnimationFrames.current.get(motionValue3);
820
839
  if (queuedFrame !== void 0) cancelAnimationFrame(queuedFrame);
@@ -822,7 +841,7 @@ function createMotionView(defaultTag) {
822
841
  if (queuedAnimationFrames.current.get(motionValue3) !== frame) return;
823
842
  queuedAnimationFrames.current.delete(motionValue3);
824
843
  if (hostRef.current === node) {
825
- animateNodeTo(nextStyle, transition, motionValue3);
844
+ animateNodeTo(nextStyle, strategy, motionValue3);
826
845
  } else {
827
846
  const onFinish = PendingMotionOnFinish.get(motionValue3);
828
847
  PendingMotionOnFinish.delete(motionValue3);
@@ -832,17 +851,17 @@ function createMotionView(defaultTag) {
832
851
  queuedAnimationFrames.current.set(motionValue3, frame);
833
852
  return;
834
853
  }
835
- animateNodeTo(nextStyle, transition, motionValue3);
854
+ animateNodeTo(nextStyle, strategy, motionValue3);
836
855
  };
837
856
  if (animatedStyle.motionValues) {
838
857
  const mvs = animatedStyle.motionValues;
839
858
  const styleForAll = () => animatedStyle.getStyle(...mvs.map((value) => value.get()));
840
- const unsubs = mvs.map((mv) => mv.on("change", () => animateChangedValue(styleForAll(), toTransition(MotionValueStrategy.get(mv)), mv)));
859
+ const unsubs = mvs.map((mv) => mv.on("change", () => animateChangedValue(styleForAll(), MotionValueStrategy.get(mv), mv)));
841
860
  return () => unsubs.forEach((fn) => fn());
842
861
  }
843
862
  const motionValue2 = animatedStyle.motionValue;
844
863
  if (!motionValue2) return;
845
- return motionValue2.on("change", (value) => animateChangedValue(animatedStyle.getStyle(value), toTransition(MotionValueStrategy.get(motionValue2)), motionValue2));
864
+ return motionValue2.on("change", (value) => animateChangedValue(animatedStyle.getStyle(value), MotionValueStrategy.get(motionValue2), motionValue2));
846
865
  }, [animatedStyle, resolvedAnimatedStyle]);
847
866
  return /* @__PURE__ */ jsx(Element, {
848
867
  ...transformedProps,
@@ -1 +1 @@
1
- {"version":3,"file":"createAnimations.js","names":["animateMotionValue"],"sources":["esm/createAnimations.js"],"sourcesContent":["import {\n easingToBezier,\n forAnimationState,\n getTransitionForKey,\n hasTransition,\n resolveTransition,\n styleKeysForProperty\n} from \"@tamagui/animation-helpers\";\nimport { ResetPresence, usePresence } from \"@tamagui/use-presence\";\nimport {\n getConfig,\n getSplitStyles,\n hooks,\n nonAnimatableStyleProps,\n Text,\n useComposedRefs,\n useIsomorphicLayoutEffect,\n View,\n createRefComponent\n} from \"@tamagui/web\";\nimport {\n fixStyles,\n normalizeValueWithProperty,\n styleToCSS,\n transformsToString,\n useThemeWithState\n} from \"@tamagui/web/internal-runtime\";\nimport {\n animate as animateMotionValue,\n motionValue,\n useAnimate,\n useMotionValue,\n useMotionValueEvent\n} from \"motion/react\";\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst isServer = typeof window === \"undefined\";\nfunction useAnimateSSRSafe() {\n if (isServer) {\n return [useRef(null), (() => {\n })];\n }\n return useAnimate();\n}\nconst asStyleRecord = (style) => style && typeof style === \"object\" && !Array.isArray(style) ? style : {};\nfunction assignInlineStyles(node, styles) {\n for (const key in styles) {\n node.style[key] = normalizeValueWithProperty(styles[key], key);\n }\n}\nconst MotionValueStrategy = /* @__PURE__ */ new WeakMap();\nconst PendingMotionOnFinish = /* @__PURE__ */ new WeakMap();\nfunction settlePendingMotionOnFinish(mv, controls) {\n const onFinish = PendingMotionOnFinish.get(mv);\n if (!onFinish) return;\n PendingMotionOnFinish.delete(mv);\n controls.then(() => onFinish()).catch(() => onFinish());\n}\nconst PopperPositionAnims = /* @__PURE__ */ new WeakMap();\nfunction parseTranslate(transform) {\n if (!transform || transform === \"none\") return { x: 0, y: 0 };\n try {\n const m = new DOMMatrixReadOnly(transform);\n if (!m.is2D || m.a !== 1 || m.b !== 0 || m.c !== 0 || m.d !== 1) return null;\n return { x: m.e, y: m.f };\n } catch {\n return null;\n }\n}\nfunction createAnimations(animations) {\n let isHydratingGlobal;\n const hydratingComponents = /* @__PURE__ */ new Set();\n return {\n View: MotionView,\n Text: MotionText,\n inputStyle: \"css\",\n outputStyle: \"inline\",\n avoidReRenders: true,\n animations,\n usePresence,\n ResetPresence,\n onMount() {\n isHydratingGlobal = false;\n hydratingComponents.forEach((cb) => cb());\n },\n useAnimations: (animationProps) => {\n if (isHydratingGlobal === void 0 && !getConfig().settings.disableSSR) {\n isHydratingGlobal = true;\n }\n const {\n props,\n style,\n componentState,\n stateRef,\n useStyleEmitter,\n presence,\n onTransition,\n styleProps,\n styleState\n } = animationProps;\n const effectiveTransition = styleState?.effectiveTransition ?? props.transition;\n const isComponentHydrating = componentState.unmounted === true;\n const isMounting = componentState.unmounted === \"should-enter\";\n const isEntering = !!componentState.unmounted;\n const isExiting = presence?.[0] === false;\n const sendExitComplete = presence?.[1];\n const refs = useRef(null);\n if (!refs.current) {\n refs.current = {\n isFirstRender: true,\n lastDoAnimate: null,\n lastDontAnimate: null,\n controls: null,\n lastAnimateAt: 0,\n disposed: false,\n wasExiting: false,\n isExiting: false,\n sendExitComplete: void 0,\n animationState: \"default\",\n frozenExitTarget: null,\n exitCompleteScheduled: false,\n enterCompleteScheduled: false,\n disableAnimation: true,\n wasEntering: false,\n wasDisabled: false,\n onTransition: void 0,\n enterStarted: false,\n exitStarted: false,\n updateInFlight: false,\n updateControls: null,\n wasNoClass: !!styleProps.noClass\n };\n }\n const emit = (phase, cause, finished) => {\n refs.current.onTransition?.(\n phase === \"end\" ? { phase, cause, finished } : { phase, cause }\n );\n };\n const justFinishedEntering = refs.current.wasEntering && !isEntering;\n useEffect(() => {\n refs.current.wasEntering = isEntering;\n });\n const animationState = isExiting ? \"exit\" : isMounting || justFinishedEntering ? \"enter\" : \"default\";\n const disableAnimation = isComponentHydrating || isMounting || !effectiveTransition;\n const [scope] = useAnimateSSRSafe();\n refs.current.isExiting = isExiting;\n refs.current.sendExitComplete = sendExitComplete;\n refs.current.animationState = animationState;\n refs.current.disableAnimation = disableAnimation;\n refs.current.onTransition = onTransition;\n const justStartedExiting = isExiting && !refs.current.wasExiting;\n const justStoppedExiting = !isExiting && refs.current.wasExiting;\n if (justStartedExiting || justStoppedExiting) {\n refs.current.frozenExitTarget = null;\n refs.current.exitCompleteScheduled = false;\n refs.current.enterCompleteScheduled = false;\n }\n useEffect(() => {\n refs.current.wasExiting = isExiting;\n });\n useIsomorphicLayoutEffect(() => {\n if (justStoppedExiting && refs.current.exitStarted) {\n refs.current.exitStarted = false;\n emit(\"end\", \"exit\", false);\n }\n }, [justStoppedExiting]);\n const {\n dontAnimate = {},\n doAnimate,\n animationOptions\n } = getMotionAnimatedProps(\n props,\n style,\n disableAnimation,\n animationState,\n effectiveTransition\n );\n const [firstRenderStyle] = useState(style);\n if (refs.current.isFirstRender) {\n refs.current.lastDontAnimate = firstRenderStyle;\n }\n const [isHydrating, setIsHydrating] = useState(isHydratingGlobal);\n useLayoutEffect(() => {\n if (isHydratingGlobal) {\n hydratingComponents.add(() => {\n setIsHydrating(false);\n });\n }\n return () => {\n refs.current.disposed = true;\n };\n }, []);\n const flushAnimation = ({\n doAnimate: doAnimateRaw = {},\n animationOptions: passedOptions = {},\n dontAnimate: dontAnimate2\n }) => {\n let startedControls = null;\n const isCurrentlyExiting = refs.current.isExiting;\n const currentSendExitComplete = refs.current.sendExitComplete;\n const currentAnimationState = refs.current.animationState;\n let doAnimate2 = doAnimateRaw;\n if (isCurrentlyExiting && refs.current.frozenExitTarget) {\n doAnimate2 = refs.current.frozenExitTarget;\n }\n const animationOptions2 = isCurrentlyExiting && currentSendExitComplete ? getAnimationOptions(\n forAnimationState(\n resolveTransition(effectiveTransition ?? null, {\n animations\n }),\n \"exit\"\n )\n ) : passedOptions;\n try {\n const node = stateRef.current.host;\n if (refs.current.isFirstRender) {\n refs.current.lastDontAnimate = null;\n refs.current.lastDoAnimate = null;\n }\n if (process.env.NODE_ENV === \"development\") {\n if (props[\"debug\"] && props[\"debug\"] !== \"profile\") {\n console.groupCollapsed(\n `[motion] animate (${JSON.stringify(getDiff(refs.current.lastDoAnimate, doAnimate2), null, 2)})`\n );\n console.info({\n props,\n componentState,\n doAnimate: doAnimate2,\n dontAnimate: dontAnimate2,\n animationOptions: animationOptions2,\n animationProps,\n lastDoAnimate: { ...refs.current.lastDoAnimate },\n lastDontAnimate: { ...refs.current.lastDontAnimate },\n isExiting,\n style,\n node\n });\n console.groupCollapsed(`trace >`);\n console.trace();\n console.groupEnd();\n console.groupEnd();\n }\n }\n if (!(node instanceof HTMLElement)) {\n return;\n }\n const prevDont = refs.current.lastDontAnimate;\n if (dontAnimate2) {\n if (prevDont) {\n removeRemovedStyles(prevDont, dontAnimate2, node, doAnimate2);\n const changed = getDiff(prevDont, dontAnimate2);\n if (changed) {\n assignInlineStyles(node, changed);\n }\n } else {\n assignInlineStyles(node, dontAnimate2);\n }\n } else if (prevDont) {\n removeRemovedStyles(prevDont, {}, node, doAnimate2);\n }\n if (doAnimate2) {\n if (prevDont) {\n for (const key in prevDont) {\n if (key in doAnimate2) {\n node.style[key] = normalizeValueWithProperty(prevDont[key], key);\n if (refs.current.lastDoAnimate) {\n refs.current.lastDoAnimate[key] = prevDont[key];\n }\n }\n }\n }\n const lastAnimated = refs.current.lastDoAnimate;\n if (lastAnimated) {\n removeRemovedStyles(lastAnimated, doAnimate2, node, dontAnimate2);\n }\n const diff = getDiff(refs.current.lastDoAnimate, doAnimate2);\n if (diff) {\n if (isCurrentlyExiting && !refs.current.frozenExitTarget) {\n refs.current.frozenExitTarget = { ...doAnimate2 };\n }\n const isPopperPosition = node.hasAttribute(\"data-popper-animate-position\");\n let popperHandledTransform = false;\n if (isPopperPosition && !isCurrentlyExiting && typeof diff.transform === \"string\") {\n const target = parseTranslate(diff.transform);\n if (target) {\n let entry = PopperPositionAnims.get(node);\n if (!entry) {\n let seed = target;\n try {\n seed = parseTranslate(getComputedStyle(node).transform) ?? target;\n } catch {\n }\n const x = motionValue(seed.x);\n const y = motionValue(seed.y);\n const write = () => {\n node.style.transform = `translate3d(${x.get()}px, ${y.get()}px, 0)`;\n };\n x.on(\"change\", write);\n y.on(\"change\", write);\n entry = { x, y, stop: null };\n PopperPositionAnims.set(node, entry);\n }\n if (!entry.stop) {\n try {\n const live = parseTranslate(getComputedStyle(node).transform);\n if (live) {\n entry.x.jump(live.x);\n entry.y.jump(live.y);\n }\n } catch {\n }\n }\n for (const anim of node.getAnimations()) {\n try {\n const kf = anim.effect?.getKeyframes?.();\n if (kf?.some((k) => \"transform\" in k)) {\n anim.cancel();\n }\n } catch {\n }\n }\n const opts = animationOptions2;\n const positionTransition = opts.x ?? opts.transform ?? opts.default ?? animationOptions2;\n const cx = animateMotionValue(\n entry.x,\n target.x,\n positionTransition\n );\n const cy = animateMotionValue(\n entry.y,\n target.y,\n positionTransition\n );\n entry.stop = () => {\n cx.stop();\n cy.stop();\n };\n popperHandledTransform = true;\n }\n }\n if (isCurrentlyExiting) {\n const entry = PopperPositionAnims.get(node);\n if (entry?.stop) {\n entry.stop();\n entry.stop = null;\n }\n }\n let midFlightValues = null;\n if (refs.current.controls) {\n try {\n const computed = getComputedStyle(node);\n midFlightValues = {};\n for (const key in diff) {\n const val = computed[key];\n if (val !== void 0 && val !== \"\") {\n midFlightValues[key] = val;\n }\n }\n } catch {\n }\n if (isCurrentlyExiting) {\n refs.current.controls.stop();\n }\n if (midFlightValues) {\n for (const key in midFlightValues) {\n if (key === \"transform\" && popperHandledTransform) continue;\n node.style[key] = midFlightValues[key];\n }\n }\n if (isPopperPosition && !popperHandledTransform) {\n const anims = node.getAnimations();\n for (const anim of anims) {\n anim.cancel();\n }\n }\n }\n const fixedDiff = fixTransparentColors(\n diff,\n refs.current.lastDoAnimate,\n doAnimate2\n );\n let waapiDiff = Object.fromEntries(\n Object.entries(fixedDiff).map(([key, value]) => [\n key,\n Array.isArray(value) ? value.map((item) => normalizeValueWithProperty(item, key)) : normalizeValueWithProperty(value, key)\n ])\n );\n if (popperHandledTransform && \"transform\" in waapiDiff) {\n waapiDiff = { ...waapiDiff };\n delete waapiDiff.transform;\n }\n if ((isPopperPosition || isCurrentlyExiting) && midFlightValues?.transform && waapiDiff.transform) {\n waapiDiff.transform = [midFlightValues.transform, waapiDiff.transform];\n }\n if (Object.keys(waapiDiff).length > 0) {\n startedControls = animateMotionValue(\n node,\n waapiDiff,\n animationOptions2\n );\n refs.current.controls = startedControls;\n }\n refs.current.lastAnimateAt = Date.now();\n }\n }\n refs.current.lastDontAnimate = dontAnimate2 ? { ...dontAnimate2 } : {};\n refs.current.lastDoAnimate = doAnimate2 ? { ...doAnimate2 } : {};\n } finally {\n if (isCurrentlyExiting && currentSendExitComplete) {\n if (refs.current.enterStarted) {\n refs.current.enterStarted = false;\n emit(\"end\", \"enter\", false);\n }\n if (startedControls) {\n if (!refs.current.exitStarted) {\n refs.current.exitStarted = true;\n emit(\"start\", \"exit\");\n }\n refs.current.exitCompleteScheduled = true;\n const complete = (finished) => {\n if (!refs.current.isExiting) return;\n if (refs.current.exitStarted) {\n refs.current.exitStarted = false;\n emit(\"end\", \"exit\", finished);\n }\n currentSendExitComplete();\n };\n startedControls.finished.then(() => complete(true)).catch(() => complete(false));\n } else if (!refs.current.exitCompleteScheduled) {\n emit(\"start\", \"exit\");\n emit(\"end\", \"exit\", true);\n currentSendExitComplete();\n }\n } else if (currentAnimationState === \"enter\") {\n if (startedControls) {\n if (!refs.current.enterStarted) {\n refs.current.enterStarted = true;\n emit(\"start\", \"enter\");\n }\n refs.current.enterCompleteScheduled = true;\n const complete = (finished) => {\n if (refs.current.disposed || refs.current.animationState !== \"enter\")\n return;\n if (refs.current.enterStarted) {\n refs.current.enterStarted = false;\n emit(\"end\", \"enter\", finished);\n }\n };\n startedControls.finished.then(() => complete(true)).catch(() => complete(false));\n } else if (!refs.current.enterCompleteScheduled && !refs.current.disableAnimation) {\n emit(\"start\", \"enter\");\n emit(\"end\", \"enter\", true);\n }\n } else if (startedControls) {\n const controls = startedControls;\n if (refs.current.updateInFlight) {\n emit(\"end\", \"update\", false);\n }\n refs.current.updateInFlight = true;\n refs.current.updateControls = controls;\n emit(\"start\", \"update\");\n const settle = (finished) => {\n if (refs.current.updateControls !== controls) return;\n refs.current.updateInFlight = false;\n refs.current.updateControls = null;\n emit(\"end\", \"update\", finished);\n };\n controls.finished.then(() => settle(true)).catch(() => settle(false));\n }\n }\n };\n useStyleEmitter?.((nextStyle, emittedTransition) => {\n const animationProps2 = getMotionAnimatedProps(\n props,\n nextStyle,\n disableAnimation,\n refs.current.animationState,\n emittedTransition ?? effectiveTransition\n );\n flushAnimation(animationProps2);\n });\n useIsomorphicLayoutEffect(() => {\n if (refs.current.isFirstRender) {\n refs.current.isFirstRender = false;\n refs.current.wasDisabled = disableAnimation;\n if (isHydrating) {\n if (doAnimate && Object.keys(doAnimate).length > 0) {\n refs.current.lastDoAnimate = { ...doAnimate };\n } else {\n refs.current.lastDoAnimate = dontAnimate ? { ...dontAnimate } : {};\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastAnimateAt = Date.now();\n return;\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastDoAnimate = doAnimate ? { ...doAnimate } : {};\n return;\n }\n const justEnabled = refs.current.wasDisabled && !disableAnimation;\n refs.current.wasDisabled = disableAnimation;\n const justStrippedClasses = !refs.current.wasNoClass && !!styleProps.noClass;\n refs.current.wasNoClass = !!styleProps.noClass;\n if ((justEnabled || justStrippedClasses) && animationState !== \"enter\") {\n const node = stateRef.current.host;\n if (node instanceof HTMLElement) {\n if (dontAnimate) assignInlineStyles(node, dontAnimate);\n if (doAnimate) assignInlineStyles(node, doAnimate);\n const entry = PopperPositionAnims.get(node);\n if (entry) {\n const target = parseTranslate(\n doAnimate?.transform ?? dontAnimate?.transform\n );\n if (target) {\n entry.stop?.();\n entry.stop = null;\n entry.x.jump(target.x);\n entry.y.jump(target.y);\n }\n }\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastDoAnimate = doAnimate ? { ...doAnimate } : {};\n return;\n }\n flushAnimation({\n doAnimate,\n dontAnimate,\n animationOptions\n });\n }, [style, isExiting, disableAnimation, styleProps.noClass]);\n if (process.env.NODE_ENV === \"development\") {\n if (props[\"debug\"] && props[\"debug\"] !== \"profile\") {\n console.groupCollapsed(`[motion] render`);\n console.info({\n style,\n doAnimate,\n dontAnimate,\n scope,\n animationOptions,\n isExiting,\n isFirstRender: refs.current.isFirstRender,\n animationProps\n });\n console.groupEnd();\n }\n }\n return {\n style: firstRenderStyle,\n ref: scope,\n render: \"div\"\n };\n },\n useAnimatedNumber(initial) {\n const motionValue2 = useMotionValue(initial);\n return React.useMemo(\n () => ({\n getInstance() {\n return motionValue2;\n },\n getValue() {\n return motionValue2.get();\n },\n setValue(next, config = { type: \"spring\" }, onFinish) {\n if (config.type === \"direct\") {\n MotionValueStrategy.set(motionValue2, { type: \"direct\" });\n motionValue2.set(next);\n onFinish?.();\n return;\n }\n MotionValueStrategy.set(motionValue2, config);\n if (onFinish) {\n const prior = PendingMotionOnFinish.get(motionValue2);\n if (prior) {\n PendingMotionOnFinish.delete(motionValue2);\n prior();\n }\n PendingMotionOnFinish.set(motionValue2, onFinish);\n }\n motionValue2.set(next);\n },\n stop() {\n motionValue2.stop();\n }\n }),\n [motionValue2]\n );\n },\n useAnimatedNumberReaction({ value }, onValue) {\n const instance = value.getInstance();\n useMotionValueEvent(instance, \"change\", onValue);\n },\n useAnimatedNumberStyle(val, getStyleProp) {\n const motionValue2 = val.getInstance();\n const getStyleRef = useRef(getStyleProp);\n getStyleRef.current = getStyleProp;\n return useMemo(() => {\n return {\n getStyle: (cur) => {\n return getStyleRef.current(cur);\n },\n motionValue: motionValue2\n };\n }, []);\n },\n useAnimatedNumbersStyle(vals, getStyleProp) {\n const motionValues = vals.map((v) => v.getInstance());\n const getStyleRef = useRef(getStyleProp);\n getStyleRef.current = getStyleProp;\n return useMemo(() => {\n return {\n getStyle: (...currentValues) => getStyleRef.current(...currentValues),\n motionValues\n };\n }, []);\n }\n };\n function getMotionAnimatedProps(props, style, disable, animationState = \"default\", transitionOverride) {\n if (disable) {\n return {\n dontAnimate: style\n };\n }\n const resolved = forAnimationState(\n resolveTransition(transitionOverride ?? props.transition ?? null, {\n animations\n }),\n animationState\n );\n const animationOptions = getAnimationOptions(resolved);\n let dontAnimate;\n let doAnimate;\n for (const key in style) {\n const value = style[key];\n if (disableAnimationProps.has(key) || !getTransitionForKey(resolved, key)) {\n dontAnimate ||= {};\n dontAnimate[key] = value;\n } else {\n doAnimate ||= {};\n doAnimate[key] = value;\n }\n }\n return {\n dontAnimate,\n doAnimate,\n animationOptions\n };\n }\n function getAnimationOptions(resolved) {\n if (!hasTransition(resolved)) return {};\n const result = {};\n if (resolved.all) {\n const base = entryToMotion(resolved.all);\n Object.assign(result, base);\n result.default = { ...base };\n }\n for (const entry of resolved.entries) {\n if (entry.property === \"all\") continue;\n const config = entryToMotion(entry);\n for (const key of styleKeysForProperty(entry.property)) {\n result[key] = { ...config };\n }\n }\n return result;\n }\n}\nfunction entryToMotion(entry) {\n const delay = entry.delayMs ? { delay: entry.delayMs / 1e3 } : null;\n if (entry.timing.kind === \"spring\") {\n return {\n type: \"spring\",\n stiffness: entry.timing.stiffness,\n damping: entry.timing.damping,\n mass: entry.timing.mass,\n ...delay\n };\n }\n const bezier = easingToBezier(entry.timing.easing);\n return {\n type: \"tween\",\n duration: entry.timing.durationMs / 1e3,\n ...bezier ? { ease: [bezier[0], bezier[1], bezier[2], bezier[3]] } : null,\n ...delay\n };\n}\nfunction removeRemovedStyles(prev, next, node, dontClearIfIn) {\n for (const key in prev) {\n if (!(key in next)) {\n if (dontClearIfIn && key in dontClearIfIn) {\n continue;\n }\n node.style[key] = \"\";\n }\n }\n}\nconst disableAnimationProps = /* @__PURE__ */ new Set([\n ...Object.keys(nonAnimatableStyleProps),\n \"flexBasis\"\n]);\nfunction motionPropsEqual(a, b) {\n for (const key in a) {\n if (!(key in b)) return false;\n }\n for (const key in b) {\n if (key === \"children\") continue;\n const av = a[key];\n const bv = b[key];\n if (typeof bv === \"function\" && typeof av === \"function\") continue;\n if (!Object.is(av, bv)) return false;\n }\n return true;\n}\nfunction motionStylesEqual(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const sa = a[i];\n const sb = b[i];\n if (sa === sb) continue;\n if (!sa || !sb) return false;\n let aCount = 0;\n for (const key in sa) {\n aCount++;\n if (!Object.is(sa[key], sb[key])) return false;\n }\n let bCount = 0;\n for (const _key in sb) {\n bCount++;\n }\n if (aCount !== bCount) return false;\n }\n return true;\n}\nconst MotionView = createMotionView(\"div\");\nconst MotionText = createMotionView(\"span\");\nconst transformAliases = {\n x: \"translateX\",\n y: \"translateY\",\n scale: \"scale\",\n scaleX: \"scaleX\",\n scaleY: \"scaleY\",\n rotate: \"rotate\",\n rotateX: \"rotateX\",\n rotateY: \"rotateY\",\n rotateZ: \"rotateZ\",\n skewX: \"skewX\",\n skewY: \"skewY\"\n};\nfunction compileAnimatedStyle(initialSource, initialResolved) {\n const shorthands = getConfig().shorthands;\n const entries = Object.keys(initialSource).map((source) => ({\n source,\n target: shorthands?.[source] ?? source,\n tokenValue: typeof initialSource[source] === \"string\" && initialResolved[shorthands?.[source] ?? source] !== initialSource[source] ? initialResolved[shorthands?.[source] ?? source] : void 0\n }));\n return (sourceStyle) => {\n const resolved = {};\n const transforms = [];\n for (const entry of entries) {\n const value = sourceStyle[entry.source];\n if (value === void 0) continue;\n if (entry.source === \"transform\" && Array.isArray(value)) {\n resolved.transform = transformsToString(value);\n } else if (entry.source in transformAliases) {\n transforms.push({ [transformAliases[entry.source]]: value });\n } else {\n resolved[entry.target] = entry.tokenValue ?? normalizeValueWithProperty(value, entry.target);\n }\n }\n if (transforms.length) resolved.transform = transformsToString(transforms);\n return resolved;\n };\n}\nfunction createMotionView(defaultTag) {\n const isText = defaultTag === \"span\";\n const Component = createRefComponent((propsIn, ref) => {\n const { forwardedRef, animation, render = defaultTag, style, ...propsRest } = propsIn;\n const [scope, animate] = useAnimateSSRSafe();\n const hostRef = useRef(null);\n const seededNode = useRef(null);\n const seededInCurrentFrame = useRef(false);\n const queuedAnimationFrames = useRef(/* @__PURE__ */ new WeakMap());\n const composedRefs = useComposedRefs(forwardedRef, ref, hostRef, scope);\n const stateRef = useRef(null);\n if (!stateRef.current) {\n stateRef.current = {\n get host() {\n return hostRef.current;\n }\n };\n }\n const [_, state] = useThemeWithState({});\n const styles = Array.isArray(style) ? style : [style];\n const [animatedStyle, nonAnimatedStyles] = (() => {\n let animatedStyle2;\n const nonAnimatedStyles2 = [];\n for (const style2 of styles) {\n if (style2.getStyle) {\n animatedStyle2 = style2;\n } else {\n nonAnimatedStyles2.push(style2);\n }\n }\n return [animatedStyle2, nonAnimatedStyles2];\n })();\n function getProps(props2) {\n if (process.env.NODE_ENV === \"development\" && propsIn.debug === \"profile\" && typeof performance !== \"undefined\") {\n performance.mark(\"tamagui-motion-style-split\");\n }\n const out = getSplitStyles(\n props2,\n isText ? Text.staticConfig : View.staticConfig,\n state?.theme,\n state?.name,\n {\n unmounted: false\n },\n {\n isAnimated: false,\n noClass: true,\n resolveValues: \"auto\"\n }\n );\n if (!out) {\n return {};\n }\n if (out.viewProps.style) {\n fixStyles(out.viewProps.style);\n styleToCSS(out.viewProps.style);\n }\n return out.viewProps;\n }\n const resolvedAnimatedStyle = useMemo(() => {\n if (!animatedStyle) return null;\n const currentValues = animatedStyle.motionValues ? animatedStyle.motionValues.map((value) => value.get()) : animatedStyle.motionValue ? [animatedStyle.motionValue.get()] : [];\n const initialSource = animatedStyle.getStyle(...currentValues);\n const initialResolved = asStyleRecord(getProps({ style: initialSource }).style);\n return {\n initial: initialResolved,\n resolve: compileAnimatedStyle(initialSource, initialResolved)\n };\n }, [animatedStyle, state?.theme, state?.name]);\n const memoRef = useRef(null);\n let props;\n const cached = memoRef.current;\n if (cached && cached.theme === state?.theme && cached.themeName === state?.name && motionStylesEqual(cached.styles, nonAnimatedStyles) && motionPropsEqual(cached.propsRest, propsRest)) {\n props = { ...cached.result };\n for (const key in propsRest) {\n const val = propsRest[key];\n if (key === \"children\" || typeof val === \"function\") {\n props[key] = val;\n }\n }\n } else {\n props = getProps({ ...propsRest, style: nonAnimatedStyles });\n memoRef.current = {\n propsRest,\n styles: nonAnimatedStyles,\n theme: state?.theme,\n themeName: state?.name,\n result: props\n };\n }\n if (resolvedAnimatedStyle) {\n props = {\n ...props,\n style: {\n ...asStyleRecord(props.style),\n ...resolvedAnimatedStyle.initial\n }\n };\n }\n const Element = render || \"div\";\n const transformedProps = hooks.usePropsTransform?.(render, props, stateRef, false);\n useIsomorphicLayoutEffect(() => {\n if (!animatedStyle) return;\n const node = hostRef.current;\n if (node instanceof HTMLElement && seededNode.current !== node) {\n const currentStyle = animatedStyle.motionValues ? animatedStyle.getStyle(\n ...animatedStyle.motionValues.map((value) => value.get())\n ) : animatedStyle.motionValue ? animatedStyle.getStyle(animatedStyle.motionValue.get()) : null;\n const webStyle = currentStyle && resolvedAnimatedStyle?.resolve(currentStyle);\n if (webStyle) {\n assignInlineStyles(node, webStyle);\n seededNode.current = node;\n seededInCurrentFrame.current = true;\n requestAnimationFrame(() => {\n if (seededNode.current === node) seededInCurrentFrame.current = false;\n });\n }\n }\n const toTransition = (animationConfig) => animationConfig?.type === \"timing\" ? { type: \"tween\", duration: (animationConfig.duration || 0) / 1e3 } : animationConfig?.type === \"direct\" ? { type: \"tween\", duration: 0 } : { type: \"spring\", ...animationConfig };\n const animateNodeTo = (nextStyle, transition, motionValue3) => {\n if (!(node instanceof HTMLElement) || hostRef.current !== node) return;\n const webStyle = resolvedAnimatedStyle?.resolve(nextStyle);\n if (!webStyle) return;\n settlePendingMotionOnFinish(\n motionValue3,\n animate(node, webStyle, transition)\n );\n };\n const animateChangedValue = (nextStyle, transition, motionValue3) => {\n if (seededInCurrentFrame.current && seededNode.current === node) {\n const queuedFrame = queuedAnimationFrames.current.get(motionValue3);\n if (queuedFrame !== void 0) cancelAnimationFrame(queuedFrame);\n const frame = requestAnimationFrame(() => {\n if (queuedAnimationFrames.current.get(motionValue3) !== frame) return;\n queuedAnimationFrames.current.delete(motionValue3);\n if (hostRef.current === node) {\n animateNodeTo(nextStyle, transition, motionValue3);\n } else {\n const onFinish = PendingMotionOnFinish.get(motionValue3);\n PendingMotionOnFinish.delete(motionValue3);\n onFinish?.();\n }\n });\n queuedAnimationFrames.current.set(motionValue3, frame);\n return;\n }\n animateNodeTo(nextStyle, transition, motionValue3);\n };\n if (animatedStyle.motionValues) {\n const mvs = animatedStyle.motionValues;\n const styleForAll = () => animatedStyle.getStyle(...mvs.map((value) => value.get()));\n const unsubs = mvs.map(\n (mv) => mv.on(\n \"change\",\n () => animateChangedValue(\n styleForAll(),\n toTransition(MotionValueStrategy.get(mv)),\n mv\n )\n )\n );\n return () => unsubs.forEach((fn) => fn());\n }\n const motionValue2 = animatedStyle.motionValue;\n if (!motionValue2) return;\n return motionValue2.on(\n \"change\",\n (value) => animateChangedValue(\n animatedStyle.getStyle(value),\n toTransition(MotionValueStrategy.get(motionValue2)),\n motionValue2\n )\n );\n }, [animatedStyle, resolvedAnimatedStyle]);\n return /* @__PURE__ */ jsx(Element, { ...transformedProps, ref: composedRefs });\n });\n Component[\"acceptRenderProp\"] = true;\n return Component;\n}\nfunction getDiff(previous, next) {\n if (!previous) {\n return next;\n }\n let diff = null;\n for (const key in next) {\n if (next[key] !== previous[key]) {\n diff ||= {};\n diff[key] = next[key];\n }\n }\n return diff;\n}\nfunction fixTransparentColors(diff, previous, next) {\n let result = diff;\n for (const key in diff) {\n if (diff[key] === \"transparent\") {\n let fixed = \"rgba(0, 0, 0, 0)\";\n const candidates = [previous?.[key], next?.[key]];\n for (const candidate of candidates) {\n if (typeof candidate === \"string\" && candidate !== \"transparent\") {\n const rgbaMatch = candidate.match(/^rgba?\\(([^,]+),\\s*([^,]+),\\s*([^,)]+)/);\n if (rgbaMatch) {\n fixed = `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0)`;\n break;\n }\n }\n }\n if (result === diff) {\n result = { ...diff };\n }\n result[key] = fixed;\n }\n }\n return result;\n}\nexport {\n createAnimations,\n disableAnimationProps\n};\n//# sourceMappingURL=createAnimations.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"createAnimations.js","names":["animateMotionValue"],"sources":["esm/createAnimations.js"],"sourcesContent":["import {\n easingToBezier,\n forAnimationState,\n getTransitionForKey,\n hasTransition,\n resolveTransition,\n styleKeysForProperty\n} from \"@tamagui/animation-helpers\";\nimport { ResetPresence, usePresence } from \"@tamagui/use-presence\";\nimport {\n getConfig,\n getSplitStyles,\n hooks,\n nonAnimatableStyleProps,\n Text,\n useComposedRefs,\n useIsomorphicLayoutEffect,\n View,\n createRefComponent\n} from \"@tamagui/web\";\nimport {\n fixStyles,\n normalizeValueWithProperty,\n styleToCSS,\n transformsToString,\n useThemeWithState\n} from \"@tamagui/web/internal-runtime\";\nimport {\n animate as animateMotionValue,\n motionValue,\n useAnimate,\n useMotionValue,\n useMotionValueEvent\n} from \"motion/react\";\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst isServer = typeof window === \"undefined\";\nfunction useAnimateSSRSafe() {\n if (isServer) {\n return [useRef(null), (() => {\n })];\n }\n return useAnimate();\n}\nconst asStyleRecord = (style) => style && typeof style === \"object\" && !Array.isArray(style) ? style : {};\nfunction assignInlineStyles(node, styles) {\n for (const key in styles) {\n node.style[key] = normalizeValueWithProperty(styles[key], key);\n }\n}\nconst MotionValueStrategy = /* @__PURE__ */ new WeakMap();\nconst PendingMotionOnFinish = /* @__PURE__ */ new WeakMap();\nconst pendingDirectStyles = /* @__PURE__ */ new WeakMap();\nfunction settlePendingMotionOnFinish(mv, controls) {\n const onFinish = PendingMotionOnFinish.get(mv);\n if (!onFinish) return;\n PendingMotionOnFinish.delete(mv);\n controls.then(() => onFinish()).catch(() => onFinish());\n}\nconst PopperPositionAnims = /* @__PURE__ */ new WeakMap();\nfunction parseTranslate(transform) {\n if (!transform || transform === \"none\") return { x: 0, y: 0 };\n try {\n const m = new DOMMatrixReadOnly(transform);\n if (!m.is2D || m.a !== 1 || m.b !== 0 || m.c !== 0 || m.d !== 1) return null;\n return { x: m.e, y: m.f };\n } catch {\n return null;\n }\n}\nfunction createAnimations(animations) {\n let isHydratingGlobal;\n const hydratingComponents = /* @__PURE__ */ new Set();\n return {\n View: MotionView,\n Text: MotionText,\n inputStyle: \"css\",\n outputStyle: \"inline\",\n avoidReRenders: true,\n animations,\n usePresence,\n ResetPresence,\n onMount() {\n isHydratingGlobal = false;\n hydratingComponents.forEach((cb) => cb());\n },\n useAnimations: (animationProps) => {\n if (isHydratingGlobal === void 0 && !getConfig().settings.disableSSR) {\n isHydratingGlobal = true;\n }\n const {\n props,\n style,\n componentState,\n stateRef,\n useStyleEmitter,\n presence,\n onTransition,\n styleProps,\n styleState\n } = animationProps;\n const effectiveTransition = styleState?.effectiveTransition ?? props.transition;\n const isComponentHydrating = componentState.unmounted === true;\n const isMounting = componentState.unmounted === \"should-enter\";\n const isEntering = !!componentState.unmounted;\n const isExiting = presence?.[0] === false;\n const sendExitComplete = presence?.[1];\n const refs = useRef(null);\n if (!refs.current) {\n refs.current = {\n isFirstRender: true,\n lastDoAnimate: null,\n lastDontAnimate: null,\n controls: null,\n lastAnimateAt: 0,\n disposed: false,\n wasExiting: false,\n isExiting: false,\n sendExitComplete: void 0,\n animationState: \"default\",\n frozenExitTarget: null,\n exitCompleteScheduled: false,\n enterCompleteScheduled: false,\n disableAnimation: true,\n wasEntering: false,\n wasDisabled: false,\n onTransition: void 0,\n enterStarted: false,\n exitStarted: false,\n updateInFlight: false,\n updateControls: null,\n wasNoClass: !!styleProps.noClass\n };\n }\n const emit = (phase, cause, finished) => {\n refs.current.onTransition?.(\n phase === \"end\" ? { phase, cause, finished } : { phase, cause }\n );\n };\n const justFinishedEntering = refs.current.wasEntering && !isEntering;\n useEffect(() => {\n refs.current.wasEntering = isEntering;\n });\n const animationState = isExiting ? \"exit\" : isMounting || justFinishedEntering ? \"enter\" : \"default\";\n const disableAnimation = isComponentHydrating || isMounting || !effectiveTransition;\n const [scope] = useAnimateSSRSafe();\n refs.current.isExiting = isExiting;\n refs.current.sendExitComplete = sendExitComplete;\n refs.current.animationState = animationState;\n refs.current.disableAnimation = disableAnimation;\n refs.current.onTransition = onTransition;\n const justStartedExiting = isExiting && !refs.current.wasExiting;\n const justStoppedExiting = !isExiting && refs.current.wasExiting;\n if (justStartedExiting || justStoppedExiting) {\n refs.current.frozenExitTarget = null;\n refs.current.exitCompleteScheduled = false;\n refs.current.enterCompleteScheduled = false;\n }\n useEffect(() => {\n refs.current.wasExiting = isExiting;\n });\n useIsomorphicLayoutEffect(() => {\n if (justStoppedExiting && refs.current.exitStarted) {\n refs.current.exitStarted = false;\n emit(\"end\", \"exit\", false);\n }\n }, [justStoppedExiting]);\n const {\n dontAnimate = {},\n doAnimate,\n animationOptions\n } = getMotionAnimatedProps(\n props,\n style,\n disableAnimation,\n animationState,\n effectiveTransition\n );\n const [firstRenderStyle] = useState(style);\n if (refs.current.isFirstRender) {\n refs.current.lastDontAnimate = firstRenderStyle;\n }\n const [isHydrating, setIsHydrating] = useState(isHydratingGlobal);\n useLayoutEffect(() => {\n if (isHydratingGlobal) {\n hydratingComponents.add(() => {\n setIsHydrating(false);\n });\n }\n return () => {\n refs.current.disposed = true;\n };\n }, []);\n const flushAnimation = ({\n doAnimate: doAnimateRaw = {},\n animationOptions: passedOptions = {},\n dontAnimate: dontAnimate2\n }) => {\n let startedControls = null;\n const isCurrentlyExiting = refs.current.isExiting;\n const currentSendExitComplete = refs.current.sendExitComplete;\n const currentAnimationState = refs.current.animationState;\n let doAnimate2 = doAnimateRaw;\n if (isCurrentlyExiting && refs.current.frozenExitTarget) {\n doAnimate2 = refs.current.frozenExitTarget;\n }\n const animationOptions2 = isCurrentlyExiting && currentSendExitComplete ? getAnimationOptions(\n forAnimationState(\n resolveTransition(effectiveTransition ?? null, {\n animations\n }),\n \"exit\"\n )\n ) : passedOptions;\n try {\n const node = stateRef.current.host;\n if (refs.current.isFirstRender) {\n refs.current.lastDontAnimate = null;\n refs.current.lastDoAnimate = null;\n }\n if (process.env.NODE_ENV === \"development\") {\n if (props[\"debug\"] && props[\"debug\"] !== \"profile\") {\n console.groupCollapsed(\n `[motion] animate (${JSON.stringify(getDiff(refs.current.lastDoAnimate, doAnimate2), null, 2)})`\n );\n console.info({\n props,\n componentState,\n doAnimate: doAnimate2,\n dontAnimate: dontAnimate2,\n animationOptions: animationOptions2,\n animationProps,\n lastDoAnimate: { ...refs.current.lastDoAnimate },\n lastDontAnimate: { ...refs.current.lastDontAnimate },\n isExiting,\n style,\n node\n });\n console.groupCollapsed(`trace >`);\n console.trace();\n console.groupEnd();\n console.groupEnd();\n }\n }\n if (!(node instanceof HTMLElement)) {\n return;\n }\n const prevDont = refs.current.lastDontAnimate;\n if (dontAnimate2) {\n if (prevDont) {\n removeRemovedStyles(prevDont, dontAnimate2, node, doAnimate2);\n const changed = getDiff(prevDont, dontAnimate2);\n if (changed) {\n assignInlineStyles(node, changed);\n }\n } else {\n assignInlineStyles(node, dontAnimate2);\n }\n } else if (prevDont) {\n removeRemovedStyles(prevDont, {}, node, doAnimate2);\n }\n if (doAnimate2) {\n if (prevDont) {\n for (const key in prevDont) {\n if (key in doAnimate2) {\n node.style[key] = normalizeValueWithProperty(prevDont[key], key);\n if (refs.current.lastDoAnimate) {\n refs.current.lastDoAnimate[key] = prevDont[key];\n }\n }\n }\n }\n const lastAnimated = refs.current.lastDoAnimate;\n if (lastAnimated) {\n removeRemovedStyles(lastAnimated, doAnimate2, node, dontAnimate2);\n }\n const diff = getDiff(refs.current.lastDoAnimate, doAnimate2);\n if (diff) {\n if (isCurrentlyExiting && !refs.current.frozenExitTarget) {\n refs.current.frozenExitTarget = { ...doAnimate2 };\n }\n const isPopperPosition = node.hasAttribute(\"data-popper-animate-position\");\n let popperHandledTransform = false;\n if (isPopperPosition && !isCurrentlyExiting && typeof diff.transform === \"string\") {\n const target = parseTranslate(diff.transform);\n if (target) {\n let entry = PopperPositionAnims.get(node);\n if (!entry) {\n let seed = target;\n try {\n seed = parseTranslate(getComputedStyle(node).transform) ?? target;\n } catch {\n }\n const x = motionValue(seed.x);\n const y = motionValue(seed.y);\n const write = () => {\n node.style.transform = `translate3d(${x.get()}px, ${y.get()}px, 0)`;\n };\n x.on(\"change\", write);\n y.on(\"change\", write);\n entry = { x, y, stop: null };\n PopperPositionAnims.set(node, entry);\n }\n if (!entry.stop) {\n try {\n const live = parseTranslate(getComputedStyle(node).transform);\n if (live) {\n entry.x.jump(live.x);\n entry.y.jump(live.y);\n }\n } catch {\n }\n }\n for (const anim of node.getAnimations()) {\n try {\n const kf = anim.effect?.getKeyframes?.();\n if (kf?.some((k) => \"transform\" in k)) {\n anim.cancel();\n }\n } catch {\n }\n }\n const opts = animationOptions2;\n const positionTransition = opts.x ?? opts.transform ?? opts.default ?? animationOptions2;\n const cx = animateMotionValue(\n entry.x,\n target.x,\n positionTransition\n );\n const cy = animateMotionValue(\n entry.y,\n target.y,\n positionTransition\n );\n entry.stop = () => {\n cx.stop();\n cy.stop();\n };\n popperHandledTransform = true;\n }\n }\n if (isCurrentlyExiting) {\n const entry = PopperPositionAnims.get(node);\n if (entry?.stop) {\n entry.stop();\n entry.stop = null;\n }\n }\n let midFlightValues = null;\n if (refs.current.controls) {\n try {\n const computed = getComputedStyle(node);\n midFlightValues = {};\n for (const key in diff) {\n const val = computed[key];\n if (val !== void 0 && val !== \"\") {\n midFlightValues[key] = val;\n }\n }\n } catch {\n }\n if (isCurrentlyExiting) {\n refs.current.controls.stop();\n }\n if (midFlightValues) {\n for (const key in midFlightValues) {\n if (key === \"transform\" && popperHandledTransform) continue;\n node.style[key] = midFlightValues[key];\n }\n }\n if (isPopperPosition && !popperHandledTransform) {\n const anims = node.getAnimations();\n for (const anim of anims) {\n anim.cancel();\n }\n }\n }\n const fixedDiff = fixTransparentColors(\n diff,\n refs.current.lastDoAnimate,\n doAnimate2\n );\n let waapiDiff = Object.fromEntries(\n Object.entries(fixedDiff).map(([key, value]) => [\n key,\n Array.isArray(value) ? value.map((item) => normalizeValueWithProperty(item, key)) : normalizeValueWithProperty(value, key)\n ])\n );\n if (popperHandledTransform && \"transform\" in waapiDiff) {\n waapiDiff = { ...waapiDiff };\n delete waapiDiff.transform;\n }\n if ((isPopperPosition || isCurrentlyExiting) && midFlightValues?.transform && waapiDiff.transform) {\n waapiDiff.transform = [midFlightValues.transform, waapiDiff.transform];\n }\n if (Object.keys(waapiDiff).length > 0) {\n startedControls = animateMotionValue(\n node,\n waapiDiff,\n animationOptions2\n );\n refs.current.controls = startedControls;\n }\n refs.current.lastAnimateAt = Date.now();\n }\n }\n refs.current.lastDontAnimate = dontAnimate2 ? { ...dontAnimate2 } : {};\n refs.current.lastDoAnimate = doAnimate2 ? { ...doAnimate2 } : {};\n } finally {\n if (isCurrentlyExiting && currentSendExitComplete) {\n if (refs.current.enterStarted) {\n refs.current.enterStarted = false;\n emit(\"end\", \"enter\", false);\n }\n if (startedControls) {\n if (!refs.current.exitStarted) {\n refs.current.exitStarted = true;\n emit(\"start\", \"exit\");\n }\n refs.current.exitCompleteScheduled = true;\n const complete = (finished) => {\n if (!refs.current.isExiting) return;\n if (refs.current.exitStarted) {\n refs.current.exitStarted = false;\n emit(\"end\", \"exit\", finished);\n }\n currentSendExitComplete();\n };\n startedControls.finished.then(() => complete(true)).catch(() => complete(false));\n } else if (!refs.current.exitCompleteScheduled) {\n emit(\"start\", \"exit\");\n emit(\"end\", \"exit\", true);\n currentSendExitComplete();\n }\n } else if (currentAnimationState === \"enter\") {\n if (startedControls) {\n if (!refs.current.enterStarted) {\n refs.current.enterStarted = true;\n emit(\"start\", \"enter\");\n }\n refs.current.enterCompleteScheduled = true;\n const complete = (finished) => {\n if (refs.current.disposed || refs.current.animationState !== \"enter\")\n return;\n if (refs.current.enterStarted) {\n refs.current.enterStarted = false;\n emit(\"end\", \"enter\", finished);\n }\n };\n startedControls.finished.then(() => complete(true)).catch(() => complete(false));\n } else if (!refs.current.enterCompleteScheduled && !refs.current.disableAnimation) {\n emit(\"start\", \"enter\");\n emit(\"end\", \"enter\", true);\n }\n } else if (startedControls) {\n const controls = startedControls;\n if (refs.current.updateInFlight) {\n emit(\"end\", \"update\", false);\n }\n refs.current.updateInFlight = true;\n refs.current.updateControls = controls;\n emit(\"start\", \"update\");\n const settle = (finished) => {\n if (refs.current.updateControls !== controls) return;\n refs.current.updateInFlight = false;\n refs.current.updateControls = null;\n emit(\"end\", \"update\", finished);\n };\n controls.finished.then(() => settle(true)).catch(() => settle(false));\n }\n }\n };\n useStyleEmitter?.((nextStyle, emittedTransition) => {\n const animationProps2 = getMotionAnimatedProps(\n props,\n nextStyle,\n disableAnimation,\n refs.current.animationState,\n emittedTransition ?? effectiveTransition\n );\n flushAnimation(animationProps2);\n });\n useIsomorphicLayoutEffect(() => {\n if (refs.current.isFirstRender) {\n refs.current.isFirstRender = false;\n refs.current.wasDisabled = disableAnimation;\n if (isHydrating) {\n if (doAnimate && Object.keys(doAnimate).length > 0) {\n refs.current.lastDoAnimate = { ...doAnimate };\n } else {\n refs.current.lastDoAnimate = dontAnimate ? { ...dontAnimate } : {};\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastAnimateAt = Date.now();\n return;\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastDoAnimate = doAnimate ? { ...doAnimate } : {};\n return;\n }\n const justEnabled = refs.current.wasDisabled && !disableAnimation;\n refs.current.wasDisabled = disableAnimation;\n const justStrippedClasses = !refs.current.wasNoClass && !!styleProps.noClass;\n refs.current.wasNoClass = !!styleProps.noClass;\n if ((justEnabled || justStrippedClasses) && animationState !== \"enter\") {\n const node = stateRef.current.host;\n if (node instanceof HTMLElement) {\n if (dontAnimate) assignInlineStyles(node, dontAnimate);\n if (doAnimate) assignInlineStyles(node, doAnimate);\n const entry = PopperPositionAnims.get(node);\n if (entry) {\n const target = parseTranslate(\n doAnimate?.transform ?? dontAnimate?.transform\n );\n if (target) {\n entry.stop?.();\n entry.stop = null;\n entry.x.jump(target.x);\n entry.y.jump(target.y);\n }\n }\n }\n refs.current.lastDontAnimate = dontAnimate ? { ...dontAnimate } : {};\n refs.current.lastDoAnimate = doAnimate ? { ...doAnimate } : {};\n return;\n }\n flushAnimation({\n doAnimate,\n dontAnimate,\n animationOptions\n });\n }, [style, isExiting, disableAnimation, styleProps.noClass]);\n if (process.env.NODE_ENV === \"development\") {\n if (props[\"debug\"] && props[\"debug\"] !== \"profile\") {\n console.groupCollapsed(`[motion] render`);\n console.info({\n style,\n doAnimate,\n dontAnimate,\n scope,\n animationOptions,\n isExiting,\n isFirstRender: refs.current.isFirstRender,\n animationProps\n });\n console.groupEnd();\n }\n }\n return {\n style: firstRenderStyle,\n ref: scope,\n render: \"div\"\n };\n },\n useAnimatedNumber(initial) {\n const motionValue2 = useMotionValue(initial);\n return React.useMemo(\n () => ({\n getInstance() {\n return motionValue2;\n },\n getValue() {\n return motionValue2.get();\n },\n setValue(next, config = { type: \"spring\" }, onFinish) {\n if (config.type === \"direct\") {\n MotionValueStrategy.set(motionValue2, { type: \"direct\" });\n motionValue2.set(next);\n onFinish?.();\n return;\n }\n MotionValueStrategy.set(motionValue2, config);\n if (onFinish) {\n const prior = PendingMotionOnFinish.get(motionValue2);\n if (prior) {\n PendingMotionOnFinish.delete(motionValue2);\n prior();\n }\n PendingMotionOnFinish.set(motionValue2, onFinish);\n }\n motionValue2.set(next);\n },\n stop() {\n motionValue2.stop();\n }\n }),\n [motionValue2]\n );\n },\n useAnimatedNumberReaction({ value }, onValue) {\n const instance = value.getInstance();\n useMotionValueEvent(instance, \"change\", onValue);\n },\n useAnimatedNumberStyle(val, getStyleProp) {\n const motionValue2 = val.getInstance();\n const getStyleRef = useRef(getStyleProp);\n getStyleRef.current = getStyleProp;\n return useMemo(() => {\n return {\n getStyle: (cur) => {\n return getStyleRef.current(cur);\n },\n motionValue: motionValue2\n };\n }, []);\n },\n useAnimatedNumbersStyle(vals, getStyleProp) {\n const motionValues = vals.map((v) => v.getInstance());\n const getStyleRef = useRef(getStyleProp);\n getStyleRef.current = getStyleProp;\n return useMemo(() => {\n return {\n getStyle: (...currentValues) => getStyleRef.current(...currentValues),\n motionValues\n };\n }, []);\n }\n };\n function getMotionAnimatedProps(props, style, disable, animationState = \"default\", transitionOverride) {\n if (disable) {\n return {\n dontAnimate: style\n };\n }\n const resolved = forAnimationState(\n resolveTransition(transitionOverride ?? props.transition ?? null, {\n animations\n }),\n animationState\n );\n const animationOptions = getAnimationOptions(resolved);\n let dontAnimate;\n let doAnimate;\n for (const key in style) {\n const value = style[key];\n if (disableAnimationProps.has(key) || !getTransitionForKey(resolved, key)) {\n dontAnimate ||= {};\n dontAnimate[key] = value;\n } else {\n doAnimate ||= {};\n doAnimate[key] = value;\n }\n }\n return {\n dontAnimate,\n doAnimate,\n animationOptions\n };\n }\n function getAnimationOptions(resolved) {\n if (!hasTransition(resolved)) return {};\n const result = {};\n if (resolved.all) {\n const base = entryToMotion(resolved.all);\n Object.assign(result, base);\n result.default = { ...base };\n }\n for (const entry of resolved.entries) {\n if (entry.property === \"all\") continue;\n const config = entryToMotion(entry);\n for (const key of styleKeysForProperty(entry.property)) {\n result[key] = { ...config };\n }\n }\n return result;\n }\n}\nfunction entryToMotion(entry) {\n const delay = entry.delayMs ? { delay: entry.delayMs / 1e3 } : null;\n if (entry.timing.kind === \"spring\") {\n return {\n type: \"spring\",\n stiffness: entry.timing.stiffness,\n damping: entry.timing.damping,\n mass: entry.timing.mass,\n ...delay\n };\n }\n const bezier = easingToBezier(entry.timing.easing);\n return {\n type: \"tween\",\n duration: entry.timing.durationMs / 1e3,\n ...bezier ? { ease: [bezier[0], bezier[1], bezier[2], bezier[3]] } : null,\n ...delay\n };\n}\nfunction removeRemovedStyles(prev, next, node, dontClearIfIn) {\n for (const key in prev) {\n if (!(key in next)) {\n if (dontClearIfIn && key in dontClearIfIn) {\n continue;\n }\n node.style[key] = \"\";\n }\n }\n}\nconst disableAnimationProps = /* @__PURE__ */ new Set([\n ...Object.keys(nonAnimatableStyleProps),\n \"flexBasis\"\n]);\nfunction motionPropsEqual(a, b) {\n for (const key in a) {\n if (!(key in b)) return false;\n }\n for (const key in b) {\n if (key === \"children\") continue;\n const av = a[key];\n const bv = b[key];\n if (typeof bv === \"function\" && typeof av === \"function\") continue;\n if (!Object.is(av, bv)) return false;\n }\n return true;\n}\nfunction motionStylesEqual(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const sa = a[i];\n const sb = b[i];\n if (sa === sb) continue;\n if (!sa || !sb) return false;\n let aCount = 0;\n for (const key in sa) {\n aCount++;\n if (!Object.is(sa[key], sb[key])) return false;\n }\n let bCount = 0;\n for (const _key in sb) {\n bCount++;\n }\n if (aCount !== bCount) return false;\n }\n return true;\n}\nconst MotionView = createMotionView(\"div\");\nconst MotionText = createMotionView(\"span\");\nconst transformAliases = {\n x: \"translateX\",\n y: \"translateY\",\n scale: \"scale\",\n scaleX: \"scaleX\",\n scaleY: \"scaleY\",\n rotate: \"rotate\",\n rotateX: \"rotateX\",\n rotateY: \"rotateY\",\n rotateZ: \"rotateZ\",\n skewX: \"skewX\",\n skewY: \"skewY\"\n};\nfunction compileAnimatedStyle(initialSource, initialResolved) {\n const shorthands = getConfig().shorthands;\n const entries = Object.keys(initialSource).map((source) => ({\n source,\n target: shorthands?.[source] ?? source,\n tokenValue: typeof initialSource[source] === \"string\" && initialResolved[shorthands?.[source] ?? source] !== initialSource[source] ? initialResolved[shorthands?.[source] ?? source] : void 0\n }));\n return (sourceStyle) => {\n const resolved = {};\n const transforms = [];\n for (const entry of entries) {\n const value = sourceStyle[entry.source];\n if (value === void 0) continue;\n if (entry.source === \"transform\" && Array.isArray(value)) {\n resolved.transform = transformsToString(value);\n } else if (entry.source in transformAliases) {\n transforms.push({ [transformAliases[entry.source]]: value });\n } else {\n resolved[entry.target] = entry.tokenValue ?? normalizeValueWithProperty(value, entry.target);\n }\n }\n if (transforms.length) resolved.transform = transformsToString(transforms);\n return resolved;\n };\n}\nfunction createMotionView(defaultTag) {\n const isText = defaultTag === \"span\";\n const Component = createRefComponent((propsIn, ref) => {\n const { forwardedRef, animation, render = defaultTag, style, ...propsRest } = propsIn;\n const [scope, animate] = useAnimateSSRSafe();\n const hostRef = useRef(null);\n const seededNode = useRef(null);\n const seededInCurrentFrame = useRef(false);\n const queuedAnimationFrames = useRef(/* @__PURE__ */ new WeakMap());\n const composedRefs = useComposedRefs(forwardedRef, ref, hostRef, scope);\n const stateRef = useRef(null);\n if (!stateRef.current) {\n stateRef.current = {\n get host() {\n return hostRef.current;\n }\n };\n }\n const [_, state] = useThemeWithState({});\n const styles = Array.isArray(style) ? style : [style];\n const [animatedStyle, nonAnimatedStyles] = (() => {\n let animatedStyle2;\n const nonAnimatedStyles2 = [];\n for (const style2 of styles) {\n if (style2.getStyle) {\n animatedStyle2 = style2;\n } else {\n nonAnimatedStyles2.push(style2);\n }\n }\n return [animatedStyle2, nonAnimatedStyles2];\n })();\n function getProps(props2) {\n if (process.env.NODE_ENV === \"development\" && propsIn.debug === \"profile\" && typeof performance !== \"undefined\") {\n performance.mark(\"tamagui-motion-style-split\");\n }\n const out = getSplitStyles(\n props2,\n isText ? Text.staticConfig : View.staticConfig,\n state?.theme,\n state?.name,\n {\n unmounted: false\n },\n {\n isAnimated: false,\n noClass: true,\n resolveValues: \"auto\"\n }\n );\n if (!out) {\n return {};\n }\n if (out.viewProps.style) {\n fixStyles(out.viewProps.style);\n styleToCSS(out.viewProps.style);\n }\n return out.viewProps;\n }\n const resolvedAnimatedStyle = useMemo(() => {\n if (!animatedStyle) return null;\n const currentValues = animatedStyle.motionValues ? animatedStyle.motionValues.map((value) => value.get()) : animatedStyle.motionValue ? [animatedStyle.motionValue.get()] : [];\n const initialSource = animatedStyle.getStyle(...currentValues);\n const initialResolved = asStyleRecord(getProps({ style: initialSource }).style);\n return {\n initial: initialResolved,\n resolve: compileAnimatedStyle(initialSource, initialResolved)\n };\n }, [animatedStyle, state?.theme, state?.name]);\n const memoRef = useRef(null);\n let props;\n const cached = memoRef.current;\n if (cached && cached.theme === state?.theme && cached.themeName === state?.name && motionStylesEqual(cached.styles, nonAnimatedStyles) && motionPropsEqual(cached.propsRest, propsRest)) {\n props = { ...cached.result };\n for (const key in propsRest) {\n const val = propsRest[key];\n if (key === \"children\" || typeof val === \"function\") {\n props[key] = val;\n }\n }\n } else {\n props = getProps({ ...propsRest, style: nonAnimatedStyles });\n memoRef.current = {\n propsRest,\n styles: nonAnimatedStyles,\n theme: state?.theme,\n themeName: state?.name,\n result: props\n };\n }\n if (resolvedAnimatedStyle) {\n props = {\n ...props,\n style: {\n ...asStyleRecord(props.style),\n ...resolvedAnimatedStyle.initial\n }\n };\n }\n const Element = render || \"div\";\n const transformedProps = hooks.usePropsTransform?.(render, props, stateRef, false);\n useIsomorphicLayoutEffect(() => {\n if (!animatedStyle) return;\n const node = hostRef.current;\n if (node instanceof HTMLElement && seededNode.current !== node) {\n const currentStyle = animatedStyle.motionValues ? animatedStyle.getStyle(\n ...animatedStyle.motionValues.map((value) => value.get())\n ) : animatedStyle.motionValue ? animatedStyle.getStyle(animatedStyle.motionValue.get()) : null;\n const webStyle = currentStyle && resolvedAnimatedStyle?.resolve(currentStyle);\n if (webStyle) {\n assignInlineStyles(node, webStyle);\n seededNode.current = node;\n seededInCurrentFrame.current = true;\n requestAnimationFrame(() => {\n if (seededNode.current === node) seededInCurrentFrame.current = false;\n });\n }\n }\n const toTransition = (animationConfig) => animationConfig?.type === \"timing\" ? { type: \"tween\", duration: (animationConfig.duration || 0) / 1e3 } : animationConfig?.type === \"direct\" ? { type: \"tween\", duration: 0 } : { type: \"spring\", ...animationConfig };\n const animateNodeTo = (nextStyle, strategy, motionValue3) => {\n if (!(node instanceof HTMLElement) || hostRef.current !== node) return;\n const webStyle = resolvedAnimatedStyle?.resolve(nextStyle);\n if (!webStyle) return;\n const directStyle = pendingDirectStyles.get(node);\n const isDirect = strategy?.type === \"direct\";\n let target = webStyle;\n if (directStyle && !isDirect) {\n target = { ...webStyle };\n for (const key in directStyle) {\n if (key in webStyle) target[key] = [directStyle[key], webStyle[key]];\n }\n }\n if (isDirect) {\n assignInlineStyles(node, webStyle);\n pendingDirectStyles.set(node, webStyle);\n requestAnimationFrame(() => {\n if (pendingDirectStyles.get(node) === webStyle) {\n pendingDirectStyles.delete(node);\n }\n });\n }\n settlePendingMotionOnFinish(\n motionValue3,\n animate(node, target, toTransition(strategy))\n );\n };\n const animateChangedValue = (nextStyle, strategy, motionValue3) => {\n if (seededInCurrentFrame.current && seededNode.current === node) {\n const queuedFrame = queuedAnimationFrames.current.get(motionValue3);\n if (queuedFrame !== void 0) cancelAnimationFrame(queuedFrame);\n const frame = requestAnimationFrame(() => {\n if (queuedAnimationFrames.current.get(motionValue3) !== frame) return;\n queuedAnimationFrames.current.delete(motionValue3);\n if (hostRef.current === node) {\n animateNodeTo(nextStyle, strategy, motionValue3);\n } else {\n const onFinish = PendingMotionOnFinish.get(motionValue3);\n PendingMotionOnFinish.delete(motionValue3);\n onFinish?.();\n }\n });\n queuedAnimationFrames.current.set(motionValue3, frame);\n return;\n }\n animateNodeTo(nextStyle, strategy, motionValue3);\n };\n if (animatedStyle.motionValues) {\n const mvs = animatedStyle.motionValues;\n const styleForAll = () => animatedStyle.getStyle(...mvs.map((value) => value.get()));\n const unsubs = mvs.map(\n (mv) => mv.on(\n \"change\",\n () => animateChangedValue(styleForAll(), MotionValueStrategy.get(mv), mv)\n )\n );\n return () => unsubs.forEach((fn) => fn());\n }\n const motionValue2 = animatedStyle.motionValue;\n if (!motionValue2) return;\n return motionValue2.on(\n \"change\",\n (value) => animateChangedValue(\n animatedStyle.getStyle(value),\n MotionValueStrategy.get(motionValue2),\n motionValue2\n )\n );\n }, [animatedStyle, resolvedAnimatedStyle]);\n return /* @__PURE__ */ jsx(Element, { ...transformedProps, ref: composedRefs });\n });\n Component[\"acceptRenderProp\"] = true;\n return Component;\n}\nfunction getDiff(previous, next) {\n if (!previous) {\n return next;\n }\n let diff = null;\n for (const key in next) {\n if (next[key] !== previous[key]) {\n diff ||= {};\n diff[key] = next[key];\n }\n }\n return diff;\n}\nfunction fixTransparentColors(diff, previous, next) {\n let result = diff;\n for (const key in diff) {\n if (diff[key] === \"transparent\") {\n let fixed = \"rgba(0, 0, 0, 0)\";\n const candidates = [previous?.[key], next?.[key]];\n for (const candidate of candidates) {\n if (typeof candidate === \"string\" && candidate !== \"transparent\") {\n const rgbaMatch = candidate.match(/^rgba?\\(([^,]+),\\s*([^,]+),\\s*([^,)]+)/);\n if (rgbaMatch) {\n fixed = `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0)`;\n break;\n }\n }\n }\n if (result === diff) {\n result = { ...diff };\n }\n result[key] = fixed;\n }\n }\n return result;\n}\nexport {\n createAnimations,\n disableAnimationProps\n};\n//# sourceMappingURL=createAnimations.js.map\n"],"mappings":"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"}
@@ -23,6 +23,7 @@ function assignInlineStyles(node, styles) {
23
23
  }
24
24
  var MotionValueStrategy = /* @__PURE__ */ new WeakMap();
25
25
  var PendingMotionOnFinish = /* @__PURE__ */ new WeakMap();
26
+ var pendingDirectStyles = /* @__PURE__ */ new WeakMap();
26
27
  function settlePendingMotionOnFinish(mv, controls) {
27
28
  var onFinish = PendingMotionOnFinish.get(mv);
28
29
  if (!onFinish) return;
@@ -969,13 +970,31 @@ function createMotionView(defaultTag) {
969
970
  ...animationConfig
970
971
  };
971
972
  };
972
- var animateNodeTo = function animateNodeTo2(nextStyle, transition, motionValue3) {
973
+ var animateNodeTo = function animateNodeTo2(nextStyle, strategy, motionValue3) {
973
974
  if (!(node instanceof HTMLElement) || hostRef.current !== node) return;
974
975
  var webStyle2 = resolvedAnimatedStyle === null || resolvedAnimatedStyle === void 0 ? void 0 : resolvedAnimatedStyle.resolve(nextStyle);
975
976
  if (!webStyle2) return;
976
- settlePendingMotionOnFinish(motionValue3, animate(node, webStyle2, transition));
977
+ var directStyle = pendingDirectStyles.get(node);
978
+ var isDirect = (strategy === null || strategy === void 0 ? void 0 : strategy.type) === "direct";
979
+ var target = webStyle2;
980
+ if (directStyle && !isDirect) {
981
+ target = { ...webStyle2 };
982
+ for (var key2 in directStyle) {
983
+ if (key2 in webStyle2) target[key2] = [directStyle[key2], webStyle2[key2]];
984
+ }
985
+ }
986
+ if (isDirect) {
987
+ assignInlineStyles(node, webStyle2);
988
+ pendingDirectStyles.set(node, webStyle2);
989
+ requestAnimationFrame(function() {
990
+ if (pendingDirectStyles.get(node) === webStyle2) {
991
+ pendingDirectStyles.delete(node);
992
+ }
993
+ });
994
+ }
995
+ settlePendingMotionOnFinish(motionValue3, animate(node, target, toTransition(strategy)));
977
996
  };
978
- var animateChangedValue = function animateChangedValue2(nextStyle, transition, motionValue3) {
997
+ var animateChangedValue = function animateChangedValue2(nextStyle, strategy, motionValue3) {
979
998
  if (seededInCurrentFrame.current && seededNode.current === node) {
980
999
  var queuedFrame = queuedAnimationFrames.current.get(motionValue3);
981
1000
  if (queuedFrame !== void 0) cancelAnimationFrame(queuedFrame);
@@ -983,7 +1002,7 @@ function createMotionView(defaultTag) {
983
1002
  if (queuedAnimationFrames.current.get(motionValue3) !== frame) return;
984
1003
  queuedAnimationFrames.current.delete(motionValue3);
985
1004
  if (hostRef.current === node) {
986
- animateNodeTo(nextStyle, transition, motionValue3);
1005
+ animateNodeTo(nextStyle, strategy, motionValue3);
987
1006
  } else {
988
1007
  var onFinish = PendingMotionOnFinish.get(motionValue3);
989
1008
  PendingMotionOnFinish.delete(motionValue3);
@@ -993,7 +1012,7 @@ function createMotionView(defaultTag) {
993
1012
  queuedAnimationFrames.current.set(motionValue3, frame);
994
1013
  return;
995
1014
  }
996
- animateNodeTo(nextStyle, transition, motionValue3);
1015
+ animateNodeTo(nextStyle, strategy, motionValue3);
997
1016
  };
998
1017
  if (animatedStyle.motionValues) {
999
1018
  var mvs = animatedStyle.motionValues;
@@ -1004,7 +1023,7 @@ function createMotionView(defaultTag) {
1004
1023
  };
1005
1024
  var unsubs = mvs.map(function(mv) {
1006
1025
  return mv.on("change", function() {
1007
- return animateChangedValue(styleForAll(), toTransition(MotionValueStrategy.get(mv)), mv);
1026
+ return animateChangedValue(styleForAll(), MotionValueStrategy.get(mv), mv);
1008
1027
  });
1009
1028
  });
1010
1029
  return function() {
@@ -1016,7 +1035,7 @@ function createMotionView(defaultTag) {
1016
1035
  var motionValue2 = animatedStyle.motionValue;
1017
1036
  if (!motionValue2) return;
1018
1037
  return motionValue2.on("change", function(value) {
1019
- return animateChangedValue(animatedStyle.getStyle(value), toTransition(MotionValueStrategy.get(motionValue2)), motionValue2);
1038
+ return animateChangedValue(animatedStyle.getStyle(value), MotionValueStrategy.get(motionValue2), motionValue2);
1020
1039
  });
1021
1040
  }, [animatedStyle, resolvedAnimatedStyle]);
1022
1041
  return /* @__PURE__ */ jsx(Element, {