Files
url_tracker_tool/node_modules/@chakra-ui/hooks/dist/cjs/use-clipboard.cjs
Andrei 58f8093689 Rebrand from 'Redirect Intelligence v2' to 'URL Tracker Tool V2' throughout UI
- Updated all component headers and documentation
- Changed navbar and footer branding
- Updated homepage hero badge
- Modified page title in index.html
- Simplified footer text to 'Built with ❤️'
- Consistent V2 capitalization across all references
2025-08-19 19:12:23 +00:00

45 lines
1.3 KiB
JavaScript

'use client';
'use strict';
var react = require('react');
var copy = require('copy-to-clipboard');
function useClipboard(value, optionsOrTimeout = {}) {
const [hasCopied, setHasCopied] = react.useState(false);
const [valueState, setValueState] = react.useState(value);
react.useEffect(() => setValueState(value), [value]);
const { timeout = 1500, ...copyOptions } = typeof optionsOrTimeout === "number" ? { timeout: optionsOrTimeout } : optionsOrTimeout;
const onCopy = react.useCallback(
(valueToCopy) => {
const value2 = typeof valueToCopy === "string" ? valueToCopy : valueState;
if ("clipboard" in navigator) {
navigator.clipboard.writeText(value2).then(() => setHasCopied(true)).catch(() => setHasCopied(copy(value2, copyOptions)));
} else {
setHasCopied(copy(value2, copyOptions));
}
},
[valueState, copyOptions]
);
react.useEffect(() => {
let timeoutId = null;
if (hasCopied) {
timeoutId = window.setTimeout(() => {
setHasCopied(false);
}, timeout);
}
return () => {
if (timeoutId) {
window.clearTimeout(timeoutId);
}
};
}, [timeout, hasCopied]);
return {
value: valueState,
setValue: setValueState,
onCopy,
hasCopied
};
}
exports.useClipboard = useClipboard;