/** Copy text to the clipboard */ export function copyToClipboard(textToCopy: string): void { // Use a textarea, so we can use execCommand const el = document.createElement('textarea') el.value = textToCopy el.setAttribute('readonly', '') el.style.position = 'absolute' el.style.left = '-9999px' document.body.appendChild(el) const selection = document.getSelection() let selected: Range | false = false if (selection) { // Store previous selection (or false) to restore it after selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false } el.select() if (navigator.clipboard) { navigator.clipboard.writeText(textToCopy) } else { document.execCommand('copy') } document.body.removeChild(el) // If a selection existed before copying if (selection && selected) { selection.removeAllRanges() // Unselect everything on the HTML document selection.addRange(selected) // Restore the original selection } }