spicyhooks
Version:
A collection of spicy React hooks
2 lines • 1.58 kB
JavaScript
;var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},V=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of w(t))!E.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(i=d(t,r))||i.enumerable});return e};var p=e=>V(a({},"__esModule",{value:!0}),e);var L={};g(L,{useInViewElement:()=>S,useLocalStorage:()=>I,useScreenSize:()=>f});module.exports=p(L);var s=require("react"),h={element:null,id:""},S=({options:e={threshold:.9},baseOn:t="id"}={})=>{let[n,i]=(0,s.useState)(h);return(0,s.useEffect)(()=>{let r=new IntersectionObserver(o=>{for(let u of o)if(u.isIntersecting){i({element:u.target,id:u.target.id});break}},e),m=document.querySelectorAll(`[${t}]`);return m.length>0&&m.forEach(o=>r.observe(o)),()=>r.disconnect()},[e,t]),n};var c=require("react"),z={screenWidth:0,screenHeight:0},f=()=>{let[e,t]=(0,c.useState)(z);return(0,c.useEffect)(()=>{let n=()=>{t({screenWidth:window.innerWidth,screenHeight:window.innerHeight})};return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),e};var l=require("react"),I=(e,t)=>{let[n,i]=(0,l.useState)(null),r=o=>{localStorage.setItem(e,JSON.stringify(o)),i(o)};return(0,l.useEffect)(()=>{let o=localStorage.getItem(e);o?i(JSON.parse(o)):r(t)},[e]),[n,r,()=>{localStorage.getItem(e)&&(localStorage.removeItem(e),i(null))}]};0&&(module.exports={useInViewElement,useLocalStorage,useScreenSize});
//# sourceMappingURL=index.js.map