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> | |