yup-live-chrome-extension/src/components/ImgLoader.svelte

38 lines
698 B
Svelte
Raw Normal View History

2023-02-13 19:20:50 +00:00
<script lang="ts">
import { isUrlInvalid } from '@/utils/misc';
export let source
2023-10-01 03:46:14 +00:00
let loading = true
let loaded = false
2023-02-13 19:20:50 +00:00
export const onLoad = () => {
loading = false
loaded = true
}
export const onError = () => {
loading = false
2023-10-01 03:46:14 +00:00
source = undefined
2023-02-13 19:20:50 +00:00
}
$: {
if(isUrlInvalid(source)) {
2023-10-01 03:46:14 +00:00
source = undefined
2023-02-13 19:20:50 +00:00
} else {
}
}
</script>
<div class="inline-flex {`${loading ? 'animate-pulse' :''}`}">
{#if loading || loaded}
<slot name="img">
</slot>
2023-10-01 03:46:14 +00:00
{:else if source === undefined}
2023-02-13 19:20:50 +00:00
<slot name="error">
</slot>
{/if}
<slot name="after">
</slot>
</div>