{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useDebouncedValue<T = any>(value: T, wait: number) {\n  const [_value, setValue] = useState(value)\n  const mountedRef = useRef(false)\n  const timeoutRef = useRef<number | undefined>(undefined)\n  const cooldownRef = useRef(false)\n\n  const cancel = () => window.clearTimeout(timeoutRef.current)\n\n  useEffect(() => {\n    if (mountedRef.current) {\n      if (!cooldownRef.current) {\n        cooldownRef.current = true\n        setValue(value)\n      } else {\n        cancel()\n        timeoutRef.current = window.setTimeout(() => {\n          cooldownRef.current = false\n          setValue(value)\n        }, wait)\n      }\n    }\n  }, [value, wait])\n\n  useEffect(() => {\n    mountedRef.current = true\n    return cancel\n  }, [])\n\n  return [_value] as const\n}\n"],"mappings":";AAAA,SAAS,WAAW,UAAU,cAAc;AAGrC,SAAS,kBAA2B,OAAU,MAAc;AACjE,QAAM,CAAC,QAAQ,QAAQ,IAAI,SAAS,KAAK;AACzC,QAAM,aAAa,OAAO,KAAK;AAC/B,QAAM,aAAa,OAA2B,MAAS;AACvD,QAAM,cAAc,OAAO,KAAK;AAEhC,QAAM,SAAS,MAAM,OAAO,aAAa,WAAW,OAAO;AAE3D,YAAU,MAAM;AACd,QAAI,WAAW,SAAS;AACtB,UAAI,CAAC,YAAY,SAAS;AACxB,oBAAY,UAAU;AACtB,iBAAS,KAAK;AAAA,MAChB,OAAO;AACL,eAAO;AACP,mBAAW,UAAU,OAAO,WAAW,MAAM;AAC3C,sBAAY,UAAU;AACtB,mBAAS,KAAK;AAAA,QAChB,GAAG,IAAI;AAAA,MACT;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,IAAI,CAAC;AAEhB,YAAU,MAAM;AACd,eAAW,UAAU;AACrB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,MAAM;AAChB;","names":[]}