{"version":3,"file":"use-animation-frame.mjs","sources":["../../../src/utils/use-animation-frame.ts"],"sourcesContent":["\"use client\"\n\nimport { cancelFrame, frame, FrameData } from \"motion-dom\"\nimport { useContext, useEffect, useRef } from \"react\"\nimport { MotionConfigContext } from \"../context/MotionConfigContext\"\n\nexport type FrameCallback = (timestamp: number, delta: number) => void\n\nexport function useAnimationFrame(callback: FrameCallback) {\n    const initialTimestamp = useRef(0)\n    const { isStatic } = useContext(MotionConfigContext)\n\n    useEffect(() => {\n        if (isStatic) return\n\n        const provideTimeSinceStart = ({ timestamp, delta }: FrameData) => {\n            if (!initialTimestamp.current) initialTimestamp.current = timestamp\n\n            callback(timestamp - initialTimestamp.current, delta)\n        }\n\n        frame.update(provideTimeSinceStart, true)\n        return () => cancelFrame(provideTimeSinceStart)\n    }, [callback])\n}\n"],"names":[],"mappings":";;;;;AAQM;AACF;;;AAII;;;;AAGmC;;AAGnC;AAEA;AACA;AACJ;AACJ;;"}