mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Improve pasting (#723)
* switch to selection tool on paste * align pasting via contextMenu with pasting from event * ensure only plaintext can be pasted * fix findShapeByKey regression * simplify wysiwyg pasting * improve wysiwyg blurriness
This commit is contained in:
parent
ba1a39c9f3
commit
88eacc9da7
5 changed files with 119 additions and 82 deletions
|
@ -3,6 +3,9 @@ import { ExcalidrawElement } from "./element/types";
|
|||
let CLIPBOARD = "";
|
||||
let PREFER_APP_CLIPBOARD = false;
|
||||
|
||||
export const probablySupportsClipboardReadText =
|
||||
"clipboard" in navigator && "readText" in navigator.clipboard;
|
||||
|
||||
export const probablySupportsClipboardWriteText =
|
||||
"clipboard" in navigator && "writeText" in navigator.clipboard;
|
||||
|
||||
|
@ -47,26 +50,33 @@ export function getAppClipboard(): {
|
|||
) {
|
||||
return { elements: clipboardElements };
|
||||
}
|
||||
} catch (err) {}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
export function parseClipboardEvent(
|
||||
e: ClipboardEvent,
|
||||
): {
|
||||
export async function getClipboardContent(
|
||||
e: ClipboardEvent | null,
|
||||
): Promise<{
|
||||
text?: string;
|
||||
elements?: readonly ExcalidrawElement[];
|
||||
} {
|
||||
}> {
|
||||
try {
|
||||
const text = e.clipboardData?.getData("text/plain").trim();
|
||||
const text = e
|
||||
? e.clipboardData?.getData("text/plain").trim()
|
||||
: probablySupportsClipboardReadText &&
|
||||
(await navigator.clipboard.readText());
|
||||
|
||||
if (text && !PREFER_APP_CLIPBOARD) {
|
||||
return { text };
|
||||
}
|
||||
return getAppClipboard();
|
||||
} catch (e) {}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
return {};
|
||||
return getAppClipboard();
|
||||
}
|
||||
|
||||
export async function copyCanvasToClipboardAsPng(canvas: HTMLCanvasElement) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue