@gradio/image 0.23.2-dev.0 → 0.24.0-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/dist/Index.svelte CHANGED
@@ -1,119 +1,107 @@
1
1
  <svelte:options accessors={true} />
2
2
 
3
- <script context="module">export { default as Webcam } from "./shared/Webcam.svelte";
4
- export { default as BaseImageUploader } from "./shared/ImageUploader.svelte";
5
- export { default as BaseStaticImage } from "./shared/ImagePreview.svelte";
6
- export { default as BaseExample } from "./Example.svelte";
7
- export { default as BaseImage } from "./shared/Image.svelte";
3
+ <script context="module" lang="ts">
4
+ export { default as Webcam } from "./shared/Webcam.svelte";
5
+ export { default as BaseImageUploader } from "./shared/ImageUploader.svelte";
6
+ export { default as BaseStaticImage } from "./shared/ImagePreview.svelte";
7
+ export { default as BaseExample } from "./Example.svelte";
8
+ export { default as BaseImage } from "./shared/Image.svelte";
8
9
  </script>
9
10
 
10
- <script>import StaticImage from "./shared/ImagePreview.svelte";
11
- import ImageUploader from "./shared/ImageUploader.svelte";
12
- import { afterUpdate } from "svelte";
13
- import { Block, Empty, UploadText } from "@gradio/atoms";
14
- import { Image } from "@gradio/icons";
15
- import { StatusTracker } from "@gradio/statustracker";
16
- import { upload } from "@gradio/client";
17
- let stream_state = "closed";
18
- let _modify_stream = () => {
19
- };
20
- export function modify_stream_state(state) {
21
- stream_state = state;
22
- _modify_stream(state);
23
- }
24
- export const get_stream_state = () => stream_state;
25
- export let set_time_limit;
26
- export let value_is_output = false;
27
- export let elem_id = "";
28
- export let elem_classes = [];
29
- export let visible = true;
30
- export let value = null;
31
- let old_value = null;
32
- export let label;
33
- export let show_label;
34
- export let buttons = null;
35
- export let root;
36
- export let height;
37
- export let width;
38
- export let stream_every;
39
- export let _selectable = false;
40
- export let container = true;
41
- export let scale = null;
42
- export let min_width = void 0;
43
- export let loading_status;
44
- export let sources = [
45
- "upload",
46
- "clipboard",
47
- "webcam"
48
- ];
49
- export let interactive;
50
- export let streaming;
51
- export let pending;
52
- export let placeholder = void 0;
53
- export let input_ready;
54
- export let webcam_options;
55
- let fullscreen = false;
56
- let uploading = false;
57
- $: input_ready = !uploading;
58
- export let gradio;
59
- $: {
60
- if (JSON.stringify(value) !== JSON.stringify(old_value)) {
61
- old_value = value;
62
- gradio.dispatch("change");
63
- if (!value_is_output) {
64
- gradio.dispatch("input");
65
- }
66
- }
67
- }
68
- afterUpdate(() => {
69
- value_is_output = false;
70
- });
71
- let dragging;
72
- let active_source = null;
73
- let upload_component;
74
- const handle_drag_event = (event) => {
75
- const drag_event = event;
76
- drag_event.preventDefault();
77
- drag_event.stopPropagation();
78
- if (drag_event.type === "dragenter" || drag_event.type === "dragover") {
79
- dragging = true;
80
- } else if (drag_event.type === "dragleave") {
81
- dragging = false;
82
- }
83
- };
84
- const handle_drop = (event) => {
85
- if (interactive) {
86
- const drop_event = event;
87
- drop_event.preventDefault();
88
- drop_event.stopPropagation();
89
- dragging = false;
90
- if (upload_component) {
91
- upload_component.loadFilesFromDrop(drop_event);
92
- }
93
- }
94
- };
11
+ <script lang="ts">
12
+ import { tick } from "svelte";
13
+ import { Gradio } from "@gradio/utils";
14
+ import StaticImage from "./shared/ImagePreview.svelte";
15
+ import ImageUploader from "./shared/ImageUploader.svelte";
16
+ import { Block, Empty, UploadText } from "@gradio/atoms";
17
+ import { Image } from "@gradio/icons";
18
+ import { StatusTracker } from "@gradio/statustracker";
19
+ import type { ImageProps, ImageEvents } from "./shared/types";
20
+
21
+ let stream_data = { value: null };
22
+ let upload_promise = $state<Promise<any>>();
23
+ class ImageGradio extends Gradio<ImageEvents, ImageProps> {
24
+ async get_data() {
25
+ if (upload_promise) {
26
+ await upload_promise;
27
+ await tick();
28
+ }
29
+
30
+ const data = await super.get_data();
31
+ if (props.props.streaming) {
32
+ data.value = stream_data.value;
33
+ }
34
+
35
+ return data;
36
+ }
37
+ }
38
+
39
+ const props = $props();
40
+ const gradio = new ImageGradio(props);
41
+
42
+ let fullscreen = $state(false);
43
+ let dragging = $state(false);
44
+ let active_source = $derived.by(() =>
45
+ gradio.props.sources ? gradio.props.sources[0] : null
46
+ );
47
+
48
+ let upload_component: ImageUploader;
49
+ const handle_drag_event = (event: Event): void => {
50
+ const drag_event = event as DragEvent;
51
+ drag_event.preventDefault();
52
+ drag_event.stopPropagation();
53
+ if (drag_event.type === "dragenter" || drag_event.type === "dragover") {
54
+ dragging = true;
55
+ } else if (drag_event.type === "dragleave") {
56
+ dragging = false;
57
+ }
58
+ };
59
+
60
+ const handle_drop = (event: Event): void => {
61
+ if (gradio.shared.interactive) {
62
+ const drop_event = event as DragEvent;
63
+ drop_event.preventDefault();
64
+ drop_event.stopPropagation();
65
+ dragging = false;
66
+
67
+ if (upload_component) {
68
+ upload_component.loadFilesFromDrop(drop_event);
69
+ }
70
+ }
71
+ };
72
+
73
+ let old_value = $state(gradio.props.value);
74
+
75
+ $effect(() => {
76
+ if (old_value != gradio.props.value) {
77
+ old_value = gradio.props.value;
78
+ gradio.dispatch("change");
79
+ }
80
+ });
81
+
82
+ let status = $derived(gradio?.shared?.loading_status.stream_state);
95
83
  </script>
96
84
 
97
- {#if !interactive}
85
+ {#if !gradio.shared.interactive}
98
86
  <Block
99
- {visible}
87
+ visible={gradio.shared.visible}
100
88
  variant={"solid"}
101
89
  border_mode={dragging ? "focus" : "base"}
102
90
  padding={false}
103
- {elem_id}
104
- {elem_classes}
105
- height={height || undefined}
106
- {width}
91
+ elem_id={gradio.shared.elem_id}
92
+ elem_classes={gradio.shared.elem_classes}
93
+ height={gradio.props.height || undefined}
94
+ width={gradio.props.width}
107
95
  allow_overflow={false}
108
- {container}
109
- {scale}
110
- {min_width}
96
+ container={gradio.shared.container}
97
+ scale{gradio.shared.scale}
98
+ min_width={gradio.shared.min_width}
111
99
  bind:fullscreen
112
100
  >
113
101
  <StatusTracker
114
- autoscroll={gradio.autoscroll}
102
+ autoscroll={gradio.shared.autoscroll}
115
103
  i18n={gradio.i18n}
116
- {...loading_status}
104
+ {...gradio.shared.loading_status}
117
105
  />
118
106
  <StaticImage
119
107
  on:select={({ detail }) => gradio.dispatch("select", detail)}
@@ -123,90 +111,103 @@ const handle_drop = (event) => {
123
111
  fullscreen = detail;
124
112
  }}
125
113
  {fullscreen}
126
- {value}
127
- {label}
128
- {show_label}
129
- {buttons}
130
- selectable={_selectable}
114
+ value={gradio.props.value}
115
+ label={gradio.shared.label}
116
+ show_label={gradio.shared.show_label}
117
+ selectable={gradio.props._selectable}
131
118
  i18n={gradio.i18n}
119
+ buttons={gradio.props.buttons}
132
120
  />
133
121
  </Block>
134
122
  {:else}
135
123
  <Block
136
- {visible}
137
- variant={value === null ? "dashed" : "solid"}
124
+ visible={gradio.shared.visible}
125
+ variant={gradio.props.value === null ? "dashed" : "solid"}
138
126
  border_mode={dragging ? "focus" : "base"}
139
127
  padding={false}
140
- {elem_id}
141
- {elem_classes}
142
- height={height || undefined}
143
- {width}
128
+ elem_id={gradio.shared.elem_id}
129
+ elem_classes={gradio.shared.elem_classes}
130
+ height={gradio.props.height || undefined}
131
+ width={gradio.props.width}
144
132
  allow_overflow={false}
145
- {container}
146
- {scale}
147
- {min_width}
133
+ container={gradio.shared.container}
134
+ scale={gradio.shared.scale}
135
+ min_width={gradio.shared.min_width}
148
136
  bind:fullscreen
149
137
  on:dragenter={handle_drag_event}
150
138
  on:dragleave={handle_drag_event}
151
139
  on:dragover={handle_drag_event}
152
140
  on:drop={handle_drop}
153
141
  >
154
- <StatusTracker
155
- autoscroll={gradio.autoscroll}
156
- i18n={gradio.i18n}
157
- {...loading_status}
158
- on:clear_status={() => gradio.dispatch("clear_status", loading_status)}
159
- />
160
-
142
+ {#if gradio.shared.loading_status.type === "output"}
143
+ <StatusTracker
144
+ autoscroll={gradio.shared.autoscroll}
145
+ i18n={gradio.i18n}
146
+ {...gradio.shared.loading_status}
147
+ on:clear_status={() =>
148
+ gradio.dispatch("clear_status", gradio.shared.loading_status)}
149
+ />
150
+ {/if}
161
151
  <ImageUploader
152
+ bind:upload_promise
162
153
  bind:this={upload_component}
163
- bind:uploading
164
154
  bind:active_source
165
- bind:value
155
+ bind:value={gradio.props.value}
166
156
  bind:dragging
167
- selectable={_selectable}
168
- {root}
169
- {sources}
157
+ selectable={gradio.props._selectable}
158
+ root={gradio.shared.root}
159
+ sources={gradio.props.sources}
170
160
  {fullscreen}
171
- show_fullscreen_button={buttons === null
161
+ show_fullscreen_button={gradio.props.buttons === null
172
162
  ? true
173
- : buttons.includes("fullscreen")}
163
+ : gradio.props.buttons.includes("fullscreen")}
174
164
  on:edit={() => gradio.dispatch("edit")}
175
165
  on:clear={() => {
176
166
  fullscreen = false;
177
167
  gradio.dispatch("clear");
168
+ gradio.dispatch("input");
169
+ }}
170
+ on:stream={({ detail }) => {
171
+ stream_data = detail;
172
+ gradio.dispatch("stream", detail);
178
173
  }}
179
- on:stream={({ detail }) => gradio.dispatch("stream", detail)}
180
174
  on:drag={({ detail }) => (dragging = detail)}
181
- on:upload={() => gradio.dispatch("upload")}
175
+ on:upload={() => {
176
+ gradio.dispatch("upload");
177
+ gradio.dispatch("input");
178
+ }}
182
179
  on:select={({ detail }) => gradio.dispatch("select", detail)}
183
180
  on:share={({ detail }) => gradio.dispatch("share", detail)}
184
181
  on:error={({ detail }) => {
185
- loading_status = loading_status || {};
186
- loading_status.status = "error";
182
+ gradio.shared.loading_status.status = "error";
187
183
  gradio.dispatch("error", detail);
188
184
  }}
189
185
  on:close_stream={() => {
190
- gradio.dispatch("close_stream", "stream");
186
+ gradio.dispatch("close_stream");
191
187
  }}
192
188
  on:fullscreen={({ detail }) => {
193
189
  fullscreen = detail;
194
190
  }}
195
- {label}
196
- {show_label}
197
- {pending}
198
- {streaming}
199
- {webcam_options}
200
- {stream_every}
201
- bind:modify_stream={_modify_stream}
202
- bind:set_time_limit
203
- max_file_size={gradio.max_file_size}
191
+ label={gradio.shared.label}
192
+ show_label={gradio.shared.show_label}
193
+ pending={gradio.shared.loading_status?.status === "pending" ||
194
+ gradio.shared.loading_status?.status === "streaming"}
195
+ streaming={gradio.props.streaming}
196
+ webcam_options={gradio.props.webcam_options}
197
+ stream_every={gradio.props.stream_every}
198
+ time_limit={gradio.shared.loading_status?.time_limit}
199
+ max_file_size={gradio.shared.max_file_size}
204
200
  i18n={gradio.i18n}
205
- upload={(...args) => gradio.client.upload(...args)}
206
- stream_handler={gradio.client?.stream}
201
+ upload={(...args) => gradio.shared.client.upload(...args)}
202
+ stream_handler={gradio.shared.client?.stream}
203
+ stream_state={status}
207
204
  >
208
205
  {#if active_source === "upload" || !active_source}
209
- <UploadText i18n={gradio.i18n} type="image" {placeholder} />
206
+ <UploadText
207
+ i18n={gradio.i18n}
208
+ type="image"
209
+ placeholder={gradio.props.placeholder}
210
+ />
210
211
  {:else if active_source === "clipboard"}
211
212
  <UploadText i18n={gradio.i18n} type="clipboard" mode="short" />
212
213
  {:else}
@@ -1,175 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
1
  export { default as Webcam } from "./shared/Webcam.svelte";
3
2
  export { default as BaseImageUploader } from "./shared/ImageUploader.svelte";
4
3
  export { default as BaseStaticImage } from "./shared/ImagePreview.svelte";
5
4
  export { default as BaseExample } from "./Example.svelte";
6
5
  export { default as BaseImage } from "./shared/Image.svelte";
7
- import type { Gradio, SelectData, ValueData } from "@gradio/utils";
8
- import type { WebcamOptions } from "./shared/types";
9
- import { type FileData } from "@gradio/client";
10
- import type { LoadingStatus } from "@gradio/statustracker";
11
- declare const __propDef: {
12
- props: {
13
- modify_stream_state?: (state: "open" | "closed" | "waiting") => void;
14
- get_stream_state?: () => void;
15
- set_time_limit: (arg0: number) => void;
16
- value_is_output?: boolean;
17
- elem_id?: string;
18
- elem_classes?: string[];
19
- visible?: boolean | "hidden";
20
- value?: null | FileData;
21
- label: string;
22
- show_label: boolean;
23
- buttons?: string[] | null;
24
- root: string;
25
- height: number | undefined;
26
- width: number | undefined;
27
- stream_every: number;
28
- _selectable?: boolean;
29
- container?: boolean;
30
- scale?: number | null;
31
- min_width?: number | undefined;
32
- loading_status: LoadingStatus;
33
- sources?: ("clipboard" | "webcam" | "upload")[];
34
- interactive: boolean;
35
- streaming: boolean;
36
- pending: boolean;
37
- placeholder?: string | undefined;
38
- input_ready: boolean;
39
- webcam_options: WebcamOptions;
40
- gradio: Gradio<{
41
- input: never;
42
- change: never;
43
- error: string;
44
- edit: never;
45
- stream: ValueData;
46
- drag: never;
47
- upload: never;
48
- clear: never;
49
- select: SelectData;
50
- share: ShareData;
51
- clear_status: LoadingStatus;
52
- close_stream: string;
53
- }>;
54
- };
55
- events: {
56
- [evt: string]: CustomEvent<any>;
57
- };
58
- slots: {};
59
- exports?: {} | undefined;
60
- bindings?: string | undefined;
61
- };
62
- export type IndexProps = typeof __propDef.props;
63
- export type IndexEvents = typeof __propDef.events;
64
- export type IndexSlots = typeof __propDef.slots;
65
- export default class Index extends SvelteComponent<IndexProps, IndexEvents, IndexSlots> {
66
- get modify_stream_state(): (state: "open" | "closed" | "waiting") => void;
67
- get get_stream_state(): () => void;
68
- get undefined(): any;
69
- /**accessor*/
70
- set undefined(_: any);
71
- get set_time_limit(): (arg0: number) => void;
72
- /**accessor*/
73
- set set_time_limit(_: (arg0: number) => void);
74
- get value_is_output(): boolean | undefined;
75
- /**accessor*/
76
- set value_is_output(_: boolean | undefined);
77
- get elem_id(): string | undefined;
78
- /**accessor*/
79
- set elem_id(_: string | undefined);
80
- get elem_classes(): string[] | undefined;
81
- /**accessor*/
82
- set elem_classes(_: string[] | undefined);
83
- get visible(): boolean | "hidden" | undefined;
84
- /**accessor*/
85
- set visible(_: boolean | "hidden" | undefined);
86
- get value(): any;
87
- /**accessor*/
88
- set value(_: any);
89
- get label(): string;
90
- /**accessor*/
91
- set label(_: string);
92
- get show_label(): boolean;
93
- /**accessor*/
94
- set show_label(_: boolean);
95
- get buttons(): string[] | null | undefined;
96
- /**accessor*/
97
- set buttons(_: string[] | null | undefined);
98
- get root(): string;
99
- /**accessor*/
100
- set root(_: string);
101
- get height(): number | undefined;
102
- /**accessor*/
103
- set height(_: number | undefined);
104
- get width(): number | undefined;
105
- /**accessor*/
106
- set width(_: number | undefined);
107
- get stream_every(): number;
108
- /**accessor*/
109
- set stream_every(_: number);
110
- get _selectable(): boolean | undefined;
111
- /**accessor*/
112
- set _selectable(_: boolean | undefined);
113
- get container(): boolean | undefined;
114
- /**accessor*/
115
- set container(_: boolean | undefined);
116
- get scale(): number | null | undefined;
117
- /**accessor*/
118
- set scale(_: number | null | undefined);
119
- get min_width(): number | undefined;
120
- /**accessor*/
121
- set min_width(_: number | undefined);
122
- get loading_status(): LoadingStatus;
123
- /**accessor*/
124
- set loading_status(_: LoadingStatus);
125
- get sources(): ("clipboard" | "upload" | "webcam")[] | undefined;
126
- /**accessor*/
127
- set sources(_: ("clipboard" | "upload" | "webcam")[] | undefined);
128
- get interactive(): boolean;
129
- /**accessor*/
130
- set interactive(_: boolean);
131
- get streaming(): boolean;
132
- /**accessor*/
133
- set streaming(_: boolean);
134
- get pending(): boolean;
135
- /**accessor*/
136
- set pending(_: boolean);
137
- get placeholder(): string | undefined;
138
- /**accessor*/
139
- set placeholder(_: string | undefined);
140
- get input_ready(): boolean;
141
- /**accessor*/
142
- set input_ready(_: boolean);
143
- get webcam_options(): WebcamOptions;
144
- /**accessor*/
145
- set webcam_options(_: WebcamOptions);
146
- get gradio(): Gradio<{
147
- input: never;
148
- change: never;
149
- error: string;
150
- edit: never;
151
- stream: ValueData;
152
- drag: never;
153
- upload: never;
154
- clear: never;
155
- select: SelectData;
156
- share: ShareData;
157
- clear_status: LoadingStatus;
158
- close_stream: string;
159
- }>;
160
- /**accessor*/
161
- set gradio(_: Gradio<{
162
- input: never;
163
- change: never;
164
- error: string;
165
- edit: never;
166
- stream: ValueData;
167
- drag: never;
168
- upload: never;
169
- clear: never;
170
- select: SelectData;
171
- share: ShareData;
172
- clear_status: LoadingStatus;
173
- close_stream: string;
174
- }>);
175
- }
6
+ declare const Index: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type Index = ReturnType<typeof Index>;
8
+ export default Index;
@@ -1,8 +1,25 @@
1
- <script>export let src = void 0;
1
+ <script lang="ts">
2
+ let {
3
+ src,
4
+ restProps,
5
+ data_testid,
6
+ class_names
7
+ }: {
8
+ src: string;
9
+ restProps: object;
10
+ data_testid: string;
11
+ class_names: string[];
12
+ } = $props();
2
13
  </script>
3
14
 
4
15
  <!-- svelte-ignore a11y-missing-attribute -->
5
- <img {src} {...$$restProps} on:load />
16
+ <img
17
+ {src}
18
+ class={(class_names || []).join(" ")}
19
+ data-testid={data_testid}
20
+ {...restProps}
21
+ on:load
22
+ />
6
23
 
7
24
  <style>
8
25
  img {
@@ -1,21 +1,26 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { HTMLImgAttributes } from "svelte/elements";
3
- declare const __propDef: {
4
- props: HTMLImgAttributes & {
5
- "data-testid"?: string;
6
- };
7
- events: {
8
- load: Event;
9
- } & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots: {};
13
- exports?: {} | undefined;
14
- bindings?: string | undefined;
1
+ type $$ComponentProps = {
2
+ src: string;
3
+ restProps: object;
4
+ data_testid: string;
5
+ class_names: string[];
15
6
  };
16
- export type ImageProps = typeof __propDef.props;
17
- export type ImageEvents = typeof __propDef.events;
18
- export type ImageSlots = typeof __propDef.slots;
19
- export default class Image extends SvelteComponent<ImageProps, ImageEvents, ImageSlots> {
7
+ 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> {
8
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
9
+ $$bindings?: Bindings;
10
+ } & Exports;
11
+ (internal: unknown, props: Props & {
12
+ $$events?: Events;
13
+ $$slots?: Slots;
14
+ }): Exports & {
15
+ $set?: any;
16
+ $on?: any;
17
+ };
18
+ z_$$bindings?: Bindings;
20
19
  }
21
- export {};
20
+ declare const Image: $$__sveltets_2_IsomorphicComponent<$$ComponentProps, {
21
+ load: Event;
22
+ } & {
23
+ [evt: string]: CustomEvent<any>;
24
+ }, {}, {}, "">;
25
+ type Image = InstanceType<typeof Image>;
26
+ export default Image;