/
Netrunners
/
Millenium_UI
Обзор
Документация
Войти
/
Netrunners
/
Millenium_UI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/lib/components/common/Loader.svelte
46 строк
943 B
Валерий Конюхов
first_commit
08 июл 2025, 22:20
08 июл 2025, 22:20
a4e8dc9
Код
Авторство
О чём код?
<script lang="ts"> import { createEventDispatcher, onDestroy, onMount } from 'svelte'; const dispatch = createEventDispatcher(); let loaderElement: HTMLElement; let observer; let intervalId; onMount(() => { observer = new IntersectionObserver( (entries, observer) => { entries.forEach((entry) => { if (entry.isIntersecting) { intervalId = setInterval(() => { dispatch('visible'); }, 100); // dispatch('visible'); // observer.unobserve(loaderElement); // Stop observing until content is loaded } else { clearInterval(intervalId); } }); }, { root: null, // viewport rootMargin: '0px', threshold: 0.1 // When 10% of the loader is visible } ); observer.observe(loaderElement); }); onDestroy(() => { observer.disconnect(); if (intervalId) { clearInterval(intervalId); } }); </script> <div bind:this={loaderElement}> <slot /> </div>