UNPKG

svelte-intersection-observer

Version:

Detects when an element enters or exits the viewport using the Intersection Observer API.

96 lines (81 loc) 2.11 kB
import type { Component, Snippet } from "svelte"; export interface IntersectionObserverProps { /** * The HTML Element to observe. * @default null */ element?: null | HTMLElement; /** * Set to `true` to unobserve the element * after it intersects the viewport. * @default false */ once?: boolean; /** * `true` if the observed element * is intersecting the viewport. * @default false */ intersecting?: boolean; /** * Specify the containing element. * Defaults to the browser viewport. * @default null */ root?: null | HTMLElement; /** * Margin offset of the containing element. * @default "0px" */ rootMargin?: string; /** * Percentage of element visibility to trigger an event. * Value must be a number between 0 and 1, or an array of numbers between 0 and 1. * @default 0 */ threshold?: number | number[]; /** * Observed element metadata. * @default null */ entry?: null | IntersectionObserverEntry; /** * `IntersectionObserver` instance. * @default null */ observer?: null | IntersectionObserver; /** * Set to `true` to pause observing without disconnecting the * observer or losing `entry`/`intersecting` state. Set back to * `false` to resume. * @default false */ skip?: boolean; /** * Called when the element is first observed * and also whenever an intersection event occurs. */ onobserve?: (entry: IntersectionObserverEntry) => void; /** * Called only when the element is intersecting the viewport. * `entry.isIntersecting` will always be `true`. */ onintersect?: ( entry: IntersectionObserverEntry & { isIntersecting: true }, ) => void; children?: Snippet< [ { intersecting: boolean; entry: null | IntersectionObserverEntry; observer: null | IntersectionObserver; }, ] >; } declare const IntersectionObserverComponent: Component< IntersectionObserverProps, Record<string, never>, "intersecting" | "entry" | "observer" >; export default IntersectionObserverComponent;