@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
1 lines • 2.35 kB
Source Map (JSON)
{"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"}