<script lang="ts"> | |
import { StatusTracker } from "@gradio/statustracker"; | |
import { _ } from "svelte-i18n"; | |
import { setupi18n } from "@gradio/core"; | |
setupi18n(); | |
export let is_embed: boolean; | |
export let error: Error | undefined = undefined; | |
</script> | |
<StatusTracker | |
i18n={$_} | |
absolute={!is_embed} | |
status="error" | |
timer={false} | |
queue_position={null} | |
queue_size={null} | |
translucent={true} | |
autoscroll={false} | |
> | |
<div class="error" slot="error"> | |
{#if error} | |
{#if error.message} | |
<p class="error-name"> | |
{error.message} | |
</p> | |
{/if} | |
{#if error.stack} | |
<pre class="error-stack"><code>{error.stack}</code></pre> | |
{/if} | |
{/if} | |
</div> | |
</StatusTracker> | |
<style> | |
.error { | |
position: relative; | |
width: 100%; | |
padding: var(--size-4); | |
color: var(--body-text-color); | |
/* Status tracker sets `pointer-events: none`. | |
Override it here so the user can scroll the element with `overflow: hidden` | |
and copy and paste the error message */ | |
pointer-events: all; | |
} | |
.error-name { | |
text-align: center; | |
} | |
.error-stack { | |
width: 100%; | |
overflow: scroll; | |
} | |
</style> | |