Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
| /** | |
| * Copies a string to the clipboard, with a fallback for older browsers. | |
| * | |
| * @param text The string to copy to the clipboard. | |
| * @returns A promise that resolves when the text has been successfully copied, | |
| * or rejects if the copy operation fails. | |
| */ | |
| export async function copyToClipboard(text: string): Promise<void> { | |
| if (navigator.clipboard) { | |
| try { | |
| await navigator.clipboard.writeText(text); | |
| return; // Resolve immediately if successful | |
| } catch { | |
| // Fallback to the older method | |
| } | |
| } | |
| // Fallback for browsers that don't support the Clipboard API | |
| try { | |
| const textArea = document.createElement("textarea"); | |
| textArea.value = text; | |
| // Avoid scrolling to bottom of page in MS Edge. | |
| textArea.style.top = "0"; | |
| textArea.style.left = "0"; | |
| textArea.style.position = "fixed"; | |
| document.body.appendChild(textArea); | |
| textArea.focus(); | |
| textArea.select(); | |
| const successful = document.execCommand("copy"); | |
| document.body.removeChild(textArea); | |
| if (!successful) { | |
| throw new Error("Failed to copy text using fallback method."); | |
| } | |
| } catch (err) { | |
| return Promise.reject(err); | |
| } | |
| } | |