enh: infinite scroll messages

This commit is contained in:
Timothy J. Baek
2024-09-24 00:27:22 +02:00
parent 93cb2be35d
commit d7b64ff447
2 changed files with 49 additions and 6 deletions

View File

@@ -1,16 +1,24 @@
<script lang="ts">
import { createEventDispatcher, onMount } from 'svelte';
import { createEventDispatcher, onDestroy, onMount } from 'svelte';
const dispatch = createEventDispatcher();
let loaderElement: HTMLElement;
let observer;
let intervalId;
onMount(() => {
const observer = new IntersectionObserver(
observer = new IntersectionObserver(
(entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
dispatch('visible');
intervalId = setInterval(() => {
dispatch('visible');
}, 100);
// dispatch('visible');
// observer.unobserve(loaderElement); // Stop observing until content is loaded
} else {
clearInterval(intervalId);
}
});
},
@@ -23,6 +31,14 @@
observer.observe(loaderElement);
});
onDestroy(() => {
observer.disconnect();
if (intervalId) {
clearInterval(intervalId);
}
});
</script>
<div bind:this={loaderElement}>