@chakra-ui/core
Version:
Responsive and accessible React UI components built with React and Emotion
28 lines (27 loc) • 686 B
JavaScript
import { useState, useEffect, useCallback } from "react";
import copy from "copy-to-clipboard";
export function useClipboard(value) {
var _useState = useState(false),
hasCopied = _useState[0],
setHasCopied = _useState[1];
var onCopy = useCallback(function () {
var didCopy = copy(value);
setHasCopied(didCopy);
}, [value]);
useEffect(function () {
if (hasCopied) {
var id = setTimeout(function () {
setHasCopied(false);
}, 1500);
return function () {
return clearTimeout(id);
};
}
}, [hasCopied]);
return {
value: value,
onCopy: onCopy,
hasCopied: hasCopied
};
}
export default useClipboard;