@gradio/multimodaltextbox 0.7.7 → 0.8.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 +25 -0
- package/Index.svelte +2 -0
- package/dist/Index.svelte +2 -0
- package/dist/Index.svelte.d.ts +4 -0
- package/dist/shared/MultimodalTextbox.svelte +18 -2
- package/dist/shared/MultimodalTextbox.svelte.d.ts +1 -0
- package/package.json +7 -7
- package/shared/MultimodalTextbox.svelte +21 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @gradio/multimodaltextbox
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- [#10135](https://github.com/gradio-app/gradio/pull/10135) [`3e93740`](https://github.com/gradio-app/gradio/commit/3e93740f057712278a7c2194a1702f48915683e1) - Improve pasted text behaviour in `Multimodaltextbox`. Thanks @hannahblair!
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
|
|
11
|
+
- [#10168](https://github.com/gradio-app/gradio/pull/10168) [`7d70596`](https://github.com/gradio-app/gradio/commit/7d70596d0b3343dc4b357758f85420a0afdb65a2) - Multimodal autofocus fix. Thanks @dawoodkhan82!
|
|
12
|
+
|
|
13
|
+
### Dependency updates
|
|
14
|
+
|
|
15
|
+
- @gradio/video@0.12.1
|
|
16
|
+
- @gradio/statustracker@0.9.7
|
|
17
|
+
- @gradio/upload@0.14.3
|
|
18
|
+
- @gradio/atoms@0.12.0
|
|
19
|
+
- @gradio/image@0.19.0
|
|
20
|
+
|
|
21
|
+
## 0.7.8
|
|
22
|
+
|
|
23
|
+
### Dependency updates
|
|
24
|
+
|
|
25
|
+
- @gradio/image@0.18.0
|
|
26
|
+
- @gradio/video@0.12.0
|
|
27
|
+
|
|
3
28
|
## 0.7.7
|
|
4
29
|
|
|
5
30
|
### Dependency updates
|
package/Index.svelte
CHANGED
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
export let interactive: boolean;
|
|
53
53
|
export let root: string;
|
|
54
54
|
export let file_count: "single" | "multiple" | "directory";
|
|
55
|
+
export let max_plain_text_length: number;
|
|
55
56
|
|
|
56
57
|
let dragging: boolean;
|
|
57
58
|
</script>
|
|
@@ -109,5 +110,6 @@
|
|
|
109
110
|
disabled={!interactive}
|
|
110
111
|
upload={(...args) => gradio.client.upload(...args)}
|
|
111
112
|
stream_handler={(...args) => gradio.client.stream(...args)}
|
|
113
|
+
{max_plain_text_length}
|
|
112
114
|
/>
|
|
113
115
|
</Block>
|
package/dist/Index.svelte
CHANGED
|
@@ -36,6 +36,7 @@ export let autoscroll = true;
|
|
|
36
36
|
export let interactive;
|
|
37
37
|
export let root;
|
|
38
38
|
export let file_count;
|
|
39
|
+
export let max_plain_text_length;
|
|
39
40
|
let dragging;
|
|
40
41
|
</script>
|
|
41
42
|
|
|
@@ -92,5 +93,6 @@ let dragging;
|
|
|
92
93
|
disabled={!interactive}
|
|
93
94
|
upload={(...args) => gradio.client.upload(...args)}
|
|
94
95
|
stream_handler={(...args) => gradio.client.stream(...args)}
|
|
96
|
+
{max_plain_text_length}
|
|
95
97
|
/>
|
|
96
98
|
</Block>
|
package/dist/Index.svelte.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ declare const __propDef: {
|
|
|
48
48
|
interactive: boolean;
|
|
49
49
|
root: string;
|
|
50
50
|
file_count: "single" | "multiple" | "directory";
|
|
51
|
+
max_plain_text_length: number;
|
|
51
52
|
};
|
|
52
53
|
events: {
|
|
53
54
|
[evt: string]: CustomEvent<any>;
|
|
@@ -168,4 +169,7 @@ export default class Index extends SvelteComponent<IndexProps, IndexEvents, Inde
|
|
|
168
169
|
get file_count(): "single" | "multiple" | "directory";
|
|
169
170
|
/**accessor*/
|
|
170
171
|
set file_count(_: "single" | "multiple" | "directory");
|
|
172
|
+
get max_plain_text_length(): number;
|
|
173
|
+
/**accessor*/
|
|
174
|
+
set max_plain_text_length(_: number);
|
|
171
175
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script>import {
|
|
2
|
+
onMount,
|
|
2
3
|
beforeUpdate,
|
|
3
4
|
afterUpdate,
|
|
4
5
|
createEventDispatcher,
|
|
@@ -42,6 +43,7 @@ export let max_file_size = null;
|
|
|
42
43
|
export let upload;
|
|
43
44
|
export let stream_handler;
|
|
44
45
|
export let file_count = "multiple";
|
|
46
|
+
export let max_plain_text_length = 1e3;
|
|
45
47
|
let upload_component;
|
|
46
48
|
let hidden_upload;
|
|
47
49
|
let el;
|
|
@@ -79,10 +81,12 @@ async function handle_change() {
|
|
|
79
81
|
dispatch("input");
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
|
-
|
|
84
|
+
onMount(() => {
|
|
83
85
|
if (autofocus && el !== null) {
|
|
84
86
|
el.focus();
|
|
85
87
|
}
|
|
88
|
+
});
|
|
89
|
+
afterUpdate(() => {
|
|
86
90
|
if (can_scroll && autoscroll) {
|
|
87
91
|
scroll();
|
|
88
92
|
}
|
|
@@ -155,10 +159,22 @@ function handle_stop() {
|
|
|
155
159
|
function handle_submit() {
|
|
156
160
|
dispatch("submit");
|
|
157
161
|
}
|
|
158
|
-
function handle_paste(event) {
|
|
162
|
+
async function handle_paste(event) {
|
|
159
163
|
if (!event.clipboardData)
|
|
160
164
|
return;
|
|
161
165
|
const items = event.clipboardData.items;
|
|
166
|
+
const text = event.clipboardData.getData("text");
|
|
167
|
+
if (text && text.length > max_plain_text_length) {
|
|
168
|
+
event.preventDefault();
|
|
169
|
+
const file = new window.File([text], "pasted_text.txt", {
|
|
170
|
+
type: "text/plain",
|
|
171
|
+
lastModified: Date.now()
|
|
172
|
+
});
|
|
173
|
+
if (upload_component) {
|
|
174
|
+
upload_component.load_files([file]);
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
162
178
|
for (let index in items) {
|
|
163
179
|
const item = items[index];
|
|
164
180
|
if (item.kind === "file" && item.type.includes("image")) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gradio/multimodaltextbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Gradio UI packages",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"./package.json": "./package.json"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@gradio/atoms": "^0.
|
|
26
|
-
"@gradio/statustracker": "^0.9.
|
|
27
|
-
"@gradio/icons": "^0.8.1",
|
|
25
|
+
"@gradio/atoms": "^0.12.0",
|
|
26
|
+
"@gradio/statustracker": "^0.9.7",
|
|
28
27
|
"@gradio/utils": "^0.9.0",
|
|
29
|
-
"@gradio/upload": "^0.14.
|
|
30
|
-
"@gradio/
|
|
31
|
-
"@gradio/
|
|
28
|
+
"@gradio/upload": "^0.14.3",
|
|
29
|
+
"@gradio/video": "^0.12.1",
|
|
30
|
+
"@gradio/image": "^0.19.0",
|
|
31
|
+
"@gradio/icons": "^0.8.1",
|
|
32
32
|
"@gradio/client": "^1.8.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import {
|
|
3
|
+
onMount,
|
|
3
4
|
beforeUpdate,
|
|
4
5
|
afterUpdate,
|
|
5
6
|
createEventDispatcher,
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
export let upload: Client["upload"];
|
|
48
49
|
export let stream_handler: Client["stream"];
|
|
49
50
|
export let file_count: "single" | "multiple" | "directory" = "multiple";
|
|
51
|
+
export let max_plain_text_length = 1000;
|
|
50
52
|
|
|
51
53
|
let upload_component: Upload;
|
|
52
54
|
let hidden_upload: HTMLInputElement;
|
|
@@ -101,10 +103,13 @@
|
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
|
|
104
|
-
|
|
106
|
+
onMount(() => {
|
|
105
107
|
if (autofocus && el !== null) {
|
|
106
108
|
el.focus();
|
|
107
109
|
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
afterUpdate(() => {
|
|
108
113
|
if (can_scroll && autoscroll) {
|
|
109
114
|
scroll();
|
|
110
115
|
}
|
|
@@ -194,9 +199,23 @@
|
|
|
194
199
|
dispatch("submit");
|
|
195
200
|
}
|
|
196
201
|
|
|
197
|
-
function handle_paste(event: ClipboardEvent): void {
|
|
202
|
+
async function handle_paste(event: ClipboardEvent): Promise<void> {
|
|
198
203
|
if (!event.clipboardData) return;
|
|
199
204
|
const items = event.clipboardData.items;
|
|
205
|
+
const text = event.clipboardData.getData("text");
|
|
206
|
+
|
|
207
|
+
if (text && text.length > max_plain_text_length) {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
const file = new window.File([text], "pasted_text.txt", {
|
|
210
|
+
type: "text/plain",
|
|
211
|
+
lastModified: Date.now()
|
|
212
|
+
});
|
|
213
|
+
if (upload_component) {
|
|
214
|
+
upload_component.load_files([file]);
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
|
|
200
219
|
for (let index in items) {
|
|
201
220
|
const item = items[index];
|
|
202
221
|
if (item.kind === "file" && item.type.includes("image")) {
|