UNPKG

@erudilabs/use-debounced-value

Version:

Debounce value changes

1 lines 1.57 kB
{"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":[]}