spicyhooks
Version:
A collection of spicy React hooks
2 lines • 1.07 kB
JavaScript
import{useEffect as l,useState as m}from"react";var u={element:null,id:""},a=({options:e={threshold:.9},baseOn:r="id"}={})=>{let[n,o]=m(u);return l(()=>{let i=new IntersectionObserver(t=>{for(let c of t)if(c.isIntersecting){o({element:c.target,id:c.target.id});break}},e),s=document.querySelectorAll(`[${r}]`);return s.length>0&&s.forEach(t=>i.observe(t)),()=>i.disconnect()},[e,r]),n};import{useEffect as S,useState as f}from"react";var I={screenWidth:0,screenHeight:0},d=()=>{let[e,r]=f(I);return S(()=>{let n=()=>{r({screenWidth:window.innerWidth,screenHeight:window.innerHeight})};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),e};import{useEffect as w,useState as E}from"react";var g=(e,r)=>{let[n,o]=E(null),i=t=>{localStorage.setItem(e,JSON.stringify(t)),o(t)};return w(()=>{let t=localStorage.getItem(e);t?o(JSON.parse(t)):i(r)},[e]),[n,i,()=>{localStorage.getItem(e)&&(localStorage.removeItem(e),o(null))}]};export{a as useInViewElement,g as useLocalStorage,d as useScreenSize};
//# sourceMappingURL=index.mjs.map