Spaces:
Running
Running
import { animate, ValueAnimationTransition } from "framer-motion"; | |
import { useRef } from "react"; | |
export function useScrollTo() { | |
let ref = useRef<HTMLDivElement>(null); | |
function scrollTo(options: ValueAnimationTransition = {}) { | |
if (!ref.current) return; | |
let defaultOptions: ValueAnimationTransition = { | |
type: "spring", | |
bounce: 0, | |
duration: 0.6, | |
}; | |
animate(window.scrollY, ref.current.offsetTop, { | |
...defaultOptions, | |
...options, | |
onUpdate: (latest) => window.scrollTo({ top: latest }), | |
}); | |
} | |
return [ref, scrollTo] as const; | |
} | |