diff --git a/gui/package.json b/gui/package.json index 204807dc..64d50f14 100644 --- a/gui/package.json +++ b/gui/package.json @@ -10,6 +10,7 @@ "@apextoaster/js-utils": "^0.5.0", "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", + "@mui/icons-material": "^5.11.0", "@mui/lab": "^5.0.0-alpha.114", "@mui/material": "^5.11.3", "@types/node": "^18.11.18", diff --git a/gui/src/api/client.ts b/gui/src/api/client.ts index 492b15e1..68de9e1f 100644 --- a/gui/src/api/client.ts +++ b/gui/src/api/client.ts @@ -11,7 +11,7 @@ export interface Txt2ImgParams { width?: number; height?: number; - seed?: string; + seed?: number; } export interface Txt2ImgResponse extends Txt2ImgParams { @@ -21,7 +21,7 @@ export interface Txt2ImgResponse extends Txt2ImgParams { width: number; height: number; - seed: string; + seed: number; } export interface ApiResponse { @@ -93,7 +93,7 @@ export function makeClient(root: string, f = fetch): ApiClient { } if (doesExist(params.seed)) { - url.searchParams.append('seed', params.seed); + url.searchParams.append('seed', params.seed.toFixed(0)); } if (doesExist(params.model)) { diff --git a/gui/src/components/ImageControl.tsx b/gui/src/components/ImageControl.tsx index 6673cd19..4ef40ab3 100644 --- a/gui/src/components/ImageControl.tsx +++ b/gui/src/components/ImageControl.tsx @@ -1,11 +1,13 @@ import { doesExist } from '@apextoaster/js-utils'; -import { Stack } from '@mui/material'; +import { IconButton, Stack } from '@mui/material'; +import { Casino } from '@mui/icons-material'; import * as React from 'react'; import { NumericField } from './NumericField'; export interface ImageParams { cfg: number; + seed: number; steps: number; width: number; height: number; @@ -84,5 +86,33 @@ export function ImageControl(props: ImageControlProps) { }} /> + + { + if (doesExist(props.onChange)) { + props.onChange({ + ...params, + seed, + }); + } + }} + /> + { + const seed = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER); + if (doesExist(props.onChange)) { + props.onChange({ + ...params, + seed, + }); + } + }}> + + + ; } diff --git a/gui/src/components/Txt2Img.tsx b/gui/src/components/Txt2Img.tsx index 1b8f32e9..dd2da791 100644 --- a/gui/src/components/Txt2Img.tsx +++ b/gui/src/components/Txt2Img.tsx @@ -41,6 +41,7 @@ export function Txt2Img(props: Txt2ImgProps) { const [params, setParams] = useState({ cfg: 6, + seed: -1, steps: 25, width: 512, height: 512, diff --git a/gui/yarn.lock b/gui/yarn.lock index ec034bf3..cd7d69cf 100644 --- a/gui/yarn.lock +++ b/gui/yarn.lock @@ -372,6 +372,13 @@ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.3.tgz#72c04a9f12b29186877992648d7cf1c22b95ba5c" integrity sha512-Bgb6//KtxY7IC7M5Pa5RKFX1wttc213mqpKqydnz3wn4BGDXfA5c0vf5nTu5zqsJeB4T3ysAJTRJhQ/E1GsZDQ== +"@mui/icons-material@^5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.11.0.tgz#9ea6949278b2266d2683866069cd43009eaf6464" + integrity sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A== + dependencies: + "@babel/runtime" "^7.20.6" + "@mui/lab@^5.0.0-alpha.114": version "5.0.0-alpha.114" resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.114.tgz#af4a1893a66bd1b99e8c4f15e51e8db51c094826"