UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

39 lines (38 loc) 1.16 kB
"use client"; let react = require("react"); //#region packages/@mantine/hooks/src/use-clipboard/use-clipboard.ts function useClipboard(options = {}) { const timeout = options.timeout ?? 2e3; const [error, setError] = (0, react.useState)(null); const [copied, setCopied] = (0, react.useState)(false); const timeoutRef = (0, react.useRef)(null); (0, react.useEffect)(() => () => { window.clearTimeout(timeoutRef.current); }, []); const handleCopyResult = (value) => { window.clearTimeout(timeoutRef.current); timeoutRef.current = window.setTimeout(() => setCopied(false), timeout); setCopied(value); }; const copy = (value) => { if ("clipboard" in navigator) navigator.clipboard.writeText(value).then(() => { setError(null); handleCopyResult(true); }).catch((err) => setError(err)); else setError(/* @__PURE__ */ new Error("useClipboard: navigator.clipboard is not supported")); }; const reset = () => { setCopied(false); setError(null); window.clearTimeout(timeoutRef.current); }; return { copy, reset, error, copied }; } //#endregion exports.useClipboard = useClipboard; //# sourceMappingURL=use-clipboard.cjs.map