32 lines
937 B
TypeScript
32 lines
937 B
TypeScript
/* Copy to Clipboard */
|
|
export async function copyToClipboard(textToCopy: string, type: string) {
|
|
const toast = useToast()
|
|
|
|
const selection = window.getSelection()
|
|
|
|
const container = document.createElement('div')
|
|
const range = selection?.getRangeAt(0)
|
|
container.appendChild(range.cloneContents())
|
|
|
|
const htmlOutput = container.innerHTML
|
|
const textOutput = selection?.toString()
|
|
|
|
try {
|
|
// Modern Clipboard API requires ClipboardItem
|
|
const clipboardItem = new ClipboardItem({
|
|
'text/html': new Blob([htmlOutput], { type: 'text/html' }),
|
|
'text/plain': new Blob([textOutput], { type: 'text/plain' })
|
|
})
|
|
|
|
await navigator.clipboard.write([clipboardItem])
|
|
toast.add({
|
|
title: 'Texto copiado!',
|
|
description: `${textOutput}`,
|
|
icon: 'ph-clipboard-text',
|
|
color: type == 'activities' ? 'success' : 'info'
|
|
})
|
|
} catch (err) {
|
|
console.error('Failed to copy: ', err)
|
|
}
|
|
}
|