mirror of
https://github.com/andrei0x309/yup-live-chrome-extension.git
synced 2024-07-05 22:55:44 +00:00
43 lines
780 B
Svelte
43 lines
780 B
Svelte
|
<script lang="ts">
|
||
|
import { isUrlInvalid } from '@/utils/misc';
|
||
|
|
||
|
export let source
|
||
|
|
||
|
let loading = true
|
||
|
let loaded = false
|
||
|
let error = false
|
||
|
|
||
|
export const onLoad = () => {
|
||
|
loading = false
|
||
|
loaded = true
|
||
|
}
|
||
|
|
||
|
export const onError = () => {
|
||
|
loading = false
|
||
|
error = true
|
||
|
}
|
||
|
|
||
|
$: {
|
||
|
if(isUrlInvalid(source)) {
|
||
|
loading = false
|
||
|
error = true
|
||
|
} else {
|
||
|
loading = true
|
||
|
error = false
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
</script>
|
||
|
|
||
|
<div class="inline-flex {`${loading ? 'animate-pulse' :''}`}">
|
||
|
{#if loading || loaded}
|
||
|
<slot name="img">
|
||
|
</slot>
|
||
|
{:else if error}
|
||
|
<slot name="error">
|
||
|
</slot>
|
||
|
{/if}
|
||
|
<slot name="after">
|
||
|
</slot>
|
||
|
</div>
|