solid-laze
Version:
Lazily render components in Solid
2 lines (1 loc) • 429 B
JavaScript
import{createEffect as b,createSignal as f,onCleanup as v}from"solid-js";function i(r){let[l,t]=f(!1),[c,a]=f(null);return b(()=>{t(!1);let n=r==null?void 0:r.refresh,s=c();if(!s)return;let e=new IntersectionObserver(u=>{for(let o of u)n?t(o.isIntersecting):o.isIntersecting&&(t(!0),e.disconnect())});e.observe(s),v(()=>{e.unobserve(s),e.disconnect()})}),{ref(n){return a(()=>n)},get visible(){return l()}}}export{i as default};