mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
987 B
37 lines
987 B
import { message, useI18n } from '#imports' |
|
|
|
export const usePaste = () => { |
|
const { t } = useI18n() |
|
|
|
const paste = async (): Promise<boolean> => { |
|
try { |
|
// Check if the Clipboard API is supported |
|
if (!navigator.clipboard) throw new Error(t('msg.error.pasteFromClipboardError')) |
|
|
|
// Read text from the clipboard |
|
const clipboardText = await navigator.clipboard.readText() |
|
|
|
// Create a new paste event |
|
const pasteEvent = new Event('paste', { |
|
bubbles: false, |
|
cancelable: true, |
|
}) |
|
|
|
// Attach clipboard data to the event |
|
const clipboardData = { |
|
getData: () => clipboardText || '', |
|
} |
|
Object.defineProperty(pasteEvent, 'clipboardData', { value: clipboardData }) |
|
|
|
// Dispatch the event on the document |
|
document.dispatchEvent(pasteEvent) |
|
return true |
|
} catch (e) { |
|
message.error(t('msg.error.pasteFromClipboardError')) |
|
|
|
return false |
|
} |
|
} |
|
|
|
return { paste } |
|
}
|
|
|