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:
David Luzar 2020-02-07 18:42:24 +01:00 committed by GitHub
parent ba1a39c9f3
commit 88eacc9da7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 119 additions and 82 deletions

View file

@ -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) {