{"version":3,"file":"use-clipboard.cjs","names":[],"sources":["../../src/use-clipboard/use-clipboard.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport interface UseClipboardInput {\n  /** Time in ms after which the copied state will reset, `2000` by default */\n  timeout?: number;\n}\n\nexport interface UseClipboardReturnValue {\n  /** Function to copy value to clipboard */\n  copy: (value: any) => void;\n\n  /** Function to reset copied state and error */\n  reset: () => void;\n\n  /** Error if copying failed */\n  error: Error | null;\n\n  /** Boolean indicating if the value was copied successfully */\n  copied: boolean;\n}\n\nexport function useClipboard(options: UseClipboardInput = {}): UseClipboardReturnValue {\n  const timeout = options.timeout ?? 2000;\n  const [error, setError] = useState<Error | null>(null);\n  const [copied, setCopied] = useState(false);\n  const timeoutRef = useRef<number | null>(null);\n\n  useEffect(\n    () => () => {\n      window.clearTimeout(timeoutRef.current!);\n    },\n    []\n  );\n\n  const handleCopyResult = (value: boolean) => {\n    window.clearTimeout(timeoutRef.current!);\n    timeoutRef.current = window.setTimeout(() => setCopied(false), timeout);\n    setCopied(value);\n  };\n\n  const copy = (value: any) => {\n    if ('clipboard' in navigator) {\n      navigator.clipboard\n        .writeText(value)\n        .then(() => {\n          setError(null);\n          handleCopyResult(true);\n        })\n        .catch((err) => setError(err));\n    } else {\n      setError(new Error('useClipboard: navigator.clipboard is not supported'));\n    }\n  };\n\n  const reset = () => {\n    setCopied(false);\n    setError(null);\n    window.clearTimeout(timeoutRef.current!);\n  };\n\n  return { copy, reset, error, copied };\n}\n\nexport namespace useClipboard {\n  export type Input = UseClipboardInput;\n  export type ReturnValue = UseClipboardReturnValue;\n}\n"],"mappings":";;;AAqBA,SAAgB,aAAa,UAA6B,CAAC,GAA4B;CACrF,MAAM,UAAU,QAAQ,WAAW;CACnC,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAmC,IAAI;CACrD,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,KAAK;CAC1C,MAAM,cAAA,GAAA,MAAA,QAAmC,IAAI;CAE7C,CAAA,GAAA,MAAA,uBACc;EACV,OAAO,aAAa,WAAW,OAAQ;CACzC,GACA,CAAC,CACH;CAEA,MAAM,oBAAoB,UAAmB;EAC3C,OAAO,aAAa,WAAW,OAAQ;EACvC,WAAW,UAAU,OAAO,iBAAiB,UAAU,KAAK,GAAG,OAAO;EACtE,UAAU,KAAK;CACjB;CAEA,MAAM,QAAQ,UAAe;EAC3B,IAAI,eAAe,WACjB,UAAU,UACP,UAAU,KAAK,EACf,WAAW;GACV,SAAS,IAAI;GACb,iBAAiB,IAAI;EACvB,CAAC,EACA,OAAO,QAAQ,SAAS,GAAG,CAAC;OAE/B,yBAAS,IAAI,MAAM,oDAAoD,CAAC;CAE5E;CAEA,MAAM,cAAc;EAClB,UAAU,KAAK;EACf,SAAS,IAAI;EACb,OAAO,aAAa,WAAW,OAAQ;CACzC;CAEA,OAAO;EAAE;EAAM;EAAO;EAAO;CAAO;AACtC"}