{"version":3,"file":"use-timeout.cjs","names":[],"sources":["../../src/use-timeout/use-timeout.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\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\n  const start = useCallback(\n    (...args: any[]) => {\n      if (!timeoutRef.current) {\n        timeoutRef.current = window.setTimeout(() => {\n          callback(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":";;;AAWA,SAAgB,WACd,UACA,OACA,UAA6B,EAAE,YAAY,OAAO,EAC3B;CACvB,MAAM,cAAA,GAAA,MAAA,QAAmC,KAAK;CAE9C,MAAM,SAAA,GAAA,MAAA,cACH,GAAG,SAAgB;AAClB,MAAI,CAAC,WAAW,QACd,YAAW,UAAU,OAAO,iBAAiB;AAC3C,YAAS,KAAK;AACd,cAAW,UAAU;KACpB,MAAM;IAGb,CAAC,MAAM,CACR;CAED,MAAM,SAAA,GAAA,MAAA,mBAA0B;AAC9B,MAAI,WAAW,SAAS;AACtB,UAAO,aAAa,WAAW,QAAQ;AACvC,cAAW,UAAU;;IAEtB,EAAE,CAAC;AAEN,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,QAAQ,WACV,QAAO;AAGT,SAAO;IACN,CAAC,OAAO,MAAM,CAAC;AAElB,QAAO;EAAE;EAAO;EAAO"}