{"version":3,"file":"use-timeout.cjs","names":["useCallbackRef"],"sources":["../../src/use-timeout/use-timeout.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport { useCallbackRef } from '../utils';\n\nexport interface UseTimeoutOptions {\n  autoInvoke: boolean;\n}\n\nexport interface UseTimeoutReturnValue {\n  start: (...args: any[]) => void;\n  clear: () => void;\n}\n\nexport function useTimeout(\n  callback: (...args: any[]) => void,\n  delay: number,\n  options: UseTimeoutOptions = { autoInvoke: false }\n): UseTimeoutReturnValue {\n  const timeoutRef = useRef<number | null>(null);\n  const handleCallback = useCallbackRef(callback);\n\n  const start = useCallback(\n    (...args: any[]) => {\n      if (!timeoutRef.current) {\n        timeoutRef.current = window.setTimeout(() => {\n          handleCallback(...args);\n          timeoutRef.current = null;\n        }, delay);\n      }\n    },\n    [delay]\n  );\n\n  const clear = useCallback(() => {\n    if (timeoutRef.current) {\n      window.clearTimeout(timeoutRef.current);\n      timeoutRef.current = null;\n    }\n  }, []);\n\n  useEffect(() => {\n    if (options.autoInvoke) {\n      start();\n    }\n\n    return clear;\n  }, [clear, start]);\n\n  return { start, clear };\n}\n\nexport namespace useTimeout {\n  export type Options = UseTimeoutOptions;\n  export type ReturnValue = UseTimeoutReturnValue;\n}\n"],"mappings":";;;;AAYA,SAAgB,WACd,UACA,OACA,UAA6B,EAAE,YAAY,MAAM,GAC1B;CACvB,MAAM,cAAA,GAAA,MAAA,QAAmC,IAAI;CAC7C,MAAM,iBAAiBA,yBAAAA,eAAe,QAAQ;CAE9C,MAAM,SAAA,GAAA,MAAA,cACH,GAAG,SAAgB;EAClB,IAAI,CAAC,WAAW,SACd,WAAW,UAAU,OAAO,iBAAiB;GAC3C,eAAe,GAAG,IAAI;GACtB,WAAW,UAAU;EACvB,GAAG,KAAK;CAEZ,GACA,CAAC,KAAK,CACR;CAEA,MAAM,SAAA,GAAA,MAAA,mBAA0B;EAC9B,IAAI,WAAW,SAAS;GACtB,OAAO,aAAa,WAAW,OAAO;GACtC,WAAW,UAAU;EACvB;CACF,GAAG,CAAC,CAAC;CAEL,CAAA,GAAA,MAAA,iBAAgB;EACd,IAAI,QAAQ,YACV,MAAM;EAGR,OAAO;CACT,GAAG,CAAC,OAAO,KAAK,CAAC;CAEjB,OAAO;EAAE;EAAO;CAAM;AACxB"}