UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

32 lines (31 loc) • 1.1 kB
const require_runtime = require("./_virtual/_rolldown/runtime.cjs"); let solid_js = require("solid-js"); solid_js = require_runtime.__toESM(solid_js, 1); //#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_js.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_js.onCleanup(() => { active = false; observer.disconnect(); callback(); }); } else if (mode) solid_js.onCleanup(() => callback()); }); } //#endregion exports.useIntersectionObserver = useIntersectionObserver; //# sourceMappingURL=utils.cjs.map