@gradio/image 0.23.0 → 0.23.2-dev.0

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 CHANGED
@@ -1,5 +1,29 @@
1
1
  # @gradio/image
2
2
 
3
+ ## 0.23.2-dev.0
4
+
5
+ ### Dependency updates
6
+
7
+ - @gradio/upload@0.17.2-dev.0
8
+ - @gradio/client@2.0.0-dev.0
9
+
10
+ ## 0.23.1
11
+
12
+ ### Dependency updates
13
+
14
+ - @gradio/client@1.19.1
15
+
16
+ ## 0.23.1
17
+
18
+ ### Fixes
19
+
20
+ - [#11969](https://github.com/gradio-app/gradio/pull/11969) [`c8f7909`](https://github.com/gradio-app/gradio/commit/c8f79090ede3b071a8d9620a885350b6ee5a8926) - Show UploadProgress for Webcam Uploads. Thanks @freddyaboulton!
21
+
22
+ ### Dependency updates
23
+
24
+ - @gradio/upload@0.17.1
25
+ - @gradio/atoms@0.18.1
26
+
3
27
  ## 0.23.0
4
28
 
5
29
  ### Features
package/Image.test.ts CHANGED
@@ -56,9 +56,9 @@ describe("Image", () => {
56
56
  const mock = listen("change");
57
57
 
58
58
  component.value = {
59
- url: "https://github.com/gradio-app/gradio/blob/main/test/test_files/cheetah1.jpg",
60
- orig_name: "bus.png",
61
- path: "https://github.com/gradio-app/gradio/blob/main/test/test_files/cheetah1.jpg"
59
+ url: "https://github.com/gradio-app/gradio/blob/main/gradio/media_assets/images/cheetah1.jpg",
60
+ orig_name: "cheetah1.jpg",
61
+ path: "https://github.com/gradio-app/gradio/blob/main/gradio/media_assets/images/cheetah1.jpg"
62
62
  };
63
63
  assert.equal(mock.callCount, 1);
64
64
  });
package/Index.svelte CHANGED
@@ -41,7 +41,7 @@
41
41
  let old_value: null | FileData = null;
42
42
  export let label: string;
43
43
  export let show_label: boolean;
44
- export let show_download_button: boolean;
44
+ export let buttons: string[] | null = null;
45
45
  export let root: string;
46
46
 
47
47
  export let height: number | undefined;
@@ -53,7 +53,6 @@
53
53
  export let scale: number | null = null;
54
54
  export let min_width: number | undefined = undefined;
55
55
  export let loading_status: LoadingStatus;
56
- export let show_share_button = false;
57
56
  export let sources: ("clipboard" | "webcam" | "upload")[] = [
58
57
  "upload",
59
58
  "clipboard",
@@ -63,7 +62,6 @@
63
62
  export let streaming: boolean;
64
63
  export let pending: boolean;
65
64
  export let placeholder: string | undefined = undefined;
66
- export let show_fullscreen_button: boolean;
67
65
  export let input_ready: boolean;
68
66
  export let webcam_options: WebcamOptions;
69
67
  let fullscreen = false;
@@ -159,11 +157,9 @@
159
157
  {value}
160
158
  {label}
161
159
  {show_label}
162
- {show_download_button}
160
+ {buttons}
163
161
  selectable={_selectable}
164
- {show_share_button}
165
162
  i18n={gradio.i18n}
166
- {show_fullscreen_button}
167
163
  />
168
164
  </Block>
169
165
  {:else}
@@ -203,6 +199,9 @@
203
199
  {root}
204
200
  {sources}
205
201
  {fullscreen}
202
+ show_fullscreen_button={buttons === null
203
+ ? true
204
+ : buttons.includes("fullscreen")}
206
205
  on:edit={() => gradio.dispatch("edit")}
207
206
  on:clear={() => {
208
207
  fullscreen = false;
package/dist/Index.svelte CHANGED
@@ -31,7 +31,7 @@ export let value = null;
31
31
  let old_value = null;
32
32
  export let label;
33
33
  export let show_label;
34
- export let show_download_button;
34
+ export let buttons = null;
35
35
  export let root;
36
36
  export let height;
37
37
  export let width;
@@ -41,7 +41,6 @@ export let container = true;
41
41
  export let scale = null;
42
42
  export let min_width = void 0;
43
43
  export let loading_status;
44
- export let show_share_button = false;
45
44
  export let sources = [
46
45
  "upload",
47
46
  "clipboard",
@@ -51,7 +50,6 @@ export let interactive;
51
50
  export let streaming;
52
51
  export let pending;
53
52
  export let placeholder = void 0;
54
- export let show_fullscreen_button;
55
53
  export let input_ready;
56
54
  export let webcam_options;
57
55
  let fullscreen = false;
@@ -128,11 +126,9 @@ const handle_drop = (event) => {
128
126
  {value}
129
127
  {label}
130
128
  {show_label}
131
- {show_download_button}
129
+ {buttons}
132
130
  selectable={_selectable}
133
- {show_share_button}
134
131
  i18n={gradio.i18n}
135
- {show_fullscreen_button}
136
132
  />
137
133
  </Block>
138
134
  {:else}
@@ -172,6 +168,9 @@ const handle_drop = (event) => {
172
168
  {root}
173
169
  {sources}
174
170
  {fullscreen}
171
+ show_fullscreen_button={buttons === null
172
+ ? true
173
+ : buttons.includes("fullscreen")}
175
174
  on:edit={() => gradio.dispatch("edit")}
176
175
  on:clear={() => {
177
176
  fullscreen = false;
@@ -20,7 +20,7 @@ declare const __propDef: {
20
20
  value?: null | FileData;
21
21
  label: string;
22
22
  show_label: boolean;
23
- show_download_button: boolean;
23
+ buttons?: string[] | null;
24
24
  root: string;
25
25
  height: number | undefined;
26
26
  width: number | undefined;
@@ -30,13 +30,11 @@ declare const __propDef: {
30
30
  scale?: number | null;
31
31
  min_width?: number | undefined;
32
32
  loading_status: LoadingStatus;
33
- show_share_button?: boolean;
34
33
  sources?: ("clipboard" | "webcam" | "upload")[];
35
34
  interactive: boolean;
36
35
  streaming: boolean;
37
36
  pending: boolean;
38
37
  placeholder?: string | undefined;
39
- show_fullscreen_button: boolean;
40
38
  input_ready: boolean;
41
39
  webcam_options: WebcamOptions;
42
40
  gradio: Gradio<{
@@ -94,9 +92,9 @@ export default class Index extends SvelteComponent<IndexProps, IndexEvents, Inde
94
92
  get show_label(): boolean;
95
93
  /**accessor*/
96
94
  set show_label(_: boolean);
97
- get show_download_button(): boolean;
95
+ get buttons(): string[] | null | undefined;
98
96
  /**accessor*/
99
- set show_download_button(_: boolean);
97
+ set buttons(_: string[] | null | undefined);
100
98
  get root(): string;
101
99
  /**accessor*/
102
100
  set root(_: string);
@@ -124,9 +122,6 @@ export default class Index extends SvelteComponent<IndexProps, IndexEvents, Inde
124
122
  get loading_status(): LoadingStatus;
125
123
  /**accessor*/
126
124
  set loading_status(_: LoadingStatus);
127
- get show_share_button(): boolean | undefined;
128
- /**accessor*/
129
- set show_share_button(_: boolean | undefined);
130
125
  get sources(): ("clipboard" | "upload" | "webcam")[] | undefined;
131
126
  /**accessor*/
132
127
  set sources(_: ("clipboard" | "upload" | "webcam")[] | undefined);
@@ -142,9 +137,6 @@ export default class Index extends SvelteComponent<IndexProps, IndexEvents, Inde
142
137
  get placeholder(): string | undefined;
143
138
  /**accessor*/
144
139
  set placeholder(_: string | undefined);
145
- get show_fullscreen_button(): boolean;
146
- /**accessor*/
147
- set show_fullscreen_button(_: boolean);
148
140
  get input_ready(): boolean;
149
141
  /**accessor*/
150
142
  set input_ready(_: boolean);
@@ -15,11 +15,9 @@ import Image from "./Image.svelte";
15
15
  export let value;
16
16
  export let label = void 0;
17
17
  export let show_label;
18
- export let show_download_button = true;
18
+ export let buttons = null;
19
19
  export let selectable = false;
20
- export let show_share_button = false;
21
20
  export let i18n;
22
- export let show_fullscreen_button = true;
23
21
  export let display_icon_button_wrapper_top_corner = false;
24
22
  export let fullscreen = false;
25
23
  const dispatch = createEventDispatcher();
@@ -44,16 +42,16 @@ let image_container;
44
42
  <IconButtonWrapper
45
43
  display_top_corner={display_icon_button_wrapper_top_corner}
46
44
  >
47
- {#if show_fullscreen_button}
45
+ {#if buttons === null ? true : buttons.includes("fullscreen")}
48
46
  <FullscreenButton {fullscreen} on:fullscreen />
49
47
  {/if}
50
48
 
51
- {#if show_download_button}
49
+ {#if buttons === null ? true : buttons.includes("download")}
52
50
  <DownloadLink href={value.url} download={value.orig_name || "image"}>
53
51
  <IconButton Icon={Download} label={i18n("common.download")} />
54
52
  </DownloadLink>
55
53
  {/if}
56
- {#if show_share_button}
54
+ {#if buttons === null ? true : buttons.includes("share")}
57
55
  <ShareButton
58
56
  {i18n}
59
57
  on:share
@@ -7,11 +7,9 @@ declare const __propDef: {
7
7
  value: null | FileData;
8
8
  label?: string | undefined;
9
9
  show_label: boolean;
10
- show_download_button?: boolean;
10
+ buttons?: string[] | null;
11
11
  selectable?: boolean;
12
- show_share_button?: boolean;
13
12
  i18n: I18nFormatter;
14
- show_fullscreen_button?: boolean;
15
13
  display_icon_button_wrapper_top_corner?: boolean;
16
14
  fullscreen?: boolean;
17
15
  };
@@ -6,7 +6,7 @@ import {
6
6
  } from "@gradio/utils";
7
7
  import { get_coordinates_of_clicked_image } from "./utils";
8
8
  import Webcam from "./Webcam.svelte";
9
- import { Upload } from "@gradio/upload";
9
+ import { Upload, UploadProgress } from "@gradio/upload";
10
10
  import { FileData } from "@gradio/client";
11
11
  import { SelectSource } from "@gradio/atoms";
12
12
  import Image from "./Image.svelte";
@@ -31,6 +31,8 @@ let upload_input;
31
31
  export let uploading = false;
32
32
  export let active_source = null;
33
33
  export let fullscreen = false;
34
+ let files = [];
35
+ let upload_id;
34
36
  async function handle_upload({
35
37
  detail
36
38
  }) {
@@ -66,10 +68,20 @@ async function handle_save(img_blob, event) {
66
68
  });
67
69
  return;
68
70
  }
71
+ upload_id = Math.random().toString(36).substring(2, 15);
72
+ const f_ = new File([img_blob], `image.${streaming ? "jpeg" : "png"}`);
73
+ files = [
74
+ new FileData({
75
+ path: f_.name,
76
+ orig_name: f_.name,
77
+ blob: f_,
78
+ size: f_.size,
79
+ mime_type: f_.type,
80
+ is_stream: false
81
+ })
82
+ ];
69
83
  pending = true;
70
- const f = await upload_input.load_files([
71
- new File([img_blob], `image/${streaming ? "jpeg" : "png"}`)
72
- ]);
84
+ const f = await upload_input.load_files([f_], upload_id);
73
85
  if (event === "change" || event === "upload") {
74
86
  value = f?.[0] || null;
75
87
  await tick();
@@ -165,7 +177,9 @@ async function on_drop(evt) {
165
177
  <slot />
166
178
  {/if}
167
179
  </Upload>
168
- {#if active_source === "webcam" && (streaming || (!streaming && !value))}
180
+ {#if active_source === "webcam" && !streaming && pending}
181
+ <UploadProgress {root} {upload_id} {stream_handler} {files} />
182
+ {:else if active_source === "webcam" && (streaming || (!streaming && !value))}
169
183
  <Webcam
170
184
  {root}
171
185
  {value}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/image",
3
- "version": "0.23.0",
3
+ "version": "0.23.2-dev.0",
4
4
  "description": "Gradio UI packages",
5
5
  "type": "module",
6
6
  "author": "",
@@ -10,12 +10,12 @@
10
10
  "cropperjs": "^1.5.12",
11
11
  "lazy-brush": "^1.0.1",
12
12
  "resize-observer-polyfill": "^1.5.1",
13
- "@gradio/atoms": "^0.18.0",
14
- "@gradio/icons": "^0.14.0",
13
+ "@gradio/atoms": "^0.18.1",
15
14
  "@gradio/statustracker": "^0.11.1",
16
- "@gradio/client": "^1.19.0",
17
- "@gradio/upload": "^0.17.0",
18
- "@gradio/utils": "^0.10.2"
15
+ "@gradio/icons": "^0.14.0",
16
+ "@gradio/client": "^2.0.0-dev.0",
17
+ "@gradio/utils": "^0.10.2",
18
+ "@gradio/upload": "^0.17.2-dev.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@gradio/preview": "^0.14.0"
@@ -21,11 +21,9 @@
21
21
  export let value: null | FileData;
22
22
  export let label: string | undefined = undefined;
23
23
  export let show_label: boolean;
24
- export let show_download_button = true;
24
+ export let buttons: string[] | null = null;
25
25
  export let selectable = false;
26
- export let show_share_button = false;
27
26
  export let i18n: I18nFormatter;
28
- export let show_fullscreen_button = true;
29
27
  export let display_icon_button_wrapper_top_corner = false;
30
28
  export let fullscreen = false;
31
29
 
@@ -57,16 +55,16 @@
57
55
  <IconButtonWrapper
58
56
  display_top_corner={display_icon_button_wrapper_top_corner}
59
57
  >
60
- {#if show_fullscreen_button}
58
+ {#if buttons === null ? true : buttons.includes("fullscreen")}
61
59
  <FullscreenButton {fullscreen} on:fullscreen />
62
60
  {/if}
63
61
 
64
- {#if show_download_button}
62
+ {#if buttons === null ? true : buttons.includes("download")}
65
63
  <DownloadLink href={value.url} download={value.orig_name || "image"}>
66
64
  <IconButton Icon={Download} label={i18n("common.download")} />
67
65
  </DownloadLink>
68
66
  {/if}
69
- {#if show_share_button}
67
+ {#if buttons === null ? true : buttons.includes("share")}
70
68
  <ShareButton
71
69
  {i18n}
72
70
  on:share
@@ -11,7 +11,7 @@
11
11
  import { get_coordinates_of_clicked_image } from "./utils";
12
12
  import Webcam from "./Webcam.svelte";
13
13
 
14
- import { Upload } from "@gradio/upload";
14
+ import { Upload, UploadProgress } from "@gradio/upload";
15
15
  import { FileData, type Client } from "@gradio/client";
16
16
  import { SelectSource } from "@gradio/atoms";
17
17
  import Image from "./Image.svelte";
@@ -44,6 +44,9 @@
44
44
  export let active_source: source_type = null;
45
45
  export let fullscreen = false;
46
46
 
47
+ let files: FileData[] = [];
48
+ let upload_id: string;
49
+
47
50
  async function handle_upload({
48
51
  detail
49
52
  }: CustomEvent<FileData>): Promise<void> {
@@ -86,11 +89,20 @@
86
89
  });
87
90
  return;
88
91
  }
92
+ upload_id = Math.random().toString(36).substring(2, 15);
93
+ const f_ = new File([img_blob], `image.${streaming ? "jpeg" : "png"}`);
94
+ files = [
95
+ new FileData({
96
+ path: f_.name,
97
+ orig_name: f_.name,
98
+ blob: f_,
99
+ size: f_.size,
100
+ mime_type: f_.type,
101
+ is_stream: false
102
+ })
103
+ ];
89
104
  pending = true;
90
- const f = await upload_input.load_files([
91
- new File([img_blob], `image/${streaming ? "jpeg" : "png"}`)
92
- ]);
93
-
105
+ const f = await upload_input.load_files([f_], upload_id);
94
106
  if (event === "change" || event === "upload") {
95
107
  value = f?.[0] || null;
96
108
  await tick();
@@ -209,7 +221,9 @@
209
221
  <slot />
210
222
  {/if}
211
223
  </Upload>
212
- {#if active_source === "webcam" && (streaming || (!streaming && !value))}
224
+ {#if active_source === "webcam" && !streaming && pending}
225
+ <UploadProgress {root} {upload_id} {stream_handler} {files} />
226
+ {:else if active_source === "webcam" && (streaming || (!streaming && !value))}
213
227
  <Webcam
214
228
  {root}
215
229
  {value}