Sync build v0.9.303

Automated sync from private repository.
Commit: fa42e00b651e5a5c5ebab7249ed7582220b9b3c6
This commit is contained in:
GitHub Actions Bot
2026-03-03 01:28:13 +00:00
parent f7cf72cf39
commit 0fb09907f1
90 changed files with 515 additions and 504 deletions
+1 -1
View File
@@ -1 +1 @@
0.9.302
0.9.303
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as h,r as u,j as e,c as t}from"./index-BOwCLZTK.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-D21OFED5.js";/**
import{d as h,r as u,j as e,c as t}from"./index-CvSa8h-C.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-BUBqf9vH.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/latin-400-BcR6IdUc.css","assets/latin-500-DCnAHIrw.css","assets/latin-600-CnkPk-vb.css","assets/latin-700-UC1i-VSI.css"])))=>i.map(i=>d[i]);
import{d as ue,r as t,j as e,c as l,L as H,D as B,bk as J,am as Ts,dS as Re,dT as ss,dU as Ze,_ as Te,T as ie,M as et,S as st,dV as tt,N as X,cn as Qe,b_ as at,dW as nt,z as lt,dX as _s,dY as rt,dZ as it,d_ as ot,R as ct,B as F,d$ as qe,I as dt,E as ut,F as mt}from"./index-BOwCLZTK.js";import{g as xt,a as ft,c as ht,r as pt,s as yt,b as gt,u as bt,d as jt}from"./system-BNWIl4nC.js";import{C as vt}from"./ConfirmModal-DpSKXZ01.js";import{N as Nt}from"./NodeInformationCard-PgTi9luy.js";import{i as kt,g as wt,s as Ct,a as St,k as Tt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as _t,a as Ft,B as Et}from"./PageLayout-QKntxcnp.js";import{T as Is}from"./trash-2-qMD09ppP.js";import{R as te,C as _e}from"./Grid-eFMUBxsw.js";import{A as Rt}from"./antenna-rYsqNluv.js";import{P as Fs}from"./plus-ClrHVFhr.js";import{K as Ge}from"./key-round-Cv6ASKpS.js";import{C as Pt}from"./circle-check-CmQaOkab.js";import{T as Be}from"./triangle-alert-SO3tIa8w.js";import{R as Dt}from"./refresh-cw-C9txhqc9.js";import{C as It}from"./chevron-right-DJVm4pVP.js";import"./DataBox-BVnEv6Au.js";/**
import{d as ue,r as t,j as e,c as l,L as H,D as B,bo as J,ao as Ts,dT as Re,dU as ss,dV as Ze,_ as Te,T as ie,M as et,S as st,dW as tt,N as X,cr as Qe,c2 as at,dX as nt,z as lt,dY as _s,dZ as rt,d_ as it,d$ as ot,R as ct,B as F,e0 as qe,I as dt,E as ut,F as mt}from"./index-CvSa8h-C.js";import{g as xt,a as ft,c as ht,r as pt,s as yt,b as gt,u as bt,d as jt}from"./system-CteuZERM.js";import{C as vt}from"./ConfirmModal-D2DSFKRK.js";import{N as Nt}from"./NodeInformationCard-CtqEav-P.js";import{i as kt,g as wt,s as Ct,a as St,k as Tt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as _t,a as Ft,B as Et}from"./PageLayout-B8orsDlo.js";import{T as Is}from"./trash-2-DUG72tk9.js";import{R as te,C as _e}from"./Grid-suKoG48i.js";import{A as Rt}from"./antenna-DiJxjpBL.js";import{P as Fs}from"./plus-CNNHSjgp.js";import{K as Ge}from"./key-round-CYJwakCI.js";import{C as Pt}from"./circle-check-DW83e7Fg.js";import{T as Be}from"./triangle-alert-C7tm61-l.js";import{R as Dt}from"./refresh-cw-DQJSjSjI.js";import{C as It}from"./chevron-right-1kmv-Vqa.js";import"./DataBox-CwAsAwyY.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{r as d,j as s,ak as m,dJ as x,c as f,al as g,e1 as C,B as a}from"./index-BOwCLZTK.js";import{T as j}from"./triangle-alert-SO3tIa8w.js";const p={danger:"text-sys-red",warning:"text-sys-indigo",default:"text-sys-blue"},u={danger:"danger",warning:"warning",default:"primary"};function N({isOpen:n,title:r="Confirm",message:l,confirmLabel:t="Confirm",cancelLabel:i="Cancel",variant:o="default",onConfirm:c,onCancel:e}){return s.jsxs(m,{open:n,onClose:e,size:"sm",children:[s.jsx(x,{icon:s.jsx(j,{className:f("w-5 h-5",p[o])}),title:r,onClose:e}),s.jsx(g,{children:s.jsx("p",{className:"text-sm text-fg-secondary",children:l})}),s.jsxs(C,{children:[s.jsx(a,{color:"muted",onClick:e,className:"flex-1",children:i}),s.jsx(a,{color:u[o],onClick:c,className:"flex-1",children:t})]})]})}const A=d.memo(N);export{A as C};
import{r as d,j as s,am as m,dK as x,c as f,an as g,e2 as C,B as a}from"./index-CvSa8h-C.js";import{T as j}from"./triangle-alert-C7tm61-l.js";const p={danger:"text-sys-red",warning:"text-sys-indigo",default:"text-sys-blue"},u={danger:"danger",warning:"warning",default:"primary"};function N({isOpen:n,title:r="Confirm",message:l,confirmLabel:t="Confirm",cancelLabel:i="Cancel",variant:o="default",onConfirm:c,onCancel:e}){return s.jsxs(m,{open:n,onClose:e,size:"sm",children:[s.jsx(x,{icon:s.jsx(j,{className:f("w-5 h-5",p[o])}),title:r,onClose:e}),s.jsx(g,{children:s.jsx("p",{className:"text-sm text-fg-secondary",children:l})}),s.jsxs(C,{children:[s.jsx(a,{color:"muted",onClick:e,className:"flex-1",children:i}),s.jsx(a,{color:u[o],onClick:c,className:"flex-1",children:t})]})]})}const A=d.memo(N);export{A as C};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{r as i,F as E,j as e,c as s,D as S,E as T}from"./index-BOwCLZTK.js";const k={standard:"w-3 h-3",compact:"w-2.5 h-2.5",responsive:"w-2.5 h-2.5 sm:w-3 sm:h-3"};function $({children:a,copyValue:g,copy:n=!1,size:r="standard",className:u,title:f,color:x,truncate:l}){const[d,m]=i.useState(!1),[w,y]=i.useState(!1),p=i.useRef(null),o=g??(typeof a=="string"?a:""),C=k[r],h=(()=>{if(!l||typeof a!="string")return a;const t=a,[c,j]=l===!0?[6,4]:l;return t.length<=c+j+3?t:`${t.slice(0,c)}${t.slice(-j)}`})(),N=i.useCallback(async t=>{if(!n)return;t.preventDefault(),t.stopPropagation(),p.current&&clearTimeout(p.current);const c=await E(o);m(!0),p.current=setTimeout(()=>m(!1),2e3),c||console.warn("Copy may have failed for:",o.slice(0,16)+"...")},[n,o]),v=r==="compact"?"data-box-compact":r==="responsive"?"data-box-responsive":"",b=n?f||`Click to copy: ${o}`:f;return n?e.jsxs("button",{type:"button",onClick:N,onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1),className:s("data-box interactive",v,"cursor-pointer select-none gap-1","hover-bg",x,u),title:b,"aria-label":`Copy ${o}`,children:[e.jsx("span",{className:s("transition-colors duration-200",d?"text-sys-green":""),children:h}),e.jsx("span",{className:s("flex items-center justify-center",r==="compact"?"w-3 h-3":"w-3.5 h-3.5"),children:d?e.jsx(S,{className:s("text-sys-green",C)}):e.jsx(T,{className:s("transition-opacity duration-200",w?"opacity-70":"opacity-40",C)})})]}):e.jsx("span",{className:s("data-box",v,x,u),title:b,children:h})}export{$ as D};
import{r as i,F as E,j as e,c as s,D as S,E as T}from"./index-CvSa8h-C.js";const k={standard:"w-3 h-3",compact:"w-2.5 h-2.5",responsive:"w-2.5 h-2.5 sm:w-3 sm:h-3"};function $({children:a,copyValue:g,copy:n=!1,size:r="standard",className:u,title:f,color:x,truncate:l}){const[d,m]=i.useState(!1),[w,y]=i.useState(!1),p=i.useRef(null),o=g??(typeof a=="string"?a:""),C=k[r],h=(()=>{if(!l||typeof a!="string")return a;const t=a,[c,j]=l===!0?[6,4]:l;return t.length<=c+j+3?t:`${t.slice(0,c)}${t.slice(-j)}`})(),N=i.useCallback(async t=>{if(!n)return;t.preventDefault(),t.stopPropagation(),p.current&&clearTimeout(p.current);const c=await E(o);m(!0),p.current=setTimeout(()=>m(!1),2e3),c||console.warn("Copy may have failed for:",o.slice(0,16)+"...")},[n,o]),v=r==="compact"?"data-box-compact":r==="responsive"?"data-box-responsive":"",b=n?f||`Click to copy: ${o}`:f;return n?e.jsxs("button",{type:"button",onClick:N,onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1),className:s("data-box interactive",v,"cursor-pointer select-none gap-1","hover-bg",x,u),title:b,"aria-label":`Copy ${o}`,children:[e.jsx("span",{className:s("transition-colors duration-200",d?"text-sys-green":""),children:h}),e.jsx("span",{className:s("flex items-center justify-center",r==="compact"?"w-3 h-3":"w-3.5 h-3.5"),children:d?e.jsx(S,{className:s("text-sys-green",C)}):e.jsx(T,{className:s("transition-opacity duration-200",w?"opacity-70":"opacity-40",C)})})]}):e.jsx("span",{className:s("data-box",v,x,u),title:b,children:h})}export{$ as D};
@@ -1,4 +1,4 @@
import{d as A,r as a,cu as g,j as o,cv as y}from"./index-BOwCLZTK.js";import{A as x}from"./index-2RIoVPos.js";/**
import{d as A,r as a,cv as g,j as o,cw as y}from"./index-CvSa8h-C.js";import{A as x}from"./index-CPifxb0-.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{r as b,j as c,c as d}from"./index-BOwCLZTK.js";const g={hero:{mobile:12},"hero-tall":{mobile:12},"hero-auto":{mobile:12},panel:{mobile:12,md:6},feature:{mobile:12,md:6,lg:4},standard:{mobile:12,sm:6,lg:4,xl:3},compact:{mobile:6,lg:3},widget:{mobile:6,sm:4,md:3,lg:2},auto:{mobile:12}},p={hero:"bento-row-hero","hero-tall":"bento-row-hero-tall","hero-auto":"bento-row-hero-auto",panel:"bento-row-panel",feature:"bento-row-feature",standard:"bento-row-standard",compact:"bento-row-compact",widget:"bento-row-widget",auto:"bento-row-auto"};function w({template:o,children:r,className:e,gap:n}){const t=g[o],m=p[o],a=n==="none"?"gap-0":n==="sm"?"bento-gap-sm":n==="lg"?"bento-gap-lg":"bento-gap",i=b.Children.map(r,l=>!b.isValidElement(l)||l.type===u?l:c.jsx(u,{span:t.mobile,sm:t.sm,md:t.md,lg:t.lg,xl:t.xl,children:l}));return c.jsx("div",{className:d("bento-row",m,a,e),children:i})}function s(o,r=""){const e=r?`${r}:`:"";return o==="full"?`${e}col-span-full`:o==="auto"?`${e}col-auto`:o===1.5?`${e}bento-col-1-5`:`${e}bento-col-${o}`}function u({children:o,span:r,sm:e,md:n,lg:t,xl:m,ratio:a,className:i}){const l=d("bento-cell",s(r),e&&s(e,"sm"),n&&s(n,"md"),t&&s(t,"lg"),m&&s(m,"xl"),i);return c.jsx("div",{className:l,"data-ratio":a??void 0,style:a?{"--cell-ratio":a}:void 0,children:o})}export{u as C,w as R};
import{r as b,j as c,c as d}from"./index-CvSa8h-C.js";const g={hero:{mobile:12},"hero-tall":{mobile:12},"hero-auto":{mobile:12},panel:{mobile:12,md:6},feature:{mobile:12,md:6,lg:4},standard:{mobile:12,sm:6,lg:4,xl:3},compact:{mobile:6,lg:3},widget:{mobile:6,sm:4,md:3,lg:2},auto:{mobile:12}},p={hero:"bento-row-hero","hero-tall":"bento-row-hero-tall","hero-auto":"bento-row-hero-auto",panel:"bento-row-panel",feature:"bento-row-feature",standard:"bento-row-standard",compact:"bento-row-compact",widget:"bento-row-widget",auto:"bento-row-auto"};function w({template:o,children:r,className:e,gap:n}){const t=g[o],m=p[o],a=n==="none"?"gap-0":n==="sm"?"bento-gap-sm":n==="lg"?"bento-gap-lg":"bento-gap",i=b.Children.map(r,l=>!b.isValidElement(l)||l.type===u?l:c.jsx(u,{span:t.mobile,sm:t.sm,md:t.md,lg:t.lg,xl:t.xl,children:l}));return c.jsx("div",{className:d("bento-row",m,a,e),children:i})}function s(o,r=""){const e=r?`${r}:`:"";return o==="full"?`${e}col-span-full`:o==="auto"?`${e}col-auto`:o===1.5?`${e}bento-col-1-5`:`${e}bento-col-${o}`}function u({children:o,span:r,sm:e,md:n,lg:t,xl:m,ratio:a,className:i}){const l=d("bento-cell",s(r),e&&s(e,"sm"),n&&s(n,"md"),t&&s(t,"lg"),m&&s(m,"xl"),i);return c.jsx("div",{className:l,"data-ratio":a??void 0,style:a?{"--cell-ratio":a}:void 0,children:o})}export{u as C,w as R};
@@ -1 +1 @@
import{r as l,j as t,Z as O}from"./index-BOwCLZTK.js";import{b as F,c as x}from"./keycap-sfx-ByZp-njj.js";const R={a:"24,3 76,3 83,7 76,11 24,11 17,7",b:"88,22 93,27 93,71 88,76 83,71 83,27",c:"88,106 93,111 93,155 88,160 83,155 83,111",d:"24,171 76,171 83,175 76,179 24,179 17,175",e:"12,106 17,111 17,155 12,160 7,155 7,111",f:"12,22 17,27 17,71 12,76 7,71 7,27",g:"24,86 76,86 83,91 76,96 24,96 17,91"},w=Object.keys(R),N={0:"abcdef",1:"bc",2:"abdeg",3:"abcdg",4:"bcfg",5:"acdfg",6:"acdefg",7:"abc",8:"abcdefg",9:"abcdfg",A:"abcefg",B:"cdefg",C:"adef",D:"bcdeg",E:"adefg",F:"aefg",G:"acdef",H:"bcefg",I:"ef",J:"bcde",L:"def",M:"abcefg",N:"ceg",O:"abcdef",P:"abefg",Q:"abcfg",R:"eg",S:"acdfg",T:"defg",U:"bcdef",V:"cde",Y:"bcdfg",Z:"abdeg",a:"abcefg",b:"cdefg",c:"deg",d:"bcdeg",e:"adefg",f:"aefg",g:"abcdfg",h:"cefg",i:"c",j:"bcde",l:"def",m:"abcef",n:"ceg",o:"cdeg",p:"abefg",r:"eg",s:"acdfg",t:"defg",u:"cde",v:"cde",y:"bcdfg"," ":"",_:"d","-":"g","=":"dg","°":"abfg",'"':"bf","'":"f","(":"adef",")":"abcd","[":"adef","]":"abcd","!":"bc",".":"d"},C=6,D=56,L=2;function B(){return w.filter(()=>Math.random()>.45).join("")}function $(r,i){const n=Array.from(r).map(a=>N[a.toUpperCase()]??N[a]??""),d=Math.max(0,(i??0)-r.length);for(let a=0;a<d;a++)n.push("");return n}function Y({text:r,color:i="currentColor",size:n=18,minChars:d,noCycle:a=!1,className:S}){const h=Math.round(n*.5494505494505495),M=document.documentElement.dataset.mode==="light"?.08:.16,[T,f]=l.useState(null);l.useEffect(()=>{if(a)return;const e=$(r,d),o=e.length,g=C+(o-1)*L;let y=0,b,E=!1;const k=()=>{if(!E){if(y++,y>=g){f(null);return}f(e.map((j,_)=>{const v=C+_*L;return y>=v?j:B()})),b=setTimeout(k,D)}};return k(),()=>{E=!0,clearTimeout(b)}},[r,d,a]);const c=(e,o)=>t.jsx("svg",{viewBox:"0 0 100 182",width:h,height:n,className:"seven-seg__char","aria-hidden":"true",children:w.map(g=>t.jsx("polygon",{points:R[g],fill:i,stroke:i,strokeWidth:4,strokeLinejoin:"round",opacity:e.includes(g)?1:M},g))},o),s=$(r,d),u=T??s;return t.jsxs("span",{className:`seven-seg${S?` ${S}`:""}`,children:[u.map((e,o)=>c(e,`${o}-${e}`)),t.jsx("span",{className:"sr-only",children:r})]})}const G={grey:"/assets/keycap.svg",red:"/assets/keycap-red.svg"},I=O[900],P="#FFDEB0";function Z({icon:r,variant:i="grey",onClick:n,onPress:d,sentDuration:a=2e3,title:S,disabled:h=!1,className:m,iconColor:M=I,iconActiveColor:T=P,indicators:f}){const c=!!d,[s,u]=l.useState("idle"),[e,o]=l.useState(!1),g=l.useRef(),y=c?s==="held":e,b=c&&(s==="sending"||s==="sent"),E=c?s==="held"||s==="sending":e;l.useEffect(()=>()=>clearTimeout(g.current),[]);const k=l.useCallback(()=>{h||b||(F(),c?u("held"):o(!0))},[h,b,c]),j=l.useCallback(async()=>{if(c){if(s!=="held")return;x(),u("sending");const p=await d();u(p?"sent":"idle"),p&&(g.current=setTimeout(()=>u("idle"),a))}else{if(!e)return;o(!1),x(),n==null||n()}},[c,s,d,a,e,n]),_=l.useCallback(()=>{c?s==="held"&&(x(),u("idle")):(e&&x(),o(!1))},[c,s,e]),v=t.jsx("button",{onMouseDown:k,onMouseUp:j,onMouseLeave:_,onTouchStart:k,onTouchEnd:j,onTouchCancel:_,disabled:h||b,className:`keycap-btn${i==="red"?" keycap-btn--red-cap":""}${E?" keycap-btn--pressed":""}${m&&!f?` ${m}`:""}`,title:S,children:t.jsxs("div",{className:"keycap-wrap",children:[t.jsx("img",{src:G[i],alt:"",className:"keycap-btn__img",draggable:!1}),t.jsx("span",{className:"keycap-icon-overlay",style:{color:y||s==="sending"?T:M},children:r})]})});return f!=null&&f.length?t.jsxs("div",{className:`keycap-group${m?` ${m}`:""}`,children:[v,t.jsx("div",{className:"indicator-key-pair",children:f.map(p=>{const A=p.trackPress?s:p.active?"active":"idle";return t.jsxs("div",{className:`indicator-key${A!=="idle"?` indicator-key--${A}`:""}`,children:[t.jsx("span",{className:"indicator-key__label",children:p.label}),t.jsx("span",{className:"indicator-key__led"})]},p.label)})})]}):v}export{Z as K,Y as S};
import{r as l,j as t,Z as O}from"./index-CvSa8h-C.js";import{b as F,c as x}from"./keycap-sfx-ByZp-njj.js";const R={a:"24,3 76,3 83,7 76,11 24,11 17,7",b:"88,22 93,27 93,71 88,76 83,71 83,27",c:"88,106 93,111 93,155 88,160 83,155 83,111",d:"24,171 76,171 83,175 76,179 24,179 17,175",e:"12,106 17,111 17,155 12,160 7,155 7,111",f:"12,22 17,27 17,71 12,76 7,71 7,27",g:"24,86 76,86 83,91 76,96 24,96 17,91"},w=Object.keys(R),N={0:"abcdef",1:"bc",2:"abdeg",3:"abcdg",4:"bcfg",5:"acdfg",6:"acdefg",7:"abc",8:"abcdefg",9:"abcdfg",A:"abcefg",B:"cdefg",C:"adef",D:"bcdeg",E:"adefg",F:"aefg",G:"acdef",H:"bcefg",I:"ef",J:"bcde",L:"def",M:"abcefg",N:"ceg",O:"abcdef",P:"abefg",Q:"abcfg",R:"eg",S:"acdfg",T:"defg",U:"bcdef",V:"cde",Y:"bcdfg",Z:"abdeg",a:"abcefg",b:"cdefg",c:"deg",d:"bcdeg",e:"adefg",f:"aefg",g:"abcdfg",h:"cefg",i:"c",j:"bcde",l:"def",m:"abcef",n:"ceg",o:"cdeg",p:"abefg",r:"eg",s:"acdfg",t:"defg",u:"cde",v:"cde",y:"bcdfg"," ":"",_:"d","-":"g","=":"dg","°":"abfg",'"':"bf","'":"f","(":"adef",")":"abcd","[":"adef","]":"abcd","!":"bc",".":"d"},C=6,D=56,L=2;function B(){return w.filter(()=>Math.random()>.45).join("")}function $(r,i){const n=Array.from(r).map(a=>N[a.toUpperCase()]??N[a]??""),d=Math.max(0,(i??0)-r.length);for(let a=0;a<d;a++)n.push("");return n}function Y({text:r,color:i="currentColor",size:n=18,minChars:d,noCycle:a=!1,className:S}){const h=Math.round(n*.5494505494505495),M=document.documentElement.dataset.mode==="light"?.08:.16,[T,f]=l.useState(null);l.useEffect(()=>{if(a)return;const e=$(r,d),o=e.length,g=C+(o-1)*L;let y=0,b,E=!1;const k=()=>{if(!E){if(y++,y>=g){f(null);return}f(e.map((j,_)=>{const v=C+_*L;return y>=v?j:B()})),b=setTimeout(k,D)}};return k(),()=>{E=!0,clearTimeout(b)}},[r,d,a]);const c=(e,o)=>t.jsx("svg",{viewBox:"0 0 100 182",width:h,height:n,className:"seven-seg__char","aria-hidden":"true",children:w.map(g=>t.jsx("polygon",{points:R[g],fill:i,stroke:i,strokeWidth:4,strokeLinejoin:"round",opacity:e.includes(g)?1:M},g))},o),s=$(r,d),u=T??s;return t.jsxs("span",{className:`seven-seg${S?` ${S}`:""}`,children:[u.map((e,o)=>c(e,`${o}-${e}`)),t.jsx("span",{className:"sr-only",children:r})]})}const G={grey:"/assets/keycap.svg",red:"/assets/keycap-red.svg"},I=O[900],P="#FFDEB0";function Z({icon:r,variant:i="grey",onClick:n,onPress:d,sentDuration:a=2e3,title:S,disabled:h=!1,className:m,iconColor:M=I,iconActiveColor:T=P,indicators:f}){const c=!!d,[s,u]=l.useState("idle"),[e,o]=l.useState(!1),g=l.useRef(),y=c?s==="held":e,b=c&&(s==="sending"||s==="sent"),E=c?s==="held"||s==="sending":e;l.useEffect(()=>()=>clearTimeout(g.current),[]);const k=l.useCallback(()=>{h||b||(F(),c?u("held"):o(!0))},[h,b,c]),j=l.useCallback(async()=>{if(c){if(s!=="held")return;x(),u("sending");const p=await d();u(p?"sent":"idle"),p&&(g.current=setTimeout(()=>u("idle"),a))}else{if(!e)return;o(!1),x(),n==null||n()}},[c,s,d,a,e,n]),_=l.useCallback(()=>{c?s==="held"&&(x(),u("idle")):(e&&x(),o(!1))},[c,s,e]),v=t.jsx("button",{onMouseDown:k,onMouseUp:j,onMouseLeave:_,onTouchStart:k,onTouchEnd:j,onTouchCancel:_,disabled:h||b,className:`keycap-btn${i==="red"?" keycap-btn--red-cap":""}${E?" keycap-btn--pressed":""}${m&&!f?` ${m}`:""}`,title:S,children:t.jsxs("div",{className:"keycap-wrap",children:[t.jsx("img",{src:G[i],alt:"",className:"keycap-btn__img",draggable:!1}),t.jsx("span",{className:"keycap-icon-overlay",style:{color:y||s==="sending"?T:M},children:r})]})});return f!=null&&f.length?t.jsxs("div",{className:`keycap-group${m?` ${m}`:""}`,children:[v,t.jsx("div",{className:"indicator-key-pair",children:f.map(p=>{const A=p.trackPress?s:p.active?"active":"idle";return t.jsxs("div",{className:`indicator-key${A!=="idle"?` indicator-key--${A}`:""}`,children:[t.jsx("span",{className:"indicator-key__label",children:p.label}),t.jsx("span",{className:"indicator-key__led"})]},p.label)})})]}):v}export{Z as K,Y as S};
@@ -1 +1 @@
import{r as y,j as t}from"./index-BOwCLZTK.js";const j="var(--sys-cyan)",k="var(--sys-blue)",v="var(--sys-indigo)",g="var(--sparkline-critical)",I="var(--fg-muted)";function E(f,o,s,e=2){if(f.length<2)return"";const r=f.map(n=>n.count),x=Math.max(...r,1),u=Math.min(...r),c=x-u||1,m=o-e*2,l=s-e*2,i=r.map((n,p)=>({x:e+p/(r.length-1)*m,y:e+l-(n-u)/c*l}));let a=`M ${i[0].x.toFixed(1)} ${i[0].y.toFixed(1)}`;for(let n=1;n<i.length;n++){const p=i[n-1],d=i[n],$=(p.x+d.x)/2;a+=` Q ${$.toFixed(1)} ${p.y.toFixed(1)} ${d.x.toFixed(1)} ${d.y.toFixed(1)}`}return a}const O=y.memo(function({data:o,width:s=48,height:e=16,color:r,invertScale:x=!1,isLoading:u=!1,className:c=""}){const l=`sl-${y.useId().replace(/:/g,"")}`,i=y.useMemo(()=>E(o,s,e),[o,s,e]),a=!r&&o.length>=2,n=r??(a?`url(#${l})`:I);return u&&o.length<2?t.jsx("div",{className:`flex items-center justify-center ${c}`,style:{width:s,height:e},children:t.jsx("div",{className:"rounded animate-pulse bg-subtle-fill-hover",style:{width:s-8,height:e-6}})}):o.length<2?t.jsx("svg",{width:s,height:e,viewBox:`0 0 ${s} ${e}`,className:c,"aria-hidden":"true",children:t.jsx("line",{x1:4,y1:e/2,x2:s-4,y2:e/2,stroke:g,strokeWidth:1.5,strokeDasharray:"3,2"})}):t.jsxs("svg",{width:s,height:e,viewBox:`0 0 ${s} ${e}`,preserveAspectRatio:"none",className:c,"aria-hidden":"true",style:{maxWidth:"100%"},children:[a&&t.jsx("defs",{children:t.jsxs("linearGradient",{id:l,gradientUnits:"userSpaceOnUse",x1:0,y1:2,x2:0,y2:e-2,children:[t.jsx("stop",{offset:"0%",stopColor:x?v:j}),t.jsx("stop",{offset:"50%",stopColor:k}),t.jsx("stop",{offset:"100%",stopColor:x?j:v})]})}),t.jsx("path",{d:i,fill:"none",stroke:n,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})]})});export{O as L};
import{r as y,j as t}from"./index-CvSa8h-C.js";const j="var(--sys-cyan)",k="var(--sys-blue)",v="var(--sys-indigo)",g="var(--sparkline-critical)",I="var(--fg-muted)";function E(f,o,s,e=2){if(f.length<2)return"";const r=f.map(n=>n.count),x=Math.max(...r,1),u=Math.min(...r),c=x-u||1,m=o-e*2,l=s-e*2,i=r.map((n,p)=>({x:e+p/(r.length-1)*m,y:e+l-(n-u)/c*l}));let a=`M ${i[0].x.toFixed(1)} ${i[0].y.toFixed(1)}`;for(let n=1;n<i.length;n++){const p=i[n-1],d=i[n],$=(p.x+d.x)/2;a+=` Q ${$.toFixed(1)} ${p.y.toFixed(1)} ${d.x.toFixed(1)} ${d.y.toFixed(1)}`}return a}const O=y.memo(function({data:o,width:s=48,height:e=16,color:r,invertScale:x=!1,isLoading:u=!1,className:c=""}){const l=`sl-${y.useId().replace(/:/g,"")}`,i=y.useMemo(()=>E(o,s,e),[o,s,e]),a=!r&&o.length>=2,n=r??(a?`url(#${l})`:I);return u&&o.length<2?t.jsx("div",{className:`flex items-center justify-center ${c}`,style:{width:s,height:e},children:t.jsx("div",{className:"rounded animate-pulse bg-subtle-fill-hover",style:{width:s-8,height:e-6}})}):o.length<2?t.jsx("svg",{width:s,height:e,viewBox:`0 0 ${s} ${e}`,className:c,"aria-hidden":"true",children:t.jsx("line",{x1:4,y1:e/2,x2:s-4,y2:e/2,stroke:g,strokeWidth:1.5,strokeDasharray:"3,2"})}):t.jsxs("svg",{width:s,height:e,viewBox:`0 0 ${s} ${e}`,preserveAspectRatio:"none",className:c,"aria-hidden":"true",style:{maxWidth:"100%"},children:[a&&t.jsx("defs",{children:t.jsxs("linearGradient",{id:l,gradientUnits:"userSpaceOnUse",x1:0,y1:2,x2:0,y2:e-2,children:[t.jsx("stop",{offset:"0%",stopColor:x?v:j}),t.jsx("stop",{offset:"50%",stopColor:k}),t.jsx("stop",{offset:"100%",stopColor:x?j:v})]})}),t.jsx("path",{d:i,fill:"none",stroke:n,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})]})});export{O as L};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{dn as h,dp as f,J as j,dq as L,dr as v,r as n,ds as N,j as e,dt as m,N as y,B as w,c as r,du as b,dd as C,m as S,dv as E}from"./index-BOwCLZTK.js";import{P,a as R,B as k,C as B}from"./PageLayout-QKntxcnp.js";import{C as I,a as T}from"./circle-stop-Buqz2psb.js";const D=n.memo(function({log:a}){return e.jsx(S.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:"easeOut"},className:"p-3 bg-subtle-fill/80 radius-inner depth-stroke-raised hover:bg-subtle-fill-strong transition-base",children:e.jsxs("div",{className:"flex items-baseline gap-3",children:[e.jsx("span",{className:r("type-data-sm w-14 shrink-0",E(a.level)),children:a.level}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"type-data-sm text-fg-primary break-words whitespace-pre-wrap",children:a.message}),e.jsx("p",{className:"type-data-xs text-fg-muted mt-1",children:new Date(a.timestamp).toLocaleString()})]})]})})});function M({showDebug:s,onToggle:a}){return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:r("type-data-sm",s?"text-sys-orange":"text-sys-cyan"),children:s?"DEBUG":"INFO"}),e.jsx(C,{enabled:s,onChange:a,size:"sm"})]})}function O(){const s=h(),a=f(),o=j(),i=L(),g=v(),[c,x]=n.useState(!1),u=n.useCallback(()=>{x(t=>!t)},[]),d=c?s:s.filter(t=>t.level!=="DEBUG"),l=n.useRef(i);return l.current=i,n.useEffect(()=>{if(!o)return;l.current();const t=setInterval(()=>l.current(),N.logs);return()=>clearInterval(t)},[o]),e.jsxs(P,{children:[e.jsx(R,{title:"System Logs",icon:e.jsx(m,{}),controls:e.jsx(M,{showDebug:c,onToggle:u})}),e.jsx(k,{ready:!0,children:e.jsxs(B,{neomorphic:!0,noPadding:!0,children:[e.jsx(y,{listHeader:!0,icon:e.jsx(m,{className:"icon-sm"}),title:"Log Entries",actions:e.jsx(w,{plain:!0,color:o?"danger":"primary",onClick:()=>g(!o),title:o?"Pause":"Resume",className:r(!o&&"animate-pulse-slow"),children:o?e.jsx(I,{"data-slot":"icon",className:"!w-5 !h-5"}):e.jsx(T,{"data-slot":"icon",className:"!w-5 !h-5"})})}),e.jsx("div",{className:"space-y-2 max-h-[calc(100dvh-226px)] sm:max-h-[calc(100dvh-234px)] lg:max-h-[calc(100vh-194px)] overflow-y-auto p-4",children:a&&s.length===0?e.jsx(b,{count:10}):d.length===0?e.jsx("div",{className:"text-center py-12 text-fg-muted",children:s.length===0?"No logs available":"No logs match selected filters"}):d.map((t,p)=>e.jsx(D,{log:t},`${t.timestamp}-${p}`))})]})})]})}export{O as default};
import{dp as h,dq as f,J as j,dr as L,ds as v,r as l,dt as N,j as e,du as m,N as y,B as w,c as r,dv as b,de as C,m as S,dw as E}from"./index-CvSa8h-C.js";import{P,a as R,B as k,C as B}from"./PageLayout-B8orsDlo.js";import{C as I,a as T}from"./circle-stop-B5RN0x4p.js";const D=l.memo(function({log:a}){return e.jsx(S.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:"easeOut"},className:"p-3 bg-subtle-fill/80 radius-inner depth-stroke-raised hover:bg-subtle-fill-strong transition-base",children:e.jsxs("div",{className:"flex items-baseline gap-3",children:[e.jsx("span",{className:r("type-data-sm w-14 shrink-0",E(a.level)),children:a.level}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"type-data-sm text-fg-primary break-words whitespace-pre-wrap",children:a.message}),e.jsx("p",{className:"type-data-xs text-fg-muted mt-1",children:new Date(a.timestamp).toLocaleString()})]})]})})});function M({showDebug:s,onToggle:a}){return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:r("type-data-sm",s?"text-sys-orange":"text-sys-cyan"),children:s?"DEBUG":"INFO"}),e.jsx(C,{enabled:s,onChange:a,size:"sm"})]})}function O(){const s=h(),a=f(),o=j(),i=L(),g=v(),[c,x]=l.useState(!1),u=l.useCallback(()=>{x(t=>!t)},[]),d=c?s:s.filter(t=>t.level!=="DEBUG"),n=l.useRef(i);return n.current=i,l.useEffect(()=>{if(!o)return;n.current();const t=setInterval(()=>n.current(),N.logs);return()=>clearInterval(t)},[o]),e.jsxs(P,{children:[e.jsx(R,{title:"System Logs",icon:e.jsx(m,{}),controls:e.jsx(M,{showDebug:c,onToggle:u})}),e.jsx(k,{ready:!0,children:e.jsxs(B,{neomorphic:!0,noPadding:!0,children:[e.jsx(y,{listHeader:!0,icon:e.jsx(m,{className:"icon-sm"}),title:"Log Entries",actions:e.jsx(w,{plain:!0,color:o?"danger":"primary",onClick:()=>g(!o),title:o?"Pause":"Resume",className:r(!o&&"animate-pulse-slow"),children:o?e.jsx(I,{"data-slot":"icon",className:"!w-5 !h-5"}):e.jsx(T,{"data-slot":"icon",className:"!w-5 !h-5"})})}),e.jsx("div",{className:"space-y-2 max-h-[calc(100dvh-226px)] sm:max-h-[calc(100dvh-234px)] lg:max-h-[calc(100vh-194px)] overflow-y-auto p-4",children:a&&s.length===0?e.jsx(b,{count:10}):d.length===0?e.jsx("div",{className:"text-center py-12 text-fg-muted",children:s.length===0?"No logs available":"No logs match selected filters"}):d.map((t,p)=>e.jsx(D,{log:t},`${t.timestamp}-${p}`))})]})})]})}export{O as default};
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as re,eL as f,eM as Me,r as c,j as e,I as W,B as ne,c as C,em as Pe,en as ke,am as pe,eo as Re,T as Ne,x as H,D as ae,bk as Ae,eN as xe,cS as fe,eO as be,eP as Be,R as ie,N as Ue,ce as Te}from"./index-BOwCLZTK.js";import{C as ee,P as De,a as Oe,B as Ge}from"./PageLayout-QKntxcnp.js";import{L as Ee,a as de}from"./listbox-C1tUi7YC.js";import{S as Ie}from"./settings-2-CXNfSapN.js";import{P as se}from"./plus-ClrHVFhr.js";import{M as He}from"./map-pin-C2z_C0J3.js";import{C as Ke,u as Fe,a as ze}from"./circle-x-BJVhIbR2.js";import{Z as Q}from"./zap-Bd-kARJ1.js";import{S as je}from"./search-Ba9CRHru.js";import{C as oe}from"./chevron-right-DJVm4pVP.js";import{H as Ve}from"./hash-Dwn2PbMF.js";import{F as We}from"./funnel-CWx99rlN.js";import{a as $e,C as Ze}from"./circle-stop-Buqz2psb.js";import{T as Ye}from"./trash-2-qMD09ppP.js";import{M as Je}from"./message-square-BcKhgYbO.js";import{C as Xe}from"./cpu-D7sbzQ8o.js";import{R as me,C as he}from"./Grid-eFMUBxsw.js";import{W as _e}from"./wifi-CI57D5A3.js";import{W as qe}from"./wifi-off-DC4jBRps.js";import{T as Qe}from"./triangle-alert-SO3tIa8w.js";import"./element-movement-BLnr83nT.js";/**
import{d as re,eM as f,eN as Me,r as c,j as e,I as W,B as ne,c as C,en as Pe,eo as ke,ao as pe,ep as Re,T as Ne,x as H,D as ae,bo as Ae,eO as xe,cT as fe,eP as be,eQ as Be,R as ie,N as Ue,ci as Te}from"./index-CvSa8h-C.js";import{C as ee,P as De,a as Oe,B as Ge}from"./PageLayout-B8orsDlo.js";import{L as Ee,a as de}from"./listbox-Xbs80tag.js";import{S as Ie}from"./settings-2-CLi8XLBD.js";import{P as se}from"./plus-CNNHSjgp.js";import{M as He}from"./map-pin-BCwmmHGs.js";import{C as Ke,u as Fe,a as ze}from"./circle-x-BDVzq0qX.js";import{Z as Q}from"./zap-mngIm3qT.js";import{S as je}from"./search-BZtD4Hr8.js";import{C as oe}from"./chevron-right-1kmv-Vqa.js";import{H as Ve}from"./hash-CTme6GHI.js";import{F as We}from"./funnel-DLa9oQpD.js";import{a as $e,C as Ze}from"./circle-stop-B5RN0x4p.js";import{T as Ye}from"./trash-2-DUG72tk9.js";import{M as Je}from"./message-square-DODYXl2V.js";import{C as Xe}from"./cpu-DRQNCIcF.js";import{R as me,C as he}from"./Grid-suKoG48i.js";import{W as _e}from"./wifi-DV8DJqF0.js";import{W as qe}from"./wifi-off-B6--LVD1.js";import{T as Qe}from"./triangle-alert-C7tm61-l.js";import"./element-movement-CM_Y2Bj0.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{j as s,N as i,R as d,cW as c}from"./index-BOwCLZTK.js";import{C as n}from"./PageLayout-QKntxcnp.js";import{D as m}from"./DataBox-BVnEv6Au.js";function j({nodeName:e,repeaterVersion:a,coreVersion:t,localHash:r,publicKey:l}){return s.jsxs(n,{neomorphic:!0,children:[s.jsx(i,{icon:s.jsx(d,{}),title:"Node Information"}),s.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4",children:[s.jsxs("div",{className:"min-w-0 col-span-2 sm:col-span-1",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Node Name"}),s.jsx("p",{className:"type-body text-fg-primary mt-0.5 sm:mt-1 truncate",title:e,children:e})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Repeater"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${a}`,children:["v",a]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Core"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${t}`,children:["v",t]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Console"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${c}`,children:["v",c]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Local Hash"}),s.jsx("div",{className:"mt-0.5 sm:mt-1",children:r?s.jsx(m,{copy:!0,size:"compact",children:r}):s.jsx("span",{className:"type-data-sm text-fg-secondary",children:"N/A"})})]})]}),l&&s.jsxs("div",{className:"mt-3 sm:mt-4 pt-3 sm:pt-4 border-t border-edge-subtle",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Public Key"}),s.jsx("div",{className:"mt-0.5 sm:mt-1",children:s.jsx(m,{copy:!0,size:"responsive",children:l})})]})]})}export{j as N};
import{j as s,N as i,R as d,cX as c}from"./index-CvSa8h-C.js";import{C as n}from"./PageLayout-B8orsDlo.js";import{D as m}from"./DataBox-CwAsAwyY.js";function j({nodeName:e,repeaterVersion:a,coreVersion:t,localHash:r,publicKey:l}){return s.jsxs(n,{neomorphic:!0,children:[s.jsx(i,{icon:s.jsx(d,{}),title:"Node Information"}),s.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4",children:[s.jsxs("div",{className:"min-w-0 col-span-2 sm:col-span-1",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Node Name"}),s.jsx("p",{className:"type-body text-fg-primary mt-0.5 sm:mt-1 truncate",title:e,children:e})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Repeater"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${a}`,children:["v",a]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Core"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${t}`,children:["v",t]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Console"}),s.jsxs("p",{className:"type-data text-fg-primary mt-0.5 sm:mt-1 truncate",title:`v${c}`,children:["v",c]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Local Hash"}),s.jsx("div",{className:"mt-0.5 sm:mt-1",children:r?s.jsx(m,{copy:!0,size:"compact",children:r}):s.jsx("span",{className:"type-data-sm text-fg-secondary",children:"N/A"})})]})]}),l&&s.jsxs("div",{className:"mt-3 sm:mt-4 pt-3 sm:pt-4 border-t border-edge-subtle",children:[s.jsx("span",{className:"type-label text-fg-secondary",children:"Public Key"}),s.jsx("div",{className:"mt-0.5 sm:mt-1",children:s.jsx(m,{copy:!0,size:"responsive",children:l})})]})]})}export{j as N};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{j as e,v as o,c as x,ao as d,r,eW as f}from"./index-BOwCLZTK.js";function p({children:a,className:s}){return e.jsx("div",{className:x("section-gap",s),children:a})}function j({children:a,className:s,ready:t}){const n=d(),i=t??n,[m,c]=r.useState(!1);return r.useEffect(()=>{if(!i){c(!1);return}let l=!1;return requestAnimationFrame(()=>{requestAnimationFrame(()=>{l||r.startTransition(()=>c(!0))})}),()=>{l=!0}},[i]),e.jsx(f.Provider,{value:m,children:e.jsx("div",{className:x("bento-section",s),children:a})})}function g({title:a,icon:s,controls:t,subtitle:n}){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 min-h-9",children:[e.jsxs("h1",{className:"type-title text-fg-primary flex items-baseline gap-2 sm:gap-3 min-w-0",children:[s&&e.jsx("span",{className:"text-icon-page-title flex-shrink-0 translate-y-[0.1em] [&>svg]:h-[1em] [&>svg]:w-[1em] [&>svg]:stroke-[1.5]",children:s}),e.jsx("span",{className:"truncate",children:a})]}),t&&e.jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:t})]}),n&&e.jsx("div",{children:n})]})}function h({size:a,...s}){return e.jsx(o,{...s})}export{j as B,h as C,p as P,g as a};
import{j as e,v as o,c as x,aq as d,r,eX as f}from"./index-CvSa8h-C.js";function p({children:a,className:s}){return e.jsx("div",{className:x("section-gap",s),children:a})}function j({children:a,className:s,ready:t}){const n=d(),i=t??n,[m,c]=r.useState(!1);return r.useEffect(()=>{if(!i){c(!1);return}let l=!1;return requestAnimationFrame(()=>{requestAnimationFrame(()=>{l||r.startTransition(()=>c(!0))})}),()=>{l=!0}},[i]),e.jsx(f.Provider,{value:m,children:e.jsx("div",{className:x("bento-section",s),children:a})})}function g({title:a,icon:s,controls:t,subtitle:n}){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 min-h-9",children:[e.jsxs("h1",{className:"type-title text-fg-primary flex items-baseline gap-2 sm:gap-3 min-w-0",children:[s&&e.jsx("span",{className:"text-icon-page-title flex-shrink-0 translate-y-[0.1em] [&>svg]:h-[1em] [&>svg]:w-[1em] [&>svg]:stroke-[1.5]",children:s}),e.jsx("span",{className:"truncate",children:a})]}),t&&e.jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:t})]}),n&&e.jsx("div",{children:n})]})}function h({size:a,...s}){return e.jsx(o,{...s})}export{j as B,h as C,p as P,g as a};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as i,r as m,c as l,j as r,c6 as j,c7 as _,c8 as k}from"./index-BOwCLZTK.js";/**
import{d as i,r as m,c as l,j as r,ca as j,cb as _,cc as k}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as q,dg as B,d7 as A,r as l,p as J,j as e,q as Y,c as F,N as E,dh as te,di as se,dj as re,dk as ne,c9 as ae,B as oe,dl as le,dm as G}from"./index-BOwCLZTK.js";import{C as P,P as ce,a as ie,B as de}from"./PageLayout-QKntxcnp.js";import{T as me}from"./triangle-alert-SO3tIa8w.js";import{a as ue,A as xe}from"./arrow-up-BqsZCBBC.js";import{N as fe}from"./network-D0Fgg1y-.js";import{A as L}from"./activity-D5uH2SFx.js";import{R as pe}from"./refresh-cw-C9txhqc9.js";import{C as he}from"./cpu-D7sbzQ8o.js";import{R as H,C as $}from"./Grid-eFMUBxsw.js";/**
import{d as q,dh as B,d8 as A,r as l,p as J,j as e,q as Y,c as F,N as E,di as te,dj as se,dk as re,dl as ne,cd as ae,B as oe,dm as le,dn as G}from"./index-CvSa8h-C.js";import{C as P,P as ce,a as ie,B as de}from"./PageLayout-B8orsDlo.js";import{T as me}from"./triangle-alert-C7tm61-l.js";import{a as ue,A as xe}from"./arrow-up-DQmOy4Je.js";import{N as fe}from"./network-VirimdjG.js";import{A as L}from"./activity-CctJQ0y-.js";import{R as pe}from"./refresh-cw-DQJSjSjI.js";import{C as he}from"./cpu-DRQNCIcF.js";import{R as H,C as $}from"./Grid-suKoG48i.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as t}from"./index-BOwCLZTK.js";/**
import{d as t}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as o}from"./index-BOwCLZTK.js";/**
import{d as o}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as r}from"./index-BOwCLZTK.js";/**
import{d as r}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{d7 as a,r as l}from"./index-BOwCLZTK.js";const s=[a.green,a.blue,a.amber,a.pink,a.purple,a.cyan,a.orange,a.teal];function m(e){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return s[Math.abs(n)%s.length]}const i=new RegExp("(?:\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F)","gu");function u(e){const n=e.match(i);if(n&&n.length>0){const t=n[0],o=e.replace(i,"").trim();return{emoji:t,cleanName:o||e}}return{emoji:null,cleanName:e}}function f(e){const{cleanName:n}=u(e),t=n.split(/[\s-_]+/).filter(Boolean);if(t.length>=2){const r=Array.from(t[0])[0]||"",c=Array.from(t[1])[0]||"";return(r+c).toUpperCase()}return Array.from(n).slice(0,2).join("").toUpperCase()}function p(e){return new Date(e*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1})}function g(e){const n=/@\[([^\]]+)\]/g,t=[];let o=0,r;for(;(r=n.exec(e))!==null;)r.index>o&&t.push(e.slice(o,r.index)),t.push(l.createElement("span",{key:r.index,className:"font-extrabold text-white"},r[1])),o=r.index+r[0].length;return o<e.length&&t.push(e.slice(o)),t.length>0?t:e}export{f as a,p as b,u as e,g as f,m as g};
import{d8 as a,r as l}from"./index-CvSa8h-C.js";const s=[a.green,a.blue,a.amber,a.pink,a.purple,a.cyan,a.orange,a.teal];function m(e){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return s[Math.abs(n)%s.length]}const i=new RegExp("(?:\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F)","gu");function u(e){const n=e.match(i);if(n&&n.length>0){const t=n[0],o=e.replace(i,"").trim();return{emoji:t,cleanName:o||e}}return{emoji:null,cleanName:e}}function f(e){const{cleanName:n}=u(e),t=n.split(/[\s-_]+/).filter(Boolean);if(t.length>=2){const r=Array.from(t[0])[0]||"",c=Array.from(t[1])[0]||"";return(r+c).toUpperCase()}return Array.from(n).slice(0,2).join("").toUpperCase()}function p(e){return new Date(e*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1})}function g(e){const n=/@\[([^\]]+)\]/g,t=[];let o=0,r;for(;(r=n.exec(e))!==null;)r.index>o&&t.push(e.slice(o,r.index)),t.push(l.createElement("span",{key:r.index,className:"font-extrabold text-white"},r[1])),o=r.index+r[0].length;return o<e.length&&t.push(e.slice(o)),t.length>0?t:e}export{f as a,p as b,u as e,g as f,m as g};
@@ -1,4 +1,4 @@
import{d as o}from"./index-BOwCLZTK.js";/**
import{d as o}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{af as n,r as i}from"./index-BOwCLZTK.js";const p=t=>(t.type??t.payload_type)===n.ADVERT,l=t=>(t.type??t.payload_type)===n.TRACE,h=t=>(t.type??t.payload_type)===n.TXT_MSG,_=t=>(t.type??t.payload_type)===n.PATH,d=t=>(t.type??t.payload_type)===n.ACK,g=t=>{const e=t.type??t.payload_type;return e===n.GRP_TXT||e===n.GRP_DATA},m=t=>(t.path_length??(Array.isArray(t.original_path)?t.original_path.length:0))>0,A=t=>!!t.src_hash,T=t=>t.airtime_ms!=null,c=new Set,o=new Map;function a(t,e){return`${t}|${e}`}function u(t,e){const s=a(t,e);o.set(s,(o.get(s)??0)+1)}function y(t,e){const s=a(t,e),r=o.get(s)??0;r>1?o.set(s,r-1):o.delete(s)}function C(t){for(const e of t){const s=a(e.target,e.fn);c.has(s)||c.add(s)}}function P(t){i.useEffect(()=>{for(const e of t)u(e.target,e.fn);return()=>{for(const e of t)y(e.target,e.fn)}},[t])}export{m as a,A as b,h as c,d,p as e,l as f,_ as g,T as h,g as i,C as r,P as u};
import{ah as n,r as i}from"./index-CvSa8h-C.js";const p=t=>(t.type??t.payload_type)===n.ADVERT,l=t=>(t.type??t.payload_type)===n.TRACE,h=t=>(t.type??t.payload_type)===n.TXT_MSG,_=t=>(t.type??t.payload_type)===n.PATH,d=t=>(t.type??t.payload_type)===n.ACK,g=t=>{const e=t.type??t.payload_type;return e===n.GRP_TXT||e===n.GRP_DATA},m=t=>(t.path_length??(Array.isArray(t.original_path)?t.original_path.length:0))>0,A=t=>!!t.src_hash,T=t=>t.airtime_ms!=null,c=new Set,o=new Map;function a(t,e){return`${t}|${e}`}function u(t,e){const s=a(t,e);o.set(s,(o.get(s)??0)+1)}function y(t,e){const s=a(t,e),r=o.get(s)??0;r>1?o.set(s,r-1):o.delete(s)}function C(t){for(const e of t){const s=a(e.target,e.fn);c.has(s)||c.add(s)}}function P(t){i.useEffect(()=>{for(const e of t)u(e.target,e.fn);return()=>{for(const e of t)y(e.target,e.fn)}},[t])}export{m as a,A as b,h as c,d,p as e,l as f,_ as g,T as h,g as i,C as r,P as u};
@@ -1,4 +1,4 @@
import{d as h}from"./index-BOwCLZTK.js";/**
import{d as h}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -0,0 +1 @@
(function(){"use strict";function k(f,L,y,x,i,u,N,z,E,U,m,o){const p=m*60/o,J=Math.floor(Date.now()/1e3),D=Math.floor(J/p)*p,_=D-m*60,d=new Array(o),w=new Array(o),A=new Array(o),I=new Array(o),R=new Array(o),W=new Float64Array(o),q=new Float64Array(o),O=new Uint32Array(o),F=new Array(o),G=new Array(o),M=new Array(o),X=new Array(o),h={},v={},g={},b={};let S=0,H=0,C=0;for(let t=0;t<o;t++){const n=_+t*p,e=n+p,a={bucket:t,start:n,end:e,count:0,airtime_ms:0,avg_snr:0,avg_rssi:0};d[t]={...a},w[t]={...a},A[t]={...a},I[t]={...a},R[t]={...a},F[t]=new Set,G[t]={start:n,end:e,bytesByType:{},totalBytes:0,countByType:{},totalCount:0},M[t]={start:n,end:e,bytesByType:{},totalBytes:0,countByType:{},totalCount:0},X[t]={start:n,end:e,bytesByType:{},totalBytes:0,countByType:{},totalCount:0}}const K=f.length;for(let t=0;t<K;t++){const n=f[t];if(n<_||n>D)continue;const e=Math.floor((n-_)/p);if(e<0||e>=o)continue;const a=L[t],B=i[t],V=u[t],j=N[t],s=x[t],c=y[t];if(B===1?(A[e].count++,A[e].airtime_ms+=a):B===2||V&&B!==1?(I[e].count++,I[e].airtime_ms+=a):j&&(R[e].count++,R[e].airtime_ms+=a),B!==1){d[e].count++,d[e].airtime_ms+=a,W[e]+=z[t],q[e]+=E[t],O[e]++;const r=U[t];F[e].has(r)||(F[e].add(r),w[e].count++,w[e].airtime_ms+=a);const l=G[e];l.bytesByType[s]=(l.bytesByType[s]??0)+c,l.totalBytes+=c,l.countByType[s]=(l.countByType[s]??0)+1,l.totalCount++,h[s]=(h[s]??0)+c,b[s]=(b[s]??0)+1,C+=c}if(B===2||V&&B!==1){const r=M[e];r.bytesByType[s]=(r.bytesByType[s]??0)+c,r.totalBytes+=c,r.countByType[s]=(r.countByType[s]??0)+1,r.totalCount++,v[s]=(v[s]??0)+c,S++}if(j){const r=X[e];r.bytesByType[s]=(r.bytesByType[s]??0)+c,r.totalBytes+=c,r.countByType[s]=(r.countByType[s]??0)+1,r.totalCount++,g[s]=(g[s]??0)+c,H++}}for(let t=0;t<o;t++)O[t]>0&&(d[t].avg_snr=W[t]/O[t],d[t].avg_rssi=q[t]/O[t]);const P=t=>Object.keys(t).map(n=>parseInt(n,10)).filter(n=>t[n]>0).sort((n,e)=>t[e]-t[n]),T=m/60;return{time_range_minutes:m,bucket_count:o,bucket_duration_seconds:p,start_time:_,end_time:D,received:d,unique_received:w,transmitted:A,forwarded:I,dropped:R,receivedBytesBuckets:G,receivedActiveTypes:P(h),receivedTotalByType:h,receivedCountByType:b,forwardedBytesBuckets:M,forwardedActiveTypes:P(v),forwardedTotalByType:v,forwardedRatePerHour:T>0?Math.round(S/T):0,totalForwardedCount:S,droppedBytesBuckets:X,droppedActiveTypes:P(g),droppedTotalByType:g,droppedRatePerHour:T>0?Math.round(H/T):0,totalDroppedCount:H,totalReceivedBytes:C,kbPerHour:T>0?Math.round(C/1024/T):0}}self.onmessage=f=>{const{type:L,payload:y}=f.data;if(L!=="compute")return;const x=performance.now();try{const i=k(y.timestamps,y.airtimeMs,y.byteSizes,y.payloadTypes,y.origins,y.transmitted,y.dropped,y.snrValues,y.rssiValues,y.hashIndices,y.rangeMinutes,y.bucketCount),u=performance.now()-x,N={type:"result",payload:i,computeTimeMs:u};self.postMessage(N)}catch(i){const u={type:"error",error:i instanceof Error?i.message:String(i)};self.postMessage(u)}}})();
@@ -1 +0,0 @@
(function(){"use strict";function k(f,g,o,L,i,B,N,z,E,U,m,s){const d=m*60/s,J=Math.floor(Date.now()/1e3),x=Math.floor(J/d)*d,_=x-m*60,p=new Array(s),w=new Array(s),A=new Array(s),u=new Array(s),I=new Array(s),W=new Float64Array(s),q=new Float64Array(s),R=new Uint32Array(s),D=new Array(s),F=new Array(s),G=new Array(s),M=new Array(s),O={},h={},v={};let X=0,b=0,S=0;for(let e=0;e<s;e++){const r=_+e*d,t=r+d,a={bucket:e,start:r,end:t,count:0,airtime_ms:0,avg_snr:0,avg_rssi:0};p[e]={...a},w[e]={...a},A[e]={...a},u[e]={...a},I[e]={...a},D[e]=new Set,F[e]={start:r,end:t,bytesByType:{},totalBytes:0},G[e]={start:r,end:t,bytesByType:{},totalBytes:0},M[e]={start:r,end:t,bytesByType:{},totalBytes:0}}const K=f.length;for(let e=0;e<K;e++){const r=f[e];if(r<_||r>x)continue;const t=Math.floor((r-_)/d);if(t<0||t>=s)continue;const a=g[e],T=i[e],V=B[e],j=N[e],n=L[e],y=o[e];if(T===1?(A[t].count++,A[t].airtime_ms+=a):T===2||V&&T!==1?(u[t].count++,u[t].airtime_ms+=a):j&&(I[t].count++,I[t].airtime_ms+=a),T!==1){p[t].count++,p[t].airtime_ms+=a,W[t]+=z[e],q[t]+=E[e],R[t]++;const c=U[e];D[t].has(c)||(D[t].add(c),w[t].count++,w[t].airtime_ms+=a);const P=F[t];P.bytesByType[n]=(P.bytesByType[n]??0)+y,P.totalBytes+=y,O[n]=(O[n]??0)+y,S+=y}if(T===2||V&&T!==1){const c=G[t];c.bytesByType[n]=(c.bytesByType[n]??0)+y,c.totalBytes+=y,h[n]=(h[n]??0)+y,X++}if(j){const c=M[t];c.bytesByType[n]=(c.bytesByType[n]??0)+y,c.totalBytes+=y,v[n]=(v[n]??0)+y,b++}}for(let e=0;e<s;e++)R[e]>0&&(p[e].avg_snr=W[e]/R[e],p[e].avg_rssi=q[e]/R[e]);const H=e=>Object.keys(e).map(r=>parseInt(r,10)).filter(r=>e[r]>0).sort((r,t)=>e[t]-e[r]),l=m/60;return{time_range_minutes:m,bucket_count:s,bucket_duration_seconds:d,start_time:_,end_time:x,received:p,unique_received:w,transmitted:A,forwarded:u,dropped:I,receivedBytesBuckets:F,receivedActiveTypes:H(O),receivedTotalByType:O,forwardedBytesBuckets:G,forwardedActiveTypes:H(h),forwardedTotalByType:h,forwardedRatePerHour:l>0?Math.round(X/l):0,totalForwardedCount:X,droppedBytesBuckets:M,droppedActiveTypes:H(v),droppedTotalByType:v,droppedRatePerHour:l>0?Math.round(b/l):0,totalDroppedCount:b,totalReceivedBytes:S,kbPerHour:l>0?Math.round(S/1024/l):0}}self.onmessage=f=>{const{type:g,payload:o}=f.data;if(g!=="compute")return;const L=performance.now();try{const i=k(o.timestamps,o.airtimeMs,o.byteSizes,o.payloadTypes,o.origins,o.transmitted,o.dropped,o.snrValues,o.rssiValues,o.hashIndices,o.rangeMinutes,o.bucketCount),B=performance.now()-L,N={type:"result",payload:i,computeTimeMs:B};self.postMessage(N)}catch(i){const B={type:"error",error:i instanceof Error?i.message:String(i)};self.postMessage(B)}}})();
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as o}from"./index-BOwCLZTK.js";/**
import{d as o}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,6 +1,6 @@
import{d as c,fc as a}from"./index-BOwCLZTK.js";/**
import{d as s,fd as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const s=[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],t=c("compass",s),o=a(.65,0,.35,1),n=a(.33,1,.68,1),u=a(.33,.67,.67,1),i=a(.76,0,.24,1);export{t as C,n as a,o as b,u as c,i as e};
*/const c=[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],t=s("compass",c),o=a(.65,0,.35,1),n=a(.33,1,.68,1),u=a(.33,.67,.67,1),i=a(.76,0,.24,1);export{t as C,n as a,o as b,u as c,i as e};
@@ -1 +1 @@
import{r as o,aq as v,cy as b,eT as h,eU as w,cP as x,b2 as c,b5 as y}from"./index-BOwCLZTK.js";function R(e,t){return e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"&&"id"in e&&"id"in t?e.id===t.id:e===t}function N(e=R){return o.useCallback((t,r)=>{if(typeof e=="string"){let u=e;return(t==null?void 0:t[u])===(r==null?void 0:r[u])}return e(t,r)},[e])}var $=(e=>(e[e.Left=0]="Left",e[e.Right=2]="Right",e))($||{});function P(e){let t=o.useRef(null),r=v(l=>{t.current=l.pointerType,!b(l.currentTarget)&&l.pointerType==="mouse"&&l.button===$.Left&&(l.preventDefault(),e(l))}),u=v(l=>{t.current!=="mouse"&&(b(l.currentTarget)||e(l))});return{onPointerDown:r,onClick:u}}var S=(e=>(e[e.Ignore=0]="Ignore",e[e.Select=1]="Select",e[e.Close=2]="Close",e))(S||{});const j={Ignore:{kind:0},Select:e=>({kind:1,target:e}),Close:{kind:2}},I=200,k=5;function z(e,{trigger:t,action:r,close:u,select:l}){let n=o.useRef(null),i=o.useRef(null),a=o.useRef(null);h(e&&t!==null,"pointerdown",s=>{w(s==null?void 0:s.target)&&t!=null&&t.contains(s.target)&&(i.current=s.x,a.current=s.y,n.current=s.timeStamp)}),h(e&&t!==null,"pointerup",s=>{var d,f;let g=n.current;if(g===null||(n.current=null,!x(s.target))||Math.abs(s.x-((d=i.current)!=null?d:s.x))<k&&Math.abs(s.y-((f=a.current)!=null?f:s.y))<k)return;let p=r(s);switch(p.kind){case 0:return;case 1:{s.timeStamp-g>I&&(l(p.target),u());break}case 2:{u();break}}},{capture:!0})}function m(e){return[e.screenX,e.screenY]}function F(){let e=o.useRef([-1,-1]);return{wasMoved(t){let r=m(t);return e.current[0]===r[0]&&e.current[1]===r[1]?!1:(e.current=r,!0)},update(t){e.current=m(t)}}}function L({children:e,freeze:t},r){let u=T(t,e);return o.isValidElement(u)?o.cloneElement(u,{ref:r}):c.createElement(c.Fragment,null,u)}const U=c.forwardRef(L);function T(e,t){let[r,u]=o.useState(t);return!e&&r!==t&&u(t),e?r:t}function E(e){throw new Error("Unexpected object: "+e)}var C=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(C||{});function q(e,t){let r=t.resolveItems();if(r.length<=0)return null;let u=t.resolveActiveIndex(),l=u??-1;switch(e.focus){case 0:{for(let n=0;n<r.length;++n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 1:{l===-1&&(l=r.length);for(let n=l-1;n>=0;--n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 2:{for(let n=l+1;n<r.length;++n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 3:{for(let n=r.length-1;n>=0;--n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 4:{for(let n=0;n<r.length;++n)if(t.resolveId(r[n],n,r)===e.id)return n;return u}case 5:return null;default:E(e)}}const A={Idle:{kind:"Idle"},Tracked:e=>({kind:"Tracked",position:e}),Moved:{kind:"Moved"}};function D(e){let t=e.getBoundingClientRect();return`${t.x},${t.y}`}function B(e,t,r){let u=y();if(t.kind==="Tracked"){let l=function(){n!==D(e)&&(u.dispose(),r())},{position:n}=t,i=new ResizeObserver(l);i.observe(e),u.add(()=>i.disconnect()),u.addEventListener(window,"scroll",l,{passive:!0}),u.addEventListener(window,"resize",l)}return()=>u.dispose()}export{z as L,j as S,A as a,D as b,C as c,U as d,F as e,q as f,$ as g,N as h,B as p,P as s,T as u};
import{r as o,au as v,cz as b,eU as h,eV as w,cQ as x,b6 as c,b9 as R}from"./index-CvSa8h-C.js";function y(e,t){return e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"&&"id"in e&&"id"in t?e.id===t.id:e===t}function z(e=y){return o.useCallback((t,r)=>{if(typeof e=="string"){let u=e;return(t==null?void 0:t[u])===(r==null?void 0:r[u])}return e(t,r)},[e])}var $=(e=>(e[e.Left=0]="Left",e[e.Right=2]="Right",e))($||{});function N(e){let t=o.useRef(null),r=v(l=>{t.current=l.pointerType,!b(l.currentTarget)&&l.pointerType==="mouse"&&l.button===$.Left&&(l.preventDefault(),e(l))}),u=v(l=>{t.current!=="mouse"&&(b(l.currentTarget)||e(l))});return{onPointerDown:r,onClick:u}}var S=(e=>(e[e.Ignore=0]="Ignore",e[e.Select=1]="Select",e[e.Close=2]="Close",e))(S||{});const j={Ignore:{kind:0},Select:e=>({kind:1,target:e}),Close:{kind:2}},I=200,k=5;function F(e,{trigger:t,action:r,close:u,select:l}){let n=o.useRef(null),i=o.useRef(null),a=o.useRef(null);h(e&&t!==null,"pointerdown",s=>{w(s==null?void 0:s.target)&&t!=null&&t.contains(s.target)&&(i.current=s.x,a.current=s.y,n.current=s.timeStamp)}),h(e&&t!==null,"pointerup",s=>{var d,f;let g=n.current;if(g===null||(n.current=null,!x(s.target))||Math.abs(s.x-((d=i.current)!=null?d:s.x))<k&&Math.abs(s.y-((f=a.current)!=null?f:s.y))<k)return;let p=r(s);switch(p.kind){case 0:return;case 1:{s.timeStamp-g>I&&(l(p.target),u());break}case 2:{u();break}}},{capture:!0})}function m(e){return[e.screenX,e.screenY]}function P(){let e=o.useRef([-1,-1]);return{wasMoved(t){let r=m(t);return e.current[0]===r[0]&&e.current[1]===r[1]?!1:(e.current=r,!0)},update(t){e.current=m(t)}}}function L({children:e,freeze:t},r){let u=E(t,e);return o.isValidElement(u)?o.cloneElement(u,{ref:r}):c.createElement(c.Fragment,null,u)}const U=c.forwardRef(L);function E(e,t){let[r,u]=o.useState(t);return!e&&r!==t&&u(t),e?r:t}function T(e){throw new Error("Unexpected object: "+e)}var C=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(C||{});function V(e,t){let r=t.resolveItems();if(r.length<=0)return null;let u=t.resolveActiveIndex(),l=u??-1;switch(e.focus){case 0:{for(let n=0;n<r.length;++n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 1:{l===-1&&(l=r.length);for(let n=l-1;n>=0;--n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 2:{for(let n=l+1;n<r.length;++n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 3:{for(let n=r.length-1;n>=0;--n)if(!t.resolveDisabled(r[n],n,r))return n;return u}case 4:{for(let n=0;n<r.length;++n)if(t.resolveId(r[n],n,r)===e.id)return n;return u}case 5:return null;default:T(e)}}const A={Idle:{kind:"Idle"},Tracked:e=>({kind:"Tracked",position:e}),Moved:{kind:"Moved"}};function D(e){let t=e.getBoundingClientRect();return`${t.x},${t.y}`}function B(e,t,r){let u=R();if(t.kind==="Tracked"){let l=function(){n!==D(e)&&(u.dispose(),r())},{position:n}=t,i=new ResizeObserver(l);i.observe(e),u.add(()=>i.disconnect()),u.addEventListener(window,"scroll",l,{passive:!0}),u.addEventListener(window,"resize",l)}return()=>u.dispose()}export{F as L,j as S,A as a,D as b,C as c,U as d,P as e,V as f,$ as g,z as h,B as p,N as s,E as u};
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as a}from"./index-BOwCLZTK.js";/**
import{d as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{a6 as L,c7 as w,d7 as x}from"./index-BOwCLZTK.js";function R(n){if(Array.isArray(n))return n;if(typeof n=="string"&&n.startsWith("["))try{const a=JSON.parse(n);return Array.isArray(a)?a:[]}catch{return[]}return[]}function A(n,a,S){const i=new Map;for(const t of a){const r=L(t);i.has(r)||i.set(r,t)}const f=new Map,u=new Map;for(const t of n){const r=t.route??t.route_type;if(!w(r))continue;const c=R(t.original_path);if(c.length===0)continue;const o=c.map(e=>e.toUpperCase());if(!t.transmitted&&o.length>=2){const e=o[o.length-2];if(e){const s=i.get(e);s&&u.set(s,(u.get(s)??0)+1)}}if(o.includes(S))for(const e of o){if(e===S)continue;const s=i.get(e);s&&f.set(s,(f.get(s)??0)+1)}}let h=0,p=0;for(const t of a)h=Math.max(h,f.get(t)??0),p=Math.max(p,u.get(t)??0);const M=new Map;let d=0,g=0,m=0;for(const t of a){const r=f.get(t)??0,c=u.get(t)??0,o=h>0?Math.round(r/h*100):0,l=p>0?Math.round(c/p*100):0,e=o+l;M.set(t,{hash:t,listenerCount:r,loudCount:c,listenerScore:o,loudScore:l,blendedScore:e}),d=Math.max(d,o),g=Math.max(g,l),m=Math.max(m,e)}return{scores:M,maxListenerScore:d,maxLoudScore:g,maxBlendedScore:m}}const C={YELLOW:x.amber,GREEN:x.green,RED:x.red,GRAY:"#505050"};export{C as L,A as c};
import{a8 as L,cb as w,d8 as x}from"./index-CvSa8h-C.js";function R(n){if(Array.isArray(n))return n;if(typeof n=="string"&&n.startsWith("["))try{const a=JSON.parse(n);return Array.isArray(a)?a:[]}catch{return[]}return[]}function A(n,a,S){const i=new Map;for(const t of a){const r=L(t);i.has(r)||i.set(r,t)}const f=new Map,u=new Map;for(const t of n){const r=t.route??t.route_type;if(!w(r))continue;const c=R(t.original_path);if(c.length===0)continue;const o=c.map(e=>e.toUpperCase());if(!t.transmitted&&o.length>=2){const e=o[o.length-2];if(e){const s=i.get(e);s&&u.set(s,(u.get(s)??0)+1)}}if(o.includes(S))for(const e of o){if(e===S)continue;const s=i.get(e);s&&f.set(s,(f.get(s)??0)+1)}}let h=0,p=0;for(const t of a)h=Math.max(h,f.get(t)??0),p=Math.max(p,u.get(t)??0);const M=new Map;let d=0,g=0,m=0;for(const t of a){const r=f.get(t)??0,c=u.get(t)??0,o=h>0?Math.round(r/h*100):0,l=p>0?Math.round(c/p*100):0,e=o+l;M.set(t,{hash:t,listenerCount:r,loudCount:c,listenerScore:o,loudScore:l,blendedScore:e}),d=Math.max(d,o),g=Math.max(g,l),m=Math.max(m,e)}return{scores:M,maxListenerScore:d,maxLoudScore:g,maxBlendedScore:m}}const C={YELLOW:x.amber,GREEN:x.green,RED:x.red,GRAY:"#505050"};export{C as L,A as c};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as a}from"./index-BOwCLZTK.js";/**
import{d as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{bU as a}from"./index-BOwCLZTK.js";function o(r){var t;const e=((t=r.contact_type)==null?void 0:t.toLowerCase())??"";return e==="room server"||e==="room_server"||e==="room"||e==="server"?{type:"room_server",isRepeater:r.is_repeater===!0,isCompanion:!1,isRoomServer:!0,isClient:!1,label:"Room Server",badgeText:"ROOM"}:e==="companion"||e==="chat node"||e==="chat_node"||e==="chat"?{type:"companion",isRepeater:!1,isCompanion:!0,isRoomServer:!1,isClient:!1,label:"Companion",badgeText:"COMP"}:e==="client"||e==="cli"?{type:"companion",isRepeater:!1,isCompanion:!1,isRoomServer:!1,isClient:!0,label:"Client",badgeText:"CLI"}:e==="repeater"||e==="rep"?{type:"repeater",isRepeater:!0,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Repeater",badgeText:"RPT"}:r.is_repeater===!0?{type:"repeater",isRepeater:!0,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Repeater",badgeText:"RPT"}:{type:"unknown",isRepeater:!1,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Unknown",badgeText:""}}function n(r){switch(r){case a.GRP_TXT:case a.TXT_MSG:case a.REQ:case a.ANON_REQ:return"companion";case a.TRACE:case a.PATH:return"repeater";case a.GRP_DATA:return"room_server";default:return"unknown"}}function i(r){switch(r){case 1:return"companion";case 2:return"repeater";case 3:return"room_server";default:return"unknown"}}export{o as c,n as i,i as m};
import{bY as a}from"./index-CvSa8h-C.js";function o(r){var t;const e=((t=r.contact_type)==null?void 0:t.toLowerCase())??"";return e==="room server"||e==="room_server"||e==="room"||e==="server"?{type:"room_server",isRepeater:r.is_repeater===!0,isCompanion:!1,isRoomServer:!0,isClient:!1,label:"Room Server",badgeText:"ROOM"}:e==="companion"||e==="chat node"||e==="chat_node"||e==="chat"?{type:"companion",isRepeater:!1,isCompanion:!0,isRoomServer:!1,isClient:!1,label:"Companion",badgeText:"COMP"}:e==="client"||e==="cli"?{type:"companion",isRepeater:!1,isCompanion:!1,isRoomServer:!1,isClient:!0,label:"Client",badgeText:"CLI"}:e==="repeater"||e==="rep"?{type:"repeater",isRepeater:!0,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Repeater",badgeText:"RPT"}:r.is_repeater===!0?{type:"repeater",isRepeater:!0,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Repeater",badgeText:"RPT"}:{type:"unknown",isRepeater:!1,isCompanion:!1,isRoomServer:!1,isClient:!1,label:"Unknown",badgeText:""}}function n(r){switch(r){case a.GRP_TXT:case a.TXT_MSG:case a.REQ:case a.ANON_REQ:return"companion";case a.TRACE:case a.PATH:return"repeater";case a.GRP_DATA:return"room_server";default:return"unknown"}}function i(r){switch(r){case 1:return"companion";case 2:return"repeater";case 3:return"room_server";default:return"unknown"}}export{o as c,n as i,i as m};
@@ -1 +1 @@
import{dS as i}from"./index-BOwCLZTK.js";async function d(e,r=10){return i("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:r})})}const u=["Chat Node","Repeater","Room Server","Hybrid Node","Unknown"];async function f(e){const r=e.toLowerCase();for(const o of u)try{const s=await i(`/api/adverts_by_contact_type?contact_type=${encodeURIComponent(o)}&hours=168`),t=s.success&&s.data?s.data:s,n=(Array.isArray(t)?t:[]).find(c=>c.node_name&&c.node_name.toLowerCase()===r);if(n&&n.pubkey)return`0x${n.pubkey.substring(0,2)}`}catch{continue}return null}function p(e){return e.rtt_ms>500||e.rssi<-120?"Poor":e.rtt_ms>250||e.rssi<-100?"Fair":e.rtt_ms>100||e.rssi<-80?"Good":"Excellent"}async function m(e,r=10){if(r<1||r>60)return{success:!1,error:"Timeout must be 1-60 seconds"};let o;const s=e.match(/^(0x)?([0-9a-fA-F]{1,2})$/);if(s)o=`0x${s[2].padStart(2,"0")}`;else{const n=await f(e);if(!n)return{success:!1,error:`Node '${e}' not found`};o=n}const t=await d(o,r);if(!t.success||!t.data)return{success:!1,error:t.error||"Ping failed"};const a=p(t.data);return{success:!0,data:{...t.data,quality:a}}}export{m as a,d as p};
import{dT as i}from"./index-CvSa8h-C.js";async function d(e,r=10){return i("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:r})})}const u=["Chat Node","Repeater","Room Server","Hybrid Node","Unknown"];async function f(e){const r=e.toLowerCase();for(const o of u)try{const s=await i(`/api/adverts_by_contact_type?contact_type=${encodeURIComponent(o)}&hours=168`),t=s.success&&s.data?s.data:s,n=(Array.isArray(t)?t:[]).find(c=>c.node_name&&c.node_name.toLowerCase()===r);if(n&&n.pubkey)return`0x${n.pubkey.substring(0,2)}`}catch{continue}return null}function p(e){return e.rtt_ms>500||e.rssi<-120?"Poor":e.rtt_ms>250||e.rssi<-100?"Fair":e.rtt_ms>100||e.rssi<-80?"Good":"Excellent"}async function m(e,r=10){if(r<1||r>60)return{success:!1,error:"Timeout must be 1-60 seconds"};let o;const s=e.match(/^(0x)?([0-9a-fA-F]{1,2})$/);if(s)o=`0x${s[2].padStart(2,"0")}`;else{const n=await f(e);if(!n)return{success:!1,error:`Node '${e}' not found`};o=n}const t=await d(o,r);if(!t.success||!t.data)return{success:!1,error:t.error||"Ping failed"};const a=p(t.data);return{success:!0,data:{...t.data,quality:a}}}export{m as a,d as p};
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1 +1 @@
import{dS as t}from"./index-BOwCLZTK.js";async function a(){return t("/api/transport_keys")}async function e(o){return t("/api/transport_keys",{method:"POST",body:JSON.stringify(o)})}async function s(o,r){return t(`/api/transport_key/${o}`,{method:"PUT",body:JSON.stringify(r)})}async function c(o){return t(`/api/transport_key/${o}`,{method:"DELETE"})}async function i(){return t("/api/global_flood_policy")}async function y(o){return t("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:o})})}async function l(o){return t("/api/restart_service",{method:"POST",body:"{}",signal:o})}async function p(){return t("/api/check_pymc_console")}export{i as a,e as b,p as c,c as d,a as g,l as r,y as s,s as u};
import{dT as t}from"./index-CvSa8h-C.js";async function a(){return t("/api/transport_keys")}async function e(o){return t("/api/transport_keys",{method:"POST",body:JSON.stringify(o)})}async function s(o,r){return t(`/api/transport_key/${o}`,{method:"PUT",body:JSON.stringify(r)})}async function c(o){return t(`/api/transport_key/${o}`,{method:"DELETE"})}async function i(){return t("/api/global_flood_policy")}async function y(o){return t("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:o})})}async function l(o){return t("/api/restart_service",{method:"POST",body:"{}",signal:o})}async function p(){return t("/api/check_pymc_console")}export{i as a,e as b,p as c,c as d,a as g,l as r,y as s,s as u};
@@ -1,4 +1,4 @@
import{d as c}from"./index-BOwCLZTK.js";/**
import{d as c}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as a}from"./index-BOwCLZTK.js";/**
import{d as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as L,r as y,j as T,cv as E,e as D}from"./index-BOwCLZTK.js";import{A as H}from"./index-2RIoVPos.js";/**
import{d as L,r as y,j as T,cw as E,e as D}from"./index-CvSa8h-C.js";import{A as H}from"./index-CPifxb0-.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import{d as e}from"./index-BOwCLZTK.js";/**
import{d as e}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as a}from"./index-BOwCLZTK.js";/**
import{d as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
import{d as a}from"./index-BOwCLZTK.js";/**
import{d as a}from"./index-CvSa8h-C.js";/**
* @license lucide-react v0.559.0 - ISC
*
* This source code is licensed under the ISC license.
+2 -2
View File
@@ -39,8 +39,8 @@
--font-data: 'JetBrains Mono', 'SF Mono', Monaco, monospace;
}
</style>
<script type="module" crossorigin src="/assets/index-BOwCLZTK.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DH0lUVGm.css">
<script type="module" crossorigin src="/assets/index-CvSa8h-C.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-1OCG5H5s.css">
</head>
<body>
<div id="root"></div>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "pymc_console",
"version": "0.9.302",
"version": "0.9.303",
"description": "Vite + React Dashboard for pyMC_Repeater",
"private": true,
"type": "module",
+15 -9
View File
@@ -399,13 +399,19 @@ do_upgrade() {
branch=$(cd "$CLONE_DIR" && git rev-parse --abbrev-ref HEAD 2>/dev/null) || branch="$DEFAULT_BRANCH"
fi
# Upgrade type selection
local upgrade_type
upgrade_type=$($DIALOG --backtitle "pyMC Console" --title "Upgrade" --menu \
"\nWhat would you like to upgrade?" 12 55 2 \
"console" "Console only" \
"full" "Full Stack (Repeater + Console)" \
3>&1 1>&2 2>&3) || return 0
# Upgrade type selection (allow non-interactive via arg or env)
local upgrade_type="${1:-${UPGRADE_TYPE:-}}"
if [[ -z "$upgrade_type" ]]; then
upgrade_type=$($DIALOG --backtitle "pyMC Console" --title "Upgrade" --menu \
"\nWhat would you like to upgrade?" 12 55 2 \
"console" "Console only" \
"full" "Full Stack (Repeater + Console)" \
3>&1 1>&2 2>&3) || return 0
fi
if [[ "$upgrade_type" != "console" && "$upgrade_type" != "full" ]]; then
show_error "Unknown upgrade type: $upgrade_type"
return 1
fi
print_banner
echo -e " ${DIM}Mode: $([[ "$upgrade_type" == "full" ]] && echo "Full Stack" || echo "Console Only")${NC}"
@@ -622,7 +628,7 @@ Commands:
install [full|console] Fresh installation (default: interactive)
full - pyMC_Repeater + Console dashboard
console - Dashboard only (existing Repeater)
upgrade Upgrade existing installation
upgrade [full|console] Upgrade existing installation (non-interactive)
uninstall Remove everything
start Start service
stop Stop service
@@ -638,7 +644,7 @@ EOF
case "${1:-}" in
-h|--help) show_help ;;
install) setup_dialog; do_install "${2:-}" ;;
upgrade) setup_dialog; do_upgrade ;;
upgrade) setup_dialog; do_upgrade "${2:-}" ;;
uninstall) setup_dialog; do_uninstall ;;
start) do_start ;;
stop) do_stop ;;