Server IP : 66.29.132.124 / Your IP : 18.227.140.100 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/diixadigital.com/wp-content/plugins/jetpack/extensions/shared/ |
Upload File : |
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. * * @return {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;