@modern-kit/utils
Version:
43 lines (39 loc) • 1.4 kB
JavaScript
import { convertImageToBlob } from '../../file/convertImageToBlob/index.mjs';
import { isClient } from '../../device/isClient/index.mjs';
import { copyClipboardText } from '../copyClipboardText/index.mjs';
import '../../device/isServer/index.mjs';
import '../copyFallbackClipboardText/index.mjs';
const copyFallbackImage = async (src) => {
const response = await fetch(src);
const textData = await response.text();
return copyClipboardText(textData);
};
async function copyClipboardImage(src, options) {
if (!isClient()) {
throw new Error("Cannot be executed unless it is a client environment.");
}
try {
const hasNavigatorClipboard = "clipboard" in window.navigator;
if (!hasNavigatorClipboard) {
return copyFallbackImage(src);
}
const hasNavigatorClipboardWrite = "write" in window.navigator.clipboard;
if (!hasNavigatorClipboardWrite) {
return copyFallbackImage(src);
}
const toText = options?.toText ?? false;
if (toText) {
return copyFallbackImage(src);
}
const blobData = await convertImageToBlob(src, "png");
await navigator.clipboard.write([
new ClipboardItem({ [blobData.type]: blobData })
]);
return blobData;
} catch (err) {
console.error(`Failed to copy to clipboard. message: ${err.message}`);
throw err;
}
}
export { copyClipboardImage };
//# sourceMappingURL=index.mjs.map