aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Lazy.svelte
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-01 16:04:11 -0800
committerFuwn <[email protected]>2026-03-01 16:04:11 -0800
commit48f0c30d47d62e4f35706edb93a1bb2f97eba14c (patch)
tree44866d7a61adfdf01a780e0108c370294d3db78b /src/lib/Lazy.svelte
parentchore(biome): re-enable useAltText rule (diff)
downloaddue.moe-48f0c30d47d62e4f35706edb93a1bb2f97eba14c.tar.xz
due.moe-48f0c30d47d62e4f35706edb93a1bb2f97eba14c.zip
chore(biome): enable svelte formatting
Diffstat (limited to 'src/lib/Lazy.svelte')
-rw-r--r--src/lib/Lazy.svelte79
1 files changed, 38 insertions, 41 deletions
diff --git a/src/lib/Lazy.svelte b/src/lib/Lazy.svelte
index fd08ed07..6386177b 100644
--- a/src/lib/Lazy.svelte
+++ b/src/lib/Lazy.svelte
@@ -1,47 +1,44 @@
<script lang="ts">
- import { onMount, onDestroy } from 'svelte';
-
- export let top = 0;
- export let bottom = 0;
- export let left = 0;
- export let right = 0;
- export let steps = 100;
- export let threshold = 0.01;
- export let once = false;
-
- let element: Element;
- let percent = 0;
- let visible = false;
- let observer: IntersectionObserver;
-
- const intersectPercent = (
- entries: IntersectionObserverEntry[],
- observer: IntersectionObserver
- ) => {
- for (let entry of entries)
- if (entry.target === element) {
- percent = Math.round(entry.intersectionRatio * 100);
- visible = entry.intersectionRatio >= threshold;
-
- if (visible && once) observer.unobserve(element);
-
- break;
- }
- };
-
- onMount(() => {
- if ('IntersectionObserver' in window) {
- let options = {
- rootMargin: `${top}px ${right}px ${bottom}px ${left}px`,
- threshold: Array.from({ length: steps }, (_, i) => i / (steps - 1))
- };
-
- observer = new IntersectionObserver(intersectPercent, options);
- observer.observe(element);
+import { onMount, onDestroy } from 'svelte';
+
+export let top = 0;
+export let bottom = 0;
+export let left = 0;
+export let right = 0;
+export let steps = 100;
+export let threshold = 0.01;
+export let once = false;
+
+let element: Element;
+let percent = 0;
+let visible = false;
+let observer: IntersectionObserver;
+
+const intersectPercent = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => {
+ for (let entry of entries)
+ if (entry.target === element) {
+ percent = Math.round(entry.intersectionRatio * 100);
+ visible = entry.intersectionRatio >= threshold;
+
+ if (visible && once) observer.unobserve(element);
+
+ break;
}
- });
+};
- onDestroy(() => observer?.unobserve(element));
+onMount(() => {
+ if ('IntersectionObserver' in window) {
+ let options = {
+ rootMargin: `${top}px ${right}px ${bottom}px ${left}px`,
+ threshold: Array.from({ length: steps }, (_, i) => i / (steps - 1))
+ };
+
+ observer = new IntersectionObserver(intersectPercent, options);
+ observer.observe(element);
+ }
+});
+
+onDestroy(() => observer?.unobserve(element));
</script>
<div bind:this={element}>