@modern-kit/react
Version:
1 lines • 4.03 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/hooks/useDependencyTimeout/useDependencyTimeout.utils.ts","../../../src/hooks/useDependencyTimeout/index.ts"],"sourcesContent":["import { isNumber } from '@modern-kit/utils';\n\nexport interface TimeoutOptions {\n delay: number;\n enabled?: boolean;\n}\n\nexport const getTimeoutOptions = (options: number | TimeoutOptions) => {\n return isNumber(options)\n ? { delay: options, enabled: true }\n : {\n delay: options.delay,\n enabled: options?.enabled ?? true,\n };\n};\n","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"],"names":["isNumber","useTimeout","useEffect"],"mappings":";;;;;;;AAOO,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAAqC;AACrE,EAAA,OAAOA,cAAA,CAAS,OAAO,CAAA,GACnB,EAAE,OAAO,OAAA,EAAS,OAAA,EAAS,MAAK,GAChC;AAAA,IACE,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,OAAA,EAAS,SAAS,OAAA,IAAW;AAAA,GAC/B;AACN,CAAA;;ACyCO,SAAS,oBAAA,CACd,QAAA,EACA,OAAA,EACA,IAAA,EAC+B;AAC/B,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,kBAAkB,OAAO,CAAA;AAEpD,EAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAM,GAAIC,0BAAA,CAAW,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,CAAA;AAE5E,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,KAAA,EAAM;AAAA,EAER,GAAG,CAAC,OAAA,EAAS,KAAA,EAAO,GAAG,IAAI,CAAC,CAAA;AAE5B,EAAA,OAAO,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAM;AAC7B;;;;"}