@modern-kit/utils
Version:
45 lines (40 loc) • 1.51 kB
JavaScript
;
var fileConvertImageToBlob = require('../../file/convertImageToBlob/index.cjs');
var deviceIsClient = require('../../device/isClient/index.cjs');
var clipboardCopyClipboardText = require('../copyClipboardText/index.cjs');
require('../../device/isServer/index.cjs');
require('../copyFallbackClipboardText/index.cjs');
const copyFallbackImage = async (src) => {
const response = await fetch(src);
const textData = await response.text();
return clipboardCopyClipboardText.copyClipboardText(textData);
};
async function copyClipboardImage(src, options) {
if (!deviceIsClient.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 fileConvertImageToBlob.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;
}
}
exports.copyClipboardImage = copyClipboardImage;
//# sourceMappingURL=index.cjs.map