UNPKG

tldraw

Version:

A tiny little drawing editor.

42 lines (41 loc) 1.34 kB
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