UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

30 lines (29 loc) • 944 B
import * as Solid from "solid-js"; //#region src/utils.ts /** * Observe a Link's element while it preloads on `'viewport'`: `callback` * receives each intersection entry. Whenever the element or preload mode * changes, and on cleanup, a preloading Link gets `callback()` so it can * cancel a pending preload. */ function useIntersectionObserver(ref, callback, preload) { Solid.createEffect(() => { const r = ref(); const mode = preload(); if (mode === "viewport" && r && typeof IntersectionObserver === "function") { let active = true; const observer = new IntersectionObserver((entries) => { if (active) callback(entries.pop()); }, { rootMargin: "100px" }); observer.observe(r); Solid.onCleanup(() => { active = false; observer.disconnect(); callback(); }); } else if (mode) Solid.onCleanup(() => callback()); }); } //#endregion export { useIntersectionObserver }; //# sourceMappingURL=utils.js.map