@zuzjs/hooks 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +29 -2
- package/dist/index.d.ts +29 -2
- package/dist/index.js +6 -6
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';var react=require('react'),core=require('@zuzjs/core');/* ZuzJS UI CLI */
|
|
2
|
-
var
|
|
3
|
-
`),
|
|
4
|
-
`));};}),h=(l,c)=>({store:r.current.transaction(l,c).objectStore(l)});return {getAll:l=>new Promise((c,i)=>{p().then(a=>{let{store:M}=h(l,"readonly"),E=M.getAll();E.onsuccess=T=>{T.target.result==null&&i("Record not found"),c(T.target.result);},E.onerror=T=>{i(`SELECT Failed. ${T.target.result}`);};}).catch(a=>{console.log("[getAll]",a),i("Database either corrupted or not initialized");});}),getByID:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readonly"),T=E.get(c);T.onsuccess=d=>{d.target.result==null&&a("Record not found"),i(d.target.result);},T.onerror=d=>{a(`SELECT Failed. ${d.target.result}`);};}).catch(M=>{console.log("[getByID]",M),a("Database either corrupted or not initialized");});}),getStore:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readonly"),T=E.getAll();T.onsuccess=d=>{d.target.result==null&&a("Record not found"),i(d.target.result);},T.onerror=d=>{a(`SELECT Failed. ${d.target.result}`);};}).catch(M=>{a(M.message||"Database either corrupted or not initialized");});}),insert:(l,c,i)=>new Promise((a,M)=>{p().then(E=>{let{store:T}=h(l,"readwrite"),d=T.add(c,i);d.onsuccess=P=>{a(P.target.result);},d.onerror=P=>{M(`INSERTION Failed. ${P.target.result}`);};}).catch(E=>{M(E.message||"Database either corrupted or not initialized");});}),update:(l,c)=>new Promise((i,a)=>{p().then(M=>{let {store:E}=h(l,"readwrite"),d=E.put(c);d.onsuccess=P=>{i();},d.onerror=P=>{a(`UPDATE Failed. ${P.target.result}`);};}).catch(M=>{a(`UPDATE Failed. ${M}`);});}),update_one:(l,c,i)=>new Promise((a,M)=>{p().then(E=>{let{store:T}=h(l,"readwrite"),d=T.get(i);d.onsuccess=()=>{let P=d.result;if(!P){M(`Record with key ${i} not found.`);return}let D=T.put({...P,...c});D.onsuccess=()=>a(),D.onerror=k=>M(`Update failed. ${k.target.error}`);},d.onerror=P=>{M(`Failed to get existing record. ${P.target.error}`);};}).catch(E=>{M("Database either corrupted or not initialized");});}),remove:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readwrite"),T=E.delete(c);T.onsuccess=d=>{i();};}).catch(M=>{console.log(M),a(`Delete failed from ${l} with key: ${c}`);});}),error:u}},Mt=vt;var Tt=(e,o,s={})=>{let[n,r]=react.useState({top:0,left:0}),{offsetX:u=0,offsetY:f=0,overflow:p=true}=s,h=react.useRef(null),b=react.useCallback(()=>{let w=0,m=0;if(o)w=o.clientY+f,m=o.clientX+u;else if(e){let v=e.getBoundingClientRect();w=v.bottom+f,m=v.left+u;}if(p&&h.current){let v=h.current.getBoundingClientRect(),{innerWidth:g,innerHeight:S}=window;m+v.width>g&&(m=g-v.width-10),w+v.height>S&&(w=S-v.height-10);}r({top:w,left:m});},[o,e,u,f,p]);return react.useEffect(()=>(b(),window.addEventListener("resize",b),window.addEventListener("scroll",b),()=>{window.removeEventListener("resize",b),window.removeEventListener("scroll",b);}),[b]),{position:n,targetRef:h}},Lt=Tt;var Rt=e=>e%4===0&&e%100!==0||e%400===0,It=(e,o)=>{switch(e){case 1:return Rt(o)?29:28;case 3:case 5:case 8:case 10:return 30;default:return 31}},tt=(e,o)=>e.toLocaleString("default",{weekday:o}),et=(e,o)=>{let s=new Date;return s.setMonth(e),s.toLocaleString("default",{month:o})},Ft=(e=1,o,s)=>{let[n,r]=react.useState(new Date),u=()=>{r(m=>{let v=new Date(m);return v.setMonth(m.getMonth()+e),v});},f=()=>{r(m=>{let v=new Date(m);return v.setMonth(v.getMonth()-e),v});},p=It(n.getMonth(),n.getFullYear()),h=et(n.getMonth(),s||"long"),b=tt(n,o||"short"),w=Array.from({length:p},(m,v)=>{let g=new Date(n.getFullYear(),n.getMonth(),v+1);return {day:tt(g,o||"short"),date:g.getDate(),month:et(g.getMonth(),s||"long"),year:g.getFullYear()}});return {today:n,daysCount:p,month:h,day:b,days:w,next:u,prev:f}},Ot=Ft;var Nt=(e,o)=>{let s=react.useRef(null);return react.useCallback((...r)=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{e(...r);},o);},[e,o])},Wt=Nt;var yt=(e=100)=>{let[o,s]=react.useState(false);return react.useEffect(()=>{let n=setTimeout(()=>s(true),e);return ()=>clearTimeout(n)},[e]),o},nt=yt;var Xt=e=>{let[o,s]=react.useState({width:0,height:0,top:0,left:0,bottom:0,right:0,x:0,y:0}),n=()=>{if(e){let{width:r,height:u,top:f,left:p,bottom:h,right:b,x:w,y:m}=e.getBoundingClientRect();s({width:r,height:u,top:f,left:p,bottom:h,right:b,x:w,y:m});}else s({width:window.innerWidth,height:window.innerHeight,top:0,left:0,bottom:0,right:0,x:0,y:0});};return react.useEffect(()=>(n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)),[]),o},Z=Xt;var zt=()=>{let e=navigator.userAgent,o=/Mobi|Android/i.test(e),s=/Tablet|iPad/i.test(e),n=Z();return react.useEffect(()=>{},[]),{isMobile:o,isTablet:s,isDesktop:!o&&!s,...n}},Qt=zt;var jt=(e,o=false)=>(react.useEffect(()=>{if(e){if(!window.fbq){let u=document.createElement("script");u.async=true,u.src="https://connect.facebook.net/en_US/fbevents.js",document.head.appendChild(u),window._fbq=window._fbq||[],window.fbq=function(){window._fbq.push(arguments);},window.fbq("init",e),o&&window.fbq("set","debug",true);}window.fbq("track","PageView");}},[e,o]),{trackPageView:()=>{e&&window.fbq("track","PageView");},trackEvent:(u,f)=>{e&&window.fbq("track",u,f);},trackCustom:(u,f)=>{e&&window.fbq("trackCustom",u,f);}}),_t=jt;var Gt=e=>(react.useEffect(()=>{if(e){if(!window.gtag){let n=document.createElement("script");n.async=true,n.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(n),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments);},window.gtag("js",new Date);}window.gtag("config",e);}},[e]),{trackPageView:n=>{e&&window.gtag("config",e,{page_path:n||window.location.pathname});},trackEvent:(n,r)=>{e&&window.gtag("event",n,r);}}),Zt=Gt;var ee=(e,o,s)=>{let[n,r]=react.useState({loaded:false,error:null}),u=react.useRef(null);return react.useEffect(()=>{if(e&&e!==""){var f=new Image;o&&(f.crossOrigin=o),s&&(f.referrerPolicy=s),f.onload=()=>{u.current=f,r({loaded:true,error:null});},f.onerror=()=>{r({loaded:false,error:`Failed to load image at ${e}`});},f.src=e;}},[e]),[u.current?u.current.src:"",n.loaded,n.error]},ne=ee;var re=(e,o,s="circle",n=1)=>{let[r,u]=react.useState(false),[f,p]=react.useState({x:0,y:0}),[h,b]=react.useState(n),w=react.useRef(null),m=react.useRef(null),v=()=>{let c=m.current,i=c?.getContext("2d"),a=w.current;!c||!i||!a||(c.width=o,c.height=o,i.clearRect(0,0,o,o),i.globalAlpha=.5,i.drawImage(a,f.x,f.y,a.width*h,a.height*h),i.globalAlpha=1,i.save(),s==="circle"&&(i.beginPath(),i.arc(o/2,o/2,o/2,0,Math.PI*2),i.closePath(),i.clip()),i.drawImage(a,f.x,f.y,a.width*h,a.height*h),i.restore());};return react.useEffect(v,[h]),react.useEffect(()=>{if(e){let c=new Image;c.onload=()=>{w.current=c,v();},c.src=e;}},[e,f]),{canvasRef:m,crop:()=>{let c=m.current;return c?c.toDataURL("image/png"):null},setScale:b,handleMouseDown:()=>u(true),handleMouseUp:()=>u(false),handleMouseMove:c=>{!r||!w.current||p(i=>({x:i.x+c.movementX,y:i.y+c.movementY}));}}},se=re;var ae=(e,o={})=>{let[s,n]=react.useState(e&&e.length>0?new Array(e.length).fill(0):[]);return react.useEffect(()=>{if(!e||!e.length)return;let r=new IntersectionObserver(u=>{requestAnimationFrame(()=>{n(f=>{let p=[...f],h=false;return u.forEach(b=>{let w=e.findIndex(m=>m.current===b.target);w!==-1&&p[w]!==b.intersectionRatio&&(p[w]=b.intersectionRatio,h=true);}),h?p:f});});},{rootMargin:"200px",threshold:[1],...o});return e.forEach(u=>{u.current&&r.observe(u.current);}),()=>{e.forEach(u=>{u.current&&r.unobserve(u.current);});}},[e,o]),s},ce=ae;var it=(e,o,s,n=20)=>{if(!e||e.length===0||o<=0||s<=0)return "";let r=Math.min(...e.map(g=>g.x)),u=Math.max(...e.map(g=>g.x)),f=Math.min(...e.map(g=>g.y)),p=Math.max(...e.map(g=>g.y)),h=(o-2*n)/(u-r),b=(s-2*n)/(p-f),w=g=>{let S=(g.x-r)*h+n,x=s-((g.y-f)*b+n);return {x:S,y:x}},m=e.map(w),v="";if(m.length>0){v=`M ${m[0].x},${m[0].y}`;for(let g=0;g<m.length-1;g++){let S=m[g],x=m[g+1],l={x:(S.x+x.x)/2,y:S.y},c={x:(S.x+x.x)/2,y:x.y};v+=` C ${l.x},${l.y} ${c.x},${c.y} ${x.x},${x.y}`;}}return v},le=(e,o,s,n=20)=>{if(!e||e.length===0)return "";let r=it(e,o,s,n),u=Math.min(...e.map(m=>m.x)),f=Math.max(...e.map(m=>m.x)),p=(o-2*n)/(f-u),h=(e[0].x-u)*p+n,b=(e[e.length-1].x-u)*p+n,w=s-n;return `${r} L ${b},${w} L ${h},${w} Z`},me=(e,o={width:600,height:300},s=20)=>{let[n,r]=react.useState(""),[u,f]=react.useState("");return react.useEffect(()=>{let p=it(e,o.width,o.height,s);r(p);let h=le(e,o.width,o.height,s);f(h);},[e,o.width,o.height,s]),{pathD:n,areaPathD:u}},fe=me;var de=(e,o,s={childList:true,subtree:true})=>{let n=react.useRef(null);react.useEffect(()=>{if(e)return n.current=new MutationObserver(o),n.current.observe(e,s),()=>{n.current&&n.current.disconnect();}},[e,o,s]);},K=de;var we=()=>{let[e,o]=react.useState(null),s=()=>{o(navigator.onLine);};return react.useEffect(()=>(setTimeout(()=>o(navigator.onLine)),window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s);}),[]),e},xe=we;var Se=(e=15)=>{if(e<=0)throw new Error("intervalMinutes must be greater than 0");let o=b=>{let w=new Date(b),m=w.getMinutes(),v=m%e;return v===0?w.setMinutes(m+e):w.setMinutes(m+(e-v)),w.setSeconds(0),w.setMilliseconds(0),w},[s,n]=react.useState(()=>o(new Date));react.useEffect(()=>{let b=()=>{let v=o(new Date);v.getTime()!==s.getTime()&&n(v);};b();let w=setInterval(b,1e3);return ()=>clearInterval(w)},[e,s]);let r=new Date,u=Math.max(0,s.getTime()-r.getTime()),f=Math.floor(u/6e4),p=Math.floor(u%6e4/1e3),h=`${f}m ${p.toString().padStart(2,"0")}s`;return {minutes:f,seconds:p,formatted:h,nextBoundary:s}},Ee=Se;var Pe=e=>{let{vapidPublicKey:o,serviceWorkerPath:s="/sw.js",requestPermissionOnMount:n=false}=e,[r,u]=react.useState("default"),[f,p]=react.useState(null),[h,b]=react.useState(null),[w,m]=react.useState(null),[v,g]=react.useState(false),[S,x]=react.useState(null),[l,c]=react.useState(false),i=react.useCallback(async()=>{if(!l)return null;try{let d=await navigator.serviceWorker.register(s,{scope:"/",updateViaCache:"all"});return x(d),d}catch(d){return console.error("Service Worker registration failed:",d),m("Failed to register service worker"),null}},[s,l]),a=react.useCallback(async d=>{try{let P=await d.pushManager.getSubscription();return p(P),b(P?P.toJSON():null),P}catch(P){return console.error("Failed to get subscription:",P),m("Failed to get subscription"),null}},[]),M=react.useCallback(async()=>{if(!l||!S)return m("Push not supported or service worker not registered"),null;g(true),m(null);try{let d=await Notification.requestPermission();if(u(d),d!=="granted")return m("Permission not granted for notifications"),g(!1),null;let P=core.urlBase64ToUint8Array(o),D=await S.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:P});return p(D),b(D.toJSON()),g(!1),D}catch(d){return console.error("Subscription failed:",d),m(d.message||"Failed to subscribe"),g(false),null}},[l,S,o]),E=react.useCallback(async()=>{if(!f)return true;try{let d=await f.unsubscribe();return d&&(p(null),b(null)),d}catch(d){return console.error("Failed to unsubscribe:",d),false}},[f]),T=react.useCallback(async()=>{let d=await Notification.requestPermission();return u(d),d},[]);return react.useEffect(()=>{let d="PushManager"in window&&"serviceWorker"in navigator;if(c(d),!d){m("Push notifications not supported in this browser");return}let P=true;return (async()=>{let k=await i();!k||!P||(u(Notification.permission),await a(k),n&&Notification.permission==="default"&&await T());})(),()=>{P=false;}},[l,i,a,n,T]),react.useEffect(()=>{if(!("permissions"in navigator))return;let d=false;(async()=>{if(d)return;let D=await navigator.permissions.query({name:"notifications"});D.onchange=()=>{u(Notification.permission),Notification.permission==="denied"&&(d=true,E());};})();},[E]),{permission:r,subscription:f,subscriptionMeta:h,isSupported:l,subscribe:M,unsubscribe:E,requestPermission:T,error:w,isLoading:v}},Te=Pe;var Re=e=>{let[o,s]=react.useState({width:0,height:0,top:0,left:0});return react.useEffect(()=>{let n=e instanceof HTMLElement?e:e.current,r=f=>{for(let p of f){let{width:h,height:b,top:w,left:m}=p.contentRect;s({width:h,height:b,top:w,left:m});}},u=new ResizeObserver(r);return n&&u.observe(n),()=>{n&&u.unobserve(n);}},[e]),o},Ie=Re;var qe=(e,o={})=>{let s=react.useRef(null),n=react.useRef(null),r=react.useRef(null),u=react.useRef(null),f=react.useMemo(()=>e??1,[e]),p=react.useRef(false),h=react.useRef(false),b=react.useRef(0),w=react.useRef(0),m=react.useRef(0),v=react.useRef(0),g=react.useRef(null),S=react.useCallback(()=>{if(!n.current||!r.current||!u.current)return;let{clientHeight:D,scrollHeight:k,scrollTop:F,clientWidth:R,scrollWidth:W,scrollLeft:O}=n.current,N=Math.max(D/k*D,30),A=D-N,I=F/(k-D)*A;r.current.style.height=`${N}px`,r.current.style.transform=`translateY(${I}px)`,r.current.style.willChange="transform, height";let Y=Math.max(R/W*R,30),z=R-Y,ft=O/(W-R)*z;u.current.style.width=`${Y}px`,u.current.style.transform=`translateX(${ft}px)`,u.current.style.willChange="transform, width",k<=D&&s.current?s.current.classList.add("--no-y"):s.current&&s.current.classList.remove("--no-y"),W<=R&&s.current?s.current.classList.add("--no-x"):s.current&&s.current.classList.remove("--no-x");},[]),x=react.useCallback(()=>{g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(S(),n.current){let{scrollTop:D,scrollHeight:k,clientHeight:F,scrollLeft:R,scrollWidth:W,clientWidth:O}=n.current,B=D/(k-F)*100,N=R/(W-O)*100;Object.keys(o).forEach(A=>{let I=parseFloat(A);Math.abs(B-I)<1&&o[I]?.(),Math.abs(N-I)<1&&o[I]?.();});}});},[S,o]),l=react.useCallback(()=>{n.current&&x();},[x]),c=D=>{p.current=true,w.current=D.clientY,m.current=n.current?.scrollTop||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},i=D=>{h.current=true,b.current=D.clientX,v.current=n.current?.scrollLeft||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},a=react.useCallback(D=>{if(!n.current||!p.current&&!h.current)return;let{clientHeight:k,scrollHeight:F,clientWidth:R,scrollWidth:W}=n.current;if(p.current){let O=F-k,B=r.current?.clientHeight||30,N=k-B,A=D.clientY-w.current,I=Math.min(Math.max(m.current+A/N*O,0),O);n.current.scrollTop=I;}if(h.current){let O=W-R,B=u.current?.clientWidth||30,N=R-B,A=D.clientX-b.current,I=Math.min(Math.max(v.current+A/N*O,0),O);n.current.scrollLeft=I;}},[]),M=()=>{p.current=false,h.current=false,document.body.style.userSelect="",s.current&&s.current?.classList.remove("--scrolling"),g.current&&cancelAnimationFrame(g.current);},E=()=>n.current?.scrollTo({top:0,behavior:"smooth"}),T=()=>n.current?.scrollTo({top:n.current.scrollHeight,behavior:"smooth"}),d=()=>n.current?.scrollTo({left:0,behavior:"smooth"}),P=()=>n.current?.scrollTo({left:n.current.scrollWidth,behavior:"smooth"});return react.useEffect(()=>{let D=n.current;if(!D)return;let k=F=>{if(!n.current)return;let{scrollTop:R,scrollHeight:W,clientHeight:O,scrollLeft:B,scrollWidth:N,clientWidth:A}=n.current,I=R,X=B,Y=false;if(Math.abs(F.deltaY)>Math.abs(F.deltaX)){let z=W-O;I=R+F.deltaY*f,I=Math.max(0,Math.min(I,z)),I!==R&&(n.current.scrollTop=I,Y=true);}else {let z=N-A;X=B+F.deltaX*f,X=Math.max(0,Math.min(X,z)),X!==B&&(n.current.scrollLeft=X,Y=true);}Y&&x();};return window.addEventListener("resize",x),D.addEventListener("scroll",l,{passive:true}),D.addEventListener("wheel",k,{passive:true}),document.addEventListener("mousemove",a),document.addEventListener("mouseup",M),x(),()=>{window.removeEventListener("resize",x),D.removeEventListener("scroll",l),D.removeEventListener("wheel",k),document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",M),g.current&&cancelAnimationFrame(g.current);}},[l,a,x,f]),K(n.current,x),{rootRef:s,containerRef:n,thumbY:r,thumbX:u,scrollToTop:E,scrollToBottom:T,scrollToLeft:d,scrollToRight:P,onScrollY:c,onScrollX:i}},Be=qe;var Ae=(e,o)=>{let{lerpFactor:s=.1,x:n,y:r,xMultiplier:u=.25,yMultiplier:f=.25,scale:p,rotate:h}=o,b=react.useRef(0),w=react.useRef(0),m=react.useRef(0),v=react.useRef(0),g=react.useRef(performance.now()),S=react.useRef(null),x=react.useRef(false),l=react.useRef(0),c=.2;return react.useEffect(()=>{if(typeof window>"u")return;let i=()=>{let M=performance.now(),E=(M-g.current)/1e3;g.current=M;let T=v.current-m.current,d=T/E;if(m.current+=T*s,b.current=m.current,w.current=d,l.current+=(d-l.current)*s,e.current){let P=n?b.current*n*u:0,D=r?b.current*r*f:0,k=p?core.clamp(p.max-Math.abs(l.current)*p.factor,p.min,p.max):1,F=h?w.current*(h.multiplier??1)*(h.direction??1):0;e.current.style.transform=`
|
|
5
|
-
translate3d(${
|
|
6
|
-
scale(${
|
|
2
|
+
var J=(s=>(s.Circle="circle",s.Square="square",s))(J||{}),V={TopLeft:"top left",TopRight:"top right",TopCenter:"top center",BottomLeft:"bottom left",BottomRight:"bottom right"},dt=V,G=(t=>(t[t.Backspace=8]="Backspace",t[t.Tab=9]="Tab",t[t.Enter=13]="Enter",t[t.Shift=16]="Shift",t[t.Ctrl=17]="Ctrl",t[t.Alt=18]="Alt",t[t.PauseBreak=19]="PauseBreak",t[t.Command=19]="Command",t[t.CapsLock=20]="CapsLock",t[t.Escape=27]="Escape",t[t.Space=32]="Space",t[t.PageUp=33]="PageUp",t[t.PageDown=34]="PageDown",t[t.End=35]="End",t[t.Home=36]="Home",t[t.ArrowLeft=37]="ArrowLeft",t[t.ArrowUp=38]="ArrowUp",t[t.ArrowRight=39]="ArrowRight",t[t.ArrowDown=40]="ArrowDown",t[t.Insert=45]="Insert",t[t.Delete=46]="Delete",t[t.Digit0=48]="Digit0",t[t.Digit1=49]="Digit1",t[t.Digit2=50]="Digit2",t[t.Digit3=51]="Digit3",t[t.Digit4=52]="Digit4",t[t.Digit5=53]="Digit5",t[t.Digit6=54]="Digit6",t[t.Digit7=55]="Digit7",t[t.Digit8=56]="Digit8",t[t.Digit9=57]="Digit9",t[t.KeyA=65]="KeyA",t[t.KeyB=66]="KeyB",t[t.KeyC=67]="KeyC",t[t.KeyD=68]="KeyD",t[t.KeyE=69]="KeyE",t[t.KeyF=70]="KeyF",t[t.KeyG=71]="KeyG",t[t.KeyH=72]="KeyH",t[t.KeyI=73]="KeyI",t[t.KeyJ=74]="KeyJ",t[t.KeyK=75]="KeyK",t[t.KeyL=76]="KeyL",t[t.KeyM=77]="KeyM",t[t.KeyN=78]="KeyN",t[t.KeyO=79]="KeyO",t[t.KeyP=80]="KeyP",t[t.KeyQ=81]="KeyQ",t[t.KeyR=82]="KeyR",t[t.KeyS=83]="KeyS",t[t.KeyT=84]="KeyT",t[t.KeyU=85]="KeyU",t[t.KeyV=86]="KeyV",t[t.KeyW=87]="KeyW",t[t.KeyX=88]="KeyX",t[t.KeyY=89]="KeyY",t[t.KeyZ=90]="KeyZ",t[t.Numpad0=96]="Numpad0",t[t.Numpad1=97]="Numpad1",t[t.Numpad2=98]="Numpad2",t[t.Numpad3=99]="Numpad3",t[t.Numpad4=100]="Numpad4",t[t.Numpad5=101]="Numpad5",t[t.Numpad6=102]="Numpad6",t[t.Numpad7=103]="Numpad7",t[t.Numpad8=104]="Numpad8",t[t.Numpad9=105]="Numpad9",t[t.NumpadMultiply=106]="NumpadMultiply",t[t.NumpadAdd=107]="NumpadAdd",t[t.NumpadSubtract=109]="NumpadSubtract",t[t.NumpadDecimal=110]="NumpadDecimal",t[t.NumpadDivide=111]="NumpadDivide",t[t.F1=112]="F1",t[t.F2=113]="F2",t[t.F3=114]="F3",t[t.F4=115]="F4",t[t.F5=116]="F5",t[t.F6=117]="F6",t[t.F7=118]="F7",t[t.F8=119]="F8",t[t.F9=120]="F9",t[t.F10=121]="F10",t[t.F11=122]="F11",t[t.F12=123]="F12",t[t.NumLock=144]="NumLock",t[t.ScrollLock=145]="ScrollLock",t[t.Semicolon=186]="Semicolon",t[t.Equal=187]="Equal",t[t.Comma=188]="Comma",t[t.Minus=189]="Minus",t[t.Period=190]="Period",t[t.Slash=191]="Slash",t[t.Backquote=192]="Backquote",t[t.BracketLeft=219]="BracketLeft",t[t.Backslash=220]="Backslash",t[t.BracketRight=221]="BracketRight",t[t.Quote=222]="Quote",t))(G||{});var wt=({command:e="/",commands:o=[],cmd:s,ref:n})=>{let[r,u]=react.useState(-1),[p,m]=react.useState(false),[b,x]=react.useState({top:0,left:0}),w=react.useRef(null),f=d=>{let l=n.current;if(l&&p){let{value:a}=l;(r<0||r>=a.length||a[r]!==e)&&m(false);}},v=d=>{let l=n.current;if(!l)return;let{selectionStart:a}=l;if(d.key===e){u(a||-1);let i=M(l,a||-1);x({top:i.top+20,left:i.left}),m(true);}else d.key==="Escape"&&(d.preventDefault(),d.stopPropagation(),m(false));},g=d=>{let l=n.current;if(l){if(s)s(d,l);else {let{value:a,selectionStart:i}=l,c=a.slice(0,r)+d+a.slice(i||-1);l.value=c,l.setSelectionRange(r+d.length,r+d.length);let S=new Event("input",{bubbles:true});l.dispatchEvent(S);}m(false),l.focus();}},M=(d,l)=>{let a=document.createElement("canvas"),i=a.getContext("2d");if(!i)return {top:0,left:0};let c=window.getComputedStyle(d);i.font=`${c.fontSize} ${c.fontFamily}`;let E=d.value.substring(0,l).split(`
|
|
3
|
+
`),P=E[E.length-1],h=i.measureText(P).width,T=parseFloat(c.lineHeight)||parseFloat(c.fontSize)*1.2,D=(E.length-1)*T,R=parseFloat(c.paddingTop)||0,F=parseFloat(c.paddingLeft)||0,k=d.scrollTop;return a.remove(),{top:D-k+R,left:h+F}};return react.useEffect(()=>{let d=l=>{n.current&&w.current&&!n.current.contains(l.target)&&!w.current.contains(l.target)&&m(false);};return document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d);}},[n]),{showDropdown:p,dropdownPosition:b,handleKeyDown:v,handleInput:f,handleCommandSelect:g,parentRef:w}},xt=wt;var Et=e=>{let{name:o,version:s,meta:n}=e,r=react.useRef(null),[u,p]=react.useState(null);react.useEffect(()=>{let l=indexedDB.open(o,+s.toString().replace(/\./g,""));return l.onupgradeneeded=a=>{let i=a.target.result;n.forEach(c=>{if(!i.objectStoreNames.contains(c.name)){let S=i.createObjectStore(c.name,c.config);c.schema.forEach(E=>{S.createIndex(E.name,E.key||E.name,{unique:E.unique||false});});}});},l.onsuccess=a=>{r.current=a.target.result;},l.onerror=()=>{p("Failed to open database");},()=>r.current?.close()},[o,s]);let m=()=>new Promise((l,a)=>{r.current&&l(r.current);let i=indexedDB.open(o,+s.toString().replace(/\./g,""));i.onsuccess=c=>{r.current=c.target.result,l(r.current);},i.onerror=c=>{a(["Failed to open database",c].join(`
|
|
4
|
+
`));};}),b=(l,a)=>({store:r.current.transaction(l,a).objectStore(l)});return {getAll:l=>new Promise((a,i)=>{m().then(c=>{let{store:S}=b(l,"readonly"),E=S.getAll();E.onsuccess=P=>{P.target.result==null&&i("Record not found"),a(P.target.result);},E.onerror=P=>{i(`SELECT Failed. ${P.target.result}`);};}).catch(c=>{console.log("[getAll]",c),i("Database either corrupted or not initialized");});}),getByID:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readonly"),P=E.get(a);P.onsuccess=h=>{h.target.result==null&&c("Record not found"),i(h.target.result);},P.onerror=h=>{c(`SELECT Failed. ${h.target.result}`);};}).catch(S=>{console.log("[getByID]",S),c("Database either corrupted or not initialized");});}),getStore:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readonly"),P=E.getAll();P.onsuccess=h=>{h.target.result==null&&c("Record not found"),i(h.target.result);},P.onerror=h=>{c(`SELECT Failed. ${h.target.result}`);};}).catch(S=>{c(S.message||"Database either corrupted or not initialized");});}),insert:(l,a,i)=>new Promise((c,S)=>{m().then(E=>{let{store:P}=b(l,"readwrite"),h=P.add(a,i);h.onsuccess=T=>{c(T.target.result);},h.onerror=T=>{S(`INSERTION Failed. ${T.target.result}`);};}).catch(E=>{S(E.message||"Database either corrupted or not initialized");});}),update:(l,a)=>new Promise((i,c)=>{m().then(S=>{let {store:E}=b(l,"readwrite"),h=E.put(a);h.onsuccess=T=>{i();},h.onerror=T=>{c(`UPDATE Failed. ${T.target.result}`);};}).catch(S=>{c(`UPDATE Failed. ${S}`);});}),update_one:(l,a,i)=>new Promise((c,S)=>{m().then(E=>{let{store:P}=b(l,"readwrite"),h=P.get(i);h.onsuccess=()=>{let T=h.result;if(!T){S(`Record with key ${i} not found.`);return}let D=P.put({...T,...a});D.onsuccess=()=>c(),D.onerror=R=>S(`Update failed. ${R.target.error}`);},h.onerror=T=>{S(`Failed to get existing record. ${T.target.error}`);};}).catch(E=>{S("Database either corrupted or not initialized");});}),remove:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readwrite"),P=E.delete(a);P.onsuccess=h=>{i();};}).catch(S=>{console.log(S),c(`Delete failed from ${l} with key: ${a}`);});}),error:u}},Dt=Et;var Rt=(e,o,s={})=>{let[n,r]=react.useState({top:0,left:0}),[u,p]=react.useState(s.preferredAnchor||V.TopLeft),{offsetX:m=0,offsetY:b=0,overflow:x=true}=s,w=react.useRef(null),f=react.useCallback(()=>{let v=0,g=0,M=s.preferredAnchor||V.TopLeft;if(o)v=o.clientY+b,g=o.clientX+m;else if(e){let d=e.getBoundingClientRect();v=d.bottom+b,g=d.left+m;}if(x&&w.current){let d=w.current.offsetWidth,l=w.current.offsetHeight,{innerWidth:a,innerHeight:i}=window;g+d>a&&(g=o?o.clientX-d-m:(e?.getBoundingClientRect().right||0)-d,M=M.includes("Right")?M:V.TopRight),v+l>i&&(v=o?o.clientY-l-b:(e?.getBoundingClientRect().top||0)-l-b);}r({top:v,left:g}),p(M);},[o,e,m,b,x,s.preferredAnchor]);return react.useEffect(()=>{let v=setTimeout(f,0);return window.addEventListener("resize",f),()=>{clearTimeout(v),window.removeEventListener("resize",f);}},[f]),{position:n,targetRef:w,calculatedAnchor:u}},kt=Rt;var Ft=e=>e%4===0&&e%100!==0||e%400===0,Ot=(e,o)=>{switch(e){case 1:return Ft(o)?29:28;case 3:case 5:case 8:case 10:return 30;default:return 31}},nt=(e,o)=>e.toLocaleString("default",{weekday:o}),rt=(e,o)=>{let s=new Date;return s.setMonth(e),s.toLocaleString("default",{month:o})},qt=(e=1,o,s)=>{let[n,r]=react.useState(new Date),u=()=>{r(f=>{let v=new Date(f);return v.setMonth(f.getMonth()+e),v});},p=()=>{r(f=>{let v=new Date(f);return v.setMonth(v.getMonth()-e),v});},m=Ot(n.getMonth(),n.getFullYear()),b=rt(n.getMonth(),s||"long"),x=nt(n,o||"short"),w=Array.from({length:m},(f,v)=>{let g=new Date(n.getFullYear(),n.getMonth(),v+1);return {day:nt(g,o||"short"),date:g.getDate(),month:rt(g.getMonth(),s||"long"),year:g.getFullYear()}});return {today:n,daysCount:m,month:b,day:x,days:w,next:u,prev:p}},At=qt;var yt=(e,o)=>{let s=react.useRef(null);return react.useCallback((...r)=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{e(...r);},o);},[e,o])},Ht=yt;var Ut=(e=100)=>{let[o,s]=react.useState(false);return react.useEffect(()=>{let n=setTimeout(()=>s(true),e);return ()=>clearTimeout(n)},[e]),o},st=Ut;var zt=e=>{let[o,s]=react.useState({width:0,height:0,top:0,left:0,bottom:0,right:0,x:0,y:0}),n=()=>{if(e){let{width:r,height:u,top:p,left:m,bottom:b,right:x,x:w,y:f}=e.getBoundingClientRect();s({width:r,height:u,top:p,left:m,bottom:b,right:x,x:w,y:f});}else s({width:window.innerWidth,height:window.innerHeight,top:0,left:0,bottom:0,right:0,x:0,y:0});};return react.useEffect(()=>(n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)),[]),o},C=zt;var Qt=()=>{let e=navigator.userAgent,o=/Mobi|Android/i.test(e),s=/Tablet|iPad/i.test(e),n=C();return react.useEffect(()=>{},[]),{isMobile:o,isTablet:s,isDesktop:!o&&!s,...n}},jt=Qt;var Jt=(e,o=false)=>(react.useEffect(()=>{if(e){if(!window.fbq){let u=document.createElement("script");u.async=true,u.src="https://connect.facebook.net/en_US/fbevents.js",document.head.appendChild(u),window._fbq=window._fbq||[],window.fbq=function(){window._fbq.push(arguments);},window.fbq("init",e),o&&window.fbq("set","debug",true);}window.fbq("track","PageView");}},[e,o]),{trackPageView:()=>{e&&window.fbq("track","PageView");},trackEvent:(u,p)=>{e&&window.fbq("track",u,p);},trackCustom:(u,p)=>{e&&window.fbq("trackCustom",u,p);}}),Gt=Jt;var Ct=e=>(react.useEffect(()=>{if(e){if(!window.gtag){let n=document.createElement("script");n.async=true,n.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(n),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments);},window.gtag("js",new Date);}window.gtag("config",e);}},[e]),{trackPageView:n=>{e&&window.gtag("config",e,{page_path:n||window.location.pathname});},trackEvent:(n,r)=>{e&&window.gtag("event",n,r);}}),Kt=Ct;var re=(e,o,s)=>{let[n,r]=react.useState({loaded:false,error:null}),u=react.useRef(null);return react.useEffect(()=>{if(e&&e!==""){var p=new Image;o&&(p.crossOrigin=o),s&&(p.referrerPolicy=s),p.onload=()=>{u.current=p,r({loaded:true,error:null});},p.onerror=()=>{r({loaded:false,error:`Failed to load image at ${e}`});},p.src=e;}},[e]),[u.current?u.current.src:"",n.loaded,n.error]},se=re;var oe=(e,o,s="circle",n=1)=>{let[r,u]=react.useState(false),[p,m]=react.useState({x:0,y:0}),[b,x]=react.useState(n),w=react.useRef(null),f=react.useRef(null),v=()=>{let a=f.current,i=a?.getContext("2d"),c=w.current;!a||!i||!c||(a.width=o,a.height=o,i.clearRect(0,0,o,o),i.globalAlpha=.5,i.drawImage(c,p.x,p.y,c.width*b,c.height*b),i.globalAlpha=1,i.save(),s==="circle"&&(i.beginPath(),i.arc(o/2,o/2,o/2,0,Math.PI*2),i.closePath(),i.clip()),i.drawImage(c,p.x,p.y,c.width*b,c.height*b),i.restore());};return react.useEffect(v,[b]),react.useEffect(()=>{if(e){let a=new Image;a.onload=()=>{w.current=a,v();},a.src=e;}},[e,p]),{canvasRef:f,crop:()=>{let a=f.current;return a?a.toDataURL("image/png"):null},setScale:x,handleMouseDown:()=>u(true),handleMouseUp:()=>u(false),handleMouseMove:a=>{!r||!w.current||m(i=>({x:i.x+a.movementX,y:i.y+a.movementY}));}}},ie=oe;var ue=(e,o={})=>{let[s,n]=react.useState(e&&e.length>0?new Array(e.length).fill(0):[]);return react.useEffect(()=>{if(!e||!e.length)return;let r=new IntersectionObserver(u=>{requestAnimationFrame(()=>{n(p=>{let m=[...p],b=false;return u.forEach(x=>{let w=e.findIndex(f=>f.current===x.target);w!==-1&&m[w]!==x.intersectionRatio&&(m[w]=x.intersectionRatio,b=true);}),b?m:p});});},{rootMargin:"200px",threshold:[1],...o});return e.forEach(u=>{u.current&&r.observe(u.current);}),()=>{e.forEach(u=>{u.current&&r.unobserve(u.current);});}},[e,o]),s},le=ue;var ct=(e,o,s,n=20)=>{if(!e||e.length===0||o<=0||s<=0)return "";let r=Math.min(...e.map(g=>g.x)),u=Math.max(...e.map(g=>g.x)),p=Math.min(...e.map(g=>g.y)),m=Math.max(...e.map(g=>g.y)),b=(o-2*n)/(u-r),x=(s-2*n)/(m-p),w=g=>{let M=(g.x-r)*b+n,d=s-((g.y-p)*x+n);return {x:M,y:d}},f=e.map(w),v="";if(f.length>0){v=`M ${f[0].x},${f[0].y}`;for(let g=0;g<f.length-1;g++){let M=f[g],d=f[g+1],l={x:(M.x+d.x)/2,y:M.y},a={x:(M.x+d.x)/2,y:d.y};v+=` C ${l.x},${l.y} ${a.x},${a.y} ${d.x},${d.y}`;}}return v},fe=(e,o,s,n=20)=>{if(!e||e.length===0)return "";let r=ct(e,o,s,n),u=Math.min(...e.map(f=>f.x)),p=Math.max(...e.map(f=>f.x)),m=(o-2*n)/(p-u),b=(e[0].x-u)*m+n,x=(e[e.length-1].x-u)*m+n,w=s-n;return `${r} L ${x},${w} L ${b},${w} Z`},pe=(e,o={width:600,height:300},s=20)=>{let[n,r]=react.useState(""),[u,p]=react.useState("");return react.useEffect(()=>{let m=ct(e,o.width,o.height,s);r(m);let b=fe(e,o.width,o.height,s);p(b);},[e,o.width,o.height,s]),{pathD:n,areaPathD:u}},ge=pe;var be=(e,o)=>{let[s,n]=react.useState(null);return react.useLayoutEffect(()=>{if(o&&e.current){let r=e.current.getBoundingClientRect();n({width:r.width,height:r.height,top:r.top,left:r.left});}},[o,e]),{sourceRect:s,isMeasured:!!s}},we=be;var Me=(e,o,s={childList:true,subtree:true})=>{let n=react.useRef(null);react.useEffect(()=>{if(e)return n.current=new MutationObserver(o),n.current.observe(e,s),()=>{n.current&&n.current.disconnect();}},[e,o,s]);},tt=Me;var De=()=>{let[e,o]=react.useState(null),s=()=>{o(navigator.onLine);};return react.useEffect(()=>(setTimeout(()=>o(navigator.onLine)),window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s);}),[]),e},Te=De;var Re=(e=15)=>{if(e<=0)throw new Error("intervalMinutes must be greater than 0");let o=x=>{let w=new Date(x),f=w.getMinutes(),v=f%e;return v===0?w.setMinutes(f+e):w.setMinutes(f+(e-v)),w.setSeconds(0),w.setMilliseconds(0),w},[s,n]=react.useState(()=>o(new Date));react.useEffect(()=>{let x=()=>{let v=o(new Date);v.getTime()!==s.getTime()&&n(v);};x();let w=setInterval(x,1e3);return ()=>clearInterval(w)},[e,s]);let r=new Date,u=Math.max(0,s.getTime()-r.getTime()),p=Math.floor(u/6e4),m=Math.floor(u%6e4/1e3),b=`${p}m ${m.toString().padStart(2,"0")}s`;return {minutes:p,seconds:m,formatted:b,nextBoundary:s}},ke=Re;var Fe=e=>{let{vapidPublicKey:o,serviceWorkerPath:s="/sw.js",requestPermissionOnMount:n=false}=e,[r,u]=react.useState("default"),[p,m]=react.useState(null),[b,x]=react.useState(null),[w,f]=react.useState(null),[v,g]=react.useState(false),[M,d]=react.useState(null),[l,a]=react.useState(false),i=react.useCallback(async()=>{if(!l)return null;try{let h=await navigator.serviceWorker.register(s,{scope:"/",updateViaCache:"all"});return d(h),h}catch(h){return console.error("Service Worker registration failed:",h),f("Failed to register service worker"),null}},[s,l]),c=react.useCallback(async h=>{try{let T=await h.pushManager.getSubscription();return m(T),x(T?T.toJSON():null),T}catch(T){return console.error("Failed to get subscription:",T),f("Failed to get subscription"),null}},[]),S=react.useCallback(async()=>{if(!l||!M)return f("Push not supported or service worker not registered"),null;g(true),f(null);try{let h=await Notification.requestPermission();if(u(h),h!=="granted")return f("Permission not granted for notifications"),g(!1),null;let T=core.urlBase64ToUint8Array(o),D=await M.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:T});return m(D),x(D.toJSON()),g(!1),D}catch(h){return console.error("Subscription failed:",h),f(h.message||"Failed to subscribe"),g(false),null}},[l,M,o]),E=react.useCallback(async()=>{if(!p)return true;try{let h=await p.unsubscribe();return h&&(m(null),x(null)),h}catch(h){return console.error("Failed to unsubscribe:",h),false}},[p]),P=react.useCallback(async()=>{let h=await Notification.requestPermission();return u(h),h},[]);return react.useEffect(()=>{let h="PushManager"in window&&"serviceWorker"in navigator;if(a(h),!h){f("Push notifications not supported in this browser");return}let T=true;return (async()=>{let R=await i();!R||!T||(u(Notification.permission),await c(R),n&&Notification.permission==="default"&&await P());})(),()=>{T=false;}},[l,i,c,n,P]),react.useEffect(()=>{if(!("permissions"in navigator))return;let h=false;(async()=>{if(h)return;let D=await navigator.permissions.query({name:"notifications"});D.onchange=()=>{u(Notification.permission),Notification.permission==="denied"&&(h=true,E());};})();},[E]),{permission:r,subscription:p,subscriptionMeta:b,isSupported:l,subscribe:S,unsubscribe:E,requestPermission:P,error:w,isLoading:v}},Oe=Fe;var Be=e=>{let[o,s]=react.useState({width:0,height:0,top:0,left:0});return react.useEffect(()=>{let n=e instanceof HTMLElement?e:e.current,r=p=>{for(let m of p){let{width:b,height:x,top:w,left:f}=m.contentRect;s({width:b,height:x,top:w,left:f});}},u=new ResizeObserver(r);return n&&u.observe(n),()=>{n&&u.unobserve(n);}},[e]),o},Ne=Be;var We=(e,o={})=>{let s=react.useRef(null),n=react.useRef(null),r=react.useRef(null),u=react.useRef(null),p=react.useMemo(()=>e??1,[e]),m=react.useRef(false),b=react.useRef(false),x=react.useRef(0),w=react.useRef(0),f=react.useRef(0),v=react.useRef(0),g=react.useRef(null),M=react.useCallback(()=>{if(!n.current||!r.current||!u.current)return;let{clientHeight:D,scrollHeight:R,scrollTop:F,clientWidth:k,scrollWidth:N,scrollLeft:O}=n.current,B=Math.max(D/R*D,30),y=D-B,I=F/(R-D)*y;r.current.style.height=`${B}px`,r.current.style.transform=`translateY(${I}px)`,r.current.style.willChange="transform, height";let Y=Math.max(k/N*k,30),z=k-Y,gt=O/(N-k)*z;u.current.style.width=`${Y}px`,u.current.style.transform=`translateX(${gt}px)`,u.current.style.willChange="transform, width",R<=D&&s.current?s.current.classList.add("--no-y"):s.current&&s.current.classList.remove("--no-y"),N<=k&&s.current?s.current.classList.add("--no-x"):s.current&&s.current.classList.remove("--no-x");},[]),d=react.useCallback(()=>{g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(M(),n.current){let{scrollTop:D,scrollHeight:R,clientHeight:F,scrollLeft:k,scrollWidth:N,clientWidth:O}=n.current,A=D/(R-F)*100,B=k/(N-O)*100;Object.keys(o).forEach(y=>{let I=parseFloat(y);Math.abs(A-I)<1&&o[I]?.(),Math.abs(B-I)<1&&o[I]?.();});}});},[M,o]),l=react.useCallback(()=>{n.current&&(d(),window.dispatchEvent(new Event("scroll")));},[d]),a=D=>{m.current=true,w.current=D.clientY,f.current=n.current?.scrollTop||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},i=D=>{b.current=true,x.current=D.clientX,v.current=n.current?.scrollLeft||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},c=react.useCallback(D=>{if(!n.current||!m.current&&!b.current)return;let{clientHeight:R,scrollHeight:F,clientWidth:k,scrollWidth:N}=n.current;if(m.current){let O=F-R,A=r.current?.clientHeight||30,B=R-A,y=D.clientY-w.current,I=Math.min(Math.max(f.current+y/B*O,0),O);n.current.scrollTop=I;}if(b.current){let O=N-k,A=u.current?.clientWidth||30,B=k-A,y=D.clientX-x.current,I=Math.min(Math.max(v.current+y/B*O,0),O);n.current.scrollLeft=I;}},[]),S=()=>{m.current=false,b.current=false,document.body.style.userSelect="",s.current&&s.current?.classList.remove("--scrolling"),g.current&&cancelAnimationFrame(g.current);},E=()=>n.current?.scrollTo({top:0,behavior:"smooth"}),P=()=>n.current?.scrollTo({top:n.current.scrollHeight,behavior:"smooth"}),h=()=>n.current?.scrollTo({left:0,behavior:"smooth"}),T=()=>n.current?.scrollTo({left:n.current.scrollWidth,behavior:"smooth"});return react.useEffect(()=>{let D=n.current;if(!D)return;let R=F=>{if(!n.current)return;let{scrollTop:k,scrollHeight:N,clientHeight:O,scrollLeft:A,scrollWidth:B,clientWidth:y}=n.current,I=k,X=A,Y=false;if(Math.abs(F.deltaY)>Math.abs(F.deltaX)){let z=N-O;I=k+F.deltaY*p,I=Math.max(0,Math.min(I,z)),I!==k&&(n.current.scrollTop=I,Y=true);}else {let z=B-y;X=A+F.deltaX*p,X=Math.max(0,Math.min(X,z)),X!==A&&(n.current.scrollLeft=X,Y=true);}Y&&d();};return window.addEventListener("resize",d),D.addEventListener("scroll",l,{passive:true}),D.addEventListener("wheel",R,{passive:true}),document.addEventListener("mousemove",c),document.addEventListener("mouseup",S),d(),()=>{window.removeEventListener("resize",d),D.removeEventListener("scroll",l),D.removeEventListener("wheel",R),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",S),g.current&&cancelAnimationFrame(g.current);}},[l,c,d,p]),tt(n.current,d),{rootRef:s,containerRef:n,thumbY:r,thumbX:u,scrollToTop:E,scrollToBottom:P,scrollToLeft:h,scrollToRight:T,onScrollY:a,onScrollX:i}},$e=We;var Ye=(e,o)=>{let{lerpFactor:s=.1,x:n,y:r,xMultiplier:u=.25,yMultiplier:p=.25,scale:m,rotate:b}=o,x=react.useRef(0),w=react.useRef(0),f=react.useRef(0),v=react.useRef(0),g=react.useRef(performance.now()),M=react.useRef(null),d=react.useRef(false),l=react.useRef(0),a=.2;return react.useEffect(()=>{if(typeof window>"u")return;let i=()=>{let S=performance.now(),E=(S-g.current)/1e3;g.current=S;let P=v.current-f.current,h=P/E;if(f.current+=P*s,x.current=f.current,w.current=h,l.current+=(h-l.current)*s,e.current){let T=n?x.current*n*u:0,D=r?x.current*r*p:0,R=m?core.clamp(m.max-Math.abs(l.current)*m.factor,m.min,m.max):1,F=b?w.current*(b.multiplier??1)*(b.direction??1):0;e.current.style.transform=`
|
|
5
|
+
translate3d(${T}px, ${D}px, 0)
|
|
6
|
+
scale(${R})
|
|
7
7
|
rotate(${F}deg)
|
|
8
|
-
`.trim();}Math.abs(
|
|
8
|
+
`.trim();}Math.abs(P)>a||Math.abs(h)>a?M.current=requestAnimationFrame(i):(d.current=false,M.current=null);},c=()=>{v.current=window.scrollY,d.current||(g.current=performance.now(),M.current=requestAnimationFrame(i),d.current=true);};return window.addEventListener("scroll",c,{passive:true}),()=>{window.removeEventListener("scroll",c),M.current&&cancelAnimationFrame(M.current);}},[s,n,r,u,p,m,b]),{position:x,velocity:w}},ze=Ye;var Qe=(e,o)=>{react.useEffect(()=>{let s=n=>{let r=[];n.ctrlKey&&r.push(17),n.shiftKey&&r.push(16),n.altKey&&r.push(18),n.metaKey&&r.push(19),r.push(n.keyCode),e.forEach(({keys:u,callback:p})=>{u.every(m=>r.includes(m))&&((o??true)&&n.preventDefault(),p(n));});};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,o]);},je=Qe;var Ze=e=>{let{apiUrl:o,onChange:s,onQueFinished:n}=e,r=react.useRef({que:[],index:-1,speed:0,stamp:null,token:null,status:0}),u=()=>s?.(x()),p=()=>{},m=()=>{r.current.stamp=Date.now();let g=x(),M=new FormData;M.append("ID",g.ID),M.append("dir",g.dir),M.append("server",g.server.ID),M.append("token",g.server.token),M.append("file",g.file),M.append("fs",g.file.size.toString()),r.current.cancelToken=core.getCancelToken(),core.withPost(`${r.current.que[r.current.index].server.uri}/receive`,M,86400,true,void 0,d=>{r.current.que[r.current.index].status=2,s?.({...x(),progress:d.progress||0});}).then(d=>{r.current.que[r.current.index].progress=1,r.current.que[r.current.index].status=4,r.current.status=0,u(),f();}).catch(d=>{r.current.que[r.current.index].status=-1,r.current.status=0,u(),f();});},b=g=>{r.current.que[r.current.index].status=1,u(),core.withPost(`${o}get_server`,{size:x().file.size}).then(M=>{r.current.que[r.current.index].server=M.server,r.current.que[r.current.index].status=2,u(),m();}).catch(M=>{r.current.que[r.current.index].status=-1,r.current.status=0,u(),f();});},x=()=>r.current.que[r.current.index],w=()=>r.current.que,f=()=>{r.current.status==0&&r.current.que.length-1>r.current.index?(r.current.status=2,r.current.index++,r.current.que[r.current.index].status=2,u(),r.current.que[r.current.index].remote?p():b()):n?.();};return {get:()=>r,getQue:w,addToQue:g=>{r.current.que.push({ID:core.uuid(12),file:g.file,dir:g.dir,remote:g.remote,progress:0,speed:0,eta:0,bytes:0,status:0,server:null}),f();}}},Ce=Ze;var $=new Map,H=new Map,_=new Map,Ke=(e,o)=>{let{onOpen:s,onClose:n,onRawMessage:r,onMessage:u,onError:p,reconnect:m=true}=o||{},[b,x]=react.useState(false),[w,f]=react.useState([]),v=a=>_.get(a)??2,g=a=>{let i=v(a),c=Math.min(i*2,60);return _.set(a,c),c*1e3},M=a=>{_.set(a,2);},d=react.useCallback(()=>{if($.has(e)){let i=$.get(e);i&&(i.onmessage=c=>{f(E=>[...E,c.data]),r?.(c);let S=JSON.parse(Buffer.isBuffer(c)?c.toString("utf8"):typeof c=="string"?c:c.data);u?.(S),H.get(e)?.forEach(E=>E(c));});return}let a=new WebSocket(e);$.set(e,a),H.set(e,[]),a.onopen=i=>{x(true),M(e),s?.(i);},a.onmessage=i=>{f(S=>[...S,i.data]),r?.(i);let c=JSON.parse(Buffer.isBuffer(i)?i.toString("utf8"):typeof i=="string"?i:i.data);u?.(c),H.get(e)?.forEach(S=>S(i));},a.onerror=i=>{p?.(i);},a.onclose=i=>{if(x(false),n?.(i),$.delete(e),H.delete(e),m&&i.code!==1e3){let c=g(e);console.log(`Reconnecting in ${c/1e3} seconds...`),setTimeout(()=>{$.has(e)||d();},c);}};},[e,s,n,u,p,m]);react.useEffect(()=>(d(),()=>{H.get(e)?.length===0&&($.get(e)?.close(),$.delete(e),H.delete(e),_.delete(e));}),[]),react.useEffect(()=>{let a=i=>f(c=>[...c,i.data]);return H.get(e)?.push(a),()=>{let i=H.get(e)||[];H.set(e,i.filter(c=>c!==a));}},[e]);let l=react.useCallback(a=>{let i=$.get(e);if(i&&i.readyState===WebSocket.OPEN){let c=typeof a=="string"?a:JSON.stringify(a);i.send(c);}else console.log("WebSocket is not connected.");},[e]);return {isConnected:b,messages:w,sendMessage:l}},tn=Ke;exports.AnchorType=dt;exports.CropShape=J;exports.KeyCode=G;exports.useAnchorPosition=kt;exports.useCalendar=At;exports.useCommandActions=xt;exports.useDB=Dt;exports.useDebounce=Ht;exports.useDelayed=st;exports.useDevice=jt;exports.useDimensions=C;exports.useFacebookPixel=Gt;exports.useGoogleTagManager=Kt;exports.useImage=se;exports.useImageCropper=ie;exports.useIntersectionObserver=le;exports.useLineChart=ge;exports.useMorph=we;exports.useMounted=st;exports.useMutationObserver=tt;exports.useNetworkStatus=Te;exports.useNextInterval=ke;exports.usePushNotifications=Oe;exports.useResizeObserver=Ne;exports.useScrollPhysics=ze;exports.useScrollbar=$e;exports.useShortcuts=je;exports.useUploader=Ce;exports.useWebSocket=tn;
|
package/dist/index.d.cts
CHANGED
|
@@ -5,12 +5,20 @@ import { CancelTokenSource } from '@zuzjs/core';
|
|
|
5
5
|
type dynamic = {
|
|
6
6
|
[x: string]: any;
|
|
7
7
|
};
|
|
8
|
+
type ValueOf<T> = T[keyof T];
|
|
8
9
|
type CalendarWeekdayFormat = "long" | "short" | "narrow";
|
|
9
10
|
type CalendarMonthFormat = CalendarWeekdayFormat | "numeric" | "2-digit";
|
|
10
11
|
declare enum CropShape {
|
|
11
12
|
Circle = "circle",
|
|
12
13
|
Square = "square"
|
|
13
14
|
}
|
|
15
|
+
declare const AnchorType: {
|
|
16
|
+
readonly TopLeft: "top left";
|
|
17
|
+
readonly TopRight: "top right";
|
|
18
|
+
readonly TopCenter: "top center";
|
|
19
|
+
readonly BottomLeft: "bottom left";
|
|
20
|
+
readonly BottomRight: "bottom right";
|
|
21
|
+
};
|
|
14
22
|
declare enum KeyCode {
|
|
15
23
|
Backspace = 8,
|
|
16
24
|
Tab = 9,
|
|
@@ -175,12 +183,21 @@ type AnchorOptions = {
|
|
|
175
183
|
offsetY?: number;
|
|
176
184
|
overflow?: boolean;
|
|
177
185
|
};
|
|
178
|
-
declare const useAnchorPosition: (parent?: HTMLElement, event?: MouseEvent, options?: AnchorOptions
|
|
186
|
+
declare const useAnchorPosition: (parent?: HTMLElement | null, event?: MouseEvent | null, options?: AnchorOptions & {
|
|
187
|
+
preferredAnchor?: ValueOf<typeof AnchorType>;
|
|
188
|
+
}) => {
|
|
179
189
|
position: {
|
|
180
190
|
top: number;
|
|
181
191
|
left: number;
|
|
182
192
|
};
|
|
183
193
|
targetRef: react.RefObject<HTMLDivElement | null>;
|
|
194
|
+
calculatedAnchor: ValueOf<{
|
|
195
|
+
readonly TopLeft: "top left";
|
|
196
|
+
readonly TopRight: "top right";
|
|
197
|
+
readonly TopCenter: "top center";
|
|
198
|
+
readonly BottomLeft: "bottom left";
|
|
199
|
+
readonly BottomRight: "bottom right";
|
|
200
|
+
}>;
|
|
184
201
|
};
|
|
185
202
|
|
|
186
203
|
declare const useCalendar: (range?: number, dayFormat?: CalendarWeekdayFormat, monthFormat?: CalendarMonthFormat) => {
|
|
@@ -298,6 +315,16 @@ interface LineChartProps {
|
|
|
298
315
|
}
|
|
299
316
|
declare const useLineChart: (data: DataPoint[], dimensions?: UseLineChartDimensions, padding?: number) => UseLineChartReturn;
|
|
300
317
|
|
|
318
|
+
declare const useMorph: (sourceRef: RefObject<HTMLElement | null>, isReady: boolean) => {
|
|
319
|
+
sourceRect: {
|
|
320
|
+
width: number;
|
|
321
|
+
height: number;
|
|
322
|
+
top: number;
|
|
323
|
+
left: number;
|
|
324
|
+
} | null;
|
|
325
|
+
isMeasured: boolean;
|
|
326
|
+
};
|
|
327
|
+
|
|
301
328
|
type MutationCallback = (mutations: MutationRecord[], observer: MutationObserver) => void;
|
|
302
329
|
declare const useMutationObserver: (target: HTMLElement | null, callback: MutationCallback, options?: MutationObserverInit) => void;
|
|
303
330
|
|
|
@@ -484,4 +511,4 @@ declare global {
|
|
|
484
511
|
}
|
|
485
512
|
}
|
|
486
513
|
|
|
487
|
-
export { type CalendarMonthFormat, type CalendarWeekdayFormat, type Command, type CommandActionProps, CropShape, type DataPoint, type IDBOptions, type IDBSchema, KeyCode, type LineChartProps, type MutationCallback, type PushNotificationsOptions, type PushNotificationsResult, type PushSubscriptionMeta, type QueItem as UploadQueItem, Status as UploadStatus, type Uploadify, type UseLineChartDimensions, type UseLineChartReturn, type WebSocketOptions, useAnchorPosition, useCalendar, useCommandActions, useDB, useDebounce, useMounted as useDelayed, useDevice, useDimensions, useFacebookPixel, useGtag as useGoogleTagManager, useImage, useImageCropper, useIntersectionObserver, useLineChart, useMounted, useMutationObserver, useNetworkStatus, useNextInterval, usePushNotifications, useResizeObserver, useScrollPhysics, useScrollbar, useShortcuts, useUploader, useWebSocket };
|
|
514
|
+
export { AnchorType, type CalendarMonthFormat, type CalendarWeekdayFormat, type Command, type CommandActionProps, CropShape, type DataPoint, type IDBOptions, type IDBSchema, KeyCode, type LineChartProps, type MutationCallback, type PushNotificationsOptions, type PushNotificationsResult, type PushSubscriptionMeta, type QueItem as UploadQueItem, Status as UploadStatus, type Uploadify, type UseLineChartDimensions, type UseLineChartReturn, type WebSocketOptions, useAnchorPosition, useCalendar, useCommandActions, useDB, useDebounce, useMounted as useDelayed, useDevice, useDimensions, useFacebookPixel, useGtag as useGoogleTagManager, useImage, useImageCropper, useIntersectionObserver, useLineChart, useMorph, useMounted, useMutationObserver, useNetworkStatus, useNextInterval, usePushNotifications, useResizeObserver, useScrollPhysics, useScrollbar, useShortcuts, useUploader, useWebSocket };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,12 +5,20 @@ import { CancelTokenSource } from '@zuzjs/core';
|
|
|
5
5
|
type dynamic = {
|
|
6
6
|
[x: string]: any;
|
|
7
7
|
};
|
|
8
|
+
type ValueOf<T> = T[keyof T];
|
|
8
9
|
type CalendarWeekdayFormat = "long" | "short" | "narrow";
|
|
9
10
|
type CalendarMonthFormat = CalendarWeekdayFormat | "numeric" | "2-digit";
|
|
10
11
|
declare enum CropShape {
|
|
11
12
|
Circle = "circle",
|
|
12
13
|
Square = "square"
|
|
13
14
|
}
|
|
15
|
+
declare const AnchorType: {
|
|
16
|
+
readonly TopLeft: "top left";
|
|
17
|
+
readonly TopRight: "top right";
|
|
18
|
+
readonly TopCenter: "top center";
|
|
19
|
+
readonly BottomLeft: "bottom left";
|
|
20
|
+
readonly BottomRight: "bottom right";
|
|
21
|
+
};
|
|
14
22
|
declare enum KeyCode {
|
|
15
23
|
Backspace = 8,
|
|
16
24
|
Tab = 9,
|
|
@@ -175,12 +183,21 @@ type AnchorOptions = {
|
|
|
175
183
|
offsetY?: number;
|
|
176
184
|
overflow?: boolean;
|
|
177
185
|
};
|
|
178
|
-
declare const useAnchorPosition: (parent?: HTMLElement, event?: MouseEvent, options?: AnchorOptions
|
|
186
|
+
declare const useAnchorPosition: (parent?: HTMLElement | null, event?: MouseEvent | null, options?: AnchorOptions & {
|
|
187
|
+
preferredAnchor?: ValueOf<typeof AnchorType>;
|
|
188
|
+
}) => {
|
|
179
189
|
position: {
|
|
180
190
|
top: number;
|
|
181
191
|
left: number;
|
|
182
192
|
};
|
|
183
193
|
targetRef: react.RefObject<HTMLDivElement | null>;
|
|
194
|
+
calculatedAnchor: ValueOf<{
|
|
195
|
+
readonly TopLeft: "top left";
|
|
196
|
+
readonly TopRight: "top right";
|
|
197
|
+
readonly TopCenter: "top center";
|
|
198
|
+
readonly BottomLeft: "bottom left";
|
|
199
|
+
readonly BottomRight: "bottom right";
|
|
200
|
+
}>;
|
|
184
201
|
};
|
|
185
202
|
|
|
186
203
|
declare const useCalendar: (range?: number, dayFormat?: CalendarWeekdayFormat, monthFormat?: CalendarMonthFormat) => {
|
|
@@ -298,6 +315,16 @@ interface LineChartProps {
|
|
|
298
315
|
}
|
|
299
316
|
declare const useLineChart: (data: DataPoint[], dimensions?: UseLineChartDimensions, padding?: number) => UseLineChartReturn;
|
|
300
317
|
|
|
318
|
+
declare const useMorph: (sourceRef: RefObject<HTMLElement | null>, isReady: boolean) => {
|
|
319
|
+
sourceRect: {
|
|
320
|
+
width: number;
|
|
321
|
+
height: number;
|
|
322
|
+
top: number;
|
|
323
|
+
left: number;
|
|
324
|
+
} | null;
|
|
325
|
+
isMeasured: boolean;
|
|
326
|
+
};
|
|
327
|
+
|
|
301
328
|
type MutationCallback = (mutations: MutationRecord[], observer: MutationObserver) => void;
|
|
302
329
|
declare const useMutationObserver: (target: HTMLElement | null, callback: MutationCallback, options?: MutationObserverInit) => void;
|
|
303
330
|
|
|
@@ -484,4 +511,4 @@ declare global {
|
|
|
484
511
|
}
|
|
485
512
|
}
|
|
486
513
|
|
|
487
|
-
export { type CalendarMonthFormat, type CalendarWeekdayFormat, type Command, type CommandActionProps, CropShape, type DataPoint, type IDBOptions, type IDBSchema, KeyCode, type LineChartProps, type MutationCallback, type PushNotificationsOptions, type PushNotificationsResult, type PushSubscriptionMeta, type QueItem as UploadQueItem, Status as UploadStatus, type Uploadify, type UseLineChartDimensions, type UseLineChartReturn, type WebSocketOptions, useAnchorPosition, useCalendar, useCommandActions, useDB, useDebounce, useMounted as useDelayed, useDevice, useDimensions, useFacebookPixel, useGtag as useGoogleTagManager, useImage, useImageCropper, useIntersectionObserver, useLineChart, useMounted, useMutationObserver, useNetworkStatus, useNextInterval, usePushNotifications, useResizeObserver, useScrollPhysics, useScrollbar, useShortcuts, useUploader, useWebSocket };
|
|
514
|
+
export { AnchorType, type CalendarMonthFormat, type CalendarWeekdayFormat, type Command, type CommandActionProps, CropShape, type DataPoint, type IDBOptions, type IDBSchema, KeyCode, type LineChartProps, type MutationCallback, type PushNotificationsOptions, type PushNotificationsResult, type PushSubscriptionMeta, type QueItem as UploadQueItem, Status as UploadStatus, type Uploadify, type UseLineChartDimensions, type UseLineChartReturn, type WebSocketOptions, useAnchorPosition, useCalendar, useCommandActions, useDB, useDebounce, useMounted as useDelayed, useDevice, useDimensions, useFacebookPixel, useGtag as useGoogleTagManager, useImage, useImageCropper, useIntersectionObserver, useLineChart, useMorph, useMounted, useMutationObserver, useNetworkStatus, useNextInterval, usePushNotifications, useResizeObserver, useScrollPhysics, useScrollbar, useShortcuts, useUploader, useWebSocket };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {useState,useRef,useEffect,useCallback,useMemo}from'react';import {urlBase64ToUint8Array,uuid,clamp,withPost,getCancelToken}from'@zuzjs/core';var
|
|
2
|
-
`),
|
|
3
|
-
`));};}),h=(l,c)=>({store:r.current.transaction(l,c).objectStore(l)});return {getAll:l=>new Promise((c,i)=>{p().then(a=>{let{store:M}=h(l,"readonly"),E=M.getAll();E.onsuccess=T=>{T.target.result==null&&i("Record not found"),c(T.target.result);},E.onerror=T=>{i(`SELECT Failed. ${T.target.result}`);};}).catch(a=>{console.log("[getAll]",a),i("Database either corrupted or not initialized");});}),getByID:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readonly"),T=E.get(c);T.onsuccess=d=>{d.target.result==null&&a("Record not found"),i(d.target.result);},T.onerror=d=>{a(`SELECT Failed. ${d.target.result}`);};}).catch(M=>{console.log("[getByID]",M),a("Database either corrupted or not initialized");});}),getStore:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readonly"),T=E.getAll();T.onsuccess=d=>{d.target.result==null&&a("Record not found"),i(d.target.result);},T.onerror=d=>{a(`SELECT Failed. ${d.target.result}`);};}).catch(M=>{a(M.message||"Database either corrupted or not initialized");});}),insert:(l,c,i)=>new Promise((a,M)=>{p().then(E=>{let{store:T}=h(l,"readwrite"),d=T.add(c,i);d.onsuccess=P=>{a(P.target.result);},d.onerror=P=>{M(`INSERTION Failed. ${P.target.result}`);};}).catch(E=>{M(E.message||"Database either corrupted or not initialized");});}),update:(l,c)=>new Promise((i,a)=>{p().then(M=>{let {store:E}=h(l,"readwrite"),d=E.put(c);d.onsuccess=P=>{i();},d.onerror=P=>{a(`UPDATE Failed. ${P.target.result}`);};}).catch(M=>{a(`UPDATE Failed. ${M}`);});}),update_one:(l,c,i)=>new Promise((a,M)=>{p().then(E=>{let{store:T}=h(l,"readwrite"),d=T.get(i);d.onsuccess=()=>{let P=d.result;if(!P){M(`Record with key ${i} not found.`);return}let D=T.put({...P,...c});D.onsuccess=()=>a(),D.onerror=R=>M(`Update failed. ${R.target.error}`);},d.onerror=P=>{M(`Failed to get existing record. ${P.target.error}`);};}).catch(E=>{M("Database either corrupted or not initialized");});}),remove:(l,c)=>new Promise((i,a)=>{p().then(M=>{let{store:E}=h(l,"readwrite"),T=E.delete(c);T.onsuccess=d=>{i();};}).catch(M=>{console.log(M),a(`Delete failed from ${l} with key: ${c}`);});}),error:u}},St=Mt;var Lt=(e,o,s={})=>{let[n,r]=useState({top:0,left:0}),{offsetX:u=0,offsetY:f=0,overflow:p=true}=s,h=useRef(null),b=useCallback(()=>{let w=0,m=0;if(o)w=o.clientY+f,m=o.clientX+u;else if(e){let v=e.getBoundingClientRect();w=v.bottom+f,m=v.left+u;}if(p&&h.current){let v=h.current.getBoundingClientRect(),{innerWidth:g,innerHeight:S}=window;m+v.width>g&&(m=g-v.width-10),w+v.height>S&&(w=S-v.height-10);}r({top:w,left:m});},[o,e,u,f,p]);return useEffect(()=>(b(),window.addEventListener("resize",b),window.addEventListener("scroll",b),()=>{window.removeEventListener("resize",b),window.removeEventListener("scroll",b);}),[b]),{position:n,targetRef:h}},kt=Lt;var It=e=>e%4===0&&e%100!==0||e%400===0,Ft=(e,o)=>{switch(e){case 1:return It(o)?29:28;case 3:case 5:case 8:case 10:return 30;default:return 31}},et=(e,o)=>e.toLocaleString("default",{weekday:o}),nt=(e,o)=>{let s=new Date;return s.setMonth(e),s.toLocaleString("default",{month:o})},Ot=(e=1,o,s)=>{let[n,r]=useState(new Date),u=()=>{r(m=>{let v=new Date(m);return v.setMonth(m.getMonth()+e),v});},f=()=>{r(m=>{let v=new Date(m);return v.setMonth(v.getMonth()-e),v});},p=Ft(n.getMonth(),n.getFullYear()),h=nt(n.getMonth(),s||"long"),b=et(n,o||"short"),w=Array.from({length:p},(m,v)=>{let g=new Date(n.getFullYear(),n.getMonth(),v+1);return {day:et(g,o||"short"),date:g.getDate(),month:nt(g.getMonth(),s||"long"),year:g.getFullYear()}});return {today:n,daysCount:p,month:h,day:b,days:w,next:u,prev:f}},qt=Ot;var Wt=(e,o)=>{let s=useRef(null);return useCallback((...r)=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{e(...r);},o);},[e,o])},At=Wt;var $t=(e=100)=>{let[o,s]=useState(false);return useEffect(()=>{let n=setTimeout(()=>s(true),e);return ()=>clearTimeout(n)},[e]),o},rt=$t;var Yt=e=>{let[o,s]=useState({width:0,height:0,top:0,left:0,bottom:0,right:0,x:0,y:0}),n=()=>{if(e){let{width:r,height:u,top:f,left:p,bottom:h,right:b,x:w,y:m}=e.getBoundingClientRect();s({width:r,height:u,top:f,left:p,bottom:h,right:b,x:w,y:m});}else s({width:window.innerWidth,height:window.innerHeight,top:0,left:0,bottom:0,right:0,x:0,y:0});};return useEffect(()=>(n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)),[]),o},C=Yt;var Qt=()=>{let e=navigator.userAgent,o=/Mobi|Android/i.test(e),s=/Tablet|iPad/i.test(e),n=C();return useEffect(()=>{},[]),{isMobile:o,isTablet:s,isDesktop:!o&&!s,...n}},Vt=Qt;var _t=(e,o=false)=>(useEffect(()=>{if(e){if(!window.fbq){let u=document.createElement("script");u.async=true,u.src="https://connect.facebook.net/en_US/fbevents.js",document.head.appendChild(u),window._fbq=window._fbq||[],window.fbq=function(){window._fbq.push(arguments);},window.fbq("init",e),o&&window.fbq("set","debug",true);}window.fbq("track","PageView");}},[e,o]),{trackPageView:()=>{e&&window.fbq("track","PageView");},trackEvent:(u,f)=>{e&&window.fbq("track",u,f);},trackCustom:(u,f)=>{e&&window.fbq("trackCustom",u,f);}}),Jt=_t;var Zt=e=>(useEffect(()=>{if(e){if(!window.gtag){let n=document.createElement("script");n.async=true,n.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(n),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments);},window.gtag("js",new Date);}window.gtag("config",e);}},[e]),{trackPageView:n=>{e&&window.gtag("config",e,{page_path:n||window.location.pathname});},trackEvent:(n,r)=>{e&&window.gtag("event",n,r);}}),Ct=Zt;var ne=(e,o,s)=>{let[n,r]=useState({loaded:false,error:null}),u=useRef(null);return useEffect(()=>{if(e&&e!==""){var f=new Image;o&&(f.crossOrigin=o),s&&(f.referrerPolicy=s),f.onload=()=>{u.current=f,r({loaded:true,error:null});},f.onerror=()=>{r({loaded:false,error:`Failed to load image at ${e}`});},f.src=e;}},[e]),[u.current?u.current.src:"",n.loaded,n.error]},re=ne;var se=(e,o,s="circle",n=1)=>{let[r,u]=useState(false),[f,p]=useState({x:0,y:0}),[h,b]=useState(n),w=useRef(null),m=useRef(null),v=()=>{let c=m.current,i=c?.getContext("2d"),a=w.current;!c||!i||!a||(c.width=o,c.height=o,i.clearRect(0,0,o,o),i.globalAlpha=.5,i.drawImage(a,f.x,f.y,a.width*h,a.height*h),i.globalAlpha=1,i.save(),s==="circle"&&(i.beginPath(),i.arc(o/2,o/2,o/2,0,Math.PI*2),i.closePath(),i.clip()),i.drawImage(a,f.x,f.y,a.width*h,a.height*h),i.restore());};return useEffect(v,[h]),useEffect(()=>{if(e){let c=new Image;c.onload=()=>{w.current=c,v();},c.src=e;}},[e,f]),{canvasRef:m,crop:()=>{let c=m.current;return c?c.toDataURL("image/png"):null},setScale:b,handleMouseDown:()=>u(true),handleMouseUp:()=>u(false),handleMouseMove:c=>{!r||!w.current||p(i=>({x:i.x+c.movementX,y:i.y+c.movementY}));}}},oe=se;var ce=(e,o={})=>{let[s,n]=useState(e&&e.length>0?new Array(e.length).fill(0):[]);return useEffect(()=>{if(!e||!e.length)return;let r=new IntersectionObserver(u=>{requestAnimationFrame(()=>{n(f=>{let p=[...f],h=false;return u.forEach(b=>{let w=e.findIndex(m=>m.current===b.target);w!==-1&&p[w]!==b.intersectionRatio&&(p[w]=b.intersectionRatio,h=true);}),h?p:f});});},{rootMargin:"200px",threshold:[1],...o});return e.forEach(u=>{u.current&&r.observe(u.current);}),()=>{e.forEach(u=>{u.current&&r.unobserve(u.current);});}},[e,o]),s},ue=ce;var at=(e,o,s,n=20)=>{if(!e||e.length===0||o<=0||s<=0)return "";let r=Math.min(...e.map(g=>g.x)),u=Math.max(...e.map(g=>g.x)),f=Math.min(...e.map(g=>g.y)),p=Math.max(...e.map(g=>g.y)),h=(o-2*n)/(u-r),b=(s-2*n)/(p-f),w=g=>{let S=(g.x-r)*h+n,x=s-((g.y-f)*b+n);return {x:S,y:x}},m=e.map(w),v="";if(m.length>0){v=`M ${m[0].x},${m[0].y}`;for(let g=0;g<m.length-1;g++){let S=m[g],x=m[g+1],l={x:(S.x+x.x)/2,y:S.y},c={x:(S.x+x.x)/2,y:x.y};v+=` C ${l.x},${l.y} ${c.x},${c.y} ${x.x},${x.y}`;}}return v},me=(e,o,s,n=20)=>{if(!e||e.length===0)return "";let r=at(e,o,s,n),u=Math.min(...e.map(m=>m.x)),f=Math.max(...e.map(m=>m.x)),p=(o-2*n)/(f-u),h=(e[0].x-u)*p+n,b=(e[e.length-1].x-u)*p+n,w=s-n;return `${r} L ${b},${w} L ${h},${w} Z`},fe=(e,o={width:600,height:300},s=20)=>{let[n,r]=useState(""),[u,f]=useState("");return useEffect(()=>{let p=at(e,o.width,o.height,s);r(p);let h=me(e,o.width,o.height,s);f(h);},[e,o.width,o.height,s]),{pathD:n,areaPathD:u}},pe=fe;var he=(e,o,s={childList:true,subtree:true})=>{let n=useRef(null);useEffect(()=>{if(e)return n.current=new MutationObserver(o),n.current.observe(e,s),()=>{n.current&&n.current.disconnect();}},[e,o,s]);},tt=he;var xe=()=>{let[e,o]=useState(null),s=()=>{o(navigator.onLine);};return useEffect(()=>(setTimeout(()=>o(navigator.onLine)),window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s);}),[]),e},ve=xe;var Ee=(e=15)=>{if(e<=0)throw new Error("intervalMinutes must be greater than 0");let o=b=>{let w=new Date(b),m=w.getMinutes(),v=m%e;return v===0?w.setMinutes(m+e):w.setMinutes(m+(e-v)),w.setSeconds(0),w.setMilliseconds(0),w},[s,n]=useState(()=>o(new Date));useEffect(()=>{let b=()=>{let v=o(new Date);v.getTime()!==s.getTime()&&n(v);};b();let w=setInterval(b,1e3);return ()=>clearInterval(w)},[e,s]);let r=new Date,u=Math.max(0,s.getTime()-r.getTime()),f=Math.floor(u/6e4),p=Math.floor(u%6e4/1e3),h=`${f}m ${p.toString().padStart(2,"0")}s`;return {minutes:f,seconds:p,formatted:h,nextBoundary:s}},De=Ee;var Te=e=>{let{vapidPublicKey:o,serviceWorkerPath:s="/sw.js",requestPermissionOnMount:n=false}=e,[r,u]=useState("default"),[f,p]=useState(null),[h,b]=useState(null),[w,m]=useState(null),[v,g]=useState(false),[S,x]=useState(null),[l,c]=useState(false),i=useCallback(async()=>{if(!l)return null;try{let d=await navigator.serviceWorker.register(s,{scope:"/",updateViaCache:"all"});return x(d),d}catch(d){return console.error("Service Worker registration failed:",d),m("Failed to register service worker"),null}},[s,l]),a=useCallback(async d=>{try{let P=await d.pushManager.getSubscription();return p(P),b(P?P.toJSON():null),P}catch(P){return console.error("Failed to get subscription:",P),m("Failed to get subscription"),null}},[]),M=useCallback(async()=>{if(!l||!S)return m("Push not supported or service worker not registered"),null;g(true),m(null);try{let d=await Notification.requestPermission();if(u(d),d!=="granted")return m("Permission not granted for notifications"),g(!1),null;let P=urlBase64ToUint8Array(o),D=await S.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:P});return p(D),b(D.toJSON()),g(!1),D}catch(d){return console.error("Subscription failed:",d),m(d.message||"Failed to subscribe"),g(false),null}},[l,S,o]),E=useCallback(async()=>{if(!f)return true;try{let d=await f.unsubscribe();return d&&(p(null),b(null)),d}catch(d){return console.error("Failed to unsubscribe:",d),false}},[f]),T=useCallback(async()=>{let d=await Notification.requestPermission();return u(d),d},[]);return useEffect(()=>{let d="PushManager"in window&&"serviceWorker"in navigator;if(c(d),!d){m("Push notifications not supported in this browser");return}let P=true;return (async()=>{let R=await i();!R||!P||(u(Notification.permission),await a(R),n&&Notification.permission==="default"&&await T());})(),()=>{P=false;}},[l,i,a,n,T]),useEffect(()=>{if(!("permissions"in navigator))return;let d=false;(async()=>{if(d)return;let D=await navigator.permissions.query({name:"notifications"});D.onchange=()=>{u(Notification.permission),Notification.permission==="denied"&&(d=true,E());};})();},[E]),{permission:r,subscription:f,subscriptionMeta:h,isSupported:l,subscribe:M,unsubscribe:E,requestPermission:T,error:w,isLoading:v}},Le=Te;var Ie=e=>{let[o,s]=useState({width:0,height:0,top:0,left:0});return useEffect(()=>{let n=e instanceof HTMLElement?e:e.current,r=f=>{for(let p of f){let{width:h,height:b,top:w,left:m}=p.contentRect;s({width:h,height:b,top:w,left:m});}},u=new ResizeObserver(r);return n&&u.observe(n),()=>{n&&u.unobserve(n);}},[e]),o},Fe=Ie;var Be=(e,o={})=>{let s=useRef(null),n=useRef(null),r=useRef(null),u=useRef(null),f=useMemo(()=>e??1,[e]),p=useRef(false),h=useRef(false),b=useRef(0),w=useRef(0),m=useRef(0),v=useRef(0),g=useRef(null),S=useCallback(()=>{if(!n.current||!r.current||!u.current)return;let{clientHeight:D,scrollHeight:R,scrollTop:O,clientWidth:I,scrollWidth:A,scrollLeft:q}=n.current,W=Math.max(D/R*D,30),H=D-W,F=O/(R-D)*H;r.current.style.height=`${W}px`,r.current.style.transform=`translateY(${F}px)`,r.current.style.willChange="transform, height";let z=Math.max(I/A*I,30),Q=I-z,pt=q/(A-I)*Q;u.current.style.width=`${z}px`,u.current.style.transform=`translateX(${pt}px)`,u.current.style.willChange="transform, width",R<=D&&s.current?s.current.classList.add("--no-y"):s.current&&s.current.classList.remove("--no-y"),A<=I&&s.current?s.current.classList.add("--no-x"):s.current&&s.current.classList.remove("--no-x");},[]),x=useCallback(()=>{g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(S(),n.current){let{scrollTop:D,scrollHeight:R,clientHeight:O,scrollLeft:I,scrollWidth:A,clientWidth:q}=n.current,N=D/(R-O)*100,W=I/(A-q)*100;Object.keys(o).forEach(H=>{let F=parseFloat(H);Math.abs(N-F)<1&&o[F]?.(),Math.abs(W-F)<1&&o[F]?.();});}});},[S,o]),l=useCallback(()=>{n.current&&x();},[x]),c=D=>{p.current=true,w.current=D.clientY,m.current=n.current?.scrollTop||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},i=D=>{h.current=true,b.current=D.clientX,v.current=n.current?.scrollLeft||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},a=useCallback(D=>{if(!n.current||!p.current&&!h.current)return;let{clientHeight:R,scrollHeight:O,clientWidth:I,scrollWidth:A}=n.current;if(p.current){let q=O-R,N=r.current?.clientHeight||30,W=R-N,H=D.clientY-w.current,F=Math.min(Math.max(m.current+H/W*q,0),q);n.current.scrollTop=F;}if(h.current){let q=A-I,N=u.current?.clientWidth||30,W=I-N,H=D.clientX-b.current,F=Math.min(Math.max(v.current+H/W*q,0),q);n.current.scrollLeft=F;}},[]),M=()=>{p.current=false,h.current=false,document.body.style.userSelect="",s.current&&s.current?.classList.remove("--scrolling"),g.current&&cancelAnimationFrame(g.current);},E=()=>n.current?.scrollTo({top:0,behavior:"smooth"}),T=()=>n.current?.scrollTo({top:n.current.scrollHeight,behavior:"smooth"}),d=()=>n.current?.scrollTo({left:0,behavior:"smooth"}),P=()=>n.current?.scrollTo({left:n.current.scrollWidth,behavior:"smooth"});return useEffect(()=>{let D=n.current;if(!D)return;let R=O=>{if(!n.current)return;let{scrollTop:I,scrollHeight:A,clientHeight:q,scrollLeft:N,scrollWidth:W,clientWidth:H}=n.current,F=I,Y=N,z=false;if(Math.abs(O.deltaY)>Math.abs(O.deltaX)){let Q=A-q;F=I+O.deltaY*f,F=Math.max(0,Math.min(F,Q)),F!==I&&(n.current.scrollTop=F,z=true);}else {let Q=W-H;Y=N+O.deltaX*f,Y=Math.max(0,Math.min(Y,Q)),Y!==N&&(n.current.scrollLeft=Y,z=true);}z&&x();};return window.addEventListener("resize",x),D.addEventListener("scroll",l,{passive:true}),D.addEventListener("wheel",R,{passive:true}),document.addEventListener("mousemove",a),document.addEventListener("mouseup",M),x(),()=>{window.removeEventListener("resize",x),D.removeEventListener("scroll",l),D.removeEventListener("wheel",R),document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",M),g.current&&cancelAnimationFrame(g.current);}},[l,a,x,f]),tt(n.current,x),{rootRef:s,containerRef:n,thumbY:r,thumbX:u,scrollToTop:E,scrollToBottom:T,scrollToLeft:d,scrollToRight:P,onScrollY:c,onScrollX:i}},Ne=Be;var He=(e,o)=>{let{lerpFactor:s=.1,x:n,y:r,xMultiplier:u=.25,yMultiplier:f=.25,scale:p,rotate:h}=o,b=useRef(0),w=useRef(0),m=useRef(0),v=useRef(0),g=useRef(performance.now()),S=useRef(null),x=useRef(false),l=useRef(0),c=.2;return useEffect(()=>{if(typeof window>"u")return;let i=()=>{let M=performance.now(),E=(M-g.current)/1e3;g.current=M;let T=v.current-m.current,d=T/E;if(m.current+=T*s,b.current=m.current,w.current=d,l.current+=(d-l.current)*s,e.current){let P=n?b.current*n*u:0,D=r?b.current*r*f:0,R=p?clamp(p.max-Math.abs(l.current)*p.factor,p.min,p.max):1,O=h?w.current*(h.multiplier??1)*(h.direction??1):0;e.current.style.transform=`
|
|
4
|
-
translate3d(${
|
|
5
|
-
scale(${
|
|
1
|
+
import {useState,useRef,useEffect,useCallback,useLayoutEffect,useMemo}from'react';import {urlBase64ToUint8Array,uuid,clamp,withPost,getCancelToken}from'@zuzjs/core';var G=(s=>(s.Circle="circle",s.Square="square",s))(G||{}),Q={TopLeft:"top left",TopRight:"top right",TopCenter:"top center",BottomLeft:"bottom left",BottomRight:"bottom right"},ht=Q,Z=(t=>(t[t.Backspace=8]="Backspace",t[t.Tab=9]="Tab",t[t.Enter=13]="Enter",t[t.Shift=16]="Shift",t[t.Ctrl=17]="Ctrl",t[t.Alt=18]="Alt",t[t.PauseBreak=19]="PauseBreak",t[t.Command=19]="Command",t[t.CapsLock=20]="CapsLock",t[t.Escape=27]="Escape",t[t.Space=32]="Space",t[t.PageUp=33]="PageUp",t[t.PageDown=34]="PageDown",t[t.End=35]="End",t[t.Home=36]="Home",t[t.ArrowLeft=37]="ArrowLeft",t[t.ArrowUp=38]="ArrowUp",t[t.ArrowRight=39]="ArrowRight",t[t.ArrowDown=40]="ArrowDown",t[t.Insert=45]="Insert",t[t.Delete=46]="Delete",t[t.Digit0=48]="Digit0",t[t.Digit1=49]="Digit1",t[t.Digit2=50]="Digit2",t[t.Digit3=51]="Digit3",t[t.Digit4=52]="Digit4",t[t.Digit5=53]="Digit5",t[t.Digit6=54]="Digit6",t[t.Digit7=55]="Digit7",t[t.Digit8=56]="Digit8",t[t.Digit9=57]="Digit9",t[t.KeyA=65]="KeyA",t[t.KeyB=66]="KeyB",t[t.KeyC=67]="KeyC",t[t.KeyD=68]="KeyD",t[t.KeyE=69]="KeyE",t[t.KeyF=70]="KeyF",t[t.KeyG=71]="KeyG",t[t.KeyH=72]="KeyH",t[t.KeyI=73]="KeyI",t[t.KeyJ=74]="KeyJ",t[t.KeyK=75]="KeyK",t[t.KeyL=76]="KeyL",t[t.KeyM=77]="KeyM",t[t.KeyN=78]="KeyN",t[t.KeyO=79]="KeyO",t[t.KeyP=80]="KeyP",t[t.KeyQ=81]="KeyQ",t[t.KeyR=82]="KeyR",t[t.KeyS=83]="KeyS",t[t.KeyT=84]="KeyT",t[t.KeyU=85]="KeyU",t[t.KeyV=86]="KeyV",t[t.KeyW=87]="KeyW",t[t.KeyX=88]="KeyX",t[t.KeyY=89]="KeyY",t[t.KeyZ=90]="KeyZ",t[t.Numpad0=96]="Numpad0",t[t.Numpad1=97]="Numpad1",t[t.Numpad2=98]="Numpad2",t[t.Numpad3=99]="Numpad3",t[t.Numpad4=100]="Numpad4",t[t.Numpad5=101]="Numpad5",t[t.Numpad6=102]="Numpad6",t[t.Numpad7=103]="Numpad7",t[t.Numpad8=104]="Numpad8",t[t.Numpad9=105]="Numpad9",t[t.NumpadMultiply=106]="NumpadMultiply",t[t.NumpadAdd=107]="NumpadAdd",t[t.NumpadSubtract=109]="NumpadSubtract",t[t.NumpadDecimal=110]="NumpadDecimal",t[t.NumpadDivide=111]="NumpadDivide",t[t.F1=112]="F1",t[t.F2=113]="F2",t[t.F3=114]="F3",t[t.F4=115]="F4",t[t.F5=116]="F5",t[t.F6=117]="F6",t[t.F7=118]="F7",t[t.F8=119]="F8",t[t.F9=120]="F9",t[t.F10=121]="F10",t[t.F11=122]="F11",t[t.F12=123]="F12",t[t.NumLock=144]="NumLock",t[t.ScrollLock=145]="ScrollLock",t[t.Semicolon=186]="Semicolon",t[t.Equal=187]="Equal",t[t.Comma=188]="Comma",t[t.Minus=189]="Minus",t[t.Period=190]="Period",t[t.Slash=191]="Slash",t[t.Backquote=192]="Backquote",t[t.BracketLeft=219]="BracketLeft",t[t.Backslash=220]="Backslash",t[t.BracketRight=221]="BracketRight",t[t.Quote=222]="Quote",t))(Z||{});var xt=({command:e="/",commands:o=[],cmd:s,ref:n})=>{let[r,u]=useState(-1),[p,m]=useState(false),[b,x]=useState({top:0,left:0}),w=useRef(null),f=d=>{let l=n.current;if(l&&p){let{value:a}=l;(r<0||r>=a.length||a[r]!==e)&&m(false);}},v=d=>{let l=n.current;if(!l)return;let{selectionStart:a}=l;if(d.key===e){u(a||-1);let i=M(l,a||-1);x({top:i.top+20,left:i.left}),m(true);}else d.key==="Escape"&&(d.preventDefault(),d.stopPropagation(),m(false));},g=d=>{let l=n.current;if(l){if(s)s(d,l);else {let{value:a,selectionStart:i}=l,c=a.slice(0,r)+d+a.slice(i||-1);l.value=c,l.setSelectionRange(r+d.length,r+d.length);let S=new Event("input",{bubbles:true});l.dispatchEvent(S);}m(false),l.focus();}},M=(d,l)=>{let a=document.createElement("canvas"),i=a.getContext("2d");if(!i)return {top:0,left:0};let c=window.getComputedStyle(d);i.font=`${c.fontSize} ${c.fontFamily}`;let E=d.value.substring(0,l).split(`
|
|
2
|
+
`),P=E[E.length-1],h=i.measureText(P).width,T=parseFloat(c.lineHeight)||parseFloat(c.fontSize)*1.2,D=(E.length-1)*T,k=parseFloat(c.paddingTop)||0,O=parseFloat(c.paddingLeft)||0,I=d.scrollTop;return a.remove(),{top:D-I+k,left:h+O}};return useEffect(()=>{let d=l=>{n.current&&w.current&&!n.current.contains(l.target)&&!w.current.contains(l.target)&&m(false);};return document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d);}},[n]),{showDropdown:p,dropdownPosition:b,handleKeyDown:v,handleInput:f,handleCommandSelect:g,parentRef:w}},vt=xt;var Dt=e=>{let{name:o,version:s,meta:n}=e,r=useRef(null),[u,p]=useState(null);useEffect(()=>{let l=indexedDB.open(o,+s.toString().replace(/\./g,""));return l.onupgradeneeded=a=>{let i=a.target.result;n.forEach(c=>{if(!i.objectStoreNames.contains(c.name)){let S=i.createObjectStore(c.name,c.config);c.schema.forEach(E=>{S.createIndex(E.name,E.key||E.name,{unique:E.unique||false});});}});},l.onsuccess=a=>{r.current=a.target.result;},l.onerror=()=>{p("Failed to open database");},()=>r.current?.close()},[o,s]);let m=()=>new Promise((l,a)=>{r.current&&l(r.current);let i=indexedDB.open(o,+s.toString().replace(/\./g,""));i.onsuccess=c=>{r.current=c.target.result,l(r.current);},i.onerror=c=>{a(["Failed to open database",c].join(`
|
|
3
|
+
`));};}),b=(l,a)=>({store:r.current.transaction(l,a).objectStore(l)});return {getAll:l=>new Promise((a,i)=>{m().then(c=>{let{store:S}=b(l,"readonly"),E=S.getAll();E.onsuccess=P=>{P.target.result==null&&i("Record not found"),a(P.target.result);},E.onerror=P=>{i(`SELECT Failed. ${P.target.result}`);};}).catch(c=>{console.log("[getAll]",c),i("Database either corrupted or not initialized");});}),getByID:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readonly"),P=E.get(a);P.onsuccess=h=>{h.target.result==null&&c("Record not found"),i(h.target.result);},P.onerror=h=>{c(`SELECT Failed. ${h.target.result}`);};}).catch(S=>{console.log("[getByID]",S),c("Database either corrupted or not initialized");});}),getStore:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readonly"),P=E.getAll();P.onsuccess=h=>{h.target.result==null&&c("Record not found"),i(h.target.result);},P.onerror=h=>{c(`SELECT Failed. ${h.target.result}`);};}).catch(S=>{c(S.message||"Database either corrupted or not initialized");});}),insert:(l,a,i)=>new Promise((c,S)=>{m().then(E=>{let{store:P}=b(l,"readwrite"),h=P.add(a,i);h.onsuccess=T=>{c(T.target.result);},h.onerror=T=>{S(`INSERTION Failed. ${T.target.result}`);};}).catch(E=>{S(E.message||"Database either corrupted or not initialized");});}),update:(l,a)=>new Promise((i,c)=>{m().then(S=>{let {store:E}=b(l,"readwrite"),h=E.put(a);h.onsuccess=T=>{i();},h.onerror=T=>{c(`UPDATE Failed. ${T.target.result}`);};}).catch(S=>{c(`UPDATE Failed. ${S}`);});}),update_one:(l,a,i)=>new Promise((c,S)=>{m().then(E=>{let{store:P}=b(l,"readwrite"),h=P.get(i);h.onsuccess=()=>{let T=h.result;if(!T){S(`Record with key ${i} not found.`);return}let D=P.put({...T,...a});D.onsuccess=()=>c(),D.onerror=k=>S(`Update failed. ${k.target.error}`);},h.onerror=T=>{S(`Failed to get existing record. ${T.target.error}`);};}).catch(E=>{S("Database either corrupted or not initialized");});}),remove:(l,a)=>new Promise((i,c)=>{m().then(S=>{let{store:E}=b(l,"readwrite"),P=E.delete(a);P.onsuccess=h=>{i();};}).catch(S=>{console.log(S),c(`Delete failed from ${l} with key: ${a}`);});}),error:u}},Tt=Dt;var kt=(e,o,s={})=>{let[n,r]=useState({top:0,left:0}),[u,p]=useState(s.preferredAnchor||Q.TopLeft),{offsetX:m=0,offsetY:b=0,overflow:x=true}=s,w=useRef(null),f=useCallback(()=>{let v=0,g=0,M=s.preferredAnchor||Q.TopLeft;if(o)v=o.clientY+b,g=o.clientX+m;else if(e){let d=e.getBoundingClientRect();v=d.bottom+b,g=d.left+m;}if(x&&w.current){let d=w.current.offsetWidth,l=w.current.offsetHeight,{innerWidth:a,innerHeight:i}=window;g+d>a&&(g=o?o.clientX-d-m:(e?.getBoundingClientRect().right||0)-d,M=M.includes("Right")?M:Q.TopRight),v+l>i&&(v=o?o.clientY-l-b:(e?.getBoundingClientRect().top||0)-l-b);}r({top:v,left:g}),p(M);},[o,e,m,b,x,s.preferredAnchor]);return useEffect(()=>{let v=setTimeout(f,0);return window.addEventListener("resize",f),()=>{clearTimeout(v),window.removeEventListener("resize",f);}},[f]),{position:n,targetRef:w,calculatedAnchor:u}},It=kt;var Ot=e=>e%4===0&&e%100!==0||e%400===0,qt=(e,o)=>{switch(e){case 1:return Ot(o)?29:28;case 3:case 5:case 8:case 10:return 30;default:return 31}},rt=(e,o)=>e.toLocaleString("default",{weekday:o}),st=(e,o)=>{let s=new Date;return s.setMonth(e),s.toLocaleString("default",{month:o})},At=(e=1,o,s)=>{let[n,r]=useState(new Date),u=()=>{r(f=>{let v=new Date(f);return v.setMonth(f.getMonth()+e),v});},p=()=>{r(f=>{let v=new Date(f);return v.setMonth(v.getMonth()-e),v});},m=qt(n.getMonth(),n.getFullYear()),b=st(n.getMonth(),s||"long"),x=rt(n,o||"short"),w=Array.from({length:m},(f,v)=>{let g=new Date(n.getFullYear(),n.getMonth(),v+1);return {day:rt(g,o||"short"),date:g.getDate(),month:st(g.getMonth(),s||"long"),year:g.getFullYear()}});return {today:n,daysCount:m,month:b,day:x,days:w,next:u,prev:p}},Bt=At;var Ht=(e,o)=>{let s=useRef(null);return useCallback((...r)=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{e(...r);},o);},[e,o])},Wt=Ht;var Xt=(e=100)=>{let[o,s]=useState(false);return useEffect(()=>{let n=setTimeout(()=>s(true),e);return ()=>clearTimeout(n)},[e]),o},ot=Xt;var Vt=e=>{let[o,s]=useState({width:0,height:0,top:0,left:0,bottom:0,right:0,x:0,y:0}),n=()=>{if(e){let{width:r,height:u,top:p,left:m,bottom:b,right:x,x:w,y:f}=e.getBoundingClientRect();s({width:r,height:u,top:p,left:m,bottom:b,right:x,x:w,y:f});}else s({width:window.innerWidth,height:window.innerHeight,top:0,left:0,bottom:0,right:0,x:0,y:0});};return useEffect(()=>(n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)),[]),o},K=Vt;var jt=()=>{let e=navigator.userAgent,o=/Mobi|Android/i.test(e),s=/Tablet|iPad/i.test(e),n=K();return useEffect(()=>{},[]),{isMobile:o,isTablet:s,isDesktop:!o&&!s,...n}},_t=jt;var Gt=(e,o=false)=>(useEffect(()=>{if(e){if(!window.fbq){let u=document.createElement("script");u.async=true,u.src="https://connect.facebook.net/en_US/fbevents.js",document.head.appendChild(u),window._fbq=window._fbq||[],window.fbq=function(){window._fbq.push(arguments);},window.fbq("init",e),o&&window.fbq("set","debug",true);}window.fbq("track","PageView");}},[e,o]),{trackPageView:()=>{e&&window.fbq("track","PageView");},trackEvent:(u,p)=>{e&&window.fbq("track",u,p);},trackCustom:(u,p)=>{e&&window.fbq("trackCustom",u,p);}}),Zt=Gt;var Kt=e=>(useEffect(()=>{if(e){if(!window.gtag){let n=document.createElement("script");n.async=true,n.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(n),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments);},window.gtag("js",new Date);}window.gtag("config",e);}},[e]),{trackPageView:n=>{e&&window.gtag("config",e,{page_path:n||window.location.pathname});},trackEvent:(n,r)=>{e&&window.gtag("event",n,r);}}),te=Kt;var se=(e,o,s)=>{let[n,r]=useState({loaded:false,error:null}),u=useRef(null);return useEffect(()=>{if(e&&e!==""){var p=new Image;o&&(p.crossOrigin=o),s&&(p.referrerPolicy=s),p.onload=()=>{u.current=p,r({loaded:true,error:null});},p.onerror=()=>{r({loaded:false,error:`Failed to load image at ${e}`});},p.src=e;}},[e]),[u.current?u.current.src:"",n.loaded,n.error]},oe=se;var ie=(e,o,s="circle",n=1)=>{let[r,u]=useState(false),[p,m]=useState({x:0,y:0}),[b,x]=useState(n),w=useRef(null),f=useRef(null),v=()=>{let a=f.current,i=a?.getContext("2d"),c=w.current;!a||!i||!c||(a.width=o,a.height=o,i.clearRect(0,0,o,o),i.globalAlpha=.5,i.drawImage(c,p.x,p.y,c.width*b,c.height*b),i.globalAlpha=1,i.save(),s==="circle"&&(i.beginPath(),i.arc(o/2,o/2,o/2,0,Math.PI*2),i.closePath(),i.clip()),i.drawImage(c,p.x,p.y,c.width*b,c.height*b),i.restore());};return useEffect(v,[b]),useEffect(()=>{if(e){let a=new Image;a.onload=()=>{w.current=a,v();},a.src=e;}},[e,p]),{canvasRef:f,crop:()=>{let a=f.current;return a?a.toDataURL("image/png"):null},setScale:x,handleMouseDown:()=>u(true),handleMouseUp:()=>u(false),handleMouseMove:a=>{!r||!w.current||m(i=>({x:i.x+a.movementX,y:i.y+a.movementY}));}}},ae=ie;var le=(e,o={})=>{let[s,n]=useState(e&&e.length>0?new Array(e.length).fill(0):[]);return useEffect(()=>{if(!e||!e.length)return;let r=new IntersectionObserver(u=>{requestAnimationFrame(()=>{n(p=>{let m=[...p],b=false;return u.forEach(x=>{let w=e.findIndex(f=>f.current===x.target);w!==-1&&m[w]!==x.intersectionRatio&&(m[w]=x.intersectionRatio,b=true);}),b?m:p});});},{rootMargin:"200px",threshold:[1],...o});return e.forEach(u=>{u.current&&r.observe(u.current);}),()=>{e.forEach(u=>{u.current&&r.unobserve(u.current);});}},[e,o]),s},me=le;var ut=(e,o,s,n=20)=>{if(!e||e.length===0||o<=0||s<=0)return "";let r=Math.min(...e.map(g=>g.x)),u=Math.max(...e.map(g=>g.x)),p=Math.min(...e.map(g=>g.y)),m=Math.max(...e.map(g=>g.y)),b=(o-2*n)/(u-r),x=(s-2*n)/(m-p),w=g=>{let M=(g.x-r)*b+n,d=s-((g.y-p)*x+n);return {x:M,y:d}},f=e.map(w),v="";if(f.length>0){v=`M ${f[0].x},${f[0].y}`;for(let g=0;g<f.length-1;g++){let M=f[g],d=f[g+1],l={x:(M.x+d.x)/2,y:M.y},a={x:(M.x+d.x)/2,y:d.y};v+=` C ${l.x},${l.y} ${a.x},${a.y} ${d.x},${d.y}`;}}return v},pe=(e,o,s,n=20)=>{if(!e||e.length===0)return "";let r=ut(e,o,s,n),u=Math.min(...e.map(f=>f.x)),p=Math.max(...e.map(f=>f.x)),m=(o-2*n)/(p-u),b=(e[0].x-u)*m+n,x=(e[e.length-1].x-u)*m+n,w=s-n;return `${r} L ${x},${w} L ${b},${w} Z`},ge=(e,o={width:600,height:300},s=20)=>{let[n,r]=useState(""),[u,p]=useState("");return useEffect(()=>{let m=ut(e,o.width,o.height,s);r(m);let b=pe(e,o.width,o.height,s);p(b);},[e,o.width,o.height,s]),{pathD:n,areaPathD:u}},de=ge;var we=(e,o)=>{let[s,n]=useState(null);return useLayoutEffect(()=>{if(o&&e.current){let r=e.current.getBoundingClientRect();n({width:r.width,height:r.height,top:r.top,left:r.left});}},[o,e]),{sourceRect:s,isMeasured:!!s}},xe=we;var Se=(e,o,s={childList:true,subtree:true})=>{let n=useRef(null);useEffect(()=>{if(e)return n.current=new MutationObserver(o),n.current.observe(e,s),()=>{n.current&&n.current.disconnect();}},[e,o,s]);},et=Se;var Te=()=>{let[e,o]=useState(null),s=()=>{o(navigator.onLine);};return useEffect(()=>(setTimeout(()=>o(navigator.onLine)),window.addEventListener("online",s),window.addEventListener("offline",s),()=>{window.removeEventListener("online",s),window.removeEventListener("offline",s);}),[]),e},Pe=Te;var ke=(e=15)=>{if(e<=0)throw new Error("intervalMinutes must be greater than 0");let o=x=>{let w=new Date(x),f=w.getMinutes(),v=f%e;return v===0?w.setMinutes(f+e):w.setMinutes(f+(e-v)),w.setSeconds(0),w.setMilliseconds(0),w},[s,n]=useState(()=>o(new Date));useEffect(()=>{let x=()=>{let v=o(new Date);v.getTime()!==s.getTime()&&n(v);};x();let w=setInterval(x,1e3);return ()=>clearInterval(w)},[e,s]);let r=new Date,u=Math.max(0,s.getTime()-r.getTime()),p=Math.floor(u/6e4),m=Math.floor(u%6e4/1e3),b=`${p}m ${m.toString().padStart(2,"0")}s`;return {minutes:p,seconds:m,formatted:b,nextBoundary:s}},Ie=ke;var Oe=e=>{let{vapidPublicKey:o,serviceWorkerPath:s="/sw.js",requestPermissionOnMount:n=false}=e,[r,u]=useState("default"),[p,m]=useState(null),[b,x]=useState(null),[w,f]=useState(null),[v,g]=useState(false),[M,d]=useState(null),[l,a]=useState(false),i=useCallback(async()=>{if(!l)return null;try{let h=await navigator.serviceWorker.register(s,{scope:"/",updateViaCache:"all"});return d(h),h}catch(h){return console.error("Service Worker registration failed:",h),f("Failed to register service worker"),null}},[s,l]),c=useCallback(async h=>{try{let T=await h.pushManager.getSubscription();return m(T),x(T?T.toJSON():null),T}catch(T){return console.error("Failed to get subscription:",T),f("Failed to get subscription"),null}},[]),S=useCallback(async()=>{if(!l||!M)return f("Push not supported or service worker not registered"),null;g(true),f(null);try{let h=await Notification.requestPermission();if(u(h),h!=="granted")return f("Permission not granted for notifications"),g(!1),null;let T=urlBase64ToUint8Array(o),D=await M.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:T});return m(D),x(D.toJSON()),g(!1),D}catch(h){return console.error("Subscription failed:",h),f(h.message||"Failed to subscribe"),g(false),null}},[l,M,o]),E=useCallback(async()=>{if(!p)return true;try{let h=await p.unsubscribe();return h&&(m(null),x(null)),h}catch(h){return console.error("Failed to unsubscribe:",h),false}},[p]),P=useCallback(async()=>{let h=await Notification.requestPermission();return u(h),h},[]);return useEffect(()=>{let h="PushManager"in window&&"serviceWorker"in navigator;if(a(h),!h){f("Push notifications not supported in this browser");return}let T=true;return (async()=>{let k=await i();!k||!T||(u(Notification.permission),await c(k),n&&Notification.permission==="default"&&await P());})(),()=>{T=false;}},[l,i,c,n,P]),useEffect(()=>{if(!("permissions"in navigator))return;let h=false;(async()=>{if(h)return;let D=await navigator.permissions.query({name:"notifications"});D.onchange=()=>{u(Notification.permission),Notification.permission==="denied"&&(h=true,E());};})();},[E]),{permission:r,subscription:p,subscriptionMeta:b,isSupported:l,subscribe:S,unsubscribe:E,requestPermission:P,error:w,isLoading:v}},qe=Oe;var Ne=e=>{let[o,s]=useState({width:0,height:0,top:0,left:0});return useEffect(()=>{let n=e instanceof HTMLElement?e:e.current,r=p=>{for(let m of p){let{width:b,height:x,top:w,left:f}=m.contentRect;s({width:b,height:x,top:w,left:f});}},u=new ResizeObserver(r);return n&&u.observe(n),()=>{n&&u.unobserve(n);}},[e]),o},ye=Ne;var $e=(e,o={})=>{let s=useRef(null),n=useRef(null),r=useRef(null),u=useRef(null),p=useMemo(()=>e??1,[e]),m=useRef(false),b=useRef(false),x=useRef(0),w=useRef(0),f=useRef(0),v=useRef(0),g=useRef(null),M=useCallback(()=>{if(!n.current||!r.current||!u.current)return;let{clientHeight:D,scrollHeight:k,scrollTop:O,clientWidth:I,scrollWidth:y,scrollLeft:q}=n.current,N=Math.max(D/k*D,30),H=D-N,F=O/(k-D)*H;r.current.style.height=`${N}px`,r.current.style.transform=`translateY(${F}px)`,r.current.style.willChange="transform, height";let z=Math.max(I/y*I,30),V=I-z,dt=q/(y-I)*V;u.current.style.width=`${z}px`,u.current.style.transform=`translateX(${dt}px)`,u.current.style.willChange="transform, width",k<=D&&s.current?s.current.classList.add("--no-y"):s.current&&s.current.classList.remove("--no-y"),y<=I&&s.current?s.current.classList.add("--no-x"):s.current&&s.current.classList.remove("--no-x");},[]),d=useCallback(()=>{g.current&&cancelAnimationFrame(g.current),g.current=requestAnimationFrame(()=>{if(M(),n.current){let{scrollTop:D,scrollHeight:k,clientHeight:O,scrollLeft:I,scrollWidth:y,clientWidth:q}=n.current,B=D/(k-O)*100,N=I/(y-q)*100;Object.keys(o).forEach(H=>{let F=parseFloat(H);Math.abs(B-F)<1&&o[F]?.(),Math.abs(N-F)<1&&o[F]?.();});}});},[M,o]),l=useCallback(()=>{n.current&&(d(),window.dispatchEvent(new Event("scroll")));},[d]),a=D=>{m.current=true,w.current=D.clientY,f.current=n.current?.scrollTop||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},i=D=>{b.current=true,x.current=D.clientX,v.current=n.current?.scrollLeft||0,document.body.style.userSelect="none",s.current&&s.current?.classList.add("--scrolling");},c=useCallback(D=>{if(!n.current||!m.current&&!b.current)return;let{clientHeight:k,scrollHeight:O,clientWidth:I,scrollWidth:y}=n.current;if(m.current){let q=O-k,B=r.current?.clientHeight||30,N=k-B,H=D.clientY-w.current,F=Math.min(Math.max(f.current+H/N*q,0),q);n.current.scrollTop=F;}if(b.current){let q=y-I,B=u.current?.clientWidth||30,N=I-B,H=D.clientX-x.current,F=Math.min(Math.max(v.current+H/N*q,0),q);n.current.scrollLeft=F;}},[]),S=()=>{m.current=false,b.current=false,document.body.style.userSelect="",s.current&&s.current?.classList.remove("--scrolling"),g.current&&cancelAnimationFrame(g.current);},E=()=>n.current?.scrollTo({top:0,behavior:"smooth"}),P=()=>n.current?.scrollTo({top:n.current.scrollHeight,behavior:"smooth"}),h=()=>n.current?.scrollTo({left:0,behavior:"smooth"}),T=()=>n.current?.scrollTo({left:n.current.scrollWidth,behavior:"smooth"});return useEffect(()=>{let D=n.current;if(!D)return;let k=O=>{if(!n.current)return;let{scrollTop:I,scrollHeight:y,clientHeight:q,scrollLeft:B,scrollWidth:N,clientWidth:H}=n.current,F=I,Y=B,z=false;if(Math.abs(O.deltaY)>Math.abs(O.deltaX)){let V=y-q;F=I+O.deltaY*p,F=Math.max(0,Math.min(F,V)),F!==I&&(n.current.scrollTop=F,z=true);}else {let V=N-H;Y=B+O.deltaX*p,Y=Math.max(0,Math.min(Y,V)),Y!==B&&(n.current.scrollLeft=Y,z=true);}z&&d();};return window.addEventListener("resize",d),D.addEventListener("scroll",l,{passive:true}),D.addEventListener("wheel",k,{passive:true}),document.addEventListener("mousemove",c),document.addEventListener("mouseup",S),d(),()=>{window.removeEventListener("resize",d),D.removeEventListener("scroll",l),D.removeEventListener("wheel",k),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",S),g.current&&cancelAnimationFrame(g.current);}},[l,c,d,p]),et(n.current,d),{rootRef:s,containerRef:n,thumbY:r,thumbX:u,scrollToTop:E,scrollToBottom:P,scrollToLeft:h,scrollToRight:T,onScrollY:a,onScrollX:i}},Ue=$e;var ze=(e,o)=>{let{lerpFactor:s=.1,x:n,y:r,xMultiplier:u=.25,yMultiplier:p=.25,scale:m,rotate:b}=o,x=useRef(0),w=useRef(0),f=useRef(0),v=useRef(0),g=useRef(performance.now()),M=useRef(null),d=useRef(false),l=useRef(0),a=.2;return useEffect(()=>{if(typeof window>"u")return;let i=()=>{let S=performance.now(),E=(S-g.current)/1e3;g.current=S;let P=v.current-f.current,h=P/E;if(f.current+=P*s,x.current=f.current,w.current=h,l.current+=(h-l.current)*s,e.current){let T=n?x.current*n*u:0,D=r?x.current*r*p:0,k=m?clamp(m.max-Math.abs(l.current)*m.factor,m.min,m.max):1,O=b?w.current*(b.multiplier??1)*(b.direction??1):0;e.current.style.transform=`
|
|
4
|
+
translate3d(${T}px, ${D}px, 0)
|
|
5
|
+
scale(${k})
|
|
6
6
|
rotate(${O}deg)
|
|
7
|
-
`.trim();}Math.abs(
|
|
7
|
+
`.trim();}Math.abs(P)>a||Math.abs(h)>a?M.current=requestAnimationFrame(i):(d.current=false,M.current=null);},c=()=>{v.current=window.scrollY,d.current||(g.current=performance.now(),M.current=requestAnimationFrame(i),d.current=true);};return window.addEventListener("scroll",c,{passive:true}),()=>{window.removeEventListener("scroll",c),M.current&&cancelAnimationFrame(M.current);}},[s,n,r,u,p,m,b]),{position:x,velocity:w}},Ve=ze;var je=(e,o)=>{useEffect(()=>{let s=n=>{let r=[];n.ctrlKey&&r.push(17),n.shiftKey&&r.push(16),n.altKey&&r.push(18),n.metaKey&&r.push(19),r.push(n.keyCode),e.forEach(({keys:u,callback:p})=>{u.every(m=>r.includes(m))&&((o??true)&&n.preventDefault(),p(n));});};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,o]);},_e=je;var Ce=e=>{let{apiUrl:o,onChange:s,onQueFinished:n}=e,r=useRef({que:[],index:-1,speed:0,stamp:null,token:null,status:0}),u=()=>s?.(x()),p=()=>{},m=()=>{r.current.stamp=Date.now();let g=x(),M=new FormData;M.append("ID",g.ID),M.append("dir",g.dir),M.append("server",g.server.ID),M.append("token",g.server.token),M.append("file",g.file),M.append("fs",g.file.size.toString()),r.current.cancelToken=getCancelToken(),withPost(`${r.current.que[r.current.index].server.uri}/receive`,M,86400,true,void 0,d=>{r.current.que[r.current.index].status=2,s?.({...x(),progress:d.progress||0});}).then(d=>{r.current.que[r.current.index].progress=1,r.current.que[r.current.index].status=4,r.current.status=0,u(),f();}).catch(d=>{r.current.que[r.current.index].status=-1,r.current.status=0,u(),f();});},b=g=>{r.current.que[r.current.index].status=1,u(),withPost(`${o}get_server`,{size:x().file.size}).then(M=>{r.current.que[r.current.index].server=M.server,r.current.que[r.current.index].status=2,u(),m();}).catch(M=>{r.current.que[r.current.index].status=-1,r.current.status=0,u(),f();});},x=()=>r.current.que[r.current.index],w=()=>r.current.que,f=()=>{r.current.status==0&&r.current.que.length-1>r.current.index?(r.current.status=2,r.current.index++,r.current.que[r.current.index].status=2,u(),r.current.que[r.current.index].remote?p():b()):n?.();};return {get:()=>r,getQue:w,addToQue:g=>{r.current.que.push({ID:uuid(12),file:g.file,dir:g.dir,remote:g.remote,progress:0,speed:0,eta:0,bytes:0,status:0,server:null}),f();}}},Ke=Ce;var U=new Map,W=new Map,J=new Map,tn=(e,o)=>{let{onOpen:s,onClose:n,onRawMessage:r,onMessage:u,onError:p,reconnect:m=true}=o||{},[b,x]=useState(false),[w,f]=useState([]),v=a=>J.get(a)??2,g=a=>{let i=v(a),c=Math.min(i*2,60);return J.set(a,c),c*1e3},M=a=>{J.set(a,2);},d=useCallback(()=>{if(U.has(e)){let i=U.get(e);i&&(i.onmessage=c=>{f(E=>[...E,c.data]),r?.(c);let S=JSON.parse(Buffer.isBuffer(c)?c.toString("utf8"):typeof c=="string"?c:c.data);u?.(S),W.get(e)?.forEach(E=>E(c));});return}let a=new WebSocket(e);U.set(e,a),W.set(e,[]),a.onopen=i=>{x(true),M(e),s?.(i);},a.onmessage=i=>{f(S=>[...S,i.data]),r?.(i);let c=JSON.parse(Buffer.isBuffer(i)?i.toString("utf8"):typeof i=="string"?i:i.data);u?.(c),W.get(e)?.forEach(S=>S(i));},a.onerror=i=>{p?.(i);},a.onclose=i=>{if(x(false),n?.(i),U.delete(e),W.delete(e),m&&i.code!==1e3){let c=g(e);console.log(`Reconnecting in ${c/1e3} seconds...`),setTimeout(()=>{U.has(e)||d();},c);}};},[e,s,n,u,p,m]);useEffect(()=>(d(),()=>{W.get(e)?.length===0&&(U.get(e)?.close(),U.delete(e),W.delete(e),J.delete(e));}),[]),useEffect(()=>{let a=i=>f(c=>[...c,i.data]);return W.get(e)?.push(a),()=>{let i=W.get(e)||[];W.set(e,i.filter(c=>c!==a));}},[e]);let l=useCallback(a=>{let i=U.get(e);if(i&&i.readyState===WebSocket.OPEN){let c=typeof a=="string"?a:JSON.stringify(a);i.send(c);}else console.log("WebSocket is not connected.");},[e]);return {isConnected:b,messages:w,sendMessage:l}},en=tn;export{ht as AnchorType,G as CropShape,Z as KeyCode,It as useAnchorPosition,Bt as useCalendar,vt as useCommandActions,Tt as useDB,Wt as useDebounce,ot as useDelayed,_t as useDevice,K as useDimensions,Zt as useFacebookPixel,te as useGoogleTagManager,oe as useImage,ae as useImageCropper,me as useIntersectionObserver,de as useLineChart,xe as useMorph,ot as useMounted,et as useMutationObserver,Pe as useNetworkStatus,Ie as useNextInterval,qe as usePushNotifications,ye as useResizeObserver,Ve as useScrollPhysics,Ue as useScrollbar,_e as useShortcuts,Ke as useUploader,en as useWebSocket};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zuzjs/hooks",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "ZuzJS Hooks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"@types/md5": "^2.3.6",
|
|
41
41
|
"@types/react": "^19.2.10",
|
|
42
42
|
"@types/react-dom": "^19.2.3",
|
|
43
|
-
"@zuzjs/core": "^0.3.
|
|
43
|
+
"@zuzjs/core": "^0.3.4",
|
|
44
44
|
"chokidar": "^5.0.0",
|
|
45
45
|
"commander": "^14.0.2",
|
|
46
46
|
"date-fns": "^4.1.0",
|