Spaces:
Building
Building
<script lang="ts"> | |
import DOMPurify from 'dompurify'; | |
import type { Token } from 'marked'; | |
import { WEBUI_BASE_URL } from '$lib/constants'; | |
import Source from './Source.svelte'; | |
export let id: string; | |
export let token: Token; | |
export let onSourceClick: Function = () => {}; | |
let html: string | null = null; | |
$: if (token.type === 'html' && token?.text) { | |
html = DOMPurify.sanitize(token.text); | |
} else { | |
html = null; | |
} | |
</script> | |
{#if token.type === 'html'} | |
{#if html && html.includes('<video')} | |
{ | html}|
{:else if token.text && token.text.match(/<iframe\s+[^>]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})(?:\?[^"]*)?"[^>]*><\/iframe>/)} | |
{text.match( | match = token.|
/<iframe\s+[^>]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})(?:\?[^"]*)?"[^>]*><\/iframe>/ | |
)} | |
{1]} | ytId = match && match[|
{#if ytId} | |
<iframe | |
class="w-full aspect-video my-2" | |
src={`https://www.youtube.com/embed/${ytId}`} | |
title="YouTube video player" | |
frameborder="0" | |
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | |
referrerpolicy="strict-origin-when-cross-origin" | |
allowfullscreen | |
> | |
</iframe> | |
{/if} | |
{:else if token.text.includes(`<iframe src="${WEBUI_BASE_URL}/api/v1/files/`)} | |
{`${token.text}`} | |
{:else if token.text.includes(`<source_id`)} | |
<Source {id} {token} onClick={onSourceClick} /> | |
{:else} | |
{token.text} | |
{/if} | |
{/if} | |