UNPKG

spicyhooks

Version:

A collection of spicy React hooks

2 lines 1.49 kB
import{useEffect as l,useState as p}from"react";var E={element:null,id:""};function I({options:e={threshold:.9},baseOn:n="id"}={}){let[t,s]=p(E);return l(()=>{let o=new IntersectionObserver(r=>{for(let m of r)if(m.isIntersecting){let f=m.target;s({element:f,id:f.id});break}},e),i=document.querySelectorAll(`[${n}]`);return i.length>0&&i.forEach(r=>o.observe(r)),()=>o.disconnect()},[e,n]),t}import{useEffect as w,useState as S}from"react";var d={width:0,height:0};function T(){let[e,n]=S(d);return w(()=>{function t(){n({width:window.innerWidth,height:window.innerHeight})}return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),e}import{useCallback as c,useState as a}from"react";var b=0;function h(e=b){let[n,t]=a(e),s=c(()=>t(r=>r+1),[]),o=c(()=>t(r=>r-1),[]),i=c(()=>t(e),[e]);return{count:n,increment:s,decrement:o,reset:i}}import{useEffect as V,useRef as g}from"react";function x(e){let n=g(null);return V(()=>{n.current=e},[e]),n.current}import{useCallback as u,useState as z}from"react";var L=!1;function A(e=L){let[n,t]=z(e),s=u(()=>{t(r=>!r)},[]),o=u(()=>{t(!0)},[]),i=u(()=>{t(!1)},[]);return{isOn:n,toggle:s,setOn:o,setOff:i}}import{useEffect as v,useState as O}from"react";function _(e,n){let[t,s]=O(e);return v(()=>{let o=setTimeout(()=>{s(e)},n);return()=>clearTimeout(o)},[e,n]),t}export{h as useCounter,_ as useDebounce,I as useInViewElement,x as usePrevious,T as useScreenSize,A as useToggle}; //# sourceMappingURL=index.mjs.map