polpo 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-LWUSFVRE.js → chunk-K4C2HYD2.js} +2 -2
- package/dist/{chunk-LWUSFVRE.js.map → chunk-K4C2HYD2.js.map} +1 -1
- package/dist/hooks.cjs +1 -1
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +1 -1
- package/dist/ui.cjs +107 -109
- package/dist/ui.cjs.map +1 -1
- package/dist/ui.d.cts +4 -2
- package/dist/ui.d.ts +4 -2
- package/dist/ui.js +107 -109
- package/dist/ui.js.map +1 -1
- package/package.json +4 -3
- package/src/components/form/checkbox/checkbox.style.ts +0 -2
- package/src/components/form/select/options.tsx +15 -4
- package/src/components/modals/menu/menu.tsx +9 -4
- package/src/hooks/use-dom-container.ts +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as R,h as O,i as S}from"./chunk-MAWW6AA7.js";import{useCallback as p,useMemo as $,useReducer as X}from"react";import{useCallback as z,useLayoutEffect as F,useRef as V}from"react";var C=e=>{let t=V(!1);return F(()=>(t.current=!0,()=>{t.current=!1}),[]),z((...o)=>{t.current&&e(...o)},[e])};var Y=(e,t)=>{switch(t.type){case"pending":return{status:"pending",data:null,error:null};case"resolved":return{status:"resolved",data:t.data,error:null};case"rejected":return{status:"rejected",data:null,error:t.error};default:throw new Error(`Unhandled action: ${JSON.stringify(t)}`)}},_e=e=>{let[t,o]=X(Y,{status:"idle",data:null,error:null,...e}),n=C(o),r=p(a=>{n({type:"pending"}),a.then(c=>{n({type:"resolved",data:c})},c=>{n({type:"rejected",error:c})})},[n]),s=p(a=>n({type:"resolved",data:a}),[n]),i=p(a=>n({type:"rejected",error:a}),[n]);return $(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};import{useMemo as Q}from"react";var Ze=e=>Q(()=>Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[]).join(" "),[e]);import{useEffect as W,useLayoutEffect as B,useRef as J}from"react";function l(e,t,o,n){let r=J(t);W(()=>{r.current=t},[t]),B(()=>{let s=o?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,n),()=>{s.removeEventListener(e,i,n)}},[e,o,n])}var _=(e,t)=>e.current&&!e.current.contains(t),h=(e,t)=>{l("keydown",o=>{o.key==="Escape"&&t()}),l("mousedown",o=>{let n=o.target;if(!n?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>_(s,n))&&t()})};import{useState as q}from"react";var at=e=>q(e)[0];import{useState as K,useCallback as L}from"react";var Z=e=>{let t=[];if(e.expires instanceof Date)t.push(`expires=${e.expires.toUTCString()}`);else if(typeof e.days=="number"){let o=new Date;o.setTime(o.getTime()+e.days*24*60*60*1e3),t.push(`expires=${o.toUTCString()}`)}return typeof e.maxAge=="number"&&t.push(`max-age=${e.maxAge}`),t.push(`path=${e.path??"/"}`),e.domain&&t.push(`domain=${e.domain}`),e.secure&&t.push("secure"),e.sameSite&&t.push(`SameSite=${e.sameSite}`),t.length>0?`; ${t.join("; ")}`:""},A=(e,t,o={})=>{if(typeof document>"u")return;let n=encodeURIComponent(t),r=Z(o);document.cookie=`${e}=${n}${r}`},ee=e=>{if(typeof document>"u")return null;let t=`${e}=`,o=document.cookie?document.cookie.split(";"):[];for(let n of o){let r=n.trim();if(r.indexOf(t)===0)return decodeURIComponent(r.substring(t.length))}return null},te=(e,t={})=>{typeof document>"u"||A(e,"",{...t,days:-1})},lt=(e,t,o={})=>{let[n,r]=K(()=>{let a=ee(e);if(a!==null)try{return JSON.parse(a)}catch{return t}return t}),s=L((a,c={})=>{let u={...o,...c},m=JSON.stringify(a);A(e,m,u),r(a)},[e,o]),i=L(()=>{te(e,o),r(t)},[e,t,o]);return[n,s,i]};import{useEffect as ne,useState as oe}from"react";var ft=(e,t=500)=>{let[o,n]=oe(e);return ne(()=>{let r=setTimeout(()=>n(e),t);return()=>{clearTimeout(r)}},[e,t]),o};import{useState as se}from"react";import{useEffect as re}from"react";var f=(e,t)=>{re(()=>{let o=Array.isArray(e)?e:[e],n=new ResizeObserver(t);return o.forEach(r=>r.current&&n.observe(r.current)),()=>{n.disconnect()}},[e,t])};var bt=e=>{let[t,o]=se({width:0,height:0});return f(e,([n])=>{if((n?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=n.borderBoxSize[0];o({width:r,height:s})}else if(n.contentRect){let{width:r,height:s}=n.contentRect;o({width:r,height:s})}}),t};import{useEffect as ie,useMemo as ae}from"react";var Rt=e=>(ie(()=>{let t=document.getElementById(e);if(t
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as R,h as O,i as S}from"./chunk-MAWW6AA7.js";import{useCallback as p,useMemo as $,useReducer as X}from"react";import{useCallback as z,useLayoutEffect as F,useRef as V}from"react";var C=e=>{let t=V(!1);return F(()=>(t.current=!0,()=>{t.current=!1}),[]),z((...o)=>{t.current&&e(...o)},[e])};var Y=(e,t)=>{switch(t.type){case"pending":return{status:"pending",data:null,error:null};case"resolved":return{status:"resolved",data:t.data,error:null};case"rejected":return{status:"rejected",data:null,error:t.error};default:throw new Error(`Unhandled action: ${JSON.stringify(t)}`)}},_e=e=>{let[t,o]=X(Y,{status:"idle",data:null,error:null,...e}),n=C(o),r=p(a=>{n({type:"pending"}),a.then(c=>{n({type:"resolved",data:c})},c=>{n({type:"rejected",error:c})})},[n]),s=p(a=>n({type:"resolved",data:a}),[n]),i=p(a=>n({type:"rejected",error:a}),[n]);return $(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};import{useMemo as Q}from"react";var Ze=e=>Q(()=>Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[]).join(" "),[e]);import{useEffect as W,useLayoutEffect as B,useRef as J}from"react";function l(e,t,o,n){let r=J(t);W(()=>{r.current=t},[t]),B(()=>{let s=o?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,n),()=>{s.removeEventListener(e,i,n)}},[e,o,n])}var _=(e,t)=>e.current&&!e.current.contains(t),h=(e,t)=>{l("keydown",o=>{o.key==="Escape"&&t()}),l("mousedown",o=>{let n=o.target;if(!n?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>_(s,n))&&t()})};import{useState as q}from"react";var at=e=>q(e)[0];import{useState as K,useCallback as L}from"react";var Z=e=>{let t=[];if(e.expires instanceof Date)t.push(`expires=${e.expires.toUTCString()}`);else if(typeof e.days=="number"){let o=new Date;o.setTime(o.getTime()+e.days*24*60*60*1e3),t.push(`expires=${o.toUTCString()}`)}return typeof e.maxAge=="number"&&t.push(`max-age=${e.maxAge}`),t.push(`path=${e.path??"/"}`),e.domain&&t.push(`domain=${e.domain}`),e.secure&&t.push("secure"),e.sameSite&&t.push(`SameSite=${e.sameSite}`),t.length>0?`; ${t.join("; ")}`:""},A=(e,t,o={})=>{if(typeof document>"u")return;let n=encodeURIComponent(t),r=Z(o);document.cookie=`${e}=${n}${r}`},ee=e=>{if(typeof document>"u")return null;let t=`${e}=`,o=document.cookie?document.cookie.split(";"):[];for(let n of o){let r=n.trim();if(r.indexOf(t)===0)return decodeURIComponent(r.substring(t.length))}return null},te=(e,t={})=>{typeof document>"u"||A(e,"",{...t,days:-1})},lt=(e,t,o={})=>{let[n,r]=K(()=>{let a=ee(e);if(a!==null)try{return JSON.parse(a)}catch{return t}return t}),s=L((a,c={})=>{let u={...o,...c},m=JSON.stringify(a);A(e,m,u),r(a)},[e,o]),i=L(()=>{te(e,o),r(t)},[e,t,o]);return[n,s,i]};import{useEffect as ne,useState as oe}from"react";var ft=(e,t=500)=>{let[o,n]=oe(e);return ne(()=>{let r=setTimeout(()=>n(e),t);return()=>{clearTimeout(r)}},[e,t]),o};import{useState as se}from"react";import{useEffect as re}from"react";var f=(e,t)=>{re(()=>{let o=Array.isArray(e)?e:[e],n=new ResizeObserver(t);return o.forEach(r=>r.current&&n.observe(r.current)),()=>{n.disconnect()}},[e,t])};var bt=e=>{let[t,o]=se({width:0,height:0});return f(e,([n])=>{if((n?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=n.borderBoxSize[0];o({width:r,height:s})}else if(n.contentRect){let{width:r,height:s}=n.contentRect;o({width:r,height:s})}}),t};import{useEffect as ie,useMemo as ae}from"react";var Rt=e=>(ie(()=>{let t=document.getElementById(e);if(t!==null)return()=>{t&&document.body.removeChild(t)}},[e]),ae(()=>{let t=document.getElementById(e);return t===null&&(t=document.createElement("div"),t.setAttribute("id",e),document.body.appendChild(t)),t},[e]));import{useEffect as ce,useState as ue}from"react";var le=(o=>(o.PNG="image/png",o.PDF="application/pdf",o))(le||{}),ht=e=>{let[t,o]=ue([]);return ce(()=>{let n=[],r=!1;if(!Array.isArray(e)||e.length===0)o([]);else{let s=e.map(i=>new Promise((a,c)=>{let u=new FileReader;n.push(u),u.onload=m=>{m.target?.result&&a({name:i.name,size:i.size,formatSize:R(i.size),type:i.type,url:m.target.result})},u.onabort=()=>{c(new Error("File reading aborted"))},u.onerror=()=>{c(new Error("Failed to read file"))},u.readAsDataURL(i)}));Promise.all(s).then(i=>{r||o(i)})}return()=>{r=!0,n.forEach(s=>{s.abort()})}},[e]),t};import{useEffect as me,useRef as de,useState as E}from"react";var Pt=()=>{let[e,t]=E(null),[o,n]=E(null),[r,s]=E(!0),i=de(null);return me(()=>{if(!navigator.geolocation){n({code:0,message:"Geolocation is not supported by your browser."}),s(!1);return}let a=u=>{t({...u.coords,timestamp:u.timestamp}),s(!1)},c=u=>{n({code:u.code,message:u.message}),s(!1)};return navigator.geolocation.getCurrentPosition(a,c),i.current=navigator.geolocation.watchPosition(a,c),()=>{i.current!==null&&navigator.geolocation.clearWatch(i.current)}},[]),{data:e,error:o,isLoading:r}};import{useCallback as P,useRef as fe,useState as pe}from"react";var Dt=()=>{let[e,t]=pe(!1),o=fe(null),n=P(()=>t(!0),[]),r=P(()=>t(!1),[]);return l("mouseenter",n,o),l("mouseleave",r,o),e};import{useRef as ve,useState as Te}from"react";import{useEffect as Ee}from"react";var k=(e,t,o={})=>{Ee(()=>{let n=Array.isArray(e)?e:[e],r=new IntersectionObserver(t,o);return n.forEach(s=>s.current&&r.observe(s.current)),()=>{r.disconnect()}},[t,o,e])};var Ft=(e={})=>{let[t,o]=Te(!1),n=ve(null);return k(n,([r])=>{o(r.isIntersecting)},e),{ref:n,inView:t}};import{useCallback as v,useState as ye}from"react";var Yt=({onBlur:e,onFocus:t,onChange:o}={})=>{let[n,r]=ye(!1),s=v(c=>{r(!0),t&&t(c)},[t]),i=v(c=>{r(!1),e&&e(c)},[e]),a=v(c=>{o&&o(c)},[o]);return{isFocus:n,handlers:{onFocus:s,onBlur:i,onChange:a}}};import{useEffect as ge,useState as be}from"react";var Bt=e=>{let[t,o]=be(!1);return ge(()=>{let n=window.matchMedia(e);n.matches!==t&&o(n.matches);let r=()=>{o(n.matches)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},[t,e]),t};import{useRef as xe,useState as Me}from"react";var qt=()=>{let e=xe(null),[t,o]=Me(!1);return{containerRef:e,isOpen:t,openModal:()=>{o(!0)},closeModal:()=>{o(!1)}}};import{useCallback as D,useLayoutEffect as he,useRef as Le}from"react";import Re,{useCallback as w,useEffect as Oe,useMemo as Se}from"react";var Ce=(r=>(r.OPENING="OPENING",r.OPEN="OPEN",r.CLOSING="CLOSING",r.CLOSED="CLOSED",r))(Ce||{}),N=(e=0,t=()=>null)=>{let[o,n]=Re.useState("CLOSED"),r=Se(()=>o!=="CLOSED",[o]);Oe(()=>{document.documentElement.style.overflow=r?"hidden":"auto"},[r]);let s=w(()=>{["OPENING","OPEN"].includes(o)&&(e>0?(n("CLOSING"),setTimeout(()=>{n("CLOSED"),t()},e)):n("CLOSED"))},[t,o,e]),i=w(()=>{["CLOSING","CLOSED"].includes(o)&&(e>0?(n("OPENING"),setTimeout(()=>{n("OPEN")},e)):n("OPEN"))},[o,e]);return{isVisible:r,closeModal:s,openModal:i,modalState:o}};var I=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),mn=({closeOnClickOutside:e=!0,offset:t=0,windowOffset:o=0,position:n="bottom",transitionDuration:r=0,modalRef:s,containerRef:i,onClose:a})=>{let c=Le(null),u=N(r,a),{isVisible:m,closeModal:G}=u;h(s,()=>{m&&e&&G()});let T=D((y,U)=>{let g=y.current?.getClientRects()[0],b=U.current?.getClientRects()[0];if(!g)return;let x=b?O({c:I(b),m:I(g),offset:t,windowOffset:o,position:n}):S({position:n,windowOffset:o});Object.keys(x).forEach(M=>{y.current?.style.setProperty(M,x[M])})},[n,o,t]),d=D(()=>{m&&T(s,i??c)},[T,m,i,s]);return he(d,[d]),f(i??c,d),f(s,d),l("resize",d),l("scroll",d,s),u};import{useRef as Ae,useState as Pe}from"react";var H=(e,t)=>{let{left:o,top:n}=e,r=o+window.scrollX,s=n+window.scrollY,i=t.pageX-r,a=t.pageY-s;return{x:t.pageX,y:t.pageY,elementX:i,elementY:a,elementPositionX:r,elementPositionY:s}},vn=e=>{let t=Ae(null),[o,n]=Pe({x:null,y:null,elementX:null,elementY:null,elementPositionX:null,elementPositionY:null});return l("mousemove",s=>{let{clientX:i,clientY:a}=s;if(n(c=>({...c,x:i,y:a})),e?.current instanceof Element){let c=H(e.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}else if(t.current instanceof Element){let c=H(t.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}}),{...o,ref:t}};import{useState as ke}from"react";var bn=()=>{let[e,t]=ke(navigator.onLine);return l("online",()=>t(navigator.onLine)),l("offline",()=>t(navigator.onLine)),e};import{useEffect as we,useRef as Ne}from"react";var Rn=()=>{let e=Ne(1);return we(()=>{e.current++}),e.current};import{useEffect as De,useRef as Ie,useState as He}from"react";var Cn=()=>{let e=Ie(null),[t,o]=He([0,0]);return De(()=>{let n=e.current,r=()=>{n&&o([n.scrollLeft,n.scrollTop])};return n&&n.addEventListener("scroll",r),()=>{n&&n.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};import{useEffect as je,useState as j}from"react";function kn(e){let[t,o]=j(e),[n,r]=j([]);return je(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,o,n]}import{useCallback as Ge,useState as Ue}from"react";var Dn=(e=!1)=>{let[t,o]=Ue(e),n=Ge(()=>{o(r=>!r)},[]);return[t,n,o]};import{useCallback as ze,useState as Fe}from"react";var jn=(e,t=0)=>{let[o,n]=Fe(t),r=ze(s=>{n(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[o],r]};import{useEffect as Ve,useState as $e}from"react";var Fn=()=>{let e=()=>{let{innerWidth:n,innerHeight:r}=window;return{width:n,height:r,orientation:n>r?"landscape":"portrait"}},[t,o]=$e(e);return l("resize",()=>{o(e())}),Ve(()=>{o(e())},[]),t};export{C as a,_e as b,Ze as c,l as d,h as e,at as f,lt as g,ft as h,f as i,bt as j,Rt as k,le as l,ht as m,Pt as n,Dt as o,k as p,Ft as q,Yt as r,Bt as s,qt as t,Ce as u,N as v,mn as w,vn as x,bn as y,Rn as z,Cn as A,kn as B,Dn as C,jn as D,Fn as E};
|
|
3
|
+
//# sourceMappingURL=chunk-K4C2HYD2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-async.ts","../src/hooks/use-safe-dispatch.ts","../src/hooks/use-classnames.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-constant.ts","../src/hooks/use-cookie.ts","../src/hooks/use-debounce.ts","../src/hooks/use-dimensions.ts","../src/hooks/use-resize-observer.ts","../src/hooks/use-dom-container.ts","../src/hooks/use-file-reader.ts","../src/hooks/use-geolocation.ts","../src/hooks/use-hover.ts","../src/hooks/use-in-view.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-input-handlers.ts","../src/hooks/use-media-query.ts","../src/hooks/use-modal.ts","../src/hooks/use-modal-in-container.ts","../src/hooks/use-modal-transition.ts","../src/hooks/use-mouse-position.ts","../src/hooks/use-online-status.ts","../src/hooks/use-render-count.ts","../src/hooks/use-scroll.ts","../src/hooks/use-state-history.ts","../src/hooks/use-toggle.ts","../src/hooks/use-toggle-values.ts","../src/hooks/use-viewport.ts"],"sourcesContent":["import React, { useCallback, useMemo, useReducer } from 'react';\n\nimport { useSafeDispatch } from './use-safe-dispatch';\n\ntype AsyncState<T> =\n | {\n status: 'idle' | 'pending';\n data?: null;\n error?: null;\n }\n | {\n status: 'resolved';\n data: T;\n error: null;\n }\n | {\n status: 'rejected';\n data: null;\n error: Error;\n };\n\ntype AsyncAction<T> =\n | { type: 'reset' }\n | { type: 'pending' }\n | { type: 'resolved'; data: T }\n | { type: 'rejected'; error: Error };\n\nconst asyncReducer = <T>(_state: AsyncState<T>, action: AsyncAction<T>): AsyncState<T> => {\n switch (action.type) {\n case 'pending': {\n return { status: 'pending' as const, data: null, error: null };\n }\n case 'resolved': {\n return { status: 'resolved' as const, data: action.data, error: null };\n }\n case 'rejected': {\n return { status: 'rejected' as const, data: null, error: action.error };\n }\n default: {\n throw new Error(`Unhandled action: ${JSON.stringify(action)}`);\n }\n }\n};\n\nexport const useAsync = <T>(\n initialState?: AsyncState<T>,\n): AsyncState<T> & {\n setData: (data: T) => void;\n setError: (error: Error) => void;\n run: (promise: Promise<T>) => void;\n} => {\n const [asyncState, unsafeDispatch] = useReducer<React.Reducer<AsyncState<T>, AsyncAction<T>>>(asyncReducer, {\n status: 'idle',\n data: null,\n error: null,\n ...initialState,\n });\n const dispatch = useSafeDispatch(unsafeDispatch);\n\n const run = useCallback(\n (promise: Promise<T>) => {\n dispatch({ type: 'pending' });\n promise.then(\n data => {\n dispatch({ type: 'resolved', data });\n },\n (error: Error) => {\n dispatch({ type: 'rejected', error });\n },\n );\n },\n [dispatch],\n );\n\n const setData = useCallback((data: T) => dispatch({ type: 'resolved', data }), [dispatch]);\n\n const setError = useCallback((error: Error) => dispatch({ type: 'rejected', error }), [dispatch]);\n\n return useMemo(\n () => ({\n setData,\n setError,\n run,\n ...asyncState,\n }),\n [asyncState, run, setData, setError],\n );\n};\n","import React, { useCallback, useLayoutEffect, useRef } from 'react';\n\nexport const useSafeDispatch = <T>(dispatch: React.Dispatch<T>): ((action: T) => void) => {\n const mounted = useRef(false);\n\n useLayoutEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n return useCallback(\n (...args: Parameters<React.Dispatch<T>>) => {\n if (mounted.current) {\n dispatch(...args);\n }\n },\n [dispatch],\n );\n};\n","import { useMemo } from 'react';\n\nexport const useClassNames = (classes: Record<string, boolean>): string =>\n useMemo<string>(\n () =>\n Object.entries(classes)\n .reduce<Array<string>>(\n (compiledClassNames, [classname, value]) => (value ? [...compiledClassNames, classname] : compiledClassNames),\n [],\n )\n .join(' '),\n [classes],\n );\n","import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useEventListener<EventName extends keyof MediaQueryListEventMap>(\n eventName: EventName,\n callback: (event: MediaQueryListEventMap[EventName]) => void,\n element: RefObject<MediaQueryList> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof WindowEventMap>(\n eventName: EventName,\n callback: (event: WindowEventMap[EventName]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof HTMLElementEventMap, ElementRef extends HTMLElement = HTMLDivElement>(\n eventName: EventName,\n callback: (event: HTMLElementEventMap[EventName]) => void,\n element: RefObject<ElementRef> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof DocumentEventMap>(\n eventName: EventName,\n callback: (event: DocumentEventMap[EventName]) => void,\n element: RefObject<Document> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n MediaQueryEventName extends keyof MediaQueryListEventMap,\n WindowEventName extends keyof WindowEventMap,\n ElementEventName extends keyof HTMLElementEventMap,\n DocumentEventName extends keyof DocumentEventMap,\n ElementRef extends HTMLElement | MediaQueryList | Document | Window | void = void,\n>(\n eventName: WindowEventName | DocumentEventName | ElementEventName | MediaQueryEventName,\n callback: (\n event:\n | MediaQueryListEventMap[MediaQueryEventName]\n | WindowEventMap[WindowEventName]\n | HTMLElementEventMap[ElementEventName]\n | DocumentEventMap[DocumentEventName]\n | Event,\n ) => void,\n element?: RefObject<ElementRef> | undefined,\n options?: boolean | AddEventListenerOptions,\n) {\n const callbackRef = useRef<EventListener>(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useLayoutEffect(() => {\n const targetElement = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n const listener: typeof callback = event => callbackRef.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { RefObject } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nconst checkIsOutside = (ref: RefObject<HTMLElement>, target: Node) => {\n return ref.current && !ref.current.contains(target);\n};\n\nexport const useClickOutside = <T extends HTMLElement>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: () => void,\n) => {\n useEventListener('keydown', e => {\n if (e.key === 'Escape') {\n callback();\n }\n });\n\n useEventListener('mousedown', event => {\n const target = event.target as Node;\n\n if (!target?.isConnected) {\n return;\n }\n\n const isOutside = (Array.isArray(ref) ? ref : [ref]).every(r => checkIsOutside(r, target));\n\n if (isOutside) {\n callback();\n }\n });\n};\n","import { useState } from 'react';\n\nexport const useConstant = <T>(initializer: T | (() => T)): T => useState(initializer)[0];\n","import { useState, useCallback } from 'react';\n\nexport type CookieOptions = {\n days?: number;\n expires?: Date;\n maxAge?: number;\n path?: string;\n domain?: string;\n secure?: boolean;\n sameSite?: 'strict' | 'lax' | 'none';\n};\n\nconst generateCookieAttributes = (options: CookieOptions): string => {\n const parts: Array<string> = [];\n\n if (options.expires instanceof Date) {\n parts.push(`expires=${options.expires.toUTCString()}`);\n } else if (typeof options.days === 'number') {\n const date = new Date();\n date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000);\n parts.push(`expires=${date.toUTCString()}`);\n }\n\n if (typeof options.maxAge === 'number') {\n parts.push(`max-age=${options.maxAge}`);\n }\n\n parts.push(`path=${options.path ?? '/'}`);\n\n if (options.domain) {\n parts.push(`domain=${options.domain}`);\n }\n\n if (options.secure) {\n parts.push('secure');\n }\n\n if (options.sameSite) {\n parts.push(`SameSite=${options.sameSite}`);\n }\n\n return parts.length > 0 ? `; ${parts.join('; ')}` : '';\n};\n\nconst setCookie = (name: string, value: string, options: CookieOptions = {}): void => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const encodedValue = encodeURIComponent(value);\n const attributes = generateCookieAttributes(options);\n document.cookie = `${name}=${encodedValue}${attributes}`;\n};\n\nconst getCookie = (name: string): string | null => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n const nameEq = `${name}=`;\n const cookies = document.cookie ? document.cookie.split(';') : [];\n\n for (const cookie of cookies) {\n const cookieTrimmed = cookie.trim();\n\n if (cookieTrimmed.indexOf(nameEq) === 0) {\n return decodeURIComponent(cookieTrimmed.substring(nameEq.length));\n }\n }\n\n return null;\n};\n\nconst deleteCookie = (name: string, options: CookieOptions = {}) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n // Ensure the same path/domain so that the deletion matches the existing cookie.\n setCookie(name, '', {\n ...options,\n days: -1,\n });\n};\n\ntype UpdateCookie<T> = (value: T, overrideOptions?: CookieOptions) => void;\ntype RemoveCookie = () => void;\n\nexport const useCookie = <T = unknown>(\n cookieName: string,\n defaultValue?: T,\n options: CookieOptions = {},\n): [T, UpdateCookie<T>, RemoveCookie] => {\n const [cookieValue, setCookieValue] = useState<T>(() => {\n const rawCookie = getCookie(cookieName);\n\n if (rawCookie !== null) {\n try {\n return JSON.parse(rawCookie) as T;\n } catch {\n return defaultValue as T;\n }\n }\n\n return defaultValue as T;\n });\n\n const updateCookie = useCallback<UpdateCookie<T>>(\n (value: T, overrideOptions: CookieOptions = {}) => {\n const mergedOptions = { ...options, ...overrideOptions };\n const stringValue = JSON.stringify(value);\n setCookie(cookieName, stringValue, mergedOptions);\n setCookieValue(value);\n },\n [cookieName, options],\n );\n\n const removeCookie = useCallback<RemoveCookie>(() => {\n deleteCookie(cookieName, options);\n setCookieValue(defaultValue as T);\n }, [cookieName, defaultValue, options]);\n\n return [cookieValue, updateCookie, removeCookie];\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number = 500): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useState } from 'react';\n\nimport { useResizeObserver } from './use-resize-observer';\n\nexport const useDimensions = (ref: React.RefObject<HTMLElement>) => {\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n\n useResizeObserver(ref, ([entry]) => {\n if ((entry?.borderBoxSize ?? [])[0]) {\n const { inlineSize: width, blockSize: height } = entry.borderBoxSize[0];\n setDimensions({ width, height });\n } else if (entry.contentRect) {\n const { width, height } = entry.contentRect;\n setDimensions({ width, height });\n }\n });\n\n return dimensions;\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends Element>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: ResizeObserverCallback,\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new ResizeObserver(callback);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [ref, callback]);\n};\n","import { useEffect, useMemo } from 'react';\n\nexport const useDomContainer = (containerID: string) => {\n useEffect(() => {\n const domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n return () => {\n if (domContainer) {\n document.body.removeChild(domContainer);\n }\n };\n }\n }, [containerID]);\n\n return useMemo(() => {\n let domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n }, [containerID]);\n};\n","import { useEffect, useState } from 'react';\n\nimport { formatBytes } from '@polpo/helpers';\n\nexport enum FileTypeEnum {\n PNG = 'image/png',\n PDF = 'application/pdf',\n}\n\nexport type FileResolvedT = {\n name: string;\n size: number;\n formatSize: string;\n type: FileTypeEnum;\n url: FileReader['result'];\n};\n\nexport const useFileReader = (inputFiles: Array<File>) => {\n const [files, setFiles] = useState<Array<FileResolvedT>>([]);\n\n useEffect(() => {\n const fileReaders: Array<FileReader> = [];\n let isCancel = false;\n\n if (!Array.isArray(inputFiles) || inputFiles.length === 0) {\n setFiles([]);\n } else {\n const promises = inputFiles.map(file => {\n return new Promise<FileResolvedT>((resolve, reject) => {\n const fileReader = new FileReader();\n fileReaders.push(fileReader);\n fileReader.onload = (e: ProgressEvent<FileReader>) => {\n if (e.target?.result) {\n resolve({\n name: file.name,\n size: file.size,\n formatSize: formatBytes(file.size),\n type: file.type as FileTypeEnum,\n url: e.target.result,\n });\n }\n };\n fileReader.onabort = () => {\n reject(new Error('File reading aborted'));\n };\n fileReader.onerror = () => {\n reject(new Error('Failed to read file'));\n };\n fileReader.readAsDataURL(file);\n });\n });\n\n Promise.all(promises).then(files => {\n if (!isCancel) {\n setFiles(files);\n }\n });\n }\n\n return () => {\n isCancel = true;\n fileReaders.forEach(fileReader => {\n fileReader.abort();\n });\n };\n }, [inputFiles]);\n\n return files;\n};\n","import { useEffect, useRef, useState } from 'react';\n\ntype GeolocationData = GeolocationPosition['coords'] & {\n timestamp: GeolocationPosition['timestamp'];\n};\n\ninterface GeolocationError {\n code: number;\n message: string;\n}\n\ntype UseGeolocationReturn = {\n data: GeolocationData | null;\n error: GeolocationError | null;\n isLoading: boolean;\n};\n\nexport const useGeolocation = (): UseGeolocationReturn => {\n const [data, setData] = useState<GeolocationData | null>(null);\n const [error, setError] = useState<GeolocationError | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const watchIdRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (!navigator.geolocation) {\n setError({\n code: 0,\n message: 'Geolocation is not supported by your browser.',\n });\n setIsLoading(false);\n\n return;\n }\n\n const handleSuccess = (position: GeolocationPosition) => {\n setData({\n ...position.coords,\n timestamp: position.timestamp,\n });\n setIsLoading(false);\n };\n\n const handleError = (geolocationError: GeolocationPositionError) => {\n setError({\n code: geolocationError.code,\n message: geolocationError.message,\n });\n setIsLoading(false);\n };\n\n navigator.geolocation.getCurrentPosition(handleSuccess, handleError);\n\n watchIdRef.current = navigator.geolocation.watchPosition(handleSuccess, handleError);\n\n return () => {\n if (watchIdRef.current !== null) {\n navigator.geolocation.clearWatch(watchIdRef.current);\n }\n };\n }, []);\n\n return { data, error, isLoading };\n};\n","import { useCallback, useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nexport const useHover = () => {\n const [isHovered, setIsHovered] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n const handleMouseEnter = useCallback(() => setIsHovered(true), []);\n\n const handleMouseLeave = useCallback(() => setIsHovered(false), []);\n\n useEventListener('mouseenter', handleMouseEnter, ref);\n useEventListener('mouseleave', handleMouseLeave, ref);\n\n return isHovered;\n};\n","import { useRef, useState } from 'react';\n\nimport { useIntersectionObserver } from './use-intersection-observer';\n\nexport const useInView = (initOptions: IntersectionObserverInit = {}) => {\n const [inView, setInView] = useState(false);\n const ref = useRef<Element>(null);\n\n useIntersectionObserver(\n ref,\n ([entry]) => {\n setInView(entry.isIntersecting);\n },\n initOptions,\n );\n\n return { ref, inView };\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useIntersectionObserver = <T extends Element>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: IntersectionObserverCallback,\n initOptions: IntersectionObserverInit = {},\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new IntersectionObserver(callback, initOptions);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [callback, initOptions, ref]);\n};\n","import React, { useCallback, useState } from 'react';\n\ntype InputTypes = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ntype UseInputHandlersProps<T extends InputTypes> = {\n onBlur?: (e: React.FocusEvent<T>) => void;\n onFocus?: (e: React.FocusEvent<T>) => void;\n onChange?: (e: React.ChangeEvent<T>) => void;\n};\n\nexport const useInputHandlers = <T extends InputTypes>({\n onBlur,\n onFocus,\n onChange,\n}: UseInputHandlersProps<T> = {}) => {\n const [isFocus, setIsFocus] = useState(false);\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(true);\n onFocus && onFocus(e);\n },\n [onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(false);\n onBlur && onBlur(e);\n },\n [onBlur],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<T>) => {\n onChange && onChange(e);\n },\n [onChange],\n );\n\n return {\n isFocus,\n handlers: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n },\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n\n const listener = () => {\n setMatches(media.matches);\n };\n\n media.addEventListener('change', listener);\n\n return () => {\n media.removeEventListener('change', listener);\n };\n }, [matches, query]);\n\n return matches;\n};\n","import { useRef, useState } from 'react';\n\nexport const useModal = <T extends HTMLElement>() => {\n const containerRef = useRef<T>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n return {\n containerRef,\n isOpen,\n openModal,\n closeModal,\n };\n};\n","import { RefObject, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport { useClickOutside } from './use-click-outside';\nimport { useEventListener } from './use-event-listener';\nimport { useModalTransition } from './use-modal-transition';\nimport { useResizeObserver } from './use-resize-observer';\n\nimport {\n getModalPositionRelativeToContainer,\n getModalPositionRelativeToScreen,\n PositionContainer,\n PositionObject,\n} from '@polpo/helpers';\n\nconst convertDOMRectToPosition = (rect: DOMRectReadOnly): PositionObject => ({\n x: rect.x,\n y: rect.y,\n w: rect.width,\n h: rect.height,\n top: rect.top,\n left: rect.left,\n});\n\nexport type UseModalInContainerParams<\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n> = {\n closeOnClickOutside?: boolean;\n transitionDuration?: number;\n windowOffset?: number;\n offset?: number;\n position?: `${PositionContainer}`;\n modalRef: RefObject<Modal>;\n containerRef?: RefObject<Container>;\n onClose?: () => void;\n};\n\nexport const useModalInContainer = <\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n>({\n closeOnClickOutside = true,\n offset = 0,\n windowOffset = 0,\n position = PositionContainer.BOTTOM,\n transitionDuration = 0,\n modalRef,\n containerRef,\n onClose,\n}: UseModalInContainerParams<Container, Modal>) => {\n const containerTemporalRef = useRef<Container>(null);\n const modalState = useModalTransition(transitionDuration, onClose);\n\n const { isVisible, closeModal } = modalState;\n\n useClickOutside<Modal>(modalRef, () => {\n if (isVisible && closeOnClickOutside) {\n closeModal();\n }\n });\n\n const getPosition = useCallback(\n (modalRef: RefObject<Modal>, containerRef: RefObject<Container>) => {\n const modal = modalRef.current?.getClientRects()[0];\n const container = containerRef.current?.getClientRects()[0];\n\n if (!modal) {\n return;\n }\n\n const modalStyle: Record<string, string> = !container\n ? getModalPositionRelativeToScreen({ position: position as PositionContainer, windowOffset })\n : getModalPositionRelativeToContainer({\n c: convertDOMRectToPosition(container),\n m: convertDOMRectToPosition(modal),\n offset,\n windowOffset,\n position: position as PositionContainer,\n });\n\n Object.keys(modalStyle).forEach(key => {\n modalRef.current?.style.setProperty(key, modalStyle[key]);\n });\n },\n [position, windowOffset, offset],\n );\n\n const callback = useCallback(() => {\n if (isVisible) {\n getPosition(modalRef, containerRef ?? containerTemporalRef);\n }\n }, [getPosition, isVisible, containerRef, modalRef]);\n\n useLayoutEffect(callback, [callback]);\n\n useResizeObserver<Container>(containerRef ?? containerTemporalRef, callback);\n useResizeObserver<Modal>(modalRef, callback);\n useEventListener('resize', callback);\n useEventListener('scroll', callback, modalRef);\n\n return modalState;\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\n\nexport enum ModalState {\n OPENING = 'OPENING',\n OPEN = 'OPEN',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n}\n\nexport const useModalTransition = (transitionDuration: number = 0, onClose: () => void = () => null) => {\n const [modalState, setModalState] = React.useState<ModalState>(ModalState.CLOSED);\n\n const isVisible = useMemo(() => {\n return modalState !== ModalState.CLOSED;\n }, [modalState]);\n\n useEffect(() => {\n document.documentElement.style.overflow = isVisible ? 'hidden' : 'auto';\n }, [isVisible]);\n\n const closeModal = useCallback(() => {\n if ([ModalState.OPENING, ModalState.OPEN].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.CLOSING);\n setTimeout(() => {\n setModalState(ModalState.CLOSED);\n onClose();\n }, transitionDuration);\n } else {\n setModalState(ModalState.CLOSED);\n }\n }\n }, [onClose, modalState, transitionDuration]);\n\n const openModal = useCallback(() => {\n if ([ModalState.CLOSING, ModalState.CLOSED].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.OPENING);\n setTimeout(() => {\n setModalState(ModalState.OPEN);\n }, transitionDuration);\n } else {\n setModalState(ModalState.OPEN);\n }\n }\n }, [modalState, transitionDuration]);\n\n return {\n isVisible,\n closeModal,\n openModal,\n modalState,\n };\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\ntype MousePosition = {\n x: null | number;\n y: null | number;\n elementX: number | null;\n elementY: number | null;\n elementPositionX: number | null;\n elementPositionY: number | null;\n};\n\nconst getMousePosition = (domRect: DOMRect, e: MouseEvent) => {\n const { left, top } = domRect;\n const containerPositionX = left + window.scrollX;\n const containerPositionY = top + window.scrollY;\n const containerX = e.pageX - containerPositionX;\n const containerY = e.pageY - containerPositionY;\n\n return {\n x: e.pageX,\n y: e.pageY,\n elementX: containerX,\n elementY: containerY,\n elementPositionX: containerPositionX,\n elementPositionY: containerPositionY,\n };\n};\n\nexport const useMousePosition = (containerRef?: React.RefObject<HTMLElement | SVGElement | null>) => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState<MousePosition>({\n x: null,\n y: null,\n elementX: null,\n elementY: null,\n elementPositionX: null,\n elementPositionY: null,\n });\n\n const mouseMove = (e: MouseEvent) => {\n const { clientX, clientY } = e;\n setPosition(prev => ({ ...prev, x: clientX, y: clientY }));\n\n if (containerRef?.current instanceof Element) {\n const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n } else if (ref.current instanceof Element) {\n const newState = getMousePosition(ref.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n }\n };\n\n useEventListener('mousemove', mouseMove);\n\n return { ...position, ref };\n};\n","import { useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nexport const useOnlineStatus = () => {\n const [online, setOnline] = useState(navigator.onLine);\n\n useEventListener('online', () => setOnline(navigator.onLine));\n useEventListener('offline', () => setOnline(navigator.onLine));\n\n return online;\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useRenderCount = () => {\n const count = useRef(1);\n\n useEffect(() => {\n count.current++;\n });\n\n return count.current;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useScroll = () => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState([0, 0]);\n\n useEffect(() => {\n const element = ref.current;\n\n const handleScroll = () => {\n if (!element) return;\n\n setPosition([element.scrollLeft, element.scrollTop]);\n };\n\n if (element) {\n element.addEventListener('scroll', handleScroll);\n }\n\n return () => {\n if (element) {\n element.removeEventListener('scroll', handleScroll);\n }\n };\n }, []);\n\n return {\n ref,\n position,\n };\n};\n","import { Dispatch, SetStateAction, useEffect, useState } from 'react';\n\nfunction useStateHistory<T>(initialState: T | (() => T)): [T, Dispatch<SetStateAction<T>>, Array<T>];\n\nfunction useStateHistory<T = undefined>(): [T | undefined, Dispatch<SetStateAction<T | undefined>>, Array<T>];\n\nfunction useStateHistory<T = undefined>(\n initialState?: T | (() => T) | undefined,\n): [T | undefined, Dispatch<SetStateAction<T | undefined>>, Array<T>] {\n const [state, setState] = useState<T | undefined>(initialState);\n const [history, setHistory] = useState<Array<T>>([]);\n\n useEffect(() => {\n if (state !== undefined) {\n setHistory(prevHistory => [...prevHistory, state]);\n }\n }, [state]);\n\n return [state, setState, history];\n}\n\nexport { useStateHistory };\n","import { useCallback, useState } from 'react';\n\nexport const useToggle = (defaultValue: boolean = false) => {\n const [value, setValue] = useState<boolean>(defaultValue);\n\n const toggle = useCallback(() => {\n setValue(prev => !prev);\n }, []);\n\n return [value, toggle, setValue];\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggleValues = <T>(values: Array<T>, defaultIndex: number = 0): [T, (index?: number) => void] => {\n const [index, setIndex] = useState(defaultIndex);\n\n const toggle = useCallback(\n (index?: number) => {\n setIndex(index !== undefined ? index : prev => (prev + 1) % values.length);\n },\n [values.length],\n );\n\n return [values[index], toggle];\n};\n","import { useEffect, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nenum ScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape',\n}\n\ntype UseViewportData = {\n width: number;\n height: number;\n orientation: ScreenOrientation;\n};\n\nexport const useViewport = (): UseViewportData => {\n const getData = (): UseViewportData => {\n const { innerWidth, innerHeight } = window;\n\n return {\n width: innerWidth,\n height: innerHeight,\n orientation: innerWidth > innerHeight ? ScreenOrientation.LANDSCAPE : ScreenOrientation.PORTRAIT,\n };\n };\n\n const [data, setData] = useState<UseViewportData>(getData);\n\n useEventListener('resize', () => {\n setData(getData());\n });\n\n useEffect(() => {\n setData(getData());\n }, []);\n\n return data;\n};\n"],"mappings":"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","names":["useCallback","useMemo","useReducer","useCallback","useLayoutEffect","useRef","useSafeDispatch","dispatch","mounted","args","asyncReducer","_state","action","useAsync","initialState","asyncState","unsafeDispatch","useReducer","dispatch","useSafeDispatch","run","useCallback","promise","data","error","setData","setError","useMemo","useMemo","useClassNames","classes","compiledClassNames","classname","value","useEffect","useLayoutEffect","useRef","useEventListener","eventName","callback","element","options","callbackRef","targetElement","listener","event","checkIsOutside","ref","target","useClickOutside","callback","useEventListener","e","event","r","useState","useConstant","initializer","useState","useCallback","generateCookieAttributes","options","parts","date","setCookie","name","value","encodedValue","attributes","getCookie","nameEq","cookies","cookie","cookieTrimmed","deleteCookie","useCookie","cookieName","defaultValue","cookieValue","setCookieValue","rawCookie","updateCookie","overrideOptions","mergedOptions","stringValue","removeCookie","useEffect","useState","useDebounce","value","delay","debouncedValue","setDebouncedValue","timer","useState","useEffect","useResizeObserver","ref","callback","refs","observer","useDimensions","ref","dimensions","setDimensions","useState","useResizeObserver","entry","width","height","useEffect","useMemo","useDomContainer","containerID","domContainer","useEffect","useState","FileTypeEnum","useFileReader","inputFiles","files","setFiles","useState","useEffect","fileReaders","isCancel","promises","file","resolve","reject","fileReader","e","formatBytes","useEffect","useRef","useState","useGeolocation","data","setData","error","setError","isLoading","setIsLoading","watchIdRef","handleSuccess","position","handleError","geolocationError","useCallback","useRef","useState","useHover","isHovered","setIsHovered","useState","ref","useRef","handleMouseEnter","useCallback","handleMouseLeave","useEventListener","useRef","useState","useEffect","useIntersectionObserver","ref","callback","initOptions","refs","observer","r","useInView","initOptions","inView","setInView","useState","ref","useRef","useIntersectionObserver","entry","useCallback","useState","useInputHandlers","onBlur","onFocus","onChange","isFocus","setIsFocus","handleFocus","e","handleBlur","handleChange","useEffect","useState","useMediaQuery","query","matches","setMatches","media","listener","useRef","useState","useModal","containerRef","isOpen","setIsOpen","useCallback","useLayoutEffect","useRef","React","useCallback","useEffect","useMemo","ModalState","useModalTransition","transitionDuration","onClose","modalState","setModalState","isVisible","closeModal","openModal","convertDOMRectToPosition","rect","useModalInContainer","closeOnClickOutside","offset","windowOffset","position","transitionDuration","modalRef","containerRef","onClose","containerTemporalRef","useRef","modalState","useModalTransition","isVisible","closeModal","useClickOutside","getPosition","useCallback","modal","container","modalStyle","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","key","callback","useLayoutEffect","useResizeObserver","useEventListener","useRef","useState","getMousePosition","domRect","e","left","top","containerPositionX","containerPositionY","containerX","containerY","useMousePosition","containerRef","ref","useRef","position","setPosition","useState","useEventListener","clientX","clientY","prev","newState","useState","useOnlineStatus","online","setOnline","useState","useEventListener","useEffect","useRef","useRenderCount","count","useEffect","useRef","useState","useScroll","ref","position","setPosition","element","handleScroll","useEffect","useState","useStateHistory","initialState","state","setState","history","setHistory","prevHistory","useCallback","useState","useToggle","defaultValue","value","setValue","toggle","prev","useCallback","useState","useToggleValues","values","defaultIndex","index","setIndex","toggle","prev","useEffect","useState","useViewport","getData","innerWidth","innerHeight","data","setData","useState","useEventListener","useEffect"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-async.ts","../src/hooks/use-safe-dispatch.ts","../src/hooks/use-classnames.ts","../src/hooks/use-event-listener.ts","../src/hooks/use-click-outside.ts","../src/hooks/use-constant.ts","../src/hooks/use-cookie.ts","../src/hooks/use-debounce.ts","../src/hooks/use-dimensions.ts","../src/hooks/use-resize-observer.ts","../src/hooks/use-dom-container.ts","../src/hooks/use-file-reader.ts","../src/hooks/use-geolocation.ts","../src/hooks/use-hover.ts","../src/hooks/use-in-view.ts","../src/hooks/use-intersection-observer.ts","../src/hooks/use-input-handlers.ts","../src/hooks/use-media-query.ts","../src/hooks/use-modal.ts","../src/hooks/use-modal-in-container.ts","../src/hooks/use-modal-transition.ts","../src/hooks/use-mouse-position.ts","../src/hooks/use-online-status.ts","../src/hooks/use-render-count.ts","../src/hooks/use-scroll.ts","../src/hooks/use-state-history.ts","../src/hooks/use-toggle.ts","../src/hooks/use-toggle-values.ts","../src/hooks/use-viewport.ts"],"sourcesContent":["import React, { useCallback, useMemo, useReducer } from 'react';\n\nimport { useSafeDispatch } from './use-safe-dispatch';\n\ntype AsyncState<T> =\n | {\n status: 'idle' | 'pending';\n data?: null;\n error?: null;\n }\n | {\n status: 'resolved';\n data: T;\n error: null;\n }\n | {\n status: 'rejected';\n data: null;\n error: Error;\n };\n\ntype AsyncAction<T> =\n | { type: 'reset' }\n | { type: 'pending' }\n | { type: 'resolved'; data: T }\n | { type: 'rejected'; error: Error };\n\nconst asyncReducer = <T>(_state: AsyncState<T>, action: AsyncAction<T>): AsyncState<T> => {\n switch (action.type) {\n case 'pending': {\n return { status: 'pending' as const, data: null, error: null };\n }\n case 'resolved': {\n return { status: 'resolved' as const, data: action.data, error: null };\n }\n case 'rejected': {\n return { status: 'rejected' as const, data: null, error: action.error };\n }\n default: {\n throw new Error(`Unhandled action: ${JSON.stringify(action)}`);\n }\n }\n};\n\nexport const useAsync = <T>(\n initialState?: AsyncState<T>,\n): AsyncState<T> & {\n setData: (data: T) => void;\n setError: (error: Error) => void;\n run: (promise: Promise<T>) => void;\n} => {\n const [asyncState, unsafeDispatch] = useReducer<React.Reducer<AsyncState<T>, AsyncAction<T>>>(asyncReducer, {\n status: 'idle',\n data: null,\n error: null,\n ...initialState,\n });\n const dispatch = useSafeDispatch(unsafeDispatch);\n\n const run = useCallback(\n (promise: Promise<T>) => {\n dispatch({ type: 'pending' });\n promise.then(\n data => {\n dispatch({ type: 'resolved', data });\n },\n (error: Error) => {\n dispatch({ type: 'rejected', error });\n },\n );\n },\n [dispatch],\n );\n\n const setData = useCallback((data: T) => dispatch({ type: 'resolved', data }), [dispatch]);\n\n const setError = useCallback((error: Error) => dispatch({ type: 'rejected', error }), [dispatch]);\n\n return useMemo(\n () => ({\n setData,\n setError,\n run,\n ...asyncState,\n }),\n [asyncState, run, setData, setError],\n );\n};\n","import React, { useCallback, useLayoutEffect, useRef } from 'react';\n\nexport const useSafeDispatch = <T>(dispatch: React.Dispatch<T>): ((action: T) => void) => {\n const mounted = useRef(false);\n\n useLayoutEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n };\n }, []);\n\n return useCallback(\n (...args: Parameters<React.Dispatch<T>>) => {\n if (mounted.current) {\n dispatch(...args);\n }\n },\n [dispatch],\n );\n};\n","import { useMemo } from 'react';\n\nexport const useClassNames = (classes: Record<string, boolean>): string =>\n useMemo<string>(\n () =>\n Object.entries(classes)\n .reduce<Array<string>>(\n (compiledClassNames, [classname, value]) => (value ? [...compiledClassNames, classname] : compiledClassNames),\n [],\n )\n .join(' '),\n [classes],\n );\n","import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useEventListener<EventName extends keyof MediaQueryListEventMap>(\n eventName: EventName,\n callback: (event: MediaQueryListEventMap[EventName]) => void,\n element: RefObject<MediaQueryList> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof WindowEventMap>(\n eventName: EventName,\n callback: (event: WindowEventMap[EventName]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof HTMLElementEventMap, ElementRef extends HTMLElement = HTMLDivElement>(\n eventName: EventName,\n callback: (event: HTMLElementEventMap[EventName]) => void,\n element: RefObject<ElementRef> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<EventName extends keyof DocumentEventMap>(\n eventName: EventName,\n callback: (event: DocumentEventMap[EventName]) => void,\n element: RefObject<Document> | undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n MediaQueryEventName extends keyof MediaQueryListEventMap,\n WindowEventName extends keyof WindowEventMap,\n ElementEventName extends keyof HTMLElementEventMap,\n DocumentEventName extends keyof DocumentEventMap,\n ElementRef extends HTMLElement | MediaQueryList | Document | Window | void = void,\n>(\n eventName: WindowEventName | DocumentEventName | ElementEventName | MediaQueryEventName,\n callback: (\n event:\n | MediaQueryListEventMap[MediaQueryEventName]\n | WindowEventMap[WindowEventName]\n | HTMLElementEventMap[ElementEventName]\n | DocumentEventMap[DocumentEventName]\n | Event,\n ) => void,\n element?: RefObject<ElementRef> | undefined,\n options?: boolean | AddEventListenerOptions,\n) {\n const callbackRef = useRef<EventListener>(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useLayoutEffect(() => {\n const targetElement = element?.current ?? window;\n\n if (!(targetElement && targetElement.addEventListener)) return;\n\n const listener: typeof callback = event => callbackRef.current(event);\n\n targetElement.addEventListener(eventName, listener, options);\n\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\nexport { useEventListener };\n","import { RefObject } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nconst checkIsOutside = (ref: RefObject<HTMLElement>, target: Node) => {\n return ref.current && !ref.current.contains(target);\n};\n\nexport const useClickOutside = <T extends HTMLElement>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: () => void,\n) => {\n useEventListener('keydown', e => {\n if (e.key === 'Escape') {\n callback();\n }\n });\n\n useEventListener('mousedown', event => {\n const target = event.target as Node;\n\n if (!target?.isConnected) {\n return;\n }\n\n const isOutside = (Array.isArray(ref) ? ref : [ref]).every(r => checkIsOutside(r, target));\n\n if (isOutside) {\n callback();\n }\n });\n};\n","import { useState } from 'react';\n\nexport const useConstant = <T>(initializer: T | (() => T)): T => useState(initializer)[0];\n","import { useState, useCallback } from 'react';\n\nexport type CookieOptions = {\n days?: number;\n expires?: Date;\n maxAge?: number;\n path?: string;\n domain?: string;\n secure?: boolean;\n sameSite?: 'strict' | 'lax' | 'none';\n};\n\nconst generateCookieAttributes = (options: CookieOptions): string => {\n const parts: Array<string> = [];\n\n if (options.expires instanceof Date) {\n parts.push(`expires=${options.expires.toUTCString()}`);\n } else if (typeof options.days === 'number') {\n const date = new Date();\n date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000);\n parts.push(`expires=${date.toUTCString()}`);\n }\n\n if (typeof options.maxAge === 'number') {\n parts.push(`max-age=${options.maxAge}`);\n }\n\n parts.push(`path=${options.path ?? '/'}`);\n\n if (options.domain) {\n parts.push(`domain=${options.domain}`);\n }\n\n if (options.secure) {\n parts.push('secure');\n }\n\n if (options.sameSite) {\n parts.push(`SameSite=${options.sameSite}`);\n }\n\n return parts.length > 0 ? `; ${parts.join('; ')}` : '';\n};\n\nconst setCookie = (name: string, value: string, options: CookieOptions = {}): void => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const encodedValue = encodeURIComponent(value);\n const attributes = generateCookieAttributes(options);\n document.cookie = `${name}=${encodedValue}${attributes}`;\n};\n\nconst getCookie = (name: string): string | null => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n const nameEq = `${name}=`;\n const cookies = document.cookie ? document.cookie.split(';') : [];\n\n for (const cookie of cookies) {\n const cookieTrimmed = cookie.trim();\n\n if (cookieTrimmed.indexOf(nameEq) === 0) {\n return decodeURIComponent(cookieTrimmed.substring(nameEq.length));\n }\n }\n\n return null;\n};\n\nconst deleteCookie = (name: string, options: CookieOptions = {}) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n // Ensure the same path/domain so that the deletion matches the existing cookie.\n setCookie(name, '', {\n ...options,\n days: -1,\n });\n};\n\ntype UpdateCookie<T> = (value: T, overrideOptions?: CookieOptions) => void;\ntype RemoveCookie = () => void;\n\nexport const useCookie = <T = unknown>(\n cookieName: string,\n defaultValue?: T,\n options: CookieOptions = {},\n): [T, UpdateCookie<T>, RemoveCookie] => {\n const [cookieValue, setCookieValue] = useState<T>(() => {\n const rawCookie = getCookie(cookieName);\n\n if (rawCookie !== null) {\n try {\n return JSON.parse(rawCookie) as T;\n } catch {\n return defaultValue as T;\n }\n }\n\n return defaultValue as T;\n });\n\n const updateCookie = useCallback<UpdateCookie<T>>(\n (value: T, overrideOptions: CookieOptions = {}) => {\n const mergedOptions = { ...options, ...overrideOptions };\n const stringValue = JSON.stringify(value);\n setCookie(cookieName, stringValue, mergedOptions);\n setCookieValue(value);\n },\n [cookieName, options],\n );\n\n const removeCookie = useCallback<RemoveCookie>(() => {\n deleteCookie(cookieName, options);\n setCookieValue(defaultValue as T);\n }, [cookieName, defaultValue, options]);\n\n return [cookieValue, updateCookie, removeCookie];\n};\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = <T>(value: T, delay: number = 500): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n","import { useState } from 'react';\n\nimport { useResizeObserver } from './use-resize-observer';\n\nexport const useDimensions = (ref: React.RefObject<HTMLElement>) => {\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n\n useResizeObserver(ref, ([entry]) => {\n if ((entry?.borderBoxSize ?? [])[0]) {\n const { inlineSize: width, blockSize: height } = entry.borderBoxSize[0];\n setDimensions({ width, height });\n } else if (entry.contentRect) {\n const { width, height } = entry.contentRect;\n setDimensions({ width, height });\n }\n });\n\n return dimensions;\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useResizeObserver = <T extends Element>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: ResizeObserverCallback,\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new ResizeObserver(callback);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [ref, callback]);\n};\n","import { useEffect, useMemo } from 'react';\n\nexport const useDomContainer = (containerID: string) => {\n useEffect(() => {\n const domContainer = document.getElementById(containerID);\n\n if (domContainer !== null) {\n return () => {\n if (domContainer) {\n document.body.removeChild(domContainer);\n }\n };\n }\n }, [containerID]);\n\n return useMemo(() => {\n let domContainer = document.getElementById(containerID);\n\n if (domContainer === null) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n }, [containerID]);\n};\n","import { useEffect, useState } from 'react';\n\nimport { formatBytes } from '@polpo/helpers';\n\nexport enum FileTypeEnum {\n PNG = 'image/png',\n PDF = 'application/pdf',\n}\n\nexport type FileResolvedT = {\n name: string;\n size: number;\n formatSize: string;\n type: FileTypeEnum;\n url: FileReader['result'];\n};\n\nexport const useFileReader = (inputFiles: Array<File>) => {\n const [files, setFiles] = useState<Array<FileResolvedT>>([]);\n\n useEffect(() => {\n const fileReaders: Array<FileReader> = [];\n let isCancel = false;\n\n if (!Array.isArray(inputFiles) || inputFiles.length === 0) {\n setFiles([]);\n } else {\n const promises = inputFiles.map(file => {\n return new Promise<FileResolvedT>((resolve, reject) => {\n const fileReader = new FileReader();\n fileReaders.push(fileReader);\n fileReader.onload = (e: ProgressEvent<FileReader>) => {\n if (e.target?.result) {\n resolve({\n name: file.name,\n size: file.size,\n formatSize: formatBytes(file.size),\n type: file.type as FileTypeEnum,\n url: e.target.result,\n });\n }\n };\n fileReader.onabort = () => {\n reject(new Error('File reading aborted'));\n };\n fileReader.onerror = () => {\n reject(new Error('Failed to read file'));\n };\n fileReader.readAsDataURL(file);\n });\n });\n\n Promise.all(promises).then(files => {\n if (!isCancel) {\n setFiles(files);\n }\n });\n }\n\n return () => {\n isCancel = true;\n fileReaders.forEach(fileReader => {\n fileReader.abort();\n });\n };\n }, [inputFiles]);\n\n return files;\n};\n","import { useEffect, useRef, useState } from 'react';\n\ntype GeolocationData = GeolocationPosition['coords'] & {\n timestamp: GeolocationPosition['timestamp'];\n};\n\ninterface GeolocationError {\n code: number;\n message: string;\n}\n\ntype UseGeolocationReturn = {\n data: GeolocationData | null;\n error: GeolocationError | null;\n isLoading: boolean;\n};\n\nexport const useGeolocation = (): UseGeolocationReturn => {\n const [data, setData] = useState<GeolocationData | null>(null);\n const [error, setError] = useState<GeolocationError | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const watchIdRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (!navigator.geolocation) {\n setError({\n code: 0,\n message: 'Geolocation is not supported by your browser.',\n });\n setIsLoading(false);\n\n return;\n }\n\n const handleSuccess = (position: GeolocationPosition) => {\n setData({\n ...position.coords,\n timestamp: position.timestamp,\n });\n setIsLoading(false);\n };\n\n const handleError = (geolocationError: GeolocationPositionError) => {\n setError({\n code: geolocationError.code,\n message: geolocationError.message,\n });\n setIsLoading(false);\n };\n\n navigator.geolocation.getCurrentPosition(handleSuccess, handleError);\n\n watchIdRef.current = navigator.geolocation.watchPosition(handleSuccess, handleError);\n\n return () => {\n if (watchIdRef.current !== null) {\n navigator.geolocation.clearWatch(watchIdRef.current);\n }\n };\n }, []);\n\n return { data, error, isLoading };\n};\n","import { useCallback, useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nexport const useHover = () => {\n const [isHovered, setIsHovered] = useState(false);\n const ref = useRef<HTMLElement>(null);\n\n const handleMouseEnter = useCallback(() => setIsHovered(true), []);\n\n const handleMouseLeave = useCallback(() => setIsHovered(false), []);\n\n useEventListener('mouseenter', handleMouseEnter, ref);\n useEventListener('mouseleave', handleMouseLeave, ref);\n\n return isHovered;\n};\n","import { useRef, useState } from 'react';\n\nimport { useIntersectionObserver } from './use-intersection-observer';\n\nexport const useInView = (initOptions: IntersectionObserverInit = {}) => {\n const [inView, setInView] = useState(false);\n const ref = useRef<Element>(null);\n\n useIntersectionObserver(\n ref,\n ([entry]) => {\n setInView(entry.isIntersecting);\n },\n initOptions,\n );\n\n return { ref, inView };\n};\n","import { RefObject, useEffect } from 'react';\n\nexport const useIntersectionObserver = <T extends Element>(\n ref: RefObject<T> | Array<RefObject<T>>,\n callback: IntersectionObserverCallback,\n initOptions: IntersectionObserverInit = {},\n) => {\n useEffect(() => {\n const refs = Array.isArray(ref) ? ref : [ref];\n\n const observer = new IntersectionObserver(callback, initOptions);\n\n refs.forEach(r => r.current && observer.observe(r.current));\n\n return () => {\n observer.disconnect();\n };\n }, [callback, initOptions, ref]);\n};\n","import React, { useCallback, useState } from 'react';\n\ntype InputTypes = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n\ntype UseInputHandlersProps<T extends InputTypes> = {\n onBlur?: (e: React.FocusEvent<T>) => void;\n onFocus?: (e: React.FocusEvent<T>) => void;\n onChange?: (e: React.ChangeEvent<T>) => void;\n};\n\nexport const useInputHandlers = <T extends InputTypes>({\n onBlur,\n onFocus,\n onChange,\n}: UseInputHandlersProps<T> = {}) => {\n const [isFocus, setIsFocus] = useState(false);\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(true);\n onFocus && onFocus(e);\n },\n [onFocus],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<T>) => {\n setIsFocus(false);\n onBlur && onBlur(e);\n },\n [onBlur],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<T>) => {\n onChange && onChange(e);\n },\n [onChange],\n );\n\n return {\n isFocus,\n handlers: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n },\n };\n};\n","import { useEffect, useState } from 'react';\n\nexport const useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n\n useEffect(() => {\n const media = window.matchMedia(query);\n\n if (media.matches !== matches) {\n setMatches(media.matches);\n }\n\n const listener = () => {\n setMatches(media.matches);\n };\n\n media.addEventListener('change', listener);\n\n return () => {\n media.removeEventListener('change', listener);\n };\n }, [matches, query]);\n\n return matches;\n};\n","import { useRef, useState } from 'react';\n\nexport const useModal = <T extends HTMLElement>() => {\n const containerRef = useRef<T>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n return {\n containerRef,\n isOpen,\n openModal,\n closeModal,\n };\n};\n","import { RefObject, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport { useClickOutside } from './use-click-outside';\nimport { useEventListener } from './use-event-listener';\nimport { useModalTransition } from './use-modal-transition';\nimport { useResizeObserver } from './use-resize-observer';\n\nimport {\n getModalPositionRelativeToContainer,\n getModalPositionRelativeToScreen,\n PositionContainer,\n PositionObject,\n} from '@polpo/helpers';\n\nconst convertDOMRectToPosition = (rect: DOMRectReadOnly): PositionObject => ({\n x: rect.x,\n y: rect.y,\n w: rect.width,\n h: rect.height,\n top: rect.top,\n left: rect.left,\n});\n\nexport type UseModalInContainerParams<\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n> = {\n closeOnClickOutside?: boolean;\n transitionDuration?: number;\n windowOffset?: number;\n offset?: number;\n position?: `${PositionContainer}`;\n modalRef: RefObject<Modal>;\n containerRef?: RefObject<Container>;\n onClose?: () => void;\n};\n\nexport const useModalInContainer = <\n Container extends HTMLElement = HTMLElement,\n Modal extends HTMLElement = Container,\n>({\n closeOnClickOutside = true,\n offset = 0,\n windowOffset = 0,\n position = PositionContainer.BOTTOM,\n transitionDuration = 0,\n modalRef,\n containerRef,\n onClose,\n}: UseModalInContainerParams<Container, Modal>) => {\n const containerTemporalRef = useRef<Container>(null);\n const modalState = useModalTransition(transitionDuration, onClose);\n\n const { isVisible, closeModal } = modalState;\n\n useClickOutside<Modal>(modalRef, () => {\n if (isVisible && closeOnClickOutside) {\n closeModal();\n }\n });\n\n const getPosition = useCallback(\n (modalRef: RefObject<Modal>, containerRef: RefObject<Container>) => {\n const modal = modalRef.current?.getClientRects()[0];\n const container = containerRef.current?.getClientRects()[0];\n\n if (!modal) {\n return;\n }\n\n const modalStyle: Record<string, string> = !container\n ? getModalPositionRelativeToScreen({ position: position as PositionContainer, windowOffset })\n : getModalPositionRelativeToContainer({\n c: convertDOMRectToPosition(container),\n m: convertDOMRectToPosition(modal),\n offset,\n windowOffset,\n position: position as PositionContainer,\n });\n\n Object.keys(modalStyle).forEach(key => {\n modalRef.current?.style.setProperty(key, modalStyle[key]);\n });\n },\n [position, windowOffset, offset],\n );\n\n const callback = useCallback(() => {\n if (isVisible) {\n getPosition(modalRef, containerRef ?? containerTemporalRef);\n }\n }, [getPosition, isVisible, containerRef, modalRef]);\n\n useLayoutEffect(callback, [callback]);\n\n useResizeObserver<Container>(containerRef ?? containerTemporalRef, callback);\n useResizeObserver<Modal>(modalRef, callback);\n useEventListener('resize', callback);\n useEventListener('scroll', callback, modalRef);\n\n return modalState;\n};\n","import React, { useCallback, useEffect, useMemo } from 'react';\n\nexport enum ModalState {\n OPENING = 'OPENING',\n OPEN = 'OPEN',\n CLOSING = 'CLOSING',\n CLOSED = 'CLOSED',\n}\n\nexport const useModalTransition = (transitionDuration: number = 0, onClose: () => void = () => null) => {\n const [modalState, setModalState] = React.useState<ModalState>(ModalState.CLOSED);\n\n const isVisible = useMemo(() => {\n return modalState !== ModalState.CLOSED;\n }, [modalState]);\n\n useEffect(() => {\n document.documentElement.style.overflow = isVisible ? 'hidden' : 'auto';\n }, [isVisible]);\n\n const closeModal = useCallback(() => {\n if ([ModalState.OPENING, ModalState.OPEN].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.CLOSING);\n setTimeout(() => {\n setModalState(ModalState.CLOSED);\n onClose();\n }, transitionDuration);\n } else {\n setModalState(ModalState.CLOSED);\n }\n }\n }, [onClose, modalState, transitionDuration]);\n\n const openModal = useCallback(() => {\n if ([ModalState.CLOSING, ModalState.CLOSED].includes(modalState)) {\n if (transitionDuration > 0) {\n setModalState(ModalState.OPENING);\n setTimeout(() => {\n setModalState(ModalState.OPEN);\n }, transitionDuration);\n } else {\n setModalState(ModalState.OPEN);\n }\n }\n }, [modalState, transitionDuration]);\n\n return {\n isVisible,\n closeModal,\n openModal,\n modalState,\n };\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\ntype MousePosition = {\n x: null | number;\n y: null | number;\n elementX: number | null;\n elementY: number | null;\n elementPositionX: number | null;\n elementPositionY: number | null;\n};\n\nconst getMousePosition = (domRect: DOMRect, e: MouseEvent) => {\n const { left, top } = domRect;\n const containerPositionX = left + window.scrollX;\n const containerPositionY = top + window.scrollY;\n const containerX = e.pageX - containerPositionX;\n const containerY = e.pageY - containerPositionY;\n\n return {\n x: e.pageX,\n y: e.pageY,\n elementX: containerX,\n elementY: containerY,\n elementPositionX: containerPositionX,\n elementPositionY: containerPositionY,\n };\n};\n\nexport const useMousePosition = (containerRef?: React.RefObject<HTMLElement | SVGElement | null>) => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState<MousePosition>({\n x: null,\n y: null,\n elementX: null,\n elementY: null,\n elementPositionX: null,\n elementPositionY: null,\n });\n\n const mouseMove = (e: MouseEvent) => {\n const { clientX, clientY } = e;\n setPosition(prev => ({ ...prev, x: clientX, y: clientY }));\n\n if (containerRef?.current instanceof Element) {\n const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n } else if (ref.current instanceof Element) {\n const newState = getMousePosition(ref.current.getBoundingClientRect(), e);\n setPosition(prev => ({\n ...prev,\n ...newState,\n }));\n }\n };\n\n useEventListener('mousemove', mouseMove);\n\n return { ...position, ref };\n};\n","import { useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nexport const useOnlineStatus = () => {\n const [online, setOnline] = useState(navigator.onLine);\n\n useEventListener('online', () => setOnline(navigator.onLine));\n useEventListener('offline', () => setOnline(navigator.onLine));\n\n return online;\n};\n","import { useEffect, useRef } from 'react';\n\nexport const useRenderCount = () => {\n const count = useRef(1);\n\n useEffect(() => {\n count.current++;\n });\n\n return count.current;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useScroll = () => {\n const ref = useRef<HTMLElement>(null);\n const [position, setPosition] = useState([0, 0]);\n\n useEffect(() => {\n const element = ref.current;\n\n const handleScroll = () => {\n if (!element) return;\n\n setPosition([element.scrollLeft, element.scrollTop]);\n };\n\n if (element) {\n element.addEventListener('scroll', handleScroll);\n }\n\n return () => {\n if (element) {\n element.removeEventListener('scroll', handleScroll);\n }\n };\n }, []);\n\n return {\n ref,\n position,\n };\n};\n","import { Dispatch, SetStateAction, useEffect, useState } from 'react';\n\nfunction useStateHistory<T>(initialState: T | (() => T)): [T, Dispatch<SetStateAction<T>>, Array<T>];\n\nfunction useStateHistory<T = undefined>(): [T | undefined, Dispatch<SetStateAction<T | undefined>>, Array<T>];\n\nfunction useStateHistory<T = undefined>(\n initialState?: T | (() => T) | undefined,\n): [T | undefined, Dispatch<SetStateAction<T | undefined>>, Array<T>] {\n const [state, setState] = useState<T | undefined>(initialState);\n const [history, setHistory] = useState<Array<T>>([]);\n\n useEffect(() => {\n if (state !== undefined) {\n setHistory(prevHistory => [...prevHistory, state]);\n }\n }, [state]);\n\n return [state, setState, history];\n}\n\nexport { useStateHistory };\n","import { useCallback, useState } from 'react';\n\nexport const useToggle = (defaultValue: boolean = false) => {\n const [value, setValue] = useState<boolean>(defaultValue);\n\n const toggle = useCallback(() => {\n setValue(prev => !prev);\n }, []);\n\n return [value, toggle, setValue];\n};\n","import { useCallback, useState } from 'react';\n\nexport const useToggleValues = <T>(values: Array<T>, defaultIndex: number = 0): [T, (index?: number) => void] => {\n const [index, setIndex] = useState(defaultIndex);\n\n const toggle = useCallback(\n (index?: number) => {\n setIndex(index !== undefined ? index : prev => (prev + 1) % values.length);\n },\n [values.length],\n );\n\n return [values[index], toggle];\n};\n","import { useEffect, useState } from 'react';\n\nimport { useEventListener } from './use-event-listener';\n\nenum ScreenOrientation {\n PORTRAIT = 'portrait',\n LANDSCAPE = 'landscape',\n}\n\ntype UseViewportData = {\n width: number;\n height: number;\n orientation: ScreenOrientation;\n};\n\nexport const useViewport = (): UseViewportData => {\n const getData = (): UseViewportData => {\n const { innerWidth, innerHeight } = window;\n\n return {\n width: innerWidth,\n height: innerHeight,\n orientation: innerWidth > innerHeight ? ScreenOrientation.LANDSCAPE : ScreenOrientation.PORTRAIT,\n };\n };\n\n const [data, setData] = useState<UseViewportData>(getData);\n\n useEventListener('resize', () => {\n setData(getData());\n });\n\n useEffect(() => {\n setData(getData());\n }, []);\n\n return data;\n};\n"],"mappings":"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","names":["useCallback","useMemo","useReducer","useCallback","useLayoutEffect","useRef","useSafeDispatch","dispatch","mounted","args","asyncReducer","_state","action","useAsync","initialState","asyncState","unsafeDispatch","useReducer","dispatch","useSafeDispatch","run","useCallback","promise","data","error","setData","setError","useMemo","useMemo","useClassNames","classes","compiledClassNames","classname","value","useEffect","useLayoutEffect","useRef","useEventListener","eventName","callback","element","options","callbackRef","targetElement","listener","event","checkIsOutside","ref","target","useClickOutside","callback","useEventListener","e","event","r","useState","useConstant","initializer","useState","useCallback","generateCookieAttributes","options","parts","date","setCookie","name","value","encodedValue","attributes","getCookie","nameEq","cookies","cookie","cookieTrimmed","deleteCookie","useCookie","cookieName","defaultValue","cookieValue","setCookieValue","rawCookie","updateCookie","overrideOptions","mergedOptions","stringValue","removeCookie","useEffect","useState","useDebounce","value","delay","debouncedValue","setDebouncedValue","timer","useState","useEffect","useResizeObserver","ref","callback","refs","observer","useDimensions","ref","dimensions","setDimensions","useState","useResizeObserver","entry","width","height","useEffect","useMemo","useDomContainer","containerID","domContainer","useEffect","useState","FileTypeEnum","useFileReader","inputFiles","files","setFiles","useState","useEffect","fileReaders","isCancel","promises","file","resolve","reject","fileReader","e","formatBytes","useEffect","useRef","useState","useGeolocation","data","setData","error","setError","isLoading","setIsLoading","watchIdRef","handleSuccess","position","handleError","geolocationError","useCallback","useRef","useState","useHover","isHovered","setIsHovered","useState","ref","useRef","handleMouseEnter","useCallback","handleMouseLeave","useEventListener","useRef","useState","useEffect","useIntersectionObserver","ref","callback","initOptions","refs","observer","r","useInView","initOptions","inView","setInView","useState","ref","useRef","useIntersectionObserver","entry","useCallback","useState","useInputHandlers","onBlur","onFocus","onChange","isFocus","setIsFocus","handleFocus","e","handleBlur","handleChange","useEffect","useState","useMediaQuery","query","matches","setMatches","media","listener","useRef","useState","useModal","containerRef","isOpen","setIsOpen","useCallback","useLayoutEffect","useRef","React","useCallback","useEffect","useMemo","ModalState","useModalTransition","transitionDuration","onClose","modalState","setModalState","isVisible","closeModal","openModal","convertDOMRectToPosition","rect","useModalInContainer","closeOnClickOutside","offset","windowOffset","position","transitionDuration","modalRef","containerRef","onClose","containerTemporalRef","useRef","modalState","useModalTransition","isVisible","closeModal","useClickOutside","getPosition","useCallback","modal","container","modalStyle","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","key","callback","useLayoutEffect","useResizeObserver","useEventListener","useRef","useState","getMousePosition","domRect","e","left","top","containerPositionX","containerPositionY","containerX","containerY","useMousePosition","containerRef","ref","useRef","position","setPosition","useState","useEventListener","clientX","clientY","prev","newState","useState","useOnlineStatus","online","setOnline","useState","useEventListener","useEffect","useRef","useRenderCount","count","useEffect","useRef","useState","useScroll","ref","position","setPosition","element","handleScroll","useEffect","useState","useStateHistory","initialState","state","setState","history","setHistory","prevHistory","useCallback","useState","useToggle","defaultValue","value","setValue","toggle","prev","useCallback","useState","useToggleValues","values","defaultIndex","index","setIndex","toggle","prev","useEffect","useState","useViewport","getData","innerWidth","innerHeight","data","setData","useState","useEventListener","useEffect"]}
|
package/dist/hooks.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var me=Object.create;var h=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,fe=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var o in t)h(e,o,{get:t[o],enumerable:!0})},X=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of pe(t))!fe.call(e,r)&&r!==o&&h(e,r,{get:()=>t[r],enumerable:!(n=de(t,r))||n.enumerable});return e};var ve=(e,t,o)=>(o=e!=null?me(Te(e)):{},X(t||!e||!e.__esModule?h(o,"default",{value:e,enumerable:!0}):o,e)),be=e=>X(h({},"__esModule",{value:!0}),e);var Qe={};Ee(Qe,{FileTypeEnum:()=>ne,ModalState:()=>se,useAsync:()=>Oe,useClassNames:()=>Me,useClickOutside:()=>B,useConstant:()=>Re,useCookie:()=>Ce,useDebounce:()=>Le,useDimensions:()=>Se,useDomContainer:()=>ke,useEventListener:()=>l,useFileReader:()=>He,useGeolocation:()=>Ae,useHover:()=>Ge,useInView:()=>we,useInputHandlers:()=>De,useIntersectionObserver:()=>j,useMediaQuery:()=>Be,useModal:()=>je,useModalInContainer:()=>Fe,useModalTransition:()=>F,useMousePosition:()=>_e,useOnlineStatus:()=>$e,useRenderCount:()=>Ue,useResizeObserver:()=>O,useSafeDispatch:()=>D,useScroll:()=>ze,useStateHistory:()=>Ve,useToggle:()=>Ye,useToggleValues:()=>Xe,useViewport:()=>We});module.exports=be(Qe);var p=require("react");var b=require("react"),D=e=>{let t=(0,b.useRef)(!1);return(0,b.useLayoutEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,b.useCallback)((...o)=>{t.current&&e(...o)},[e])};var xe=(e,t)=>{switch(t.type){case"pending":return{status:"pending",data:null,error:null};case"resolved":return{status:"resolved",data:t.data,error:null};case"rejected":return{status:"rejected",data:null,error:t.error};default:throw new Error(`Unhandled action: ${JSON.stringify(t)}`)}},Oe=e=>{let[t,o]=(0,p.useReducer)(xe,{status:"idle",data:null,error:null,...e}),n=D(o),r=(0,p.useCallback)(a=>{n({type:"pending"}),a.then(c=>{n({type:"resolved",data:c})},c=>{n({type:"rejected",error:c})})},[n]),s=(0,p.useCallback)(a=>n({type:"resolved",data:a}),[n]),i=(0,p.useCallback)(a=>n({type:"rejected",error:a}),[n]);return(0,p.useMemo)(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};var W=require("react"),Me=e=>(0,W.useMemo)(()=>Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[]).join(" "),[e]);var x=require("react");function l(e,t,o,n){let r=(0,x.useRef)(t);(0,x.useEffect)(()=>{r.current=t},[t]),(0,x.useLayoutEffect)(()=>{let s=o?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,n),()=>{s.removeEventListener(e,i,n)}},[e,o,n])}var ye=(e,t)=>e.current&&!e.current.contains(t),B=(e,t)=>{l("keydown",o=>{o.key==="Escape"&&t()}),l("mousedown",o=>{let n=o.target;if(!n?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>ye(s,n))&&t()})};var Q=require("react"),Re=e=>(0,Q.useState)(e)[0];var R=require("react"),ge=e=>{let t=[];if(e.expires instanceof Date)t.push(`expires=${e.expires.toUTCString()}`);else if(typeof e.days=="number"){let o=new Date;o.setTime(o.getTime()+e.days*24*60*60*1e3),t.push(`expires=${o.toUTCString()}`)}return typeof e.maxAge=="number"&&t.push(`max-age=${e.maxAge}`),t.push(`path=${e.path??"/"}`),e.domain&&t.push(`domain=${e.domain}`),e.secure&&t.push("secure"),e.sameSite&&t.push(`SameSite=${e.sameSite}`),t.length>0?`; ${t.join("; ")}`:""},J=(e,t,o={})=>{if(typeof document>"u")return;let n=encodeURIComponent(t),r=ge(o);document.cookie=`${e}=${n}${r}`},he=e=>{if(typeof document>"u")return null;let t=`${e}=`,o=document.cookie?document.cookie.split(";"):[];for(let n of o){let r=n.trim();if(r.indexOf(t)===0)return decodeURIComponent(r.substring(t.length))}return null},Pe=(e,t={})=>{typeof document>"u"||J(e,"",{...t,days:-1})},Ce=(e,t,o={})=>{let[n,r]=(0,R.useState)(()=>{let a=he(e);if(a!==null)try{return JSON.parse(a)}catch{return t}return t}),s=(0,R.useCallback)((a,c={})=>{let u={...o,...c},d=JSON.stringify(a);J(e,d,u),r(a)},[e,o]),i=(0,R.useCallback)(()=>{Pe(e,o),r(t)},[e,t,o]);return[n,s,i]};var P=require("react"),Le=(e,t=500)=>{let[o,n]=(0,P.useState)(e);return(0,P.useEffect)(()=>{let r=setTimeout(()=>n(e),t);return()=>{clearTimeout(r)}},[e,t]),o};var Z=require("react");var K=require("react"),O=(e,t)=>{(0,K.useEffect)(()=>{let o=Array.isArray(e)?e:[e],n=new ResizeObserver(t);return o.forEach(r=>r.current&&n.observe(r.current)),()=>{n.disconnect()}},[e,t])};var Se=e=>{let[t,o]=(0,Z.useState)({width:0,height:0});return O(e,([n])=>{if((n?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=n.borderBoxSize[0];o({width:r,height:s})}else if(n.contentRect){let{width:r,height:s}=n.contentRect;o({width:r,height:s})}}),t};var C=require("react"),ke=e=>((0,C.useEffect)(()=>{let t=document.getElementById(e);if(t===null)return()=>{t&&document.body.removeChild(t)}},[e]),(0,C.useMemo)(()=>{let t=document.getElementById(e);return t===null&&(t=document.createElement("div"),t.setAttribute("id",e),document.body.appendChild(t)),t},[e]));var L=require("react");var q=(e,t=2)=>{if(e===0)return"0 Bytes";let o=1e3,n=t<0?0:t,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],s=Math.floor(Math.log(e)/Math.log(o));return parseFloat((e/Math.pow(o,s)).toFixed(n))+" "+r[s]};var ee=({c:e,m:t,offset:o,position:n})=>{let r=e.y+e.h+o,s=e.x-(t.w-e.w)*(50/100);switch(n){case"top":case"top center":r=e.y-t.h-o,s=e.x-(t.w-e.w)/2;break;case"top left":r=e.y-t.h-o,s=e.x-t.w+e.w;break;case"top right":r=e.y-t.h-o,s=e.x;break;case"bottom":case"bottom center":r=e.y+e.h+o,s=e.x-(t.w-e.w)/2;break;case"bottom left":r=e.y+e.h+o,s=e.x-t.w+e.w;break;case"bottom right":r=e.y+e.h+o,s=e.x;break;case"left":case"left center":r=e.y-(t.h-e.h)/2,s=e.x-t.w-o;break;case"left top":r=e.y-t.h+e.h,s=e.x-t.w-o;break;case"left bottom":r=e.y,s=e.x-t.w-o;break;case"right":case"right center":r=e.y-(t.h-e.h)/2,s=e.x+e.w+o;break;case"right top":r=e.y-t.h+e.h,s=e.x+e.w+o;break;case"right bottom":r=e.y,s=e.x+e.w+o;break}return{left:Math.round(s),top:Math.round(r)}},Ne=({top:e,left:t},o,n,r)=>{let s=o.split(" "),i=[],a=t+r.w+n-window.innerWidth,c=e+r.h+n-window.innerHeight;for(let u of s)u==="top"&&e<n?i.push("bottom"):u==="left"&&t<n?i.push("right"):u==="bottom"&&c>0?i.push("top"):u==="right"&&a>0?i.push("left"):i.push(u);return i.join(" ")},Ie=({top:e,left:t},o,n)=>{let r=t+o.w+n-window.innerWidth,s=e+o.h+n-window.innerHeight;return t=r>0?t-r:t,e=s>0?e-s:e,t=t<n?n:t,e=e<n?n:e,{top:e,left:t}},te=({c:e,m:t,offset:o,windowOffset:n,position:r})=>{let s={c:e,m:t,offset:o,position:r},i=ee(s),a=Ne(i,r,n,t);a!==r&&(i=ee({...s,position:a}));let c=Ie(i,t,n);return{left:`${c.left}px`,top:`${c.top}px`}};var oe=({position:e,windowOffset:t})=>{switch(e){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${t}px`,left:`${t}px`};case"top right":case"right top":return{top:`${t}px`,right:`${t}px`};case"bottom":case"bottom center":return{bottom:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${t}px`,left:`${t}px`};case"right bottom":case"bottom right":return{bottom:`${t}px`,right:`${t}px`};case"left":case"left center":return{top:"50%",left:`${t}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${t}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var ne=(o=>(o.PNG="image/png",o.PDF="application/pdf",o))(ne||{}),He=e=>{let[t,o]=(0,L.useState)([]);return(0,L.useEffect)(()=>{let n=[],r=!1;if(!Array.isArray(e)||e.length===0)o([]);else{let s=e.map(i=>new Promise((a,c)=>{let u=new FileReader;n.push(u),u.onload=d=>{d.target?.result&&a({name:i.name,size:i.size,formatSize:q(i.size),type:i.type,url:d.target.result})},u.onabort=()=>{c(new Error("File reading aborted"))},u.onerror=()=>{c(new Error("Failed to read file"))},u.readAsDataURL(i)}));Promise.all(s).then(i=>{r||o(i)})}return()=>{r=!0,n.forEach(s=>{s.abort()})}},[e]),t};var T=require("react"),Ae=()=>{let[e,t]=(0,T.useState)(null),[o,n]=(0,T.useState)(null),[r,s]=(0,T.useState)(!0),i=(0,T.useRef)(null);return(0,T.useEffect)(()=>{if(!navigator.geolocation){n({code:0,message:"Geolocation is not supported by your browser."}),s(!1);return}let a=u=>{t({...u.coords,timestamp:u.timestamp}),s(!1)},c=u=>{n({code:u.code,message:u.message}),s(!1)};return navigator.geolocation.getCurrentPosition(a,c),i.current=navigator.geolocation.watchPosition(a,c),()=>{i.current!==null&&navigator.geolocation.clearWatch(i.current)}},[]),{data:e,error:o,isLoading:r}};var f=require("react");var Ge=()=>{let[e,t]=(0,f.useState)(!1),o=(0,f.useRef)(null),n=(0,f.useCallback)(()=>t(!0),[]),r=(0,f.useCallback)(()=>t(!1),[]);return l("mouseenter",n,o),l("mouseleave",r,o),e};var S=require("react");var re=require("react"),j=(e,t,o={})=>{(0,re.useEffect)(()=>{let n=Array.isArray(e)?e:[e],r=new IntersectionObserver(t,o);return n.forEach(s=>s.current&&r.observe(s.current)),()=>{r.disconnect()}},[t,o,e])};var we=(e={})=>{let[t,o]=(0,S.useState)(!1),n=(0,S.useRef)(null);return j(n,([r])=>{o(r.isIntersecting)},e),{ref:n,inView:t}};var M=require("react"),De=({onBlur:e,onFocus:t,onChange:o}={})=>{let[n,r]=(0,M.useState)(!1),s=(0,M.useCallback)(c=>{r(!0),t&&t(c)},[t]),i=(0,M.useCallback)(c=>{r(!1),e&&e(c)},[e]),a=(0,M.useCallback)(c=>{o&&o(c)},[o]);return{isFocus:n,handlers:{onFocus:s,onBlur:i,onChange:a}}};var k=require("react"),Be=e=>{let[t,o]=(0,k.useState)(!1);return(0,k.useEffect)(()=>{let n=window.matchMedia(e);n.matches!==t&&o(n.matches);let r=()=>{o(n.matches)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},[t,e]),t};var N=require("react"),je=()=>{let e=(0,N.useRef)(null),[t,o]=(0,N.useState)(!1);return{containerRef:e,isOpen:t,openModal:()=>{o(!0)},closeModal:()=>{o(!1)}}};var E=require("react");var m=ve(require("react"),1),se=(r=>(r.OPENING="OPENING",r.OPEN="OPEN",r.CLOSING="CLOSING",r.CLOSED="CLOSED",r))(se||{}),F=(e=0,t=()=>null)=>{let[o,n]=m.default.useState("CLOSED"),r=(0,m.useMemo)(()=>o!=="CLOSED",[o]);(0,m.useEffect)(()=>{document.documentElement.style.overflow=r?"hidden":"auto"},[r]);let s=(0,m.useCallback)(()=>{["OPENING","OPEN"].includes(o)&&(e>0?(n("CLOSING"),setTimeout(()=>{n("CLOSED"),t()},e)):n("CLOSED"))},[t,o,e]),i=(0,m.useCallback)(()=>{["CLOSING","CLOSED"].includes(o)&&(e>0?(n("OPENING"),setTimeout(()=>{n("OPEN")},e)):n("OPEN"))},[o,e]);return{isVisible:r,closeModal:s,openModal:i,modalState:o}};var ie=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),Fe=({closeOnClickOutside:e=!0,offset:t=0,windowOffset:o=0,position:n="bottom",transitionDuration:r=0,modalRef:s,containerRef:i,onClose:a})=>{let c=(0,E.useRef)(null),u=F(r,a),{isVisible:d,closeModal:ue}=u;B(s,()=>{d&&e&&ue()});let _=(0,E.useCallback)(($,le)=>{let U=$.current?.getClientRects()[0],z=le.current?.getClientRects()[0];if(!U)return;let V=z?te({c:ie(z),m:ie(U),offset:t,windowOffset:o,position:n}):oe({position:n,windowOffset:o});Object.keys(V).forEach(Y=>{$.current?.style.setProperty(Y,V[Y])})},[n,o,t]),v=(0,E.useCallback)(()=>{d&&_(s,i??c)},[_,d,i,s]);return(0,E.useLayoutEffect)(v,[v]),O(i??c,v),O(s,v),l("resize",v),l("scroll",v,s),u};var I=require("react");var ae=(e,t)=>{let{left:o,top:n}=e,r=o+window.scrollX,s=n+window.scrollY,i=t.pageX-r,a=t.pageY-s;return{x:t.pageX,y:t.pageY,elementX:i,elementY:a,elementPositionX:r,elementPositionY:s}},_e=e=>{let t=(0,I.useRef)(null),[o,n]=(0,I.useState)({x:null,y:null,elementX:null,elementY:null,elementPositionX:null,elementPositionY:null});return l("mousemove",s=>{let{clientX:i,clientY:a}=s;if(n(c=>({...c,x:i,y:a})),e?.current instanceof Element){let c=ae(e.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}else if(t.current instanceof Element){let c=ae(t.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}}),{...o,ref:t}};var ce=require("react");var $e=()=>{let[e,t]=(0,ce.useState)(navigator.onLine);return l("online",()=>t(navigator.onLine)),l("offline",()=>t(navigator.onLine)),e};var H=require("react"),Ue=()=>{let e=(0,H.useRef)(1);return(0,H.useEffect)(()=>{e.current++}),e.current};var y=require("react"),ze=()=>{let e=(0,y.useRef)(null),[t,o]=(0,y.useState)([0,0]);return(0,y.useEffect)(()=>{let n=e.current,r=()=>{n&&o([n.scrollLeft,n.scrollTop])};return n&&n.addEventListener("scroll",r),()=>{n&&n.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};var g=require("react");function Ve(e){let[t,o]=(0,g.useState)(e),[n,r]=(0,g.useState)([]);return(0,g.useEffect)(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,o,n]}var A=require("react"),Ye=(e=!1)=>{let[t,o]=(0,A.useState)(e),n=(0,A.useCallback)(()=>{o(r=>!r)},[]);return[t,n,o]};var G=require("react"),Xe=(e,t=0)=>{let[o,n]=(0,G.useState)(t),r=(0,G.useCallback)(s=>{n(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[o],r]};var w=require("react");var We=()=>{let e=()=>{let{innerWidth:n,innerHeight:r}=window;return{width:n,height:r,orientation:n>r?"landscape":"portrait"}},[t,o]=(0,w.useState)(e);return l("resize",()=>{o(e())}),(0,w.useEffect)(()=>{o(e())},[]),t};0&&(module.exports={FileTypeEnum,ModalState,useAsync,useClassNames,useClickOutside,useConstant,useCookie,useDebounce,useDimensions,useDomContainer,useEventListener,useFileReader,useGeolocation,useHover,useInView,useInputHandlers,useIntersectionObserver,useMediaQuery,useModal,useModalInContainer,useModalTransition,useMousePosition,useOnlineStatus,useRenderCount,useResizeObserver,useSafeDispatch,useScroll,useStateHistory,useToggle,useToggleValues,useViewport});
|
|
2
|
+
"use strict";var me=Object.create;var h=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,fe=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var o in t)h(e,o,{get:t[o],enumerable:!0})},X=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of pe(t))!fe.call(e,r)&&r!==o&&h(e,r,{get:()=>t[r],enumerable:!(n=de(t,r))||n.enumerable});return e};var ve=(e,t,o)=>(o=e!=null?me(Te(e)):{},X(t||!e||!e.__esModule?h(o,"default",{value:e,enumerable:!0}):o,e)),be=e=>X(h({},"__esModule",{value:!0}),e);var Qe={};Ee(Qe,{FileTypeEnum:()=>ne,ModalState:()=>se,useAsync:()=>Oe,useClassNames:()=>Me,useClickOutside:()=>B,useConstant:()=>Re,useCookie:()=>Ce,useDebounce:()=>Le,useDimensions:()=>Se,useDomContainer:()=>ke,useEventListener:()=>l,useFileReader:()=>He,useGeolocation:()=>Ae,useHover:()=>Ge,useInView:()=>we,useInputHandlers:()=>De,useIntersectionObserver:()=>j,useMediaQuery:()=>Be,useModal:()=>je,useModalInContainer:()=>Fe,useModalTransition:()=>F,useMousePosition:()=>_e,useOnlineStatus:()=>$e,useRenderCount:()=>Ue,useResizeObserver:()=>O,useSafeDispatch:()=>D,useScroll:()=>ze,useStateHistory:()=>Ve,useToggle:()=>Ye,useToggleValues:()=>Xe,useViewport:()=>We});module.exports=be(Qe);var p=require("react");var b=require("react"),D=e=>{let t=(0,b.useRef)(!1);return(0,b.useLayoutEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,b.useCallback)((...o)=>{t.current&&e(...o)},[e])};var xe=(e,t)=>{switch(t.type){case"pending":return{status:"pending",data:null,error:null};case"resolved":return{status:"resolved",data:t.data,error:null};case"rejected":return{status:"rejected",data:null,error:t.error};default:throw new Error(`Unhandled action: ${JSON.stringify(t)}`)}},Oe=e=>{let[t,o]=(0,p.useReducer)(xe,{status:"idle",data:null,error:null,...e}),n=D(o),r=(0,p.useCallback)(a=>{n({type:"pending"}),a.then(c=>{n({type:"resolved",data:c})},c=>{n({type:"rejected",error:c})})},[n]),s=(0,p.useCallback)(a=>n({type:"resolved",data:a}),[n]),i=(0,p.useCallback)(a=>n({type:"rejected",error:a}),[n]);return(0,p.useMemo)(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};var W=require("react"),Me=e=>(0,W.useMemo)(()=>Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[]).join(" "),[e]);var x=require("react");function l(e,t,o,n){let r=(0,x.useRef)(t);(0,x.useEffect)(()=>{r.current=t},[t]),(0,x.useLayoutEffect)(()=>{let s=o?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,n),()=>{s.removeEventListener(e,i,n)}},[e,o,n])}var ye=(e,t)=>e.current&&!e.current.contains(t),B=(e,t)=>{l("keydown",o=>{o.key==="Escape"&&t()}),l("mousedown",o=>{let n=o.target;if(!n?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>ye(s,n))&&t()})};var Q=require("react"),Re=e=>(0,Q.useState)(e)[0];var R=require("react"),ge=e=>{let t=[];if(e.expires instanceof Date)t.push(`expires=${e.expires.toUTCString()}`);else if(typeof e.days=="number"){let o=new Date;o.setTime(o.getTime()+e.days*24*60*60*1e3),t.push(`expires=${o.toUTCString()}`)}return typeof e.maxAge=="number"&&t.push(`max-age=${e.maxAge}`),t.push(`path=${e.path??"/"}`),e.domain&&t.push(`domain=${e.domain}`),e.secure&&t.push("secure"),e.sameSite&&t.push(`SameSite=${e.sameSite}`),t.length>0?`; ${t.join("; ")}`:""},J=(e,t,o={})=>{if(typeof document>"u")return;let n=encodeURIComponent(t),r=ge(o);document.cookie=`${e}=${n}${r}`},he=e=>{if(typeof document>"u")return null;let t=`${e}=`,o=document.cookie?document.cookie.split(";"):[];for(let n of o){let r=n.trim();if(r.indexOf(t)===0)return decodeURIComponent(r.substring(t.length))}return null},Pe=(e,t={})=>{typeof document>"u"||J(e,"",{...t,days:-1})},Ce=(e,t,o={})=>{let[n,r]=(0,R.useState)(()=>{let a=he(e);if(a!==null)try{return JSON.parse(a)}catch{return t}return t}),s=(0,R.useCallback)((a,c={})=>{let u={...o,...c},d=JSON.stringify(a);J(e,d,u),r(a)},[e,o]),i=(0,R.useCallback)(()=>{Pe(e,o),r(t)},[e,t,o]);return[n,s,i]};var P=require("react"),Le=(e,t=500)=>{let[o,n]=(0,P.useState)(e);return(0,P.useEffect)(()=>{let r=setTimeout(()=>n(e),t);return()=>{clearTimeout(r)}},[e,t]),o};var Z=require("react");var K=require("react"),O=(e,t)=>{(0,K.useEffect)(()=>{let o=Array.isArray(e)?e:[e],n=new ResizeObserver(t);return o.forEach(r=>r.current&&n.observe(r.current)),()=>{n.disconnect()}},[e,t])};var Se=e=>{let[t,o]=(0,Z.useState)({width:0,height:0});return O(e,([n])=>{if((n?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=n.borderBoxSize[0];o({width:r,height:s})}else if(n.contentRect){let{width:r,height:s}=n.contentRect;o({width:r,height:s})}}),t};var C=require("react"),ke=e=>((0,C.useEffect)(()=>{let t=document.getElementById(e);if(t!==null)return()=>{t&&document.body.removeChild(t)}},[e]),(0,C.useMemo)(()=>{let t=document.getElementById(e);return t===null&&(t=document.createElement("div"),t.setAttribute("id",e),document.body.appendChild(t)),t},[e]));var L=require("react");var q=(e,t=2)=>{if(e===0)return"0 Bytes";let o=1e3,n=t<0?0:t,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],s=Math.floor(Math.log(e)/Math.log(o));return parseFloat((e/Math.pow(o,s)).toFixed(n))+" "+r[s]};var ee=({c:e,m:t,offset:o,position:n})=>{let r=e.y+e.h+o,s=e.x-(t.w-e.w)*(50/100);switch(n){case"top":case"top center":r=e.y-t.h-o,s=e.x-(t.w-e.w)/2;break;case"top left":r=e.y-t.h-o,s=e.x-t.w+e.w;break;case"top right":r=e.y-t.h-o,s=e.x;break;case"bottom":case"bottom center":r=e.y+e.h+o,s=e.x-(t.w-e.w)/2;break;case"bottom left":r=e.y+e.h+o,s=e.x-t.w+e.w;break;case"bottom right":r=e.y+e.h+o,s=e.x;break;case"left":case"left center":r=e.y-(t.h-e.h)/2,s=e.x-t.w-o;break;case"left top":r=e.y-t.h+e.h,s=e.x-t.w-o;break;case"left bottom":r=e.y,s=e.x-t.w-o;break;case"right":case"right center":r=e.y-(t.h-e.h)/2,s=e.x+e.w+o;break;case"right top":r=e.y-t.h+e.h,s=e.x+e.w+o;break;case"right bottom":r=e.y,s=e.x+e.w+o;break}return{left:Math.round(s),top:Math.round(r)}},Ne=({top:e,left:t},o,n,r)=>{let s=o.split(" "),i=[],a=t+r.w+n-window.innerWidth,c=e+r.h+n-window.innerHeight;for(let u of s)u==="top"&&e<n?i.push("bottom"):u==="left"&&t<n?i.push("right"):u==="bottom"&&c>0?i.push("top"):u==="right"&&a>0?i.push("left"):i.push(u);return i.join(" ")},Ie=({top:e,left:t},o,n)=>{let r=t+o.w+n-window.innerWidth,s=e+o.h+n-window.innerHeight;return t=r>0?t-r:t,e=s>0?e-s:e,t=t<n?n:t,e=e<n?n:e,{top:e,left:t}},te=({c:e,m:t,offset:o,windowOffset:n,position:r})=>{let s={c:e,m:t,offset:o,position:r},i=ee(s),a=Ne(i,r,n,t);a!==r&&(i=ee({...s,position:a}));let c=Ie(i,t,n);return{left:`${c.left}px`,top:`${c.top}px`}};var oe=({position:e,windowOffset:t})=>{switch(e){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${t}px`,left:`${t}px`};case"top right":case"right top":return{top:`${t}px`,right:`${t}px`};case"bottom":case"bottom center":return{bottom:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${t}px`,left:`${t}px`};case"right bottom":case"bottom right":return{bottom:`${t}px`,right:`${t}px`};case"left":case"left center":return{top:"50%",left:`${t}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${t}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var ne=(o=>(o.PNG="image/png",o.PDF="application/pdf",o))(ne||{}),He=e=>{let[t,o]=(0,L.useState)([]);return(0,L.useEffect)(()=>{let n=[],r=!1;if(!Array.isArray(e)||e.length===0)o([]);else{let s=e.map(i=>new Promise((a,c)=>{let u=new FileReader;n.push(u),u.onload=d=>{d.target?.result&&a({name:i.name,size:i.size,formatSize:q(i.size),type:i.type,url:d.target.result})},u.onabort=()=>{c(new Error("File reading aborted"))},u.onerror=()=>{c(new Error("Failed to read file"))},u.readAsDataURL(i)}));Promise.all(s).then(i=>{r||o(i)})}return()=>{r=!0,n.forEach(s=>{s.abort()})}},[e]),t};var T=require("react"),Ae=()=>{let[e,t]=(0,T.useState)(null),[o,n]=(0,T.useState)(null),[r,s]=(0,T.useState)(!0),i=(0,T.useRef)(null);return(0,T.useEffect)(()=>{if(!navigator.geolocation){n({code:0,message:"Geolocation is not supported by your browser."}),s(!1);return}let a=u=>{t({...u.coords,timestamp:u.timestamp}),s(!1)},c=u=>{n({code:u.code,message:u.message}),s(!1)};return navigator.geolocation.getCurrentPosition(a,c),i.current=navigator.geolocation.watchPosition(a,c),()=>{i.current!==null&&navigator.geolocation.clearWatch(i.current)}},[]),{data:e,error:o,isLoading:r}};var f=require("react");var Ge=()=>{let[e,t]=(0,f.useState)(!1),o=(0,f.useRef)(null),n=(0,f.useCallback)(()=>t(!0),[]),r=(0,f.useCallback)(()=>t(!1),[]);return l("mouseenter",n,o),l("mouseleave",r,o),e};var S=require("react");var re=require("react"),j=(e,t,o={})=>{(0,re.useEffect)(()=>{let n=Array.isArray(e)?e:[e],r=new IntersectionObserver(t,o);return n.forEach(s=>s.current&&r.observe(s.current)),()=>{r.disconnect()}},[t,o,e])};var we=(e={})=>{let[t,o]=(0,S.useState)(!1),n=(0,S.useRef)(null);return j(n,([r])=>{o(r.isIntersecting)},e),{ref:n,inView:t}};var M=require("react"),De=({onBlur:e,onFocus:t,onChange:o}={})=>{let[n,r]=(0,M.useState)(!1),s=(0,M.useCallback)(c=>{r(!0),t&&t(c)},[t]),i=(0,M.useCallback)(c=>{r(!1),e&&e(c)},[e]),a=(0,M.useCallback)(c=>{o&&o(c)},[o]);return{isFocus:n,handlers:{onFocus:s,onBlur:i,onChange:a}}};var k=require("react"),Be=e=>{let[t,o]=(0,k.useState)(!1);return(0,k.useEffect)(()=>{let n=window.matchMedia(e);n.matches!==t&&o(n.matches);let r=()=>{o(n.matches)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},[t,e]),t};var N=require("react"),je=()=>{let e=(0,N.useRef)(null),[t,o]=(0,N.useState)(!1);return{containerRef:e,isOpen:t,openModal:()=>{o(!0)},closeModal:()=>{o(!1)}}};var E=require("react");var m=ve(require("react"),1),se=(r=>(r.OPENING="OPENING",r.OPEN="OPEN",r.CLOSING="CLOSING",r.CLOSED="CLOSED",r))(se||{}),F=(e=0,t=()=>null)=>{let[o,n]=m.default.useState("CLOSED"),r=(0,m.useMemo)(()=>o!=="CLOSED",[o]);(0,m.useEffect)(()=>{document.documentElement.style.overflow=r?"hidden":"auto"},[r]);let s=(0,m.useCallback)(()=>{["OPENING","OPEN"].includes(o)&&(e>0?(n("CLOSING"),setTimeout(()=>{n("CLOSED"),t()},e)):n("CLOSED"))},[t,o,e]),i=(0,m.useCallback)(()=>{["CLOSING","CLOSED"].includes(o)&&(e>0?(n("OPENING"),setTimeout(()=>{n("OPEN")},e)):n("OPEN"))},[o,e]);return{isVisible:r,closeModal:s,openModal:i,modalState:o}};var ie=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),Fe=({closeOnClickOutside:e=!0,offset:t=0,windowOffset:o=0,position:n="bottom",transitionDuration:r=0,modalRef:s,containerRef:i,onClose:a})=>{let c=(0,E.useRef)(null),u=F(r,a),{isVisible:d,closeModal:ue}=u;B(s,()=>{d&&e&&ue()});let _=(0,E.useCallback)(($,le)=>{let U=$.current?.getClientRects()[0],z=le.current?.getClientRects()[0];if(!U)return;let V=z?te({c:ie(z),m:ie(U),offset:t,windowOffset:o,position:n}):oe({position:n,windowOffset:o});Object.keys(V).forEach(Y=>{$.current?.style.setProperty(Y,V[Y])})},[n,o,t]),v=(0,E.useCallback)(()=>{d&&_(s,i??c)},[_,d,i,s]);return(0,E.useLayoutEffect)(v,[v]),O(i??c,v),O(s,v),l("resize",v),l("scroll",v,s),u};var I=require("react");var ae=(e,t)=>{let{left:o,top:n}=e,r=o+window.scrollX,s=n+window.scrollY,i=t.pageX-r,a=t.pageY-s;return{x:t.pageX,y:t.pageY,elementX:i,elementY:a,elementPositionX:r,elementPositionY:s}},_e=e=>{let t=(0,I.useRef)(null),[o,n]=(0,I.useState)({x:null,y:null,elementX:null,elementY:null,elementPositionX:null,elementPositionY:null});return l("mousemove",s=>{let{clientX:i,clientY:a}=s;if(n(c=>({...c,x:i,y:a})),e?.current instanceof Element){let c=ae(e.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}else if(t.current instanceof Element){let c=ae(t.current.getBoundingClientRect(),s);n(u=>({...u,...c}))}}),{...o,ref:t}};var ce=require("react");var $e=()=>{let[e,t]=(0,ce.useState)(navigator.onLine);return l("online",()=>t(navigator.onLine)),l("offline",()=>t(navigator.onLine)),e};var H=require("react"),Ue=()=>{let e=(0,H.useRef)(1);return(0,H.useEffect)(()=>{e.current++}),e.current};var y=require("react"),ze=()=>{let e=(0,y.useRef)(null),[t,o]=(0,y.useState)([0,0]);return(0,y.useEffect)(()=>{let n=e.current,r=()=>{n&&o([n.scrollLeft,n.scrollTop])};return n&&n.addEventListener("scroll",r),()=>{n&&n.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};var g=require("react");function Ve(e){let[t,o]=(0,g.useState)(e),[n,r]=(0,g.useState)([]);return(0,g.useEffect)(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,o,n]}var A=require("react"),Ye=(e=!1)=>{let[t,o]=(0,A.useState)(e),n=(0,A.useCallback)(()=>{o(r=>!r)},[]);return[t,n,o]};var G=require("react"),Xe=(e,t=0)=>{let[o,n]=(0,G.useState)(t),r=(0,G.useCallback)(s=>{n(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[o],r]};var w=require("react");var We=()=>{let e=()=>{let{innerWidth:n,innerHeight:r}=window;return{width:n,height:r,orientation:n>r?"landscape":"portrait"}},[t,o]=(0,w.useState)(e);return l("resize",()=>{o(e())}),(0,w.useEffect)(()=>{o(e())},[]),t};0&&(module.exports={FileTypeEnum,ModalState,useAsync,useClassNames,useClickOutside,useConstant,useCookie,useDebounce,useDimensions,useDomContainer,useEventListener,useFileReader,useGeolocation,useHover,useInView,useInputHandlers,useIntersectionObserver,useMediaQuery,useModal,useModalInContainer,useModalTransition,useMousePosition,useOnlineStatus,useRenderCount,useResizeObserver,useSafeDispatch,useScroll,useStateHistory,useToggle,useToggleValues,useViewport});
|
|
3
3
|
//# sourceMappingURL=hooks.cjs.map
|