@gradio/file 0.13.1-dev.0 → 0.13.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 CHANGED
@@ -1,4 +1,44 @@
1
1
  # @gradio/file
2
+ ## 0.13.1
3
+
4
+ ### Features
5
+
6
+ - [#11908](https://github.com/gradio-app/gradio/pull/11908) [`029034f`](https://github.com/gradio-app/gradio/commit/029034f7853ea018d110efe9b7e2ef7d1407091c) - Clear Error statuses
7
+ - [#12438](https://github.com/gradio-app/gradio/pull/12438) [`25ffc03`](https://github.com/gradio-app/gradio/commit/25ffc0398f8feb43d817c02b2ab970c16de6d797) - Svelte5 migration and bugfix
8
+
9
+ ### Dependencies
10
+
11
+ - @gradio/atoms@0.19.0
12
+ - @gradio/client@2.0.0
13
+ - @gradio/icons@0.15.0
14
+ - @gradio/statustracker@0.12.0
15
+ - @gradio/upload@0.17.2
16
+ - @gradio/utils@0.10.3
17
+
18
+ ## 0.13.1-dev.2
19
+
20
+ ### Dependency updates
21
+
22
+ - @gradio/atoms@0.19.0-dev.1
23
+ - @gradio/client@2.0.0-dev.2
24
+ - @gradio/statustracker@0.12.0-dev.1
25
+ - @gradio/upload@0.17.2-dev.2
26
+
27
+ ## 0.13.1-dev.1
28
+
29
+ ### Dependency updates
30
+
31
+ - @gradio/atoms@0.18.2-dev.0
32
+ - @gradio/upload@0.17.2-dev.1
33
+ - @gradio/utils@0.10.3-dev.0
34
+ - @gradio/statustracker@0.12.0-dev.0
35
+ - @gradio/icons@0.15.0-dev.0
36
+
37
+ ## 0.13.1-dev.0
38
+
39
+ ### Dependency updates
40
+
41
+ - @gradio/client@2.0.0-dev.1
2
42
 
3
43
  ## 0.13.1-dev.0
4
44
 
package/Index.svelte CHANGED
@@ -8,115 +8,102 @@
8
8
  </script>
9
9
 
10
10
  <script lang="ts">
11
- import type { Gradio, SelectData } from "@gradio/utils";
11
+ import { Gradio } from "@gradio/utils";
12
12
  import File from "./shared/File.svelte";
13
13
  import FileUpload from "./shared/FileUpload.svelte";
14
- import type { FileData } from "@gradio/client";
15
14
  import { Block, UploadText } from "@gradio/atoms";
16
-
15
+ import type { FileEvents, FileProps } from "./types";
17
16
  import { StatusTracker } from "@gradio/statustracker";
18
- import type { LoadingStatus } from "@gradio/statustracker";
17
+ import { tick } from "svelte";
19
18
 
20
- export let elem_id = "";
21
- export let elem_classes: string[] = [];
22
- export let visible: boolean | "hidden" = true;
23
- export let value: null | FileData | FileData[];
19
+ const props = $props();
20
+ let upload_promise = $state<Promise<any>>();
24
21
 
25
- export let interactive: boolean;
26
- export let root: string;
27
- export let label: string;
28
- export let show_label: boolean;
29
- export let height: number | undefined = undefined;
22
+ let dragging = $state(false);
23
+ let pending_upload = $state(false);
30
24
 
31
- export let _selectable = false;
32
- export let loading_status: LoadingStatus;
33
- export let container = true;
34
- export let scale: number | null = null;
35
- export let min_width: number | undefined = undefined;
36
- export let gradio: Gradio<{
37
- change: never;
38
- error: string;
39
- upload: never;
40
- clear: never;
41
- select: SelectData;
42
- clear_status: LoadingStatus;
43
- delete: FileData;
44
- download: FileData;
45
- }>;
46
- export let file_count: "single" | "multiple" | "directory";
47
- export let file_types: string[] = ["file"];
48
- export let input_ready: boolean;
49
- export let allow_reordering = false;
50
- let uploading = false;
51
- $: input_ready = !uploading;
25
+ class FileGradio extends Gradio<FileEvents, FileProps> {
26
+ async get_data() {
27
+ if (upload_promise) {
28
+ await upload_promise;
29
+ await tick();
30
+ }
31
+ const data = await super.get_data();
52
32
 
53
- let old_value = value;
54
- $: if (JSON.stringify(old_value) !== JSON.stringify(value)) {
55
- gradio.dispatch("change");
56
- old_value = value;
33
+ return data;
34
+ }
57
35
  }
58
36
 
59
- let dragging = false;
60
- let pending_upload = false;
37
+ const gradio = new FileGradio(props);
38
+
39
+ let old_value = $state(gradio.props.value);
40
+
41
+ $effect(() => {
42
+ if (old_value !== gradio.props.value) {
43
+ old_value = gradio.props.value;
44
+ gradio.dispatch("change", $state.snapshot(gradio.props.value));
45
+ }
46
+ });
61
47
  </script>
62
48
 
63
49
  <Block
64
- {visible}
65
- variant={value ? "solid" : "dashed"}
50
+ visible={gradio.shared.visible}
51
+ variant={gradio.props.value ? "solid" : "dashed"}
66
52
  border_mode={dragging ? "focus" : "base"}
67
53
  padding={false}
68
- {elem_id}
69
- {elem_classes}
70
- {container}
71
- {scale}
72
- {min_width}
54
+ elem_id={gradio.shared.elem_id}
55
+ elem_classes={gradio.shared.elem_classes}
56
+ container={gradio.shared.container}
57
+ scale={gradio.shared.scale}
58
+ min_width={gradio.shared.min_width}
73
59
  allow_overflow={false}
74
60
  >
75
61
  <StatusTracker
76
- autoscroll={gradio.autoscroll}
62
+ autoscroll={gradio.shared.autoscroll}
77
63
  i18n={gradio.i18n}
78
- {...loading_status}
64
+ {...gradio.shared.loading_status}
79
65
  status={pending_upload
80
66
  ? "generating"
81
- : loading_status?.status || "complete"}
82
- on:clear_status={() => gradio.dispatch("clear_status", loading_status)}
67
+ : gradio.shared.loading_status?.status || "complete"}
68
+ on_clear_status={() =>
69
+ gradio.dispatch("clear_status", gradio.shared.loading_status)}
83
70
  />
84
- {#if !interactive}
71
+ {#if !gradio.shared.interactive}
85
72
  <File
86
- on:select={({ detail }) => gradio.dispatch("select", detail)}
87
- on:download={({ detail }) => gradio.dispatch("download", detail)}
88
- selectable={_selectable}
89
- {value}
90
- {label}
91
- {show_label}
92
- {height}
73
+ on_select={({ detail }) => gradio.dispatch("select", detail)}
74
+ on_download={({ detail }) => gradio.dispatch("download", detail)}
75
+ selectable={gradio.props._selectable}
76
+ value={gradio.props.value}
77
+ label={gradio.shared.label}
78
+ show_label={gradio.shared.show_label}
79
+ height={gradio.props.height}
93
80
  i18n={gradio.i18n}
94
81
  />
95
82
  {:else}
96
83
  <FileUpload
97
- upload={(...args) => gradio.client.upload(...args)}
98
- stream_handler={(...args) => gradio.client.stream(...args)}
99
- {label}
100
- {show_label}
101
- {value}
102
- {file_count}
103
- {file_types}
104
- selectable={_selectable}
105
- {root}
106
- {height}
107
- {allow_reordering}
108
- bind:uploading
109
- max_file_size={gradio.max_file_size}
84
+ bind:upload_promise
85
+ upload={(...args) => gradio.shared.client.upload(...args)}
86
+ stream_handler={(...args) => gradio.shared.client.stream(...args)}
87
+ label={gradio.shared.label}
88
+ show_label={gradio.shared.show_label}
89
+ value={gradio.props.value}
90
+ file_count={gradio.props.file_count}
91
+ file_types={gradio.props.file_types}
92
+ selectable={gradio.props._selectable}
93
+ height={gradio.props.height}
94
+ root={gradio.shared.root}
95
+ allow_reordering={gradio.props.allow_reordering}
96
+ max_file_size={gradio.shared.max_file_size}
110
97
  on:change={({ detail }) => {
111
- value = detail;
98
+ gradio.props.value = detail;
112
99
  }}
113
100
  on:drag={({ detail }) => (dragging = detail)}
114
101
  on:clear={() => gradio.dispatch("clear")}
115
102
  on:select={({ detail }) => gradio.dispatch("select", detail)}
116
103
  on:upload={() => gradio.dispatch("upload")}
117
104
  on:error={({ detail }) => {
118
- loading_status = loading_status || {};
119
- loading_status.status = "error";
105
+ gradio.shared.loading_status = gradio.shared.loading_status || {};
106
+ gradio.shared.loading_status.status = "error";
120
107
  gradio.dispatch("error", detail);
121
108
  }}
122
109
  on:delete={({ detail }) => {
@@ -1,6 +1,9 @@
1
- <script>export let value;
2
- export let type;
3
- export let selected = false;
1
+ <script lang="ts">
2
+ import type { FileData } from "@gradio/client";
3
+
4
+ export let value: FileData | null;
5
+ export let type: "gallery" | "table";
6
+ export let selected = false;
4
7
  </script>
5
8
 
6
9
  <div
@@ -1,21 +1,23 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { FileData } from "@gradio/client";
3
- declare const __propDef: {
4
- props: {
5
- value: FileData | null;
6
- type: "gallery" | "table";
7
- selected?: boolean;
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
8
12
  };
9
- events: {
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> {
13
+ z_$$bindings?: Bindings;
20
14
  }
21
- export {};
15
+ declare const Example: $$__sveltets_2_IsomorphicComponent<{
16
+ value: FileData | null;
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,102 +1,109 @@
1
1
  <svelte:options accessors={true} />
2
2
 
3
- <script context="module">export { default as FilePreview } from "./shared/FilePreview.svelte";
4
- export { default as BaseFileUpload } from "./shared/FileUpload.svelte";
5
- export { default as BaseFile } from "./shared/File.svelte";
6
- export { default as BaseExample } from "./Example.svelte";
3
+ <script context="module" lang="ts">
4
+ export { default as FilePreview } from "./shared/FilePreview.svelte";
5
+ export { default as BaseFileUpload } from "./shared/FileUpload.svelte";
6
+ export { default as BaseFile } from "./shared/File.svelte";
7
+ export { default as BaseExample } from "./Example.svelte";
7
8
  </script>
8
9
 
9
- <script>import File from "./shared/File.svelte";
10
- import FileUpload from "./shared/FileUpload.svelte";
11
- import { Block, UploadText } from "@gradio/atoms";
12
- import { StatusTracker } from "@gradio/statustracker";
13
- export let elem_id = "";
14
- export let elem_classes = [];
15
- export let visible = true;
16
- export let value;
17
- export let interactive;
18
- export let root;
19
- export let label;
20
- export let show_label;
21
- export let height = void 0;
22
- export let _selectable = false;
23
- export let loading_status;
24
- export let container = true;
25
- export let scale = null;
26
- export let min_width = void 0;
27
- export let gradio;
28
- export let file_count;
29
- export let file_types = ["file"];
30
- export let input_ready;
31
- export let allow_reordering = false;
32
- let uploading = false;
33
- $: input_ready = !uploading;
34
- let old_value = value;
35
- $: if (JSON.stringify(old_value) !== JSON.stringify(value)) {
36
- gradio.dispatch("change");
37
- old_value = value;
38
- }
39
- let dragging = false;
40
- let pending_upload = false;
10
+ <script lang="ts">
11
+ import { Gradio } from "@gradio/utils";
12
+ import File from "./shared/File.svelte";
13
+ import FileUpload from "./shared/FileUpload.svelte";
14
+ import { Block, UploadText } from "@gradio/atoms";
15
+ import type { FileEvents, FileProps } from "./types";
16
+ import { StatusTracker } from "@gradio/statustracker";
17
+ import { tick } from "svelte";
18
+
19
+ const props = $props();
20
+ let upload_promise = $state<Promise<any>>();
21
+
22
+ let dragging = $state(false);
23
+ let pending_upload = $state(false);
24
+
25
+ class FileGradio extends Gradio<FileEvents, FileProps> {
26
+ async get_data() {
27
+ if (upload_promise) {
28
+ await upload_promise;
29
+ await tick();
30
+ }
31
+ const data = await super.get_data();
32
+
33
+ return data;
34
+ }
35
+ }
36
+
37
+ const gradio = new FileGradio(props);
38
+
39
+ let old_value = $state(gradio.props.value);
40
+
41
+ $effect(() => {
42
+ if (old_value !== gradio.props.value) {
43
+ old_value = gradio.props.value;
44
+ gradio.dispatch("change", $state.snapshot(gradio.props.value));
45
+ }
46
+ });
41
47
  </script>
42
48
 
43
49
  <Block
44
- {visible}
45
- variant={value ? "solid" : "dashed"}
50
+ visible={gradio.shared.visible}
51
+ variant={gradio.props.value ? "solid" : "dashed"}
46
52
  border_mode={dragging ? "focus" : "base"}
47
53
  padding={false}
48
- {elem_id}
49
- {elem_classes}
50
- {container}
51
- {scale}
52
- {min_width}
54
+ elem_id={gradio.shared.elem_id}
55
+ elem_classes={gradio.shared.elem_classes}
56
+ container={gradio.shared.container}
57
+ scale={gradio.shared.scale}
58
+ min_width={gradio.shared.min_width}
53
59
  allow_overflow={false}
54
60
  >
55
61
  <StatusTracker
56
- autoscroll={gradio.autoscroll}
62
+ autoscroll={gradio.shared.autoscroll}
57
63
  i18n={gradio.i18n}
58
- {...loading_status}
64
+ {...gradio.shared.loading_status}
59
65
  status={pending_upload
60
66
  ? "generating"
61
- : loading_status?.status || "complete"}
62
- on:clear_status={() => gradio.dispatch("clear_status", loading_status)}
67
+ : gradio.shared.loading_status?.status || "complete"}
68
+ on_clear_status={() =>
69
+ gradio.dispatch("clear_status", gradio.shared.loading_status)}
63
70
  />
64
- {#if !interactive}
71
+ {#if !gradio.shared.interactive}
65
72
  <File
66
- on:select={({ detail }) => gradio.dispatch("select", detail)}
67
- on:download={({ detail }) => gradio.dispatch("download", detail)}
68
- selectable={_selectable}
69
- {value}
70
- {label}
71
- {show_label}
72
- {height}
73
+ on_select={({ detail }) => gradio.dispatch("select", detail)}
74
+ on_download={({ detail }) => gradio.dispatch("download", detail)}
75
+ selectable={gradio.props._selectable}
76
+ value={gradio.props.value}
77
+ label={gradio.shared.label}
78
+ show_label={gradio.shared.show_label}
79
+ height={gradio.props.height}
73
80
  i18n={gradio.i18n}
74
81
  />
75
82
  {:else}
76
83
  <FileUpload
77
- upload={(...args) => gradio.client.upload(...args)}
78
- stream_handler={(...args) => gradio.client.stream(...args)}
79
- {label}
80
- {show_label}
81
- {value}
82
- {file_count}
83
- {file_types}
84
- selectable={_selectable}
85
- {root}
86
- {height}
87
- {allow_reordering}
88
- bind:uploading
89
- max_file_size={gradio.max_file_size}
84
+ bind:upload_promise
85
+ upload={(...args) => gradio.shared.client.upload(...args)}
86
+ stream_handler={(...args) => gradio.shared.client.stream(...args)}
87
+ label={gradio.shared.label}
88
+ show_label={gradio.shared.show_label}
89
+ value={gradio.props.value}
90
+ file_count={gradio.props.file_count}
91
+ file_types={gradio.props.file_types}
92
+ selectable={gradio.props._selectable}
93
+ height={gradio.props.height}
94
+ root={gradio.shared.root}
95
+ allow_reordering={gradio.props.allow_reordering}
96
+ max_file_size={gradio.shared.max_file_size}
90
97
  on:change={({ detail }) => {
91
- value = detail;
98
+ gradio.props.value = detail;
92
99
  }}
93
100
  on:drag={({ detail }) => (dragging = detail)}
94
101
  on:clear={() => gradio.dispatch("clear")}
95
102
  on:select={({ detail }) => gradio.dispatch("select", detail)}
96
103
  on:upload={() => gradio.dispatch("upload")}
97
104
  on:error={({ detail }) => {
98
- loading_status = loading_status || {};
99
- loading_status.status = "error";
105
+ gradio.shared.loading_status = gradio.shared.loading_status || {};
106
+ gradio.shared.loading_status.status = "error";
100
107
  gradio.dispatch("error", detail);
101
108
  }}
102
109
  on:delete={({ detail }) => {
@@ -1,126 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  export { default as FilePreview } from "./shared/FilePreview.svelte";
3
2
  export { default as BaseFileUpload } from "./shared/FileUpload.svelte";
4
3
  export { default as BaseFile } from "./shared/File.svelte";
5
4
  export { default as BaseExample } from "./Example.svelte";
6
- import type { Gradio, SelectData } from "@gradio/utils";
7
- import type { FileData } from "@gradio/client";
8
- import type { LoadingStatus } from "@gradio/statustracker";
9
- declare const __propDef: {
10
- props: {
11
- elem_id?: string;
12
- elem_classes?: string[];
13
- visible?: boolean | "hidden";
14
- value: null | FileData | FileData[];
15
- interactive: boolean;
16
- root: string;
17
- label: string;
18
- show_label: boolean;
19
- height?: number | undefined;
20
- _selectable?: boolean;
21
- loading_status: LoadingStatus;
22
- container?: boolean;
23
- scale?: number | null;
24
- min_width?: number | undefined;
25
- gradio: Gradio<{
26
- change: never;
27
- error: string;
28
- upload: never;
29
- clear: never;
30
- select: SelectData;
31
- clear_status: LoadingStatus;
32
- delete: FileData;
33
- download: FileData;
34
- }>;
35
- file_count: "single" | "multiple" | "directory";
36
- file_types?: string[];
37
- input_ready: boolean;
38
- allow_reordering?: boolean;
39
- };
40
- events: {
41
- [evt: string]: CustomEvent<any>;
42
- };
43
- slots: {};
44
- exports?: {} | undefined;
45
- bindings?: string | undefined;
46
- };
47
- export type IndexProps = typeof __propDef.props;
48
- export type IndexEvents = typeof __propDef.events;
49
- export type IndexSlots = typeof __propDef.slots;
50
- export default class Index extends SvelteComponent<IndexProps, IndexEvents, IndexSlots> {
51
- get elem_id(): string | undefined;
52
- /**accessor*/
53
- set elem_id(_: string | undefined);
54
- get elem_classes(): string[] | undefined;
55
- /**accessor*/
56
- set elem_classes(_: string[] | undefined);
57
- get visible(): boolean | "hidden" | undefined;
58
- /**accessor*/
59
- set visible(_: boolean | "hidden" | undefined);
60
- get value(): any;
61
- /**accessor*/
62
- set value(_: any);
63
- get interactive(): boolean;
64
- /**accessor*/
65
- set interactive(_: boolean);
66
- get root(): string;
67
- /**accessor*/
68
- set root(_: string);
69
- get label(): string;
70
- /**accessor*/
71
- set label(_: string);
72
- get show_label(): boolean;
73
- /**accessor*/
74
- set show_label(_: boolean);
75
- get height(): number | undefined;
76
- /**accessor*/
77
- set height(_: number | undefined);
78
- get _selectable(): boolean | undefined;
79
- /**accessor*/
80
- set _selectable(_: boolean | undefined);
81
- get loading_status(): LoadingStatus;
82
- /**accessor*/
83
- set loading_status(_: LoadingStatus);
84
- get container(): boolean | undefined;
85
- /**accessor*/
86
- set container(_: boolean | undefined);
87
- get scale(): number | null | undefined;
88
- /**accessor*/
89
- set scale(_: number | null | undefined);
90
- get min_width(): number | undefined;
91
- /**accessor*/
92
- set min_width(_: number | undefined);
93
- get gradio(): Gradio<{
94
- change: never;
95
- error: string;
96
- upload: never;
97
- clear: never;
98
- select: SelectData;
99
- clear_status: LoadingStatus;
100
- delete: FileData;
101
- download: FileData;
102
- }>;
103
- /**accessor*/
104
- set gradio(_: Gradio<{
105
- change: never;
106
- error: string;
107
- upload: never;
108
- clear: never;
109
- select: SelectData;
110
- clear_status: LoadingStatus;
111
- delete: FileData;
112
- download: FileData;
113
- }>);
114
- get file_count(): "multiple" | "single" | "directory";
115
- /**accessor*/
116
- set file_count(_: "multiple" | "single" | "directory");
117
- get file_types(): string[] | undefined;
118
- /**accessor*/
119
- set file_types(_: string[] | undefined);
120
- get input_ready(): boolean;
121
- /**accessor*/
122
- set input_ready(_: boolean);
123
- get allow_reordering(): boolean | undefined;
124
- /**accessor*/
125
- set allow_reordering(_: boolean | undefined);
126
- }
5
+ declare const Index: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type Index = ReturnType<typeof Index>;
7
+ export default Index;
@@ -1,12 +1,18 @@
1
- <script>import { BlockLabel, Empty } from "@gradio/atoms";
2
- import { File } from "@gradio/icons";
3
- import FilePreview from "./FilePreview.svelte";
4
- export let value = null;
5
- export let label;
6
- export let show_label = true;
7
- export let selectable = false;
8
- export let height = void 0;
9
- export let i18n;
1
+ <script lang="ts">
2
+ import { BlockLabel, Empty } from "@gradio/atoms";
3
+ import { File } from "@gradio/icons";
4
+ import FilePreview from "./FilePreview.svelte";
5
+
6
+ let {
7
+ value,
8
+ label,
9
+ show_label,
10
+ selectable,
11
+ i18n,
12
+ height,
13
+ on_select,
14
+ on_download
15
+ } = $props();
10
16
  </script>
11
17
 
12
18
  <BlockLabel
@@ -17,7 +23,14 @@ export let i18n;
17
23
  />
18
24
 
19
25
  {#if value && (Array.isArray(value) ? value.length > 0 : true)}
20
- <FilePreview {i18n} {selectable} on:select on:download {value} {height} />
26
+ <FilePreview
27
+ {i18n}
28
+ {selectable}
29
+ on:select={on_select}
30
+ on:download={on_download}
31
+ {value}
32
+ {height}
33
+ />
21
34
  {:else}
22
35
  <Empty unpadded_box={true} size="large"><File /></Empty>
23
36
  {/if}