Spaces:
Runtime error
Runtime error
import React, { useCallback, useEffect, useState } from "react"; | |
import { TextField, Grid, Paper } from "@mui/material"; | |
function App() { | |
const [inputPrompt, setInputPrompt] = useState(""); | |
const [images, setImages] = useState(Array(9).fill("images/white.jpg")); | |
const fetchImages = useCallback(async () => { | |
try { | |
const response = await fetch("/api/predict", { | |
method: "POST", | |
headers: { 'Content-Type': 'application/json' }, | |
body: JSON.stringify({ prompt: inputPrompt }) | |
}); | |
const data = await response.json(); | |
const imageUrls = data.base64_images.map((base64: string) => `data:image/jpeg;base64,${base64}`); | |
setImages(imageUrls); | |
} catch (error) { | |
console.error("Error fetching images:", error); | |
} | |
}, [inputPrompt]); | |
const handlePromptChange = (event: React.ChangeEvent<HTMLInputElement>) => { | |
setInputPrompt(event.target.value); | |
fetchImages(); | |
}; | |
return ( | |
<div | |
className="App" | |
style={{ | |
backgroundColor: "#282c34", | |
height: "100vh", | |
display: "flex", | |
alignItems: "center", | |
justifyContent: "center", | |
margin: "0", | |
color: "#ffffff", | |
padding: "20px", | |
}} | |
> | |
<div | |
style={{ | |
backgroundColor: "#282c34", | |
alignItems: "center", | |
justifyContent: "center", | |
display: "flex", | |
flexDirection: "column", | |
}} | |
> | |
<Grid container spacing={2}> | |
{images.map((image, index) => ( | |
<Grid item xs={4} key={index}> | |
<Paper style={{ padding: "10px", textAlign: "center" }}> | |
<img src={image} alt={`Generated ${index}`} style={{ maxWidth: "100%", maxHeight: "200px", borderRadius: "10px" }} /> | |
</Paper> | |
</Grid> | |
))} | |
</Grid> | |
<TextField | |
variant="outlined" | |
value={inputPrompt} | |
onChange={handlePromptChange} | |
style={{ marginBottom: "20px", marginTop: "20px", width: "640px", color: "#ffffff", borderColor: "#ffffff", borderRadius: "10px", backgroundColor: "#ffffff" }} | |
placeholder="Enter a prompt" | |
/> | |
</div> | |
</div> | |
); | |
} | |
export default App; | |