From 9512a6ccb241429c9ede58d8152b986e4a51a889 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Thu, 10 Apr 2025 18:22:07 +0000 Subject: [PATCH] Add clipboard paste utility functions --- .../app/src/utils/pasteFromClipboard/index.js | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 packages/app/src/utils/pasteFromClipboard/index.js diff --git a/packages/app/src/utils/pasteFromClipboard/index.js b/packages/app/src/utils/pasteFromClipboard/index.js new file mode 100644 index 00000000..52486187 --- /dev/null +++ b/packages/app/src/utils/pasteFromClipboard/index.js @@ -0,0 +1,33 @@ +export async function pasteFromClipboard(element) { + if (!navigator.clipboard) { + throw new Error( + "Clipboard API not available in this browser or context", + ) + } + + if (!element || !(element instanceof HTMLElement)) { + console.error("Invalid element provided to pasteFromClipboard") + return Promise.reject(new Error("Invalid element provided")) + } + + let data = await navigator.clipboard.read() + + data = data[0] + + data = await data.getType(data.types[0]) + + const event = new ClipboardEvent("paste", { + clipboardData: new DataTransfer(), + }) + + element.focus() + element.dispatchEvent(event) + + return data +} + +export function isClipboardSupported() { + return !!navigator.clipboard +} + +export default pasteFromClipboard