mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-02-04 10:11:28 +08:00
1 line
30 KiB
JavaScript
1 line
30 KiB
JavaScript
import{$ as e,Dt as t,E as n,Et as r,G as i,H as a,J as o,K as s,L as c,M as l,Mt as u,O as d,Ot as f,Q as p,R as m,U as h,V as g,W as _,Y as v,Z as y,at as b,ct as x,et as S,ft as C,j as w,kt as T,lt as E,pt as D,q as O,st as k,x as A,yt as j,z as M}from"./DB3QyUG1.js";import{d as N,p as P}from"./_v7-ePgP.js";import{t as F}from"./BGrMhtLn.js";import"./Ds3PMqWb.js";import{L as I,N as L,T as ee,p as R,r as z,u as B}from"./CdfRVy8H.js";import{a as V,i as H,n as U,o as W,r as G,t as K}from"./CEumzr83.js";import{c as q,d as J,f as te,i as ne,m as Y,p as X,s as re,u as ie}from"./A1BmUOM0.js";import{n as ae,t as oe}from"./RfkGMhKY.js";import{c as se,f as ce,h as le,n as ue,r as de,s as fe,t as pe,u as me}from"./CAhuthQu.js";import{t as he}from"./5MMMtqqF.js";import{t as Z}from"./Ca1zbqff.js";import{t as ge}from"./6QyW-nVe.js";const Q=l(`proxies`,()=>{let e=F(),t=ae(),r=j([]),i=j([]),a=j({}),o=j({}),s=j({}),c=j({}),l=j({}),u=j({}),d=j(!1),f=n(`collapsedMap`,{}),p=(t,n=!0)=>{let r=t.extra||{},i=Object.keys(r).reduce((t,n)=>{let i=r[n],a=i?.history?.at(-1)?.delay??e.latencyQualityMap.NOT_CONNECTED;return t.allTestUrlLatency[n]=a,t.allTestUrlLatencyHistory[n]=i?.history,t},{allTestUrlLatency:{},allTestUrlLatencyHistory:{}});if(n){let n=t.testUrl||e.urlForLatencyTest;if(!(n in i.allTestUrlLatency)){let r=t.history?.at(-1)?.delay??e.latencyQualityMap.NOT_CONNECTED;i.allTestUrlLatency[n]=r,i.allTestUrlLatencyHistory[n]=t.history}}return i},m=e=>{let t={...o.value},n={...a.value};e.forEach(e=>{let{allTestUrlLatency:r,allTestUrlLatencyHistory:i}=p(e),{udp:a,xudp:o,type:s,now:c,name:l,tfo:u,provider:d=``}=e;t[e.name]={udp:a,xudp:o,type:s,latency:c,latencyTestHistory:i,name:l,tfo:u,provider:d},n[e.name]=r}),o.value=t,a.value=n},h=async()=>{let[{providers:e},{proxies:t}]=await Promise.all([q(),re()]),n=Object.values(t).map(t=>{if(t.all?.length&&!t.testUrl){let{testUrl:n,timeout:r}=e?.[t.name]||{};return{...t,testUrl:n,timeout:r}}return t}),a=[...t.GLOBAL?.all??[],`GLOBAL`],o=Object.values(n).filter(e=>e.all?.length).sort((e,t)=>a.indexOf(e.name)-a.indexOf(t.name)),s=Object.values(e).filter(e=>e.name!==`default`&&e.vehicleType!==`Compatible`),c=[...n,...s.flatMap(e=>e.proxies.filter(e=>!(e.name in t)).map(t=>({...t,provider:e.name})))];r.value=o,i.value=s,m(c)},g=async(n,r)=>{if(await X(n.name,r),await h(),e.autoCloseConns){let e=t.restructRawMsgToConnection(t.latestConnectionMsg?.connections??[],[]);e.length>0&&e.forEach(({id:e,chains:t})=>{t.includes(n.name)&&ne(e)})}},_=e=>{let t=o.value[e];if(!e||!t)return e;for(;t&&t.latency&&t.latency!==t.name;){let e=o.value[t.latency];if(!e)return t.name;t=e}return t?.name??e};return{proxies:r,proxyProviders:i,latencyMap:a,proxyNodeMap:o,proxyLatencyTestingMap:s,proxyGroupLatencyTestingMap:c,proxyProviderLatencyTestingMap:l,updatingMap:u,isAllProviderUpdating:d,collapsedMap:f,fetchProxies:h,selectProxyInGroup:g,getNowProxyNodeName:_,getLatencyByName:(t,n)=>{let r=n||e.urlForLatencyTest,i=a.value,o=_(t),s=i[o]?.[r],c=i[t]?.[r];if(s!=null)return s;if(c!=null)return c;let l=i[o];if(l&&Object.keys(l).length>0){let e=Object.keys(l),t=l[r]==null?e[0]:r;if(t)return l[t]}let u=i[t];if(u&&Object.keys(u).length>0){let e=Object.keys(u);if(e[0])return u[e[0]]}return e.latencyQualityMap.NOT_CONNECTED},getLatencyHistoryByName:(t,n)=>{let r=o.value[t],i=_(t),a=o.value[i],s=n||e.urlForLatencyTest,c=a?.latencyTestHistory[s]||r?.latencyTestHistory[s];if(c&&c.length)return c;let l=a?.latencyTestHistory||{},u=Object.keys(l)[0];if(u){let e=l[u];if(e&&e.length)return e}let d=r?.latencyTestHistory||{},f=Object.keys(d)[0];if(f){let e=d[f];if(e&&e.length)return e}return[]},isProxyGroup:e=>{let t=o.value[e];return t?[`direct`,`reject`,`loadbalance`].includes(t.type.toLowerCase())||!!t.latency:!1},proxyLatencyTest:async(t,n,r,i)=>{let o=_(t);s.value[o]=!0;try{let t=r||e.urlForLatencyTest,s=a.value?.[o]||{},{delay:c}=await J(o,n,t,i??e.latencyTestTimeoutDuration);s[t]=c,a.value={...a.value,[o]:s}}catch{let t=r||e.urlForLatencyTest,n=a.value?.[o]||{};n[t]=e.latencyQualityMap.NOT_CONNECTED,a.value={...a.value,[o]:n}}finally{s.value[o]=!1}},proxyGroupLatencyTest:async t=>{c.value[t]=!0;try{let n=r.value.find(e=>e.name===t);await ie(t,n?.testUrl||e.urlForLatencyTest,n?.timeout??e.latencyTestTimeoutDuration),await h()}finally{c.value[t]=!1}},updateProviderByProviderName:async e=>{u.value[e]=!0;try{await Y(e)}catch{}await h(),u.value[e]=!1},updateAllProvider:async()=>{d.value=!0;try{await Promise.allSettled(i.value.map(e=>Y(e.name))),await h()}finally{d.value=!1}},proxyProviderLatencyTest:async e=>{l.value[e]=!0;try{await te(e),await h()}finally{l.value[e]=!1}}}});var _e={key:0,class:`loading loading-sm loading-infinity`},ve=e({__name:`Latency`,props:{proxyName:{},testUrl:{},class:{}},emits:[`click`],setup(e){let n=e,i=Q(),s=F(),c=_(()=>n.class||``),l=_(()=>i.getLatencyByName(n.proxyName,n.testUrl)),u=_(()=>i.proxyLatencyTestingMap[n.proxyName]||!1),d=_(()=>me(l.value,s.latencyQualityMap)),f=_(()=>l.value||`---`);return(e,n)=>(k(),o(`span`,{class:t([`badge flex w-11 items-center justify-center whitespace-nowrap`,[r(d),r(c)]]),onClick:n[0]||=t=>e.$emit(`click`,t)},[r(u)?(k(),o(`span`,_e)):(k(),o(a,{key:1},[y(T(r(f)),1)],64))],2))}}),$=Object.assign(ve,{__name:`Latency`}),ye={class:`flex items-center gap-2`},be={class:`my-1 flex flex-1 items-center justify-center overflow-hidden rounded-2xl *:h-2`},xe=e({__name:`ProxyPreviewBar`,props:{proxyNameList:{},testUrl:{},now:{}},setup(e){let t=e,n=Q(),a=F(),c=_(()=>t.proxyNameList.map(e=>n.getLatencyByName(e,t.testUrl))),l=_(()=>c.value.length||1),u=_(()=>c.value.filter(e=>e>a.latencyQualityMap.NOT_CONNECTED&&e<=a.latencyQualityMap.MEDIUM).length),d=_(()=>c.value.filter(e=>e>a.latencyQualityMap.MEDIUM&&e<=a.latencyQualityMap.HIGH).length),p=_(()=>c.value.filter(e=>e>a.latencyQualityMap.HIGH).length),m=_(()=>c.value.filter(e=>e===a.latencyQualityMap.NOT_CONNECTED).length),h=_(()=>u.value*100/l.value),g=_(()=>d.value*100/l.value),v=_(()=>p.value*100/l.value),y=_(()=>m.value*100/l.value);return(t,n)=>{let a=$;return k(),o(`div`,ye,[i(`div`,be,[i(`div`,{class:`bg-green-600`,style:f({width:`${r(h)}%`})},null,4),i(`div`,{class:`bg-yellow-500`,style:f({width:`${r(g)}%`})},null,4),i(`div`,{class:`bg-red-500`,style:f({width:`${r(v)}%`})},null,4),i(`div`,{class:`bg-neutral`,style:f({width:`${r(y)}%`})},null,4)]),e.now?(k(),s(a,{key:0,"proxy-name":e.now,"test-url":e.testUrl},null,8,[`proxy-name`,`test-url`])):O(``,!0)])}}}),Se=Object.assign(xe,{__name:`ProxyPreviewBar`}),Ce={class:`flex items-center gap-2`},we={class:`flex flex-1 flex-wrap items-center gap-1`},Te=[`title`,`onClick`],Ee=e({__name:`ProxyPreviewDots`,props:{proxyNameList:{},testUrl:{},now:{},onSelect:{type:Function}},setup(e){let n=e,c=Q(),l=F(),u=_(()=>n.proxyNameList.map(e=>[e,c.getLatencyByName(e,n.testUrl)]));function d(e,t){let n=l.latencyQualityMap.NOT_CONNECTED,r=l.latencyQualityMap.MEDIUM,i=l.latencyQualityMap.HIGH;return typeof e!=`number`||e===n?t?`bg-white border-4 border-neutral`:`bg-neutral`:e>i?t?`bg-white border-4 border-red-500`:`bg-red-500`:e>r?t?`bg-white border-4 border-yellow-500`:`bg-yellow-500`:t?`bg-white border-4 border-green-600`:`bg-green-600`}return(n,c)=>{let l=$;return k(),o(`div`,Ce,[i(`div`,we,[(k(!0),o(a,null,x(r(u),([n,r])=>(k(),o(`div`,{key:n,class:t([`h-4 w-4 rounded-full`,[d(r,n===e.now),e.onSelect&&`cursor-pointer transition-transform hover:scale-125`]]),title:n,onClick:g(t=>e.onSelect&&e.onSelect(n),[`stop`])},null,10,Te))),128))]),e.now?(k(),s(l,{key:0,"proxy-name":e.now,"test-url":e.testUrl},null,8,[`proxy-name`,`test-url`])):O(``,!0)])}}}),De=Object.assign(Ee,{__name:`ProxyPreviewDots`}),Oe=e({__name:`ProxyNodePreview`,props:{proxyNameList:{},testUrl:{},now:{},onSelect:{type:Function}},setup(e){let t=e,n=F(),i=_(()=>n.proxiesPreviewType===P.OFF),c=_(()=>t.proxyNameList.length<=10),l=_(()=>{let e=n.proxiesPreviewType;return e===P.BAR||e===P.Auto&&!c.value}),u=_(()=>{let e=n.proxiesPreviewType;return e===P.DOTS||e===P.Auto&&c.value});return(t,n)=>{let c=Se,d=De;return r(i)?O(``,!0):(k(),o(a,{key:0},[r(l)?(k(),s(c,{key:0,"proxy-name-list":e.proxyNameList,"test-url":e.testUrl,now:e.now},null,8,[`proxy-name-list`,`test-url`,`now`])):r(u)?(k(),s(d,{key:1,"proxy-name-list":e.proxyNameList,"test-url":e.testUrl,now:e.now,"on-select":e.onSelect},null,8,[`proxy-name-list`,`test-url`,`now`,`on-select`])):O(``,!0)],64))}}}),ke=Object.assign(Oe,{__name:`ProxyNodePreview`}),Ae=u(le(),1),je={class:`min-w-0 flex-1 truncate text-sm font-medium`},Me={key:1,class:`badge shrink-0 badge-xs badge-info`},Ne={key:2,class:`hidden text-xs uppercase opacity-60 sm:inline`},Pe={class:`hidden text-xs uppercase opacity-75 sm:inline`},Fe={class:`flex flex-col items-center gap-2`},Ie={class:`text-lg font-bold`},Le={key:0,class:`w-full text-xs uppercase`},Re={key:1,class:`timeline timeline-vertical timeline-compact max-h-60 overflow-y-auto timeline-snap-icon`},ze={key:0},Be={class:`timeline-start space-y-2`},Ve={class:`text-sm italic`},He={class:`timeline-middle`},Ue={key:1},We={key:2,class:`text-sm opacity-75`},Ge=e({__name:`ProxyNodeListItem`,props:{proxyName:{},testUrl:{},timeout:{},isSelected:{type:Boolean,default:!1}},emits:[`click`],setup(e,{emit:n}){let c=e,l=n,u=Q(),d=F(),{t:m}=A(),v=_(()=>u.proxyNodeMap[c.proxyName]),y=_(()=>fe(v.value?.type||``,m)),b=_(()=>v.value?.xudp||v.value?.udp),S=_(()=>u.proxyLatencyTestingMap[c.proxyName]||!1),C=_(()=>!v.value||!de(v.value.type)?null:[v.value.xudp&&`xudp`,v.value.udp&&`udp`,v.value.tfo&&`TFO`].filter(Boolean).join(` / `)),w=_(()=>u.getLatencyHistoryByName(c.proxyName,c.testUrl).toReversed()),E=j(null),D=j(null),M=j(null),N=j(!1),{floatingStyles:P,middlewareData:I,placement:L}=U(E,D,{placement:`top`,middleware:[V(10),H(),W({padding:8}),K({element:M})],whileElementsMounted:G}),ee=_(()=>{let e=I.value.arrow,t={top:`bottom`,right:`left`,bottom:`top`,left:`right`}[L.value.split(`-`)[0]||`top`]||`bottom`;return{left:e?.x==null?``:`${e.x}px`,top:e?.y==null?``:`${e.y}px`,[t]:`-4px`}}),R=null,B=null;function q(){R&&=(clearTimeout(R),null),B&&=(clearTimeout(B),null)}function J(){q(),R=setTimeout(()=>{N.value=!0},300)}function te(){q(),B=setTimeout(()=>{N.value=!1},100)}function ne(){q()}function Y(){q(),N.value=!1}function X(){l(`click`)}function re(){u.proxyLatencyTest(c.proxyName,v.value?.provider||``,c.testUrl,c.timeout)}return(n,c)=>{let l=$;return k(),o(`div`,{class:t([`relative`,e.isSelected?`z-10`:`z-0`])},[i(`div`,{ref_key:`reference`,ref:E,class:t([`relative rounded-lg transition-all duration-300`,[e.isSelected?`animate-glow-pulse bg-primary text-primary-content`:`bg-neutral text-neutral-content hover:shadow-md`]]),onMouseenter:J,onMouseleave:te},[i(`div`,{class:t([`flex items-center gap-2 px-3 py-1.5`,{"cursor-pointer hover:opacity-80":!!X}]),onClick:X},[e.isSelected?(k(),s(r(z),{key:0,class:`size-4 shrink-0`})):O(``,!0),i(`span`,je,T(e.proxyName),1),r(b)?(k(),o(`span`,Me,`U`)):O(``,!0),r(C)?(k(),o(`span`,Ne,T(r(C)),1)):O(``,!0),i(`span`,Pe,T(r(y)),1),p(l,{"proxy-name":e.proxyName,"test-url":e.testUrl,class:t([`shrink-0`,{"animate-pulse":r(S)}]),onClick:g(re,[`stop`])},null,8,[`proxy-name`,`test-url`,`class`])],2),(k(),s(h,{to:`body`},[r(N)?(k(),o(`div`,{key:0,ref_key:`floating`,ref:D,style:f(r(P)),class:`z-50 w-max max-w-xs rounded-box bg-primary p-2.5 text-primary-content shadow-lg`,onMouseenter:ne,onMouseleave:Y},[i(`div`,{ref_key:`floatingArrow`,ref:M,class:`absolute size-2 rotate-45 bg-primary`,style:f(r(ee))},null,4),i(`div`,Fe,[i(`h2`,Ie,T(e.proxyName),1),r(C)?(k(),o(`div`,Le,` (`+T(r(C))+`) `,1)):O(``,!0),r(w).length>0?(k(),o(`ul`,Re,[(k(!0),o(a,null,x(r(w),(e,n)=>(k(),o(`li`,{key:n},[n>0?(k(),o(`hr`,ze)):O(``,!0),i(`div`,Be,[i(`time`,Ve,T(r(Ae.default)(e.time).format(`YYYY-MM-DD HH:mm:ss`)),1),i(`div`,{class:t([`badge block`,r(me)(e.delay,r(d).latencyQualityMap)])},T(e.delay||`---`),3)]),i(`div`,He,[p(r(z),{class:`size-4`})]),n===r(w).length-1?O(``,!0):(k(),o(`hr`,Ue))]))),128))])):(k(),o(`div`,We,T(r(m)(`noLatencyHistory`)),1))])],36)):O(``,!0)]))],34)],2)}}}),Ke=Object.assign(Ge,{__name:`ProxyNodeListItem`}),qe=u(le(),1),Je={key:0,class:`indicator-item badge badge-xs badge-info`},Ye={class:`card-title line-clamp-1 text-start text-sm break-all`},Xe={class:`card-actions items-end justify-between gap-1`},Ze={class:`flex flex-col gap-0.5`},Qe={class:`text-xs font-semibold uppercase opacity-75`},$e={class:`flex flex-col items-center gap-2`},et={class:`text-lg font-bold`},tt={key:0,class:`w-full text-xs uppercase`},nt={key:1,class:`timeline timeline-vertical timeline-compact max-h-60 overflow-y-auto timeline-snap-icon`},rt={key:0},it={class:`timeline-start space-y-2`},at={class:`text-sm italic`},ot={class:`timeline-middle`},st={key:1},ct={key:2,class:`text-sm opacity-75`},lt=e({__name:`ProxyNodeCard`,props:{proxyName:{},testUrl:{},timeout:{},isSelected:{type:Boolean,default:!1}},emits:[`click`],setup(e,{emit:n}){let c=e,l=n,u=Q(),d=F(),{t:m}=A(),v=_(()=>u.proxyNodeMap[c.proxyName]),y=_(()=>fe(v.value?.type||``,m)),b=_(()=>v.value?.xudp||v.value?.udp),S=_(()=>u.proxyLatencyTestingMap[c.proxyName]||!1),C=_(()=>de(v.value?.type)?`(${[v.value?.xudp&&`xudp`,v.value?.udp&&`udp`,v.value?.tfo&&`TFO`].filter(Boolean).join(` / `)})`:null),w=_(()=>u.getLatencyHistoryByName(c.proxyName,c.testUrl).toReversed()),E=j(null),D=j(null),M=j(null),N=j(!1),{floatingStyles:P,middlewareData:I,placement:L}=U(E,D,{placement:`top`,middleware:[V(10),H(),W({padding:8}),K({element:M})],whileElementsMounted:G}),ee=_(()=>{let e=I.value.arrow,t={top:`bottom`,right:`left`,bottom:`top`,left:`right`}[L.value.split(`-`)[0]||`top`]||`bottom`;return{left:e?.x==null?``:`${e.x}px`,top:e?.y==null?``:`${e.y}px`,[t]:`-4px`}}),R=null,B=null;function q(){R&&=(clearTimeout(R),null),B&&=(clearTimeout(B),null)}function J(){q(),R=setTimeout(()=>{N.value=!0},300)}function te(){q(),B=setTimeout(()=>{N.value=!1},100)}function ne(){q()}function Y(){q(),N.value=!1}function X(){l(`click`)}function re(){u.proxyLatencyTest(c.proxyName,v.value?.provider||``,c.testUrl,c.timeout)}return(n,c)=>{let l=$;return k(),o(`div`,{class:t([`relative`,e.isSelected?`z-10`:`z-0`])},[i(`div`,{ref_key:`reference`,ref:E,class:t([`indicator card relative w-full transition-all duration-300`,[e.isSelected?`animate-glow-pulse scale-[1.02] bg-primary text-primary-content`:`bg-neutral text-neutral-content hover:scale-[1.01] hover:shadow-md`]]),onMouseenter:J,onMouseleave:te},[r(b)?(k(),o(`div`,Je,`U`)):O(``,!0),i(`div`,{class:t([`card-body gap-1 space-y-1 p-2.5`,{"cursor-pointer":!!X}]),onClick:X},[i(`h2`,Ye,T(e.proxyName),1),i(`div`,Xe,[i(`div`,Ze,[i(`div`,Qe,T(r(y)),1)]),p(l,{"proxy-name":e.proxyName,"test-url":e.testUrl,class:t({"animate-pulse":r(S)}),onClick:g(re,[`stop`])},null,8,[`proxy-name`,`test-url`,`class`])])],2),(k(),s(h,{to:`body`},[r(N)?(k(),o(`div`,{key:0,ref_key:`floating`,ref:D,style:f(r(P)),class:`z-50 w-max max-w-xs rounded-box bg-primary p-2.5 text-primary-content shadow-lg`,onMouseenter:ne,onMouseleave:Y},[i(`div`,{ref_key:`floatingArrow`,ref:M,class:`absolute size-2 rotate-45 bg-primary`,style:f(r(ee))},null,4),i(`div`,$e,[i(`h2`,et,T(e.proxyName),1),r(C)?(k(),o(`div`,tt,T(r(C)),1)):O(``,!0),r(w).length>0?(k(),o(`ul`,nt,[(k(!0),o(a,null,x(r(w),(e,n)=>(k(),o(`li`,{key:n},[n>0?(k(),o(`hr`,rt)):O(``,!0),i(`div`,it,[i(`time`,at,T(r(qe.default)(e.time).format(`YYYY-MM-DD HH:mm:ss`)),1),i(`div`,{class:t([`badge block`,r(me)(e.delay,r(d).latencyQualityMap)])},T(e.delay||`---`),3)]),i(`div`,ot,[p(r(z),{class:`size-4`})]),n===r(w).length-1?O(``,!0):(k(),o(`hr`,st))]))),128))])):(k(),o(`div`,ct,T(r(m)(`noLatencyHistory`)),1))])],36)):O(``,!0)]))],34)],2)}}}),ut=Object.assign(lt,{__name:`ProxyNodeCard`}),dt=u(le(),1),ft={class:`flex items-center gap-2 pt-1`},pt=[`value`],mt={class:`badge badge-sm badge-secondary`},ht={class:`flex flex-wrap items-center justify-between`},gt={class:`text-sm text-slate-500`},_t={class:`text-sm text-slate-500`},vt=e({__name:`SubscriptionInfo`,props:{subscriptionInfo:{}},setup(e){let t=e,{t:n}=A(),s=_(()=>t.subscriptionInfo?oe(t.subscriptionInfo.Total||0,{units:`iec`}).toString():`0 B`),c=_(()=>{if(!t.subscriptionInfo)return`0 B`;let{Download:e=0,Upload:n=0}=t.subscriptionInfo;return oe(e+n,{units:`iec`}).toString()}),l=_(()=>{if(!t.subscriptionInfo?.Total)return 0;let{Download:e=0,Upload:n=0,Total:r=1}=t.subscriptionInfo;return Math.min(Number(((e+n)/r*100).toFixed(1)),999)}),u=_(()=>t.subscriptionInfo?.Expire?(0,dt.default)(t.subscriptionInfo.Expire*1e3).format(`YYYY-MM-DD`):n(`noExpire`));return(t,d)=>e.subscriptionInfo?(k(),o(a,{key:0},[i(`div`,ft,[i(`progress`,{class:`progress`,value:r(l),max:`100`},null,8,pt),i(`div`,mt,T(r(l))+`%`,1)]),i(`div`,ht,[i(`div`,gt,T(r(c))+` / `+T(r(s)),1),i(`div`,_t,T(r(n)(`expire`))+`: `+T(r(u)),1)])],64)):O(``,!0)}}),yt=Object.assign(vt,{__name:`SubscriptionInfo`}),bt=e({__name:`Collapse`,props:{isOpen:{type:Boolean,default:!1}},emits:[`collapse`],setup(e,{emit:n}){let a=n,s=F(),c=_(()=>s.proxiesDisplayMode===N.LIST);return(n,s)=>(k(),o(`div`,{class:t([`collapse-arrow collapse border-secondary bg-base-200 shadow-md select-none`,e.isOpen?`collapse-open`:`collapse-close`])},[i(`div`,{class:`collapse-title pr-4 text-xl font-medium after:top-8!`,onClick:s[0]||=t=>a(`collapse`,!e.isOpen)},[E(n.$slots,`title`)]),i(`div`,{class:t([`collapse-content transition-opacity duration-1000`,[e.isOpen?`opacity-100`:`opacity-0`,r(c)?`isolate flex flex-col gap-2`:`isolate grid gap-2`]]),style:f(r(c)?void 0:`grid-template-columns: repeat(auto-fill, minmax(200px, 1fr))`)},[e.isOpen?E(n.$slots,`default`,{key:0}):O(``,!0)],6)],2))}}),xt=Object.assign(bt,{__name:`Collapse`}),St={key:0,class:`flex gap-2`},Ct={class:`isolate flex-1 space-y-2`},wt={class:`isolate flex-1 space-y-2`},Tt={key:1,class:`isolate space-y-2`},Et=e({__name:`ProxiesRenderWrapper`,setup(e,{expose:t}){let n=F(),{width:a}=d(),s=_(()=>a.value>480),c=_(()=>n.renderProxiesInTwoColumns&&s.value);return t({isTwoColumns:c}),(e,t)=>r(c)?(k(),o(`div`,St,[i(`div`,Ct,[E(e.$slots,`even`)]),i(`div`,wt,[E(e.$slots,`odd`)])])):(k(),o(`div`,Tt,[E(e.$slots,`default`)]))}}),Dt=Object.assign(Et,{__name:`ProxiesRenderWrapper`}),Ot={class:`flex h-full flex-col gap-2 overflow-y-auto`},kt={class:`flex items-center gap-2`},At={class:`tabs-box tabs gap-2 tabs-sm`},jt=[`onClick`],Mt={class:`badge badge-sm`},Nt={class:`ml-auto`},Pt={key:0,class:`flex-1 overflow-y-auto`},Ft={key:1,class:`flex-1 overflow-y-auto`},It={class:`flex flex-col gap-4`},Lt={class:`flex w-full justify-center`},Rt={class:`flex flex-col`},zt={value:`orderNatural`},Bt={value:`orderLatency_asc`},Vt={value:`orderLatency_desc`},Ht={value:`orderName_asc`},Ut={value:`orderName_desc`},Wt={class:`flex w-full justify-center`},Gt={class:`flex w-full justify-center`},Kt={value:`cardMode`},qt={value:`listMode`},Jt={value:`auto`},Yt={value:`dots`},Xt={value:`bar`},Zt={value:`off`},Qt=e({__name:`proxies`,setup(n){let{t:l,locale:u}=A();w({title:_(()=>l(`proxies`))});let d=Q(),f=ae(),h=F(),g=j(`proxies`),E=j(),N=j(),P=j(),z=e=>oe(e).toString(),V=_(()=>d.proxies.filter(e=>!e.hidden)),H=_(()=>[{type:`proxies`,name:l(`proxies`),count:V.value.length},{type:`proxyProviders`,name:l(`proxyProviders`),count:d.proxyProviders.length}]);function U(e){return ue({proxyNames:ce({proxyNames:e.all??[],orderingType:h.proxiesOrderingType,testUrl:e.testUrl||null,getLatencyByName:d.getLatencyByName,latencyQualityMap:h.latencyQualityMap,urlForLatencyTest:h.urlForLatencyTest}),enabled:h.hideUnAvailableProxies,testUrl:e.testUrl||null,getLatencyByName:d.getLatencyByName,isProxyGroup:d.isProxyGroup,latencyQualityMap:h.latencyQualityMap,urlForLatencyTest:h.urlForLatencyTest})}function W(e){return ce({proxyNames:e.proxies.map(e=>e.name),orderingType:h.proxiesOrderingType,testUrl:e.testUrl,getLatencyByName:d.getLatencyByName,latencyQualityMap:h.latencyQualityMap,urlForLatencyTest:h.urlForLatencyTest})}b(()=>{d.fetchProxies()});let G=e({props:{proxyGroup:{type:Object,required:!0},sortedProxyNames:{type:Array,required:!0}},setup(e){return()=>S(`div`,{class:`space-y-2`},[S(`div`,{class:`flex items-center justify-between pr-8`},[S(`div`,{class:`flex items-center`},[e.proxyGroup.icon&&(e.proxyGroup.icon.startsWith(`data:image/svg+xml`)?S(`div`,{style:{height:`${h.iconHeight}px`,width:`${h.iconHeight}px`,color:`oklch(var(--p) / var(--tw-bg-opacity))`,backgroundColor:`currentColor`,marginRight:`${h.iconMarginRight}px`,maskImage:`url('${pe(e.proxyGroup.icon)}')`,maskSize:`100% 100%`}}):S(`img`,{src:e.proxyGroup.icon,style:{height:`${h.iconHeight}px`,marginRight:`${h.iconMarginRight}px`}})),S(`span`,e.proxyGroup.name),S(`div`,{class:`badge badge-sm ml-2`},e.proxyGroup.all?.length)]),S(Z,{class:`btn-circle btn-sm`,disabled:d.proxyGroupLatencyTestingMap[e.proxyGroup.name],onClick:t=>{t.stopPropagation(),d.proxyGroupLatencyTest(e.proxyGroup.name)}},()=>S(I,{class:{"animate-pulse text-success":d.proxyGroupLatencyTestingMap[e.proxyGroup.name]}}))]),S(`div`,{class:`flex flex-wrap items-center justify-between gap-2`},[S(`div`,{class:`badge badge-primary badge-sm`},[S(`span`,{class:`font-bold`},fe(e.proxyGroup.type,l)),e.proxyGroup.now?.length>0&&[S(L,{size:18}),S(`span`,{class:`whitespace-nowrap`},e.proxyGroup.now)]]),S(`div`,{class:`badge badge-secondary badge-sm`},`${z(f.speedGroupByName[e.proxyGroup.name]||0)}/s`)]),!d.collapsedMap[e.proxyGroup.name]&&S(ke,{proxyNameList:e.sortedProxyNames,now:e.proxyGroup.now,testUrl:e.proxyGroup.testUrl||null,onSelect:t=>d.selectProxyInGroup(e.proxyGroup,t)})])}}),K=e({props:{proxyGroup:{type:Object,required:!0},sortedProxyNames:{type:Array,required:!0}},setup(e){return()=>e.sortedProxyNames.map(t=>h.proxiesDisplayMode===`listMode`?S(Ke,{key:t,proxyName:t,testUrl:e.proxyGroup.testUrl||null,timeout:e.proxyGroup.timeout??null,isSelected:e.proxyGroup.now===t,onClick:()=>d.selectProxyInGroup(e.proxyGroup,t)}):S(ut,{key:t,proxyName:t,testUrl:e.proxyGroup.testUrl||null,timeout:e.proxyGroup.timeout??null,isSelected:e.proxyGroup.now===t,onClick:()=>d.selectProxyInGroup(e.proxyGroup,t)}))}}),q=e({props:{provider:{type:Object,required:!0},sortedProxyNames:{type:Array,required:!0}},setup(e){return()=>S(`div`,[S(`div`,{class:`flex items-center justify-between pr-8`},[S(`div`,{class:`flex flex-wrap items-center gap-1`},[S(`span`,{class:`line-clamp-1 break-all`},e.provider.name),S(`div`,{class:`badge badge-sm`},e.provider.proxies.length),S(`div`,{class:`badge badge-sm`},e.provider.vehicleType)]),S(`div`,{class:`flex items-center gap-2`},[S(Z,{class:`btn btn-circle btn-sm`,disabled:d.updatingMap[e.provider.name],onClick:t=>{t.stopPropagation(),d.updateProviderByProviderName(e.provider.name)}},()=>S(R,{class:{"animate-spin text-success":d.updatingMap[e.provider.name]}})),S(Z,{class:`btn btn-circle btn-sm`,disabled:d.proxyProviderLatencyTestingMap[e.provider.name],onClick:t=>{t.stopPropagation(),d.proxyProviderLatencyTest(e.provider.name)}},()=>S(I,{class:{"animate-pulse text-success":d.proxyProviderLatencyTestingMap[e.provider.name]}}))])]),S(yt,{subscriptionInfo:e.provider.subscriptionInfo}),S(`div`,{class:`flex flex-col gap-2`},[S(`div`,{class:`text-sm text-slate-500`},`${l(`updated`)} ${se(e.provider.updatedAt,u.value)}`),!d.collapsedMap[e.provider.name]&&S(ke,{proxyNameList:e.sortedProxyNames,testUrl:e.provider.testUrl})])])}}),J=e({props:{provider:{type:Object,required:!0},sortedProxyNames:{type:Array,required:!0}},setup(e){return()=>e.sortedProxyNames.map(t=>h.proxiesDisplayMode===`listMode`?S(Ke,{key:t,proxyName:t,testUrl:e.provider.testUrl,timeout:e.provider.timeout??null}):S(ut,{key:t,proxyName:t,testUrl:e.provider.testUrl,timeout:e.provider.timeout??null}))}});return(e,n)=>{let u=xt,f=Dt,_=he,b=ge;return k(),o(`div`,Ot,[i(`div`,kt,[i(`div`,At,[(k(!0),o(a,null,x(r(H),e=>(k(),o(`button`,{key:e.type,class:t([`sm:tab-md tab gap-2 px-2`,{"bg-primary text-neutral!":r(g)===e.type}]),onClick:t=>g.value=e.type},[i(`span`,null,T(e.name),1),i(`div`,Mt,T(e.count),1)],10,jt))),128))]),r(g)===`proxyProviders`?(k(),s(Z,{key:0,class:`btn btn-circle btn-sm`,disabled:r(d).isAllProviderUpdating,onClick:r(d).updateAllProvider},{default:C(()=>[p(r(R),{class:t({"animate-spin text-success":r(d).isAllProviderUpdating})},null,8,[`class`])]),_:1},8,[`disabled`,`onClick`])):O(``,!0),i(`div`,Nt,[p(Z,{class:`btn-circle btn-sm btn-primary`,onClick:n[0]||=e=>r(E)?.open()},{default:C(()=>[p(r(B))]),_:1})])]),r(g)===`proxies`?(k(),o(`div`,Pt,[p(f,{ref_key:`proxyGroupsWrapper`,ref:N},v({_:2},[r(N)?.isTwoColumns?{name:`even`,fn:C(()=>[(k(!0),o(a,null,x(r(V).filter((e,t)=>t%2==0),(e,t)=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(G),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),default:C(()=>[p(r(K),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`0`}:void 0,r(N)?.isTwoColumns?{name:`odd`,fn:C(()=>[(k(!0),o(a,null,x(r(V).filter((e,t)=>t%2==1),(e,t)=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(G),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),default:C(()=>[p(r(K),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`1`}:void 0,r(N)?.isTwoColumns?void 0:{name:`default`,fn:C(()=>[(k(!0),o(a,null,x(r(V),e=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(G),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),default:C(()=>[p(r(K),{"proxy-group":e,"sorted-proxy-names":U(e)},null,8,[`proxy-group`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`2`}]),1536)])):(k(),o(`div`,Ft,[p(f,{ref_key:`providersWrapper`,ref:P},v({_:2},[r(P)?.isTwoColumns?{name:`even`,fn:C(()=>[(k(!0),o(a,null,x(r(d).proxyProviders.filter((e,t)=>t%2==0),e=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(q),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),default:C(()=>[p(r(J),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`0`}:void 0,r(P)?.isTwoColumns?{name:`odd`,fn:C(()=>[(k(!0),o(a,null,x(r(d).proxyProviders.filter((e,t)=>t%2==1),e=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(q),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),default:C(()=>[p(r(J),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`1`}:void 0,r(P)?.isTwoColumns?void 0:{name:`default`,fn:C(()=>[(k(!0),o(a,null,x(r(d).proxyProviders,e=>(k(),s(u,{key:e.name,"is-open":r(d).collapsedMap[e.name]||!1,onCollapse:t=>r(d).collapsedMap[e.name]=t},{title:C(()=>[p(r(q),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),default:C(()=>[p(r(J),{provider:e,"sorted-proxy-names":W(e)},null,8,[`provider`,`sorted-proxy-names`])]),_:2},1032,[`is-open`,`onCollapse`]))),128))]),key:`2`}]),1536)])),p(b,{ref_key:`settingsModal`,ref:E,title:r(l)(`proxiesSettings`)},{icon:C(()=>[p(r(ee),{size:24})]),default:C(()=>[i(`div`,It,[i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`autoCloseConns`)),1)]),_:1}),i(`div`,Lt,[D(i(`input`,{"onUpdate:modelValue":n[1]||=e=>r(h).autoCloseConns=e,class:`toggle`,type:`checkbox`},null,512),[[c,r(h).autoCloseConns]])])]),i(`div`,Rt,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`urlForLatencyTest`)),1)]),_:1}),D(i(`input`,{"onUpdate:modelValue":n[2]||=e=>r(h).urlForLatencyTest=e,class:`input w-full`,type:`text`},null,512),[[M,r(h).urlForLatencyTest]])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`latencyTestTimeoutDuration`))+` (`+T(r(l)(`ms`))+`) `,1)]),_:1}),D(i(`input`,{"onUpdate:modelValue":n[3]||=e=>r(h).latencyTestTimeoutDuration=e,class:`input w-full`,type:`number`},null,512),[[M,r(h).latencyTestTimeoutDuration,void 0,{number:!0}]])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`proxiesSorting`)),1)]),_:1}),D(i(`select`,{"onUpdate:modelValue":n[4]||=e=>r(h).proxiesOrderingType=e,class:`select w-full`},[i(`option`,zt,T(r(l)(`orderNatural`)),1),i(`option`,Bt,T(r(l)(`orderLatency_asc`)),1),i(`option`,Vt,T(r(l)(`orderLatency_desc`)),1),i(`option`,Ht,T(r(l)(`orderName_asc`)),1),i(`option`,Ut,T(r(l)(`orderName_desc`)),1)],512),[[m,r(h).proxiesOrderingType]])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`hideUnavailableProxies`)),1)]),_:1}),i(`div`,Wt,[D(i(`input`,{"onUpdate:modelValue":n[5]||=e=>r(h).hideUnAvailableProxies=e,class:`toggle`,type:`checkbox`},null,512),[[c,r(h).hideUnAvailableProxies]])])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`renderInTwoColumns`)),1)]),_:1}),i(`div`,Gt,[D(i(`input`,{"onUpdate:modelValue":n[6]||=e=>r(h).renderProxiesInTwoColumns=e,class:`toggle`,type:`checkbox`},null,512),[[c,r(h).renderProxiesInTwoColumns]])])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`proxiesDisplayMode`)),1)]),_:1}),D(i(`select`,{"onUpdate:modelValue":n[7]||=e=>r(h).proxiesDisplayMode=e,class:`select w-full`},[i(`option`,Kt,T(r(l)(`cardMode`)),1),i(`option`,qt,T(r(l)(`listMode`)),1)],512),[[m,r(h).proxiesDisplayMode]])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`proxiesPreviewType`)),1)]),_:1}),D(i(`select`,{"onUpdate:modelValue":n[8]||=e=>r(h).proxiesPreviewType=e,class:`select w-full`},[i(`option`,Jt,T(r(l)(`auto`)),1),i(`option`,Yt,T(r(l)(`dots`)),1),i(`option`,Xt,T(r(l)(`bar`)),1),i(`option`,Zt,T(r(l)(`off`)),1)],512),[[m,r(h).proxiesPreviewType]])]),i(`div`,null,[p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`iconHeight`)),1)]),_:1}),D(i(`input`,{"onUpdate:modelValue":n[9]||=e=>r(h).iconHeight=e,class:`input w-full`,type:`number`},null,512),[[M,r(h).iconHeight,void 0,{number:!0}]]),p(_,{"with-divider":``},{default:C(()=>[y(T(r(l)(`iconMarginRight`)),1)]),_:1}),D(i(`input`,{"onUpdate:modelValue":n[10]||=e=>r(h).iconMarginRight=e,class:`input w-full`,type:`number`},null,512),[[M,r(h).iconMarginRight,void 0,{number:!0}]])]),i(`div`,null,[i(`button`,{class:`btn w-full btn-error`,onClick:n[11]||=e=>r(h).resetProxiesSettings()},T(r(l)(`resetSettings`)),1)])])]),_:1},8,[`title`])])}}});export{Qt as default}; |