spicyhooks
Version:
A collection of spicy React hooks
2 lines • 2.1 kB
JavaScript
;var E=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var z=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},L=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of g(t))!x.call(e,r)&&r!==n&&E(e,r,{get:()=>t[r],enumerable:!(o=V(t,r))||o.enumerable});return e};var A=e=>L(E({},"__esModule",{value:!0}),e);var C={};z(C,{useCounter:()=>T,useDebounce:()=>h,useInViewElement:()=>S,usePrevious:()=>a,useScreenSize:()=>d,useToggle:()=>b});module.exports=A(C);var m=require("react"),v={element:null,id:""};function S({options:e={threshold:.9},baseOn:t="id"}={}){let[n,o]=(0,m.useState)(v);return(0,m.useEffect)(()=>{let r=new IntersectionObserver(s=>{for(let I of s)if(I.isIntersecting){let w=I.target;o({element:w,id:w.id});break}},e),i=document.querySelectorAll(`[${t}]`);return i.length>0&&i.forEach(s=>r.observe(s)),()=>r.disconnect()},[e,t]),n}var f=require("react"),O={width:0,height:0};function d(){let[e,t]=(0,f.useState)(O);return(0,f.useEffect)(()=>{function n(){t({width:window.innerWidth,height:window.innerHeight})}return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),e}var c=require("react"),_=0;function T(e=_){let[t,n]=(0,c.useState)(e),o=(0,c.useCallback)(()=>n(s=>s+1),[]),r=(0,c.useCallback)(()=>n(s=>s-1),[]),i=(0,c.useCallback)(()=>n(e),[e]);return{count:t,increment:o,decrement:r,reset:i}}var l=require("react");function a(e){let t=(0,l.useRef)(null);return(0,l.useEffect)(()=>{t.current=e},[e]),t.current}var u=require("react"),y=!1;function b(e=y){let[t,n]=(0,u.useState)(e),o=(0,u.useCallback)(()=>{n(s=>!s)},[]),r=(0,u.useCallback)(()=>{n(!0)},[]),i=(0,u.useCallback)(()=>{n(!1)},[]);return{isOn:t,toggle:o,setOn:r,setOff:i}}var p=require("react");function h(e,t){let[n,o]=(0,p.useState)(e);return(0,p.useEffect)(()=>{let r=setTimeout(()=>{o(e)},t);return()=>clearTimeout(r)},[e,t]),n}0&&(module.exports={useCounter,useDebounce,useInViewElement,usePrevious,useScreenSize,useToggle});
//# sourceMappingURL=index.js.map