import { useEffect, useRef } from 'react';

/**
 * @name usePrevious
 * @category Hooks
 * @kind function
 * @description
 * 이전 값을 반환하는 Hook이에요.
 * @param {T} value - 이전 값을 반환할 값이에요.
 * @returns {T} - 이전 값을 반환해요.
 * @example
 * ```typescript
 *  const isVisible = useVisibility();
 *  const prevValue = usePrevious<boolean>(isVisible) ?? false;
 * ```
 */
export function usePrevious<T>(value: T): T {
  const ref: any = useRef<T>();
  useEffect(() => {
    ref.current = value;
  }, [value]);

  return ref.current;
}
