Spaces:
Running
Running
preview textgen
Browse files
src/lib/components/image-generation/Preview.svelte
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<script lang="ts">
|
| 2 |
+
export let body: Record<string, any>;
|
| 3 |
+
export let res: string;
|
| 4 |
+
</script>
|
| 5 |
+
|
| 6 |
+
<div class="text-white p-6 font-code text-xs !leading-loose">
|
| 7 |
+
<div class="max-w-max relative ">
|
| 8 |
+
<img src={res} alt="" class="w-full max-w-lg object-contain" />
|
| 9 |
+
<div class="absolute bottom-3 left-3 bg-white/20 backdrop-blur-sm px-2 py-0.5 rounded-lg text-slate-900">{body?.inputs}</div>
|
| 10 |
+
</div>
|
| 11 |
+
</div>
|
src/lib/components/image-generation/Response.svelte
CHANGED
|
@@ -1,9 +1,12 @@
|
|
| 1 |
<script lang="ts">
|
| 2 |
import Icon from '@iconify/svelte';
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
import Loading from "$lib/components/Loading.svelte"
|
| 5 |
import CodePreview from '$lib/components/CodePreview.svelte';
|
| 6 |
-
import Preview from '$lib/components/
|
| 7 |
|
| 8 |
export let loading: boolean;
|
| 9 |
export let res: any;
|
|
@@ -25,9 +28,24 @@
|
|
| 25 |
icon: "carbon:code",
|
| 26 |
},
|
| 27 |
];
|
|
|
|
|
|
|
| 28 |
</script>
|
| 29 |
|
| 30 |
<div class="lg:h-screen flex flex-col relative">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
<div class="bg-slate-950 overflow-auto flex-1">
|
| 32 |
<div class="w-full uppercase text-zinc-400 text-sm font-semibold border-t border-slate-900 flex items-start sticky top-0 bg-slate-950">
|
| 33 |
{#each TABS as { label, icon }, idx }
|
|
|
|
| 1 |
<script lang="ts">
|
| 2 |
import Icon from '@iconify/svelte';
|
| 3 |
+
import Highlight, { LineNumbers } from "svelte-highlight";
|
| 4 |
+
import json from "svelte-highlight/languages/json";
|
| 5 |
+
import "svelte-highlight/styles/night-owl.css"
|
| 6 |
|
| 7 |
import Loading from "$lib/components/Loading.svelte"
|
| 8 |
import CodePreview from '$lib/components/CodePreview.svelte';
|
| 9 |
+
import Preview from '$lib/components/image-generation/Preview.svelte';
|
| 10 |
|
| 11 |
export let loading: boolean;
|
| 12 |
export let res: any;
|
|
|
|
| 28 |
icon: "carbon:code",
|
| 29 |
},
|
| 30 |
];
|
| 31 |
+
|
| 32 |
+
$: console.log(res)
|
| 33 |
</script>
|
| 34 |
|
| 35 |
<div class="lg:h-screen flex flex-col relative">
|
| 36 |
+
<!-- <div class="w-full jsonResponse relative">
|
| 37 |
+
<div class="bg-slate-950 w-full uppercase px-5 py-4 text-zinc-400 text-sm font-semibold border-b border-slate-900 flex items-center justify-start gap-2">
|
| 38 |
+
<Icon icon="carbon:json" class="w-5 h-5" />
|
| 39 |
+
Response
|
| 40 |
+
</div>
|
| 41 |
+
<Highlight language={json} {code}>
|
| 42 |
+
</Highlight>
|
| 43 |
+
{#if loading}
|
| 44 |
+
<Loading>
|
| 45 |
+
<p class="text-slate-400 text-lg mt-4">Processing...</p>
|
| 46 |
+
</Loading>
|
| 47 |
+
{/if}
|
| 48 |
+
</div> -->
|
| 49 |
<div class="bg-slate-950 overflow-auto flex-1">
|
| 50 |
<div class="w-full uppercase text-zinc-400 text-sm font-semibold border-t border-slate-900 flex items-start sticky top-0 bg-slate-950">
|
| 51 |
{#each TABS as { label, icon }, idx }
|
src/routes/api/image-generation/+server.ts
CHANGED
|
@@ -18,7 +18,7 @@ export async function POST({ request }: RequestEvent) {
|
|
| 18 |
headers: {
|
| 19 |
Authorization: `Bearer ${env.SECRET_HF_TOKEN}`,
|
| 20 |
'Content-Type': 'application/json',
|
| 21 |
-
['x-use-cache']: "0"
|
| 22 |
},
|
| 23 |
body: JSON.stringify({
|
| 24 |
...body,
|
|
@@ -34,13 +34,12 @@ export async function POST({ request }: RequestEvent) {
|
|
| 34 |
})
|
| 35 |
|
| 36 |
if ("error" in response) {
|
| 37 |
-
error(400, response.error as string)
|
| 38 |
}
|
| 39 |
-
|
| 40 |
-
return {
|
| 41 |
headers: {
|
| 42 |
'Content-Type': 'image/png',
|
| 43 |
},
|
| 44 |
-
|
| 45 |
-
}
|
| 46 |
}
|
|
|
|
| 18 |
headers: {
|
| 19 |
Authorization: `Bearer ${env.SECRET_HF_TOKEN}`,
|
| 20 |
'Content-Type': 'application/json',
|
| 21 |
+
// ['x-use-cache']: "0"
|
| 22 |
},
|
| 23 |
body: JSON.stringify({
|
| 24 |
...body,
|
|
|
|
| 34 |
})
|
| 35 |
|
| 36 |
if ("error" in response) {
|
| 37 |
+
throw error(400, response.error as string)
|
| 38 |
}
|
| 39 |
+
|
| 40 |
+
return new Response(response, {
|
| 41 |
headers: {
|
| 42 |
'Content-Type': 'image/png',
|
| 43 |
},
|
| 44 |
+
})
|
|
|
|
| 45 |
}
|
src/routes/image-generation/+page.svelte
CHANGED
|
@@ -33,13 +33,20 @@
|
|
| 33 |
})
|
| 34 |
const blob = await request?.clone()?.blob()
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
}
|
| 42 |
-
|
| 43 |
bodyRequest = form
|
| 44 |
loading = false
|
| 45 |
}
|
|
|
|
| 33 |
})
|
| 34 |
const blob = await request?.clone()?.blob()
|
| 35 |
|
| 36 |
+
if (blob) {
|
| 37 |
+
const reader = new FileReader()
|
| 38 |
+
reader.readAsDataURL(blob)
|
| 39 |
+
reader.onloadend = () => {
|
| 40 |
+
const base64data = reader.result
|
| 41 |
+
data = base64data
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
const res = await request.clone().json().catch(() => ({}))
|
| 46 |
+
if (res) {
|
| 47 |
+
data = res
|
| 48 |
}
|
| 49 |
+
|
| 50 |
bodyRequest = form
|
| 51 |
loading = false
|
| 52 |
}
|