@gradio/imageslider 0.3.1-dev.0 → 0.3.1-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/Index.svelte +80 -101
- package/dist/Example.svelte +5 -4
- package/dist/Example.svelte.d.ts +21 -19
- package/dist/Index.svelte +123 -114
- package/dist/Index.svelte.d.ts +3 -151
- package/dist/shared/ClearImage.svelte +6 -4
- package/dist/shared/ClearImage.svelte.d.ts +18 -16
- package/dist/shared/Image.svelte +78 -46
- package/dist/shared/Image.svelte.d.ts +50 -39
- package/dist/shared/ImageEl.svelte +82 -45
- package/dist/shared/ImageEl.svelte.d.ts +32 -30
- package/dist/shared/Slider.svelte +80 -58
- package/dist/shared/Slider.svelte.d.ts +37 -28
- package/dist/shared/SliderPreview.svelte +128 -96
- package/dist/shared/SliderPreview.svelte.d.ts +34 -32
- package/dist/shared/SliderUpload.svelte +20 -13
- package/dist/shared/SliderUpload.svelte.d.ts +58 -68
- package/dist/types.d.ts +29 -0
- package/dist/types.js +1 -0
- package/package.json +9 -9
- package/shared/Image.svelte +3 -0
- package/shared/SliderUpload.svelte +2 -0
- package/types.ts +31 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @gradio/imageslider
|
|
2
2
|
|
|
3
|
+
## 0.3.1-dev.2
|
|
4
|
+
|
|
5
|
+
### Dependency updates
|
|
6
|
+
|
|
7
|
+
- @gradio/atoms@0.19.0-dev.1
|
|
8
|
+
- @gradio/client@2.0.0-dev.2
|
|
9
|
+
- @gradio/statustracker@0.12.0-dev.1
|
|
10
|
+
- @gradio/upload@0.17.2-dev.2
|
|
11
|
+
|
|
12
|
+
## 0.3.1-dev.1
|
|
13
|
+
|
|
14
|
+
### Dependency updates
|
|
15
|
+
|
|
16
|
+
- @gradio/atoms@0.18.2-dev.0
|
|
17
|
+
- @gradio/upload@0.17.2-dev.1
|
|
18
|
+
- @gradio/utils@0.10.3-dev.0
|
|
19
|
+
- @gradio/statustracker@0.12.0-dev.0
|
|
20
|
+
- @gradio/icons@0.15.0-dev.0
|
|
21
|
+
|
|
22
|
+
## 0.3.1-dev.0
|
|
23
|
+
|
|
24
|
+
### Dependency updates
|
|
25
|
+
|
|
26
|
+
- @gradio/client@2.0.0-dev.1
|
|
27
|
+
|
|
3
28
|
## 0.3.1-dev.0
|
|
4
29
|
|
|
5
30
|
### Dependency updates
|
package/Index.svelte
CHANGED
|
@@ -1,83 +1,56 @@
|
|
|
1
1
|
<svelte:options accessors={true} />
|
|
2
2
|
|
|
3
3
|
<script lang="ts">
|
|
4
|
-
import
|
|
4
|
+
import { tick } from "svelte";
|
|
5
|
+
import type { ImageSliderProps, ImageSliderEvents } from "./types";
|
|
6
|
+
import { Gradio } from "@gradio/utils";
|
|
5
7
|
import StaticImage from "./shared/SliderPreview.svelte";
|
|
6
8
|
import ImageUploader from "./shared/SliderUpload.svelte";
|
|
7
|
-
import { afterUpdate } from "svelte";
|
|
8
9
|
|
|
9
10
|
import { Block, Empty, UploadText } from "@gradio/atoms";
|
|
10
11
|
import { Image } from "@gradio/icons";
|
|
11
12
|
import { StatusTracker } from "@gradio/statustracker";
|
|
12
|
-
import { type FileData } from "@gradio/client";
|
|
13
|
-
import type { LoadingStatus } from "@gradio/statustracker";
|
|
14
13
|
|
|
15
14
|
type sources = "upload" | "webcam" | "clipboard" | null;
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
export let elem_id = "";
|
|
19
|
-
export let elem_classes: string[] = [];
|
|
20
|
-
export let visible: boolean | "hidden" = true;
|
|
21
|
-
export let value: [FileData | null, FileData | null] = [null, null];
|
|
22
|
-
let old_value: [FileData | null, FileData | null] = [null, null];
|
|
23
|
-
export let label: string;
|
|
24
|
-
export let show_label: boolean;
|
|
25
|
-
export let buttons: string[] | null = null;
|
|
26
|
-
export let root: string;
|
|
27
|
-
export let height: number | undefined;
|
|
28
|
-
export let width: number | undefined;
|
|
29
|
-
export let container = true;
|
|
30
|
-
export let scale: number | null = null;
|
|
31
|
-
export let min_width: number | undefined = undefined;
|
|
32
|
-
export let loading_status: LoadingStatus;
|
|
33
|
-
export let interactive: boolean;
|
|
34
|
-
export let placeholder: string | undefined = undefined;
|
|
35
|
-
let fullscreen = false;
|
|
36
|
-
export let input_ready: boolean;
|
|
37
|
-
export let slider_position: number;
|
|
38
|
-
export let upload_count = 1;
|
|
39
|
-
export let slider_color = "var(--border-color-primary)";
|
|
40
|
-
export let max_height: number;
|
|
41
|
-
let uploading = false;
|
|
16
|
+
let upload_promise = $state<Promise<any>>();
|
|
42
17
|
|
|
43
|
-
|
|
44
|
-
|
|
18
|
+
class ImageSliderGradio extends Gradio<ImageSliderEvents, ImageSliderProps> {
|
|
19
|
+
async get_data() {
|
|
20
|
+
if (upload_promise) {
|
|
21
|
+
await upload_promise;
|
|
22
|
+
await tick();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const data = await super.get_data();
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const props = $props();
|
|
31
|
+
const gradio = new ImageSliderGradio(props);
|
|
45
32
|
|
|
46
|
-
|
|
33
|
+
let value_is_output = $state(false);
|
|
34
|
+
let old_value = $state(gradio.props.value);
|
|
35
|
+
let fullscreen = $state(false);
|
|
36
|
+
let dragging = $state(false);
|
|
37
|
+
let active_source: sources = $state(null);
|
|
38
|
+
let upload_component: ImageUploader;
|
|
47
39
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
error: string;
|
|
52
|
-
edit: never;
|
|
53
|
-
stream: ValueData;
|
|
54
|
-
drag: never;
|
|
55
|
-
upload: never;
|
|
56
|
-
clear: never;
|
|
57
|
-
select: SelectData;
|
|
58
|
-
share: ShareData;
|
|
59
|
-
clear_status: LoadingStatus;
|
|
60
|
-
close_stream: string;
|
|
61
|
-
}>;
|
|
40
|
+
let normalised_slider_position = $derived(
|
|
41
|
+
Math.max(0, Math.min(100, gradio.props.slider_position)) / 100
|
|
42
|
+
);
|
|
62
43
|
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
old_value = value;
|
|
44
|
+
$effect(() => {
|
|
45
|
+
if (old_value != gradio.props.value) {
|
|
46
|
+
old_value = gradio.props.value;
|
|
66
47
|
gradio.dispatch("change");
|
|
67
48
|
if (!value_is_output) {
|
|
68
49
|
gradio.dispatch("input");
|
|
69
50
|
}
|
|
70
51
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
afterUpdate(() => {
|
|
74
|
-
value_is_output = false;
|
|
75
52
|
});
|
|
76
53
|
|
|
77
|
-
let dragging: boolean;
|
|
78
|
-
let active_source: sources = null;
|
|
79
|
-
let upload_component: ImageUploader;
|
|
80
|
-
|
|
81
54
|
const handle_drag_event = (event: Event): void => {
|
|
82
55
|
const drag_event = event as DragEvent;
|
|
83
56
|
drag_event.preventDefault();
|
|
@@ -90,7 +63,7 @@
|
|
|
90
63
|
};
|
|
91
64
|
|
|
92
65
|
const handle_drop = (event: Event): void => {
|
|
93
|
-
if (interactive) {
|
|
66
|
+
if (gradio.shared.interactive) {
|
|
94
67
|
const drop_event = event as DragEvent;
|
|
95
68
|
drop_event.preventDefault();
|
|
96
69
|
drop_event.stopPropagation();
|
|
@@ -103,26 +76,26 @@
|
|
|
103
76
|
};
|
|
104
77
|
</script>
|
|
105
78
|
|
|
106
|
-
{#if !interactive || (value?.[1] && value?.[0])}
|
|
79
|
+
{#if !gradio.shared.interactive || (gradio.props.value?.[1] && gradio.props.value?.[0])}
|
|
107
80
|
<Block
|
|
108
|
-
{visible}
|
|
81
|
+
visible={gradio.shared.visible}
|
|
109
82
|
variant={"solid"}
|
|
110
83
|
border_mode={dragging ? "focus" : "base"}
|
|
111
84
|
padding={false}
|
|
112
|
-
{elem_id}
|
|
113
|
-
{elem_classes}
|
|
114
|
-
height={height || undefined}
|
|
115
|
-
{width}
|
|
85
|
+
elem_id={gradio.shared.elem_id}
|
|
86
|
+
elem_classes={gradio.shared.elem_classes}
|
|
87
|
+
height={gradio.props.height || undefined}
|
|
88
|
+
width={gradio.props.width}
|
|
116
89
|
allow_overflow={false}
|
|
117
|
-
{container}
|
|
118
|
-
{scale}
|
|
119
|
-
{min_width}
|
|
90
|
+
container={gradio.shared.container}
|
|
91
|
+
scale={gradio.shared.scale}
|
|
92
|
+
min_width={gradio.shared.min_width}
|
|
120
93
|
bind:fullscreen
|
|
121
94
|
>
|
|
122
95
|
<StatusTracker
|
|
123
|
-
autoscroll={gradio.autoscroll}
|
|
96
|
+
autoscroll={gradio.shared.autoscroll}
|
|
124
97
|
i18n={gradio.i18n}
|
|
125
|
-
{...loading_status}
|
|
98
|
+
{...gradio.shared.loading_status}
|
|
126
99
|
/>
|
|
127
100
|
<StaticImage
|
|
128
101
|
on:select={({ detail }) => gradio.dispatch("select", detail)}
|
|
@@ -133,49 +106,51 @@
|
|
|
133
106
|
fullscreen = detail;
|
|
134
107
|
}}
|
|
135
108
|
{fullscreen}
|
|
136
|
-
{interactive}
|
|
137
|
-
bind:value
|
|
138
|
-
{label}
|
|
139
|
-
{show_label}
|
|
140
|
-
show_download_button={buttons
|
|
109
|
+
interactive={gradio.shared.interactive}
|
|
110
|
+
bind:value={gradio.props.value}
|
|
111
|
+
label={gradio.shared.label}
|
|
112
|
+
show_label={gradio.shared.show_label}
|
|
113
|
+
show_download_button={gradio.props.buttons.includes("download")}
|
|
141
114
|
i18n={gradio.i18n}
|
|
142
|
-
show_fullscreen_button={buttons
|
|
115
|
+
show_fullscreen_button={gradio.props.buttons.includes("fullscreen")}
|
|
143
116
|
position={normalised_slider_position}
|
|
144
|
-
{slider_color}
|
|
145
|
-
{max_height}
|
|
117
|
+
slider_color={gradio.props.slider_color}
|
|
118
|
+
max_height={gradio.props.max_height}
|
|
146
119
|
/>
|
|
147
120
|
</Block>
|
|
148
121
|
{:else}
|
|
149
122
|
<Block
|
|
150
|
-
{visible}
|
|
151
|
-
variant={value === null ? "dashed" : "solid"}
|
|
123
|
+
visible={gradio.shared.visible}
|
|
124
|
+
variant={gradio.props.value === null ? "dashed" : "solid"}
|
|
152
125
|
border_mode={dragging ? "focus" : "base"}
|
|
153
126
|
padding={false}
|
|
154
|
-
{elem_id}
|
|
155
|
-
{elem_classes}
|
|
156
|
-
height={height || undefined}
|
|
157
|
-
{width}
|
|
127
|
+
elem_id={gradio.shared.elem_id}
|
|
128
|
+
elem_classes={gradio.shared.elem_classes}
|
|
129
|
+
height={gradio.props.height || undefined}
|
|
130
|
+
width={gradio.props.width}
|
|
158
131
|
allow_overflow={false}
|
|
159
|
-
{container}
|
|
160
|
-
{scale}
|
|
161
|
-
{min_width}
|
|
132
|
+
container={gradio.shared.container}
|
|
133
|
+
scale={gradio.shared.scale}
|
|
134
|
+
min_width={gradio.shared.min_width}
|
|
162
135
|
on:dragenter={handle_drag_event}
|
|
163
136
|
on:dragleave={handle_drag_event}
|
|
164
137
|
on:dragover={handle_drag_event}
|
|
165
138
|
on:drop={handle_drop}
|
|
166
139
|
>
|
|
167
140
|
<StatusTracker
|
|
168
|
-
autoscroll={gradio.autoscroll}
|
|
141
|
+
autoscroll={gradio.shared.autoscroll}
|
|
169
142
|
i18n={gradio.i18n}
|
|
170
|
-
{...loading_status}
|
|
171
|
-
on:clear_status={() =>
|
|
143
|
+
{...gradio.shared.loading_status}
|
|
144
|
+
on:clear_status={() =>
|
|
145
|
+
gradio.dispatch("clear_status", gradio.shared.loading_status)}
|
|
172
146
|
/>
|
|
173
147
|
|
|
174
148
|
<ImageUploader
|
|
149
|
+
bind:upload_promise
|
|
175
150
|
bind:this={upload_component}
|
|
176
|
-
bind:value
|
|
151
|
+
bind:value={gradio.props.value}
|
|
177
152
|
bind:dragging
|
|
178
|
-
{root}
|
|
153
|
+
root={gradio.shared.root}
|
|
179
154
|
on:edit={() => gradio.dispatch("edit")}
|
|
180
155
|
on:clear={() => {
|
|
181
156
|
gradio.dispatch("clear");
|
|
@@ -183,24 +158,28 @@
|
|
|
183
158
|
on:drag={({ detail }) => (dragging = detail)}
|
|
184
159
|
on:upload={() => gradio.dispatch("upload")}
|
|
185
160
|
on:error={({ detail }) => {
|
|
186
|
-
|
|
187
|
-
|
|
161
|
+
if (gradio.shared.loading_status)
|
|
162
|
+
gradio.shared.loading_status.status = "error";
|
|
188
163
|
gradio.dispatch("error", detail);
|
|
189
164
|
}}
|
|
190
165
|
on:close_stream={() => {
|
|
191
166
|
gradio.dispatch("close_stream", "stream");
|
|
192
167
|
}}
|
|
193
|
-
{label}
|
|
194
|
-
{show_label}
|
|
195
|
-
{upload_count}
|
|
196
|
-
max_file_size={gradio.max_file_size}
|
|
168
|
+
label={gradio.shared.label}
|
|
169
|
+
show_label={gradio.shared.show_label}
|
|
170
|
+
upload_count={gradio.props.upload_count}
|
|
171
|
+
max_file_size={gradio.shared.max_file_size}
|
|
197
172
|
i18n={gradio.i18n}
|
|
198
|
-
upload={(...args) => gradio.client.upload(...args)}
|
|
199
|
-
stream_handler={gradio.client?.stream}
|
|
200
|
-
{max_height}
|
|
173
|
+
upload={(...args) => gradio.shared.client.upload(...args)}
|
|
174
|
+
stream_handler={gradio.shared.client?.stream}
|
|
175
|
+
max_height={gradio.props.max_height}
|
|
201
176
|
>
|
|
202
177
|
{#if active_source === "upload" || !active_source}
|
|
203
|
-
<UploadText
|
|
178
|
+
<UploadText
|
|
179
|
+
i18n={gradio.i18n}
|
|
180
|
+
type="image"
|
|
181
|
+
placeholder={gradio.props.placeholder}
|
|
182
|
+
/>
|
|
204
183
|
{:else if active_source === "clipboard"}
|
|
205
184
|
<UploadText i18n={gradio.i18n} type="clipboard" mode="short" />
|
|
206
185
|
{:else}
|
package/dist/Example.svelte
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
export let
|
|
3
|
-
export let
|
|
4
|
-
export let
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export let value: [string, string];
|
|
3
|
+
export let samples_dir: string;
|
|
4
|
+
export let type: "gallery" | "table";
|
|
5
|
+
export let selected = false;
|
|
5
6
|
</script>
|
|
6
7
|
|
|
7
8
|
<!-- TODO: fix -->
|
package/dist/Example.svelte.d.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
8
11
|
};
|
|
9
|
-
|
|
10
|
-
[evt: string]: CustomEvent<any>;
|
|
11
|
-
};
|
|
12
|
-
slots: {};
|
|
13
|
-
exports?: {} | undefined;
|
|
14
|
-
bindings?: string | undefined;
|
|
15
|
-
};
|
|
16
|
-
export type ExampleProps = typeof __propDef.props;
|
|
17
|
-
export type ExampleEvents = typeof __propDef.events;
|
|
18
|
-
export type ExampleSlots = typeof __propDef.slots;
|
|
19
|
-
export default class Example extends SvelteComponent<ExampleProps, ExampleEvents, ExampleSlots> {
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
20
13
|
}
|
|
21
|
-
|
|
14
|
+
declare const Example: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
value: [string, string];
|
|
16
|
+
samples_dir: string;
|
|
17
|
+
type: "gallery" | "table";
|
|
18
|
+
selected?: boolean;
|
|
19
|
+
}, {
|
|
20
|
+
[evt: string]: CustomEvent<any>;
|
|
21
|
+
}, {}, {}, string>;
|
|
22
|
+
type Example = InstanceType<typeof Example>;
|
|
23
|
+
export default Example;
|
package/dist/Index.svelte
CHANGED
|
@@ -1,98 +1,101 @@
|
|
|
1
1
|
<svelte:options accessors={true} />
|
|
2
2
|
|
|
3
|
-
<script
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
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
|
-
let
|
|
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
|
-
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import { tick } from "svelte";
|
|
5
|
+
import type { ImageSliderProps, ImageSliderEvents } from "./types";
|
|
6
|
+
import { Gradio } from "@gradio/utils";
|
|
7
|
+
import StaticImage from "./shared/SliderPreview.svelte";
|
|
8
|
+
import ImageUploader from "./shared/SliderUpload.svelte";
|
|
9
|
+
|
|
10
|
+
import { Block, Empty, UploadText } from "@gradio/atoms";
|
|
11
|
+
import { Image } from "@gradio/icons";
|
|
12
|
+
import { StatusTracker } from "@gradio/statustracker";
|
|
13
|
+
|
|
14
|
+
type sources = "upload" | "webcam" | "clipboard" | null;
|
|
15
|
+
|
|
16
|
+
let upload_promise = $state<Promise<any>>();
|
|
17
|
+
|
|
18
|
+
class ImageSliderGradio extends Gradio<ImageSliderEvents, ImageSliderProps> {
|
|
19
|
+
async get_data() {
|
|
20
|
+
if (upload_promise) {
|
|
21
|
+
await upload_promise;
|
|
22
|
+
await tick();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const data = await super.get_data();
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const props = $props();
|
|
31
|
+
const gradio = new ImageSliderGradio(props);
|
|
32
|
+
|
|
33
|
+
let value_is_output = $state(false);
|
|
34
|
+
let old_value = $state(gradio.props.value);
|
|
35
|
+
let fullscreen = $state(false);
|
|
36
|
+
let dragging = $state(false);
|
|
37
|
+
let active_source: sources = $state(null);
|
|
38
|
+
let upload_component: ImageUploader;
|
|
39
|
+
|
|
40
|
+
let normalised_slider_position = $derived(
|
|
41
|
+
Math.max(0, Math.min(100, gradio.props.slider_position)) / 100
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
$effect(() => {
|
|
45
|
+
if (old_value != gradio.props.value) {
|
|
46
|
+
old_value = gradio.props.value;
|
|
47
|
+
gradio.dispatch("change");
|
|
48
|
+
if (!value_is_output) {
|
|
49
|
+
gradio.dispatch("input");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const handle_drag_event = (event: Event): void => {
|
|
55
|
+
const drag_event = event as DragEvent;
|
|
56
|
+
drag_event.preventDefault();
|
|
57
|
+
drag_event.stopPropagation();
|
|
58
|
+
if (drag_event.type === "dragenter" || drag_event.type === "dragover") {
|
|
59
|
+
dragging = true;
|
|
60
|
+
} else if (drag_event.type === "dragleave") {
|
|
61
|
+
dragging = false;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const handle_drop = (event: Event): void => {
|
|
66
|
+
if (gradio.shared.interactive) {
|
|
67
|
+
const drop_event = event as DragEvent;
|
|
68
|
+
drop_event.preventDefault();
|
|
69
|
+
drop_event.stopPropagation();
|
|
70
|
+
dragging = false;
|
|
71
|
+
|
|
72
|
+
if (upload_component) {
|
|
73
|
+
upload_component.loadFilesFromDrop(drop_event);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
74
77
|
</script>
|
|
75
78
|
|
|
76
|
-
{#if !interactive || (value?.[1] && value?.[0])}
|
|
79
|
+
{#if !gradio.shared.interactive || (gradio.props.value?.[1] && gradio.props.value?.[0])}
|
|
77
80
|
<Block
|
|
78
|
-
{visible}
|
|
81
|
+
visible={gradio.shared.visible}
|
|
79
82
|
variant={"solid"}
|
|
80
83
|
border_mode={dragging ? "focus" : "base"}
|
|
81
84
|
padding={false}
|
|
82
|
-
{elem_id}
|
|
83
|
-
{elem_classes}
|
|
84
|
-
height={height || undefined}
|
|
85
|
-
{width}
|
|
85
|
+
elem_id={gradio.shared.elem_id}
|
|
86
|
+
elem_classes={gradio.shared.elem_classes}
|
|
87
|
+
height={gradio.props.height || undefined}
|
|
88
|
+
width={gradio.props.width}
|
|
86
89
|
allow_overflow={false}
|
|
87
|
-
{container}
|
|
88
|
-
{scale}
|
|
89
|
-
{min_width}
|
|
90
|
+
container={gradio.shared.container}
|
|
91
|
+
scale={gradio.shared.scale}
|
|
92
|
+
min_width={gradio.shared.min_width}
|
|
90
93
|
bind:fullscreen
|
|
91
94
|
>
|
|
92
95
|
<StatusTracker
|
|
93
|
-
autoscroll={gradio.autoscroll}
|
|
96
|
+
autoscroll={gradio.shared.autoscroll}
|
|
94
97
|
i18n={gradio.i18n}
|
|
95
|
-
{...loading_status}
|
|
98
|
+
{...gradio.shared.loading_status}
|
|
96
99
|
/>
|
|
97
100
|
<StaticImage
|
|
98
101
|
on:select={({ detail }) => gradio.dispatch("select", detail)}
|
|
@@ -103,49 +106,51 @@ const handle_drop = (event) => {
|
|
|
103
106
|
fullscreen = detail;
|
|
104
107
|
}}
|
|
105
108
|
{fullscreen}
|
|
106
|
-
{interactive}
|
|
107
|
-
bind:value
|
|
108
|
-
{label}
|
|
109
|
-
{show_label}
|
|
110
|
-
show_download_button={buttons
|
|
109
|
+
interactive={gradio.shared.interactive}
|
|
110
|
+
bind:value={gradio.props.value}
|
|
111
|
+
label={gradio.shared.label}
|
|
112
|
+
show_label={gradio.shared.show_label}
|
|
113
|
+
show_download_button={gradio.props.buttons.includes("download")}
|
|
111
114
|
i18n={gradio.i18n}
|
|
112
|
-
show_fullscreen_button={buttons
|
|
115
|
+
show_fullscreen_button={gradio.props.buttons.includes("fullscreen")}
|
|
113
116
|
position={normalised_slider_position}
|
|
114
|
-
{slider_color}
|
|
115
|
-
{max_height}
|
|
117
|
+
slider_color={gradio.props.slider_color}
|
|
118
|
+
max_height={gradio.props.max_height}
|
|
116
119
|
/>
|
|
117
120
|
</Block>
|
|
118
121
|
{:else}
|
|
119
122
|
<Block
|
|
120
|
-
{visible}
|
|
121
|
-
variant={value === null ? "dashed" : "solid"}
|
|
123
|
+
visible={gradio.shared.visible}
|
|
124
|
+
variant={gradio.props.value === null ? "dashed" : "solid"}
|
|
122
125
|
border_mode={dragging ? "focus" : "base"}
|
|
123
126
|
padding={false}
|
|
124
|
-
{elem_id}
|
|
125
|
-
{elem_classes}
|
|
126
|
-
height={height || undefined}
|
|
127
|
-
{width}
|
|
127
|
+
elem_id={gradio.shared.elem_id}
|
|
128
|
+
elem_classes={gradio.shared.elem_classes}
|
|
129
|
+
height={gradio.props.height || undefined}
|
|
130
|
+
width={gradio.props.width}
|
|
128
131
|
allow_overflow={false}
|
|
129
|
-
{container}
|
|
130
|
-
{scale}
|
|
131
|
-
{min_width}
|
|
132
|
+
container={gradio.shared.container}
|
|
133
|
+
scale={gradio.shared.scale}
|
|
134
|
+
min_width={gradio.shared.min_width}
|
|
132
135
|
on:dragenter={handle_drag_event}
|
|
133
136
|
on:dragleave={handle_drag_event}
|
|
134
137
|
on:dragover={handle_drag_event}
|
|
135
138
|
on:drop={handle_drop}
|
|
136
139
|
>
|
|
137
140
|
<StatusTracker
|
|
138
|
-
autoscroll={gradio.autoscroll}
|
|
141
|
+
autoscroll={gradio.shared.autoscroll}
|
|
139
142
|
i18n={gradio.i18n}
|
|
140
|
-
{...loading_status}
|
|
141
|
-
on:clear_status={() =>
|
|
143
|
+
{...gradio.shared.loading_status}
|
|
144
|
+
on:clear_status={() =>
|
|
145
|
+
gradio.dispatch("clear_status", gradio.shared.loading_status)}
|
|
142
146
|
/>
|
|
143
147
|
|
|
144
148
|
<ImageUploader
|
|
149
|
+
bind:upload_promise
|
|
145
150
|
bind:this={upload_component}
|
|
146
|
-
bind:value
|
|
151
|
+
bind:value={gradio.props.value}
|
|
147
152
|
bind:dragging
|
|
148
|
-
{root}
|
|
153
|
+
root={gradio.shared.root}
|
|
149
154
|
on:edit={() => gradio.dispatch("edit")}
|
|
150
155
|
on:clear={() => {
|
|
151
156
|
gradio.dispatch("clear");
|
|
@@ -153,24 +158,28 @@ const handle_drop = (event) => {
|
|
|
153
158
|
on:drag={({ detail }) => (dragging = detail)}
|
|
154
159
|
on:upload={() => gradio.dispatch("upload")}
|
|
155
160
|
on:error={({ detail }) => {
|
|
156
|
-
|
|
157
|
-
|
|
161
|
+
if (gradio.shared.loading_status)
|
|
162
|
+
gradio.shared.loading_status.status = "error";
|
|
158
163
|
gradio.dispatch("error", detail);
|
|
159
164
|
}}
|
|
160
165
|
on:close_stream={() => {
|
|
161
166
|
gradio.dispatch("close_stream", "stream");
|
|
162
167
|
}}
|
|
163
|
-
{label}
|
|
164
|
-
{show_label}
|
|
165
|
-
{upload_count}
|
|
166
|
-
max_file_size={gradio.max_file_size}
|
|
168
|
+
label={gradio.shared.label}
|
|
169
|
+
show_label={gradio.shared.show_label}
|
|
170
|
+
upload_count={gradio.props.upload_count}
|
|
171
|
+
max_file_size={gradio.shared.max_file_size}
|
|
167
172
|
i18n={gradio.i18n}
|
|
168
|
-
upload={(...args) => gradio.client.upload(...args)}
|
|
169
|
-
stream_handler={gradio.client?.stream}
|
|
170
|
-
{max_height}
|
|
173
|
+
upload={(...args) => gradio.shared.client.upload(...args)}
|
|
174
|
+
stream_handler={gradio.shared.client?.stream}
|
|
175
|
+
max_height={gradio.props.max_height}
|
|
171
176
|
>
|
|
172
177
|
{#if active_source === "upload" || !active_source}
|
|
173
|
-
<UploadText
|
|
178
|
+
<UploadText
|
|
179
|
+
i18n={gradio.i18n}
|
|
180
|
+
type="image"
|
|
181
|
+
placeholder={gradio.props.placeholder}
|
|
182
|
+
/>
|
|
174
183
|
{:else if active_source === "clipboard"}
|
|
175
184
|
<UploadText i18n={gradio.i18n} type="clipboard" mode="short" />
|
|
176
185
|
{:else}
|