{"version":3,"file":"index.cjs","names":["getTimeoutOptions","useTimeout"],"sources":["../../../src/hooks/useDependencyTimeout/index.ts"],"sourcesContent":["import { useEffect, DependencyList } from 'react';\nimport { useTimeout } from '../useTimeout';\nimport {\n  TimeoutOptions,\n  getTimeoutOptions,\n} from './useDependencyTimeout.utils';\n\n/**\n * @description `useTimeout`을 사용해 인자로 전달하는 의존성 배열의 값이 변경되면 `Timeout`을 재설정하는 커스텀 훅입니다.\n * @see https://modern-agile-team.github.io/modern-kit/docs/react/hooks/useTimeout\n *\n * @param {() => void} callback - delay 후에 실행될 함수입니다.\n * @param {number} delay - 밀리초(ms) 단위의 지연 시간\n * @param {DependencyList} deps - 의존성 배열\n *\n * @example\n * useDependencyTimeout(callback, 300, [condition]);\n */\nexport function useDependencyTimeout(\n  callback: () => void,\n  delay: number,\n  deps: DependencyList\n): ReturnType<typeof useTimeout>;\n\n/**\n * @description `useTimeout`을 사용해 인자로 전달하는 의존성 배열의 값이 변경되면 `Timeout`을 재설정하는 커스텀 훅입니다.\n * @see https://modern-agile-team.github.io/modern-kit/docs/react/hooks/useTimeout\n *\n * @param {() => void} callback - delay 후에 실행될 함수입니다.\n * @param {TimeoutOptions} options - timeout 옵션입니다. enabled, delay를 포함 합니다.\n * @param {DependencyList} deps - 의존성 배열\n *\n * @example\n * useDependencyTimeout(callback, { delay: 300, enabled }, [condition]);\n */\nexport function useDependencyTimeout(\n  callback: () => void,\n  options: TimeoutOptions,\n  deps: DependencyList\n): ReturnType<typeof useTimeout>;\n\n/**\n * @description `useTimeout`을 사용해 인자로 전달하는 의존성 배열의 값이 변경되면 `Timeout`을 재설정하는 커스텀 훅입니다.\n * @see https://modern-agile-team.github.io/modern-kit/docs/react/hooks/useTimeout\n *\n * @param {() => void} callback - delay 후에 실행될 함수입니다.\n * @param {number | TimeoutOptions} options - 밀리초(ms) 단위의 지연 시간 또는 옵션 객체(delay, enabled)입니다.\n * @param {DependencyList} deps - 의존성 배열\n *\n * @example\n * useDependencyTimeout(callback, 300, [condition]);\n *\n * @example\n * useDependencyTimeout(callback, { delay: 300, enabled }, [condition]);\n */\nexport function useDependencyTimeout(\n  callback: () => void,\n  options: number | TimeoutOptions,\n  deps: DependencyList\n): ReturnType<typeof useTimeout> {\n  const { delay, enabled } = getTimeoutOptions(options);\n\n  const { set, reset, clear } = useTimeout(callback, { delay, enabled: false });\n\n  useEffect(() => {\n    if (!enabled) return;\n    reset();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [enabled, reset, ...deps]);\n\n  return { set, reset, clear };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuDA,SAAgB,qBACd,UACA,SACA,MAC+B;CAC/B,MAAM,EAAE,OAAO,YAAYA,mCAAAA,kBAAkB,QAAQ;CAErD,MAAM,EAAE,KAAK,OAAO,UAAUC,cAAAA,WAAW,UAAU;EAAE;EAAO,SAAS;EAAO,CAAC;CAE7E,CAAA,GAAA,MAAA,iBAAgB;EACd,IAAI,CAAC,SAAS;EACd,OAAO;IAEN;EAAC;EAAS;EAAO,GAAG;EAAK,CAAC;CAE7B,OAAO;EAAE;EAAK;EAAO;EAAO"}