Files
infra/ru-vps/proxy/config/ui/_nuxt/DY0SBW17.js
T
Dmitry 573590ef45
Deploy ru-vps / deploy (push) Successful in 24s
Опять прокси новый
2026-06-08 19:31:18 +03:00

1 line
35 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{B as e,Ct as t,D as n,G as r,H as i,J as a,K as o,L as s,P as c,Q as l,T as u,V as d,Y as f,Z as p,_ as m,b as h,d as g,l as _,lt as v,m as y,n as b,ot as x,tt as S,u as C,v as w,vt as T,wt as E,x as D,xt as O,y as k}from"./CaGtQlYh.js";import{s as A}from"./B794cfQr.js";import{$ as j,A as M,At as N,B as P,C as F,F as ee,It as I,J as te,Kt as L,L as ne,Lt as re,Nt as R,O as ie,Ot as z,P as ae,Pt as oe,R as B,Rt as V,a as se,at as H,h as U,k as ce,kt as W,nt as G,q as K,qt as q,t as J,y as Y}from"#entry";import{h as X}from"./CIa-1CJu.js";import{t as Z}from"./CJgAejf_.js";import{t as le}from"./Ce_uH7zp.js";import{a as Q,i as ue,n as de,o as fe,r as pe}from"./DNKnP_p9.js";import{a as me,i as he,n as ge,o as _e,r as ve,t as ye}from"./CqOBGK95.js";import{_ as $,y as be}from"./DohEsvF1.js";import{u as xe,x as Se}from"./CsU6pgHx.js";import{t as Ce}from"./DhTvfVif.js";import{t as we}from"./DIJlUfKz.js";import{t as Te}from"./CxiWMChH.js";var Ee={class:`flex min-w-0 items-center gap-1 text-sm font-bold whitespace-nowrap uppercase sm:text-xl`},De=Object.assign(n({__name:`LogoText`,setup(e){let t=N(),n=m(()=>!!t.currentEndpoint);return(e,t)=>{let r=W;return i(),D(`div`,Ee,[u(r,{class:`bg-linear-to-br from-primary to-secondary bg-clip-text text-transparent no-underline`,to:n.value?`/`:`/setup`},{default:p(()=>[...t[0]||=[w(`span`,null,`metacube`,-1)]]),_:1},8,[`to`]),t[1]||=w(`span`,{class:`hidden text-base-content min-[400px]:inline`},`(`,-1),t[2]||=w(`a`,{class:`hidden text-primary no-underline transition-transform duration-300 ease-in-out hover:scale-125 hover:rotate-90 min-[400px]:inline-block`,href:`https://github.com/metacubex/metacubexd`,target:`_blank`},` xd `,-1),t[3]||=w(`span`,{class:`hidden text-base-content min-[400px]:inline`},`)`,-1)])}}}),{__name:`LogoText`}),Oe={class:`relative`},ke={class:`m-0 list-none p-1.5`},Ae=[`onClick`],je={key:0,class:`flex h-4 w-4 items-center justify-center text-primary`},Me=Object.assign(n({__name:`LangSwitcher`,setup(n){let{locale:a,locales:o,setLocale:s}=z(),c=m(()=>o.value.map(e=>typeof e==`string`?{code:e,name:e}:e)),l=v(null),f=v(null),_=v(!1),{floatingStyles:x}=de(l,f,{placement:`top`,middleware:[Q(10),ue(),fe({padding:8})],whileElementsMounted:pe});function S(){_.value=!_.value}function A(e){s(e),_.value=!1}function j(e){let t=e.target;!l.value?.contains(t)&&!f.value?.contains(t)&&(_.value=!1)}return e(()=>{document.addEventListener(`click`,j)}),d(()=>{document.removeEventListener(`click`,j)}),(e,n)=>(i(),D(`div`,Oe,[w(`button`,{ref_key:`reference`,ref:l,class:O([`flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-base-content/70 transition-all duration-200 ease-in-out hover:bg-base-content/10 hover:text-base-content`,{"bg-primary/15 text-primary":T(_)}]),"aria-label":`Change language`,onClick:C(S,[`stop`])},[u(T(ae),{size:18})],2),(i(),k(y,{to:`body`},[u(b,{"enter-active-class":`transition-opacity duration-150`,"leave-active-class":`transition-opacity duration-100`,"enter-from-class":`opacity-0`,"leave-to-class":`opacity-0`},{default:p(()=>[T(_)?(i(),D(`div`,{key:0,ref_key:`floating`,ref:f,style:t(T(x)),class:`z-70 w-40 overflow-hidden rounded-xl border border-base-content/10 bg-base-300/98 shadow-[0_10px_40px_var(--color-base-content)/20,0_0_0_1px_var(--color-base-content)/5] backdrop-blur-[12px]`},[n[1]||=w(`div`,{class:`flex items-center border-b border-base-content/8 bg-base-200/60 px-3 py-2.5`},[w(`span`,{class:`text-[0.6875rem] font-semibold tracking-[0.05em] text-base-content/50 uppercase`},`Language`)],-1),w(`ul`,ke,[(i(!0),D(g,null,r(T(c),e=>(i(),D(`li`,{key:e.code},[w(`button`,{class:O([`flex w-full cursor-pointer items-center justify-between rounded-lg border-none bg-transparent px-2.5 py-2 transition-all duration-150 ease-in-out hover:bg-base-content/8`,{"bg-primary/15 hover:bg-primary/20":T(a)===e.code}]),onClick:t=>A(e.code)},[w(`span`,{class:O([`text-[0.8125rem] font-medium text-base-content`,{"text-primary":T(a)===e.code}])},E(e.name),3),T(a)===e.code?(i(),D(`div`,je,[...n[0]||=[w(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,class:`h-full w-full`},[w(`path`,{"fill-rule":`evenodd`,d:`M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z`,"clip-rule":`evenodd`})],-1)]])):h(``,!0)],10,Ae)]))),128))])],4)):h(``,!0)]),_:1})]))]))}}),{__name:`LangSwitcher`}),Ne={class:`relative`},Pe=Object.assign(n({__name:`ThemeSwitcher`,setup(n){let r=Z(),a=v(null),o=v(null),s=v(!1),{floatingStyles:c}=de(a,o,{placement:`top`,middleware:[Q(10),ue(),fe({padding:8})],whileElementsMounted:pe});function l(){s.value=!s.value}function f(e){r.curTheme=e,document.documentElement.setAttribute(`data-theme`,e),s.value=!1}function m(e){let t=e.target;!a.value?.contains(t)&&!o.value?.contains(t)&&(s.value=!1)}return e(()=>{document.addEventListener(`click`,m)}),d(()=>{document.removeEventListener(`click`,m)}),(e,n)=>{let d=_e;return i(),D(`div`,Ne,[w(`button`,{ref_key:`reference`,ref:a,class:O([`flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border-none bg-primary text-primary-content transition-all duration-200 ease-in-out hover:scale-110 hover:shadow-[0_4px_12px_oklch(var(--p)/0.4)]`,{"scale-110 rotate-[15deg]":T(s)}]),onClick:C(l,[`stop`])},[u(T(ie),{size:18})],2),(i(),k(y,{to:`body`},[u(b,{"enter-active-class":`transition-opacity duration-150`,"leave-active-class":`transition-opacity duration-100`,"enter-from-class":`opacity-0`,"leave-to-class":`opacity-0`},{default:p(()=>[T(s)?(i(),D(`div`,{key:0,ref_key:`floating`,ref:o,style:t(T(c)),class:`z-70 w-60 overflow-visible rounded-xl shadow-lg`},[n[0]||=w(`div`,{class:`flex items-center border-b border-gray-700 bg-gray-800/90 px-3 py-2`},[w(`span`,{class:`text-[0.6875rem] font-semibold tracking-[0.05em] text-gray-400 uppercase`},` Theme `)],-1),u(d,{"model-value":T(r).curTheme,"max-height":420,"onUpdate:modelValue":f},null,8,[`model-value`])],4)):h(``,!0)]),_:1})]))])}}}),{__name:`ThemeSwitcher`}),Fe={key:0,class:`fixed inset-x-0 bottom-[4.5rem] z-50 mx-auto w-max lg:hidden`},Ie={class:`mx-auto flex w-max flex-col overflow-hidden rounded-2xl shadow-xl backdrop-blur-[16px]`,style:{border:`1px solid color-mix(in oklch, var(--color-base-content) 12%, transparent)`,background:`color-mix(in oklch, var(--color-base-300) 95%, transparent)`}},Le={key:0,class:`ml-auto h-1.5 w-1.5 rounded-full bg-primary`},Re={class:`mx-1 mb-2 overflow-visible rounded-2xl shadow-lg backdrop-blur-[12px] sm:mx-2`,style:{border:`1px solid color-mix(in oklch, var(--color-base-content) 10%, transparent)`,background:`color-mix(in oklch, var(--color-base-300) 90%, transparent)`}},ze={class:`grid h-16 w-full grid-cols-5`},Be={class:`sr-only`},Ve={class:`relative flex items-center justify-center`},He={key:0,class:`absolute -top-0.5 -right-0.5 h-2.5 w-2.5 rounded-full border-2 border-base-300 bg-primary`},Ue={class:`sr-only`},We=Object.assign(J(n({__name:`MobileBottomNav`,setup(n){let{t:o}=z(),s=L(),c=m(()=>[{href:`/overview`,name:o(`overview`),icon:ee},{href:`/proxies`,name:o(`proxies`),icon:B},{href:`/rules`,name:o(`rules`),icon:Y},{href:`/connections`,name:o(`connections`),icon:ce}]),l=m(()=>c.value.slice(0,2)),d=m(()=>c.value.slice(2,4)),_=m(()=>[{href:`/traffic`,name:o(`dataUsage`),icon:j},{href:`/logs`,name:o(`logs`),icon:P},{href:`/config`,name:o(`config`),icon:U}]),y=e=>s.path===e,x=v(!1),S=()=>{x.value=!x.value},C=()=>{x.value=!1};f(()=>s.path,C);let A=m(()=>_.value.some(e=>e.href===s.path)),M=v(!1);return e(()=>{requestAnimationFrame(()=>{M.value=!0})}),(e,n)=>{let s=W;return i(),D(g,null,[u(b,{name:`fade`},{default:p(()=>[T(x)?(i(),D(`div`,{key:0,class:`fixed inset-0 z-40 lg:hidden`,"aria-hidden":`true`,onClick:C})):h(``,!0)]),_:1}),u(b,{name:`slide-up`},{default:p(()=>[T(x)?(i(),D(`div`,Fe,[w(`div`,Ie,[(i(!0),D(g,null,r(T(_),e=>(i(),k(s,{key:e.href,to:e.href,class:O([`flex items-center gap-3 px-5 py-3 text-sm font-medium no-underline transition-colors duration-200`,y(e.href)?`bg-primary/10 text-primary`:`text-base-content/70 hover:bg-base-content/5 hover:text-base-content`])},{default:p(()=>[(i(),k(a(e.icon),{class:`h-5 w-5 shrink-0`})),w(`span`,null,E(e.name),1),y(e.href)?(i(),D(`span`,Le)):h(``,!0)]),_:2},1032,[`to`,`class`]))),128))])])):h(``,!0)]),_:1}),w(`nav`,{"aria-label":`Mobile bottom navigation`,class:O([`fixed inset-x-0 bottom-0 z-50 transition-all duration-500 ease-[cubic-bezier(0.22,1,0.36,1)] lg:hidden`,T(M)?`translate-y-0 opacity-100`:`translate-y-full opacity-0`])},[w(`div`,Re,[w(`div`,ze,[(i(!0),D(g,null,r(T(l),e=>(i(),k(s,{key:e.href,to:e.href,class:O([`group relative flex flex-col items-center justify-center gap-0.5 no-underline transition-all duration-200 ease-in-out active:scale-90`,y(e.href)?`text-primary`:`text-base-content/60 hover:text-base-content`])},{default:p(()=>[w(`div`,{class:O([`absolute inset-1 rounded-xl transition-all duration-300 ease-in-out`,y(e.href)?`bg-primary/10`:`bg-transparent group-hover:bg-base-content/5`])},null,2),w(`div`,{class:O([`absolute top-1 h-1 rounded-full bg-primary transition-all duration-300 ease-in-out`,y(e.href)?`w-8 opacity-100`:`w-0 opacity-0`])},null,2),w(`div`,{class:O([`relative z-10 transition-transform duration-300 ease-in-out group-hover:scale-105`,y(e.href)?`scale-110`:`scale-100`])},[(i(),k(a(e.icon),{class:`h-5 w-5`}))],2),w(`span`,Be,E(`Navigate to ${e.name}`),1),w(`span`,{"aria-hidden":`true`,class:O([`relative z-10 truncate px-0.5 text-[9px] font-medium transition-all duration-300 sm:text-[10px]`,y(e.href)?`opacity-100`:`opacity-80`])},E(e.name),3)]),_:2},1032,[`to`,`class`]))),128)),w(`div`,Ve,[w(`button`,{class:O([`group relative -top-3 flex h-14 w-14 flex-col items-center justify-center rounded-2xl shadow-lg transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)] active:scale-90`,T(x)||T(A)?`bg-primary text-primary-content shadow-primary/40`:`bg-base-content/10 text-base-content hover:bg-base-content/15`]),style:t(T(x)||T(A)?`box-shadow: 0 4px 20px color-mix(in oklch, var(--color-primary) 40%, transparent)`:``),"aria-label":`More menu`,onClick:S},[u(b,{name:`icon-spin`,mode:`out-in`},{default:p(()=>[T(x)?(i(),k(T(se),{key:0,class:`h-6 w-6`})):(i(),k(T(F),{key:1,class:`h-6 w-6`}))]),_:1}),T(A)&&!T(x)?(i(),D(`span`,He)):h(``,!0)],6),w(`span`,{"aria-hidden":`true`,class:O([`absolute bottom-1 text-[9px] font-medium transition-all duration-300 sm:text-[10px]`,T(x)||T(A)?`text-primary opacity-100`:`text-base-content/60 opacity-80`])},E(T(o)(`more`)),3)]),(i(!0),D(g,null,r(T(d),e=>(i(),k(s,{key:e.href,to:e.href,class:O([`group relative flex flex-col items-center justify-center gap-0.5 no-underline transition-all duration-200 ease-in-out active:scale-90`,y(e.href)?`text-primary`:`text-base-content/60 hover:text-base-content`])},{default:p(()=>[w(`div`,{class:O([`absolute inset-1 rounded-xl transition-all duration-300 ease-in-out`,y(e.href)?`bg-primary/10`:`bg-transparent group-hover:bg-base-content/5`])},null,2),w(`div`,{class:O([`absolute top-1 h-1 rounded-full bg-primary transition-all duration-300 ease-in-out`,y(e.href)?`w-8 opacity-100`:`w-0 opacity-0`])},null,2),w(`div`,{class:O([`relative z-10 transition-transform duration-300 ease-in-out group-hover:scale-105`,y(e.href)?`scale-110`:`scale-100`])},[(i(),k(a(e.icon),{class:`h-5 w-5`}))],2),w(`span`,Ue,E(`Navigate to ${e.name}`),1),w(`span`,{"aria-hidden":`true`,class:O([`relative z-10 truncate px-0.5 text-[9px] font-medium transition-all duration-300 sm:text-[10px]`,y(e.href)?`opacity-100`:`opacity-80`])},E(e.name),3)]),_:2},1032,[`to`,`class`]))),128))])])],2)],64)}}}),[[`__scopeId`,`data-v-83e46dcf`]]),{__name:`MobileBottomNav`}),Ge={class:`drawer-content flex h-full flex-col`},Ke={class:`z-50 flex h-14 items-center gap-2 border-b border-[var(--sidebar-border)] bg-[color-mix(in_oklch,var(--color-base-300)_95%,transparent)] px-2 shadow-[0_4px_20px_color-mix(in_oklch,var(--color-base-content)_5%,transparent)] backdrop-blur-[12px] sm:px-4 lg:hidden`},qe={key:0,for:`main-drawer`,class:`press-tactile flex h-9 w-9 cursor-pointer items-center justify-center rounded-lg bg-transparent text-base-content hover:bg-[var(--sidebar-hover)]`,"aria-label":`open sidebar`},Je={class:`min-w-0 shrink`},Ye={class:`ml-auto flex shrink-0 items-center gap-1`},Xe={class:`flex min-h-0 flex-1 flex-col p-2 sm:p-4`},Ze={class:`flex min-h-0 flex-1 flex-col`},Qe={key:0,class:`h-20 shrink-0 lg:hidden`,"aria-hidden":`true`},$e={key:0,class:`drawer-side z-[60]`},et={class:`flex shrink-0 flex-col gap-2 border-b border-[var(--sidebar-border)] p-3`},tt={class:`flex-1 overflow-y-auto p-2`},nt={class:`m-0 flex list-none flex-col gap-1 p-0`},rt={key:0,"aria-hidden":`true`,class:`nav-link__indicator absolute top-1/2 left-0 -translate-y-1/2 rounded-r-full bg-primary`},it={class:`nav-link__icon relative z-1 flex shrink-0 items-center justify-center`},at=Object.assign(J(n({__name:`Sidebar`,setup(e){let n=L(),{t:s}=z(),c=Z(),d=m(()=>[{href:`/overview`,name:s(`overview`),icon:ee},{href:`/proxies`,name:s(`proxies`),icon:B},{href:`/rules`,name:s(`rules`),icon:Y},{href:`/connections`,name:s(`connections`),icon:ce},{href:`/traffic`,name:s(`dataUsage`),icon:j},{href:`/logs`,name:s(`logs`),icon:P},{href:`/config`,name:s(`config`),icon:U}]),y=e=>n.path===e,b=v(null);f(()=>n.path,()=>{b.value&&(b.value.checked=!1)});let x=()=>{c.sidebarExpanded=!c.sidebarExpanded};return(e,f)=>{let m=De,v=Me,S=Pe,C=W,A=me,j=We;return i(),D(`div`,{class:O([`drawer h-full [--sidebar-border:color-mix(in_oklch,var(--color-base-content)_10%,transparent)] [--sidebar-hover:color-mix(in_oklch,var(--color-base-content)_5%,transparent)]`,{"lg:drawer-open":T(n).path!==`/setup`}])},[w(`input`,{id:`main-drawer`,ref_key:`drawerCheckbox`,ref:b,type:`checkbox`,class:`drawer-toggle`},null,512),w(`div`,Ge,[w(`header`,Ke,[T(n).path!==`/setup`&&!T(c).useMobileBottomNav?(i(),D(`label`,qe,[u(T(M),{class:`h-5 w-5`})])):h(``,!0),w(`div`,Je,[u(m)]),w(`div`,Ye,[f[0]||=w(`div`,{id:`header-traffic-indicator`,class:`flex items-center`},null,-1),u(v),u(S)])]),w(`div`,Xe,[w(`div`,Ze,[o(e.$slots,`default`,{},void 0,!0)]),T(c).useMobileBottomNav&&T(n).path!==`/setup`?(i(),D(`div`,Qe)):h(``,!0)])]),T(n).path===`/setup`?h(``,!0):(i(),D(`div`,$e,[f[2]||=w(`label`,{for:`main-drawer`,"aria-label":`close sidebar`,class:`drawer-overlay bg-[color-mix(in_oklch,var(--color-base-content)_40%,transparent)] backdrop-blur-[4px]`},null,-1),w(`div`,{class:O([`flex h-full w-52 flex-col border-r border-[var(--sidebar-border)] bg-[linear-gradient(180deg,color-mix(in_oklch,var(--color-base-200)_98%,transparent)_0%,var(--color-base-200)_100%)] backdrop-blur-[12px] transition-[width] duration-300 ease-[var(--ease-spring-soft)]`,T(c).sidebarExpanded?``:`lg:w-16`])},[w(`div`,et,[w(`div`,{class:O([`flex items-center lg:min-h-7`,T(c).sidebarExpanded?``:`lg:justify-center`])},[l(u(m,{class:`hidden lg:block`},null,512),[[_,T(c).sidebarExpanded]]),u(m,{class:`block lg:hidden`})],2),w(`button`,{class:O([`press-tactile hidden cursor-pointer items-center justify-center gap-2 rounded-lg border border-[var(--sidebar-border)] bg-transparent p-2 text-sm text-base-content hover:border-[color-mix(in_oklch,var(--color-base-content)_20%,transparent)] hover:bg-[var(--sidebar-hover)] lg:flex`,T(c).sidebarExpanded?`w-full`:`aspect-square w-9 self-center`]),onClick:x},[T(c).sidebarExpanded?(i(),k(T(te),{key:1,class:`h-5 w-5`})):(i(),k(T(K),{key:0,class:`h-5 w-5`})),w(`span`,{class:O(T(c).sidebarExpanded?``:`lg:hidden`)},E(T(s)(`collapse`)),3)],2)]),w(`nav`,tt,[w(`ul`,nt,[(i(!0),D(g,null,r(T(d),(e,n)=>(i(),D(`li`,{key:e.href,class:`nav-stagger`,style:t({animationDelay:`${n*45}ms`})},[u(C,{to:e.href,class:O([`nav-link group relative flex w-full items-center gap-3 overflow-hidden rounded-lg px-3 py-2.5 text-sm font-medium text-[color-mix(in_oklch,var(--color-base-content)_70%,transparent)] no-underline hover:text-base-content`,[y(e.href)?`is-active`:``,T(c).sidebarExpanded?``:`lg:justify-center lg:px-0`]]),title:T(c).sidebarExpanded?void 0:e.name},{default:p(()=>[f[1]||=w(`span`,{"aria-hidden":`true`,class:`nav-link__glow pointer-events-none absolute inset-0 rounded-lg`},null,-1),y(e.href)?(i(),D(`span`,rt)):h(``,!0),w(`div`,it,[(i(),k(a(e.icon),{class:`h-5 w-5`}))]),w(`span`,{class:O([`relative z-1 flex-1 overflow-hidden text-ellipsis whitespace-nowrap`,T(c).sidebarExpanded?``:`lg:hidden`])},E(e.name),3)]),_:2},1032,[`to`,`class`,`title`])],4))),128))])]),w(`div`,{class:O([`shrink-0 border-t border-[var(--sidebar-border)] p-2`,T(c).sidebarExpanded?``:`lg:flex lg:flex-col lg:items-center`])},[w(`div`,{id:`sidebar-traffic-expanded`,class:O([`mb-2 hidden w-full`,T(c).sidebarExpanded?`lg:block`:``])},null,2),w(`div`,{id:`sidebar-traffic-indicator`,class:O([`mb-2 hidden w-full lg:block`,T(c).sidebarExpanded?`lg:!hidden`:``])},null,2),w(`div`,{class:O([`mb-2 hidden items-center gap-1 lg:flex`,T(c).sidebarExpanded?`flex-row`:`flex-col`])},[u(v),u(S)],2),u(A,{collapsed:!T(c).sidebarExpanded},null,8,[`collapsed`])],2)],2)])),T(c).useMobileBottomNav&&T(n).path!==`/setup`?(i(),k(j,{key:1})):h(``,!0)],2)}}}),[[`__scopeId`,`data-v-2cafba74`]]),{__name:`Sidebar`}),ot={key:0,class:`fixed top-0 right-0 left-0 z-[100] flex items-center justify-between gap-2 bg-error/90 px-4 py-2 text-error-content backdrop-blur-sm`},st={class:`flex min-w-0 items-center gap-2`},ct={class:`truncate text-sm font-medium`},lt={class:`hidden truncate text-xs opacity-80 sm:inline`},ut={class:`flex shrink-0 items-center gap-2`},dt=[`disabled`],ft={key:0,class:`loading loading-xs loading-spinner`},pt={key:1},mt=Object.assign(n({__name:`ConnectionErrorBanner`,setup(e){let{t}=z(),n=q(),r=N(),{isError:a,refetch:o,isFetching:s}=A();function c(){r.setSelectedEndpoint(``),n.push(`/setup`)}return(e,n)=>T(a)?(i(),D(`div`,ot,[w(`div`,st,[n[1]||=w(`svg`,{xmlns:`http://www.w3.org/2000/svg`,class:`size-5 shrink-0`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[w(`path`,{d:`M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0zM12 9v4M12 17h.01`})],-1),w(`span`,ct,E(T(t)(`connectionError`)),1),w(`span`,lt,E(T(r).currentEndpoint?.url),1)]),w(`div`,ut,[w(`button`,{class:`btn text-error-content btn-ghost btn-xs hover:bg-error-content/20`,disabled:T(s),onClick:n[0]||=()=>T(o)()},[T(s)?(i(),D(`span`,ft)):(i(),D(`span`,pt,E(T(t)(`retry`)),1))],8,dt),w(`button`,{class:`btn bg-error-content/20 text-error-content btn-xs hover:bg-error-content/30`,onClick:c},E(T(t)(`switchEndpoint`)),1)])])):h(``,!0)}}),{__name:`ConnectionErrorBanner`}),ht=globalThis.setInterval,gt=3e3;function _t(){let e=N(),t=Ce(),n=le(),r=we(),i=Z(),a=null,o=null,s=null,c=null,l=null,u=null,d=e=>{e&&(e.onclose=null,e.close())},f=()=>{$()||u||e.currentEndpoint&&(u=setTimeout(()=>{u=null,m()},gt))},p=(t,n)=>{let r=e.currentEndpoint;if(!r)return null;let i=e.wsEndpointURL,a=r.secret,o=new URLSearchParams;a&&o.set(`token`,a);let s=new WebSocket(`${i}/${t}?${o.toString()}`);return s.onmessage=e=>{try{n(JSON.parse(e.data))}catch{}},s.onerror=e=>{console.error(`WebSocket error for ${t}:`,e)},s.onclose=()=>{f()},s},m=()=>{if(h(),$()){let e=be();t.updateFromWsMsg({connections:e.mockConnections,uploadTotal:e.mockTrafficStats.up,downloadTotal:e.mockTrafficStats.down}),n.setLatestTraffic(e.mockTrafficStats),n.setLatestMemory(e.mockMemory);let i=Date.now(),a=e.mockConnections.length;for(let t=30;t>=0;t--){let r=i-t*1e3,o=e.mockTrafficStats.down+Math.floor(Math.random()*1e5)-5e4,s=e.mockTrafficStats.up+Math.floor(Math.random()*2e4)-1e4,c=e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,l=a+Math.floor(Math.random()*10)-5;n.addTrafficDataPoint(r,o,s),n.addMemoryDataPoint(r,c),n.addConnectionCountDataPoint(r,l)}e.mockLogs.forEach(e=>{r.addLog(e)}),l=ht(()=>{let t=Date.now(),r={up:e.mockTrafficStats.up+Math.floor(Math.random()*1e4),down:e.mockTrafficStats.down+Math.floor(Math.random()*5e4)};n.setLatestTraffic(r),n.addTrafficDataPoint(t,r.down,r.up);let i={inuse:e.mockMemory.inuse+Math.floor(Math.random()*5e6)-25e5,oslimit:e.mockMemory.oslimit};n.setLatestMemory(i),n.addMemoryDataPoint(t,i.inuse);let a=e.mockConnections.length+Math.floor(Math.random()*10)-5;n.addConnectionCountDataPoint(t,a)},1e3);return}a=p(`connections`,e=>{let r=e;if(t.updateFromWsMsg(r),r){let e=r.connections?.length??0;n.addConnectionCountDataPoint(Date.now(),e)}}),o=p(`traffic`,e=>{let t=e;n.setLatestTraffic(t),n.addTrafficDataPoint(Date.now(),t.down,t.up)}),s=p(`memory`,e=>{let t=e;n.setLatestMemory(t),n.addMemoryDataPoint(Date.now(),t.inuse)}),c=g()},h=()=>{u&&=(clearTimeout(u),null),l&&=(clearInterval(l),null),d(a),d(o),d(s),d(c),a=null,o=null,s=null,c=null},g=()=>{let t=e.currentEndpoint;if(!t)return null;let n=e.wsEndpointURL,a=new URLSearchParams;t.secret&&a.set(`token`,t.secret),a.set(`level`,i.logLevel);let o=new WebSocket(`${n}/logs?${a.toString()}`);return o.onmessage=e=>{try{let t=JSON.parse(e.data);r.addLog(t)}catch{}},o.onclose=()=>{f()},o};return S()&&x(h),{connect:m,disconnect:h,reconnectLogs:()=>{d(c),c=$()?null:g()}}}var vt={class:`hidden`},yt=Object.assign(n({__name:`ProtectedResources`,setup(t){let{connect:n,disconnect:r,reconnectLogs:a}=_t(),o=Z();return e(()=>{n()}),d(()=>{r()}),f(()=>o.logLevel,()=>{a()}),(e,t)=>(i(),D(`div`,vt))}}),{__name:`ProtectedResources`}),bt={class:`flex items-center gap-1`},xt={class:`font-mono text-xs`},St={class:`flex items-center gap-1`},Ct={class:`font-mono text-xs`},wt={class:`flex w-full flex-col items-center gap-2 overflow-hidden py-1`},Tt={class:`flex flex-col items-center gap-0.5`},Et={class:`font-mono text-[9px] font-medium tracking-tighter whitespace-nowrap`},Dt={class:`flex flex-col items-center gap-0.5`},Ot={class:`font-mono text-[9px] font-medium tracking-tighter whitespace-nowrap`},kt={key:0,class:`w-full rounded-lg bg-[color-mix(in_oklch,var(--color-base-100)_50%,transparent)] p-2`},At={class:`grid grid-cols-2 gap-1 text-xs`},jt={class:`flex items-center gap-1`},Mt={class:`truncate font-mono text-xs`},Nt={class:`flex items-center gap-1`},Pt={class:`truncate font-mono text-xs`},Ft={class:`flex items-center gap-1`},It={class:`font-mono text-xs`},Lt={class:`flex items-center gap-1`},Rt={class:`font-mono text-xs`},zt=[`title`],Bt={class:`flex flex-col gap-2 p-3`},Vt={class:`flex items-center justify-between gap-2`},Ht={class:`text-xs font-semibold uppercase opacity-60`},Ut={class:`flex items-center gap-1`},Wt=[`title`],Gt=[`title`],Kt={class:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs`},qt={class:`flex items-center gap-1`},Jt={class:`font-mono text-xs font-medium`},Yt={class:`flex items-center gap-1`},Xt={class:`font-mono text-xs font-medium`},Zt={class:`flex items-center gap-1 opacity-70`},Qt={class:`font-mono text-xs`},$t={class:`flex items-center gap-1 opacity-70`},en={class:`font-mono text-xs`},tn=Object.assign(J(n({__name:`GlobalTrafficIndicator`,setup(n){let r=le(),a=Ce(),o=Z(),l=oe(),d=I(`globalTrafficIndicatorVisible`,!0),_=I(`globalTrafficIndicatorCollapsed`,!0),x=I(`globalTrafficIndicatorPosition`,{x:-1,y:-1}),S=v(!1),C=v({x:0,y:0}),A=v(null),j=v(null),M,N,P=m(()=>r.latestTraffic?.down??0),F=m(()=>r.latestTraffic?.up??0),ee=m(()=>r.latestMemory?.inuse??0),te=m(()=>a.latestConnectionMsg?.connections?.length??0),L=e=>Se(e).toString(),re=m(()=>x.value.x===-1||x.value.y===-1?{right:`16px`,bottom:`16px`}:{left:`${x.value.x}px`,top:`${x.value.y}px`});function R(){d.value=!d.value}function ie(){_.value=!_.value}function z(){_.value=!1,x.value={x:-1,y:-1}}function ae(e){if(!A.value)return;S.value=!0;let t=A.value.getBoundingClientRect(),n=`touches`in e?e.touches[0].clientX:e.clientX,r=`touches`in e?e.touches[0].clientY:e.clientY;C.value={x:n-t.left,y:r-t.top},x.value.x===-1&&(x.value.x=t.left,x.value.y=t.top),document.addEventListener(`mousemove`,B),document.addEventListener(`mouseup`,V),document.addEventListener(`touchmove`,B),document.addEventListener(`touchend`,V)}function B(e){if(!S.value)return;let t=`touches`in e?e.touches[0].clientX:e.clientX,n=`touches`in e?e.touches[0].clientY:e.clientY,r=t-C.value.x,i=n-C.value.y,a=A.value?.getBoundingClientRect(),o=a?.width||200,s=a?.height||150;r=Math.max(0,Math.min(window.innerWidth-o,r)),i=Math.max(0,Math.min(window.innerHeight-s,i)),x.value.x=r,x.value.y=i}function V(){S.value&&(S.value=!1,document.removeEventListener(`mousemove`,B),document.removeEventListener(`mouseup`,V),document.removeEventListener(`touchmove`,B),document.removeEventListener(`touchend`,V))}function U(){if(!j.value||!N)return;M&&=(M.destroy(),void 0);let e=xe(),t=j.value.offsetWidth||200;M=N.chart(j.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,width:t,height:48},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Upload`,color:e.seriesColors[0],data:r.trafficChartHistory.upload.length>0?[...r.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Download`,color:e.seriesColors[1],data:r.trafficChartHistory.download.length>0?[...r.trafficChartHistory.download].slice(-30):[[Date.now(),0]]}]})}function ce(){if(!M)return;let e=[...r.trafficChartHistory.download].slice(-30),t=[...r.trafficChartHistory.upload].slice(-30);M.series[0]?.setData(t,!1),M.series[1]?.setData(e,!0)}function W(){if(!Q)return;let e=[...r.trafficChartHistory.download].slice(-30),t=[...r.trafficChartHistory.upload].slice(-30);Q.series[0]?.setData(t,!1),Q.series[1]?.setData(e,!0)}function K(){if(!X.value||!N)return;Q&&=(Q.destroy(),void 0);let e=xe();Q=N.chart(X.value,{chart:{type:`areaspline`,backgroundColor:`transparent`,spacing:[0,0,0,0],margin:[0,0,0,0],animation:!1,height:40},credits:{enabled:!1},accessibility:{enabled:!1},title:{text:void 0},legend:{enabled:!1},xAxis:{visible:!1,type:`datetime`},yAxis:{visible:!1,min:0},tooltip:{enabled:!1},plotOptions:{areaspline:{lineWidth:1.5,marker:{enabled:!1},fillOpacity:.2,animation:!1}},series:[{type:`areaspline`,name:`Upload`,color:e.seriesColors[0],data:r.trafficChartHistory.upload.length>0?[...r.trafficChartHistory.upload].slice(-30):[[Date.now(),0]]},{type:`areaspline`,name:`Download`,color:e.seriesColors[1],data:r.trafficChartHistory.download.length>0?[...r.trafficChartHistory.download].slice(-30):[[Date.now(),0]]}]})}f(()=>r.latestTraffic,e=>{e&&l.value!==`hidden`&&(M?ce():j.value&&d.value&&!_.value&&U(),Q?W():X.value&&K())}),f(()=>o.curTheme,()=>{j.value&&!_.value&&d.value&&U(),X.value&&K()}),f(_,e=>{!e&&d.value?c(()=>{setTimeout(()=>{j.value&&r.latestTraffic&&U()},50)}):e&&M&&(M.destroy(),M=void 0)}),f(d,e=>{e&&!_.value?c(()=>{setTimeout(()=>{j.value&&r.latestTraffic&&U()},50)}):!e&&M&&(M.destroy(),M=void 0)}),f(()=>o.sidebarExpanded,e=>{e&&c(()=>{setTimeout(()=>{X.value&&r.latestTraffic&&K()},100)})});let q=v(!1),J=v(!1),Y=v(!1),X=v(null),Q;return e(async()=>{c(()=>{q.value=!!document.getElementById(`header-traffic-indicator`),J.value=!!document.getElementById(`sidebar-traffic-indicator`),Y.value=!!document.getElementById(`sidebar-traffic-expanded`)}),N=await Te(),d.value&&!_.value&&r.latestTraffic&&setTimeout(()=>{j.value&&U()},100),r.latestTraffic&&setTimeout(()=>{X.value&&K()},150)}),s(()=>{M&&=(M.destroy(),void 0),Q&&=(Q.destroy(),void 0)}),(e,n)=>(i(),D(g,null,[T(q)?(i(),k(y,{key:0,to:`#header-traffic-indicator`},[T(d)&&T(_)&&T(r).latestTraffic?(i(),D(`div`,{key:0,class:`flex cursor-pointer items-center gap-2 rounded-lg bg-[color-mix(in_oklch,var(--color-base-100)_50%,transparent)] px-2 py-1 transition-[background] duration-200 ease-in-out hover:bg-[var(--color-base-100)]`,onClick:z},[w(`div`,bt,[u(T(H),{class:`size-3 shrink-0 text-[var(--color-success)]`}),w(`span`,xt,E(L(T(P)))+`/s`,1)]),n[0]||=w(`div`,{class:`h-3 w-px bg-[color-mix(in_oklch,var(--color-base-content)_20%,transparent)]`},null,-1),w(`div`,St,[u(T(G),{class:`size-3 shrink-0 text-[var(--color-info)]`}),w(`span`,Ct,E(L(T(F)))+`/s`,1)])])):h(``,!0)])):h(``,!0),T(J)?(i(),k(y,{key:1,to:`#sidebar-traffic-indicator`},[T(r).latestTraffic?(i(),D(`div`,{key:0,class:`w-full cursor-pointer rounded-lg bg-[color-mix(in_oklch,var(--color-base-100)_50%,transparent)] p-2 transition-[background] duration-200 ease-in-out hover:bg-[var(--color-base-100)]`,onClick:z},[w(`div`,wt,[w(`div`,Tt,[u(T(H),{class:`size-3 shrink-0 text-[var(--color-success)]`}),w(`span`,Et,E(L(T(P)).replace(` `,``))+`/s`,1)]),w(`div`,Dt,[u(T(G),{class:`size-3 shrink-0 text-[var(--color-info)]`}),w(`span`,Ot,E(L(T(F)).replace(` `,``))+`/s`,1)])])])):h(``,!0)])):h(``,!0),T(Y)?(i(),k(y,{key:2,to:`#sidebar-traffic-expanded`},[T(r).latestTraffic?(i(),D(`div`,kt,[w(`div`,{ref_key:`sidebarChartContainer`,ref:X,class:`mb-2 h-10 w-full`},null,512),w(`div`,At,[w(`div`,jt,[u(T(H),{class:`size-3 shrink-0 text-[var(--color-success)]`}),w(`span`,Mt,E(L(T(P)))+`/s`,1)]),w(`div`,Nt,[u(T(G),{class:`size-3 shrink-0 text-[var(--color-info)]`}),w(`span`,Pt,E(L(T(F)))+`/s`,1)])])])):h(``,!0)])):h(``,!0),T(d)&&T(_)&&T(r).latestTraffic&&!T(q)&&!T(J)?(i(),D(`div`,{key:3,class:`fixed right-4 bottom-4 z-50 flex cursor-pointer items-center gap-2 rounded-xl bg-[var(--color-base-200)] px-3 py-2 shadow-lg`,onClick:z},[w(`div`,Ft,[u(T(H),{class:`size-3 shrink-0 text-[var(--color-success)]`}),w(`span`,It,E(L(T(P)))+`/s`,1)]),n[1]||=w(`div`,{class:`h-3 w-px bg-[color-mix(in_oklch,var(--color-base-content)_20%,transparent)]`},null,-1),w(`div`,Lt,[u(T(G),{class:`size-3 shrink-0 text-[var(--color-info)]`}),w(`span`,Rt,E(L(T(F)))+`/s`,1)])])):h(``,!0),T(d)?h(``,!0):(i(),D(`button`,{key:4,class:`fixed right-4 bottom-4 z-50 flex size-8 cursor-pointer items-center justify-center rounded-full border-none bg-[var(--color-primary)] text-[var(--color-primary-content)] shadow-lg transition-all duration-200 ease-in-out hover:scale-110`,title:e.$t(`showTrafficIndicator`),onClick:R},[u(T(G),{class:`size-4`})],8,zt)),u(b,{name:`traffic-expand`},{default:p(()=>[T(d)&&!T(_)&&T(r).latestTraffic?(i(),D(`div`,{key:0,ref_key:`containerRef`,ref:A,class:O([`fixed z-50 min-w-56 rounded-xl bg-[var(--color-base-200)] shadow-lg select-none`,{"cursor-grabbing":T(S)}]),style:t(T(re))},[w(`div`,Bt,[w(`div`,Vt,[w(`div`,{class:`flex cursor-grab items-center gap-1 active:cursor-grabbing`,onMousedown:ae,onTouchstart:ae},[u(T(ne),{class:`size-4 opacity-40`}),w(`span`,Ht,E(e.$t(`traffic`)),1)],32),w(`div`,Ut,[w(`button`,{class:`flex size-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-[var(--color-base-content)] transition-[background] duration-200 ease-in-out hover:bg-[color-mix(in_oklch,var(--color-base-content)_10%,transparent)]`,title:e.$t(`hideTrafficIndicator`),onClick:ie},[...n[2]||=[w(`span`,{class:`text-xs`},``,-1)]],8,Wt),w(`button`,{class:`flex size-6 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-[var(--color-base-content)] transition-[background] duration-200 ease-in-out hover:bg-[color-mix(in_oklch,var(--color-base-content)_10%,transparent)]`,title:e.$t(`hideTrafficIndicator`),onClick:R},[u(T(se),{class:`size-3`})],8,Gt)])]),w(`div`,{ref_key:`chartContainer`,ref:j,class:`h-12 w-full`},null,512),w(`div`,Kt,[w(`div`,qt,[u(T(H),{class:`size-3 shrink-0 text-[var(--color-success)]`}),w(`span`,Jt,E(L(T(P)))+`/s `,1)]),w(`div`,Yt,[u(T(G),{class:`size-3 shrink-0 text-[var(--color-info)]`}),w(`span`,Xt,E(L(T(F)))+`/s `,1)]),w(`div`,Zt,[w(`span`,null,E(e.$t(`memory`))+`:`,1),w(`span`,Qt,E(L(T(ee))),1)]),w(`div`,$t,[w(`span`,null,E(e.$t(`connections`))+`:`,1),w(`span`,en,E(T(te)),1)])])])],6)):h(``,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-e0caab42`]]),{__name:`GlobalTrafficIndicator`}),nn={class:`modal-box max-w-lg`},rn={class:`flex items-center justify-between border-b border-base-300 pb-3`},an={class:`text-lg font-bold`},on={class:`mt-4 space-y-6`},sn={class:`mb-2 text-sm font-semibold text-base-content/70`},cn={class:`space-y-1`},ln={class:`text-sm`},un={class:`kbd kbd-sm`},dn={class:`mt-6 text-center text-xs text-base-content/50`},fn=Object.assign(n({__name:`ShortcutsHelpModal`,setup(e){let t=ye(),{t:n}=z(),a=re(`(max-width: 768px)`),o=()=>{t.closeHelpModal()};return(e,s)=>T(a)?h(``,!0):(i(),D(`dialog`,{key:0,class:O([`modal`,{"modal-open":T(t).isHelpModalOpen}]),onClick:C(o,[`self`])},[w(`div`,nn,[w(`div`,rn,[w(`h3`,an,E(T(n)(`shortcuts.title`,`Keyboard Shortcuts`)),1),w(`button`,{class:`btn btn-circle btn-ghost btn-sm`,onClick:o},[...s[0]||=[w(`span`,{class:`i-tabler-x size-5`},null,-1)]])]),w(`div`,on,[(i(!0),D(g,null,r(T(ge),e=>(i(),D(`div`,{key:e.id},[w(`h4`,sn,E(T(n)(e.labelKey,e.id)),1),w(`div`,cn,[(i(!0),D(g,null,r(e.shortcuts,e=>(i(),D(`div`,{key:e,class:`flex items-center justify-between rounded px-2 py-1.5 hover:bg-base-200`},[w(`span`,ln,E(T(n)(T(ve)[e],e)),1),w(`kbd`,un,E(T(he)(T(t).shortcuts[e])),1)]))),128))])]))),128))]),w(`div`,dn,E(T(n)(`shortcuts.pressEscToClose`,`Press Esc to close`)),1)]),w(`form`,{method:`dialog`,class:`modal-backdrop`,onClick:o},[...s[1]||=[w(`button`,null,`close`,-1)]])],2))}}),{__name:`ShortcutsHelpModal`});function pn(){let e=q(),t=ye(),n=R(),r=m(()=>{let e=n.value;if(!e)return!1;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`||e.getAttribute(`contenteditable`)===`true`}),i=v(!1),a=v(null),o=!1,s=()=>{i.value=!1,a.value&&=(clearTimeout(a.value),null)},c=()=>{i.value=!0,a.value&&clearTimeout(a.value),a.value=setTimeout(s,1500)},l={goToOverview:()=>e.push(X.Overview),goToProxies:()=>e.push(X.Proxies),goToConnections:()=>e.push(X.Conns),goToRules:()=>e.push(X.Rules),goToLogs:()=>e.push(X.Log),goToConfig:()=>e.push(X.Config),refresh:()=>{window.location.reload()},closeModal:()=>{t.isHelpModalOpen&&t.closeHelpModal(),window.dispatchEvent(new CustomEvent(`shortcut:close-modal`))},showHelp:()=>{t.toggleHelpModal()}},u=e=>{let t=l[e];t&&t()},f={o:`goToOverview`,p:`goToProxies`,c:`goToConnections`,u:`goToRules`,l:`goToLogs`,s:`goToConfig`},p=e=>{if(r.value)return;let t=e.key.toLowerCase();if(t===`escape`){u(`closeModal`);return}if(e.shiftKey&&(t===`/`||t===`?`)){e.preventDefault(),u(`showHelp`);return}if(t===`g`&&!i.value){c();return}if(i.value){if(e.metaKey||e.ctrlKey){s();return}let n=f[t];if(n){e.preventDefault(),u(n),s();return}s();return}t===`r`&&!e.metaKey&&!e.ctrlKey&&(e.preventDefault(),u(`refresh`))};return d(()=>{typeof window<`u`&&(window.removeEventListener(`keydown`,p),o=!1),s()}),{isInputFocused:r,gPrefixActive:i,setupKeyboardListeners:()=>{typeof window<`u`&&!o&&(o=!0,window.addEventListener(`keydown`,p))},executeAction:u}}var mn=[`data-theme`],hn=n({__name:`default`,setup(t){let n=Z(),r=N(),a=le(),{setupKeyboardListeners:s}=pn();e(()=>{s()});let c=v(null);f(c,e=>{e&&(a.rootElement=e)}),f([()=>n.autoSwitchTheme,V()],([e,t])=>{e&&(n.curTheme=t?n.favNightTheme:n.favDayTheme)},{immediate:!0}),f(()=>n.curTheme,e=>{document.documentElement.setAttribute(`data-theme`,e)},{immediate:!0});let l=m(()=>$()||!!r.currentEndpoint);return(e,t)=>{let r=at,a=mt,s=yt,d=tn,f=fn;return i(),D(`div`,{ref_key:`rootElement`,ref:c,class:O([`relative h-screen overscroll-y-none bg-base-100 antialiased`,T(n).enableTwemoji?`font-twemoji`:`font-default`]),"data-theme":T(n).curTheme},[u(r,null,{default:p(()=>[o(e.$slots,`default`)]),_:3}),T(l)?(i(),k(a,{key:0})):h(``,!0),T(l)?(i(),k(s,{key:1})):h(``,!0),T(l)?(i(),k(d,{key:2})):h(``,!0),u(f)],10,mn)}}});export{hn as default};