gradio
61 строка · 1.5 Кб
1<script lang="ts" context="module">
2export { default as BaseUploadButton } from "./shared/UploadButton.svelte";
3</script>
4
5<script lang="ts">
6import type { Gradio } from "@gradio/utils";
7import type { FileData } from "@gradio/client";
8import UploadButton from "./shared/UploadButton.svelte";
9
10export let elem_id = "";
11export let elem_classes: string[] = [];
12export let visible = true;
13export let label: string | null;
14export let value: null | FileData | FileData[];
15export let file_count: string;
16export let file_types: string[] = [];
17export let root: string;
18export let size: "sm" | "lg" = "lg";
19export let scale: number | null = null;
20export let icon: FileData | null = null;
21export let min_width: number | undefined = undefined;
22export let variant: "primary" | "secondary" | "stop" = "secondary";
23export let gradio: Gradio<{
24change: never;
25upload: never;
26click: never;
27}>;
28export let interactive: boolean;
29
30$: disabled = !interactive;
31
32async function handle_event(
33detail: null | FileData | FileData[],
34event: "change" | "upload" | "click"
35): Promise<void> {
36value = detail;
37gradio.dispatch(event);
38}
39</script>
40
41<UploadButton
42{elem_id}
43{elem_classes}
44{visible}
45{file_count}
46{file_types}
47{size}
48{scale}
49{icon}
50{min_width}
51{root}
52{value}
53{disabled}
54{variant}
55{label}
56on:click={() => gradio.dispatch("click")}
57on:change={({ detail }) => handle_event(detail, "change")}
58on:upload={({ detail }) => handle_event(detail, "upload")}
59>
60{label ? gradio.i18n(label) : ""}
61</UploadButton>
62