# Full codebase for conversion to data uri JSX: ```jsx const App = () => { const [src, setSrc] = useState(""); const [uri, setUri] = useState(""); const createImage = () => { return new Promise((resolve, reject) => { const image = new Image(); image.crossOrigin = "anonymous"; image.src = src; image.onload = () => { resolve(image); }; image.onerror = (e) => { reject(e); }; }); }; useEffect(async () => { // const image = new Image(); // image.crossOrigin = "anonymous"; // image.src = src; // image.onload = () => { const image = await createImage(); const canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; const ctx = canvas.getContext("2d"); ctx.drawImage(image, 0, 0); const dataURL = canvas.toDataURL("image/png"); setUri(dataURL); // console.log(dataURL); // }; }, [src]); const handleChange = (e) => { setSrc(e.target.value); }; const copyToClipboard = () => { navigator.clipboard.writeText(uri).then( function () { console.log("Async: Copying to clipboard was successful!"); }, function (err) { console.error("Async: Could not copy text: ", err); } ); }; const uploadImage = () => { const fileElement = document.createElement("input"); fileElement.setAttribute("type", "file"); fileElement.setAttribute("accept", "image/*"); fileElement.click(); fileElement.onchange = (e) => { const reader = new FileReader(); reader.readAsDataURL(fileElement.files[0]); reader.onload = () => { setSrc(reader.result); }; }; }; return (