polpo 0.1.1 → 0.1.2

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.
Files changed (121) hide show
  1. package/.storybook/theme.ts +2 -2
  2. package/.turbo/turbo-lint.log +1 -1
  3. package/README.md +2 -5
  4. package/dist/chunk-CFYQBHH5.js +3 -0
  5. package/dist/chunk-CFYQBHH5.js.map +1 -0
  6. package/dist/chunk-MAWW6AA7.js +3 -0
  7. package/dist/chunk-MAWW6AA7.js.map +1 -0
  8. package/dist/get-modal-position-drle0OjP.d.cts +49 -0
  9. package/dist/get-modal-position-drle0OjP.d.ts +49 -0
  10. package/dist/helpers.cjs +1 -1
  11. package/dist/helpers.cjs.map +1 -1
  12. package/dist/helpers.d.cts +9 -2
  13. package/dist/helpers.d.ts +9 -2
  14. package/dist/helpers.js +1 -1
  15. package/dist/hooks.cjs +1 -1
  16. package/dist/hooks.cjs.map +1 -1
  17. package/dist/hooks.d.cts +59 -21
  18. package/dist/hooks.d.ts +59 -21
  19. package/dist/hooks.js +1 -1
  20. package/dist/ui.cjs +601 -389
  21. package/dist/ui.cjs.map +1 -1
  22. package/dist/ui.d.cts +97 -77
  23. package/dist/ui.d.ts +97 -77
  24. package/dist/ui.js +585 -373
  25. package/dist/ui.js.map +1 -1
  26. package/dist/use-modal-in-container-DiNW1PE_.d.cts +34 -0
  27. package/dist/use-modal-in-container-neGo-kMk.d.ts +34 -0
  28. package/package.json +2 -2
  29. package/src/components/buttons/button/button.stories.tsx +4 -4
  30. package/src/components/buttons/button/button.style.ts +10 -5
  31. package/src/components/buttons/button/button.tsx +7 -19
  32. package/src/components/cards/flip-card/flip-card.tsx +1 -1
  33. package/src/components/cursor/cursor.stories.tsx +35 -0
  34. package/src/components/cursor/cursor.style.ts +73 -0
  35. package/src/components/cursor/cursor.tsx +49 -0
  36. package/src/components/cursor/index.ts +1 -0
  37. package/src/components/form/checkbox/checkbox.stories.tsx +51 -0
  38. package/src/components/form/checkbox/checkbox.style.ts +73 -37
  39. package/src/components/form/checkbox/checkbox.tsx +38 -4
  40. package/src/components/form/field/field.stories.tsx +5 -1
  41. package/src/components/form/field/field.style.ts +12 -0
  42. package/src/components/form/field/field.tsx +3 -1
  43. package/src/components/form/field/field.types.ts +6 -0
  44. package/src/components/form/input-color/input-color.style.ts +5 -4
  45. package/src/components/form/input-color/input-color.tsx +41 -44
  46. package/src/components/form/radio/radio.stories.tsx +29 -5
  47. package/src/components/form/radio/radio.style.ts +45 -24
  48. package/src/components/form/radio/radio.tsx +22 -3
  49. package/src/components/form/select/options.tsx +119 -67
  50. package/src/components/form/select/select.stories.tsx +103 -42
  51. package/src/components/form/select/select.style.ts +10 -92
  52. package/src/components/form/select/select.tsx +19 -42
  53. package/src/components/form/select/select.types.ts +4 -21
  54. package/src/components/form/slider/slider.style.ts +2 -0
  55. package/src/components/icon/icons/social.tsx +17 -1
  56. package/src/components/index.ts +1 -0
  57. package/src/components/infinity-scroll/infinity-scroll.tsx +1 -1
  58. package/src/components/line/line.stories.tsx +3 -4
  59. package/src/components/modals/action-modal/action-modal.stories.tsx +58 -39
  60. package/src/components/modals/action-modal/action-modal.style.ts +13 -25
  61. package/src/components/modals/action-modal/action-modal.tsx +68 -70
  62. package/src/components/modals/aside-modal/aside-modal.stories.tsx +11 -15
  63. package/src/components/modals/aside-modal/aside-modal.style.ts +17 -37
  64. package/src/components/modals/aside-modal/aside-modal.tsx +41 -43
  65. package/src/components/modals/confirmation-modal/confirmation-modal.stories.tsx +21 -9
  66. package/src/components/modals/index.ts +2 -0
  67. package/src/components/modals/menu/index.ts +1 -0
  68. package/src/components/modals/menu/menu.stories.tsx +69 -0
  69. package/src/components/modals/menu/menu.style.ts +62 -0
  70. package/src/components/modals/menu/menu.tsx +142 -0
  71. package/src/components/modals/modal/backdrop.tsx +70 -0
  72. package/src/components/modals/modal/index.ts +1 -0
  73. package/src/components/modals/modal/modal.stories.tsx +325 -0
  74. package/src/components/modals/modal/modal.style.ts +62 -2
  75. package/src/components/modals/modal/modal.tsx +82 -123
  76. package/src/components/modals/portal/index.ts +1 -0
  77. package/src/components/modals/portal/portal.tsx +18 -0
  78. package/src/components/tabs/tabs-list.tsx +13 -10
  79. package/src/components/tabs/tabs.style.ts +48 -43
  80. package/src/components/tag/tag.stories.tsx +11 -12
  81. package/src/components/tag/tag.style.ts +9 -4
  82. package/src/components/tag/tag.tsx +2 -12
  83. package/src/components/tooltips/tooltip/tooltip.stories.tsx +5 -2
  84. package/src/components/tooltips/tooltip/tooltip.style.ts +37 -6
  85. package/src/components/tooltips/tooltip/tooltip.tsx +33 -19
  86. package/src/components/typography/typography.stories.tsx +3 -1
  87. package/src/components/typography/typography.tsx +21 -0
  88. package/src/contexts/theme-context/theme.animations.ts +91 -2
  89. package/src/contexts/theme-context/theme.defaults.ts +1 -1
  90. package/src/core/http-client.ts +49 -47
  91. package/src/core/variants/color.ts +3 -30
  92. package/src/core/variants/radius.ts +12 -41
  93. package/src/core/variants/size.ts +8 -33
  94. package/src/helpers/get-modal-position-relative-to-screen.ts +86 -0
  95. package/src/helpers/get-modal-position.ts +173 -28
  96. package/src/helpers/index.ts +1 -0
  97. package/src/hooks/index.ts +9 -3
  98. package/src/hooks/use-click-outside.ts +32 -0
  99. package/src/hooks/use-cookie.ts +124 -0
  100. package/src/hooks/use-dimensions.ts +11 -14
  101. package/src/hooks/use-dom-container.ts +32 -0
  102. package/src/hooks/use-event-listener.ts +4 -4
  103. package/src/hooks/use-geolocation.ts +63 -0
  104. package/src/hooks/use-in-view.ts +9 -11
  105. package/src/hooks/use-intersection-observer.ts +19 -0
  106. package/src/hooks/use-modal-in-container.ts +60 -52
  107. package/src/hooks/use-modal-transition.ts +54 -0
  108. package/src/hooks/use-modal.ts +21 -0
  109. package/src/hooks/use-mouse-position.ts +55 -7
  110. package/src/hooks/use-resize-observer.ts +18 -0
  111. package/src/stories/GettingStarted.mdx +2 -6
  112. package/svg/Name=npm, Category=social.svg +3 -0
  113. package/dist/chunk-M4KRSYE7.js +0 -3
  114. package/dist/chunk-M4KRSYE7.js.map +0 -1
  115. package/dist/chunk-U5XSMSKZ.js +0 -3
  116. package/dist/chunk-U5XSMSKZ.js.map +0 -1
  117. package/dist/get-modal-position-DPftPoU2.d.cts +0 -28
  118. package/dist/get-modal-position-DPftPoU2.d.ts +0 -28
  119. package/src/components/form/select/select-option.tsx +0 -84
  120. package/src/hooks/use-observer.ts +0 -18
  121. package/src/hooks/use-on-click-outside-ref.ts +0 -17
@@ -3,9 +3,9 @@ import { create } from '@storybook/theming';
3
3
  export default create({
4
4
  base: 'dark',
5
5
  brandTitle: 'Juanmsl',
6
- brandUrl: 'https://juanmsl.com',
6
+ brandUrl: 'https://www.npmjs.com/package/polpo',
7
7
  brandImage:
8
- 'https://images.ctfassets.net/oums43ieu6nl/2ylSC9qo4LKhdbuA5w0UEv/629d5bff94b007225fe27dc472963a2e/Storybook_logo.png',
8
+ 'https://images.ctfassets.net/oums43ieu6nl/2ylSC9qo4LKhdbuA5w0UEv/092b9842073058c8b66760aa84c3bbfd/polpo.png',
9
9
  brandTarget: '_blank',
10
10
 
11
11
  // Typography
@@ -1,4 +1,4 @@
1
1
 
2
2
  yarn run v1.22.22
3
3
  $ eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0
4
- ✨ Done in 5.09s.
4
+ ✨ Done in 7.43s.
package/README.md CHANGED
@@ -1,12 +1,9 @@
1
1
 
2
2
  # Polpo
3
3
 
4
- [![npm version](https://badge.fury.io/js/polpo.svg)](https://www.npmjs.com/package/polpo)
5
-
6
- ## Description
7
-
8
- `polpo` is a lightweight and customizable UI component library designed for React applications. This library provides a set of reusable components to speed up development and maintain a consistent user interface across your projects.
4
+ A lightweight and customizable UI component library designed for React applications. This library provides a set of reusable components to speed up development and maintain a consistent user interface across your projects.
9
5
 
6
+ [![npm version](https://badge.fury.io/js/polpo.svg)](https://www.npmjs.com/package/polpo)
10
7
 
11
8
  ## Components
12
9
 
@@ -0,0 +1,3 @@
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 U,useLayoutEffect as z,useRef as V}from"react";var C=e=>{let t=V(!1);return z(()=>(t.current=!0,()=>{t.current=!1}),[]),U((...n)=>{t.current&&e(...n)},[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,n]=X(Y,{status:"idle",data:null,error:null,...e}),o=C(n),r=p(a=>{o({type:"pending"}),a.then(c=>{o({type:"resolved",data:c})},c=>{o({type:"rejected",error:c})})},[o]),s=p(a=>o({type:"resolved",data:a}),[o]),i=p(a=>o({type:"rejected",error:a}),[o]);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,[n,o])=>o?[...t,n]:t,[]).join(" "),[e]);import{useEffect as W,useLayoutEffect as B,useRef as J}from"react";function l(e,t,n,o){let r=J(t);W(()=>{r.current=t},[t]),B(()=>{let s=n?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,o),()=>{s.removeEventListener(e,i,o)}},[e,n,o])}var _=(e,t)=>e.current&&!e.current.contains(t),h=(e,t)=>{l("keydown",n=>{n.key==="Escape"&&t()}),l("mousedown",n=>{let o=n.target;if(!o?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>_(s,o))&&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 n=new Date;n.setTime(n.getTime()+e.days*24*60*60*1e3),t.push(`expires=${n.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,n={})=>{if(typeof document>"u")return;let o=encodeURIComponent(t),r=Z(n);document.cookie=`${e}=${o}${r}`},ee=e=>{if(typeof document>"u")return null;let t=`${e}=`,n=document.cookie?document.cookie.split(";"):[];for(let o of n){let r=o.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,n={})=>{let[o,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={...n,...c},m=JSON.stringify(a);A(e,m,u),r(a)},[e,n]),i=L(()=>{te(e,n),r(t)},[e,t,n]);return[o,s,i]};import{useEffect as ne,useState as oe}from"react";var ft=(e,t=500)=>{let[n,o]=oe(e);return ne(()=>{let r=setTimeout(()=>o(e),t);return()=>{clearTimeout(r)}},[e,t]),n};import{useState as se}from"react";import{useEffect as re}from"react";var f=(e,t)=>{re(()=>{let n=Array.isArray(e)?e:[e],o=new ResizeObserver(t);return n.forEach(r=>r.current&&o.observe(r.current)),()=>{o.disconnect()}},[e,t])};var gt=e=>{let[t,n]=se({width:0,height:0});return f(e,([o])=>{if((o?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=o.borderBoxSize[0];n({width:r,height:s})}else if(o.contentRect){let{width:r,height:s}=o.contentRect;n({width:r,height:s})}}),t};import{useEffect as ie,useMemo as ae}from"react";var Ot=(e,t)=>(ie(()=>()=>{let n=document.getElementById(e);n?.parentNode===document.body&&document.body.removeChild(n)},[e,t]),ae(()=>{let n=document.getElementById(e);return n||(n=document.createElement("div"),n.setAttribute("id",e),typeof t=="function"?t(n):t&&(t.current=n),document.body.appendChild(n)),n},[e,t]));import{useEffect as ce,useState as ue}from"react";var le=(n=>(n.PNG="image/png",n.PDF="application/pdf",n))(le||{}),Lt=e=>{let[t,n]=ue([]);return ce(()=>{let o=[],r=!1;if(!Array.isArray(e)||e.length===0)n([]);else{let s=e.map(i=>new Promise((a,c)=>{let u=new FileReader;o.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||n(i)})}return()=>{r=!0,o.forEach(s=>{s.abort()})}},[e]),t};import{useEffect as me,useRef as de,useState as E}from"react";var kt=()=>{let[e,t]=E(null),[n,o]=E(null),[r,s]=E(!0),i=de(null);return me(()=>{if(!navigator.geolocation){o({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=>{o({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:n,isLoading:r}};import{useCallback as P,useRef as fe,useState as pe}from"react";var It=()=>{let[e,t]=pe(!1),n=fe(null),o=P(()=>t(!0),[]),r=P(()=>t(!1),[]);return l("mouseenter",o,n),l("mouseleave",r,n),e};import{useRef as ve,useState as Te}from"react";import{useEffect as Ee}from"react";var k=(e,t,n={})=>{Ee(()=>{let o=Array.isArray(e)?e:[e],r=new IntersectionObserver(t,n);return o.forEach(s=>s.current&&r.observe(s.current)),()=>{r.disconnect()}},[t,n,e])};var Vt=(e={})=>{let[t,n]=Te(!1),o=ve(null);return k(o,([r])=>{n(r.isIntersecting)},e),{ref:o,inView:t}};import{useCallback as v,useState as ye}from"react";var Qt=({onBlur:e,onFocus:t,onChange:n}={})=>{let[o,r]=ye(!1),s=v(c=>{r(!0),t&&t(c)},[t]),i=v(c=>{r(!1),e&&e(c)},[e]),a=v(c=>{n&&n(c)},[n]);return{isFocus:o,handlers:{onFocus:s,onBlur:i,onChange:a}}};import{useEffect as be,useState as ge}from"react";var Jt=e=>{let[t,n]=ge(!1);return be(()=>{let o=window.matchMedia(e);o.matches!==t&&n(o.matches);let r=()=>{n(o.matches)};return o.addEventListener("change",r),()=>{o.removeEventListener("change",r)}},[t,e]),t};import{useRef as xe,useState as Me}from"react";var Kt=()=>{let e=xe(null),[t,n]=Me(!1);return{containerRef:e,isOpen:t,openModal:()=>{n(!0)},closeModal:()=>{n(!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[n,o]=Re.useState("CLOSED"),r=Se(()=>n!=="CLOSED",[n]);Oe(()=>{document.documentElement.style.overflow=r?"hidden":"auto"},[r]);let s=w(()=>{["OPENING","OPEN"].includes(n)&&(e>0?(o("CLOSING"),setTimeout(()=>{o("CLOSED"),t()},e)):o("CLOSED"))},[t,n,e]),i=w(()=>{["CLOSING","CLOSED"].includes(n)&&(e>0?(o("OPENING"),setTimeout(()=>{o("OPEN")},e)):o("OPEN"))},[n,e]);return{isVisible:r,closeModal:s,openModal:i,modalState:n}};var I=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),dn=({closeOnClickOutside:e=!0,offset:t=0,windowOffset:n=0,position:o="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,F)=>{let b=y.current?.getClientRects()[0],g=F.current?.getClientRects()[0];if(!b)return;let x=g?O({c:I(g),m:I(b),offset:t,windowOffset:n,position:o}):S({position:o,windowOffset:n});Object.keys(x).forEach(M=>{y.current?.style.setProperty(M,x[M])})},[o,n,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:n,top:o}=e,r=n+window.scrollX,s=o+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}},Tn=e=>{let t=Ae(null),[n,o]=Pe({x:null,y:null,elementX:null,elementY:null,elementPositionX:null,elementPositionY:null});return l("mousemove",s=>{let{clientX:i,clientY:a}=s;if(o(c=>({...c,x:i,y:a})),e?.current instanceof Element){let c=H(e.current.getBoundingClientRect(),s);o(u=>({...u,...c}))}else if(t.current instanceof Element){let c=H(t.current.getBoundingClientRect(),s);o(u=>({...u,...c}))}}),{...n,ref:t}};import{useState as ke}from"react";var xn=()=>{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 On=()=>{let e=Ne(1);return we(()=>{e.current++}),e.current};import{useEffect as De,useRef as Ie,useState as He}from"react";var hn=()=>{let e=Ie(null),[t,n]=He([0,0]);return De(()=>{let o=e.current,r=()=>{o&&n([o.scrollLeft,o.scrollTop])};return o&&o.addEventListener("scroll",r),()=>{o&&o.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};import{useEffect as je,useState as j}from"react";function wn(e){let[t,n]=j(e),[o,r]=j([]);return je(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,n,o]}import{useCallback as Ge,useState as Fe}from"react";var In=(e=!1)=>{let[t,n]=Fe(e),o=Ge(()=>{n(r=>!r)},[]);return[t,o,n]};import{useCallback as Ue,useState as ze}from"react";var Gn=(e,t=0)=>{let[n,o]=ze(t),r=Ue(s=>{o(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[n],r]};import{useEffect as Ve,useState as $e}from"react";var Vn=()=>{let e=()=>{let{innerWidth:o,innerHeight:r}=window;return{width:o,height:r,orientation:o>r?"landscape":"portrait"}},[t,n]=$e(e);return l("resize",()=>{n(e())}),Ve(()=>{n(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,gt as j,Ot as k,le as l,Lt as m,kt as n,It as o,k as p,Vt as q,Qt as r,Jt as s,Kt as t,Ce as u,N as v,dn as w,Tn as x,xn as y,On as z,hn as A,wn as B,In as C,Gn as D,Vn as E};
3
+ //# sourceMappingURL=chunk-CFYQBHH5.js.map
@@ -0,0 +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 { ForwardedRef, useEffect, useMemo } from 'react';\n\nexport const useDomContainer = (containerID: string, ref?: ForwardedRef<HTMLElement>) => {\n useEffect(() => {\n return () => {\n const domContainer = document.getElementById(containerID);\n\n if (domContainer?.parentNode === document.body) {\n document.body.removeChild(domContainer);\n }\n };\n }, [containerID, ref]);\n\n return useMemo(() => {\n let domContainer = document.getElementById(containerID);\n\n if (!domContainer) {\n domContainer = document.createElement('div');\n domContainer.setAttribute('id', containerID);\n\n if (typeof ref === 'function') {\n ref(domContainer);\n } else if (ref) {\n ref.current = domContainer;\n }\n\n document.body.appendChild(domContainer);\n }\n\n return domContainer;\n }, [containerID, ref]);\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","ref","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"]}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ var M=(t,o=2)=>{if(t===0)return"0 Bytes";let e=1e3,a=o<0?0:o,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/Math.pow(e,n)).toFixed(a))+" "+r[n]};import l from"moment/moment";var R=t=>Date.parse(t)?l(t,"YYYY-MM-DD").format("MMM YYYY"):t,b=(t,o)=>{let e=l(t);return Date.parse(o)?l(o).from(e,!0):e.fromNow()};var x=(i=>(i.CENTER="center",i.TOP="top",i.TOP_LEFT="top left",i.TOP_RIGHT="top right",i.TOP_CENTER="top center",i.LEFT="left",i.LEFT_TOP="left top",i.LEFT_BOTTOM="left bottom",i.LEFT_CENTER="left center",i.RIGHT="right",i.RIGHT_TOP="right top",i.RIGHT_BOTTOM="right bottom",i.RIGHT_CENTER="right center",i.BOTTOM="bottom",i.BOTTOM_LEFT="bottom left",i.BOTTOM_RIGHT="bottom right",i.BOTTOM_CENTER="bottom center",i))(x||{}),O=({c:t,m:o,offset:e,position:a})=>{let r=t.y+t.h+e,n=t.x-(o.w-t.w)*(50/100);switch(a){case"top":case"top center":r=t.y-o.h-e,n=t.x-(o.w-t.w)/2;break;case"top left":r=t.y-o.h-e,n=t.x-o.w+t.w;break;case"top right":r=t.y-o.h-e,n=t.x;break;case"bottom":case"bottom center":r=t.y+t.h+e,n=t.x-(o.w-t.w)/2;break;case"bottom left":r=t.y+t.h+e,n=t.x-o.w+t.w;break;case"bottom right":r=t.y+t.h+e,n=t.x;break;case"left":case"left center":r=t.y-(o.h-t.h)/2,n=t.x-o.w-e;break;case"left top":r=t.y-o.h+t.h,n=t.x-o.w-e;break;case"left bottom":r=t.y,n=t.x-o.w-e;break;case"right":case"right center":r=t.y-(o.h-t.h)/2,n=t.x+t.w+e;break;case"right top":r=t.y-o.h+t.h,n=t.x+t.w+e;break;case"right bottom":r=t.y,n=t.x+t.w+e;break}return{left:Math.round(n),top:Math.round(r)}},E=({top:t,left:o},e,a,r)=>{let n=e.split(" "),s=[],p=o+r.w+a-window.innerWidth,P=t+r.h+a-window.innerHeight;for(let T of n)T==="top"&&t<a?s.push("bottom"):T==="left"&&o<a?s.push("right"):T==="bottom"&&P>0?s.push("top"):T==="right"&&p>0?s.push("left"):s.push(T);return s.join(" ")},h=({top:t,left:o},e,a)=>{let r=o+e.w+a-window.innerWidth,n=t+e.h+a-window.innerHeight;return o=r>0?o-r:o,t=n>0?t-n:t,o=o<a?a:o,t=t<a?a:t,{top:t,left:o}},C=({c:t,m:o,offset:e,windowOffset:a,position:r})=>{let n={c:t,m:o,offset:e,position:r},s=O(n),p=E(s,r,a,o);p!==r&&(s=O({...n,position:p}));let P=h(s,o,a);return{left:`${P.left}px`,top:`${P.top}px`}};var B=({position:t,windowOffset:o})=>{switch(t){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${o}px`,left:`${o}px`};case"top right":case"right top":return{top:`${o}px`,right:`${o}px`};case"bottom":case"bottom center":return{bottom:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${o}px`,left:`${o}px`};case"right bottom":case"bottom right":return{bottom:`${o}px`,right:`${o}px`};case"left":case"left center":return{top:"50%",left:`${o}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${o}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var G=(t,o={})=>{let{separator:e=" ",variant:a="each-word",join:r=e}=o;return a==="first-word"?t[0].toUpperCase()+t.slice(1):t.split(e).map(s=>s[0].toUpperCase()+s.slice(1)).join(r)};export{M as a,R as b,b as c,x as d,O as e,E as f,h as g,C as h,B as i,G as j};
3
+ //# sourceMappingURL=chunk-MAWW6AA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/helpers/format-bytes.ts","../src/helpers/format-dates.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/helpers/text/to-capitalize.ts"],"sourcesContent":["export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","import moment from 'moment/moment';\n\nexport const formatDate = (date: string) => {\n return Date.parse(date) ? moment(date, 'YYYY-MM-DD').format('MMM YYYY') : date;\n};\n\nexport const timeBetween = (date_start: string, date_end: string) => {\n const momentStart = moment(date_start);\n\n return Date.parse(date_end) ? moment(date_end).from(momentStart, true) : momentStart.fromNow();\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","export type ToCapitalizeOptions = Partial<{\n separator: string;\n join: string;\n variant: 'first-word' | 'each-word';\n}>;\n\nexport const toCapitalize = (text: string, options: ToCapitalizeOptions = {}) => {\n const { separator = ' ', variant = 'each-word', join = separator } = options;\n\n if (variant === 'first-word') {\n return text[0].toUpperCase() + text.slice(1);\n }\n\n const words = text.split(separator);\n\n return words.map(word => word[0].toUpperCase() + word.slice(1)).join(join);\n};\n"],"mappings":";AAAO,IAAMA,EAAc,CAACC,EAAeC,EAAW,IAAM,CAC1D,GAAID,IAAU,EAAG,MAAO,UAExB,IAAME,EAAI,IACJC,EAAKF,EAAW,EAAI,EAAIA,EACxBG,EAAQ,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAEhEC,EAAI,KAAK,MAAM,KAAK,IAAIL,CAAK,EAAI,KAAK,IAAIE,CAAC,CAAC,EAElD,OAAO,YAAYF,EAAQ,KAAK,IAAIE,EAAGG,CAAC,GAAG,QAAQF,CAAE,CAAC,EAAI,IAAMC,EAAMC,CAAC,CACzE,ECVA,OAAOC,MAAY,gBAEZ,IAAMC,EAAcC,GAClB,KAAK,MAAMA,CAAI,EAAIF,EAAOE,EAAM,YAAY,EAAE,OAAO,UAAU,EAAIA,EAG/DC,EAAc,CAACC,EAAoBC,IAAqB,CACnE,IAAMC,EAAcN,EAAOI,CAAU,EAErC,OAAO,KAAK,MAAMC,CAAQ,EAAIL,EAAOK,CAAQ,EAAE,KAAKC,EAAa,EAAI,EAAIA,EAAY,QAAQ,CAC/F,ECVO,IAAKC,OACVA,EAAA,OAAS,SACTA,EAAA,IAAM,MACNA,EAAA,SAAW,WACXA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,KAAO,OACPA,EAAA,SAAW,WACXA,EAAA,YAAc,cACdA,EAAA,YAAc,cACdA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,aAAe,eACfA,EAAA,aAAe,eACfA,EAAA,OAAS,SACTA,EAAA,YAAc,cACdA,EAAA,aAAe,eACfA,EAAA,cAAgB,gBAjBNA,OAAA,IAoDCC,EAAmB,CAAC,CAAE,EAAAC,EAAG,EAAAC,EAAG,OAAAC,EAAQ,SAAAC,CAAS,IAA6C,CAErG,IAAIC,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAM,GAAK,KAErC,OAAQG,EAAU,CAChB,IAAK,MACL,IAAK,aACHC,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAE3B,MACF,IAAK,WACHI,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,EAAIC,EAAE,EAAID,EAAE,EAErB,MAEF,IAAK,YACHI,EAAMJ,EAAE,EAAIC,EAAE,EAAIC,EAClBG,EAAOL,EAAE,EAET,MAEF,IAAK,SACL,IAAK,gBACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAE3B,MAEF,IAAK,cACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,EAAIC,EAAE,EAAID,EAAE,EAErB,MAEF,IAAK,eACHI,EAAMJ,EAAE,EAAIA,EAAE,EAAIE,EAClBG,EAAOL,EAAE,EAET,MAEF,IAAK,OACL,IAAK,cACHI,EAAMJ,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAC1BK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,WACHE,EAAMJ,EAAE,EAAIC,EAAE,EAAID,EAAE,EACpBK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,cACHE,EAAMJ,EAAE,EACRK,EAAOL,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MAEF,IAAK,QACL,IAAK,eACHE,EAAMJ,EAAE,GAAKC,EAAE,EAAID,EAAE,GAAK,EAC1BK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,MAEF,IAAK,YACHE,EAAMJ,EAAE,EAAIC,EAAE,EAAID,EAAE,EACpBK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,MAEF,IAAK,eACHE,EAAMJ,EAAE,EACRK,EAAOL,EAAE,EAAIA,EAAE,EAAIE,EAEnB,KACJ,CAEA,MAAO,CACL,KAAM,KAAK,MAAMG,CAAI,EACrB,IAAK,KAAK,MAAMD,CAAG,CACrB,CACF,EAEaE,EAAsB,CACjC,CAAE,IAAAF,EAAK,KAAAC,CAAK,EACZF,EACAI,EACAN,IACG,CACH,IAAMO,EAAYL,EAAS,MAAM,GAAG,EAC9BM,EAAc,CAAC,EACfC,EAAcL,EAAOJ,EAAE,EAAIM,EAAe,OAAO,WACjDI,EAAeP,EAAMH,EAAE,EAAIM,EAAe,OAAO,YAEvD,QAAWK,KAAKJ,EACVI,IAAM,OAAyBR,EAAMG,EACvCE,EAAY,KAAK,QAAwB,EAChCG,IAAM,QAA0BP,EAAOE,EAChDE,EAAY,KAAK,OAAuB,EAC/BG,IAAM,UAA4BD,EAAe,EAC1DF,EAAY,KAAK,KAAqB,EAC7BG,IAAM,SAA2BF,EAAc,EACxDD,EAAY,KAAK,MAAsB,EAEvCA,EAAY,KAAKG,CAAC,EAItB,OAAOH,EAAY,KAAK,GAAG,CAC7B,EAEaI,EAAmB,CAAC,CAAE,IAAAT,EAAK,KAAAC,CAAK,EAAkBJ,EAAmBM,IAAyB,CACzG,IAAMG,EAAcL,EAAOJ,EAAE,EAAIM,EAAe,OAAO,WACjDI,EAAeP,EAAMH,EAAE,EAAIM,EAAe,OAAO,YAEvD,OAAAF,EAAOK,EAAc,EAAIL,EAAOK,EAAcL,EAC9CD,EAAMO,EAAe,EAAIP,EAAMO,EAAeP,EAE9CC,EAAOA,EAAOE,EAAeA,EAAeF,EAC5CD,EAAMA,EAAMG,EAAeA,EAAeH,EAEnC,CAAE,IAAAA,EAAK,KAAAC,CAAK,CACrB,EAMaS,EAAsC,CAAC,CAClD,EAAAd,EACA,EAAAC,EACA,OAAAC,EACA,aAAAK,EACA,SAAAJ,CACF,IAAyE,CACvE,IAAMY,EAAS,CAAE,EAAAf,EAAG,EAAAC,EAAG,OAAAC,EAAQ,SAAAC,CAAS,EACpCa,EAAsBjB,EAAiBgB,CAAM,EAE3CE,EAAmBX,EAAoBU,EAAqBb,EAAUI,EAAcN,CAAC,EAEvFgB,IAAqBd,IACvBa,EAAsBjB,EAAiB,CACrC,GAAGgB,EACH,SAAUE,CACZ,CAAC,GAGH,IAAMC,EAAgBL,EAAiBG,EAAqBf,EAAGM,CAAY,EAE3E,MAAO,CACL,KAAM,GAAGW,EAAc,IAAI,KAC3B,IAAK,GAAGA,EAAc,GAAG,IAC3B,CACF,EC3MO,IAAMC,EAAmC,CAAC,CAC/C,SAAAC,EACA,aAAAC,CACF,IAAsE,CACpE,OAAQD,EAAU,CAChB,aACE,MAAO,CACL,IAAK,MACL,KAAM,MACN,UAAW,uBACb,EAEF,UACA,iBACE,MAAO,CACL,IAAK,GAAGC,CAAY,KACpB,KAAM,MACN,UAAW,kBACb,EAEF,eACA,eACE,MAAO,CACL,IAAK,GAAGA,CAAY,KACpB,KAAM,GAAGA,CAAY,IACvB,EAEF,gBACA,gBACE,MAAO,CACL,IAAK,GAAGA,CAAY,KACpB,MAAO,GAAGA,CAAY,IACxB,EAEF,aACA,oBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,KAAM,MACN,UAAW,kBACb,EAEF,kBACA,kBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,KAAM,GAAGA,CAAY,IACvB,EAEF,mBACA,mBACE,MAAO,CACL,OAAQ,GAAGA,CAAY,KACvB,MAAO,GAAGA,CAAY,IACxB,EAEF,WACA,kBACE,MAAO,CACL,IAAK,MACL,KAAM,GAAGA,CAAY,KACrB,UAAW,kBACb,EAEF,YACA,mBACE,MAAO,CACL,IAAK,MACL,MAAO,GAAGA,CAAY,KACtB,UAAW,kBACb,CACJ,CAEA,MAAO,CACL,IAAK,MACL,KAAM,MACN,UAAW,uBACb,CACF,EC/EO,IAAMC,EAAe,CAACC,EAAcC,EAA+B,CAAC,IAAM,CAC/E,GAAM,CAAE,UAAAC,EAAY,IAAK,QAAAC,EAAU,YAAa,KAAAC,EAAOF,CAAU,EAAID,EAErE,OAAIE,IAAY,aACPH,EAAK,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,EAG/BA,EAAK,MAAME,CAAS,EAErB,IAAIG,GAAQA,EAAK,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,CAAC,EAAE,KAAKD,CAAI,CAC3E","names":["formatBytes","bytes","decimals","k","dm","sizes","i","moment","formatDate","date","timeBetween","date_start","date_end","momentStart","PositionContainer","getModalPosition","c","m","offset","position","top","left","getOppositePosition","windowOffset","positions","newPosition","rightOffset","bottomOffset","p","fixModalPosition","getModalPositionRelativeToContainer","params","modalContainerStyle","oppositePosition","fixedPosition","getModalPositionRelativeToScreen","position","windowOffset","toCapitalize","text","options","separator","variant","join","word"]}
@@ -0,0 +1,49 @@
1
+ declare enum PositionContainer {
2
+ CENTER = "center",
3
+ TOP = "top",
4
+ TOP_LEFT = "top left",
5
+ TOP_RIGHT = "top right",
6
+ TOP_CENTER = "top center",
7
+ LEFT = "left",
8
+ LEFT_TOP = "left top",
9
+ LEFT_BOTTOM = "left bottom",
10
+ LEFT_CENTER = "left center",
11
+ RIGHT = "right",
12
+ RIGHT_TOP = "right top",
13
+ RIGHT_BOTTOM = "right bottom",
14
+ RIGHT_CENTER = "right center",
15
+ BOTTOM = "bottom",
16
+ BOTTOM_LEFT = "bottom left",
17
+ BOTTOM_RIGHT = "bottom right",
18
+ BOTTOM_CENTER = "bottom center"
19
+ }
20
+ type PositionObject = {
21
+ x: number;
22
+ y: number;
23
+ top: number;
24
+ left: number;
25
+ w: number;
26
+ h: number;
27
+ };
28
+ type ModalPosition = {
29
+ left: number;
30
+ top: number;
31
+ };
32
+ type GetModalPositionParams = {
33
+ c: PositionObject;
34
+ m: PositionObject;
35
+ offset: number;
36
+ position: PositionContainer;
37
+ };
38
+ declare const getModalPosition: ({ c, m, offset, position }: GetModalPositionParams) => ModalPosition;
39
+ declare const getOppositePosition: ({ top, left }: ModalPosition, position: PositionContainer, windowOffset: number, m: PositionObject) => PositionContainer;
40
+ declare const fixModalPosition: ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {
41
+ top: number;
42
+ left: number;
43
+ };
44
+ type getModalPositionRelativeToContainerParams = GetModalPositionParams & {
45
+ windowOffset: number;
46
+ };
47
+ declare const getModalPositionRelativeToContainer: ({ c, m, offset, windowOffset, position, }: getModalPositionRelativeToContainerParams) => Record<string, string>;
48
+
49
+ export { type GetModalPositionParams as G, type ModalPosition as M, PositionContainer as P, type PositionObject as a, getOppositePosition as b, getModalPositionRelativeToContainer as c, fixModalPosition as f, getModalPosition as g };
@@ -0,0 +1,49 @@
1
+ declare enum PositionContainer {
2
+ CENTER = "center",
3
+ TOP = "top",
4
+ TOP_LEFT = "top left",
5
+ TOP_RIGHT = "top right",
6
+ TOP_CENTER = "top center",
7
+ LEFT = "left",
8
+ LEFT_TOP = "left top",
9
+ LEFT_BOTTOM = "left bottom",
10
+ LEFT_CENTER = "left center",
11
+ RIGHT = "right",
12
+ RIGHT_TOP = "right top",
13
+ RIGHT_BOTTOM = "right bottom",
14
+ RIGHT_CENTER = "right center",
15
+ BOTTOM = "bottom",
16
+ BOTTOM_LEFT = "bottom left",
17
+ BOTTOM_RIGHT = "bottom right",
18
+ BOTTOM_CENTER = "bottom center"
19
+ }
20
+ type PositionObject = {
21
+ x: number;
22
+ y: number;
23
+ top: number;
24
+ left: number;
25
+ w: number;
26
+ h: number;
27
+ };
28
+ type ModalPosition = {
29
+ left: number;
30
+ top: number;
31
+ };
32
+ type GetModalPositionParams = {
33
+ c: PositionObject;
34
+ m: PositionObject;
35
+ offset: number;
36
+ position: PositionContainer;
37
+ };
38
+ declare const getModalPosition: ({ c, m, offset, position }: GetModalPositionParams) => ModalPosition;
39
+ declare const getOppositePosition: ({ top, left }: ModalPosition, position: PositionContainer, windowOffset: number, m: PositionObject) => PositionContainer;
40
+ declare const fixModalPosition: ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {
41
+ top: number;
42
+ left: number;
43
+ };
44
+ type getModalPositionRelativeToContainerParams = GetModalPositionParams & {
45
+ windowOffset: number;
46
+ };
47
+ declare const getModalPositionRelativeToContainer: ({ c, m, offset, windowOffset, position, }: getModalPositionRelativeToContainerParams) => Record<string, string>;
48
+
49
+ export { type GetModalPositionParams as G, type ModalPosition as M, PositionContainer as P, type PositionObject as a, getOppositePosition as b, getModalPositionRelativeToContainer as c, fixModalPosition as f, getModalPosition as g };
package/dist/helpers.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var l=Object.create;var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var f=(t,o)=>{for(var r in o)p(t,r,{get:o[r],enumerable:!0})},m=(t,o,r,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of b(o))!M.call(t,e)&&e!==r&&p(t,e,{get:()=>o[e],enumerable:!(n=u(o,e))||n.enumerable});return t};var g=(t,o,r)=>(r=t!=null?l(x(t)):{},m(o||!t||!t.__esModule?p(r,"default",{value:t,enumerable:!0}):r,t)),B=t=>m(p({},"__esModule",{value:!0}),t);var k={};f(k,{POSITION:()=>w,formatBytes:()=>y,formatDate:()=>P,getModalPosition:()=>d,timeBetween:()=>Y,toCapitalize:()=>j});module.exports=B(k);var y=(t,o=2)=>{if(t===0)return"0 Bytes";let r=1e3,n=o<0?0:o,e=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],a=Math.floor(Math.log(t)/Math.log(r));return parseFloat((t/Math.pow(r,a)).toFixed(n))+" "+e[a]};var h=g(require("moment/moment"),1),P=t=>Date.parse(t)?(0,h.default)(t,"YYYY-MM-DD").format("MMM YYYY"):t,Y=(t,o)=>{let r=(0,h.default)(t);return Date.parse(o)?(0,h.default)(o).from(r,!0):r.fromNow()};var w=(e=>(e.top="top",e.left="left",e.right="right",e.bottom="bottom",e))(w||{}),d=({c:t,m:o,offset:r,windowOffset:n,position:e,distancePercentage:a=50})=>{let i=t.y+t.h+r,s=t.x-(o.w-t.w);switch(e){case"top":i=t.y-o.h-r,s=t.x-(o.w-t.w)*(a/100);break;case"bottom":i=t.y+t.h+r,s=t.x-(o.w-t.w)*(a/100);break;case"left":i=t.y-(o.h-t.h)*(a/100),s=t.x-o.w-r;break;case"right":i=t.y-(o.h-t.h)*(a/100),s=t.x+t.w+r;break}return{left:s+o.w+n>window.innerWidth?t.left-(s+o.w-window.innerWidth)-n:s,top:i+o.h+n>window.innerHeight?t.top-(i+o.h-window.innerHeight)-n:i}};var j=(t,o={})=>{let{separator:r=" ",variant:n="each-word",join:e=r}=o;return n==="first-word"?t[0].toUpperCase()+t.slice(1):t.split(r).map(i=>i[0].toUpperCase()+i.slice(1)).join(e)};0&&(module.exports={POSITION,formatBytes,formatDate,getModalPosition,timeBetween,toCapitalize});
2
+ "use strict";var u=Object.create;var l=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var c=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var _=(t,o)=>{for(var e in o)l(t,e,{get:o[e],enumerable:!0})},E=(t,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of b(o))!C.call(t,r)&&r!==e&&l(t,r,{get:()=>o[r],enumerable:!(a=R(o,r))||a.enumerable});return t};var B=(t,o,e)=>(e=t!=null?u(c(t)):{},E(o||!t||!t.__esModule?l(e,"default",{value:t,enumerable:!0}):e,t)),g=t=>E(l({},"__esModule",{value:!0}),t);var N={};_(N,{PositionContainer:()=>h,fixModalPosition:()=>m,formatBytes:()=>G,formatDate:()=>y,getModalPosition:()=>x,getModalPositionRelativeToContainer:()=>H,getModalPositionRelativeToScreen:()=>I,getOppositePosition:()=>M,timeBetween:()=>F,toCapitalize:()=>L});module.exports=g(N);var G=(t,o=2)=>{if(t===0)return"0 Bytes";let e=1e3,a=o<0?0:o,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/Math.pow(e,n)).toFixed(a))+" "+r[n]};var O=B(require("moment/moment"),1),y=t=>Date.parse(t)?(0,O.default)(t,"YYYY-MM-DD").format("MMM YYYY"):t,F=(t,o)=>{let e=(0,O.default)(t);return Date.parse(o)?(0,O.default)(o).from(e,!0):e.fromNow()};var h=(i=>(i.CENTER="center",i.TOP="top",i.TOP_LEFT="top left",i.TOP_RIGHT="top right",i.TOP_CENTER="top center",i.LEFT="left",i.LEFT_TOP="left top",i.LEFT_BOTTOM="left bottom",i.LEFT_CENTER="left center",i.RIGHT="right",i.RIGHT_TOP="right top",i.RIGHT_BOTTOM="right bottom",i.RIGHT_CENTER="right center",i.BOTTOM="bottom",i.BOTTOM_LEFT="bottom left",i.BOTTOM_RIGHT="bottom right",i.BOTTOM_CENTER="bottom center",i))(h||{}),x=({c:t,m:o,offset:e,position:a})=>{let r=t.y+t.h+e,n=t.x-(o.w-t.w)*(50/100);switch(a){case"top":case"top center":r=t.y-o.h-e,n=t.x-(o.w-t.w)/2;break;case"top left":r=t.y-o.h-e,n=t.x-o.w+t.w;break;case"top right":r=t.y-o.h-e,n=t.x;break;case"bottom":case"bottom center":r=t.y+t.h+e,n=t.x-(o.w-t.w)/2;break;case"bottom left":r=t.y+t.h+e,n=t.x-o.w+t.w;break;case"bottom right":r=t.y+t.h+e,n=t.x;break;case"left":case"left center":r=t.y-(o.h-t.h)/2,n=t.x-o.w-e;break;case"left top":r=t.y-o.h+t.h,n=t.x-o.w-e;break;case"left bottom":r=t.y,n=t.x-o.w-e;break;case"right":case"right center":r=t.y-(o.h-t.h)/2,n=t.x+t.w+e;break;case"right top":r=t.y-o.h+t.h,n=t.x+t.w+e;break;case"right bottom":r=t.y,n=t.x+t.w+e;break}return{left:Math.round(n),top:Math.round(r)}},M=({top:t,left:o},e,a,r)=>{let n=e.split(" "),s=[],p=o+r.w+a-window.innerWidth,P=t+r.h+a-window.innerHeight;for(let T of n)T==="top"&&t<a?s.push("bottom"):T==="left"&&o<a?s.push("right"):T==="bottom"&&P>0?s.push("top"):T==="right"&&p>0?s.push("left"):s.push(T);return s.join(" ")},m=({top:t,left:o},e,a)=>{let r=o+e.w+a-window.innerWidth,n=t+e.h+a-window.innerHeight;return o=r>0?o-r:o,t=n>0?t-n:t,o=o<a?a:o,t=t<a?a:t,{top:t,left:o}},H=({c:t,m:o,offset:e,windowOffset:a,position:r})=>{let n={c:t,m:o,offset:e,position:r},s=x(n),p=M(s,r,a,o);p!==r&&(s=x({...n,position:p}));let P=m(s,o,a);return{left:`${P.left}px`,top:`${P.top}px`}};var I=({position:t,windowOffset:o})=>{switch(t){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${o}px`,left:`${o}px`};case"top right":case"right top":return{top:`${o}px`,right:`${o}px`};case"bottom":case"bottom center":return{bottom:`${o}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${o}px`,left:`${o}px`};case"right bottom":case"bottom right":return{bottom:`${o}px`,right:`${o}px`};case"left":case"left center":return{top:"50%",left:`${o}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${o}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var L=(t,o={})=>{let{separator:e=" ",variant:a="each-word",join:r=e}=o;return a==="first-word"?t[0].toUpperCase()+t.slice(1):t.split(e).map(s=>s[0].toUpperCase()+s.slice(1)).join(r)};0&&(module.exports={PositionContainer,fixModalPosition,formatBytes,formatDate,getModalPosition,getModalPositionRelativeToContainer,getModalPositionRelativeToScreen,getOppositePosition,timeBetween,toCapitalize});
3
3
  //# sourceMappingURL=helpers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/helpers/index.ts","../src/helpers/format-bytes.ts","../src/helpers/format-dates.ts","../src/helpers/get-modal-position.ts","../src/helpers/text/to-capitalize.ts"],"sourcesContent":["export * from './format-bytes';\nexport * from './format-dates';\nexport * from './get-modal-position';\nexport * from './text';\n","export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","import moment from 'moment/moment';\n\nexport const formatDate = (date: string) => {\n return Date.parse(date) ? moment(date, 'YYYY-MM-DD').format('MMM YYYY') : date;\n};\n\nexport const timeBetween = (date_start: string, date_end: string) => {\n const momentStart = moment(date_start);\n\n return Date.parse(date_end) ? moment(date_end).from(momentStart, true) : momentStart.fromNow();\n};\n","export enum POSITION {\n top = 'top',\n left = 'left',\n right = 'right',\n bottom = 'bottom',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n windowOffset: number;\n position?: `${POSITION}`;\n distancePercentage?: number;\n};\n\nexport const getModalPosition = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n distancePercentage = 50,\n}: GetModalPositionParams) => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w);\n\n switch (position) {\n case POSITION.top:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) * (distancePercentage / 100);\n\n break;\n case POSITION.bottom:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) * (distancePercentage / 100);\n\n break;\n case POSITION.left:\n top = c.y - (m.h - c.h) * (distancePercentage / 100);\n left = c.x - m.w - offset;\n\n break;\n case POSITION.right:\n top = c.y - (m.h - c.h) * (distancePercentage / 100);\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left:\n left + m.w + windowOffset > window.innerWidth ? c.left - (left + m.w - window.innerWidth) - windowOffset : left,\n top: top + m.h + windowOffset > window.innerHeight ? c.top - (top + m.h - window.innerHeight) - windowOffset : top,\n };\n};\n","export type ToCapitalizeOptions = Partial<{\n separator: string;\n join: string;\n variant: 'first-word' | 'each-word';\n}>;\n\nexport const toCapitalize = (text: string, options: ToCapitalizeOptions = {}) => {\n const { separator = ' ', variant = 'each-word', join = separator } = options;\n\n if (variant === 'first-word') {\n return text[0].toUpperCase() + text.slice(1);\n }\n\n const words = text.split(separator);\n\n return words.map(word => word[0].toUpperCase() + word.slice(1)).join(join);\n};\n"],"mappings":";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,gBAAAC,EAAA,eAAAC,EAAA,qBAAAC,EAAA,gBAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAR,GCAO,IAAMS,EAAc,CAACC,EAAeC,EAAW,IAAM,CAC1D,GAAID,IAAU,EAAG,MAAO,UAExB,IAAME,EAAI,IACJC,EAAKF,EAAW,EAAI,EAAIA,EACxBG,EAAQ,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAEhEC,EAAI,KAAK,MAAM,KAAK,IAAIL,CAAK,EAAI,KAAK,IAAIE,CAAC,CAAC,EAElD,OAAO,YAAYF,EAAQ,KAAK,IAAIE,EAAGG,CAAC,GAAG,QAAQF,CAAE,CAAC,EAAI,IAAMC,EAAMC,CAAC,CACzE,ECVA,IAAAC,EAAmB,8BAENC,EAAcC,GAClB,KAAK,MAAMA,CAAI,KAAI,EAAAC,SAAOD,EAAM,YAAY,EAAE,OAAO,UAAU,EAAIA,EAG/DE,EAAc,CAACC,EAAoBC,IAAqB,CACnE,IAAMC,KAAc,EAAAJ,SAAOE,CAAU,EAErC,OAAO,KAAK,MAAMC,CAAQ,KAAI,EAAAH,SAAOG,CAAQ,EAAE,KAAKC,EAAa,EAAI,EAAIA,EAAY,QAAQ,CAC/F,ECVO,IAAKC,OACVA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,OAAS,SAJCA,OAAA,IAyBCC,EAAmB,CAAC,CAC/B,EAAAC,EACA,EAAAC,EACA,OAAAC,EACA,aAAAC,EACA,SAAAC,EACA,mBAAAC,EAAqB,EACvB,IAA8B,CAE5B,IAAIC,EAAMN,EAAE,EAAIA,EAAE,EAAIE,EAClBK,EAAOP,EAAE,GAAKC,EAAE,EAAID,EAAE,GAE1B,OAAQI,EAAU,CAChB,IAAK,MACHE,EAAMN,EAAE,EAAIC,EAAE,EAAIC,EAClBK,EAAOP,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAMK,EAAqB,KAEjD,MACF,IAAK,SACHC,EAAMN,EAAE,EAAIA,EAAE,EAAIE,EAClBK,EAAOP,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAMK,EAAqB,KAEjD,MACF,IAAK,OACHC,EAAMN,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAMK,EAAqB,KAChDE,EAAOP,EAAE,EAAIC,EAAE,EAAIC,EAEnB,MACF,IAAK,QACHI,EAAMN,EAAE,GAAKC,EAAE,EAAID,EAAE,IAAMK,EAAqB,KAChDE,EAAOP,EAAE,EAAIA,EAAE,EAAIE,EAEnB,KACJ,CAEA,MAAO,CACL,KACEK,EAAON,EAAE,EAAIE,EAAe,OAAO,WAAaH,EAAE,MAAQO,EAAON,EAAE,EAAI,OAAO,YAAcE,EAAeI,EAC7G,IAAKD,EAAML,EAAE,EAAIE,EAAe,OAAO,YAAcH,EAAE,KAAOM,EAAML,EAAE,EAAI,OAAO,aAAeE,EAAeG,CACjH,CACF,EC3DO,IAAME,EAAe,CAACC,EAAcC,EAA+B,CAAC,IAAM,CAC/E,GAAM,CAAE,UAAAC,EAAY,IAAK,QAAAC,EAAU,YAAa,KAAAC,EAAOF,CAAU,EAAID,EAErE,OAAIE,IAAY,aACPH,EAAK,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,EAG/BA,EAAK,MAAME,CAAS,EAErB,IAAIG,GAAQA,EAAK,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,CAAC,EAAE,KAAKD,CAAI,CAC3E","names":["helpers_exports","__export","POSITION","formatBytes","formatDate","getModalPosition","timeBetween","toCapitalize","__toCommonJS","formatBytes","bytes","decimals","k","dm","sizes","i","import_moment","formatDate","date","moment","timeBetween","date_start","date_end","momentStart","POSITION","getModalPosition","c","m","offset","windowOffset","position","distancePercentage","top","left","toCapitalize","text","options","separator","variant","join","word"]}
1
+ {"version":3,"sources":["../src/helpers/index.ts","../src/helpers/format-bytes.ts","../src/helpers/format-dates.ts","../src/helpers/get-modal-position.ts","../src/helpers/get-modal-position-relative-to-screen.ts","../src/helpers/text/to-capitalize.ts"],"sourcesContent":["export * from './format-bytes';\nexport * from './format-dates';\nexport * from './get-modal-position';\nexport * from './get-modal-position-relative-to-screen';\nexport * from './text';\n","export const formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1000;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n","import moment from 'moment/moment';\n\nexport const formatDate = (date: string) => {\n return Date.parse(date) ? moment(date, 'YYYY-MM-DD').format('MMM YYYY') : date;\n};\n\nexport const timeBetween = (date_start: string, date_end: string) => {\n const momentStart = moment(date_start);\n\n return Date.parse(date_end) ? moment(date_end).from(momentStart, true) : momentStart.fromNow();\n};\n","export enum PositionContainer {\n CENTER = 'center',\n TOP = 'top',\n TOP_LEFT = 'top left',\n TOP_RIGHT = 'top right',\n TOP_CENTER = 'top center',\n LEFT = 'left',\n LEFT_TOP = 'left top',\n LEFT_BOTTOM = 'left bottom',\n LEFT_CENTER = 'left center',\n RIGHT = 'right',\n RIGHT_TOP = 'right top',\n RIGHT_BOTTOM = 'right bottom',\n RIGHT_CENTER = 'right center',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom left',\n BOTTOM_RIGHT = 'bottom right',\n BOTTOM_CENTER = 'bottom center',\n}\n\nexport type PositionObject = {\n x: number;\n y: number;\n top: number;\n left: number;\n w: number;\n h: number;\n};\n\nexport type ModalPosition = {\n left: number;\n top: number;\n};\n\nexport type GetModalPositionParams = {\n c: PositionObject;\n m: PositionObject;\n offset: number;\n position: PositionContainer;\n};\n\n/*\n * @description Calculates the position of the modal relative to the container\n *\n * @param c - The container's position object\n * @param m - The modal's position object\n * @param offset - The offset between the container and the modal\n * @param position - The position of the modal\n *\n * -----------------------------------------------------------------------------\n * @returns The position of the modal relative to the container\n */\nexport const getModalPosition = ({ c, m, offset, position }: GetModalPositionParams): ModalPosition => {\n // Default bottom\n let top = c.y + c.h + offset;\n let left = c.x - (m.w - c.w) * (50 / 100);\n\n switch (position) {\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n top = c.y - m.h - offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n case PositionContainer.TOP_LEFT:\n top = c.y - m.h - offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.TOP_RIGHT:\n top = c.y - m.h - offset;\n left = c.x;\n\n break;\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n top = c.y + c.h + offset;\n left = c.x - (m.w - c.w) / 2;\n\n break;\n\n case PositionContainer.BOTTOM_LEFT:\n top = c.y + c.h + offset;\n left = c.x - m.w + c.w;\n\n break;\n\n case PositionContainer.BOTTOM_RIGHT:\n top = c.y + c.h + offset;\n left = c.x;\n\n break;\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_TOP:\n top = c.y - m.h + c.h;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.LEFT_BOTTOM:\n top = c.y;\n left = c.x - m.w - offset;\n\n break;\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n top = c.y - (m.h - c.h) / 2;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_TOP:\n top = c.y - m.h + c.h;\n left = c.x + c.w + offset;\n\n break;\n\n case PositionContainer.RIGHT_BOTTOM:\n top = c.y;\n left = c.x + c.w + offset;\n\n break;\n }\n\n return {\n left: Math.round(left),\n top: Math.round(top),\n };\n};\n\nexport const getOppositePosition = (\n { top, left }: ModalPosition,\n position: PositionContainer,\n windowOffset: number,\n m: PositionObject,\n) => {\n const positions = position.split(' ');\n const newPosition = [];\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n for (const p of positions) {\n if (p === PositionContainer.TOP && top < windowOffset) {\n newPosition.push(PositionContainer.BOTTOM);\n } else if (p === PositionContainer.LEFT && left < windowOffset) {\n newPosition.push(PositionContainer.RIGHT);\n } else if (p === PositionContainer.BOTTOM && bottomOffset > 0) {\n newPosition.push(PositionContainer.TOP);\n } else if (p === PositionContainer.RIGHT && rightOffset > 0) {\n newPosition.push(PositionContainer.LEFT);\n } else {\n newPosition.push(p);\n }\n }\n\n return newPosition.join(' ') as PositionContainer;\n};\n\nexport const fixModalPosition = ({ top, left }: ModalPosition, m: PositionObject, windowOffset: number) => {\n const rightOffset = left + m.w + windowOffset - window.innerWidth;\n const bottomOffset = top + m.h + windowOffset - window.innerHeight;\n\n left = rightOffset > 0 ? left - rightOffset : left;\n top = bottomOffset > 0 ? top - bottomOffset : top;\n\n left = left < windowOffset ? windowOffset : left;\n top = top < windowOffset ? windowOffset : top;\n\n return { top, left };\n};\n\ntype getModalPositionRelativeToContainerParams = GetModalPositionParams & {\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToContainer = ({\n c,\n m,\n offset,\n windowOffset,\n position,\n}: getModalPositionRelativeToContainerParams): Record<string, string> => {\n const params = { c, m, offset, position };\n let modalContainerStyle = getModalPosition(params);\n\n const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);\n\n if (oppositePosition !== position) {\n modalContainerStyle = getModalPosition({\n ...params,\n position: oppositePosition,\n });\n }\n\n const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);\n\n return {\n left: `${fixedPosition.left}px`,\n top: `${fixedPosition.top}px`,\n };\n};\n","import { PositionContainer } from './get-modal-position';\n\nexport type GetModalPositionRelativeToScreenParams = {\n position: PositionContainer;\n windowOffset: number;\n};\n\nexport const getModalPositionRelativeToScreen = ({\n position,\n windowOffset,\n}: GetModalPositionRelativeToScreenParams): Record<string, string> => {\n switch (position) {\n case PositionContainer.CENTER:\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n\n case PositionContainer.TOP:\n case PositionContainer.TOP_CENTER:\n return {\n top: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.TOP_LEFT:\n case PositionContainer.LEFT_TOP:\n return {\n top: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.TOP_RIGHT:\n case PositionContainer.RIGHT_TOP:\n return {\n top: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.BOTTOM:\n case PositionContainer.BOTTOM_CENTER:\n return {\n bottom: `${windowOffset}px`,\n left: '50%',\n transform: 'translateX(-50%)',\n };\n\n case PositionContainer.LEFT_BOTTOM:\n case PositionContainer.BOTTOM_LEFT:\n return {\n bottom: `${windowOffset}px`,\n left: `${windowOffset}px`,\n };\n\n case PositionContainer.RIGHT_BOTTOM:\n case PositionContainer.BOTTOM_RIGHT:\n return {\n bottom: `${windowOffset}px`,\n right: `${windowOffset}px`,\n };\n\n case PositionContainer.LEFT:\n case PositionContainer.LEFT_CENTER:\n return {\n top: '50%',\n left: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n\n case PositionContainer.RIGHT:\n case PositionContainer.RIGHT_CENTER:\n return {\n top: '50%',\n right: `${windowOffset}px`,\n transform: 'translateY(-50%)',\n };\n }\n\n return {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n };\n};\n","export type ToCapitalizeOptions = Partial<{\n separator: string;\n join: string;\n variant: 'first-word' | 'each-word';\n}>;\n\nexport const toCapitalize = (text: string, options: ToCapitalizeOptions = {}) => {\n const { separator = ' ', variant = 'each-word', join = separator } = options;\n\n if (variant === 'first-word') {\n return text[0].toUpperCase() + text.slice(1);\n }\n\n const words = text.split(separator);\n\n return words.map(word => word[0].toUpperCase() + word.slice(1)).join(join);\n};\n"],"mappings":"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","names":["helpers_exports","__export","PositionContainer","fixModalPosition","formatBytes","formatDate","getModalPosition","getModalPositionRelativeToContainer","getModalPositionRelativeToScreen","getOppositePosition","timeBetween","toCapitalize","__toCommonJS","formatBytes","bytes","decimals","k","dm","sizes","i","import_moment","formatDate","date","moment","timeBetween","date_start","date_end","momentStart","PositionContainer","getModalPosition","c","m","offset","position","top","left","getOppositePosition","windowOffset","positions","newPosition","rightOffset","bottomOffset","p","fixModalPosition","getModalPositionRelativeToContainer","params","modalContainerStyle","oppositePosition","fixedPosition","getModalPositionRelativeToScreen","position","windowOffset","toCapitalize","text","options","separator","variant","join","word"]}
@@ -1,10 +1,17 @@
1
- export { G as GetModalPositionParams, P as POSITION, a as PositionObject, g as getModalPosition } from './get-modal-position-DPftPoU2.cjs';
1
+ import { P as PositionContainer } from './get-modal-position-drle0OjP.cjs';
2
+ export { G as GetModalPositionParams, M as ModalPosition, a as PositionObject, f as fixModalPosition, g as getModalPosition, c as getModalPositionRelativeToContainer, b as getOppositePosition } from './get-modal-position-drle0OjP.cjs';
2
3
 
3
4
  declare const formatBytes: (bytes: number, decimals?: number) => string;
4
5
 
5
6
  declare const formatDate: (date: string) => string;
6
7
  declare const timeBetween: (date_start: string, date_end: string) => string;
7
8
 
9
+ type GetModalPositionRelativeToScreenParams = {
10
+ position: PositionContainer;
11
+ windowOffset: number;
12
+ };
13
+ declare const getModalPositionRelativeToScreen: ({ position, windowOffset, }: GetModalPositionRelativeToScreenParams) => Record<string, string>;
14
+
8
15
  type ToCapitalizeOptions = Partial<{
9
16
  separator: string;
10
17
  join: string;
@@ -12,4 +19,4 @@ type ToCapitalizeOptions = Partial<{
12
19
  }>;
13
20
  declare const toCapitalize: (text: string, options?: ToCapitalizeOptions) => string;
14
21
 
15
- export { type ToCapitalizeOptions, formatBytes, formatDate, timeBetween, toCapitalize };
22
+ export { type GetModalPositionRelativeToScreenParams, PositionContainer, type ToCapitalizeOptions, formatBytes, formatDate, getModalPositionRelativeToScreen, timeBetween, toCapitalize };
package/dist/helpers.d.ts CHANGED
@@ -1,10 +1,17 @@
1
- export { G as GetModalPositionParams, P as POSITION, a as PositionObject, g as getModalPosition } from './get-modal-position-DPftPoU2.js';
1
+ import { P as PositionContainer } from './get-modal-position-drle0OjP.js';
2
+ export { G as GetModalPositionParams, M as ModalPosition, a as PositionObject, f as fixModalPosition, g as getModalPosition, c as getModalPositionRelativeToContainer, b as getOppositePosition } from './get-modal-position-drle0OjP.js';
2
3
 
3
4
  declare const formatBytes: (bytes: number, decimals?: number) => string;
4
5
 
5
6
  declare const formatDate: (date: string) => string;
6
7
  declare const timeBetween: (date_start: string, date_end: string) => string;
7
8
 
9
+ type GetModalPositionRelativeToScreenParams = {
10
+ position: PositionContainer;
11
+ windowOffset: number;
12
+ };
13
+ declare const getModalPositionRelativeToScreen: ({ position, windowOffset, }: GetModalPositionRelativeToScreenParams) => Record<string, string>;
14
+
8
15
  type ToCapitalizeOptions = Partial<{
9
16
  separator: string;
10
17
  join: string;
@@ -12,4 +19,4 @@ type ToCapitalizeOptions = Partial<{
12
19
  }>;
13
20
  declare const toCapitalize: (text: string, options?: ToCapitalizeOptions) => string;
14
21
 
15
- export { type ToCapitalizeOptions, formatBytes, formatDate, timeBetween, toCapitalize };
22
+ export { type GetModalPositionRelativeToScreenParams, PositionContainer, type ToCapitalizeOptions, formatBytes, formatDate, getModalPositionRelativeToScreen, timeBetween, toCapitalize };
package/dist/helpers.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{a,b,c,d,e,f}from"./chunk-M4KRSYE7.js";export{d as POSITION,a as formatBytes,b as formatDate,e as getModalPosition,c as timeBetween,f as toCapitalize};
2
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-MAWW6AA7.js";export{d as PositionContainer,g as fixModalPosition,a as formatBytes,b as formatDate,e as getModalPosition,h as getModalPositionRelativeToContainer,i as getModalPositionRelativeToScreen,f as getOppositePosition,c as timeBetween,j as toCapitalize};
3
3
  //# sourceMappingURL=helpers.js.map
package/dist/hooks.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var O=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var X=(e,t)=>{for(var n in t)O(e,n,{get:t[n],enumerable:!0})},Z=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of J(t))!K.call(e,r)&&r!==n&&O(e,r,{get:()=>t[r],enumerable:!(o=$(t,r))||o.enumerable});return e};var _=e=>Z(O({},"__esModule",{value:!0}),e);var ye={};X(ye,{FileTypeEnum:()=>z,useAsync:()=>ee,useClassNames:()=>te,useConstant:()=>ne,useDebounce:()=>oe,useDimensions:()=>re,useEventListener:()=>u,useFileReader:()=>se,useInView:()=>ie,useInputHandlers:()=>ae,useMediaQuery:()=>ue,useModalInContainer:()=>ce,useMousePosition:()=>me,useObserver:()=>T,useOnClickOutsideRef:()=>N,useOnlineStatus:()=>le,useRenderCount:()=>de,useSafeDispatch:()=>D,useScroll:()=>fe,useStateHistory:()=>pe,useToggle:()=>Ee,useToggleValues:()=>ve,useViewport:()=>Te});module.exports=_(ye);var d=require("react");var E=require("react"),D=e=>{let t=(0,E.useRef)(!1);return(0,E.useLayoutEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,E.useCallback)((...n)=>{t.current&&e(...n)},[e])};var q=(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)}`)}},ee=e=>{let[t,n]=(0,d.useReducer)(q,{status:"idle",data:null,error:null,...e}),o=D(n),r=(0,d.useCallback)(a=>{o({type:"pending"}),a.then(c=>{o({type:"resolved",data:c})},c=>{o({type:"rejected",error:c})})},[o]),s=(0,d.useCallback)(a=>o({type:"resolved",data:a}),[o]),i=(0,d.useCallback)(a=>o({type:"rejected",error:a}),[o]);return(0,d.useMemo)(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};var j=require("react"),te=e=>(0,j.useMemo)(()=>Object.entries(e).reduce((t,[n,o])=>o?[...t,n]:t,[]).join(" "),[e]);var I=require("react"),ne=e=>(0,I.useState)(e)[0];var M=require("react"),oe=(e,t=500)=>{let[n,o]=(0,M.useState)(e);return(0,M.useEffect)(()=>{let r=setTimeout(()=>o(e),t);return()=>{clearTimeout(r)}},[e,t]),n};var R=require("react");var v=require("react");function u(e,t,n,o){let r=(0,v.useRef)(t);(0,v.useEffect)(()=>{r.current=t},[t]),(0,v.useLayoutEffect)(()=>{let s=n?.current??window;if(!(s&&s.addEventListener))return;let i=a=>r.current(a);return s.addEventListener(e,i,o),()=>{s.removeEventListener(e,i,o)}},[e,n,o])}var F=require("react"),T=(e,t)=>{(0,F.useEffect)(()=>{let n=null;return t&&e.current&&(n=new ResizeObserver(t),n.observe(e.current)),()=>{n&&n.disconnect()}},[e,t])};var re=e=>{let[t,n]=(0,R.useState)({width:0,height:0}),o=()=>{n({width:e.current?.offsetWidth??0,height:e.current?.offsetHeight??0})};return u("resize",o),T(e,o),(0,R.useEffect)(o,[e]),t};var g=require("react");var V=(e,t=2)=>{if(e===0)return"0 Bytes";let n=1e3,o=t<0?0:t,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],s=Math.floor(Math.log(e)/Math.log(n));return parseFloat((e/Math.pow(n,s)).toFixed(o))+" "+r[s]};var B=({c:e,m:t,offset:n,windowOffset:o,position:r,distancePercentage:s=50})=>{let i=e.y+e.h+n,a=e.x-(t.w-e.w);switch(r){case"top":i=e.y-t.h-n,a=e.x-(t.w-e.w)*(s/100);break;case"bottom":i=e.y+e.h+n,a=e.x-(t.w-e.w)*(s/100);break;case"left":i=e.y-(t.h-e.h)*(s/100),a=e.x-t.w-n;break;case"right":i=e.y-(t.h-e.h)*(s/100),a=e.x+e.w+n;break}return{left:a+t.w+o>window.innerWidth?e.left-(a+t.w-window.innerWidth)-o:a,top:i+t.h+o>window.innerHeight?e.top-(i+t.h-window.innerHeight)-o:i}};var z=(n=>(n.PNG="image/png",n.PDF="application/pdf",n))(z||{}),se=e=>{let[t,n]=(0,g.useState)([]);return(0,g.useEffect)(()=>{let o=[],r=!1;if(!Array.isArray(e)||e.length===0)n([]);else{let s=e.map(i=>new Promise((a,c)=>{let l=new FileReader;o.push(l),l.onload=f=>{f.target?.result&&a({name:i.name,size:i.size,formatSize:V(i.size),type:i.type,url:f.target.result})},l.onabort=()=>{c(new Error("File reading aborted"))},l.onerror=()=>{c(new Error("Failed to read file"))},l.readAsDataURL(i)}));Promise.all(s).then(i=>{r||n(i)})}return()=>{r=!0,o.forEach(s=>{s.abort()})}},[e]),t};var y=require("react"),ie=(e={})=>{let[t,n]=(0,y.useState)(!1),o=(0,y.useRef)(null);return(0,y.useEffect)(()=>{let r=new IntersectionObserver(([s])=>{n(s.isIntersecting)},e);return o.current&&r.observe(o.current),()=>{r.disconnect()}},[e]),{ref:o,inView:t}};var x=require("react"),ae=({onBlur:e,onFocus:t,onChange:n}={})=>{let[o,r]=(0,x.useState)(!1),s=(0,x.useCallback)(c=>{r(!0),t&&t(c)},[t]),i=(0,x.useCallback)(c=>{r(!1),e&&e(c)},[e]),a=(0,x.useCallback)(c=>{n&&n(c)},[n]);return{isFocus:o,handlers:{onFocus:s,onBlur:i,onChange:a}}};var w=require("react"),ue=e=>{let[t,n]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let o=window.matchMedia(e);o.matches!==t&&n(o.matches);let r=()=>{n(o.matches)};return o.addEventListener("change",r),()=>{o.removeEventListener("change",r)}},[t,e]),t};var m=require("react");var N=(e,t)=>{u("keydown",n=>{n.key==="Escape"&&t()}),u("mousedown",n=>{e.current&&!e.current.contains(n.target)&&t()})};var W=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),ce=({closeOnClickOutside:e=!0,offset:t=5,windowOffset:n=10,position:o,distancePercentage:r=50}={})=>{let[s,i]=(0,m.useState)(!1),[a,c]=(0,m.useState)({}),l=(0,m.useRef)(null),f=(0,m.useRef)(null);(0,m.useEffect)(()=>{e&&(document.documentElement.style.overflow=s?"hidden":"auto")},[s,e]),N(l,()=>{s&&e&&i(!1)});let H=(0,m.useCallback)(G=>{let k=G.current?.getClientRects()[0],C=f.current?.getClientRects()[0];if(!C||!k){c({});return}let Y=B({c:W(C),m:W(k),distancePercentage:r,windowOffset:n,position:o,offset:t});c(Y)},[r,n,o,t]),p=(0,m.useCallback)(()=>{s&&H(l)},[H,s]);return(0,m.useLayoutEffect)(p,[p]),T(f,p),T(l,p),u("resize",p),u("scroll",p,l),{isVisible:s,setIsVisible:i,modalStyle:a,containerRef:f,modalRef:l}};var Q=require("react");var me=()=>{let[{x:e,y:t},n]=(0,Q.useState)({x:0,y:0});return u("mousemove",r=>{let{clientX:s,clientY:i}=r;n({x:s,y:i})}),[e,t]};var U=require("react");var le=()=>{let[e,t]=(0,U.useState)(navigator.onLine);return u("online",()=>t(navigator.onLine)),u("offline",()=>t(navigator.onLine)),e};var L=require("react"),de=()=>{let e=(0,L.useRef)(1);return(0,L.useEffect)(()=>{e.current++}),e.current};var h=require("react"),fe=()=>{let e=(0,h.useRef)(null),[t,n]=(0,h.useState)([0,0]);return(0,h.useEffect)(()=>{let o=e.current,r=()=>{o&&n([o.scrollLeft,o.scrollTop])};return o&&o.addEventListener("scroll",r),()=>{o&&o.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};var b=require("react");function pe(e){let[t,n]=(0,b.useState)(e),[o,r]=(0,b.useState)([]);return(0,b.useEffect)(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,n,o]}var S=require("react"),Ee=(e=!1)=>{let[t,n]=(0,S.useState)(e),o=(0,S.useCallback)(()=>{n(r=>!r)},[]);return[t,o,n]};var A=require("react"),ve=(e,t=0)=>{let[n,o]=(0,A.useState)(t),r=(0,A.useCallback)(s=>{o(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[n],r]};var P=require("react");var Te=()=>{let e=()=>{let{innerWidth:o,innerHeight:r}=window;return{width:o,height:r,orientation:o>r?"landscape":"portrait"}},[t,n]=(0,P.useState)(e);return u("resize",()=>{n(e())}),(0,P.useEffect)(()=>{n(e())},[]),t};0&&(module.exports={FileTypeEnum,useAsync,useClassNames,useConstant,useDebounce,useDimensions,useEventListener,useFileReader,useInView,useInputHandlers,useMediaQuery,useModalInContainer,useMousePosition,useObserver,useOnClickOutsideRef,useOnlineStatus,useRenderCount,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:()=>Me,useClassNames:()=>Oe,useClickOutside:()=>F,useConstant:()=>Re,useCookie:()=>Ce,useDebounce:()=>Le,useDimensions:()=>Se,useDomContainer:()=>ke,useEventListener:()=>l,useFileReader:()=>Ie,useGeolocation:()=>Ae,useHover:()=>Ge,useInView:()=>we,useInputHandlers:()=>De,useIntersectionObserver:()=>B,useMediaQuery:()=>Fe,useModal:()=>Be,useModalInContainer:()=>je,useModalTransition:()=>j,useMousePosition:()=>_e,useOnlineStatus:()=>$e,useRenderCount:()=>Ue,useResizeObserver:()=>M,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)}`)}},Me=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"),Oe=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),F=(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"),M=(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 M(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,t)=>((0,C.useEffect)(()=>()=>{let o=document.getElementById(e);o?.parentNode===document.body&&document.body.removeChild(o)},[e,t]),(0,C.useMemo)(()=>{let o=document.getElementById(e);return o||(o=document.createElement("div"),o.setAttribute("id",e),typeof t=="function"?t(o):t&&(t.current=o),document.body.appendChild(o)),o},[e,t]));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(" ")},He=({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=He(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||{}),Ie=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"),B=(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 B(n,([r])=>{o(r.isIntersecting)},e),{ref:n,inView:t}};var O=require("react"),De=({onBlur:e,onFocus:t,onChange:o}={})=>{let[n,r]=(0,O.useState)(!1),s=(0,O.useCallback)(c=>{r(!0),t&&t(c)},[t]),i=(0,O.useCallback)(c=>{r(!1),e&&e(c)},[e]),a=(0,O.useCallback)(c=>{o&&o(c)},[o]);return{isFocus:n,handlers:{onFocus:s,onBlur:i,onChange:a}}};var k=require("react"),Fe=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"),Be=()=>{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||{}),j=(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}),je=({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=j(r,a),{isVisible:d,closeModal:ue}=u;F(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]),M(i??c,v),M(s,v),l("resize",v),l("scroll",v,s),u};var H=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,H.useRef)(null),[o,n]=(0,H.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 I=require("react"),Ue=()=>{let e=(0,I.useRef)(1);return(0,I.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