gradio-app--gradio
adf0d17497
publish / version_or_publish (push) Has been cancelled
storybook-build / changes (push) Has been cancelled
storybook-build / :storybook-build (push) Has been cancelled
Sync Gradio Skills to Hugging Face / sync-skills (push) Has been cancelled
functional / changes (push) Has been cancelled
functional / build-frontend (push) Has been cancelled
functional / functional-test-SSR=false (push) Has been cancelled
functional / functional-reload (push) Has been cancelled
js / changes (push) Has been cancelled
js / js-test (push) Has been cancelled
docs-build / changes (push) Has been cancelled
docs-build / docs-build (push) Has been cancelled
docs-build / website-build (push) Has been cancelled
functional / functional-test-SSR=true (push) Has been cancelled
hygiene / hygiene-test (push) Has been cancelled
python / changes (push) Has been cancelled
python / build (push) Has been cancelled
python / test-ubuntu-latest-flaky (push) Has been cancelled
python / test-ubuntu-latest-not-flaky (push) Has been cancelled
python / test-windows-latest-flaky (push) Has been cancelled
python / test-windows-latest-not-flaky (push) Has been cancelled
59 行
1.6 KiB
Svelte
59 行
1.6 KiB
Svelte
<script lang="ts">
|
|
import { Gradio } from "@gradio/utils";
|
|
import { get } from "svelte/store";
|
|
import WorkflowCanvas from "./workflow/WorkflowCanvas.svelte";
|
|
import { workflow, sanitize_for_save } from "./workflow/workflow-store";
|
|
|
|
let _props = $props();
|
|
const gradio = new Gradio<{ change: never }, { value: string | null }>(
|
|
_props
|
|
);
|
|
gradio.watch_for_change();
|
|
|
|
let serverObj = $derived(gradio.shared?.server ?? {});
|
|
let initialValue = $derived(gradio.props.value ?? null);
|
|
|
|
$effect(() => {
|
|
if (!serverObj?.save_workflow) return;
|
|
|
|
function handlePageHide() {
|
|
const gradioConfig = (window as any).gradio_config;
|
|
const componentId = gradioConfig?.components?.find(
|
|
(c: any) => c.type === "workflowcanvas"
|
|
)?.id;
|
|
if (!componentId) return;
|
|
const client = gradio.shared?.client;
|
|
if (!client) return;
|
|
const root = gradioConfig?.root ?? "";
|
|
const apiPrefix = gradioConfig?.api_prefix ?? "/gradio_api";
|
|
fetch(`${root}${apiPrefix}/component_server/`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
data: [JSON.stringify(sanitize_for_save(get(workflow)))],
|
|
component_id: componentId,
|
|
fn_name: "save_workflow",
|
|
session_hash: client.session_hash
|
|
}),
|
|
keepalive: true
|
|
}).catch(() => {});
|
|
}
|
|
|
|
window.addEventListener("pagehide", handlePageHide);
|
|
return () => window.removeEventListener("pagehide", handlePageHide);
|
|
});
|
|
</script>
|
|
|
|
<div class="workflow-fullscreen">
|
|
<WorkflowCanvas server={serverObj} {initialValue} />
|
|
</div>
|
|
|
|
<style>
|
|
.workflow-fullscreen {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 100;
|
|
background: #0c0d10;
|
|
}
|
|
</style>
|