platform/packages/ui/src/components/Lazy.svelte
Andrey Sobolev b2435326fd
UBER-963: Related issues (#3773)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-03 01:20:37 +07:00

30 lines
558 B
Svelte

<script lang="ts">
import { createEventDispatcher } from 'svelte'
const dispatch = createEventDispatcher()
import { lazyObserver, isLazyEnabled } from '../lazy'
let visible = !isLazyEnabled()
</script>
{#if !visible}
<div
use:lazyObserver={(val, unsubscribe) => {
if (val) {
visible = true
dispatch('visible')
unsubscribe?.()
}
}}
>
<!-- Zero-width space character -->
{#if $$slots.loading}
<slot name="loading" />
{:else}
&#8203;
{/if}
</div>
{:else}
<slot />
{/if}