import React, { useEffect, useState } from 'react'; import color from '../../styles/colors'; import { DivStyledWaveLoader, StyledSpinnerDiv, StyledSpinnerParent, } from './Loading.styles'; import { ILoadingProps } from './types'; import { state1, state2, state3, state4 } from './WaveLoaderStates'; const Loading: React.FC = ({ size = 20, spinnerColor = color.white, text, direction = 'bottom', spinnerType = 'loader', fontSize, ...props }) => { return ( {spinnerType == 'loader' ? ( ) : ( )} {text && {text}} ); }; const WaveLoader: React.FC = ({ size, spinnerColor, ...props }) => { const states = [state1, state2, state3, state4]; const [activeBalls, setActiveBalls] = useState(0); useEffect(() => { const interval = setInterval(() => { setActiveBalls((prevState) => { if (prevState + 1 == states.length) { return 0; } return prevState + 1; }); }, 1000); return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks. }, []); return ( ); }; export default Loading;