Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
24 lines
903 B
Plaintext
24 lines
903 B
Plaintext
"use client";
|
|
import { attachFollow, isMotionValue } from 'motion-dom';
|
|
import { useContext, useInsertionEffect } from 'react';
|
|
import { MotionConfigContext } from '../context/MotionConfigContext.mjs';
|
|
import { useMotionValue } from './use-motion-value.mjs';
|
|
import { useTransform } from './use-transform.mjs';
|
|
|
|
function useFollowValue(source, options = {}) {
|
|
const { isStatic } = useContext(MotionConfigContext);
|
|
const getFromSource = () => (isMotionValue(source) ? source.get() : source);
|
|
// isStatic will never change, allowing early hooks return
|
|
if (isStatic) {
|
|
return useTransform(getFromSource);
|
|
}
|
|
const value = useMotionValue(getFromSource());
|
|
useInsertionEffect(() => {
|
|
return attachFollow(value, source, options);
|
|
}, [value, JSON.stringify(options)]);
|
|
return value;
|
|
}
|
|
|
|
export { useFollowValue };
|
|
//# sourceMappingURL=use-follow-value.mjs.map
|