{"version":3,"file":"useDebounce-edaa7573.js","sources":["../src/hooks/useDebounce.js"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nexport const useDebounce = (callback, delay) => {\n const timeoutRef = useRef(null);\n const promiseResolveRef = useRef(null);\n const promiseRejectRef = useRef(null);\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n if (promiseRejectRef.current) {\n promiseRejectRef.current(new Error('Component unmounted'));\n }\n }\n };\n }, []);\n\n const debouncedCallback = useCallback(\n (...args) => {\n return new Promise((resolve, reject) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n if (promiseRejectRef.current) {\n promiseRejectRef.current(new Error('Debounce cancelled'));\n }\n }\n\n promiseResolveRef.current = resolve;\n promiseRejectRef.current = reject;\n\n timeoutRef.current = setTimeout(async () => {\n try {\n const result = await callback(...args);\n promiseResolveRef.current(result);\n } catch (error) {\n promiseRejectRef.current(error);\n } finally {\n promiseResolveRef.current = null;\n promiseRejectRef.current = null;\n }\n }, delay);\n });\n },\n [callback, delay]\n );\n\n // Add cancel method to handle manual cancellation\n debouncedCallback.cancel = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n if (promiseRejectRef.current) {\n promiseRejectRef.current(new Error('Manually cancelled'));\n }\n promiseResolveRef.current = null;\n promiseRejectRef.current = null;\n }\n };\n\n return debouncedCallback;\n};\n"],"names":["useDebounce","callback","delay","timeoutRef","useRef","promiseResolveRef","promiseRejectRef","useEffect","debouncedCallback","useCallback","args","resolve","reject","result","error"],"mappings":"yCAEY,MAACA,EAAc,CAACC,EAAUC,IAAU,CAC5C,MAAMC,EAAaC,SAAO,IAAI,EACxBC,EAAoBD,SAAO,IAAI,EAC/BE,EAAmBF,SAAO,IAAI,EAEpCG,EAAAA,UAAU,IAEC,IAAM,CACLJ,EAAW,UACX,aAAaA,EAAW,OAAO,EAC3BG,EAAiB,SACjBA,EAAiB,QAAQ,IAAI,MAAM,qBAAqB,CAAC,EAG7E,EACO,CAAE,CAAA,EAEL,MAAME,EAAoBC,EAAW,YACjC,IAAIC,IACO,IAAI,QAAQ,CAACC,EAASC,IAAW,CAChCT,EAAW,UACX,aAAaA,EAAW,OAAO,EAC3BG,EAAiB,SACjBA,EAAiB,QAAQ,IAAI,MAAM,oBAAoB,CAAC,GAIhED,EAAkB,QAAUM,EAC5BL,EAAiB,QAAUM,EAE3BT,EAAW,QAAU,WAAW,SAAY,CACxC,GAAI,CACA,MAAMU,EAAS,MAAMZ,EAAS,GAAGS,CAAI,EACrCL,EAAkB,QAAQQ,CAAM,CACnC,OAAQC,EAAO,CACZR,EAAiB,QAAQQ,CAAK,CACtD,QAA8B,CACNT,EAAkB,QAAU,KAC5BC,EAAiB,QAAU,IAC9B,CACJ,EAAEJ,CAAK,CACxB,CAAa,EAEL,CAACD,EAAUC,CAAK,CACxB,EAGI,OAAAM,EAAkB,OAAS,IAAM,CACzBL,EAAW,UACX,aAAaA,EAAW,OAAO,EAC3BG,EAAiB,SACjBA,EAAiB,QAAQ,IAAI,MAAM,oBAAoB,CAAC,EAE5DD,EAAkB,QAAU,KAC5BC,EAAiB,QAAU,KAEvC,EAEWE,CACX"}