From ac9d6901b3e9eb0b8fda62c55a2f5f68e64f968e Mon Sep 17 00:00:00 2001 From: Danny McGee Date: Wed, 28 Feb 2024 04:26:54 -0500 Subject: [PATCH] Add Negative Prompt field --- image-generator-demo/src/app/app.element.scss | 31 ++++++- image-generator-demo/src/app/app.element.ts | 91 +++++++++++++------ studio-ui/src/lib/icon.element.ts | 8 ++ 3 files changed, 96 insertions(+), 34 deletions(-) diff --git a/image-generator-demo/src/app/app.element.scss b/image-generator-demo/src/app/app.element.scss index 749c3dd..63bbe57 100644 --- a/image-generator-demo/src/app/app.element.scss +++ b/image-generator-demo/src/app/app.element.scss @@ -73,8 +73,9 @@ border-radius: 0.5rem; } -.config-prompt { +.config-prompts { display: flex; + flex-direction: column; gap: 0.5rem; } @@ -118,10 +119,6 @@ color: #FFFF; } - &.prompt { - width: 512px; - } - &.seed { width: 96px; appearance: textfield; @@ -134,8 +131,32 @@ } } +.prompt { + flex: 1 0 0; +} + .config-field-group { + display: flex; + align-items: center; + gap: 0.5rem; position: relative; + + .pre-icon { + &.red { + color: rgb(220, 53, 69); + font-size: 1.333rem; + } + &.green { + color: rgb(25, 135, 84); + font-size: 1.15rem; + } + } +} + +.config-row { + display: flex; + width: 768px; + gap: 0.5rem; } .seed-refresh { diff --git a/image-generator-demo/src/app/app.element.ts b/image-generator-demo/src/app/app.element.ts index 2825ea8..5c31a49 100644 --- a/image-generator-demo/src/app/app.element.ts +++ b/image-generator-demo/src/app/app.element.ts @@ -29,6 +29,7 @@ export class AppElement extends LitElement { @state() loading = true; @state() prompt = ""; + @state() negPrompt = ""; @state() seed = randomSeed(); protected override createRenderRoot = () => this; @@ -41,10 +42,16 @@ export class AppElement extends LitElement { } protected override willUpdate(changes: PropertyValues): void { - if (changes.has("prompt") || changes.has("seed") || changes.has("imageCaptureUrl")) { + if ( + changes.has("prompt") + || changes.has("negPrompt") + || changes.has("seed") + || changes.has("imageCaptureUrl") + ) { // TODO: Send parameters to model console.log("changes:", { prompt: this.prompt, + negPrompt: this.negPrompt, seed: this.seed, imageCaptureUrl: this.imageCaptureUrl, }); @@ -91,6 +98,10 @@ export class AppElement extends LitElement { this.prompt = (event.target as HTMLInputElement).value; } + updateNegPrompt(event: Event): void { + this.negPrompt = (event.target as HTMLInputElement).value; + } + refreshSeed(): void { this.seed = randomSeed(); } @@ -164,39 +175,61 @@ export class AppElement extends LitElement {
`} -
- { - if (event.key === "Enter") { - event.preventDefault(); - this.updatePrompt(event); - } - }} - /> -
+
+ { + if (event.key === "Enter") { + event.preventDefault(); + this.updatePrompt(event); + } + }} /> - +
+
+
+ + { + if (event.key === "Enter") { + event.preventDefault(); + this.updateNegPrompt(event); + } + }} + /> +
+
+ + +
diff --git a/studio-ui/src/lib/icon.element.ts b/studio-ui/src/lib/icon.element.ts index b31bcb4..0f10b2f 100644 --- a/studio-ui/src/lib/icon.element.ts +++ b/studio-ui/src/lib/icon.element.ts @@ -24,6 +24,10 @@ import fasFloppyDisk from "@fortawesome/fontawesome-pro/svgs/solid/floppy-disk.s import farSkeleton from "@fortawesome/fontawesome-pro/svgs/regular/skeleton.svg?raw"; import farBone from "@fortawesome/fontawesome-pro/svgs/regular/bone.svg?raw"; import fasBrightness from "@fortawesome/fontawesome-pro/svgs/solid/brightness.svg?raw"; +import fasCheck from "@fortawesome/fontawesome-pro/svgs/solid/check.svg?raw"; +import fasXmark from "@fortawesome/fontawesome-pro/svgs/solid/xmark.svg?raw"; +import fasCircleCheck from "@fortawesome/fontawesome-pro/svgs/solid/circle-check.svg?raw"; +import fasCircleXmark from "@fortawesome/fontawesome-pro/svgs/solid/circle-xmark.svg?raw"; import styles from "./icon.element.scss?inline"; @@ -53,7 +57,10 @@ function renderSvg(iconId: string) { "bone": () => farBone, "bwd-fast": () => fasBwdFast, "bwd-step": () => fasBwdStep, + "check": () => fasCheck, + "circle-check": () => fasCircleCheck, "circle-question": () => fasCircleQuestion, + "circle-xmark": () => fasCircleXmark, "caret-right": () => fasCaretRight, "crosshairs": () => farCrosshairs, "cube": () => farCube, @@ -70,6 +77,7 @@ function renderSvg(iconId: string) { "skeleton": () => farSkeleton, "up-down-left-right": () => farUpDownLeftRight, "video": () => farVideo, + "xmark": () => fasXmark, _: () => null, });