{"version":3,"file":"use-clipboard.cjs","names":[],"sources":["../../src/use-clipboard/use-clipboard.ts"],"sourcesContent":["import { 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(\n  options: UseClipboardInput = { timeout: 2000 }\n): UseClipboardReturnValue {\n  const [error, setError] = useState<Error | null>(null);\n  const [copied, setCopied] = useState(false);\n  const [copyTimeout, setCopyTimeout] = useState<number | null>(null);\n\n  const handleCopyResult = (value: boolean) => {\n    window.clearTimeout(copyTimeout!);\n    setCopyTimeout(window.setTimeout(() => setCopied(false), options.timeout));\n    setCopied(value);\n  };\n\n  const copy = (value: any) => {\n    if ('clipboard' in navigator) {\n      navigator.clipboard\n        .writeText(value)\n        .then(() => handleCopyResult(true))\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(copyTimeout!);\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,aACd,UAA6B,EAAE,SAAS,KAAM,EACrB;CACzB,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAmC,KAAK;CACtD,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,MAAM;CAC3C,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA0C,KAAK;CAEnE,MAAM,oBAAoB,UAAmB;AAC3C,SAAO,aAAa,YAAa;AACjC,iBAAe,OAAO,iBAAiB,UAAU,MAAM,EAAE,QAAQ,QAAQ,CAAC;AAC1E,YAAU,MAAM;;CAGlB,MAAM,QAAQ,UAAe;AAC3B,MAAI,eAAe,UACjB,WAAU,UACP,UAAU,MAAM,CAChB,WAAW,iBAAiB,KAAK,CAAC,CAClC,OAAO,QAAQ,SAAS,IAAI,CAAC;MAEhC,0BAAS,IAAI,MAAM,qDAAqD,CAAC;;CAI7E,MAAM,cAAc;AAClB,YAAU,MAAM;AAChB,WAAS,KAAK;AACd,SAAO,aAAa,YAAa;;AAGnC,QAAO;EAAE;EAAM;EAAO;EAAO;EAAQ"}