tldraw
Version:
A tiny little drawing editor.
42 lines (41 loc) • 1.34 kB
JavaScript
import {
FileHelpers,
exhaustiveSwitchError
} from "@tldraw/editor";
import {
clipboardWrite,
doesClipboardSupportType,
getAdditionalClipboardWriteType
} from "../clipboard.mjs";
import { exportToBlobPromise, exportToString } from "./export.mjs";
function copyAs(editor, ids, format = "svg", opts = {}) {
if (!navigator.clipboard) return Promise.reject(new Error("Copy not supported"));
if (navigator.clipboard.write) {
const { blobPromise, mimeType } = exportToBlobPromise(editor, ids, format, opts);
const types = { [mimeType]: blobPromise };
const additionalMimeType = getAdditionalClipboardWriteType(mimeType);
if (additionalMimeType && doesClipboardSupportType(additionalMimeType)) {
types[additionalMimeType] = blobPromise.then(
(blob) => FileHelpers.rewriteMimeType(blob, additionalMimeType)
);
}
return clipboardWrite(types);
}
switch (format) {
case "json":
case "svg":
return fallbackWriteTextAsync(async () => exportToString(editor, ids, format, opts));
case "jpeg":
case "png":
throw new Error("Copy not supported");
default:
exhaustiveSwitchError(format);
}
}
async function fallbackWriteTextAsync(getText) {
await navigator.clipboard?.writeText?.(await getText());
}
export {
copyAs
};
//# sourceMappingURL=copyAs.mjs.map