UNPKG

@modern-kit/react

Version:
1 lines 2.12 kB
{"version":3,"file":"index.cjs","sources":["../../../src/hooks/useDebouncedState/index.ts"],"sourcesContent":["import { useDebounce } from '../useDebounce';\nimport { useState, Dispatch } from 'react';\n\ntype DebounceParameters = Parameters<typeof useDebounce>;\ntype DebounceReturnType<T extends (...args: any) => any> = ReturnType<\n typeof useDebounce<T>\n>;\n\n/**\n * @description useState의 디바운스 버전의 훅입니다.\n *\n * @template T - 상태의 타입을 나타냅니다.\n * @param {T} initialState - 초기 상태 값입니다.\n * @param {DebounceParameters[1]} wait - 상태 업데이트 전에 기다리는 지연 시간(밀리초)입니다.\n * @param {DebounceParameters[2]} options - 디바운스 동작과 관련된 옵션 객체입니다.\n * @param {AbortSignal} options.signal - 디바운스된 함수를 취소하기 위한 선택적 AbortSignal입니다.\n * @param {number} options.maxWait - 최대 대기 시간(밀리초)입니다.\n * @param {boolean} options.leading - 첫 번째 호출을 실행할지 여부입니다.\n * @param {boolean} options.trailing - 마지막 호출을 실행할지 여부입니다.\n * @returns {[T, DebounceReturnType<Dispatch<React.SetStateAction<T>>>]} - 현재 디바운스된 상태와 상태를 업데이트하는 함수를 포함하는 배열을 반환합니다.\n *\n * @example\n * const [searchTerm, setSearchTerm] = useDebouncedState<string>(\"\", 500);\n */\nexport function useDebouncedState<T>(\n initialState: T,\n wait: DebounceParameters[1],\n options: DebounceParameters[2] = {}\n): [T, DebounceReturnType<Dispatch<React.SetStateAction<T>>>] {\n const [debouncedState, setState] = useState(initialState);\n const debouncedSetState = useDebounce(setState, wait, options);\n\n return [debouncedState, debouncedSetState];\n}\n"],"names":["useState","useDebounce"],"mappings":";;;;;;;;AAwBO,SAAS,iBAAA,CACd,YAAA,EACA,IAAA,EACA,OAAA,GAAiC,EAAC,EAC0B;AAC5D,EAAA,MAAM,CAAC,cAAA,EAAgB,QAAQ,CAAA,GAAIA,eAAS,YAAY,CAAA;AACxD,EAAA,MAAM,iBAAA,GAAoBC,4BAAA,CAAY,QAAA,EAAU,IAAA,EAAM,OAAO,CAAA;AAE7D,EAAA,OAAO,CAAC,gBAAgB,iBAAiB,CAAA;AAC3C;;;;"}