const createImage = (options) => {
    options = options || {};
    const img = document.createElement("img");
    if (options.src) {
        img.src = options.src;
    }
    return img;
};

export const copyToClipboard = async (blob) => {
    try {
        await navigator.clipboard.write([
            // eslint-disable-next-line no-undef
            new ClipboardItem({
                [blob.type]: blob
            })
        ]);
        console.log("content copied");
    } catch (error) {
        console.error(error);
    }
};

const convertToPng = (imgBlob) => {
    const canvas = document.createElement("canvas");
    const ctx = canvas.getContext("2d");
    const imageEl = createImage({src: window.URL.createObjectURL(imgBlob)});
    imageEl.onload = (e) => {
        canvas.width = e.target.width;
        canvas.height = e.target.height;
        ctx.drawImage(e.target, 0, 0, e.target.width, e.target.height);
        canvas.toBlob(copyToClipboard, "image/png", 1);
    };
};

export const copyImg = async (src) => {
    const img = await fetch(src);
    const imgBlob = await img.blob();
    if (imgBlob.type !== 'image/png') {
        return convertToPng(imgBlob);
    } else {
        return copyToClipboard(imgBlob);
    }
};


export const copyText = (text) => {
    const blob = new Blob([text], {type: 'text/plain'})
    copyToClipboard(blob)
}

