项目文件夹

文件
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 13:17:32 +08:00

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>