react-use
Version:
Collection of React Hooks
43 lines (42 loc) • 1.35 kB
JavaScript
import writeText from 'copy-to-clipboard';
import { useCallback } from 'react';
import useMountedState from './useMountedState';
import useSetState from './useSetState';
var useCopyToClipboard = function () {
var isMounted = useMountedState();
var _a = useSetState({
value: undefined,
error: undefined,
noUserInteraction: true,
}), state = _a[0], setState = _a[1];
var copyToClipboard = useCallback(function (value) {
try {
if (process.env.NODE_ENV === 'development') {
if (typeof value !== 'string') {
console.error("Cannot copy typeof " + typeof value + " to clipboard, must be a string");
}
}
var noUserInteraction = writeText(value);
if (!isMounted()) {
return;
}
setState({
value: value,
error: undefined,
noUserInteraction: noUserInteraction,
});
}
catch (error) {
if (!isMounted()) {
return;
}
setState({
value: undefined,
error: error,
noUserInteraction: true,
});
}
}, []);
return [state, copyToClipboard];
};
export default useCopyToClipboard;