UNPKG

solid-laze

Version:
42 lines (41 loc) 1.02 kB
// src/useLaze.ts import { createEffect, createSignal, onCleanup } from "solid-js"; function useLaze(options) { const [visible, setVisible] = createSignal(false); const [ref, setRef] = createSignal(null); createEffect(() => { setVisible(false); const shouldRefresh = options == null ? void 0 : options.refresh; const current = ref(); if (!current) { return; } const observer = new IntersectionObserver((entries) => { for (const entry of entries) { if (shouldRefresh) { setVisible(entry.isIntersecting); } else if (entry.isIntersecting) { setVisible(true); observer.disconnect(); } } }); observer.observe(current); onCleanup(() => { observer.unobserve(current); observer.disconnect(); }); }); return { ref(value) { return setRef(() => value); }, get visible() { return visible(); } }; } export { useLaze as default }; //# sourceMappingURL=index.mjs.map