Spaces:
Running
Running
| <script lang="ts"> | |
| import type { FileData } from "@gradio/client"; | |
| import { display_file_name, display_file_size } from "./utils"; | |
| import { createEventDispatcher } from "svelte"; | |
| import type { I18nFormatter, SelectData } from "@gradio/utils"; | |
| const dispatch = createEventDispatcher<{ | |
| select: SelectData; | |
| }>(); | |
| export let value: FileData | FileData[]; | |
| export let selectable = false; | |
| export let height: number | undefined = undefined; | |
| export let i18n: I18nFormatter; | |
| </script> | |
| <div | |
| class="file-preview-holder" | |
| style="max-height: {typeof height === undefined ? 'auto' : height + 'px'};" | |
| > | |
| <table class="file-preview"> | |
| <tbody> | |
| {#each Array.isArray(value) ? value : [value] as file, i} | |
| <tr | |
| class="file" | |
| class:selectable | |
| on:click={() => | |
| dispatch("select", { | |
| value: file.orig_name, | |
| index: i | |
| })} | |
| > | |
| <td> | |
| {display_file_name(file)} | |
| </td> | |
| <td class="download"> | |
| {#if file.url} | |
| <a | |
| href={file.url} | |
| target="_blank" | |
| download={window.__is_colab__ ? null : file.orig_name} | |
| > | |
| {@html display_file_size(file)} ⇣ | |
| </a> | |
| {:else} | |
| {i18n("file.uploading")} | |
| {/if} | |
| </td> | |
| </tr> | |
| {/each} | |
| </tbody> | |
| </table> | |
| </div> | |
| <style> | |
| td { | |
| width: 45%; | |
| } | |
| td:last-child { | |
| width: 10%; | |
| text-align: right; | |
| } | |
| .file-preview-holder { | |
| overflow-x: auto; | |
| overflow-y: auto; | |
| } | |
| .file-preview { | |
| width: var(--size-full); | |
| max-height: var(--size-60); | |
| overflow-y: auto; | |
| margin-top: var(--size-1); | |
| color: var(--body-text-color); | |
| } | |
| .file { | |
| width: var(--size-full); | |
| } | |
| .file > * { | |
| padding: var(--size-1) var(--size-2-5); | |
| } | |
| .download:hover { | |
| text-decoration: underline; | |
| } | |
| .download > a { | |
| color: var(--link-text-color); | |
| } | |
| .download > a:hover { | |
| color: var(--link-text-color-hover); | |
| } | |
| .download > a:visited { | |
| color: var(--link-text-color-visited); | |
| } | |
| .download > a:active { | |
| color: var(--link-text-color-active); | |
| } | |
| .selectable { | |
| cursor: pointer; | |
| } | |
| tbody > tr:nth-child(even) { | |
| background: var(--block-background-fill); | |
| } | |
| tbody > tr:nth-child(odd) { | |
| background: var(--table-odd-background-fill); | |
| } | |
| </style> | |