File size: 3,934 Bytes
29580f3 dfd748f 29580f3 dfd748f 29580f3 df4085a 07b52cf d775f14 3278e3c dfd748f 29580f3 85a555b 07b52cf d775f14 3278e3c dfd748f 29580f3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
<svelte:options accessors={true} />
<script context="module" lang="ts">
export { default as BaseExample } from "./Example.svelte";
</script>
<script lang="ts">
import type { Gradio, SelectData } from "@gradio/utils";
import { Block, Empty, UploadText } from "@gradio/atoms";
import { Image } from "@gradio/icons";
import { StatusTracker } from "@gradio/statustracker";
import type { LoadingStatus } from "@gradio/statustracker";
import AnnotatedImageData from "./shared/AnnotatedImageData";
import ImageAnnotator from "./shared/ImageAnnotator.svelte";
type sources = "upload" | "webcam" | "clipboard" | null;
export let elem_id = "";
export let elem_classes: string[] = [];
export let visible = true;
export let value: null | AnnotatedImageData = null;
export let label: string;
export let show_label: boolean;
export let root: string;
export let height: number | undefined;
export let width: number | undefined;
export let _selectable = false;
export let container = true;
export let scale: number | null = null;
export let min_width: number | undefined = undefined;
export let loading_status: LoadingStatus;
export let sources: ("upload" | "webcam" | "clipboard")[] = [
"upload",
"webcam",
"clipboard",
];
export let show_download_button: boolean;
export let show_share_button: boolean;
export let show_clear_button: boolean;
export let interactive: boolean;
export let boxes_alpha: number;
export let label_list: string[];
export let label_colors: string[];
export let box_min_size: number;
export let handle_size: number;
export let box_thickness: number;
export let box_selected_thickness: number;
export let disable_edit_boxes: boolean;
export let single_box: boolean;
export let show_remove_button: boolean;
export let handles_cursor: boolean;
export let gradio: Gradio<{
change: never;
error: string;
edit: never;
drag: never;
upload: never;
clear: never;
select: SelectData;
share: ShareData;
}>;
let dragging: boolean;
let active_source: sources = null;
</script>
<Block
{visible}
variant={"solid"}
border_mode={dragging ? "focus" : "base"}
padding={false}
{elem_id}
{elem_classes}
height={height || undefined}
{width}
allow_overflow={false}
{container}
{scale}
{min_width}
>
<StatusTracker
autoscroll={gradio.autoscroll}
i18n={gradio.i18n}
{...loading_status}
/>
<ImageAnnotator
bind:active_source
bind:value
on:change={() => gradio.dispatch("change")}
selectable={_selectable}
{root}
{sources}
{interactive}
showDownloadButton={show_download_button}
showShareButton={show_share_button}
showClearButton={show_clear_button}
i18n={gradio.i18n}
boxesAlpha={boxes_alpha}
labelList={label_list}
labelColors={label_colors}
boxMinSize={box_min_size}
on:edit={() => gradio.dispatch("edit")}
on:clear={() => {
gradio.dispatch("clear");
}}
on:drag={({ detail }) => (dragging = detail)}
on:upload={() => gradio.dispatch("upload")}
on:select={({ detail }) => gradio.dispatch("select", detail)}
on:share={({ detail }) => gradio.dispatch("share", detail)}
on:error={({ detail }) => {
loading_status = loading_status || {};
loading_status.status = "error";
gradio.dispatch("error", detail);
}}
{label}
{show_label}
max_file_size={gradio.max_file_size}
cli_upload={gradio.client.upload}
stream_handler={gradio.client.stream}
handleSize={handle_size}
boxThickness={box_thickness}
boxSelectedThickness={box_selected_thickness}
disableEditBoxes={disable_edit_boxes}
singleBox={single_box}
showRemoveButton={show_remove_button}
handlesCursor={handles_cursor}
>
{#if active_source === "upload"}
<UploadText i18n={gradio.i18n} type="image" />
{:else if active_source === "clipboard"}
<UploadText i18n={gradio.i18n} type="clipboard" mode="short" />
{:else}
<Empty unpadded_box={true} size="large"><Image /></Empty>
{/if}
</ImageAnnotator>
</Block>
|