@gradio/core 0.2.0 → 0.3.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,97 @@
1
1
  # @gradio/core
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Features
6
+
7
+ - [#9786](https://github.com/gradio-app/gradio/pull/9786) [`f109497`](https://github.com/gradio-app/gradio/commit/f109497e8281b3429b58e3f6a293dd63ebcc08af) - Fix frontend errors on ApiDocs and RecordingSnippet. Thanks @whitphx!
8
+
9
+ ### Dependency updates
10
+
11
+ - @gradio/code@0.10.7
12
+ - @gradio/paramviewer@0.5.6
13
+ - @gradio/video@0.11.7
14
+ - @gradio/statustracker@0.9.4
15
+ - @gradio/button@0.3.6
16
+ - @gradio/atoms@0.11.0
17
+ - @gradio/column@0.2.0
18
+ - @gradio/file@0.11.0
19
+ - @gradio/upload@0.14.0
20
+ - @gradio/checkbox@0.4.6
21
+ - @gradio/wasm@0.15.0
22
+ - @gradio/image@0.16.7
23
+ - @gradio/gallery@0.13.7
24
+ - @gradio/plot@0.9.1
25
+ - @gradio/textbox@0.8.5
26
+
27
+ ## 0.2.1
28
+
29
+ ### Dependency updates
30
+
31
+ - @gradio/video@0.11.6
32
+ - @gradio/statustracker@0.9.3
33
+ - @gradio/atoms@0.10.1
34
+ - @gradio/client@1.7.1
35
+ - @gradio/image@0.16.6
36
+ - @gradio/upload@0.13.5
37
+ - @gradio/plot@0.9.0
38
+ - @gradio/gallery@0.13.6
39
+ - @gradio/tabs@0.3.3
40
+ - @gradio/tabitem@0.3.3
41
+ - @gradio/code@0.10.6
42
+ - @gradio/paramviewer@0.5.5
43
+ - @gradio/button@0.3.5
44
+ - @gradio/textbox@0.8.4
45
+ - @gradio/column@0.2.0
46
+ - @gradio/checkbox@0.4.5
47
+ - @gradio/file@0.10.6
48
+
49
+ ## 0.2.1
50
+
51
+ ### Fixes
52
+
53
+ - [#9653](https://github.com/gradio-app/gradio/pull/9653) [`61cd768`](https://github.com/gradio-app/gradio/commit/61cd768490a12f5d63101d5434092bcd1cfc43a8) - Ensures tabs with visible set to false are not visible. Thanks @hannahblair!
54
+
55
+ ### Dependency updates
56
+
57
+ - @gradio/button@0.3.4
58
+ - @gradio/video@0.11.5
59
+ - @gradio/statustracker@0.9.2
60
+ - @gradio/atoms@0.10.0
61
+ - @gradio/icons@0.8.1
62
+ - @gradio/upload@0.13.4
63
+ - @gradio/plot@0.8.0
64
+ - @gradio/gallery@0.13.5
65
+ - @gradio/tabs@0.3.2
66
+ - @gradio/column@0.2.0
67
+ - @gradio/tabitem@0.3.2
68
+ - @gradio/code@0.10.5
69
+ - @gradio/paramviewer@0.5.4
70
+ - @gradio/textbox@0.8.3
71
+ - @gradio/file@0.10.5
72
+ - @gradio/checkbox@0.4.4
73
+ - @gradio/image@0.16.5
74
+
75
+ ## 0.2.0
76
+
77
+ ### Dependency updates
78
+
79
+ - @gradio/markdown@0.10.3
80
+ - @gradio/code@0.10.4
81
+ - @gradio/paramviewer@0.5.3
82
+ - @gradio/statustracker@0.9.1
83
+ - @gradio/upload@0.13.3
84
+ - @gradio/button@0.3.3
85
+ - @gradio/video@0.11.4
86
+ - @gradio/atoms@0.9.2
87
+ - @gradio/gallery@0.13.4
88
+ - @gradio/plot@0.7.3
89
+ - @gradio/column@0.2.0
90
+ - @gradio/textbox@0.8.2
91
+ - @gradio/checkbox@0.4.3
92
+ - @gradio/file@0.10.4
93
+ - @gradio/image@0.16.4
94
+
3
95
  ## 0.2.0
4
96
 
5
97
  ### Features
@@ -651,7 +651,7 @@ onMount(() => {
651
651
  on:close={(event) => {
652
652
  set_api_docs_visible(false);
653
653
  api_calls = [];
654
- api_recorder_visible = event.detail.api_recorder_visible;
654
+ api_recorder_visible = event.detail?.api_recorder_visible;
655
655
  }}
656
656
  {dependencies}
657
657
  {root}
@@ -115,6 +115,7 @@ onMount(() => {
115
115
  {api_calls}
116
116
  {dependencies}
117
117
  {root}
118
+ api_prefix={app.api_prefix}
118
119
  short_root={space_id || root}
119
120
  {username}
120
121
  />
@@ -5,6 +5,7 @@ import { onMount, tick } from "svelte";
5
5
  export let dependencies;
6
6
  export let short_root;
7
7
  export let root;
8
+ export let api_prefix = "";
8
9
  export let current_language;
9
10
  export let username;
10
11
  let python_code;
@@ -13,7 +14,9 @@ let js_code;
13
14
  let bash_code;
14
15
  export let api_calls = [];
15
16
  async function get_info() {
16
- let response = await fetch(root + "info/?all_endpoints=true");
17
+ let response = await fetch(
18
+ root.replace(/\/$/, "") + api_prefix + "/info/?all_endpoints=true"
19
+ );
17
20
  let data = await response.json();
18
21
  return data;
19
22
  }
@@ -146,8 +149,7 @@ const app = await Client.connect(<span class="token string">"{short_root}"</span
146
149
  await client.predict(<span
147
150
  class="api-name">
148
151
  "/{api_name}"</span
149
- >{#if call},
150
- {/if}{call});
152
+ >{#if call}, {call}{/if});
151
153
  {/each}</pre>
152
154
  </div>
153
155
  </code>
@@ -5,6 +5,7 @@ declare const __propDef: {
5
5
  dependencies: Dependency[];
6
6
  short_root: string;
7
7
  root: string;
8
+ api_prefix?: string | undefined;
8
9
  current_language: "python" | "javascript" | "bash";
9
10
  username: string | null;
10
11
  api_calls?: Payload[] | undefined;
@@ -7,10 +7,6 @@ export interface UpdateTransaction {
7
7
  value: any;
8
8
  prop: string;
9
9
  }
10
- /**
11
- * Create a store with the layout and a map of targets
12
- * @returns A store with the layout and a map of targets
13
- */
14
10
  export declare function create_components(initial_layout: ComponentMeta | undefined): {
15
11
  layout: Writable<ComponentMeta>;
16
12
  targets: Writable<TargetMap>;
package/dist/src/init.js CHANGED
@@ -11,6 +11,7 @@ const raf = is_browser
11
11
  * Create a store with the layout and a map of targets
12
12
  * @returns A store with the layout and a map of targets
13
13
  */
14
+ let has_run = new Set();
14
15
  export function create_components(initial_layout) {
15
16
  let _component_map;
16
17
  let target_map = writable({});
@@ -145,17 +146,21 @@ export function create_components(initial_layout) {
145
146
  if (node.children) {
146
147
  instance.children = await Promise.all(node.children.map((v) => walk_layout(v, root, instance)));
147
148
  }
148
- if (instance.type === "tabs") {
149
- instance.children =
150
- instance?.children?.map((c) => ({
151
- ...c,
149
+ if (instance.type === "tabs" && !instance.props.initial_tabs) {
150
+ const tab_items_props = node.children?.map((c) => {
151
+ const instance = instance_map[c.id];
152
+ // console.log("tabs", JSON.stringify(instance.props, null, 2));
153
+ instance.props.id ??= c.id;
154
+ return {
155
+ type: instance.type,
152
156
  props: {
153
- ...c.props,
154
- id: c.props.id || c.id
157
+ ...instance.props,
158
+ id: instance.props.id
155
159
  }
156
- })) || [];
157
- const child_tab_items = instance.children?.filter((child) => child.type === "tabitem");
158
- instance.props.inital_tabs = child_tab_items?.map((child) => ({
160
+ };
161
+ }) || [];
162
+ const child_tab_items = tab_items_props.filter((child) => child.type === "tabitem");
163
+ instance.props.initial_tabs = child_tab_items?.map((child) => ({
159
164
  label: child.props.label,
160
165
  id: child.props.id,
161
166
  visible: child.props.visible,
@@ -190,7 +195,7 @@ export function create_components(initial_layout) {
190
195
  new_value = new Set(update.value);
191
196
  else if (Array.isArray(update.value))
192
197
  new_value = [...update.value];
193
- else if (update.value === null)
198
+ else if (update.value == null)
194
199
  new_value = null;
195
200
  else if (typeof update.value === "object")
196
201
  new_value = { ...update.value };
@@ -0,0 +1,124 @@
1
+ {
2
+ "3D_model": {
3
+ "3d_model": "3D-malli"
4
+ },
5
+ "annotated_image": {
6
+ "annotated_image": "Annotoitu kuva"
7
+ },
8
+ "audio": {
9
+ "allow_recording_access": "Ole hyvä ja anna selaimelle ja sivustolle pääsy mikrofoniin.",
10
+ "audio": "Audio",
11
+ "record_from_microphone": "Äänitä mikrofonia",
12
+ "stop_recording": "Lopeta äänitys",
13
+ "no_device_support": "Medialaitteita ei voitu käyttää. Tarkista, että yhteys on salattu (https), paikallinen (localhost), tai ssl_verify on saanut voimassa olevan SSL-sertifikaatin. Tarkista, että olet antanut selaimelle pääsyn medialaitteeseen.",
14
+ "stop": "Stop",
15
+ "resume": "Jatka",
16
+ "record": "Äänitä",
17
+ "no_microphone": "Ei mikrofonia käytössä",
18
+ "pause": "Pause",
19
+ "play": "Play",
20
+ "waiting": "Odotetaan"
21
+ },
22
+ "blocks": {
23
+ "connection_can_break": "Mobiililaitteella yhteys voi katketa, jos vaihdat välilehteä tai laite menee lepotilaa. Tällöin menetät paikkasi jonossa.",
24
+ "long_requests_queue": "Spacessa on ruuhkaa ja jono on pitkä. Kopioi tämä Space hypätäksesi jonon ohi.",
25
+ "lost_connection": "Yhteys katkesi sivulta poistumisen seurauksena. Liitytään takaisin jonoon...",
26
+ "waiting_for_inputs": "Odotetaan latauksen valmistumista, ole hyvä ja yritä uudelleen."
27
+ },
28
+ "checkbox": {
29
+ "checkbox": "Valintaruutu",
30
+ "checkbox_group": "Valintaruuturyhmä"
31
+ },
32
+ "code": {
33
+ "code": "Koodi"
34
+ },
35
+ "color_picker": {
36
+ "color_picker": "Värivalitsin"
37
+ },
38
+ "common": {
39
+ "built_with": "tehty",
40
+ "built_with_gradio": "tehty Gradiolla",
41
+ "clear": "Poista",
42
+ "download": "Lataa",
43
+ "edit": "Muokkaa",
44
+ "empty": "Tyhjennä",
45
+ "error": "Virhe",
46
+ "hosted_on": "Hostattu",
47
+ "loading": "Ladataan",
48
+ "logo": "logo",
49
+ "or": "tai",
50
+ "remove": "Poista",
51
+ "share": "Jaa",
52
+ "submit": "Suorita",
53
+ "undo": "Kumoa",
54
+ "no_devices": "Laitetta ei löytynyt"
55
+ },
56
+ "dataframe": {
57
+ "incorrect_format": "Yhteensopimaton tiedostomuoto, vain CSV- ja TSV-tiedostoja tuetaan.",
58
+ "new_column": "Lisää sarake",
59
+ "new_row": "Lisää rivi",
60
+ "add_row_above": "Lisää rivi yläpuolelle",
61
+ "add_row_below": "Lisää rivi alle",
62
+ "add_column_left": "Lisää sarake vasemmalle",
63
+ "add_column_right": "Lisää sarake oikealle"
64
+ },
65
+ "dropdown": {
66
+ "dropdown": "Pudotusvalikko"
67
+ },
68
+ "errors": {
69
+ "build_error": "tapahtui virhe",
70
+ "config_error": "virhe asetuksissa",
71
+ "contact_page_author": "Kerro ylläpitäjälle virheestä.",
72
+ "no_app_file": "sovellustiedosto puuttuu",
73
+ "runtime_error": "ohjelman suorituksen aikana tapahtui virhe",
74
+ "space_not_working": "\"Space ei toimi, koska\" {0}",
75
+ "space_paused": "tila on tauolla",
76
+ "use_via_api": "Käytä rajapinnan kautta"
77
+ },
78
+ "file": {
79
+ "uploading": "Ladataan..."
80
+ },
81
+ "highlighted_text": {
82
+ "highlighted_text": "Korostettu teksti"
83
+ },
84
+ "image": {
85
+ "allow_webcam_access": "Ole hyvä ja anna lupa web-kameran käyttöön.",
86
+ "brush_color": "Siveltimen väri",
87
+ "brush_radius": "Siveltimen koko",
88
+ "image": "Kuva",
89
+ "remove_image": "Poista kuva",
90
+ "select_brush_color": "Valitse siveltimen väri",
91
+ "start_drawing": "Aloita piirtäminen",
92
+ "use_brush": "Käytä sivellintä"
93
+ },
94
+ "label": {
95
+ "label": "Tunniste"
96
+ },
97
+ "login": {
98
+ "enable_cookies": "Jos käytät Hugging Face Spacea Incognito-tilassa, sinun on otettava käyttöön kolmansien osapuolten evästeet..",
99
+ "incorrect_credentials": "Käyttäjätietoja ei löytynyt",
100
+ "login": "Kirjaudu sisään"
101
+ },
102
+ "number": {
103
+ "number": "Numero"
104
+ },
105
+ "plot": {
106
+ "plot": "Kuvaaja"
107
+ },
108
+ "radio": {
109
+ "radio": "Radio"
110
+ },
111
+ "slider": {
112
+ "slider": "Säädin"
113
+ },
114
+ "upload_text": {
115
+ "click_to_upload": "Lataa palvelimelle",
116
+ "drop_audio": "Vedä audiotiedosto tähän",
117
+ "drop_csv": "Vedä CSV tähän",
118
+ "drop_file": "Vedä tiedosto tähän",
119
+ "drop_image": "Vedä kuva tähän",
120
+ "drop_video": "Vedä video tähän",
121
+ "drop_gallery": "Vedä media tähän",
122
+ "paste_clipboard": "Liitä leikepöydältä"
123
+ }
124
+ }
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
1
  {
2
2
  "name": "@gradio/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "devDependencies": {
6
- "@gradio/annotatedimage": "^0.8.3",
7
- "@gradio/accordion": "^0.4.2",
8
- "@gradio/atoms": "^0.9.1",
9
- "@gradio/box": "^0.2.1",
10
- "@gradio/button": "^0.3.2",
11
- "@gradio/audio": "^0.14.3",
12
- "@gradio/chatbot": "^0.15.1",
13
- "@gradio/checkbox": "^0.4.2",
14
- "@gradio/checkboxgroup": "^0.6.2",
15
- "@gradio/client": "^1.7.0",
16
- "@gradio/code": "^0.10.3",
17
- "@gradio/colorpicker": "^0.4.2",
6
+ "@gradio/accordion": "^0.5.0",
7
+ "@gradio/annotatedimage": "^0.8.7",
8
+ "@gradio/audio": "^0.14.7",
9
+ "@gradio/atoms": "^0.11.0",
10
+ "@gradio/box": "^0.2.5",
11
+ "@gradio/button": "^0.3.6",
12
+ "@gradio/chatbot": "^0.16.2",
13
+ "@gradio/checkbox": "^0.4.6",
14
+ "@gradio/client": "^1.7.1",
15
+ "@gradio/checkboxgroup": "^0.6.6",
16
+ "@gradio/code": "^0.10.7",
17
+ "@gradio/colorpicker": "^0.4.6",
18
18
  "@gradio/column": "^0.2.0",
19
- "@gradio/dataframe": "^0.11.3",
20
- "@gradio/datetime": "^0.2.2",
21
- "@gradio/downloadbutton": "^0.2.2",
22
- "@gradio/dataset": "^0.3.4",
23
- "@gradio/dropdown": "^0.9.0",
24
- "@gradio/fileexplorer": "^0.5.3",
25
- "@gradio/fallback": "^0.4.2",
26
- "@gradio/file": "^0.10.3",
27
- "@gradio/form": "^0.2.1",
28
- "@gradio/gallery": "^0.13.3",
29
- "@gradio/highlightedtext": "^0.8.2",
19
+ "@gradio/dataframe": "^0.12.2",
20
+ "@gradio/datetime": "^0.2.6",
21
+ "@gradio/downloadbutton": "^0.2.6",
22
+ "@gradio/dataset": "^0.3.8",
23
+ "@gradio/dropdown": "^0.9.4",
24
+ "@gradio/fallback": "^0.4.6",
25
+ "@gradio/file": "^0.11.0",
26
+ "@gradio/fileexplorer": "^0.5.7",
27
+ "@gradio/form": "^0.2.5",
28
+ "@gradio/gallery": "^0.13.7",
30
29
  "@gradio/group": "^0.2.0",
31
- "@gradio/icons": "^0.8.0",
32
- "@gradio/html": "^0.4.2",
33
- "@gradio/image": "^0.16.3",
34
- "@gradio/imageeditor": "^0.11.3",
35
- "@gradio/json": "^0.5.2",
36
- "@gradio/label": "^0.4.2",
37
- "@gradio/model3d": "^0.13.3",
38
- "@gradio/markdown": "^0.10.2",
39
- "@gradio/multimodaltextbox": "^0.7.1",
40
- "@gradio/nativeplot": "^0.4.2",
41
- "@gradio/number": "^0.5.2",
42
- "@gradio/paramviewer": "^0.5.2",
43
- "@gradio/plot": "^0.7.2",
44
- "@gradio/radio": "^0.6.2",
30
+ "@gradio/highlightedtext": "^0.8.6",
31
+ "@gradio/html": "^0.4.6",
32
+ "@gradio/icons": "^0.8.1",
33
+ "@gradio/image": "^0.16.7",
34
+ "@gradio/imageeditor": "^0.11.7",
35
+ "@gradio/json": "^0.5.6",
36
+ "@gradio/markdown": "^0.11.2",
37
+ "@gradio/label": "^0.4.6",
38
+ "@gradio/model3d": "^0.13.7",
39
+ "@gradio/multimodaltextbox": "^0.7.5",
40
+ "@gradio/nativeplot": "^0.5.0",
41
+ "@gradio/number": "^0.5.6",
42
+ "@gradio/radio": "^0.6.6",
43
+ "@gradio/paramviewer": "^0.5.6",
44
+ "@gradio/plot": "^0.9.1",
45
45
  "@gradio/row": "^0.2.0",
46
- "@gradio/simpleimage": "^0.8.3",
47
- "@gradio/simpletextbox": "^0.3.2",
48
- "@gradio/simpledropdown": "^0.3.2",
49
- "@gradio/slider": "^0.5.2",
50
- "@gradio/statustracker": "^0.9.0",
46
+ "@gradio/simpledropdown": "^0.3.6",
47
+ "@gradio/simpleimage": "^0.8.7",
48
+ "@gradio/simpletextbox": "^0.3.6",
49
+ "@gradio/slider": "^0.5.6",
51
50
  "@gradio/state": "^0.1.2",
52
- "@gradio/tabitem": "^0.3.1",
53
- "@gradio/tabs": "^0.3.1",
54
- "@gradio/textbox": "^0.8.1",
51
+ "@gradio/statustracker": "^0.9.4",
52
+ "@gradio/tabitem": "^0.3.3",
53
+ "@gradio/tabs": "^0.3.3",
54
+ "@gradio/textbox": "^0.8.5",
55
55
  "@gradio/theme": "^0.3.0",
56
56
  "@gradio/timer": "^0.4.0",
57
- "@gradio/uploadbutton": "^0.7.2",
58
- "@gradio/upload": "^0.13.2",
59
- "@gradio/video": "^0.11.3",
57
+ "@gradio/upload": "^0.14.0",
58
+ "@gradio/uploadbutton": "^0.7.6",
60
59
  "@gradio/utils": "^0.7.0",
61
- "@gradio/wasm": "^0.14.2"
60
+ "@gradio/wasm": "^0.15.0",
61
+ "@gradio/video": "^0.11.7"
62
62
  },
63
63
  "msw": {
64
64
  "workerDirectory": "public"
package/src/Blocks.svelte CHANGED
@@ -806,7 +806,7 @@
806
806
  on:close={(event) => {
807
807
  set_api_docs_visible(false);
808
808
  api_calls = [];
809
- api_recorder_visible = event.detail.api_recorder_visible;
809
+ api_recorder_visible = event.detail?.api_recorder_visible;
810
810
  }}
811
811
  {dependencies}
812
812
  {root}
@@ -145,6 +145,7 @@
145
145
  {api_calls}
146
146
  {dependencies}
147
147
  {root}
148
+ api_prefix={app.api_prefix}
148
149
  short_root={space_id || root}
149
150
  {username}
150
151
  />
@@ -8,6 +8,7 @@
8
8
  export let dependencies: Dependency[];
9
9
  export let short_root: string;
10
10
  export let root: string;
11
+ export let api_prefix = "";
11
12
  export let current_language: "python" | "javascript" | "bash";
12
13
  export let username: string | null;
13
14
 
@@ -22,7 +23,9 @@
22
23
  named_endpoints: any;
23
24
  unnamed_endpoints: any;
24
25
  }> {
25
- let response = await fetch(root + "info/?all_endpoints=true");
26
+ let response = await fetch(
27
+ root.replace(/\/$/, "") + api_prefix + "/info/?all_endpoints=true"
28
+ );
26
29
  let data = await response.json();
27
30
  return data;
28
31
  }
@@ -160,8 +163,7 @@ const app = await Client.connect(<span class="token string">"{short_root}"</span
160
163
  await client.predict(<span
161
164
  class="api-name">
162
165
  "/{api_name}"</span
163
- >{#if call},
164
- {/if}{call});
166
+ >{#if call}, {call}{/if});
165
167
  {/each}</pre>
166
168
  </div>
167
169
  </code>
package/src/init.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { writable, type Writable, get } from "svelte/store";
2
+
2
3
  import type {
3
4
  ComponentMeta,
4
5
  Dependency,
@@ -27,6 +28,7 @@ const raf = is_browser
27
28
  * Create a store with the layout and a map of targets
28
29
  * @returns A store with the layout and a map of targets
29
30
  */
31
+ let has_run = new Set<number>();
30
32
  export function create_components(initial_layout: ComponentMeta | undefined): {
31
33
  layout: Writable<ComponentMeta>;
32
34
  targets: Writable<TargetMap>;
@@ -290,19 +292,26 @@ export function create_components(initial_layout: ComponentMeta | undefined): {
290
292
  );
291
293
  }
292
294
 
293
- if (instance.type === "tabs") {
294
- instance.children =
295
- instance?.children?.map((c) => ({
296
- ...c,
297
- props: {
298
- ...c.props,
299
- id: c.props.id || c.id
300
- }
301
- })) || [];
302
- const child_tab_items = instance.children?.filter(
295
+ if (instance.type === "tabs" && !instance.props.initial_tabs) {
296
+ const tab_items_props =
297
+ node.children?.map((c) => {
298
+ const instance = instance_map[c.id];
299
+ // console.log("tabs", JSON.stringify(instance.props, null, 2));
300
+ instance.props.id ??= c.id;
301
+ return {
302
+ type: instance.type,
303
+ props: {
304
+ ...(instance.props as any),
305
+ id: instance.props.id
306
+ }
307
+ };
308
+ }) || [];
309
+
310
+ const child_tab_items = tab_items_props.filter(
303
311
  (child) => child.type === "tabitem"
304
312
  );
305
- instance.props.inital_tabs = child_tab_items?.map((child) => ({
313
+
314
+ instance.props.initial_tabs = child_tab_items?.map((child) => ({
306
315
  label: child.props.label,
307
316
  id: child.props.id,
308
317
  visible: child.props.visible,
@@ -337,7 +346,7 @@ export function create_components(initial_layout: ComponentMeta | undefined): {
337
346
  else if (update.value instanceof Set)
338
347
  new_value = new Set(update.value);
339
348
  else if (Array.isArray(update.value)) new_value = [...update.value];
340
- else if (update.value === null) new_value = null;
349
+ else if (update.value == null) new_value = null;
341
350
  else if (typeof update.value === "object")
342
351
  new_value = { ...update.value };
343
352
  else new_value = update.value;
@@ -0,0 +1,124 @@
1
+ {
2
+ "3D_model": {
3
+ "3d_model": "3D-malli"
4
+ },
5
+ "annotated_image": {
6
+ "annotated_image": "Annotoitu kuva"
7
+ },
8
+ "audio": {
9
+ "allow_recording_access": "Ole hyvä ja anna selaimelle ja sivustolle pääsy mikrofoniin.",
10
+ "audio": "Audio",
11
+ "record_from_microphone": "Äänitä mikrofonia",
12
+ "stop_recording": "Lopeta äänitys",
13
+ "no_device_support": "Medialaitteita ei voitu käyttää. Tarkista, että yhteys on salattu (https), paikallinen (localhost), tai ssl_verify on saanut voimassa olevan SSL-sertifikaatin. Tarkista, että olet antanut selaimelle pääsyn medialaitteeseen.",
14
+ "stop": "Stop",
15
+ "resume": "Jatka",
16
+ "record": "Äänitä",
17
+ "no_microphone": "Ei mikrofonia käytössä",
18
+ "pause": "Pause",
19
+ "play": "Play",
20
+ "waiting": "Odotetaan"
21
+ },
22
+ "blocks": {
23
+ "connection_can_break": "Mobiililaitteella yhteys voi katketa, jos vaihdat välilehteä tai laite menee lepotilaa. Tällöin menetät paikkasi jonossa.",
24
+ "long_requests_queue": "Spacessa on ruuhkaa ja jono on pitkä. Kopioi tämä Space hypätäksesi jonon ohi.",
25
+ "lost_connection": "Yhteys katkesi sivulta poistumisen seurauksena. Liitytään takaisin jonoon...",
26
+ "waiting_for_inputs": "Odotetaan latauksen valmistumista, ole hyvä ja yritä uudelleen."
27
+ },
28
+ "checkbox": {
29
+ "checkbox": "Valintaruutu",
30
+ "checkbox_group": "Valintaruuturyhmä"
31
+ },
32
+ "code": {
33
+ "code": "Koodi"
34
+ },
35
+ "color_picker": {
36
+ "color_picker": "Värivalitsin"
37
+ },
38
+ "common": {
39
+ "built_with": "tehty",
40
+ "built_with_gradio": "tehty Gradiolla",
41
+ "clear": "Poista",
42
+ "download": "Lataa",
43
+ "edit": "Muokkaa",
44
+ "empty": "Tyhjennä",
45
+ "error": "Virhe",
46
+ "hosted_on": "Hostattu",
47
+ "loading": "Ladataan",
48
+ "logo": "logo",
49
+ "or": "tai",
50
+ "remove": "Poista",
51
+ "share": "Jaa",
52
+ "submit": "Suorita",
53
+ "undo": "Kumoa",
54
+ "no_devices": "Laitetta ei löytynyt"
55
+ },
56
+ "dataframe": {
57
+ "incorrect_format": "Yhteensopimaton tiedostomuoto, vain CSV- ja TSV-tiedostoja tuetaan.",
58
+ "new_column": "Lisää sarake",
59
+ "new_row": "Lisää rivi",
60
+ "add_row_above": "Lisää rivi yläpuolelle",
61
+ "add_row_below": "Lisää rivi alle",
62
+ "add_column_left": "Lisää sarake vasemmalle",
63
+ "add_column_right": "Lisää sarake oikealle"
64
+ },
65
+ "dropdown": {
66
+ "dropdown": "Pudotusvalikko"
67
+ },
68
+ "errors": {
69
+ "build_error": "tapahtui virhe",
70
+ "config_error": "virhe asetuksissa",
71
+ "contact_page_author": "Kerro ylläpitäjälle virheestä.",
72
+ "no_app_file": "sovellustiedosto puuttuu",
73
+ "runtime_error": "ohjelman suorituksen aikana tapahtui virhe",
74
+ "space_not_working": "\"Space ei toimi, koska\" {0}",
75
+ "space_paused": "tila on tauolla",
76
+ "use_via_api": "Käytä rajapinnan kautta"
77
+ },
78
+ "file": {
79
+ "uploading": "Ladataan..."
80
+ },
81
+ "highlighted_text": {
82
+ "highlighted_text": "Korostettu teksti"
83
+ },
84
+ "image": {
85
+ "allow_webcam_access": "Ole hyvä ja anna lupa web-kameran käyttöön.",
86
+ "brush_color": "Siveltimen väri",
87
+ "brush_radius": "Siveltimen koko",
88
+ "image": "Kuva",
89
+ "remove_image": "Poista kuva",
90
+ "select_brush_color": "Valitse siveltimen väri",
91
+ "start_drawing": "Aloita piirtäminen",
92
+ "use_brush": "Käytä sivellintä"
93
+ },
94
+ "label": {
95
+ "label": "Tunniste"
96
+ },
97
+ "login": {
98
+ "enable_cookies": "Jos käytät Hugging Face Spacea Incognito-tilassa, sinun on otettava käyttöön kolmansien osapuolten evästeet..",
99
+ "incorrect_credentials": "Käyttäjätietoja ei löytynyt",
100
+ "login": "Kirjaudu sisään"
101
+ },
102
+ "number": {
103
+ "number": "Numero"
104
+ },
105
+ "plot": {
106
+ "plot": "Kuvaaja"
107
+ },
108
+ "radio": {
109
+ "radio": "Radio"
110
+ },
111
+ "slider": {
112
+ "slider": "Säädin"
113
+ },
114
+ "upload_text": {
115
+ "click_to_upload": "Lataa palvelimelle",
116
+ "drop_audio": "Vedä audiotiedosto tähän",
117
+ "drop_csv": "Vedä CSV tähän",
118
+ "drop_file": "Vedä tiedosto tähän",
119
+ "drop_image": "Vedä kuva tähän",
120
+ "drop_video": "Vedä video tähän",
121
+ "drop_gallery": "Vedä media tähän",
122
+ "paste_clipboard": "Liitä leikepöydältä"
123
+ }
124
+ }