@gradio/image 0.22.18 → 0.23.1
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 +28 -0
- package/Index.svelte +1 -1
- package/dist/Index.svelte.d.ts +5 -5
- package/dist/shared/Image.svelte +2 -15
- package/dist/shared/ImagePreview.svelte +2 -2
- package/dist/shared/ImageUploader.svelte +19 -5
- package/dist/shared/ImageUploader.svelte.d.ts +1 -1
- package/dist/shared/Webcam.svelte.d.ts +1 -1
- package/package.json +6 -7
- package/shared/Image.svelte +1 -26
- package/shared/ImagePreview.svelte +2 -2
- package/shared/ImageUploader.svelte +20 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @gradio/image
|
|
2
2
|
|
|
3
|
+
## 0.23.1
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- [#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!
|
|
8
|
+
|
|
9
|
+
### Dependency updates
|
|
10
|
+
|
|
11
|
+
- @gradio/upload@0.17.1
|
|
12
|
+
- @gradio/atoms@0.18.1
|
|
13
|
+
|
|
14
|
+
## 0.23.0
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- [#11858](https://github.com/gradio-app/gradio/pull/11858) [`3f8ea13`](https://github.com/gradio-app/gradio/commit/3f8ea13a8ca92abf0ad34392e403a449fda3c6c2) - remove lite. Thanks @pngwn!
|
|
19
|
+
|
|
20
|
+
### Fixes
|
|
21
|
+
|
|
22
|
+
- [#11784](https://github.com/gradio-app/gradio/pull/11784) [`d9dd3f5`](https://github.com/gradio-app/gradio/commit/d9dd3f54b7fb34cf7118e549d39fc63937ca3489) - Add "hidden" option to component's `visible` kwarg to render but visually hide the component. Thanks @pngwn!
|
|
23
|
+
|
|
24
|
+
### Dependency updates
|
|
25
|
+
|
|
26
|
+
- @gradio/statustracker@0.11.1
|
|
27
|
+
- @gradio/atoms@0.18.0
|
|
28
|
+
- @gradio/client@1.19.0
|
|
29
|
+
- @gradio/upload@0.17.0
|
|
30
|
+
|
|
3
31
|
## 0.22.18
|
|
4
32
|
|
|
5
33
|
### Dependency updates
|
package/Index.svelte
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
export let value_is_output = false;
|
|
37
37
|
export let elem_id = "";
|
|
38
38
|
export let elem_classes: string[] = [];
|
|
39
|
-
export let visible = true;
|
|
39
|
+
export let visible: boolean | "hidden" = true;
|
|
40
40
|
export let value: null | FileData = null;
|
|
41
41
|
let old_value: null | FileData = null;
|
|
42
42
|
export let label: string;
|
package/dist/Index.svelte.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ declare const __propDef: {
|
|
|
16
16
|
value_is_output?: boolean;
|
|
17
17
|
elem_id?: string;
|
|
18
18
|
elem_classes?: string[];
|
|
19
|
-
visible?: boolean;
|
|
19
|
+
visible?: boolean | "hidden";
|
|
20
20
|
value?: null | FileData;
|
|
21
21
|
label: string;
|
|
22
22
|
show_label: boolean;
|
|
@@ -82,12 +82,12 @@ export default class Index extends SvelteComponent<IndexProps, IndexEvents, Inde
|
|
|
82
82
|
get elem_classes(): string[] | undefined;
|
|
83
83
|
/**accessor*/
|
|
84
84
|
set elem_classes(_: string[] | undefined);
|
|
85
|
-
get visible(): boolean | undefined;
|
|
85
|
+
get visible(): boolean | "hidden" | undefined;
|
|
86
86
|
/**accessor*/
|
|
87
|
-
set visible(_: boolean | undefined);
|
|
88
|
-
get value():
|
|
87
|
+
set visible(_: boolean | "hidden" | undefined);
|
|
88
|
+
get value(): any;
|
|
89
89
|
/**accessor*/
|
|
90
|
-
set value(_:
|
|
90
|
+
set value(_: any);
|
|
91
91
|
get label(): string;
|
|
92
92
|
/**accessor*/
|
|
93
93
|
set label(_: string);
|
package/dist/shared/Image.svelte
CHANGED
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
export let src = void 0;
|
|
3
|
-
let resolved_src;
|
|
4
|
-
let latest_src;
|
|
5
|
-
$: {
|
|
6
|
-
resolved_src = src;
|
|
7
|
-
latest_src = src;
|
|
8
|
-
const resolving_src = src;
|
|
9
|
-
resolve_wasm_src(resolving_src).then((s) => {
|
|
10
|
-
if (latest_src === resolving_src) {
|
|
11
|
-
resolved_src = s;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
}
|
|
1
|
+
<script>export let src = void 0;
|
|
15
2
|
</script>
|
|
16
3
|
|
|
17
4
|
<!-- svelte-ignore a11y-missing-attribute -->
|
|
18
|
-
<img src
|
|
5
|
+
<img {src} {...$$restProps} on:load />
|
|
19
6
|
|
|
20
7
|
<style>
|
|
21
8
|
img {
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
IconButton,
|
|
7
7
|
ShareButton,
|
|
8
8
|
IconButtonWrapper,
|
|
9
|
-
FullscreenButton
|
|
9
|
+
FullscreenButton,
|
|
10
|
+
DownloadLink
|
|
10
11
|
} from "@gradio/atoms";
|
|
11
12
|
import { Download, Image as ImageIcon } from "@gradio/icons";
|
|
12
13
|
import { get_coordinates_of_clicked_image } from "./utils";
|
|
13
14
|
import Image from "./Image.svelte";
|
|
14
|
-
import { DownloadLink } from "@gradio/wasm/svelte";
|
|
15
15
|
export let value;
|
|
16
16
|
export let label = void 0;
|
|
17
17
|
export let show_label;
|
|
@@ -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" &&
|
|
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}
|
|
@@ -28,7 +28,7 @@ declare const __propDef: {
|
|
|
28
28
|
};
|
|
29
29
|
events: {
|
|
30
30
|
fullscreen: CustomEvent<boolean>;
|
|
31
|
-
error: CustomEvent<
|
|
31
|
+
error: CustomEvent<any> | CustomEvent<string>;
|
|
32
32
|
drag: CustomEvent<any>;
|
|
33
33
|
close_stream: CustomEvent<undefined>;
|
|
34
34
|
change?: CustomEvent<undefined> | undefined;
|
|
@@ -23,7 +23,7 @@ declare const __propDef: {
|
|
|
23
23
|
};
|
|
24
24
|
events: {
|
|
25
25
|
stream: CustomEvent<string | Blob>;
|
|
26
|
-
capture: CustomEvent<
|
|
26
|
+
capture: CustomEvent<any>;
|
|
27
27
|
error: CustomEvent<string>;
|
|
28
28
|
start_recording: CustomEvent<undefined>;
|
|
29
29
|
stop_recording: CustomEvent<undefined>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gradio/image",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"description": "Gradio UI packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "",
|
|
@@ -10,13 +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.1",
|
|
14
|
+
"@gradio/client": "^1.19.0",
|
|
15
|
+
"@gradio/statustracker": "^0.11.1",
|
|
13
16
|
"@gradio/icons": "^0.14.0",
|
|
14
|
-
"@gradio/
|
|
15
|
-
"@gradio/
|
|
16
|
-
"@gradio/client": "^1.18.0",
|
|
17
|
-
"@gradio/utils": "^0.10.2",
|
|
18
|
-
"@gradio/upload": "^0.16.17",
|
|
19
|
-
"@gradio/wasm": "^0.18.1"
|
|
17
|
+
"@gradio/upload": "^0.17.1",
|
|
18
|
+
"@gradio/utils": "^0.10.2"
|
|
20
19
|
},
|
|
21
20
|
"devDependencies": {
|
|
22
21
|
"@gradio/preview": "^0.14.0"
|
package/shared/Image.svelte
CHANGED
|
@@ -6,36 +6,11 @@
|
|
|
6
6
|
}
|
|
7
7
|
type $$Props = Props;
|
|
8
8
|
|
|
9
|
-
import { resolve_wasm_src } from "@gradio/wasm/svelte";
|
|
10
|
-
|
|
11
9
|
export let src: HTMLImgAttributes["src"] = undefined;
|
|
12
|
-
|
|
13
|
-
let resolved_src: typeof src;
|
|
14
|
-
|
|
15
|
-
// The `src` prop can be updated before the Promise from `resolve_wasm_src` is resolved.
|
|
16
|
-
// In such a case, the resolved value for the old `src` has to be discarded,
|
|
17
|
-
// This variable `latest_src` is used to pick up only the value resolved for the latest `src` prop.
|
|
18
|
-
let latest_src: typeof src;
|
|
19
|
-
$: {
|
|
20
|
-
// In normal (non-Wasm) Gradio, the `<img>` element should be rendered with the passed `src` props immediately
|
|
21
|
-
// without waiting for `resolve_wasm_src()` to resolve.
|
|
22
|
-
// If it waits, a blank image is displayed until the async task finishes
|
|
23
|
-
// and it leads to undesirable flickering.
|
|
24
|
-
// So set `src` to `resolved_src` here.
|
|
25
|
-
resolved_src = src;
|
|
26
|
-
|
|
27
|
-
latest_src = src;
|
|
28
|
-
const resolving_src = src;
|
|
29
|
-
resolve_wasm_src(resolving_src).then((s) => {
|
|
30
|
-
if (latest_src === resolving_src) {
|
|
31
|
-
resolved_src = s;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
10
|
</script>
|
|
36
11
|
|
|
37
12
|
<!-- svelte-ignore a11y-missing-attribute -->
|
|
38
|
-
<img src
|
|
13
|
+
<img {src} {...$$restProps} on:load />
|
|
39
14
|
|
|
40
15
|
<style>
|
|
41
16
|
img {
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
IconButton,
|
|
9
9
|
ShareButton,
|
|
10
10
|
IconButtonWrapper,
|
|
11
|
-
FullscreenButton
|
|
11
|
+
FullscreenButton,
|
|
12
|
+
DownloadLink
|
|
12
13
|
} from "@gradio/atoms";
|
|
13
14
|
import { Download, Image as ImageIcon } from "@gradio/icons";
|
|
14
15
|
import { get_coordinates_of_clicked_image } from "./utils";
|
|
15
16
|
import Image from "./Image.svelte";
|
|
16
|
-
import { DownloadLink } from "@gradio/wasm/svelte";
|
|
17
17
|
|
|
18
18
|
import type { I18nFormatter } from "@gradio/utils";
|
|
19
19
|
import type { FileData } from "@gradio/client";
|
|
@@ -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" &&
|
|
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}
|