PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/jetpack/extensions/shared/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/jetpack/extensions/shared/use-ref-interval.ts |
import { useCallback, useEffect, useRef } from '@wordpress/element'; interface RafHandle { id: number; } const setRafInterval = ( callback: () => void, timeout: number = 0 ) => { const interval = timeout < 0 ? 0 : timeout; const handle: RafHandle = { id: 0, }; let startTime = Date.now(); const loop = () => { const nowTime = Date.now(); if ( nowTime - startTime >= interval ) { startTime = nowTime; callback(); } handle.id = requestAnimationFrame( loop ); }; handle.id = requestAnimationFrame( loop ); return handle; }; const clearRafInterval = ( handle?: RafHandle | null ) => { if ( handle ) { cancelAnimationFrame( handle.id ); } }; /** * Invoke a function on an interval that uses requestAnimationFrame. * * @param {Function} callback - Function to invoke * @param {number} timeout - Interval timout in MS. * * @returns {Function} Function to clear the interval. */ const useRafInterval = ( callback: () => void, timeout = 0 ) => { const timerRef = useRef< RafHandle >(); const callbackRef = useRef( callback ); callbackRef.current = callback; useEffect( () => { timerRef.current = setRafInterval( () => { callbackRef.current(); }, timeout ); return () => { clearRafInterval( timerRef.current ); }; }, [ timeout ] ); const clear = useCallback( () => { clearRafInterval( timerRef.current ); }, [] ); return clear; }; export default useRafInterval;