import React, { useEffect } from "react"; export class ImageUtils { private static readImage(file: File, onLoadEnd: (this: FileReader) => any) { const reader: FileReader = new FileReader(); reader.onloadend = onLoadEnd; reader.readAsDataURL(file); } public static onImageChange(event: React.FormEvent, onLoadEnd: (this: FileReader) => any) { const file: File = (event.target as any).files[0]; ImageUtils.readImage(file, onLoadEnd); } public static pasteImage(e : any, onLoadEnd: (this: FileReader) => any) { if (e.clipboardData.files.length === 0) { return; } const file: File = e.clipboardData.files[0]; ImageUtils.readImage(file, onLoadEnd); } public static addPasteImageHook(onLoadEnd: (this: FileReader) => any) { useEffect(() => { const pasteImage = (e: any) => { ImageUtils.pasteImage(e, onLoadEnd) } window.addEventListener("paste", pasteImage); return () => window.removeEventListener("paste", pasteImage); }); } }