@gradio/gallery 0.15.35-dev.1 → 0.15.35

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.
@@ -1,60 +1,64 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { SelectData } from "@gradio/utils";
3
2
  import type { GalleryImage, GalleryVideo } from "../types";
4
3
  import { FileData } from "@gradio/client";
5
4
  import type { Client } from "@gradio/client";
6
5
  import type { I18nFormatter } from "@gradio/utils";
7
- declare const __propDef: {
8
- props: {
9
- show_label?: boolean;
10
- label: string;
11
- value?: (GalleryImage | GalleryVideo)[] | null;
12
- columns?: number | number[] | undefined;
13
- rows?: number | number[] | undefined;
14
- height?: number | "auto";
15
- preview: boolean;
16
- allow_preview?: boolean;
17
- object_fit?: "contain" | "cover" | "fill" | "none" | "scale-down";
18
- show_share_button?: boolean;
19
- show_download_button?: boolean;
20
- i18n: I18nFormatter;
21
- selected_index?: number | null;
22
- interactive: boolean;
23
- _fetch: typeof fetch;
24
- mode?: "normal" | "minimal";
25
- show_fullscreen_button?: boolean;
26
- display_icon_button_wrapper_top_corner?: boolean;
27
- fullscreen?: boolean;
28
- root?: string;
29
- file_types?: string[] | null;
30
- max_file_size?: number | null;
31
- upload?: Client["upload"] | undefined;
32
- stream_handler?: Client["stream"] | undefined;
33
- fit_columns?: boolean;
6
+ 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> {
7
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
8
+ $$bindings?: Bindings;
9
+ } & Exports;
10
+ (internal: unknown, props: Props & {
11
+ $$events?: Events;
12
+ $$slots?: Slots;
13
+ }): Exports & {
14
+ $set?: any;
15
+ $on?: any;
34
16
  };
35
- events: {
36
- fullscreen: CustomEvent<any>;
37
- share: CustomEvent<import("@gradio/utils").ShareData>;
38
- error: CustomEvent<any>;
39
- change: CustomEvent<undefined>;
40
- select: CustomEvent<SelectData>;
41
- preview_open: CustomEvent<undefined>;
42
- preview_close: CustomEvent<undefined>;
43
- delete: CustomEvent<{
44
- file: FileData;
45
- index: number;
46
- }>;
47
- upload: CustomEvent<any>;
48
- } & {
49
- [evt: string]: CustomEvent<any>;
50
- };
51
- slots: {};
52
- exports?: {} | undefined;
53
- bindings?: string | undefined;
54
- };
55
- export type GalleryProps = typeof __propDef.props;
56
- export type GalleryEvents = typeof __propDef.events;
57
- export type GallerySlots = typeof __propDef.slots;
58
- export default class Gallery extends SvelteComponent<GalleryProps, GalleryEvents, GallerySlots> {
17
+ z_$$bindings?: Bindings;
59
18
  }
60
- export {};
19
+ declare const Gallery: $$__sveltets_2_IsomorphicComponent<{
20
+ show_label?: boolean;
21
+ label: string;
22
+ value?: (GalleryImage | GalleryVideo)[] | null;
23
+ columns?: number | number[] | undefined;
24
+ rows?: number | number[] | undefined;
25
+ height?: number | "auto";
26
+ preview: boolean;
27
+ allow_preview?: boolean;
28
+ object_fit?: "contain" | "cover" | "fill" | "none" | "scale-down";
29
+ show_share_button?: boolean;
30
+ show_download_button?: boolean;
31
+ i18n: I18nFormatter;
32
+ selected_index?: number | null;
33
+ interactive: boolean;
34
+ _fetch: typeof fetch;
35
+ mode?: "normal" | "minimal";
36
+ show_fullscreen_button?: boolean;
37
+ display_icon_button_wrapper_top_corner?: boolean;
38
+ fullscreen?: boolean;
39
+ root?: string;
40
+ file_types?: string[] | null;
41
+ max_file_size?: number | null;
42
+ upload?: Client["upload"] | undefined;
43
+ stream_handler?: Client["stream"] | undefined;
44
+ fit_columns?: boolean;
45
+ upload_promise?: Promise<any> | null;
46
+ }, {
47
+ fullscreen: CustomEvent<any>;
48
+ share: CustomEvent<import("@gradio/utils").ShareData>;
49
+ error: CustomEvent<any>;
50
+ change: CustomEvent<undefined>;
51
+ select: CustomEvent<SelectData>;
52
+ preview_open: CustomEvent<undefined>;
53
+ preview_close: CustomEvent<undefined>;
54
+ delete: CustomEvent<{
55
+ file: FileData;
56
+ index: number;
57
+ }>;
58
+ upload: CustomEvent<FileData | FileData[]>;
59
+ clear: CustomEvent<undefined>;
60
+ } & {
61
+ [evt: string]: CustomEvent<any>;
62
+ }, {}, {}, string>;
63
+ type Gallery = InstanceType<typeof Gallery>;
64
+ export default Gallery;
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FileData } from "@gradio/client";
1
+ import type { FileData, SelectData } from "@gradio/client";
2
2
  export interface GalleryImage {
3
3
  image: FileData;
4
4
  caption: string | null;
@@ -7,3 +7,32 @@ export interface GalleryVideo {
7
7
  video: FileData;
8
8
  caption: string | null;
9
9
  }
10
+ export type GalleryData = GalleryImage | GalleryVideo;
11
+ export interface GalleryProps {
12
+ value: GalleryData[] | null;
13
+ file_types: string[] | null;
14
+ columns: number | number[] | undefined;
15
+ rows: number | number[] | undefined;
16
+ height: number | "auto";
17
+ preview: boolean;
18
+ allow_preview: boolean;
19
+ selected_index: number | null;
20
+ object_fit: "contain" | "cover" | "fill" | "none" | "scale-down";
21
+ buttons: string[];
22
+ type: "numpy" | "pil" | "filepath";
23
+ fit_columns: boolean;
24
+ }
25
+ export interface GalleryEvents {
26
+ change: GalleryData[] | null;
27
+ upload: GalleryData[] | null;
28
+ select: SelectData;
29
+ delete: {
30
+ file: FileData;
31
+ index: number;
32
+ };
33
+ preview_open: never;
34
+ preview_close: never;
35
+ clear_status: any;
36
+ share: any;
37
+ error: any;
38
+ }
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "name": "@gradio/gallery",
3
- "version": "0.15.35-dev.1",
3
+ "version": "0.15.35",
4
4
  "description": "Gradio UI packages",
5
5
  "type": "module",
6
6
  "author": "",
7
7
  "license": "ISC",
8
8
  "private": false,
9
9
  "dependencies": {
10
- "dequal": "^2.0.2",
11
- "@gradio/client": "^2.0.0-dev.1",
12
- "@gradio/icons": "^0.14.0",
13
- "@gradio/atoms": "^0.18.1",
14
- "@gradio/image": "^0.23.2-dev.0",
15
- "@gradio/statustracker": "^0.11.1",
16
- "@gradio/upload": "^0.17.2-dev.0",
17
- "@gradio/utils": "^0.10.2",
18
- "@gradio/file": "^0.13.1-dev.0",
19
- "@gradio/video": "^0.17.0-dev.0"
10
+ "dequal": "^2.0.3",
11
+ "@gradio/atoms": "^0.19.0",
12
+ "@gradio/client": "^2.0.0",
13
+ "@gradio/file": "^0.13.1",
14
+ "@gradio/icons": "^0.15.0",
15
+ "@gradio/statustracker": "^0.12.0",
16
+ "@gradio/image": "^0.24.0",
17
+ "@gradio/upload": "^0.17.2",
18
+ "@gradio/utils": "^0.10.3",
19
+ "@gradio/video": "^0.17.0"
20
20
  },
21
21
  "devDependencies": {
22
- "@gradio/preview": "^0.14.0"
22
+ "@gradio/preview": "^0.15.0"
23
23
  },
24
24
  "main": "./Index.svelte",
25
25
  "main_changeset": true,
@@ -42,7 +42,7 @@
42
42
  }
43
43
  },
44
44
  "peerDependencies": {
45
- "svelte": "^4.0.0"
45
+ "svelte": "^5.43.4"
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",
@@ -56,6 +56,7 @@
56
56
  export let upload: Client["upload"] | undefined = undefined;
57
57
  export let stream_handler: Client["stream"] | undefined = undefined;
58
58
  export let fit_columns = true;
59
+ export let upload_promise: Promise<any> | null = null;
59
60
 
60
61
  let is_full_screen = false;
61
62
  let image_container: HTMLElement;
@@ -69,6 +70,7 @@
69
70
  delete: { file: FileData; index: number };
70
71
  upload: FileData | FileData[];
71
72
  error: string;
73
+ clear: undefined;
72
74
  }>();
73
75
 
74
76
  // tracks whether the value of the gallery was reset
@@ -280,7 +282,7 @@
280
282
  window.removeEventListener("resize", check_thumbnails_overflow);
281
283
  });
282
284
 
283
- $: resolved_value, check_thumbnails_overflow();
285
+ $: (resolved_value, check_thumbnails_overflow());
284
286
  $: if (container_element) {
285
287
  check_thumbnails_overflow();
286
288
  }
@@ -321,7 +323,7 @@
321
323
  {:else}
322
324
  <div class="gallery-container" bind:this={image_container}>
323
325
  {#if selected_media && allow_preview}
324
- <button
326
+ <span
325
327
  on:keydown={on_keydown}
326
328
  class="preview"
327
329
  class:minimal={mode === "minimal"}
@@ -387,12 +389,14 @@
387
389
  >
388
390
  {#if "image" in selected_media}
389
391
  <Image
390
- data-testid="detailed-image"
392
+ restProps={{
393
+ alt: selected_media.caption || "",
394
+ title: selected_media.caption || null,
395
+ class: selected_media.caption && "with-caption",
396
+ loading: "lazy"
397
+ }}
391
398
  src={selected_media.image.url}
392
- alt={selected_media.caption || ""}
393
- title={selected_media.caption || null}
394
- class={selected_media.caption && "with-caption"}
395
- loading="lazy"
399
+ data_testid="detailed-image"
396
400
  />
397
401
  {:else}
398
402
  <Video
@@ -434,10 +438,13 @@
434
438
  {#if "image" in media}
435
439
  <Image
436
440
  src={media.image.url}
437
- title={media.caption || null}
438
- data-testid={"thumbnail " + (i + 1)}
439
- alt=""
440
- loading="lazy"
441
+ restProps={{
442
+ title: media.caption || null,
443
+ alt: "",
444
+ class: "with-caption",
445
+ loading: "lazy"
446
+ }}
447
+ data_testid={`thumbnail ${i + 1}`}
441
448
  />
442
449
  {:else}
443
450
  <Play />
@@ -454,7 +461,7 @@
454
461
  </button>
455
462
  {/each}
456
463
  </div>
457
- </button>
464
+ </span>
458
465
  {/if}
459
466
 
460
467
  <div
@@ -465,10 +472,17 @@
465
472
  style:height={height !== "auto" ? height + "px" : null}
466
473
  >
467
474
  {#if interactive && selected_index === null}
468
- <ModifyUpload {i18n} on:clear={() => (value = [])}>
475
+ <ModifyUpload
476
+ {i18n}
477
+ on:clear={() => {
478
+ value = [];
479
+ dispatch("clear");
480
+ }}
481
+ >
469
482
  {#if upload && stream_handler}
470
483
  <IconButton Icon={UploadIcon} label={i18n("common.upload")}>
471
484
  <UploadComponent
485
+ bind:upload_promise
472
486
  icon_upload={true}
473
487
  on:load={(e) => dispatch("upload", e.detail)}
474
488
  filetype={file_types}
package/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { FileData } from "@gradio/client";
1
+ import type { FileData, SelectData } from "@gradio/client";
2
2
 
3
3
  export interface GalleryImage {
4
4
  image: FileData;
@@ -9,3 +9,32 @@ export interface GalleryVideo {
9
9
  video: FileData;
10
10
  caption: string | null;
11
11
  }
12
+
13
+ export type GalleryData = GalleryImage | GalleryVideo;
14
+
15
+ export interface GalleryProps {
16
+ value: GalleryData[] | null;
17
+ file_types: string[] | null;
18
+ columns: number | number[] | undefined;
19
+ rows: number | number[] | undefined;
20
+ height: number | "auto";
21
+ preview: boolean;
22
+ allow_preview: boolean;
23
+ selected_index: number | null;
24
+ object_fit: "contain" | "cover" | "fill" | "none" | "scale-down";
25
+ buttons: string[];
26
+ type: "numpy" | "pil" | "filepath";
27
+ fit_columns: boolean;
28
+ }
29
+
30
+ export interface GalleryEvents {
31
+ change: GalleryData[] | null;
32
+ upload: GalleryData[] | null;
33
+ select: SelectData;
34
+ delete: { file: FileData; index: number };
35
+ preview_open: never;
36
+ preview_close: never;
37
+ clear_status: any;
38
+ share: any;
39
+ error: any;
40
+ }