2021-11-30 23:26:40 +01:00
|
|
|
<script lang="ts">
|
|
|
|
import { useEntity } from "../lib/entity";
|
|
|
|
export let address: string;
|
|
|
|
|
2021-12-04 22:43:26 +01:00
|
|
|
$: ({ attributes } = useEntity(address));
|
2021-11-30 23:26:40 +01:00
|
|
|
|
|
|
|
let mimeType: string | undefined;
|
|
|
|
$: mimeType = $attributes.find(([_, e]) => e.attribute === "FILE_MIME")?.[1]
|
|
|
|
.value.c;
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="preview" v-if="mimeType">
|
|
|
|
{#if mimeType?.startsWith("audio")}
|
|
|
|
<audio controls src="/api/raw/{address}" />
|
|
|
|
{/if}
|
|
|
|
{#if mimeType?.startsWith("video")}
|
|
|
|
<!-- svelte-ignore a11y-media-has-caption -->
|
|
|
|
<video controls src="/api/raw/{address}" />
|
|
|
|
{/if}
|
|
|
|
{#if mimeType?.startsWith("image")}
|
|
|
|
<a target="_blank" href="/api/raw/{address}">
|
|
|
|
<img src="/api/raw/{address}" alt={address} />
|
|
|
|
</a>
|
|
|
|
{/if}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.preview {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
audio,
|
2021-12-05 11:32:53 +01:00
|
|
|
video,
|
|
|
|
img {
|
2021-11-30 23:26:40 +01:00
|
|
|
width: 100%;
|
2021-12-05 11:32:53 +01:00
|
|
|
max-height: 25em;
|
2021-11-30 23:26:40 +01:00
|
|
|
}
|
|
|
|
</style>
|