@surenkid/acli-hub 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -0
- package/README.md +3 -1
- package/package.json +1 -1
- package/server/index.js +3 -2
- package/server/public/assets/{PreviewDialog-CyWZ9PNI.js → PreviewDialog-Dc7jb9yA.js} +1 -1
- package/server/public/assets/{index-CBc7nL_R.js → index-DlR3k_jH.js} +8 -8
- package/server/public/assets/{index-DNFZqhmU.css → index-xnjgJSWe.css} +1 -1
- package/server/public/index.html +2 -2
- package/server/services/user-config.js +23 -0
- package/server/services/user-config.test.js +87 -0
package/.env.example
CHANGED
|
@@ -23,3 +23,5 @@ ACLI_HUB_AUTH_PASSWORD=
|
|
|
23
23
|
|
|
24
24
|
# Config locations (cwd is never read): ~/.config/acli-hub/.env for the installed CLI
|
|
25
25
|
# ($XDG_CONFIG_HOME respected); the repo root .env when running from source.
|
|
26
|
+
# Startup creates the user config directory and copies this example if missing.
|
|
27
|
+
# Existing files are never overwritten. Copy .env.example to .env to activate it.
|
package/README.md
CHANGED
|
@@ -81,11 +81,13 @@ npm run build && npm start
|
|
|
81
81
|
|
|
82
82
|
配置从固定位置读取,**与启动目录无关**(避免与所在项目的 `.env` 冲突):
|
|
83
83
|
|
|
84
|
-
1. `~/.config/acli-hub/.env` — npm 安装(`npx`/全局)使用的配置,尊重 `$XDG_CONFIG_HOME
|
|
84
|
+
1. `~/.config/acli-hub/.env` — npm 安装(`npx`/全局)使用的配置,尊重 `$XDG_CONFIG_HOME`
|
|
85
85
|
2. 源码运行(`npm run dev`)时为仓库根目录的 `.env`
|
|
86
86
|
|
|
87
87
|
进程环境变量优先级最高。注意:启动目录同时决定新建终端会话的起始目录,建议固定一个目录启动。
|
|
88
88
|
|
|
89
|
+
启动时会自动创建用户配置目录,并在缺少 `.env.example` 时复制一份随包提供的模板;已有模板和 `.env` 均不会被覆盖。需要配置时,将该目录内的 `.env.example` 复制为 `.env`,按需修改后重启服务。程序不会自动生成实际的 `.env`,也不会把 `.env.example` 当作配置加载。
|
|
90
|
+
|
|
89
91
|
配置项:
|
|
90
92
|
|
|
91
93
|
| 变量 | 说明 | 默认值 |
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const os = require('os');
|
|
3
2
|
const path = require('path');
|
|
3
|
+
const { ensureUserConfig } = require('./services/user-config');
|
|
4
4
|
// Config is read from fixed locations, never the working directory (which
|
|
5
5
|
// would collide with whatever project the user happens to be in):
|
|
6
6
|
// 1. <package root>/.env — the source checkout during development
|
|
@@ -8,7 +8,8 @@ const path = require('path');
|
|
|
8
8
|
// dotenv never overrides variables that are already set, so real env vars
|
|
9
9
|
// always win.
|
|
10
10
|
require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
|
|
11
|
-
|
|
11
|
+
const userConfigDir = ensureUserConfig();
|
|
12
|
+
require('dotenv').config({ path: path.join(userConfigDir, '.env') });
|
|
12
13
|
const express = require('express');
|
|
13
14
|
const http = require('http');
|
|
14
15
|
const { createProxyMiddleware } = require('http-proxy-middleware');
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/core-DchA7RCO.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/mammoth.browser-C_M0wsD2.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{e as Ve,_ as s,a as Oe,u as je,r as f,p as ye,w as $e,o as Ce,b as Me,c as r,d as Se,f as n,g as o,h as g,t as d,i as ie,j as ne,k as ue,l as Z,F as P,G as qe,n as ge,m as we,q as Be,T as He,s as be,v as ze,x as ee,y as Fe,z as Ge,A as ke,B as Ne,C as Ue}from"./index-CBc7nL_R.js";const Ke=50,We=16*1024*1024;function Xe(E){const m=E.document;if(!m)return 0;let u=(m.text?.length||0)+(m.highlighted?.length||0)+(m.rendered?.length||0)+(E.diff?.patch?.length||0);for(const p of m.rows||[])for(const y of p)u+=String(y).length;return u*2}function Je(E,m,{maxEntries:u=Ke,maxBytes:p=We}={}){const y=[...E,{...m,bytes:Xe(m)}].slice(-u);let L=p;for(let _=y.length-1;_>=0;_--){const D=y[_];D.bytes<=L?L-=D.bytes:y[_]={...D,document:null,diff:null,diffLoaded:!1,bytes:0}}return y}const Ye={javascript:()=>s(()=>import("./javascript-DUNaicwC.js"),[]),typescript:()=>s(()=>import("./typescript-5pldp2kO.js"),[]),xml:()=>s(()=>import("./xml-FcirFJJ2.js"),[]),css:()=>s(()=>import("./css-AVCICof-.js"),[]),scss:()=>s(()=>import("./scss-UZl0Ag-9.js"),[]),json:()=>s(()=>import("./json-DdsocbVI.js"),[]),python:()=>s(()=>import("./python-CXf-_D6G.js"),[]),bash:()=>s(()=>import("./bash-I8pq0VWm.js"),[]),yaml:()=>s(()=>import("./yaml-drsDnIKT.js"),[]),ini:()=>s(()=>import("./ini-B3BVgEsG.js"),[]),markdown:()=>s(()=>import("./markdown-fzgiUVUV.js"),[]),go:()=>s(()=>import("./go-4VmnRw3R.js"),[]),rust:()=>s(()=>import("./rust-DsMvwcVK.js"),[]),java:()=>s(()=>import("./java-DUnkFH8J.js"),[]),c:()=>s(()=>import("./c-D87IyN5J.js"),[]),cpp:()=>s(()=>import("./cpp-BFCWVspj.js"),[]),csharp:()=>s(()=>import("./csharp-D-6syieo.js"),[]),ruby:()=>s(()=>import("./ruby-CcVTKuP4.js"),[]),php:()=>s(()=>import("./php-kjAv1gW4.js"),[]),sql:()=>s(()=>import("./sql-BC88IN-V.js"),[]),swift:()=>s(()=>import("./swift-jkyvy0ac.js"),[]),kotlin:()=>s(()=>import("./kotlin-Za0-TyUR.js"),[]),lua:()=>s(()=>import("./lua-CD7o2Ci6.js"),[]),perl:()=>s(()=>import("./perl-BWtAWCfC.js"),[]),r:()=>s(()=>import("./r-DWz4c2Y4.js"),[]),dart:()=>s(()=>import("./dart-DbQNmsdu.js"),[]),dockerfile:()=>s(()=>import("./dockerfile-Co-AyC30.js"),[]),makefile:()=>s(()=>import("./makefile-BoJC05FH.js"),[]),diff:()=>s(()=>import("./diff-BLTryEFx.js"),[]),plaintext:()=>s(()=>import("./plaintext-CPM70vnn.js"),[])},Qe={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",vue:"xml",svelte:"xml",html:"xml",htm:"xml",xml:"xml",svg:"xml",css:"css",scss:"scss",sass:"scss",less:"css",json:"json",jsonc:"json",py:"python",sh:"bash",zsh:"bash",bash:"bash",fish:"bash",yml:"yaml",yaml:"yaml",toml:"ini",ini:"ini",cfg:"ini",conf:"ini",md:"markdown",markdown:"markdown",go:"go",rs:"rust",java:"java",c:"c",h:"c",cpp:"cpp",cc:"cpp",hpp:"cpp",cs:"csharp",rb:"ruby",php:"php",sql:"sql",swift:"swift",kt:"kotlin",kts:"kotlin",lua:"lua",pl:"perl",r:"r",dart:"dart",diff:"diff",patch:"diff"};async function Ze(E,m){if(new TextEncoder().encode(E).length>200*1024)return null;const u=m.toLowerCase(),p=u==="dockerfile"?"dockerfile":u==="makefile"?"makefile":Qe[Ve(m)];if(!p)return null;const[{default:y},{default:L}]=await Promise.all([s(()=>import("./core-DchA7RCO.js"),__vite__mapDeps([0,1])),Ye[p]()]);return y.getLanguage(p)||y.registerLanguage(p,L),y.highlight(E,{language:p,ignoreIllegals:!0}).value}const et={class:"preview-layout"},tt={class:"preview-header"},at=["disabled"],lt={class:"preview-heading"},rt={id:"preview-title"},ot=["title"],st={key:1,class:"change-summary",role:"status"},it=["disabled"],nt=["href","download"],ut=["id","aria-selected","tabindex","disabled","onClick"],ct={key:0,class:"change-summary"},dt={key:0,class:"navigation-error",role:"alert"},vt={key:1,class:"navigation-error",role:"status"},ft=["aria-labelledby","aria-busy"],pt={key:0,class:"preview-message",role:"status"},_t={class:"diff-baseline"},ht={key:0},mt={key:0,class:"navigation-error"},yt={key:1,class:"preview-message",role:"status"},gt={key:2,class:"preview-message error",role:"alert"},wt={key:0,class:"preview-message"},bt={key:1,class:"diff-lines","aria-label":"Git 文件差异"},kt={class:"line-number"},Et={class:"line-number"},Tt={class:"diff-sign"},Lt={class:"diff-text"},Dt={key:2,class:"preview-message error",role:"alert"},xt={key:0,class:"preview-note"},At={key:1,class:"preview-note"},Rt={class:"source"},Pt=["innerHTML"],It={key:1},Vt=["innerHTML"],Ot=["srcdoc","title"],jt=["src","alt"],$t=["src"],Ct=["src"],Mt=["src","title"],St={key:6,class:"table-preview"},qt={class:"preview-note"},Bt={class:"row-number"},Ht={key:7,class:"preview-message"},zt={__name:"PreviewDialog",props:{entry:{type:Object,required:!0},root:{type:String,required:!0},changes:{type:Array,default:()=>[]}},emits:["close","git-status"],setup(E,{emit:m}){const u=E,p=m,y=je(),L=f(null),_=f(null),D=f(null),F=f(null),l=f({entry:u.entry,type:ye(u.entry.name),isText:!1,rows:[]}),G=f(!1),b=f(!1),I=f(""),V=f(""),U=f(""),v=f("preview"),x=f(u.changes),M=ze([]),A=f(""),S=f(1e3),q=f(null),O=f(!1),B=f(""),j=f(!1),H=ee(()=>x.value.find(t=>t.path===l.value.entry.path)),Ee=ee(()=>!!H.value||l.value.entry.virtual||j.value),ce=ee(()=>Fe(q.value?.patch||"")),$=ee(()=>[...l.value.entry.virtual?[]:[{id:"preview",label:"预览"}],...l.value.isText?[{id:"source",label:"源码"}]:[],...Ee.value?[{id:"diff",label:"Git Diff"}]:[]]);let te=null,K=null,k=0,de,W={left:0,top:0},X=null;function ae(t,a){return y.apiRequest(t,{signal:a}).then(e=>e.json())}function le(t){return new URLSearchParams(t)}async function ve(t,a,e){if(t.size>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);const T=(await y.apiRequest(ue(t.path,!1,u.root),{signal:a})).body.getReader(),i=[];let w=0;try{for(;;){const{done:z,value:Y}=await T.read();if(z)break;if(w+=Y.length,w>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);i.push(Y)}}finally{await T.cancel().catch(()=>{})}const h=new Uint8Array(w);let R=0;for(const z of i)h.set(z,R),R+=z.length;return h}async function Te(t,a){const e={entry:t,type:ye(t.name),text:"",highlighted:null,rendered:"",rows:[],isText:!1,tableFallback:!1,token:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,url:`${ue(t.path,!1,u.root)}&revision=${Date.now()}`};if(t.virtual)return e;if(e.type==="docx"){const c=await ve(t,a,10485760),{default:T}=await s(async()=>{const{default:w}=await import("./mammoth.browser-C_M0wsD2.js").then(h=>h.m);return{default:w}},__vite__mapDeps([2,1])),i=await T.convertToHtml({arrayBuffer:c.buffer},{externalFileAccess:!1});e.rendered=ke(i.value,{linkToken:e.token})}else if(["text","markdown","html","table"].includes(e.type)){if(e.text=new TextDecoder().decode(await ve(t,a,2*1024*1024)),e.text.includes("\0"))return e.type="unsupported",e;if(e.isText=!0,e.highlighted=await Ze(e.text,t.name).catch(()=>null),e.type==="html")e.rendered=ke(e.text,{linkToken:e.token});else if(e.type==="markdown")e.rendered=await Ne(e.text,{path:t.path,root:u.root});else if(e.type==="table"){const c=await Ue(e.text,t.name);c?e.rows=c:(e.tableFallback=!0,e.type="text")}}return e}async function re(){K?.abort();const t=new AbortController;K=t;const a=k;O.value=!0,B.value="";try{const e=await ae(`/api/git/diff?${le({root:u.root,path:l.value.entry.path})}`,t.signal);if(t.signal.aborted||a!==k)return;q.value=e,j.value=!0,x.value=x.value.filter(c=>c.path!==l.value.entry.path),e.change&&(x.value=[...x.value,e.change])}catch(e){!t.signal.aborted&&a===k&&(B.value=e.message)}finally{!t.signal.aborted&&a===k&&(O.value=!1)}}async function J(t,{lookup:a=!t.virtual,refresh:e=!1,push:c=!1,anchor:T="",saved:i=null}={}){const w=c&&G.value?xe():null;te?.abort(),K?.abort();const h=new AbortController;te=h;const R=++k,z=v.value,Y=e&&j.value;b.value=!0,O.value=!1,V.value="";try{let C=t;if(a&&!i?.document){const[Q,N]=await Promise.allSettled([ae(`/api/files/stat?${le({root:u.root,path:t.path})}`,h.signal),e?ae(`/api/git/status?${le({root:u.root})}`,h.signal):Promise.resolve(null)]);if(h.signal.aborted)return;if(e&&(N.status==="fulfilled"?(x.value=N.value.changes,U.value=N.value.reason==="git-unavailable"?"未安装 Git,无法更新差异。":"",p("git-status",N.value)):U.value=`Git 状态更新失败,标记可能已过时:${N.reason.message}`),Q.status==="fulfilled")C=Q.value;else if(Q.reason.status===404&&x.value.some(me=>me.path===t.path&&me.deleted))C={...t,name:t.name||t.path.split("/").pop(),virtual:!0,size:0};else throw Q.reason}const _e=i?.document||await Te(C,h.signal);if(h.signal.aborted||R!==k)return;w&&(M.value=Je(M.value,w)),l.value=_e,G.value=!0,A.value=T;const he=i?.mode||(e?z:"preview");return v.value=C.virtual?"diff":he==="source"&&!_e.isText?"preview":he,I.value="",S.value=i?.visibleRows||1e3,q.value=i?.diff||null,j.value=i?.diffLoaded||!1,B.value=i?.diffError||"",W=i?.frameScroll||{left:0,top:0},X=i?W:null,b.value=!1,await be(),h.signal.aborted||R!==k?!1:(i?Ae(i,R):oe(),(v.value==="diff"&&!j.value||Y)&&await re(),!0)}catch(C){!h.signal.aborted&&R===k&&(G.value?V.value=C.message:I.value=C.message)}finally{!h.signal.aborted&&R===k&&(b.value=!1)}return!1}function Le(){J(l.value.entry,{lookup:!0,refresh:!0,anchor:A.value})}async function De(){const t=M.value.at(-1);t&&await J(t.entry,{saved:t,anchor:t.anchor})&&(M.value=M.value.slice(0,-1))}function xe(){return{entry:l.value.entry,document:l.value,anchor:A.value,mode:v.value,visibleRows:S.value,diff:q.value,diffLoaded:j.value,diffError:B.value,scroll:{left:_.value?.scrollLeft||0,top:_.value?.scrollTop||0},frameScroll:{...W}}}function Ae(t,a){const e=v.value,c=()=>{a!==k||v.value!==e||!_.value||_.value.scrollTo({...t.scroll,behavior:"instant"})};c();const T=_.value?.scrollTop,i=[...F.value?.querySelectorAll("img")||[]].filter(w=>!w.complete);i.length&&Promise.allSettled(i.map(w=>w.decode())).then(()=>{_.value?.scrollTop===T&&c()})}function Re(){X?(D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,...X},"*"),X=null):oe()}function oe(){if(v.value==="preview")if(["html","docx"].includes(l.value.type))D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,hash:A.value},"*");else if(A.value&&F.value){const t=[...F.value.querySelectorAll("[id]")].find(a=>a.id===A.value);t?t.scrollIntoView({block:"start"}):V.value=`未找到文档锚点:${A.value}`}else _.value&&(_.value.scrollTop=0)}async function se(t){v.value=t,t==="diff"&&!j.value&&!O.value&&await re(),t==="preview"&&(await be(),oe())}async function fe(t){V.value="";try{const a=Ge(t,l.value.entry.path,u.root);if(a.kind==="external"){const e=window.document.createElement("a");e.href=a.url,e.target="_blank",e.rel="noopener noreferrer",e.click()}else a.path===l.value.entry.path?(A.value=a.hash,await se("preview")):await J({path:a.path},{lookup:!0,push:!0,anchor:a.hash})}catch(a){V.value=a.message}}function Pe(t){const a=t.target instanceof Element?t.target.closest("a"):null;!a||!F.value?.contains(a)||(t.preventDefault(),!b.value&&fe(a.getAttribute("data-preview-href")??a.getAttribute("href")??""))}function pe(t){const a=t.data;t.source!==D.value?.contentWindow||t.origin!=="null"||v.value!=="preview"||b.value||!a||a.type!=="acli-preview-link"||a.token!==l.value.token||typeof a.href!="string"||a.href.length>8192||(Number.isFinite(a.scroll?.left)&&Number.isFinite(a.scroll?.top)&&(W={left:a.scroll.left,top:a.scroll.top}),fe(a.href))}function Ie(t){if(!["ArrowLeft","ArrowRight","Home","End"].includes(t.key))return;t.preventDefault();const a=$.value.findIndex(c=>c.id===v.value),e=t.key==="Home"?0:t.key==="End"?$.value.length-1:(a+(t.key==="ArrowRight"?1:-1)+$.value.length)%$.value.length;se($.value[e].id),L.value.querySelector(`#preview-tab-${$.value[e].id}`)?.focus()}return $e(()=>u.changes,t=>{x.value=t}),Ce(()=>{de=window.document.activeElement,L.value.showModal(),window.addEventListener("message",pe),J(u.entry)}),Me(()=>{k++,te?.abort(),K?.abort(),window.removeEventListener("message",pe),de?.focus()}),(t,a)=>(r(),Se(He,{to:"body"},[n("dialog",{ref_key:"dialog",ref:L,class:"preview-dialog","aria-labelledby":"preview-title",onCancel:a[5]||(a[5]=Be(e=>p("close"),["prevent"])),onClick:a[6]||(a[6]=e=>{e.target===L.value&&p("close")})},[n("div",et,[n("header",tt,[M.value.length?(r(),o("button",{key:0,class:"header-button",disabled:b.value,title:"返回上一个文档","aria-label":"返回上一个文档",onClick:De},"←",8,at)):g("",!0),n("div",lt,[n("h3",rt,d(l.value.entry.name),1),n("p",{title:l.value.entry.path},d(l.value.entry.path)+" · "+d(l.value.entry.virtual?"已删除":ie(ne)(l.value.entry.size)),9,ot)]),b.value&&G.value?(r(),o("span",st,"加载中…")):g("",!0),n("button",{class:"header-button refresh-button",disabled:b.value||O.value,title:"刷新当前文件、源码和已加载的 Diff","aria-label":"刷新当前文件、源码和已加载的 Diff",onClick:Le},"↻",8,it),l.value.entry.virtual?g("",!0):(r(),o("a",{key:2,class:"btn",href:ie(ue)(l.value.entry.path,!0,E.root),download:l.value.entry.name},"下载",8,nt)),n("button",{class:"close","aria-label":"关闭预览",autofocus:"",onClick:a[0]||(a[0]=e=>p("close"))},"×")]),n("div",{class:"preview-tabs",role:"tablist","aria-label":"文件查看模式",onKeydown:Ie},[(r(!0),o(P,null,Z($.value,e=>(r(),o("button",{id:`preview-tab-${e.id}`,key:e.id,role:"tab","aria-selected":v.value===e.id,"aria-controls":"preview-content",tabindex:v.value===e.id?0:-1,disabled:b.value,onClick:c=>se(e.id)},d(e.label),9,ut))),128)),H.value?(r(),o("span",ct,d(ie(qe)[H.value.status]),1)):g("",!0)],32),V.value?(r(),o("p",dt,d(V.value),1)):g("",!0),U.value?(r(),o("p",vt,d(U.value),1)):g("",!0),n("main",{id:"preview-content",ref_key:"body",ref:_,class:ge(["preview-body",{"frame-body":v.value==="preview"&&["html","docx","pdf"].includes(l.value.type),"diff-body":v.value==="diff"}]),role:"tabpanel","aria-labelledby":`preview-tab-${v.value}`,"aria-busy":b.value||O.value},[b.value&&!G.value?(r(),o("p",pt,"加载预览…")):v.value==="diff"?(r(),o(P,{key:1},[n("p",_t,[a[7]||(a[7]=we("上次提交 HEAD → 当前工作区",-1)),H.value?.originalPath?(r(),o("span",ht," · 原路径:"+d(H.value.originalPath),1)):g("",!0)]),H.value?.status==="C"?(r(),o("p",mt,"此文件存在合并冲突;这里仅展示当前差异,不提供三方合并。")):g("",!0),O.value?(r(),o("p",yt,"加载 Git Diff…")):B.value?(r(),o("p",gt,[we(d(B.value)+" ",1),n("button",{class:"header-button",onClick:re},"重试")])):(r(),o(P,{key:3},[q.value?.notice?(r(),o("p",wt,d(q.value.notice),1)):g("",!0),ce.value.length?(r(),o("div",bt,[(r(!0),o(P,null,Z(ce.value,(e,c)=>(r(),o("div",{key:c,class:ge(["diff-line",`diff-${e.type}`])},[n("span",kt,d(e.oldLine),1),n("span",Et,d(e.newLine),1),n("span",Tt,d(e.sign),1),n("span",Lt,d(e.text),1)],2))),128))])):g("",!0)],64))],64)):I.value?(r(),o("p",Dt,d(I.value),1)):v.value==="source"||l.value.type==="text"?(r(),o(P,{key:3},[l.value.tableFallback&&v.value==="preview"?(r(),o("p",xt,"表格解析失败,已显示原始文本。")):g("",!0),l.value.entry.size>200*1024?(r(),o("p",At,"文件超过 200 KiB,已使用纯文本预览。")):g("",!0),n("pre",Rt,[l.value.highlighted!==null?(r(),o("code",{key:0,class:"hljs",innerHTML:l.value.highlighted},null,8,Pt)):(r(),o("code",It,d(l.value.text),1))])],64)):(r(),o(P,{key:4},[l.value.type==="markdown"?(r(),o("article",{key:0,ref_key:"markdown",ref:F,class:"markdown-body",onClick:Pe,innerHTML:l.value.rendered},null,8,Vt)):l.value.type==="html"||l.value.type==="docx"?(r(),o("iframe",{key:l.value.url,ref_key:"frame",ref:D,srcdoc:l.value.rendered,sandbox:"allow-scripts",referrerpolicy:"no-referrer",title:l.value.entry.name,class:"document-frame",onLoad:Re},null,40,Ot)):l.value.type==="image"?(r(),o("img",{key:l.value.url,src:l.value.url,alt:l.value.entry.name,class:"image-preview",onError:a[1]||(a[1]=e=>I.value="浏览器无法显示这张图片,请下载查看。")},null,40,jt)):l.value.type==="audio"?(r(),o("audio",{key:l.value.url,src:l.value.url,controls:"",class:"media-preview",onError:a[2]||(a[2]=e=>I.value="浏览器不支持此音频格式,请下载查看。")},null,40,$t)):l.value.type==="video"?(r(),o("video",{key:l.value.url,src:l.value.url,controls:"",playsinline:"",class:"media-preview",onError:a[3]||(a[3]=e=>I.value="浏览器不支持此视频格式,请下载查看。")},null,40,Ct)):l.value.type==="pdf"?(r(),o("iframe",{key:l.value.url,src:l.value.url,title:l.value.entry.name,class:"document-frame"},null,8,Mt)):l.value.type==="table"?(r(),o("div",St,[n("p",qt,"已显示 "+d(Math.min(S.value,l.value.rows.length))+" / "+d(l.value.rows.length)+" 行",1),n("table",null,[n("tbody",null,[(r(!0),o(P,null,Z(l.value.rows.slice(0,S.value),(e,c)=>(r(),o("tr",{key:c},[n("td",Bt,d(c+1),1),(r(!0),o(P,null,Z(e,(T,i)=>(r(),o("td",{key:i},d(T),1))),128))]))),128))])]),S.value<l.value.rows.length?(r(),o("button",{key:0,class:"btn btn-primary show-more",onClick:a[4]||(a[4]=e=>S.value+=1e3)},"显示更多(1000 行)")):g("",!0)])):(r(),o("p",Ht,"此文件类型暂不支持预览,请下载查看。"))],64))],10,ft)])],544)]))}},Gt=Oe(zt,[["__scopeId","data-v-f8f7647a"]]);export{Gt as default};
|
|
2
|
+
import{e as Ve,_ as s,a as Oe,u as je,r as f,p as ye,w as $e,o as Ce,b as Me,c as r,d as Se,f as n,g as o,h as g,t as d,i as ie,j as ne,k as ue,l as Z,F as P,G as qe,n as ge,m as we,q as Be,T as He,s as be,v as ze,x as ee,y as Fe,z as Ge,A as ke,B as Ne,C as Ue}from"./index-DlR3k_jH.js";const Ke=50,We=16*1024*1024;function Xe(E){const m=E.document;if(!m)return 0;let u=(m.text?.length||0)+(m.highlighted?.length||0)+(m.rendered?.length||0)+(E.diff?.patch?.length||0);for(const p of m.rows||[])for(const y of p)u+=String(y).length;return u*2}function Je(E,m,{maxEntries:u=Ke,maxBytes:p=We}={}){const y=[...E,{...m,bytes:Xe(m)}].slice(-u);let L=p;for(let _=y.length-1;_>=0;_--){const D=y[_];D.bytes<=L?L-=D.bytes:y[_]={...D,document:null,diff:null,diffLoaded:!1,bytes:0}}return y}const Ye={javascript:()=>s(()=>import("./javascript-DUNaicwC.js"),[]),typescript:()=>s(()=>import("./typescript-5pldp2kO.js"),[]),xml:()=>s(()=>import("./xml-FcirFJJ2.js"),[]),css:()=>s(()=>import("./css-AVCICof-.js"),[]),scss:()=>s(()=>import("./scss-UZl0Ag-9.js"),[]),json:()=>s(()=>import("./json-DdsocbVI.js"),[]),python:()=>s(()=>import("./python-CXf-_D6G.js"),[]),bash:()=>s(()=>import("./bash-I8pq0VWm.js"),[]),yaml:()=>s(()=>import("./yaml-drsDnIKT.js"),[]),ini:()=>s(()=>import("./ini-B3BVgEsG.js"),[]),markdown:()=>s(()=>import("./markdown-fzgiUVUV.js"),[]),go:()=>s(()=>import("./go-4VmnRw3R.js"),[]),rust:()=>s(()=>import("./rust-DsMvwcVK.js"),[]),java:()=>s(()=>import("./java-DUnkFH8J.js"),[]),c:()=>s(()=>import("./c-D87IyN5J.js"),[]),cpp:()=>s(()=>import("./cpp-BFCWVspj.js"),[]),csharp:()=>s(()=>import("./csharp-D-6syieo.js"),[]),ruby:()=>s(()=>import("./ruby-CcVTKuP4.js"),[]),php:()=>s(()=>import("./php-kjAv1gW4.js"),[]),sql:()=>s(()=>import("./sql-BC88IN-V.js"),[]),swift:()=>s(()=>import("./swift-jkyvy0ac.js"),[]),kotlin:()=>s(()=>import("./kotlin-Za0-TyUR.js"),[]),lua:()=>s(()=>import("./lua-CD7o2Ci6.js"),[]),perl:()=>s(()=>import("./perl-BWtAWCfC.js"),[]),r:()=>s(()=>import("./r-DWz4c2Y4.js"),[]),dart:()=>s(()=>import("./dart-DbQNmsdu.js"),[]),dockerfile:()=>s(()=>import("./dockerfile-Co-AyC30.js"),[]),makefile:()=>s(()=>import("./makefile-BoJC05FH.js"),[]),diff:()=>s(()=>import("./diff-BLTryEFx.js"),[]),plaintext:()=>s(()=>import("./plaintext-CPM70vnn.js"),[])},Qe={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",vue:"xml",svelte:"xml",html:"xml",htm:"xml",xml:"xml",svg:"xml",css:"css",scss:"scss",sass:"scss",less:"css",json:"json",jsonc:"json",py:"python",sh:"bash",zsh:"bash",bash:"bash",fish:"bash",yml:"yaml",yaml:"yaml",toml:"ini",ini:"ini",cfg:"ini",conf:"ini",md:"markdown",markdown:"markdown",go:"go",rs:"rust",java:"java",c:"c",h:"c",cpp:"cpp",cc:"cpp",hpp:"cpp",cs:"csharp",rb:"ruby",php:"php",sql:"sql",swift:"swift",kt:"kotlin",kts:"kotlin",lua:"lua",pl:"perl",r:"r",dart:"dart",diff:"diff",patch:"diff"};async function Ze(E,m){if(new TextEncoder().encode(E).length>200*1024)return null;const u=m.toLowerCase(),p=u==="dockerfile"?"dockerfile":u==="makefile"?"makefile":Qe[Ve(m)];if(!p)return null;const[{default:y},{default:L}]=await Promise.all([s(()=>import("./core-DchA7RCO.js"),__vite__mapDeps([0,1])),Ye[p]()]);return y.getLanguage(p)||y.registerLanguage(p,L),y.highlight(E,{language:p,ignoreIllegals:!0}).value}const et={class:"preview-layout"},tt={class:"preview-header"},at=["disabled"],lt={class:"preview-heading"},rt={id:"preview-title"},ot=["title"],st={key:1,class:"change-summary",role:"status"},it=["disabled"],nt=["href","download"],ut=["id","aria-selected","tabindex","disabled","onClick"],ct={key:0,class:"change-summary"},dt={key:0,class:"navigation-error",role:"alert"},vt={key:1,class:"navigation-error",role:"status"},ft=["aria-labelledby","aria-busy"],pt={key:0,class:"preview-message",role:"status"},_t={class:"diff-baseline"},ht={key:0},mt={key:0,class:"navigation-error"},yt={key:1,class:"preview-message",role:"status"},gt={key:2,class:"preview-message error",role:"alert"},wt={key:0,class:"preview-message"},bt={key:1,class:"diff-lines","aria-label":"Git 文件差异"},kt={class:"line-number"},Et={class:"line-number"},Tt={class:"diff-sign"},Lt={class:"diff-text"},Dt={key:2,class:"preview-message error",role:"alert"},xt={key:0,class:"preview-note"},At={key:1,class:"preview-note"},Rt={class:"source"},Pt=["innerHTML"],It={key:1},Vt=["innerHTML"],Ot=["srcdoc","title"],jt=["src","alt"],$t=["src"],Ct=["src"],Mt=["src","title"],St={key:6,class:"table-preview"},qt={class:"preview-note"},Bt={class:"row-number"},Ht={key:7,class:"preview-message"},zt={__name:"PreviewDialog",props:{entry:{type:Object,required:!0},root:{type:String,required:!0},changes:{type:Array,default:()=>[]}},emits:["close","git-status"],setup(E,{emit:m}){const u=E,p=m,y=je(),L=f(null),_=f(null),D=f(null),F=f(null),l=f({entry:u.entry,type:ye(u.entry.name),isText:!1,rows:[]}),G=f(!1),b=f(!1),I=f(""),V=f(""),U=f(""),v=f("preview"),x=f(u.changes),M=ze([]),A=f(""),S=f(1e3),q=f(null),O=f(!1),B=f(""),j=f(!1),H=ee(()=>x.value.find(t=>t.path===l.value.entry.path)),Ee=ee(()=>!!H.value||l.value.entry.virtual||j.value),ce=ee(()=>Fe(q.value?.patch||"")),$=ee(()=>[...l.value.entry.virtual?[]:[{id:"preview",label:"预览"}],...l.value.isText?[{id:"source",label:"源码"}]:[],...Ee.value?[{id:"diff",label:"Git Diff"}]:[]]);let te=null,K=null,k=0,de,W={left:0,top:0},X=null;function ae(t,a){return y.apiRequest(t,{signal:a}).then(e=>e.json())}function le(t){return new URLSearchParams(t)}async function ve(t,a,e){if(t.size>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);const T=(await y.apiRequest(ue(t.path,!1,u.root),{signal:a})).body.getReader(),i=[];let w=0;try{for(;;){const{done:z,value:Y}=await T.read();if(z)break;if(w+=Y.length,w>e)throw new Error(`预览上限为 ${ne(e)},请下载文件查看。`);i.push(Y)}}finally{await T.cancel().catch(()=>{})}const h=new Uint8Array(w);let R=0;for(const z of i)h.set(z,R),R+=z.length;return h}async function Te(t,a){const e={entry:t,type:ye(t.name),text:"",highlighted:null,rendered:"",rows:[],isText:!1,tableFallback:!1,token:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,url:`${ue(t.path,!1,u.root)}&revision=${Date.now()}`};if(t.virtual)return e;if(e.type==="docx"){const c=await ve(t,a,10485760),{default:T}=await s(async()=>{const{default:w}=await import("./mammoth.browser-C_M0wsD2.js").then(h=>h.m);return{default:w}},__vite__mapDeps([2,1])),i=await T.convertToHtml({arrayBuffer:c.buffer},{externalFileAccess:!1});e.rendered=ke(i.value,{linkToken:e.token})}else if(["text","markdown","html","table"].includes(e.type)){if(e.text=new TextDecoder().decode(await ve(t,a,2*1024*1024)),e.text.includes("\0"))return e.type="unsupported",e;if(e.isText=!0,e.highlighted=await Ze(e.text,t.name).catch(()=>null),e.type==="html")e.rendered=ke(e.text,{linkToken:e.token});else if(e.type==="markdown")e.rendered=await Ne(e.text,{path:t.path,root:u.root});else if(e.type==="table"){const c=await Ue(e.text,t.name);c?e.rows=c:(e.tableFallback=!0,e.type="text")}}return e}async function re(){K?.abort();const t=new AbortController;K=t;const a=k;O.value=!0,B.value="";try{const e=await ae(`/api/git/diff?${le({root:u.root,path:l.value.entry.path})}`,t.signal);if(t.signal.aborted||a!==k)return;q.value=e,j.value=!0,x.value=x.value.filter(c=>c.path!==l.value.entry.path),e.change&&(x.value=[...x.value,e.change])}catch(e){!t.signal.aborted&&a===k&&(B.value=e.message)}finally{!t.signal.aborted&&a===k&&(O.value=!1)}}async function J(t,{lookup:a=!t.virtual,refresh:e=!1,push:c=!1,anchor:T="",saved:i=null}={}){const w=c&&G.value?xe():null;te?.abort(),K?.abort();const h=new AbortController;te=h;const R=++k,z=v.value,Y=e&&j.value;b.value=!0,O.value=!1,V.value="";try{let C=t;if(a&&!i?.document){const[Q,N]=await Promise.allSettled([ae(`/api/files/stat?${le({root:u.root,path:t.path})}`,h.signal),e?ae(`/api/git/status?${le({root:u.root})}`,h.signal):Promise.resolve(null)]);if(h.signal.aborted)return;if(e&&(N.status==="fulfilled"?(x.value=N.value.changes,U.value=N.value.reason==="git-unavailable"?"未安装 Git,无法更新差异。":"",p("git-status",N.value)):U.value=`Git 状态更新失败,标记可能已过时:${N.reason.message}`),Q.status==="fulfilled")C=Q.value;else if(Q.reason.status===404&&x.value.some(me=>me.path===t.path&&me.deleted))C={...t,name:t.name||t.path.split("/").pop(),virtual:!0,size:0};else throw Q.reason}const _e=i?.document||await Te(C,h.signal);if(h.signal.aborted||R!==k)return;w&&(M.value=Je(M.value,w)),l.value=_e,G.value=!0,A.value=T;const he=i?.mode||(e?z:"preview");return v.value=C.virtual?"diff":he==="source"&&!_e.isText?"preview":he,I.value="",S.value=i?.visibleRows||1e3,q.value=i?.diff||null,j.value=i?.diffLoaded||!1,B.value=i?.diffError||"",W=i?.frameScroll||{left:0,top:0},X=i?W:null,b.value=!1,await be(),h.signal.aborted||R!==k?!1:(i?Ae(i,R):oe(),(v.value==="diff"&&!j.value||Y)&&await re(),!0)}catch(C){!h.signal.aborted&&R===k&&(G.value?V.value=C.message:I.value=C.message)}finally{!h.signal.aborted&&R===k&&(b.value=!1)}return!1}function Le(){J(l.value.entry,{lookup:!0,refresh:!0,anchor:A.value})}async function De(){const t=M.value.at(-1);t&&await J(t.entry,{saved:t,anchor:t.anchor})&&(M.value=M.value.slice(0,-1))}function xe(){return{entry:l.value.entry,document:l.value,anchor:A.value,mode:v.value,visibleRows:S.value,diff:q.value,diffLoaded:j.value,diffError:B.value,scroll:{left:_.value?.scrollLeft||0,top:_.value?.scrollTop||0},frameScroll:{...W}}}function Ae(t,a){const e=v.value,c=()=>{a!==k||v.value!==e||!_.value||_.value.scrollTo({...t.scroll,behavior:"instant"})};c();const T=_.value?.scrollTop,i=[...F.value?.querySelectorAll("img")||[]].filter(w=>!w.complete);i.length&&Promise.allSettled(i.map(w=>w.decode())).then(()=>{_.value?.scrollTop===T&&c()})}function Re(){X?(D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,...X},"*"),X=null):oe()}function oe(){if(v.value==="preview")if(["html","docx"].includes(l.value.type))D.value?.contentWindow?.postMessage({type:"acli-preview-scroll",token:l.value.token,hash:A.value},"*");else if(A.value&&F.value){const t=[...F.value.querySelectorAll("[id]")].find(a=>a.id===A.value);t?t.scrollIntoView({block:"start"}):V.value=`未找到文档锚点:${A.value}`}else _.value&&(_.value.scrollTop=0)}async function se(t){v.value=t,t==="diff"&&!j.value&&!O.value&&await re(),t==="preview"&&(await be(),oe())}async function fe(t){V.value="";try{const a=Ge(t,l.value.entry.path,u.root);if(a.kind==="external"){const e=window.document.createElement("a");e.href=a.url,e.target="_blank",e.rel="noopener noreferrer",e.click()}else a.path===l.value.entry.path?(A.value=a.hash,await se("preview")):await J({path:a.path},{lookup:!0,push:!0,anchor:a.hash})}catch(a){V.value=a.message}}function Pe(t){const a=t.target instanceof Element?t.target.closest("a"):null;!a||!F.value?.contains(a)||(t.preventDefault(),!b.value&&fe(a.getAttribute("data-preview-href")??a.getAttribute("href")??""))}function pe(t){const a=t.data;t.source!==D.value?.contentWindow||t.origin!=="null"||v.value!=="preview"||b.value||!a||a.type!=="acli-preview-link"||a.token!==l.value.token||typeof a.href!="string"||a.href.length>8192||(Number.isFinite(a.scroll?.left)&&Number.isFinite(a.scroll?.top)&&(W={left:a.scroll.left,top:a.scroll.top}),fe(a.href))}function Ie(t){if(!["ArrowLeft","ArrowRight","Home","End"].includes(t.key))return;t.preventDefault();const a=$.value.findIndex(c=>c.id===v.value),e=t.key==="Home"?0:t.key==="End"?$.value.length-1:(a+(t.key==="ArrowRight"?1:-1)+$.value.length)%$.value.length;se($.value[e].id),L.value.querySelector(`#preview-tab-${$.value[e].id}`)?.focus()}return $e(()=>u.changes,t=>{x.value=t}),Ce(()=>{de=window.document.activeElement,L.value.showModal(),window.addEventListener("message",pe),J(u.entry)}),Me(()=>{k++,te?.abort(),K?.abort(),window.removeEventListener("message",pe),de?.focus()}),(t,a)=>(r(),Se(He,{to:"body"},[n("dialog",{ref_key:"dialog",ref:L,class:"preview-dialog","aria-labelledby":"preview-title",onCancel:a[5]||(a[5]=Be(e=>p("close"),["prevent"])),onClick:a[6]||(a[6]=e=>{e.target===L.value&&p("close")})},[n("div",et,[n("header",tt,[M.value.length?(r(),o("button",{key:0,class:"header-button",disabled:b.value,title:"返回上一个文档","aria-label":"返回上一个文档",onClick:De},"←",8,at)):g("",!0),n("div",lt,[n("h3",rt,d(l.value.entry.name),1),n("p",{title:l.value.entry.path},d(l.value.entry.path)+" · "+d(l.value.entry.virtual?"已删除":ie(ne)(l.value.entry.size)),9,ot)]),b.value&&G.value?(r(),o("span",st,"加载中…")):g("",!0),n("button",{class:"header-button refresh-button",disabled:b.value||O.value,title:"刷新当前文件、源码和已加载的 Diff","aria-label":"刷新当前文件、源码和已加载的 Diff",onClick:Le},"↻",8,it),l.value.entry.virtual?g("",!0):(r(),o("a",{key:2,class:"btn",href:ie(ue)(l.value.entry.path,!0,E.root),download:l.value.entry.name},"下载",8,nt)),n("button",{class:"close","aria-label":"关闭预览",autofocus:"",onClick:a[0]||(a[0]=e=>p("close"))},"×")]),n("div",{class:"preview-tabs",role:"tablist","aria-label":"文件查看模式",onKeydown:Ie},[(r(!0),o(P,null,Z($.value,e=>(r(),o("button",{id:`preview-tab-${e.id}`,key:e.id,role:"tab","aria-selected":v.value===e.id,"aria-controls":"preview-content",tabindex:v.value===e.id?0:-1,disabled:b.value,onClick:c=>se(e.id)},d(e.label),9,ut))),128)),H.value?(r(),o("span",ct,d(ie(qe)[H.value.status]),1)):g("",!0)],32),V.value?(r(),o("p",dt,d(V.value),1)):g("",!0),U.value?(r(),o("p",vt,d(U.value),1)):g("",!0),n("main",{id:"preview-content",ref_key:"body",ref:_,class:ge(["preview-body",{"frame-body":v.value==="preview"&&["html","docx","pdf"].includes(l.value.type),"diff-body":v.value==="diff"}]),role:"tabpanel","aria-labelledby":`preview-tab-${v.value}`,"aria-busy":b.value||O.value},[b.value&&!G.value?(r(),o("p",pt,"加载预览…")):v.value==="diff"?(r(),o(P,{key:1},[n("p",_t,[a[7]||(a[7]=we("上次提交 HEAD → 当前工作区",-1)),H.value?.originalPath?(r(),o("span",ht," · 原路径:"+d(H.value.originalPath),1)):g("",!0)]),H.value?.status==="C"?(r(),o("p",mt,"此文件存在合并冲突;这里仅展示当前差异,不提供三方合并。")):g("",!0),O.value?(r(),o("p",yt,"加载 Git Diff…")):B.value?(r(),o("p",gt,[we(d(B.value)+" ",1),n("button",{class:"header-button",onClick:re},"重试")])):(r(),o(P,{key:3},[q.value?.notice?(r(),o("p",wt,d(q.value.notice),1)):g("",!0),ce.value.length?(r(),o("div",bt,[(r(!0),o(P,null,Z(ce.value,(e,c)=>(r(),o("div",{key:c,class:ge(["diff-line",`diff-${e.type}`])},[n("span",kt,d(e.oldLine),1),n("span",Et,d(e.newLine),1),n("span",Tt,d(e.sign),1),n("span",Lt,d(e.text),1)],2))),128))])):g("",!0)],64))],64)):I.value?(r(),o("p",Dt,d(I.value),1)):v.value==="source"||l.value.type==="text"?(r(),o(P,{key:3},[l.value.tableFallback&&v.value==="preview"?(r(),o("p",xt,"表格解析失败,已显示原始文本。")):g("",!0),l.value.entry.size>200*1024?(r(),o("p",At,"文件超过 200 KiB,已使用纯文本预览。")):g("",!0),n("pre",Rt,[l.value.highlighted!==null?(r(),o("code",{key:0,class:"hljs",innerHTML:l.value.highlighted},null,8,Pt)):(r(),o("code",It,d(l.value.text),1))])],64)):(r(),o(P,{key:4},[l.value.type==="markdown"?(r(),o("article",{key:0,ref_key:"markdown",ref:F,class:"markdown-body",onClick:Pe,innerHTML:l.value.rendered},null,8,Vt)):l.value.type==="html"||l.value.type==="docx"?(r(),o("iframe",{key:l.value.url,ref_key:"frame",ref:D,srcdoc:l.value.rendered,sandbox:"allow-scripts",referrerpolicy:"no-referrer",title:l.value.entry.name,class:"document-frame",onLoad:Re},null,40,Ot)):l.value.type==="image"?(r(),o("img",{key:l.value.url,src:l.value.url,alt:l.value.entry.name,class:"image-preview",onError:a[1]||(a[1]=e=>I.value="浏览器无法显示这张图片,请下载查看。")},null,40,jt)):l.value.type==="audio"?(r(),o("audio",{key:l.value.url,src:l.value.url,controls:"",class:"media-preview",onError:a[2]||(a[2]=e=>I.value="浏览器不支持此音频格式,请下载查看。")},null,40,$t)):l.value.type==="video"?(r(),o("video",{key:l.value.url,src:l.value.url,controls:"",playsinline:"",class:"media-preview",onError:a[3]||(a[3]=e=>I.value="浏览器不支持此视频格式,请下载查看。")},null,40,Ct)):l.value.type==="pdf"?(r(),o("iframe",{key:l.value.url,src:l.value.url,title:l.value.entry.name,class:"document-frame"},null,8,Mt)):l.value.type==="table"?(r(),o("div",St,[n("p",qt,"已显示 "+d(Math.min(S.value,l.value.rows.length))+" / "+d(l.value.rows.length)+" 行",1),n("table",null,[n("tbody",null,[(r(!0),o(P,null,Z(l.value.rows.slice(0,S.value),(e,c)=>(r(),o("tr",{key:c},[n("td",Bt,d(c+1),1),(r(!0),o(P,null,Z(e,(T,i)=>(r(),o("td",{key:i},d(T),1))),128))]))),128))])]),S.value<l.value.rows.length?(r(),o("button",{key:0,class:"btn btn-primary show-more",onClick:a[4]||(a[4]=e=>S.value+=1e3)},"显示更多(1000 行)")):g("",!0)])):(r(),o("p",Ht,"此文件类型暂不支持预览,请下载查看。"))],64))],10,ft)])],544)]))}},Gt=Oe(zt,[["__scopeId","data-v-f8f7647a"]]);export{Gt as default};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/papaparse.min-DBcLlWLv.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/PreviewDialog-
|
|
2
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();function Vs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},qt=[],lt=()=>{},cr=()=>!1,Jn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bs=e=>e.startsWith("onUpdate:"),Ce=Object.assign,Ws=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Li=Object.prototype.hasOwnProperty,ue=(e,t)=>Li.call(e,t),J=Array.isArray,Gt=e=>_n(e)==="[object Map]",Zn=e=>_n(e)==="[object Set]",ho=e=>_n(e)==="[object Date]",ee=e=>typeof e=="function",we=e=>typeof e=="string",at=e=>typeof e=="symbol",pe=e=>e!==null&&typeof e=="object",ur=e=>(pe(e)||ee(e))&&ee(e.then)&&ee(e.catch),fr=Object.prototype.toString,_n=e=>fr.call(e),Di=e=>_n(e).slice(8,-1),dr=e=>_n(e)==="[object Object]",Qn=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=Vs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),es=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Fi=/-\w/g,qe=es(e=>e.replace(Fi,t=>t.slice(1).toUpperCase())),Ni=/\B([A-Z])/g,kt=es(e=>e.replace(Ni,"-$1").toLowerCase()),ts=es(e=>e.charAt(0).toUpperCase()+e.slice(1)),ps=es(e=>e?`on${ts(e)}`:""),Tt=(e,t)=>!Object.is(e,t),Ln=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},pr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ns=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ji=e=>{const t=we(e)?Number(e):NaN;return isNaN(t)?e:t};let mo;const ss=()=>mo||(mo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xn(e){if(J(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=we(s)?Vi(s):xn(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(we(e)||pe(e))return e}const Hi=/;(?![^(]*\))/g,Ui=/:([^]+)/,Ki=/\/\*[^]*?\*\//g;function Vi(e){const t={};return e.replace(Ki,"").split(Hi).forEach(n=>{if(n){const s=n.split(Ui);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function We(e){let t="";if(we(e))t=e;else if(J(e))for(let n=0;n<e.length;n++){const s=We(e[n]);s&&(t+=s+" ")}else if(pe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Bi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Wi=Vs(Bi);function hr(e){return!!e||e===""}function qi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=os(e[s],t[s]);return n}function os(e,t){if(e===t)return!0;let n=ho(e),s=ho(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=at(e),s=at(t),n||s)return e===t;if(n=J(e),s=J(t),n||s)return n&&s?qi(e,t):!1;if(n=pe(e),s=pe(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const i in e){const l=e.hasOwnProperty(i),a=t.hasOwnProperty(i);if(l&&!a||!l&&a||!os(e[i],t[i]))return!1}}return String(e)===String(t)}function Gi(e,t){return e.findIndex(n=>os(n,t))}const mr=e=>!!(e&&e.__v_isRef===!0),se=e=>we(e)?e:e==null?"":J(e)||pe(e)&&(e.toString===fr||!ee(e.toString))?mr(e)?se(e.value):JSON.stringify(e,gr,2):String(e),gr=(e,t)=>mr(t)?gr(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[hs(s,r)+" =>"]=o,n),{})}:Zn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:at(t)?hs(t):pe(t)&&!J(t)&&!dr(t)?String(t):t,hs=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class vr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){++this._on===1&&(this.prevScope=Ee,Ee=this)}off(){this._on>0&&--this._on===0&&(Ee=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function yr(e){return new vr(e)}function br(){return Ee}function Yi(e,t=!1){Ee&&Ee.cleanups.push(e)}let me;const ms=new WeakSet;class wr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Ee&&Ee.active&&Ee.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ms.has(this)&&(ms.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||xr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,go(this),Cr(this);const t=me,n=ze;me=this,ze=!0;try{return this.fn()}finally{Sr(this),me=t,ze=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ys(t);this.deps=this.depsTail=void 0,go(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ms.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){$s(this)&&this.run()}get dirty(){return $s(this)}}let _r=0,an,cn;function xr(e,t=!1){if(e.flags|=8,t){e.next=cn,cn=e;return}e.next=an,an=e}function qs(){_r++}function Gs(){if(--_r>0)return;if(cn){let t=cn;for(cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;an;){let t=an;for(an=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Cr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Sr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),Ys(s),zi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function $s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Er(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Er(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$s(e))))return;e.flags|=2;const t=e.dep,n=me,s=ze;me=e,ze=!0;try{Cr(e);const o=e.fn(e._value);(t.version===0||Tt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{me=n,ze=s,Sr(e),e.flags&=-3}}function Ys(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)Ys(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function zi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ze=!0;const Tr=[];function mt(){Tr.push(ze),ze=!1}function gt(){const e=Tr.pop();ze=e===void 0?!0:e}function go(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=me;me=void 0;try{t()}finally{me=n}}}let gn=0;class Xi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!me||!ze||me===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==me)n=this.activeLink=new Xi(me,this),me.deps?(n.prevDep=me.depsTail,me.depsTail.nextDep=n,me.depsTail=n):me.deps=me.depsTail=n,$r(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=me.depsTail,n.nextDep=void 0,me.depsTail.nextDep=n,me.depsTail=n,me.deps===n&&(me.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){qs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Gs()}}}function $r(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)$r(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const jn=new WeakMap,Ft=Symbol(""),ks=Symbol(""),vn=Symbol("");function Te(e,t,n){if(ze&&me){let s=jn.get(e);s||jn.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new zs),o.map=s,o.key=n),o.track()}}function dt(e,t,n,s,o,r){const i=jn.get(e);if(!i){gn++;return}const l=a=>{a&&a.trigger()};if(qs(),t==="clear")i.forEach(l);else{const a=J(e),u=a&&Qn(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,m)=>{(m==="length"||m===vn||!at(m)&&m>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(vn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(Ft)),Gt(e)&&l(i.get(ks)));break;case"delete":a||(l(i.get(Ft)),Gt(e)&&l(i.get(ks)));break;case"set":Gt(e)&&l(i.get(Ft));break}}Gs()}function Ji(e,t){const n=jn.get(e);return n&&n.get(t)}function Kt(e){const t=ce(e);return t===e?t:(Te(t,"iterate",vn),je(e)?t:t.map(Je))}function rs(e){return Te(e=ce(e),"iterate",vn),e}function Ct(e,t){return vt(e)?Xt(ht(e)?Je(t):t):Je(t)}const Zi={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,e=>Ct(this,e))},concat(...e){return Kt(this).concat(...e.map(t=>J(t)?Kt(t):t))},entries(){return gs(this,"entries",e=>(e[1]=Ct(this,e[1]),e))},every(e,t){return ut(this,"every",e,t,void 0,arguments)},filter(e,t){return ut(this,"filter",e,t,n=>n.map(s=>Ct(this,s)),arguments)},find(e,t){return ut(this,"find",e,t,n=>Ct(this,n),arguments)},findIndex(e,t){return ut(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ut(this,"findLast",e,t,n=>Ct(this,n),arguments)},findLastIndex(e,t){return ut(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ut(this,"forEach",e,t,void 0,arguments)},includes(...e){return vs(this,"includes",e)},indexOf(...e){return vs(this,"indexOf",e)},join(e){return Kt(this).join(e)},lastIndexOf(...e){return vs(this,"lastIndexOf",e)},map(e,t){return ut(this,"map",e,t,void 0,arguments)},pop(){return en(this,"pop")},push(...e){return en(this,"push",e)},reduce(e,...t){return vo(this,"reduce",e,t)},reduceRight(e,...t){return vo(this,"reduceRight",e,t)},shift(){return en(this,"shift")},some(e,t){return ut(this,"some",e,t,void 0,arguments)},splice(...e){return en(this,"splice",e)},toReversed(){return Kt(this).toReversed()},toSorted(e){return Kt(this).toSorted(e)},toSpliced(...e){return Kt(this).toSpliced(...e)},unshift(...e){return en(this,"unshift",e)},values(){return gs(this,"values",e=>Ct(this,e))}};function gs(e,t,n){const s=rs(e),o=s[t]();return s!==e&&!je(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Qi=Array.prototype;function ut(e,t,n,s,o,r){const i=rs(e),l=i!==e&&!je(e),a=i[t];if(a!==Qi[t]){const f=a.apply(e,r);return l?Je(f):f}let u=n;i!==e&&(l?u=function(f,m){return n.call(this,Ct(e,f),m,e)}:n.length>2&&(u=function(f,m){return n.call(this,f,m,e)}));const c=a.call(i,u,s);return l&&o?o(c):c}function vo(e,t,n,s){const o=rs(e);let r=n;return o!==e&&(je(e)?n.length>3&&(r=function(i,l,a){return n.call(this,i,l,a,e)}):r=function(i,l,a){return n.call(this,i,Ct(e,l),a,e)}),o[t](r,...s)}function vs(e,t,n){const s=ce(e);Te(s,"iterate",vn);const o=s[t](...n);return(o===-1||o===!1)&&ls(n[0])?(n[0]=ce(n[0]),s[t](...n)):o}function en(e,t,n=[]){mt(),qs();const s=ce(e)[t].apply(e,n);return Gs(),gt(),s}const el=Vs("__proto__,__v_isRef,__isVue"),kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function tl(e){at(e)||(e=String(e));const t=ce(this);return Te(t,"has",e),t.hasOwnProperty(e)}class Ar{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?fl:Ir:r?Or:Pr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=J(t);if(!o){let a;if(i&&(a=Zi[n]))return a;if(n==="hasOwnProperty")return tl}const l=Reflect.get(t,n,be(t)?t:s);if((at(n)?kr.has(n):el(n))||(o||Te(t,"get",n),r))return l;if(be(l)){const a=i&&Qn(n)?l:l.value;return o&&pe(a)?Ms(a):a}return pe(l)?o?Ms(l):is(l):l}}class Mr extends Ar{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const i=J(t)&&Qn(n);if(!this._isShallow){const u=vt(r);if(!je(s)&&!vt(s)&&(r=ce(r),s=ce(s)),!i&&be(r)&&!be(s))return u||(r.value=s),!0}const l=i?Number(n)<t.length:ue(t,n),a=Reflect.set(t,n,s,be(t)?t:o);return t===ce(o)&&(l?Tt(s,r)&&dt(t,"set",n,s):dt(t,"add",n,s)),a}deleteProperty(t,n){const s=ue(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&dt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!at(n)||!kr.has(n))&&Te(t,"has",n),s}ownKeys(t){return Te(t,"iterate",J(t)?"length":Ft),Reflect.ownKeys(t)}}class nl extends Ar{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const sl=new Mr,ol=new nl,rl=new Mr(!0);const As=e=>e,kn=e=>Reflect.getPrototypeOf(e);function il(e,t,n){return function(...s){const o=this.__v_raw,r=ce(o),i=Gt(r),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...s),c=n?As:t?Xt:Je;return!t&&Te(r,"iterate",a?ks:Ft),Ce(Object.create(u),{next(){const{value:f,done:m}=u.next();return m?{value:f,done:m}:{value:l?[c(f[0]),c(f[1])]:c(f),done:m}}})}}function An(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ll(e,t){const n={get(o){const r=this.__v_raw,i=ce(r),l=ce(o);e||(Tt(o,l)&&Te(i,"get",o),Te(i,"get",l));const{has:a}=kn(i),u=t?As:e?Xt:Je;if(a.call(i,o))return u(r.get(o));if(a.call(i,l))return u(r.get(l));r!==i&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Te(ce(o),"iterate",Ft),o.size},has(o){const r=this.__v_raw,i=ce(r),l=ce(o);return e||(Tt(o,l)&&Te(i,"has",o),Te(i,"has",l)),o===l?r.has(o):r.has(o)||r.has(l)},forEach(o,r){const i=this,l=i.__v_raw,a=ce(l),u=t?As:e?Xt:Je;return!e&&Te(a,"iterate",Ft),l.forEach((c,f)=>o.call(r,u(c),u(f),i))}};return Ce(n,e?{add:An("add"),set:An("set"),delete:An("delete"),clear:An("clear")}:{add(o){!t&&!je(o)&&!vt(o)&&(o=ce(o));const r=ce(this);return kn(r).has.call(r,o)||(r.add(o),dt(r,"add",o,o)),this},set(o,r){!t&&!je(r)&&!vt(r)&&(r=ce(r));const i=ce(this),{has:l,get:a}=kn(i);let u=l.call(i,o);u||(o=ce(o),u=l.call(i,o));const c=a.call(i,o);return i.set(o,r),u?Tt(r,c)&&dt(i,"set",o,r):dt(i,"add",o,r),this},delete(o){const r=ce(this),{has:i,get:l}=kn(r);let a=i.call(r,o);a||(o=ce(o),a=i.call(r,o)),l&&l.call(r,o);const u=r.delete(o);return a&&dt(r,"delete",o,void 0),u},clear(){const o=ce(this),r=o.size!==0,i=o.clear();return r&&dt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=il(o,e,t)}),n}function Xs(e,t){const n=ll(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ue(n,o)&&o in s?n:s,o,r)}const al={get:Xs(!1,!1)},cl={get:Xs(!1,!0)},ul={get:Xs(!0,!1)};const Pr=new WeakMap,Or=new WeakMap,Ir=new WeakMap,fl=new WeakMap;function dl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pl(e){return e.__v_skip||!Object.isExtensible(e)?0:dl(Di(e))}function is(e){return vt(e)?e:Js(e,!1,sl,al,Pr)}function hl(e){return Js(e,!1,rl,cl,Or)}function Ms(e){return Js(e,!0,ol,ul,Ir)}function Js(e,t,n,s,o){if(!pe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=pl(e);if(r===0)return e;const i=o.get(e);if(i)return i;const l=new Proxy(e,r===2?s:n);return o.set(e,l),l}function ht(e){return vt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function je(e){return!!(e&&e.__v_isShallow)}function ls(e){return e?!!e.__v_raw:!1}function ce(e){const t=e&&e.__v_raw;return t?ce(t):e}function Zs(e){return!ue(e,"__v_skip")&&Object.isExtensible(e)&&pr(e,"__v_skip",!0),e}const Je=e=>pe(e)?is(e):e,Xt=e=>pe(e)?Ms(e):e;function be(e){return e?e.__v_isRef===!0:!1}function V(e){return Rr(e,!1)}function ml(e){return Rr(e,!0)}function Rr(e,t){return be(e)?e:new gl(e,t)}class gl{constructor(t,n){this.dep=new zs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ce(t),this._value=n?t:Je(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||je(t)||vt(t);t=s?t:ce(t),Tt(t,n)&&(this._rawValue=t,this._value=s?t:Je(t),this.dep.trigger())}}function ve(e){return be(e)?e.value:e}const vl={get:(e,t,n)=>t==="__v_raw"?e:ve(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return be(o)&&!be(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Lr(e){return ht(e)?e:new Proxy(e,vl)}function yl(e){const t=J(e)?new Array(e.length):{};for(const n in e)t[n]=wl(e,n);return t}class bl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=ce(t);let o=!0,r=t;if(!J(t)||!Qn(String(n)))do o=!ls(r)||je(r);while(o&&(r=r.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=ve(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&be(this._raw[this._key])){const n=this._object[this._key];if(be(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Ji(this._raw,this._key)}}function wl(e,t,n){return new bl(e,t,n)}class _l{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new zs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return xr(this,!0),!0}get value(){const t=this.dep.track();return Er(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function xl(e,t,n=!1){let s,o;return ee(e)?s=e:(s=e.get,o=e.set),new _l(s,o,n)}const Mn={},Hn=new WeakMap;let Rt;function Cl(e,t=!1,n=Rt){if(n){let s=Hn.get(n);s||Hn.set(n,s=[]),s.push(e)}}function Sl(e,t,n=de){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:a}=n,u=k=>o?k:je(k)||o===!1||o===0?pt(k,1):pt(k);let c,f,m,g,y=!1,v=!1;if(be(e)?(f=()=>e.value,y=je(e)):ht(e)?(f=()=>u(e),y=!0):J(e)?(v=!0,y=e.some(k=>ht(k)||je(k)),f=()=>e.map(k=>{if(be(k))return k.value;if(ht(k))return u(k);if(ee(k))return a?a(k,2):k()})):ee(e)?t?f=a?()=>a(e,2):e:f=()=>{if(m){mt();try{m()}finally{gt()}}const k=Rt;Rt=c;try{return a?a(e,3,[g]):e(g)}finally{Rt=k}}:f=lt,t&&o){const k=f,U=o===!0?1/0:o;f=()=>pt(k(),U)}const T=br(),p=()=>{c.stop(),T&&T.active&&Ws(T.effects,c)};if(r&&t){const k=t;t=(...U)=>{k(...U),p()}}let w=v?new Array(e.length).fill(Mn):Mn;const $=k=>{if(!(!(c.flags&1)||!c.dirty&&!k))if(t){const U=c.run();if(o||y||(v?U.some((te,ie)=>Tt(te,w[ie])):Tt(U,w))){m&&m();const te=Rt;Rt=c;try{const ie=[U,w===Mn?void 0:v&&w[0]===Mn?[]:w,g];w=U,a?a(t,3,ie):t(...ie)}finally{Rt=te}}}else c.run()};return l&&l($),c=new wr(f),c.scheduler=i?()=>i($,!1):$,g=k=>Cl(k,!1,c),m=c.onStop=()=>{const k=Hn.get(c);if(k){if(a)a(k,4);else for(const U of k)U();Hn.delete(c)}},t?s?$(!0):w=c.run():i?i($.bind(null,!0),!0):c.run(),p.pause=c.pause.bind(c),p.resume=c.resume.bind(c),p.stop=p,p}function pt(e,t=1/0,n){if(t<=0||!pe(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,be(e))pt(e.value,t,n);else if(J(e))for(let s=0;s<e.length;s++)pt(e[s],t,n);else if(Zn(e)||Gt(e))e.forEach(s=>{pt(s,t,n)});else if(dr(e)){for(const s in e)pt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&pt(e[s],t,n)}return e}function Cn(e,t,n,s){try{return s?e(...s):e()}catch(o){Sn(o,t,n)}}function Ze(e,t,n,s){if(ee(e)){const o=Cn(e,t,n,s);return o&&ur(o)&&o.catch(r=>{Sn(r,t,n)}),o}if(J(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ze(e[r],t,n,s));return o}}function Sn(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||de;if(t){let l=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const c=l.ec;if(c){for(let f=0;f<c.length;f++)if(c[f](e,a,u)===!1)return}l=l.parent}if(r){mt(),Cn(r,null,10,[e,a,u]),gt();return}}El(e,n,o,s,i)}function El(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const Me=[];let rt=-1;const Yt=[];let St=null,Bt=0;const Dr=Promise.resolve();let Un=null;function Ht(e){const t=Un||Dr;return e?t.then(this?e.bind(this):e):t}function Tl(e){let t=rt+1,n=Me.length;for(;t<n;){const s=t+n>>>1,o=Me[s],r=yn(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function Qs(e){if(!(e.flags&1)){const t=yn(e),n=Me[Me.length-1];!n||!(e.flags&2)&&t>=yn(n)?Me.push(e):Me.splice(Tl(t),0,e),e.flags|=1,Fr()}}function Fr(){Un||(Un=Dr.then(jr))}function $l(e){J(e)?Yt.push(...e):St&&e.id===-1?St.splice(Bt+1,0,e):e.flags&1||(Yt.push(e),e.flags|=1),Fr()}function yo(e,t,n=rt+1){for(;n<Me.length;n++){const s=Me[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Me.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Nr(e){if(Yt.length){const t=[...new Set(Yt)].sort((n,s)=>yn(n)-yn(s));if(Yt.length=0,St){St.push(...t);return}for(St=t,Bt=0;Bt<St.length;Bt++){const n=St[Bt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}St=null,Bt=0}}const yn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function jr(e){try{for(rt=0;rt<Me.length;rt++){const t=Me[rt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Cn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;rt<Me.length;rt++){const t=Me[rt];t&&(t.flags&=-2)}rt=-1,Me.length=0,Nr(),Un=null,(Me.length||Yt.length)&&jr()}}let Fe=null,Hr=null;function Kn(e){const t=Fe;return Fe=e,Hr=e&&e.type.__scopeId||null,t}function Ur(e,t=Fe,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Io(-1);const r=Kn(t);let i;try{i=e(...o)}finally{Kn(r),s._d&&Io(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Ye(e,t){if(Fe===null)return e;const n=fs(Fe),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,i,l,a=de]=t[o];r&&(ee(r)&&(r={mounted:r,updated:r}),r.deep&&pt(i),s.push({dir:r,instance:n,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function Pt(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let i=0;i<o.length;i++){const l=o[i];r&&(l.oldValue=r[i].value);let a=l.dir[s];a&&(mt(),Ze(a,n,8,[e.el,l,e,t]),gt())}}function Kr(e,t){if(Se){let n=Se.provides;const s=Se.parent&&Se.parent.provides;s===n&&(n=Se.provides=Object.create(s)),n[e]=t}}function $t(e,t,n=!1){const s=io();if(s||Nt){let o=Nt?Nt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ee(t)?t.call(s&&s.proxy):t}}function kl(){return!!(io()||Nt)}const Al=Symbol.for("v-scx"),Ml=()=>$t(Al);function Xe(e,t,n){return Vr(e,t,n)}function Vr(e,t,n=de){const{immediate:s,deep:o,flush:r,once:i}=n,l=Ce({},n),a=t&&s||!t&&r!=="post";let u;if(Jt){if(r==="sync"){const g=Ml();u=g.__watcherHandles||(g.__watcherHandles=[])}else if(!a){const g=()=>{};return g.stop=lt,g.resume=lt,g.pause=lt,g}}const c=Se;l.call=(g,y,v)=>Ze(g,c,y,v);let f=!1;r==="post"?l.scheduler=g=>{Ae(g,c&&c.suspense)}:r!=="sync"&&(f=!0,l.scheduler=(g,y)=>{y?g():Qs(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,c&&(g.id=c.uid,g.i=c))};const m=Sl(e,t,l);return Jt&&(u?u.push(m):a&&m()),m}function Pl(e,t,n){const s=this.proxy,o=we(e)?e.includes(".")?Br(s,e):()=>s[e]:e.bind(s,s);let r;ee(t)?r=t:(r=t.handler,n=t);const i=Tn(this),l=Vr(o,r.bind(s),n);return i(),l}function Br(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const Wr=Symbol("_vte"),Ol=e=>e.__isTeleport,un=e=>e&&(e.disabled||e.disabled===""),bo=e=>e&&(e.defer||e.defer===""),wo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,_o=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ps=(e,t)=>{const n=e&&e.to;return we(n)?t?t(n):null:n},qr={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,i,l,a,u){const{mc:c,pc:f,pbc:m,o:{insert:g,querySelector:y,createText:v,createComment:T}}=u,p=un(t.props);let{shapeFlag:w,children:$,dynamicChildren:k}=t;if(e==null){const U=t.el=v(""),te=t.anchor=v("");g(U,n,s),g(te,n,s);const ie=(A,G)=>{w&16&&c($,A,G,o,r,i,l,a)},B=()=>{const A=t.target=Ps(t.props,y),G=Yr(A,t,v,g);A&&(i!=="svg"&&wo(A)?i="svg":i!=="mathml"&&_o(A)&&(i="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(A),p||(ie(A,G),Dn(t,!1)))};p&&(ie(n,te),Dn(t,!0)),bo(t.props)?(t.el.__isMounted=!1,Ae(()=>{B(),delete t.el.__isMounted},r)):B()}else{if(bo(t.props)&&e.el.__isMounted===!1){Ae(()=>{qr.process(e,t,n,s,o,r,i,l,a,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const U=t.anchor=e.anchor,te=t.target=e.target,ie=t.targetAnchor=e.targetAnchor,B=un(e.props),A=B?n:te,G=B?U:ie;if(i==="svg"||wo(te)?i="svg":(i==="mathml"||_o(te))&&(i="mathml"),k?(m(e.dynamicChildren,k,A,o,r,i,l),oo(e,t,!0)):a||f(e,t,A,G,o,r,i,l,!1),p)B?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Pn(t,n,U,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ne=t.target=Ps(t.props,y);ne&&Pn(t,ne,null,u,0)}else B&&Pn(t,te,ie,u,1);Dn(t,p)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:i,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:m}=e;if(f&&(o(u),o(c)),r&&o(a),i&16){const g=r||!un(m);for(let y=0;y<l.length;y++){const v=l[y];s(v,t,n,g,!!v.dynamicChildren)}}},move:Pn,hydrate:Il};function Pn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:i,anchor:l,shapeFlag:a,children:u,props:c}=e,f=r===2;if(f&&s(i,t,n),(!f||un(c))&&a&16)for(let m=0;m<u.length;m++)o(u[m],t,n,2);f&&s(l,t,n)}function Il(e,t,n,s,o,r,{o:{nextSibling:i,parentNode:l,querySelector:a,insert:u,createText:c}},f){function m(v,T,p,w){T.anchor=f(i(v),T,l(v),n,s,o,r),T.targetStart=p,T.targetAnchor=w}const g=t.target=Ps(t.props,a),y=un(t.props);if(g){const v=g._lpa||g.firstChild;if(t.shapeFlag&16)if(y)m(e,t,v,v&&i(v));else{t.anchor=i(e);let T=v;for(;T;){if(T&&T.nodeType===8){if(T.data==="teleport start anchor")t.targetStart=T;else if(T.data==="teleport anchor"){t.targetAnchor=T,g._lpa=t.targetAnchor&&i(t.targetAnchor);break}}T=i(T)}t.targetAnchor||Yr(g,t,c,u),f(v&&i(v),t,g,n,s,o,r)}Dn(t,y)}else y&&t.shapeFlag&16&&m(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Gr=qr;function Dn(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function Yr(e,t,n,s){const o=t.targetStart=n(""),r=t.targetAnchor=n("");return o[Wr]=r,e&&(s(o,e),s(r,e)),r}const Lt=Symbol("_leaveCb"),On=Symbol("_enterCb");function Rl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return At(()=>{e.isMounted=!0}),Ut(()=>{e.isUnmounting=!0}),e}const Ke=[Function,Array],Ll={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ke,onEnter:Ke,onAfterEnter:Ke,onEnterCancelled:Ke,onBeforeLeave:Ke,onLeave:Ke,onAfterLeave:Ke,onLeaveCancelled:Ke,onBeforeAppear:Ke,onAppear:Ke,onAfterAppear:Ke,onAppearCancelled:Ke};function Dl(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Os(e,t,n,s,o){const{appear:r,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:m,onLeave:g,onAfterLeave:y,onLeaveCancelled:v,onBeforeAppear:T,onAppear:p,onAfterAppear:w,onAppearCancelled:$}=t,k=String(e.key),U=Dl(n,e),te=(A,G)=>{A&&Ze(A,s,9,G)},ie=(A,G)=>{const ne=G[1];te(A,G),J(A)?A.every(M=>M.length<=1)&&ne():A.length<=1&&ne()},B={mode:i,persisted:l,beforeEnter(A){let G=a;if(!n.isMounted)if(r)G=T||a;else return;A[Lt]&&A[Lt](!0);const ne=U[k];ne&&Wt(e,ne)&&ne.el[Lt]&&ne.el[Lt](),te(G,[A])},enter(A){let G=u,ne=c,M=f;if(!n.isMounted)if(r)G=p||u,ne=w||c,M=$||f;else return;let F=!1;const L=A[On]=z=>{F||(F=!0,z?te(M,[A]):te(ne,[A]),B.delayedLeave&&B.delayedLeave(),A[On]=void 0)};G?ie(G,[A,L]):L()},leave(A,G){const ne=String(e.key);if(A[On]&&A[On](!0),n.isUnmounting)return G();te(m,[A]);let M=!1;const F=A[Lt]=L=>{M||(M=!0,G(),L?te(v,[A]):te(y,[A]),A[Lt]=void 0,U[ne]===e&&delete U[ne])};U[ne]=e,g?ie(g,[A,F]):F()},clone(A){return Os(A,t,n,s)}};return B}function bn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,bn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function zr(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let i=e[r];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:r);i.type===ye?(i.patchFlag&128&&o++,s=s.concat(zr(i.children,t,l))):(t||i.type!==yt)&&s.push(l!=null?jt(i,{key:l}):i)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function Fl(e,t){return ee(e)?Ce({name:e.name},t,{setup:e}):e}function eo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Vn=new WeakMap;function fn(e,t,n,s,o=!1){if(J(e)){e.forEach((y,v)=>fn(y,t&&(J(t)?t[v]:t),n,s,o));return}if(dn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&fn(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?fs(s.component):s.el,i=o?null:r,{i:l,r:a}=e,u=t&&t.r,c=l.refs===de?l.refs={}:l.refs,f=l.setupState,m=ce(f),g=f===de?cr:y=>ue(m,y);if(u!=null&&u!==a){if(xo(t),we(u))c[u]=null,g(u)&&(f[u]=null);else if(be(u)){u.value=null;const y=t;y.k&&(c[y.k]=null)}}if(ee(a))Cn(a,l,12,[i,c]);else{const y=we(a),v=be(a);if(y||v){const T=()=>{if(e.f){const p=y?g(a)?f[a]:c[a]:a.value;if(o)J(p)&&Ws(p,r);else if(J(p))p.includes(r)||p.push(r);else if(y)c[a]=[r],g(a)&&(f[a]=c[a]);else{const w=[r];a.value=w,e.k&&(c[e.k]=w)}}else y?(c[a]=i,g(a)&&(f[a]=i)):v&&(a.value=i,e.k&&(c[e.k]=i))};if(i){const p=()=>{T(),Vn.delete(e)};p.id=-1,Vn.set(e,p),Ae(p,n)}else xo(e),T()}}}function xo(e){const t=Vn.get(e);t&&(t.flags|=8,Vn.delete(e))}const Co=e=>e.nodeType===8;ss().requestIdleCallback;ss().cancelIdleCallback;function Nl(e,t){if(Co(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(Co(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const dn=e=>!!e.type.__asyncLoader;function jl(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,hydrate:r,timeout:i,suspensible:l=!0,onError:a}=e;let u=null,c,f=0;const m=()=>(f++,u=null,g()),g=()=>{let y;return u||(y=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),a)return new Promise((T,p)=>{a(v,()=>T(m()),()=>p(v),f+1)});throw v}).then(v=>y!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),c=v,v)))};return Fl({name:"AsyncComponentWrapper",__asyncLoader:g,__asyncHydrate(y,v,T){let p=!1;(v.bu||(v.bu=[])).push(()=>p=!0);const w=()=>{p||T()},$=r?()=>{const k=r(w,U=>Nl(y,U));k&&(v.bum||(v.bum=[])).push(k)}:w;c?$():g().then(()=>!v.isUnmounted&&$())},get __asyncResolved(){return c},setup(){const y=Se;if(eo(y),c)return()=>In(c,y);const v=$=>{u=null,Sn($,y,13,!s)};if(l&&y.suspense||Jt)return g().then($=>()=>In($,y)).catch($=>(v($),()=>s?_e(s,{error:$}):null));const T=V(!1),p=V(),w=V(!!o);return o&&setTimeout(()=>{w.value=!1},o),i!=null&&setTimeout(()=>{if(!T.value&&!p.value){const $=new Error(`Async component timed out after ${i}ms.`);v($),p.value=$}},i),g().then(()=>{T.value=!0,y.parent&&to(y.parent.vnode)&&y.parent.update()}).catch($=>{v($),p.value=$}),()=>{if(T.value&&c)return In(c,y);if(p.value&&s)return _e(s,{error:p.value});if(n&&!w.value)return In(n,y)}}})}function In(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=_e(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const to=e=>e.type.__isKeepAlive;function Hl(e,t){Xr(e,"a",t)}function Ul(e,t){Xr(e,"da",t)}function Xr(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(as(t,s,n),n){let o=n.parent;for(;o&&o.parent;)to(o.parent.vnode)&&Kl(s,t,n,o),o=o.parent}}function Kl(e,t,n,s){const o=as(t,e,s,!0);Zr(()=>{Ws(s[t],o)},n)}function as(e,t,n=Se,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{mt();const l=Tn(n),a=Ze(t,n,e,i);return l(),gt(),a});return s?o.unshift(r):o.push(r),r}}const bt=e=>(t,n=Se)=>{(!Jt||e==="sp")&&as(e,(...s)=>t(...s),n)},Vl=bt("bm"),At=bt("m"),Bl=bt("bu"),Jr=bt("u"),Ut=bt("bum"),Zr=bt("um"),Wl=bt("sp"),ql=bt("rtg"),Gl=bt("rtc");function Yl(e,t=Se){as("ec",e,t)}const zl="components";function Xl(e,t){return Zl(zl,e,!0,t)||e}const Jl=Symbol.for("v-ndc");function Zl(e,t,n=!0,s=!1){const o=Fe||Se;if(o){const r=o.type;{const l=Da(r,!1);if(l&&(l===t||l===qe(t)||l===ts(qe(t))))return r}const i=So(o[e]||r[e],t)||So(o.appContext[e],t);return!i&&s?r:i}}function So(e,t){return e&&(e[t]||e[qe(t)]||e[ts(qe(t))])}function En(e,t,n,s){let o;const r=n,i=J(e);if(i||we(e)){const l=i&&ht(e);let a=!1,u=!1;l&&(a=!je(e),u=vt(e),e=rs(e)),o=new Array(e.length);for(let c=0,f=e.length;c<f;c++)o[c]=t(a?u?Xt(Je(e[c])):Je(e[c]):e[c],c,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let l=0;l<e;l++)o[l]=t(l+1,l,void 0,r)}else if(pe(e))if(e[Symbol.iterator])o=Array.from(e,(l,a)=>t(l,a,void 0,r));else{const l=Object.keys(e);o=new Array(l.length);for(let a=0,u=l.length;a<u;a++){const c=l[a];o[a]=t(e[c],c,a,r)}}else o=[];return o}const Is=e=>e?vi(e)?fs(e):Is(e.parent):null,pn=Ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Is(e.parent),$root:e=>Is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ei(e),$forceUpdate:e=>e.f||(e.f=()=>{Qs(e.update)}),$nextTick:e=>e.n||(e.n=Ht.bind(e.proxy)),$watch:e=>Pl.bind(e)}),ys=(e,t)=>e!==de&&!e.__isScriptSetup&&ue(e,t),Ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(ys(s,t))return i[t]=1,s[t];if(o!==de&&ue(o,t))return i[t]=2,o[t];if(ue(r,t))return i[t]=3,r[t];if(n!==de&&ue(n,t))return i[t]=4,n[t];Rs&&(i[t]=0)}}const u=pn[t];let c,f;if(u)return t==="$attrs"&&Te(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==de&&ue(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,ue(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return ys(o,t)?(o[t]=n,!0):s!==de&&ue(s,t)?(s[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:i}},l){let a;return!!(n[l]||e!==de&&l[0]!=="$"&&ue(e,l)||ys(t,l)||ue(r,l)||ue(s,l)||ue(pn,l)||ue(o.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Eo(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function ea(e){const t=ei(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&To(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:m,beforeUpdate:g,updated:y,activated:v,deactivated:T,beforeDestroy:p,beforeUnmount:w,destroyed:$,unmounted:k,render:U,renderTracked:te,renderTriggered:ie,errorCaptured:B,serverPrefetch:A,expose:G,inheritAttrs:ne,components:M,directives:F,filters:L}=t;if(u&&ta(u,s,null),i)for(const W in i){const oe=i[W];ee(oe)&&(s[W]=oe.bind(n))}if(o){const W=o.call(n,n);pe(W)&&(e.data=is(W))}if(Rs=!0,r)for(const W in r){const oe=r[W],He=ee(oe)?oe.bind(n,n):ee(oe.get)?oe.get.bind(n,n):lt,ct=!ee(oe)&&ee(oe.set)?oe.set.bind(n):lt,Ue=Re({get:He,set:ct});Object.defineProperty(s,W,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:R=>Ue.value=R})}if(l)for(const W in l)Qr(l[W],s,n,W);if(a){const W=ee(a)?a.call(n):a;Reflect.ownKeys(W).forEach(oe=>{Kr(oe,W[oe])})}c&&To(c,e,"c");function q(W,oe){J(oe)?oe.forEach(He=>W(He.bind(n))):oe&&W(oe.bind(n))}if(q(Vl,f),q(At,m),q(Bl,g),q(Jr,y),q(Hl,v),q(Ul,T),q(Yl,B),q(Gl,te),q(ql,ie),q(Ut,w),q(Zr,k),q(Wl,A),J(G))if(G.length){const W=e.exposed||(e.exposed={});G.forEach(oe=>{Object.defineProperty(W,oe,{get:()=>n[oe],set:He=>n[oe]=He,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===lt&&(e.render=U),ne!=null&&(e.inheritAttrs=ne),M&&(e.components=M),F&&(e.directives=F),A&&eo(e)}function ta(e,t,n=lt){J(e)&&(e=Ls(e));for(const s in e){const o=e[s];let r;pe(o)?"default"in o?r=$t(o.from||s,o.default,!0):r=$t(o.from||s):r=$t(o),be(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function To(e,t,n){Ze(J(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Qr(e,t,n,s){let o=s.includes(".")?Br(n,s):()=>n[s];if(we(e)){const r=t[e];ee(r)&&Xe(o,r)}else if(ee(e))Xe(o,e.bind(n));else if(pe(e))if(J(e))e.forEach(r=>Qr(r,t,n,s));else{const r=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(r)&&Xe(o,r,e)}}function ei(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let a;return l?a=l:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>Bn(a,u,i,!0)),Bn(a,t,i)),pe(t)&&r.set(t,a),a}function Bn(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Bn(e,r,n,!0),o&&o.forEach(i=>Bn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=na[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const na={data:$o,props:ko,emits:ko,methods:on,computed:on,beforeCreate:ke,created:ke,beforeMount:ke,mounted:ke,beforeUpdate:ke,updated:ke,beforeDestroy:ke,beforeUnmount:ke,destroyed:ke,unmounted:ke,activated:ke,deactivated:ke,errorCaptured:ke,serverPrefetch:ke,components:on,directives:on,watch:oa,provide:$o,inject:sa};function $o(e,t){return t?e?function(){return Ce(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function sa(e,t){return on(Ls(e),Ls(t))}function Ls(e){if(J(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ke(e,t){return e?[...new Set([].concat(e,t))]:t}function on(e,t){return e?Ce(Object.create(null),e,t):t}function ko(e,t){return e?J(e)&&J(t)?[...new Set([...e,...t])]:Ce(Object.create(null),Eo(e),Eo(t??{})):t}function oa(e,t){if(!e)return t;if(!t)return e;const n=Ce(Object.create(null),e);for(const s in t)n[s]=ke(e[s],t[s]);return n}function ti(){return{app:null,config:{isNativeTag:cr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ra=0;function ia(e,t){return function(s,o=null){ee(s)||(s=Ce({},s)),o!=null&&!pe(o)&&(o=null);const r=ti(),i=new WeakSet,l=[];let a=!1;const u=r.app={_uid:ra++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:Na,get config(){return r.config},set config(c){},use(c,...f){return i.has(c)||(c&&ee(c.install)?(i.add(c),c.install(u,...f)):ee(c)&&(i.add(c),c(u,...f))),u},mixin(c){return r.mixins.includes(c)||r.mixins.push(c),u},component(c,f){return f?(r.components[c]=f,u):r.components[c]},directive(c,f){return f?(r.directives[c]=f,u):r.directives[c]},mount(c,f,m){if(!a){const g=u._ceVNode||_e(s,o);return g.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(g,c,m),a=!0,u._container=c,c.__vue_app__=u,fs(g.component)}},onUnmount(c){l.push(c)},unmount(){a&&(Ze(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,f){return r.provides[c]=f,u},runWithContext(c){const f=Nt;Nt=u;try{return c()}finally{Nt=f}}};return u}}let Nt=null;const la=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${qe(t)}Modifiers`]||e[`${kt(t)}Modifiers`];function aa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||de;let o=n;const r=t.startsWith("update:"),i=r&&la(s,t.slice(7));i&&(i.trim&&(o=n.map(c=>we(c)?c.trim():c)),i.number&&(o=n.map(ns)));let l,a=s[l=ps(t)]||s[l=ps(qe(t))];!a&&r&&(a=s[l=ps(kt(t))]),a&&Ze(a,e,6,o);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ze(u,e,6,o)}}const ca=new WeakMap;function ni(e,t,n=!1){const s=n?ca:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ee(e)){const a=u=>{const c=ni(u,t,!0);c&&(l=!0,Ce(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(pe(e)&&s.set(e,null),null):(J(r)?r.forEach(a=>i[a]=null):Ce(i,r),pe(e)&&s.set(e,i),i)}function cs(e,t){return!e||!Jn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,kt(t))||ue(e,t))}function Ao(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:m,setupState:g,ctx:y,inheritAttrs:v}=e,T=Kn(e);let p,w;try{if(n.shapeFlag&4){const k=o||s,U=k;p=it(u.call(U,k,c,f,g,m,y)),w=l}else{const k=t;p=it(k.length>1?k(f,{attrs:l,slots:i,emit:a}):k(f,null)),w=t.props?l:ua(l)}}catch(k){hn.length=0,Sn(k,e,1),p=_e(yt)}let $=p;if(w&&v!==!1){const k=Object.keys(w),{shapeFlag:U}=$;k.length&&U&7&&(r&&k.some(Bs)&&(w=fa(w,r)),$=jt($,w,!1,!0))}return n.dirs&&($=jt($,null,!1,!0),$.dirs=$.dirs?$.dirs.concat(n.dirs):n.dirs),n.transition&&bn($,n.transition),p=$,Kn(T),p}const ua=e=>{let t;for(const n in e)(n==="class"||n==="style"||Jn(n))&&((t||(t={}))[n]=e[n]);return t},fa=(e,t)=>{const n={};for(const s in e)(!Bs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function da(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:a}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Mo(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const m=c[f];if(i[m]!==s[m]&&!cs(u,m))return!0}}}else return(o||l)&&(!l||!l.$stable)?!0:s===i?!1:s?i?Mo(s,i,u):!0:!!i;return!1}function Mo(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(t[r]!==e[r]&&!cs(n,r))return!0}return!1}function pa({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const si={},oi=()=>Object.create(si),ri=e=>Object.getPrototypeOf(e)===si;function ha(e,t,n,s=!1){const o={},r=oi();e.propsDefaults=Object.create(null),ii(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:hl(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function ma(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=ce(o),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f<c.length;f++){let m=c[f];if(cs(e.emitsOptions,m))continue;const g=t[m];if(a)if(ue(r,m))g!==r[m]&&(r[m]=g,u=!0);else{const y=qe(m);o[y]=Ds(a,l,y,g,e,!1)}else g!==r[m]&&(r[m]=g,u=!0)}}}else{ii(e,t,o,r)&&(u=!0);let c;for(const f in l)(!t||!ue(t,f)&&((c=kt(f))===f||!ue(t,c)))&&(a?n&&(n[f]!==void 0||n[c]!==void 0)&&(o[f]=Ds(a,l,f,void 0,e,!0)):delete o[f]);if(r!==l)for(const f in r)(!t||!ue(t,f))&&(delete r[f],u=!0)}u&&dt(e.attrs,"set","")}function ii(e,t,n,s){const[o,r]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(ln(a))continue;const u=t[a];let c;o&&ue(o,c=qe(a))?!r||!r.includes(c)?n[c]=u:(l||(l={}))[c]=u:cs(e.emitsOptions,a)||(!(a in s)||u!==s[a])&&(s[a]=u,i=!0)}if(r){const a=ce(n),u=l||de;for(let c=0;c<r.length;c++){const f=r[c];n[f]=Ds(o,a,f,u[f],e,!ue(u,f))}}return i}function Ds(e,t,n,s,o,r){const i=e[n];if(i!=null){const l=ue(i,"default");if(l&&s===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&ee(a)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const c=Tn(o);s=u[n]=a.call(null,t),c()}}else s=a;o.ce&&o.ce._setProp(n,s)}i[0]&&(r&&!l?s=!1:i[1]&&(s===""||s===kt(n))&&(s=!0))}return s}const ga=new WeakMap;function li(e,t,n=!1){const s=n?ga:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,i={},l=[];let a=!1;if(!ee(e)){const c=f=>{a=!0;const[m,g]=li(f,t,!0);Ce(i,m),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!a)return pe(e)&&s.set(e,qt),qt;if(J(r))for(let c=0;c<r.length;c++){const f=qe(r[c]);Po(f)&&(i[f]=de)}else if(r)for(const c in r){const f=qe(c);if(Po(f)){const m=r[c],g=i[f]=J(m)||ee(m)?{type:m}:Ce({},m),y=g.type;let v=!1,T=!0;if(J(y))for(let p=0;p<y.length;++p){const w=y[p],$=ee(w)&&w.name;if($==="Boolean"){v=!0;break}else $==="String"&&(T=!1)}else v=ee(y)&&y.name==="Boolean";g[0]=v,g[1]=T,(v||ue(g,"default"))&&l.push(f)}}const u=[i,l];return pe(e)&&s.set(e,u),u}function Po(e){return e[0]!=="$"&&!ln(e)}const no=e=>e==="_"||e==="_ctx"||e==="$stable",so=e=>J(e)?e.map(it):[it(e)],va=(e,t,n)=>{if(t._n)return t;const s=Ur((...o)=>so(t(...o)),n);return s._c=!1,s},ai=(e,t,n)=>{const s=e._ctx;for(const o in e){if(no(o))continue;const r=e[o];if(ee(r))t[o]=va(o,r,s);else if(r!=null){const i=so(r);t[o]=()=>i}}},ci=(e,t)=>{const n=so(t);e.slots.default=()=>n},ui=(e,t,n)=>{for(const s in t)(n||!no(s))&&(e[s]=t[s])},ya=(e,t,n)=>{const s=e.slots=oi();if(e.vnode.shapeFlag&32){const o=t._;o?(ui(s,t,n),n&&pr(s,"_",o,!0)):ai(t,s)}else t&&ci(e,t)},ba=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=de;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:ui(o,t,n):(r=!t.$stable,ai(t,o)),i=t}else t&&(ci(e,t),i={default:1});if(r)for(const l in o)!no(l)&&i[l]==null&&delete o[l]},Ae=Sa;function wa(e){return _a(e)}function _a(e,t){const n=ss();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:m,setScopeId:g=lt,insertStaticContent:y}=e,v=(d,h,b,S=null,x=null,C=null,D=void 0,O=null,P=!!h.dynamicChildren)=>{if(d===h)return;d&&!Wt(d,h)&&(S=X(d),R(d,x,C,!0),d=null),h.patchFlag===-2&&(P=!1,h.dynamicChildren=null);const{type:E,ref:Z,shapeFlag:N}=h;switch(E){case us:T(d,h,b,S);break;case yt:p(d,h,b,S);break;case ws:d==null&&w(h,b,S,D);break;case ye:M(d,h,b,S,x,C,D,O,P);break;default:N&1?U(d,h,b,S,x,C,D,O,P):N&6?F(d,h,b,S,x,C,D,O,P):(N&64||N&128)&&E.process(d,h,b,S,x,C,D,O,P,Le)}Z!=null&&x?fn(Z,d&&d.ref,C,h||d,!h):Z==null&&d&&d.ref!=null&&fn(d.ref,null,C,d,!0)},T=(d,h,b,S)=>{if(d==null)s(h.el=l(h.children),b,S);else{const x=h.el=d.el;h.children!==d.children&&u(x,h.children)}},p=(d,h,b,S)=>{d==null?s(h.el=a(h.children||""),b,S):h.el=d.el},w=(d,h,b,S)=>{[d.el,d.anchor]=y(d.children,h,b,S,d.el,d.anchor)},$=({el:d,anchor:h},b,S)=>{let x;for(;d&&d!==h;)x=m(d),s(d,b,S),d=x;s(h,b,S)},k=({el:d,anchor:h})=>{let b;for(;d&&d!==h;)b=m(d),o(d),d=b;o(h)},U=(d,h,b,S,x,C,D,O,P)=>{if(h.type==="svg"?D="svg":h.type==="math"&&(D="mathml"),d==null)te(h,b,S,x,C,D,O,P);else{const E=d.el&&d.el._isVueCE?d.el:null;try{E&&E._beginPatch(),A(d,h,x,C,D,O,P)}finally{E&&E._endPatch()}}},te=(d,h,b,S,x,C,D,O)=>{let P,E;const{props:Z,shapeFlag:N,transition:Y,dirs:Q}=d;if(P=d.el=i(d.type,C,Z&&Z.is,Z),N&8?c(P,d.children):N&16&&B(d.children,P,null,S,x,bs(d,C),D,O),Q&&Pt(d,null,S,"created"),ie(P,d,d.scopeId,D,S),Z){for(const he in Z)he!=="value"&&!ln(he)&&r(P,he,null,Z[he],C,S);"value"in Z&&r(P,"value",null,Z.value,C),(E=Z.onVnodeBeforeMount)&&st(E,S,d)}Q&&Pt(d,null,S,"beforeMount");const le=xa(x,Y);le&&Y.beforeEnter(P),s(P,h,b),((E=Z&&Z.onVnodeMounted)||le||Q)&&Ae(()=>{E&&st(E,S,d),le&&Y.enter(P),Q&&Pt(d,null,S,"mounted")},x)},ie=(d,h,b,S,x)=>{if(b&&g(d,b),S)for(let C=0;C<S.length;C++)g(d,S[C]);if(x){let C=x.subTree;if(h===C||pi(C.type)&&(C.ssContent===h||C.ssFallback===h)){const D=x.vnode;ie(d,D,D.scopeId,D.slotScopeIds,x.parent)}}},B=(d,h,b,S,x,C,D,O,P=0)=>{for(let E=P;E<d.length;E++){const Z=d[E]=O?Et(d[E]):it(d[E]);v(null,Z,h,b,S,x,C,D,O)}},A=(d,h,b,S,x,C,D)=>{const O=h.el=d.el;let{patchFlag:P,dynamicChildren:E,dirs:Z}=h;P|=d.patchFlag&16;const N=d.props||de,Y=h.props||de;let Q;if(b&&Ot(b,!1),(Q=Y.onVnodeBeforeUpdate)&&st(Q,b,h,d),Z&&Pt(h,d,b,"beforeUpdate"),b&&Ot(b,!0),(N.innerHTML&&Y.innerHTML==null||N.textContent&&Y.textContent==null)&&c(O,""),E?G(d.dynamicChildren,E,O,b,S,bs(h,x),C):D||oe(d,h,O,null,b,S,bs(h,x),C,!1),P>0){if(P&16)ne(O,N,Y,b,x);else if(P&2&&N.class!==Y.class&&r(O,"class",null,Y.class,x),P&4&&r(O,"style",N.style,Y.style,x),P&8){const le=h.dynamicProps;for(let he=0;he<le.length;he++){const fe=le[he],Oe=N[fe],Ie=Y[fe];(Ie!==Oe||fe==="value")&&r(O,fe,Oe,Ie,x,b)}}P&1&&d.children!==h.children&&c(O,h.children)}else!D&&E==null&&ne(O,N,Y,b,x);((Q=Y.onVnodeUpdated)||Z)&&Ae(()=>{Q&&st(Q,b,h,d),Z&&Pt(h,d,b,"updated")},S)},G=(d,h,b,S,x,C,D)=>{for(let O=0;O<h.length;O++){const P=d[O],E=h[O],Z=P.el&&(P.type===ye||!Wt(P,E)||P.shapeFlag&198)?f(P.el):b;v(P,E,Z,null,S,x,C,D,!0)}},ne=(d,h,b,S,x)=>{if(h!==b){if(h!==de)for(const C in h)!ln(C)&&!(C in b)&&r(d,C,h[C],null,x,S);for(const C in b){if(ln(C))continue;const D=b[C],O=h[C];D!==O&&C!=="value"&&r(d,C,O,D,x,S)}"value"in b&&r(d,"value",h.value,b.value,x)}},M=(d,h,b,S,x,C,D,O,P)=>{const E=h.el=d?d.el:l(""),Z=h.anchor=d?d.anchor:l("");let{patchFlag:N,dynamicChildren:Y,slotScopeIds:Q}=h;Q&&(O=O?O.concat(Q):Q),d==null?(s(E,b,S),s(Z,b,S),B(h.children||[],b,Z,x,C,D,O,P)):N>0&&N&64&&Y&&d.dynamicChildren&&d.dynamicChildren.length===Y.length?(G(d.dynamicChildren,Y,b,x,C,D,O),(h.key!=null||x&&h===x.subTree)&&oo(d,h,!0)):oe(d,h,b,Z,x,C,D,O,P)},F=(d,h,b,S,x,C,D,O,P)=>{h.slotScopeIds=O,d==null?h.shapeFlag&512?x.ctx.activate(h,b,S,D,P):L(h,b,S,x,C,D,P):z(d,h,P)},L=(d,h,b,S,x,C,D)=>{const O=d.component=Pa(d,S,x);if(to(d)&&(O.ctx.renderer=Le),Oa(O,!1,D),O.asyncDep){if(x&&x.registerDep(O,q,D),!d.el){const P=O.subTree=_e(yt);p(null,P,h,b),d.placeholder=P.el}}else q(O,d,h,b,x,C,D)},z=(d,h,b)=>{const S=h.component=d.component;if(da(d,h,b))if(S.asyncDep&&!S.asyncResolved){W(S,h,b);return}else S.next=h,S.update();else h.el=d.el,S.vnode=h},q=(d,h,b,S,x,C,D)=>{const O=()=>{if(d.isMounted){let{next:N,bu:Y,u:Q,parent:le,vnode:he}=d;{const tt=fi(d);if(tt){N&&(N.el=he.el,W(d,N,D)),tt.asyncDep.then(()=>{d.isUnmounted||O()});return}}let fe=N,Oe;Ot(d,!1),N?(N.el=he.el,W(d,N,D)):N=he,Y&&Ln(Y),(Oe=N.props&&N.props.onVnodeBeforeUpdate)&&st(Oe,le,N,he),Ot(d,!0);const Ie=Ao(d),et=d.subTree;d.subTree=Ie,v(et,Ie,f(et.el),X(et),d,x,C),N.el=Ie.el,fe===null&&pa(d,Ie.el),Q&&Ae(Q,x),(Oe=N.props&&N.props.onVnodeUpdated)&&Ae(()=>st(Oe,le,N,he),x)}else{let N;const{el:Y,props:Q}=h,{bm:le,m:he,parent:fe,root:Oe,type:Ie}=d,et=dn(h);Ot(d,!1),le&&Ln(le),!et&&(N=Q&&Q.onVnodeBeforeMount)&&st(N,fe,h),Ot(d,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Ie);const tt=d.subTree=Ao(d);v(null,tt,b,S,d,x,C),h.el=tt.el}if(he&&Ae(he,x),!et&&(N=Q&&Q.onVnodeMounted)){const tt=h;Ae(()=>st(N,fe,tt),x)}(h.shapeFlag&256||fe&&dn(fe.vnode)&&fe.vnode.shapeFlag&256)&&d.a&&Ae(d.a,x),d.isMounted=!0,h=b=S=null}};d.scope.on();const P=d.effect=new wr(O);d.scope.off();const E=d.update=P.run.bind(P),Z=d.job=P.runIfDirty.bind(P);Z.i=d,Z.id=d.uid,P.scheduler=()=>Qs(Z),Ot(d,!0),E()},W=(d,h,b)=>{h.component=d;const S=d.vnode.props;d.vnode=h,d.next=null,ma(d,h.props,S,b),ba(d,h.children,b),mt(),yo(d),gt()},oe=(d,h,b,S,x,C,D,O,P=!1)=>{const E=d&&d.children,Z=d?d.shapeFlag:0,N=h.children,{patchFlag:Y,shapeFlag:Q}=h;if(Y>0){if(Y&128){ct(E,N,b,S,x,C,D,O,P);return}else if(Y&256){He(E,N,b,S,x,C,D,O,P);return}}Q&8?(Z&16&&Pe(E,x,C),N!==E&&c(b,N)):Z&16?Q&16?ct(E,N,b,S,x,C,D,O,P):Pe(E,x,C,!0):(Z&8&&c(b,""),Q&16&&B(N,b,S,x,C,D,O,P))},He=(d,h,b,S,x,C,D,O,P)=>{d=d||qt,h=h||qt;const E=d.length,Z=h.length,N=Math.min(E,Z);let Y;for(Y=0;Y<N;Y++){const Q=h[Y]=P?Et(h[Y]):it(h[Y]);v(d[Y],Q,b,null,x,C,D,O,P)}E>Z?Pe(d,x,C,!0,!1,N):B(h,b,S,x,C,D,O,P,N)},ct=(d,h,b,S,x,C,D,O,P)=>{let E=0;const Z=h.length;let N=d.length-1,Y=Z-1;for(;E<=N&&E<=Y;){const Q=d[E],le=h[E]=P?Et(h[E]):it(h[E]);if(Wt(Q,le))v(Q,le,b,null,x,C,D,O,P);else break;E++}for(;E<=N&&E<=Y;){const Q=d[N],le=h[Y]=P?Et(h[Y]):it(h[Y]);if(Wt(Q,le))v(Q,le,b,null,x,C,D,O,P);else break;N--,Y--}if(E>N){if(E<=Y){const Q=Y+1,le=Q<Z?h[Q].el:S;for(;E<=Y;)v(null,h[E]=P?Et(h[E]):it(h[E]),b,le,x,C,D,O,P),E++}}else if(E>Y)for(;E<=N;)R(d[E],x,C,!0),E++;else{const Q=E,le=E,he=new Map;for(E=le;E<=Y;E++){const De=h[E]=P?Et(h[E]):it(h[E]);De.key!=null&&he.set(De.key,E)}let fe,Oe=0;const Ie=Y-le+1;let et=!1,tt=0;const Qt=new Array(Ie);for(E=0;E<Ie;E++)Qt[E]=0;for(E=Q;E<=N;E++){const De=d[E];if(Oe>=Ie){R(De,x,C,!0);continue}let nt;if(De.key!=null)nt=he.get(De.key);else for(fe=le;fe<=Y;fe++)if(Qt[fe-le]===0&&Wt(De,h[fe])){nt=fe;break}nt===void 0?R(De,x,C,!0):(Qt[nt-le]=E+1,nt>=tt?tt=nt:et=!0,v(De,h[nt],b,null,x,C,D,O,P),Oe++)}const uo=et?Ca(Qt):qt;for(fe=uo.length-1,E=Ie-1;E>=0;E--){const De=le+E,nt=h[De],fo=h[De+1],po=De+1<Z?fo.el||di(fo):S;Qt[E]===0?v(null,nt,b,po,x,C,D,O,P):et&&(fe<0||E!==uo[fe]?Ue(nt,b,po,2):fe--)}}},Ue=(d,h,b,S,x=null)=>{const{el:C,type:D,transition:O,children:P,shapeFlag:E}=d;if(E&6){Ue(d.component.subTree,h,b,S);return}if(E&128){d.suspense.move(h,b,S);return}if(E&64){D.move(d,h,b,Le);return}if(D===ye){s(C,h,b);for(let N=0;N<P.length;N++)Ue(P[N],h,b,S);s(d.anchor,h,b);return}if(D===ws){$(d,h,b);return}if(S!==2&&E&1&&O)if(S===0)O.beforeEnter(C),s(C,h,b),Ae(()=>O.enter(C),x);else{const{leave:N,delayLeave:Y,afterLeave:Q}=O,le=()=>{d.ctx.isUnmounted?o(C):s(C,h,b)},he=()=>{C._isLeaving&&C[Lt](!0),N(C,()=>{le(),Q&&Q()})};Y?Y(C,le,he):he()}else s(C,h,b)},R=(d,h,b,S=!1,x=!1)=>{const{type:C,props:D,ref:O,children:P,dynamicChildren:E,shapeFlag:Z,patchFlag:N,dirs:Y,cacheIndex:Q}=d;if(N===-2&&(x=!1),O!=null&&(mt(),fn(O,null,b,d,!0),gt()),Q!=null&&(h.renderCache[Q]=void 0),Z&256){h.ctx.deactivate(d);return}const le=Z&1&&Y,he=!dn(d);let fe;if(he&&(fe=D&&D.onVnodeBeforeUnmount)&&st(fe,h,d),Z&6)ge(d.component,b,S);else{if(Z&128){d.suspense.unmount(b,S);return}le&&Pt(d,null,h,"beforeUnmount"),Z&64?d.type.remove(d,h,b,Le,S):E&&!E.hasOnce&&(C!==ye||N>0&&N&64)?Pe(E,h,b,!1,!0):(C===ye&&N&384||!x&&Z&16)&&Pe(P,h,b),S&&j(d)}(he&&(fe=D&&D.onVnodeUnmounted)||le)&&Ae(()=>{fe&&st(fe,h,d),le&&Pt(d,null,h,"unmounted")},b)},j=d=>{const{type:h,el:b,anchor:S,transition:x}=d;if(h===ye){re(b,S);return}if(h===ws){k(d);return}const C=()=>{o(b),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(d.shapeFlag&1&&x&&!x.persisted){const{leave:D,delayLeave:O}=x,P=()=>D(b,C);O?O(d.el,C,P):P()}else C()},re=(d,h)=>{let b;for(;d!==h;)b=m(d),o(d),d=b;o(h)},ge=(d,h,b)=>{const{bum:S,scope:x,job:C,subTree:D,um:O,m:P,a:E}=d;Oo(P),Oo(E),S&&Ln(S),x.stop(),C&&(C.flags|=8,R(D,d,h,b)),O&&Ae(O,h),Ae(()=>{d.isUnmounted=!0},h)},Pe=(d,h,b,S=!1,x=!1,C=0)=>{for(let D=C;D<d.length;D++)R(d[D],h,b,S,x)},X=d=>{if(d.shapeFlag&6)return X(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=m(d.anchor||d.el),b=h&&h[Wr];return b?m(b):h};let H=!1;const xe=(d,h,b)=>{let S;d==null?h._vnode&&(R(h._vnode,null,null,!0),S=h._vnode.component):v(h._vnode||null,d,h,null,null,null,b),h._vnode=d,H||(H=!0,yo(S),Nr(),H=!1)},Le={p:v,um:R,m:Ue,r:j,mt:L,mc:B,pc:oe,pbc:G,n:X,o:e};return{render:xe,hydrate:void 0,createApp:ia(xe)}}function bs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Ot({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function xa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function oo(e,t,n=!1){const s=e.children,o=t.children;if(J(s)&&J(o))for(let r=0;r<s.length;r++){const i=s[r];let l=o[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=o[r]=Et(o[r]),l.el=i.el),!n&&l.patchFlag!==-2&&oo(i,l)),l.type===us&&(l.patchFlag!==-1?l.el=i.el:l.__elIndex=r+(e.type===ye?1:0)),l.type===yt&&!l.el&&(l.el=i.el)}}function Ca(e){const t=e.slice(),n=[0];let s,o,r,i,l;const a=e.length;for(s=0;s<a;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,i=n.length-1;r<i;)l=r+i>>1,e[n[l]]<u?r=l+1:i=l;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}function fi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fi(t)}function Oo(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function di(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?di(t.subTree):null}const pi=e=>e.__isSuspense;function Sa(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):$l(e)}const ye=Symbol.for("v-fgt"),us=Symbol.for("v-txt"),yt=Symbol.for("v-cmt"),ws=Symbol.for("v-stc"),hn=[];let Ne=null;function I(e=!1){hn.push(Ne=e?null:[])}function Ea(){hn.pop(),Ne=hn[hn.length-1]||null}let wn=1;function Io(e,t=!1){wn+=e,e<0&&Ne&&t&&(Ne.hasOnce=!0)}function hi(e){return e.dynamicChildren=wn>0?Ne||qt:null,Ea(),wn>0&&Ne&&Ne.push(e),e}function K(e,t,n,s,o,r){return hi(_(e,t,n,s,o,r,!0))}function Ve(e,t,n,s,o){return hi(_e(e,t,n,s,o,!0))}function mi(e){return e?e.__v_isVNode===!0:!1}function Wt(e,t){return e.type===t.type&&e.key===t.key}const gi=({key:e})=>e??null,Fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||be(e)||ee(e)?{i:Fe,r:e,k:t,f:!!n}:e:null);function _(e,t=null,n=null,s=0,o=null,r=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gi(t),ref:t&&Fn(t),scopeId:Hr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Fe};return l?(ro(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=we(n)?8:16),wn>0&&!i&&Ne&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Ne.push(a),a}const _e=Ta;function Ta(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Jl)&&(e=yt),mi(e)){const l=jt(e,t,!0);return n&&ro(l,n),wn>0&&!r&&Ne&&(l.shapeFlag&6?Ne[Ne.indexOf(e)]=l:Ne.push(l)),l.patchFlag=-2,l}if(Fa(e)&&(e=e.__vccOpts),t){t=$a(t);let{class:l,style:a}=t;l&&!we(l)&&(t.class=We(l)),pe(a)&&(ls(a)&&!J(a)&&(a=Ce({},a)),t.style=xn(a))}const i=we(e)?1:pi(e)?128:Ol(e)?64:pe(e)?4:ee(e)?2:0;return _(e,t,n,s,o,i,r,!0)}function $a(e){return e?ls(e)||ri(e)?Ce({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:a}=e,u=t?ka(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&gi(u),ref:t&&t.ref?n&&r?J(r)?r.concat(Fn(t)):[r,Fn(t)]:Fn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&bn(c,a.clone(c)),c}function Be(e=" ",t=0){return _e(us,null,e,t)}function ae(e="",t=!1){return t?(I(),Ve(yt,null,e)):_e(yt,null,e)}function it(e){return e==null||typeof e=="boolean"?_e(yt):J(e)?_e(ye,null,e.slice()):mi(e)?Et(e):_e(us,null,String(e))}function Et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function ro(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),ro(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!ri(t)?t._ctx=Fe:o===3&&Fe&&(Fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:Fe},n=32):(t=String(t),s&64?(n=16,t=[Be(t)]):n=8);e.children=t,e.shapeFlag|=n}function ka(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=We([t.class,s.class]));else if(o==="style")t.style=xn([t.style,s.style]);else if(Jn(o)){const r=t[o],i=s[o];i&&r!==i&&!(J(r)&&r.includes(i))&&(t[o]=r?[].concat(r,i):i)}else o!==""&&(t[o]=s[o])}return t}function st(e,t,n,s=null){Ze(e,t,7,[n,s])}const Aa=ti();let Ma=0;function Pa(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||Aa,r={uid:Ma++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new vr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:li(s,o),emitsOptions:ni(s,o),emit:null,emitted:null,propsDefaults:de,inheritAttrs:s.inheritAttrs,ctx:de,data:de,props:de,attrs:de,slots:de,refs:de,setupState:de,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=aa.bind(null,r),e.ce&&e.ce(r),r}let Se=null;const io=()=>Se||Fe;let Wn,Fs;{const e=ss(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};Wn=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Fs=t("__VUE_SSR_SETTERS__",n=>Jt=n)}const Tn=e=>{const t=Se;return Wn(e),e.scope.on(),()=>{e.scope.off(),Wn(t)}},Ro=()=>{Se&&Se.scope.off(),Wn(null)};function vi(e){return e.vnode.shapeFlag&4}let Jt=!1;function Oa(e,t=!1,n=!1){t&&Fs(t);const{props:s,children:o}=e.vnode,r=vi(e);ha(e,s,r,t),ya(e,o,n||t);const i=r?Ia(e,t):void 0;return t&&Fs(!1),i}function Ia(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ql);const{setup:s}=n;if(s){mt();const o=e.setupContext=s.length>1?La(e):null,r=Tn(e),i=Cn(s,e,0,[e.props,o]),l=ur(i);if(gt(),r(),(l||e.sp)&&!dn(e)&&eo(e),l){if(i.then(Ro,Ro),t)return i.then(a=>{Lo(e,a)}).catch(a=>{Sn(a,e,0)});e.asyncDep=i}else Lo(e,i)}else yi(e)}function Lo(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:pe(t)&&(e.setupState=Lr(t)),yi(e)}function yi(e,t,n){const s=e.type;e.render||(e.render=s.render||lt);{const o=Tn(e);mt();try{ea(e)}finally{gt(),o()}}}const Ra={get(e,t){return Te(e,"get",""),e[t]}};function La(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ra),slots:e.slots,emit:e.emit,expose:t}}function fs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Lr(Zs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in pn)return pn[n](e)},has(t,n){return n in t||n in pn}})):e.proxy}function Da(e,t=!0){return ee(e)?e.displayName||e.name:e.name||t&&e.__name}function Fa(e){return ee(e)&&"__vccOpts"in e}const Re=(e,t)=>xl(e,t,Jt),Na="3.5.27";let Ns;const Do=typeof window<"u"&&window.trustedTypes;if(Do)try{Ns=Do.createPolicy("vue",{createHTML:e=>e})}catch{}const bi=Ns?e=>Ns.createHTML(e):e=>e,ja="http://www.w3.org/2000/svg",Ha="http://www.w3.org/1998/Math/MathML",ft=typeof document<"u"?document:null,Fo=ft&&ft.createElement("template"),Ua={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?ft.createElementNS(ja,e):t==="mathml"?ft.createElementNS(Ha,e):n?ft.createElement(e,{is:n}):ft.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>ft.createTextNode(e),createComment:e=>ft.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ft.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{Fo.innerHTML=bi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=Fo.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},wt="transition",tn="animation",Zt=Symbol("_vtc"),wi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ka=Ce({},Ll,wi),It=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},No=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function Va(e){const t={};for(const M in e)M in wi||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,y=Ba(o),v=y&&y[0],T=y&&y[1],{onBeforeEnter:p,onEnter:w,onEnterCancelled:$,onLeave:k,onLeaveCancelled:U,onBeforeAppear:te=p,onAppear:ie=w,onAppearCancelled:B=$}=t,A=(M,F,L,z)=>{M._enterCancelled=z,_t(M,F?c:l),_t(M,F?u:i),L&&L()},G=(M,F)=>{M._isLeaving=!1,_t(M,f),_t(M,g),_t(M,m),F&&F()},ne=M=>(F,L)=>{const z=M?ie:w,q=()=>A(F,M,L);It(z,[F,q]),jo(()=>{_t(F,M?a:r),ot(F,M?c:l),No(z)||Ho(F,s,v,q)})};return Ce(t,{onBeforeEnter(M){It(p,[M]),ot(M,r),ot(M,i)},onBeforeAppear(M){It(te,[M]),ot(M,a),ot(M,u)},onEnter:ne(!1),onAppear:ne(!0),onLeave(M,F){M._isLeaving=!0;const L=()=>G(M,F);ot(M,f),M._enterCancelled?(ot(M,m),js(M)):(js(M),ot(M,m)),jo(()=>{M._isLeaving&&(_t(M,f),ot(M,g),No(k)||Ho(M,s,T,L))}),It(k,[M,L])},onEnterCancelled(M){A(M,!1,void 0,!0),It($,[M])},onAppearCancelled(M){A(M,!0,void 0,!0),It(B,[M])},onLeaveCancelled(M){G(M),It(U,[M])}})}function Ba(e){if(e==null)return null;if(pe(e))return[_s(e.enter),_s(e.leave)];{const t=_s(e);return[t,t]}}function _s(e){return ji(e)}function ot(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Zt]||(e[Zt]=new Set)).add(t)}function _t(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Zt];n&&(n.delete(t),n.size||(e[Zt]=void 0))}function jo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Wa=0;function Ho(e,t,n,s){const o=e._endId=++Wa,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:i,timeout:l,propCount:a}=_i(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,m),r()},m=g=>{g.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,m)}function _i(e,t){const n=window.getComputedStyle(e),s=y=>(n[y]||"").split(", "),o=s(`${wt}Delay`),r=s(`${wt}Duration`),i=Uo(o,r),l=s(`${tn}Delay`),a=s(`${tn}Duration`),u=Uo(l,a);let c=null,f=0,m=0;t===wt?i>0&&(c=wt,f=i,m=r.length):t===tn?u>0&&(c=tn,f=u,m=a.length):(f=Math.max(i,u),c=f>0?i>u?wt:tn:null,m=c?c===wt?r.length:a.length:0);const g=c===wt&&/\b(?:transform|all)(?:,|$)/.test(s(`${wt}Property`).toString());return{type:c,timeout:f,propCount:m,hasTransform:g}}function Uo(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>Ko(n)+Ko(e[s])))}function Ko(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function js(e){return(e?e.ownerDocument:document).body.offsetHeight}function qa(e,t,n){const s=e[Zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const qn=Symbol("_vod"),xi=Symbol("_vsh"),rn={name:"show",beforeMount(e,{value:t},{transition:n}){e[qn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):nn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),nn(e,!0),s.enter(e)):s.leave(e,()=>{nn(e,!1)}):nn(e,t))},beforeUnmount(e,{value:t}){nn(e,t)}};function nn(e,t){e.style.display=t?e[qn]:"none",e[xi]=!t}const Ga=Symbol(""),Ya=/(?:^|;)\s*display\s*:/;function za(e,t,n){const s=e.style,o=we(n);let r=!1;if(n&&!o){if(t)if(we(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Nn(s,l,"")}else for(const i in t)n[i]==null&&Nn(s,i,"");for(const i in n)i==="display"&&(r=!0),Nn(s,i,n[i])}else if(o){if(t!==n){const i=s[Ga];i&&(n+=";"+i),s.cssText=n,r=Ya.test(n)}}else t&&e.removeAttribute("style");qn in e&&(e[qn]=r?s.display:"",e[xi]&&(s.display="none"))}const Vo=/\s*!important$/;function Nn(e,t,n){if(J(n))n.forEach(s=>Nn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Xa(e,t);Vo.test(n)?e.setProperty(kt(s),n.replace(Vo,""),"important"):e[s]=n}}const Bo=["Webkit","Moz","ms"],xs={};function Xa(e,t){const n=xs[t];if(n)return n;let s=qe(t);if(s!=="filter"&&s in e)return xs[t]=s;s=ts(s);for(let o=0;o<Bo.length;o++){const r=Bo[o]+s;if(r in e)return xs[t]=r}return t}const Wo="http://www.w3.org/1999/xlink";function qo(e,t,n,s,o,r=Wi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Wo,t.slice(6,t.length)):e.setAttributeNS(Wo,t,n):n==null||r&&!hr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":at(n)?String(n):n)}function Go(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?bi(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?e.getAttribute("value")||"":e.value,a=n==null?e.type==="checkbox"?"on":"":String(n);(l!==a||!("_value"in e))&&(e.value=a),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=hr(n):n==null&&l==="string"?(n="",i=!0):l==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(o||t)}function Dt(e,t,n,s){e.addEventListener(t,n,s)}function Ja(e,t,n,s){e.removeEventListener(t,n,s)}const Yo=Symbol("_vei");function Za(e,t,n,s,o=null){const r=e[Yo]||(e[Yo]={}),i=r[t];if(s&&i)i.value=s;else{const[l,a]=Qa(t);if(s){const u=r[t]=nc(s,o);Dt(e,l,u,a)}else i&&(Ja(e,l,i,a),r[t]=void 0)}}const zo=/(?:Once|Passive|Capture)$/;function Qa(e){let t;if(zo.test(e)){t={};let s;for(;s=e.match(zo);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):kt(e.slice(2)),t]}let Cs=0;const ec=Promise.resolve(),tc=()=>Cs||(ec.then(()=>Cs=0),Cs=Date.now());function nc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ze(sc(s,n.value),t,5,[s])};return n.value=e,n.attached=tc(),n}function sc(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Xo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,oc=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?qa(e,s,i):t==="style"?za(e,n,s):Jn(t)?Bs(t)||Za(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):rc(e,t,s,i))?(Go(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&qo(e,t,s,i,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!we(s))?Go(e,qe(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),qo(e,t,s,i))};function rc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Xo(t)&&ee(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Xo(t)&&we(n)?!1:t in e}const Ci=new WeakMap,Si=new WeakMap,Gn=Symbol("_moveCb"),Jo=Symbol("_enterCb"),ic=e=>(delete e.props.mode,e),lc=ic({name:"TransitionGroup",props:Ce({},Ka,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=io(),s=Rl();let o,r;return Jr(()=>{if(!o.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!dc(o[0].el,n.vnode.el,i)){o=[];return}o.forEach(cc),o.forEach(uc);const l=o.filter(fc);js(n.vnode.el),l.forEach(a=>{const u=a.el,c=u.style;ot(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[Gn]=m=>{m&&m.target!==u||(!m||m.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",f),u[Gn]=null,_t(u,i))};u.addEventListener("transitionend",f)}),o=[]}),()=>{const i=ce(e),l=Va(i);let a=i.tag||ye;if(o=[],r)for(let u=0;u<r.length;u++){const c=r[u];c.el&&c.el instanceof Element&&(o.push(c),bn(c,Os(c,l,s,n)),Ci.set(c,{left:c.el.offsetLeft,top:c.el.offsetTop}))}r=t.default?zr(t.default()):[];for(let u=0;u<r.length;u++){const c=r[u];c.key!=null&&bn(c,Os(c,l,s,n))}return _e(a,null,r)}}}),ac=lc;function cc(e){const t=e.el;t[Gn]&&t[Gn](),t[Jo]&&t[Jo]()}function uc(e){Si.set(e,{left:e.el.offsetLeft,top:e.el.offsetTop})}function fc(e){const t=Ci.get(e),n=Si.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el.style;return r.transform=r.webkitTransform=`translate(${s}px,${o}px)`,r.transitionDuration="0s",e}}function dc(e,t,n){const s=e.cloneNode(),o=e[Zt];o&&o.forEach(l=>{l.split(/\s+/).forEach(a=>a&&s.classList.remove(a))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:i}=_i(s);return r.removeChild(s),i}const Yn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return J(t)?n=>Ln(t,n):t};function pc(e){e.target.composing=!0}function Zo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const zt=Symbol("_assign");function Qo(e,t,n){return t&&(e=e.trim()),n&&(e=ns(e)),e}const $n={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[zt]=Yn(o);const r=s||o.props&&o.props.type==="number";Dt(e,t?"change":"input",i=>{i.target.composing||e[zt](Qo(e.value,n,r))}),(n||r)&&Dt(e,"change",()=>{e.value=Qo(e.value,n,r)}),t||(Dt(e,"compositionstart",pc),Dt(e,"compositionend",Zo),Dt(e,"change",Zo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[zt]=Yn(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?ns(e.value):e.value,a=t??"";l!==a&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a))}},hc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Zn(t);Dt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?ns(zn(i)):zn(i));e[zt](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,Ht(()=>{e._assigning=!1})}),e[zt]=Yn(s)},mounted(e,{value:t}){er(e,t)},beforeUpdate(e,t,n){e[zt]=Yn(n)},updated(e,{value:t}){e._assigning||er(e,t)}};function er(e,t){const n=e.multiple,s=J(t);if(!(n&&!s&&!Zn(t))){for(let o=0,r=e.options.length;o<r;o++){const i=e.options[o],l=zn(i);if(n)if(s){const a=typeof l;a==="string"||a==="number"?i.selected=t.some(u=>String(u)===String(l)):i.selected=Gi(t,l)>-1}else i.selected=t.has(l);else if(os(zn(i),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function zn(e){return"_value"in e?e._value:e.value}const mc=["ctrl","shift","alt","meta"],gc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>mc.some(n=>e[`${n}Key`]&&!t.includes(n))},$e=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...r)=>{for(let i=0;i<t.length;i++){const l=gc[t[i]];if(l&&l(o,t))return}return e(o,...r)}))},vc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Xn=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const r=kt(o.key);if(t.some(i=>i===r||vc[i]===r))return e(o)}))},yc=Ce({patchProp:oc},Ua);let tr;function bc(){return tr||(tr=wa(yc))}const wc=((...e)=>{const t=bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=xc(s);if(!o)return;const r=t._component;!ee(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,_c(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t});function _c(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function xc(e){return we(e)?document.querySelector(e):e}let Ei;const ds=e=>Ei=e,Ti=Symbol();function Hs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var mn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(mn||(mn={}));function Cc(){const e=yr(!0),t=e.run(()=>V({}));let n=[],s=[];const o=Zs({install(r){ds(o),o._a=r,r.provide(Ti,o),r.config.globalProperties.$pinia=o,s.forEach(i=>n.push(i)),s=[]},use(r){return this._a?n.push(r):s.push(r),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const $i=()=>{};function nr(e,t,n,s=$i){e.add(t);const o=()=>{e.delete(t)&&s()};return!n&&br()&&Yi(o),o}function Vt(e,...t){e.forEach(n=>{n(...t)})}const Sc=e=>e(),sr=Symbol(),Ss=Symbol();function Us(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],o=e[n];Hs(o)&&Hs(s)&&e.hasOwnProperty(n)&&!be(s)&&!ht(s)?e[n]=Us(o,s):e[n]=s}return e}const Ec=Symbol();function Tc(e){return!Hs(e)||!Object.prototype.hasOwnProperty.call(e,Ec)}const{assign:xt}=Object;function $c(e){return!!(be(e)&&e.effect)}function kc(e,t,n,s){const{state:o,actions:r,getters:i}=t,l=n.state.value[e];let a;function u(){l||(n.state.value[e]=o?o():{});const c=yl(n.state.value[e]);return xt(c,r,Object.keys(i||{}).reduce((f,m)=>(f[m]=Zs(Re(()=>{ds(n);const g=n._s.get(e);return i[m].call(g,g)})),f),{}))}return a=ki(e,u,t,n,s,!0),a}function ki(e,t,n={},s,o,r){let i;const l=xt({actions:{}},n),a={deep:!0};let u,c,f=new Set,m=new Set,g;const y=s.state.value[e];!r&&!y&&(s.state.value[e]={});let v;function T(B){let A;u=c=!1,typeof B=="function"?(B(s.state.value[e]),A={type:mn.patchFunction,storeId:e,events:g}):(Us(s.state.value[e],B),A={type:mn.patchObject,payload:B,storeId:e,events:g});const G=v=Symbol();Ht().then(()=>{v===G&&(u=!0)}),c=!0,Vt(f,A,s.state.value[e])}const p=r?function(){const{state:A}=n,G=A?A():{};this.$patch(ne=>{xt(ne,G)})}:$i;function w(){i.stop(),f.clear(),m.clear(),s._s.delete(e)}const $=(B,A="")=>{if(sr in B)return B[Ss]=A,B;const G=function(){ds(s);const ne=Array.from(arguments),M=new Set,F=new Set;function L(W){M.add(W)}function z(W){F.add(W)}Vt(m,{args:ne,name:G[Ss],store:U,after:L,onError:z});let q;try{q=B.apply(this&&this.$id===e?this:U,ne)}catch(W){throw Vt(F,W),W}return q instanceof Promise?q.then(W=>(Vt(M,W),W)).catch(W=>(Vt(F,W),Promise.reject(W))):(Vt(M,q),q)};return G[sr]=!0,G[Ss]=A,G},k={_p:s,$id:e,$onAction:nr.bind(null,m),$patch:T,$reset:p,$subscribe(B,A={}){const G=nr(f,B,A.detached,()=>ne()),ne=i.run(()=>Xe(()=>s.state.value[e],M=>{(A.flush==="sync"?c:u)&&B({storeId:e,type:mn.direct,events:g},M)},xt({},a,A)));return G},$dispose:w},U=is(k);s._s.set(e,U);const ie=(s._a&&s._a.runWithContext||Sc)(()=>s._e.run(()=>(i=yr()).run(()=>t({action:$}))));for(const B in ie){const A=ie[B];if(be(A)&&!$c(A)||ht(A))r||(y&&Tc(A)&&(be(A)?A.value=y[B]:Us(A,y[B])),s.state.value[e][B]=A);else if(typeof A=="function"){const G=$(A,B);ie[B]=G,l.actions[B]=A}}return xt(U,ie),xt(ce(U),ie),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:B=>{T(A=>{xt(A,B)})}}),s._p.forEach(B=>{xt(U,i.run(()=>B({store:U,app:s._a,pinia:s,options:l})))}),y&&r&&n.hydrate&&n.hydrate(U.$state,y),u=!0,c=!0,U}function Ac(e,t,n){let s;const o=typeof t=="function";s=o?n:t;function r(i,l){const a=kl();return i=i||(a?$t(Ti,null):null),i&&ds(i),i=Ei,i._s.has(e)||(o?ki(e,t,s,i):kc(e,s,i)),i._s.get(e)}return r.$id=e,r}const Mt=Ac("sessions",()=>{const e=V([]),t=Re(()=>[...e.value].sort((F,L)=>{if(!F.alias)return L.alias?1:0;if(!L.alias)return-1;const z=F.alias.toLowerCase(),q=L.alias.toLowerCase();return z<q?-1:z>q?1:0})),n=V([]),s=V(null),o=V(!1),r=V(!1),i=V(""),l=V(0);let a=null,u=null,c=1e3;async function f(F,L={}){const z=await fetch(F,L);if(z.status===401&&(r.value=!1),!z.ok){const q=await z.json().catch(()=>({}));throw Object.assign(new Error(q.error||`Request failed (${z.status})`),{status:z.status})}return z}async function m(F,L=!1){const q=await(await f(`/api/sessions/${encodeURIComponent(F)}/root`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repin:L})})).json(),W=e.value.find(oe=>oe.name===F);return W&&(W.root=q.root),q.root}function g(){l.value++}async function y(){try{const L=await(await fetch("/api/auth/status")).json();i.value=typeof L.instance?.name=="string"?L.instance.name:"",o.value=!!L.authRequired,r.value=!!L.authenticated}catch{r.value=!1}return r.value}async function v(F){const L=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:F})});if(!L.ok){const z=await L.json().catch(()=>({}));throw new Error(z.error||"Login failed")}r.value=!0}async function T(){try{await fetch("/api/auth/logout",{method:"POST"})}catch{}r.value=!1,e.value=[],s.value=null,a&&(a.onclose=null,a.close(),a=null)}async function p(){const F=await fetch("/api/sessions");if(F.status===401){r.value=!1;return}const L=await F.json();e.value=L.sessions}async function w(){const L=await(await fetch("/api/sessions/shells")).json();n.value=L.shells}async function $(F,L){const z=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:F,shell:L})});if(!z.ok){const W=await z.json();throw new Error(W.error)}const q=await z.json();s.value=q.name,await p()}async function k(F){const L=await fetch(`/api/sessions/${F}/stop`,{method:"POST"});if(!L.ok){const z=await L.json();throw new Error(z.error)}await p()}async function U(F){const L=await fetch(`/api/sessions/${F}/restart`,{method:"POST"});if(!L.ok){const z=await L.json();throw new Error(z.error)}await p()}async function te(F,L){const z=await fetch(`/api/sessions/${F}/alias`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:L})});if(!z.ok){const q=await z.json();throw new Error(q.error)}await p()}async function ie(F){const L=await fetch(`/api/sessions/${F}`,{method:"DELETE"});if(!L.ok){const z=await L.json();throw new Error(z.error)}s.value===F&&(s.value=null),await p()}function B(F){s.value=F}function A(){a&&(a.onclose=null,a.close());const F=location.protocol==="https:"?"wss":"ws";a=new WebSocket(`${F}://${location.host}/ws`),a.onmessage=L=>{let z=null,q=null;try{({event:z,data:q}=JSON.parse(L.data))}catch{}if(z==="session:title"&&q&&q.name){const W=e.value.find(oe=>oe.name===q.name);if(W){W.title=q.title,W.command=q.command,W.outputActive=!!q.outputActive;return}}if(z==="session:root"&&q?.name){const W=e.value.find(oe=>oe.name===q.name);W&&(W.root=q.root);return}p()},a.onopen=()=>{c=1e3,p()},a.onclose=()=>{G()}}function G(){u||(u=setTimeout(()=>{u=null,A(),c=Math.min(c*2,3e4)},c))}function ne(){p(),w(),A()}async function M({command:F,name:L}){return $(L||null,F||null)}return{sessions:e,sortedSessions:t,shells:n,current:s,authRequired:o,authenticated:r,instanceName:i,fileRevision:l,apiRequest:f,pinRoot:m,refreshFiles:g,init:ne,checkAuth:y,login:v,logout:T,fetchSessions:p,createSession:$,create:M,stopSession:k,restartSession:U,setAlias:te,removeSession:ie,select:B}}),Ge=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},Mc=["title"],Pc={class:"card-content"},Oc={class:"card-top"},Ic=["onKeydown"],Rc={class:"session-name"},Lc={key:0,class:"alias-text"},Dc={key:1,class:"real-name"},Fc={key:2},Nc={key:0,class:"confirm-bar"},jc={key:1,class:"session-info"},Hc=["title"],Uc={class:"status-text"},Kc={__name:"SessionCard",props:{session:Object,active:Boolean,collapsed:Boolean},setup(e){const t=e,n=Mt(),s=$t("toast"),o=V(!1),r=V(!1),i=V(""),l=V(null),a=Re(()=>{const p=t.session.alias?`${t.session.alias} (${t.session.name})`:t.session.name;return t.session.pid?`${p} · PID ${t.session.pid}`:p}),u=Re(()=>t.session.title||t.session.command||"");function c(p,w="info"){s?.value?.show(p,w)}function f(p,w){p.stopPropagation(),o.value=!0}async function m(p,w){p.stopPropagation();try{await n.removeSession(w)}catch($){console.error($)}o.value=!1}function g(p){p.stopPropagation(),o.value=!1}function y(p){p.stopPropagation(),i.value=t.session.alias||"",r.value=!0,Ht(()=>l.value?.focus())}async function v(p){if(p&&p.stopPropagation(),!!r.value){r.value=!1;try{await n.setAlias(t.session.name,i.value.trim())}catch(w){c(w.message||"Failed to set alias","error")}}}function T(p){p.stopPropagation(),r.value=!1}return(p,w)=>(I(),K("div",{class:We(["session-card",{active:e.active,collapsed:e.collapsed}]),title:a.value},[_("div",{class:We(["status-indicator",[e.session.status,{"output-active":e.session.status==="running"&&e.session.outputActive}]])},null,2),Ye(_("div",Pc,[_("div",Oc,[r.value?Ye((I(),K("input",{key:0,ref_key:"aliasInput",ref:l,"onUpdate:modelValue":w[0]||(w[0]=$=>i.value=$),class:"alias-input",type:"text",maxlength:"100",placeholder:"Alias (Enter to save, Esc to cancel)",onClick:w[1]||(w[1]=$e(()=>{},["stop"])),onKeydown:[w[2]||(w[2]=$e(()=>{},["stop"])),w[3]||(w[3]=Xn($e($=>v($),["prevent"]),["enter"])),Xn($e(T,["prevent"]),["esc"])],onBlur:v},null,40,Ic)),[[$n,i.value]]):(I(),K(ye,{key:1},[_("div",Rc,[e.session.alias?(I(),K("span",Lc,se(e.session.alias),1)):ae("",!0),e.session.alias?(I(),K("span",Dc,se(e.session.name),1)):(I(),K("span",Fc,se(e.session.name),1))]),o.value?ae("",!0):(I(),K("button",{key:0,class:"close-btn",title:"Set alias",onClick:w[4]||(w[4]=$=>y($))},[...w[8]||(w[8]=[_("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})],-1)])])),o.value?ae("",!0):(I(),K("button",{key:1,class:"close-btn",title:"Delete session",onClick:w[5]||(w[5]=$=>f($,e.session.name))},[...w[9]||(w[9]=[_("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),_("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]))],64))]),o.value?(I(),K("div",Nc,[w[10]||(w[10]=_("span",{class:"confirm-text"},"Delete?",-1)),_("button",{class:"confirm-yes",onClick:w[6]||(w[6]=$=>m($,e.session.name))},"Yes"),_("button",{class:"confirm-no",onClick:w[7]||(w[7]=$=>g($))},"No")])):(I(),K("div",jc,[_("span",{class:"pane-title",title:u.value},se(u.value),9,Hc),_("span",Uc,se(e.session.status),1)]))],512),[[rn,!e.collapsed]])],10,Mc))}},Vc=Ge(Kc,[["__scopeId","data-v-0e38e5ff"]]),Bc="modulepreload",Wc=function(e){return"/"+e},or={},lo=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){let a=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=i?.nonce||i?.getAttribute("nonce");o=a(n.map(u=>{if(u=Wc(u),u in or)return;or[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const m=document.createElement("link");if(m.rel=c?"stylesheet":Bc,c||(m.as="script"),m.crossOrigin="",m.href=u,l&&m.setAttribute("nonce",l),document.head.appendChild(m),c)return new Promise((g,y)=>{m.addEventListener("load",g),m.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${u}`)))})}))}function r(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return o.then(i=>{for(const l of i||[])l.status==="rejected"&&r(l.reason);return t().catch(r)})},Es="https://acli-preview.invalid",rr=e=>e.split("/").map(encodeURIComponent).join("/");function ir(e){const t=[];for(const n of e.split("/"))!n||n==="."||(n===".."?t.pop():t.push(n));return`/${t.join("/")}`}function lr(e,t,n){if(typeof e!="string"||e.length>8192||/[\u0000-\u001f\u007f\\]/.test(e))throw new Error("不支持的链接地址");if(e=e.trim(),/^(?:https?:)?\/\//i.test(e)){const u=new URL(e,Es);if(!["http:","https:"].includes(u.protocol))throw new Error("不支持的链接协议");return{kind:"external",url:u.href}}if(/^[a-z][a-z\d+.-]*:/i.test(e))throw new Error("只支持项目内文件和 HTTP/HTTPS 链接");if(!t?.startsWith("/")||!n?.startsWith("/"))throw new Error("当前文档没有有效的项目目录");const s=ir(n),o=`${Es}${rr(t)}`,r=e.startsWith("/")?`${rr(s).replace(/\/$/,"")}${e}`:e;let i,l,a;try{i=new URL(r,o),l=ir(decodeURIComponent(i.pathname)),a=decodeURIComponent(i.hash.slice(1))}catch{throw new Error("链接包含无效的路径编码")}if(i.origin!==Es||/[\u0000-\u001f\u007f\\]/.test(l))throw new Error("不支持的链接地址");if(s!=="/"&&l!==s&&!l.startsWith(`${s}/`))throw new Error("链接超出了当前项目目录");return{kind:"file",path:l,hash:a}}function qc(e){return e.normalize("NFC").trim().toLowerCase().replace(/[^\p{L}\p{N}\p{M}_\s-]/gu,"").replace(/\s/g,"-")||"section"}function Gc(e){return`<script>(()=>{
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/papaparse.min-DBcLlWLv.js","assets/_commonjsHelpers-Cpj98o6Y.js","assets/PreviewDialog-Dc7jb9yA.js","assets/PreviewDialog-Du15-2g0.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();function Bs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},qt=[],lt=()=>{},ur=()=>!1,zn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vs=e=>e.startsWith("onUpdate:"),Ce=Object.assign,Ws=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Li=Object.prototype.hasOwnProperty,ue=(e,t)=>Li.call(e,t),J=Array.isArray,Gt=e=>_n(e)==="[object Map]",Xn=e=>_n(e)==="[object Set]",mo=e=>_n(e)==="[object Date]",ee=e=>typeof e=="function",we=e=>typeof e=="string",at=e=>typeof e=="symbol",pe=e=>e!==null&&typeof e=="object",fr=e=>(pe(e)||ee(e))&&ee(e.then)&&ee(e.catch),dr=Object.prototype.toString,_n=e=>dr.call(e),Di=e=>_n(e).slice(8,-1),pr=e=>_n(e)==="[object Object]",Jn=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=Bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Fi=/-\w/g,qe=Zn(e=>e.replace(Fi,t=>t.slice(1).toUpperCase())),Ni=/\B([A-Z])/g,At=Zn(e=>e.replace(Ni,"-$1").toLowerCase()),Qn=Zn(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=Zn(e=>e?`on${Qn(e)}`:""),$t=(e,t)=>!Object.is(e,t),Rn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},hr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},es=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ji=e=>{const t=we(e)?Number(e):NaN;return isNaN(t)?e:t};let go;const ts=()=>go||(go=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xn(e){if(J(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=we(s)?Bi(s):xn(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(we(e)||pe(e))return e}const Hi=/;(?![^(]*\))/g,Ui=/:([^]+)/,Ki=/\/\*[^]*?\*\//g;function Bi(e){const t={};return e.replace(Ki,"").split(Hi).forEach(n=>{if(n){const s=n.split(Ui);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function We(e){let t="";if(we(e))t=e;else if(J(e))for(let n=0;n<e.length;n++){const s=We(e[n]);s&&(t+=s+" ")}else if(pe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Vi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Wi=Bs(Vi);function mr(e){return!!e||e===""}function qi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=ns(e[s],t[s]);return n}function ns(e,t){if(e===t)return!0;let n=mo(e),s=mo(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=at(e),s=at(t),n||s)return e===t;if(n=J(e),s=J(t),n||s)return n&&s?qi(e,t):!1;if(n=pe(e),s=pe(t),n||s){if(!n||!s)return!1;const o=Object.keys(e).length,r=Object.keys(t).length;if(o!==r)return!1;for(const i in e){const l=e.hasOwnProperty(i),a=t.hasOwnProperty(i);if(l&&!a||!l&&a||!ns(e[i],t[i]))return!1}}return String(e)===String(t)}function Gi(e,t){return e.findIndex(n=>ns(n,t))}const gr=e=>!!(e&&e.__v_isRef===!0),se=e=>we(e)?e:e==null?"":J(e)||pe(e)&&(e.toString===dr||!ee(e.toString))?gr(e)?se(e.value):JSON.stringify(e,vr,2):String(e),vr=(e,t)=>gr(t)?vr(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[ps(s,r)+" =>"]=o,n),{})}:Xn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ps(n))}:at(t)?ps(t):pe(t)&&!J(t)&&!pr(t)?String(t):t,ps=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Te;class yr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Te,!t&&Te&&(this.index=(Te.scopes||(Te.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Te;try{return Te=this,t()}finally{Te=n}}}on(){++this._on===1&&(this.prevScope=Te,Te=this)}off(){this._on>0&&--this._on===0&&(Te=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function br(e){return new yr(e)}function wr(){return Te}function Yi(e,t=!1){Te&&Te.cleanups.push(e)}let me;const hs=new WeakSet;class _r{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Te&&Te.active&&Te.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,hs.has(this)&&(hs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Cr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,vo(this),Sr(this);const t=me,n=Ye;me=this,Ye=!0;try{return this.fn()}finally{Er(this),me=t,Ye=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ys(t);this.deps=this.depsTail=void 0,vo(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?hs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Ts(this)&&this.run()}get dirty(){return Ts(this)}}let xr=0,an,cn;function Cr(e,t=!1){if(e.flags|=8,t){e.next=cn,cn=e;return}e.next=an,an=e}function qs(){xr++}function Gs(){if(--xr>0)return;if(cn){let t=cn;for(cn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;an;){let t=an;for(an=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Sr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Er(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),Ys(s),zi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Ts(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Tr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Tr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gn)||(e.globalVersion=gn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ts(e))))return;e.flags|=2;const t=e.dep,n=me,s=Ye;me=e,Ye=!0;try{Sr(e);const o=e.fn(e._value);(t.version===0||$t(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{me=n,Ye=s,Er(e),e.flags&=-3}}function Ys(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)Ys(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function zi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ye=!0;const $r=[];function mt(){$r.push(Ye),Ye=!1}function gt(){const e=$r.pop();Ye=e===void 0?!0:e}function vo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=me;me=void 0;try{t()}finally{me=n}}}let gn=0;class Xi{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!me||!Ye||me===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==me)n=this.activeLink=new Xi(me,this),me.deps?(n.prevDep=me.depsTail,me.depsTail.nextDep=n,me.depsTail=n):me.deps=me.depsTail=n,kr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=me.depsTail,n.nextDep=void 0,me.depsTail.nextDep=n,me.depsTail=n,me.deps===n&&(me.deps=s)}return n}trigger(t){this.version++,gn++,this.notify(t)}notify(t){qs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Gs()}}}function kr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)kr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Nn=new WeakMap,Nt=Symbol(""),$s=Symbol(""),vn=Symbol("");function $e(e,t,n){if(Ye&&me){let s=Nn.get(e);s||Nn.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new zs),o.map=s,o.key=n),o.track()}}function dt(e,t,n,s,o,r){const i=Nn.get(e);if(!i){gn++;return}const l=a=>{a&&a.trigger()};if(qs(),t==="clear")i.forEach(l);else{const a=J(e),u=a&&Jn(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,m)=>{(m==="length"||m===vn||!at(m)&&m>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(vn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(Nt)),Gt(e)&&l(i.get($s)));break;case"delete":a||(l(i.get(Nt)),Gt(e)&&l(i.get($s)));break;case"set":Gt(e)&&l(i.get(Nt));break}}Gs()}function Ji(e,t){const n=Nn.get(e);return n&&n.get(t)}function Kt(e){const t=ce(e);return t===e?t:($e(t,"iterate",vn),Ne(e)?t:t.map(Xe))}function ss(e){return $e(e=ce(e),"iterate",vn),e}function St(e,t){return vt(e)?Xt(ht(e)?Xe(t):t):Xe(t)}const Zi={__proto__:null,[Symbol.iterator](){return ms(this,Symbol.iterator,e=>St(this,e))},concat(...e){return Kt(this).concat(...e.map(t=>J(t)?Kt(t):t))},entries(){return ms(this,"entries",e=>(e[1]=St(this,e[1]),e))},every(e,t){return ut(this,"every",e,t,void 0,arguments)},filter(e,t){return ut(this,"filter",e,t,n=>n.map(s=>St(this,s)),arguments)},find(e,t){return ut(this,"find",e,t,n=>St(this,n),arguments)},findIndex(e,t){return ut(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ut(this,"findLast",e,t,n=>St(this,n),arguments)},findLastIndex(e,t){return ut(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ut(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return Kt(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return ut(this,"map",e,t,void 0,arguments)},pop(){return en(this,"pop")},push(...e){return en(this,"push",e)},reduce(e,...t){return yo(this,"reduce",e,t)},reduceRight(e,...t){return yo(this,"reduceRight",e,t)},shift(){return en(this,"shift")},some(e,t){return ut(this,"some",e,t,void 0,arguments)},splice(...e){return en(this,"splice",e)},toReversed(){return Kt(this).toReversed()},toSorted(e){return Kt(this).toSorted(e)},toSpliced(...e){return Kt(this).toSpliced(...e)},unshift(...e){return en(this,"unshift",e)},values(){return ms(this,"values",e=>St(this,e))}};function ms(e,t,n){const s=ss(e),o=s[t]();return s!==e&&!Ne(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const Qi=Array.prototype;function ut(e,t,n,s,o,r){const i=ss(e),l=i!==e&&!Ne(e),a=i[t];if(a!==Qi[t]){const f=a.apply(e,r);return l?Xe(f):f}let u=n;i!==e&&(l?u=function(f,m){return n.call(this,St(e,f),m,e)}:n.length>2&&(u=function(f,m){return n.call(this,f,m,e)}));const c=a.call(i,u,s);return l&&o?o(c):c}function yo(e,t,n,s){const o=ss(e);let r=n;return o!==e&&(Ne(e)?n.length>3&&(r=function(i,l,a){return n.call(this,i,l,a,e)}):r=function(i,l,a){return n.call(this,i,St(e,l),a,e)}),o[t](r,...s)}function gs(e,t,n){const s=ce(e);$e(s,"iterate",vn);const o=s[t](...n);return(o===-1||o===!1)&&rs(n[0])?(n[0]=ce(n[0]),s[t](...n)):o}function en(e,t,n=[]){mt(),qs();const s=ce(e)[t].apply(e,n);return Gs(),gt(),s}const el=Bs("__proto__,__v_isRef,__isVue"),Ar=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function tl(e){at(e)||(e=String(e));const t=ce(this);return $e(t,"has",e),t.hasOwnProperty(e)}class Mr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?fl:Rr:r?Ir:Or).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=J(t);if(!o){let a;if(i&&(a=Zi[n]))return a;if(n==="hasOwnProperty")return tl}const l=Reflect.get(t,n,be(t)?t:s);if((at(n)?Ar.has(n):el(n))||(o||$e(t,"get",n),r))return l;if(be(l)){const a=i&&Jn(n)?l:l.value;return o&&pe(a)?As(a):a}return pe(l)?o?As(l):os(l):l}}class Pr extends Mr{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const i=J(t)&&Jn(n);if(!this._isShallow){const u=vt(r);if(!Ne(s)&&!vt(s)&&(r=ce(r),s=ce(s)),!i&&be(r)&&!be(s))return u||(r.value=s),!0}const l=i?Number(n)<t.length:ue(t,n),a=Reflect.set(t,n,s,be(t)?t:o);return t===ce(o)&&(l?$t(s,r)&&dt(t,"set",n,s):dt(t,"add",n,s)),a}deleteProperty(t,n){const s=ue(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&&dt(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!at(n)||!Ar.has(n))&&$e(t,"has",n),s}ownKeys(t){return $e(t,"iterate",J(t)?"length":Nt),Reflect.ownKeys(t)}}class nl extends Mr{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const sl=new Pr,ol=new nl,rl=new Pr(!0);const ks=e=>e,$n=e=>Reflect.getPrototypeOf(e);function il(e,t,n){return function(...s){const o=this.__v_raw,r=ce(o),i=Gt(r),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...s),c=n?ks:t?Xt:Xe;return!t&&$e(r,"iterate",a?$s:Nt),Ce(Object.create(u),{next(){const{value:f,done:m}=u.next();return m?{value:f,done:m}:{value:l?[c(f[0]),c(f[1])]:c(f),done:m}}})}}function kn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ll(e,t){const n={get(o){const r=this.__v_raw,i=ce(r),l=ce(o);e||($t(o,l)&&$e(i,"get",o),$e(i,"get",l));const{has:a}=$n(i),u=t?ks:e?Xt:Xe;if(a.call(i,o))return u(r.get(o));if(a.call(i,l))return u(r.get(l));r!==i&&r.get(o)},get size(){const o=this.__v_raw;return!e&&$e(ce(o),"iterate",Nt),o.size},has(o){const r=this.__v_raw,i=ce(r),l=ce(o);return e||($t(o,l)&&$e(i,"has",o),$e(i,"has",l)),o===l?r.has(o):r.has(o)||r.has(l)},forEach(o,r){const i=this,l=i.__v_raw,a=ce(l),u=t?ks:e?Xt:Xe;return!e&&$e(a,"iterate",Nt),l.forEach((c,f)=>o.call(r,u(c),u(f),i))}};return Ce(n,e?{add:kn("add"),set:kn("set"),delete:kn("delete"),clear:kn("clear")}:{add(o){!t&&!Ne(o)&&!vt(o)&&(o=ce(o));const r=ce(this);return $n(r).has.call(r,o)||(r.add(o),dt(r,"add",o,o)),this},set(o,r){!t&&!Ne(r)&&!vt(r)&&(r=ce(r));const i=ce(this),{has:l,get:a}=$n(i);let u=l.call(i,o);u||(o=ce(o),u=l.call(i,o));const c=a.call(i,o);return i.set(o,r),u?$t(r,c)&&dt(i,"set",o,r):dt(i,"add",o,r),this},delete(o){const r=ce(this),{has:i,get:l}=$n(r);let a=i.call(r,o);a||(o=ce(o),a=i.call(r,o)),l&&l.call(r,o);const u=r.delete(o);return a&&dt(r,"delete",o,void 0),u},clear(){const o=ce(this),r=o.size!==0,i=o.clear();return r&&dt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=il(o,e,t)}),n}function Xs(e,t){const n=ll(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ue(n,o)&&o in s?n:s,o,r)}const al={get:Xs(!1,!1)},cl={get:Xs(!1,!0)},ul={get:Xs(!0,!1)};const Or=new WeakMap,Ir=new WeakMap,Rr=new WeakMap,fl=new WeakMap;function dl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pl(e){return e.__v_skip||!Object.isExtensible(e)?0:dl(Di(e))}function os(e){return vt(e)?e:Js(e,!1,sl,al,Or)}function hl(e){return Js(e,!1,rl,cl,Ir)}function As(e){return Js(e,!0,ol,ul,Rr)}function Js(e,t,n,s,o){if(!pe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=pl(e);if(r===0)return e;const i=o.get(e);if(i)return i;const l=new Proxy(e,r===2?s:n);return o.set(e,l),l}function ht(e){return vt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Ne(e){return!!(e&&e.__v_isShallow)}function rs(e){return e?!!e.__v_raw:!1}function ce(e){const t=e&&e.__v_raw;return t?ce(t):e}function Zs(e){return!ue(e,"__v_skip")&&Object.isExtensible(e)&&hr(e,"__v_skip",!0),e}const Xe=e=>pe(e)?os(e):e,Xt=e=>pe(e)?As(e):e;function be(e){return e?e.__v_isRef===!0:!1}function B(e){return Lr(e,!1)}function ml(e){return Lr(e,!0)}function Lr(e,t){return be(e)?e:new gl(e,t)}class gl{constructor(t,n){this.dep=new zs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ce(t),this._value=n?t:Xe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ne(t)||vt(t);t=s?t:ce(t),$t(t,n)&&(this._rawValue=t,this._value=s?t:Xe(t),this.dep.trigger())}}function ve(e){return be(e)?e.value:e}const vl={get:(e,t,n)=>t==="__v_raw"?e:ve(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return be(o)&&!be(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Dr(e){return ht(e)?e:new Proxy(e,vl)}function yl(e){const t=J(e)?new Array(e.length):{};for(const n in e)t[n]=wl(e,n);return t}class bl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=ce(t);let o=!0,r=t;if(!J(t)||!Jn(String(n)))do o=!rs(r)||Ne(r);while(o&&(r=r.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=ve(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&be(this._raw[this._key])){const n=this._object[this._key];if(be(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Ji(this._raw,this._key)}}function wl(e,t,n){return new bl(e,t,n)}class _l{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new zs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return Cr(this,!0),!0}get value(){const t=this.dep.track();return Tr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function xl(e,t,n=!1){let s,o;return ee(e)?s=e:(s=e.get,o=e.set),new _l(s,o,n)}const An={},jn=new WeakMap;let Lt;function Cl(e,t=!1,n=Lt){if(n){let s=jn.get(n);s||jn.set(n,s=[]),s.push(e)}}function Sl(e,t,n=de){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:a}=n,u=k=>o?k:Ne(k)||o===!1||o===0?pt(k,1):pt(k);let c,f,m,g,y=!1,v=!1;if(be(e)?(f=()=>e.value,y=Ne(e)):ht(e)?(f=()=>u(e),y=!0):J(e)?(v=!0,y=e.some(k=>ht(k)||Ne(k)),f=()=>e.map(k=>{if(be(k))return k.value;if(ht(k))return u(k);if(ee(k))return a?a(k,2):k()})):ee(e)?t?f=a?()=>a(e,2):e:f=()=>{if(m){mt();try{m()}finally{gt()}}const k=Lt;Lt=c;try{return a?a(e,3,[g]):e(g)}finally{Lt=k}}:f=lt,t&&o){const k=f,U=o===!0?1/0:o;f=()=>pt(k(),U)}const T=wr(),p=()=>{c.stop(),T&&T.active&&Ws(T.effects,c)};if(r&&t){const k=t;t=(...U)=>{k(...U),p()}}let w=v?new Array(e.length).fill(An):An;const $=k=>{if(!(!(c.flags&1)||!c.dirty&&!k))if(t){const U=c.run();if(o||y||(v?U.some((te,ie)=>$t(te,w[ie])):$t(U,w))){m&&m();const te=Lt;Lt=c;try{const ie=[U,w===An?void 0:v&&w[0]===An?[]:w,g];w=U,a?a(t,3,ie):t(...ie)}finally{Lt=te}}}else c.run()};return l&&l($),c=new _r(f),c.scheduler=i?()=>i($,!1):$,g=k=>Cl(k,!1,c),m=c.onStop=()=>{const k=jn.get(c);if(k){if(a)a(k,4);else for(const U of k)U();jn.delete(c)}},t?s?$(!0):w=c.run():i?i($.bind(null,!0),!0):c.run(),p.pause=c.pause.bind(c),p.resume=c.resume.bind(c),p.stop=p,p}function pt(e,t=1/0,n){if(t<=0||!pe(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,be(e))pt(e.value,t,n);else if(J(e))for(let s=0;s<e.length;s++)pt(e[s],t,n);else if(Xn(e)||Gt(e))e.forEach(s=>{pt(s,t,n)});else if(pr(e)){for(const s in e)pt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&pt(e[s],t,n)}return e}function Cn(e,t,n,s){try{return s?e(...s):e()}catch(o){Sn(o,t,n)}}function Je(e,t,n,s){if(ee(e)){const o=Cn(e,t,n,s);return o&&fr(o)&&o.catch(r=>{Sn(r,t,n)}),o}if(J(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Je(e[r],t,n,s));return o}}function Sn(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||de;if(t){let l=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const c=l.ec;if(c){for(let f=0;f<c.length;f++)if(c[f](e,a,u)===!1)return}l=l.parent}if(r){mt(),Cn(r,null,10,[e,a,u]),gt();return}}El(e,n,o,s,i)}function El(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const Me=[];let ot=-1;const Yt=[];let Et=null,Vt=0;const Fr=Promise.resolve();let Hn=null;function Mt(e){const t=Hn||Fr;return e?t.then(this?e.bind(this):e):t}function Tl(e){let t=ot+1,n=Me.length;for(;t<n;){const s=t+n>>>1,o=Me[s],r=yn(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function Qs(e){if(!(e.flags&1)){const t=yn(e),n=Me[Me.length-1];!n||!(e.flags&2)&&t>=yn(n)?Me.push(e):Me.splice(Tl(t),0,e),e.flags|=1,Nr()}}function Nr(){Hn||(Hn=Fr.then(Hr))}function $l(e){J(e)?Yt.push(...e):Et&&e.id===-1?Et.splice(Vt+1,0,e):e.flags&1||(Yt.push(e),e.flags|=1),Nr()}function bo(e,t,n=ot+1){for(;n<Me.length;n++){const s=Me[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Me.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function jr(e){if(Yt.length){const t=[...new Set(Yt)].sort((n,s)=>yn(n)-yn(s));if(Yt.length=0,Et){Et.push(...t);return}for(Et=t,Vt=0;Vt<Et.length;Vt++){const n=Et[Vt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Et=null,Vt=0}}const yn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Hr(e){try{for(ot=0;ot<Me.length;ot++){const t=Me[ot];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Cn(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;ot<Me.length;ot++){const t=Me[ot];t&&(t.flags&=-2)}ot=-1,Me.length=0,jr(),Hn=null,(Me.length||Yt.length)&&Hr()}}let De=null,Ur=null;function Un(e){const t=De;return De=e,Ur=e&&e.type.__scopeId||null,t}function Kr(e,t=De,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Ro(-1);const r=Un(t);let i;try{i=e(...o)}finally{Un(r),s._d&&Ro(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function it(e,t){if(De===null)return e;const n=cs(De),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,i,l,a=de]=t[o];r&&(ee(r)&&(r={mounted:r,updated:r}),r.deep&&pt(i),s.push({dir:r,instance:n,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function Ot(e,t,n,s){const o=e.dirs,r=t&&t.dirs;for(let i=0;i<o.length;i++){const l=o[i];r&&(l.oldValue=r[i].value);let a=l.dir[s];a&&(mt(),Je(a,n,8,[e.el,l,e,t]),gt())}}function Br(e,t){if(Se){let n=Se.provides;const s=Se.parent&&Se.parent.provides;s===n&&(n=Se.provides=Object.create(s)),n[e]=t}}function kt(e,t,n=!1){const s=lo();if(s||jt){let o=jt?jt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ee(t)?t.call(s&&s.proxy):t}}function kl(){return!!(lo()||jt)}const Al=Symbol.for("v-scx"),Ml=()=>kt(Al);function ze(e,t,n){return Vr(e,t,n)}function Vr(e,t,n=de){const{immediate:s,deep:o,flush:r,once:i}=n,l=Ce({},n),a=t&&s||!t&&r!=="post";let u;if(Jt){if(r==="sync"){const g=Ml();u=g.__watcherHandles||(g.__watcherHandles=[])}else if(!a){const g=()=>{};return g.stop=lt,g.resume=lt,g.pause=lt,g}}const c=Se;l.call=(g,y,v)=>Je(g,c,y,v);let f=!1;r==="post"?l.scheduler=g=>{Ae(g,c&&c.suspense)}:r!=="sync"&&(f=!0,l.scheduler=(g,y)=>{y?g():Qs(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,c&&(g.id=c.uid,g.i=c))};const m=Sl(e,t,l);return Jt&&(u?u.push(m):a&&m()),m}function Pl(e,t,n){const s=this.proxy,o=we(e)?e.includes(".")?Wr(s,e):()=>s[e]:e.bind(s,s);let r;ee(t)?r=t:(r=t.handler,n=t);const i=Tn(this),l=Vr(o,r.bind(s),n);return i(),l}function Wr(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;o<n.length&&s;o++)s=s[n[o]];return s}}const qr=Symbol("_vte"),Ol=e=>e.__isTeleport,un=e=>e&&(e.disabled||e.disabled===""),wo=e=>e&&(e.defer||e.defer===""),_o=e=>typeof SVGElement<"u"&&e instanceof SVGElement,xo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ms=(e,t)=>{const n=e&&e.to;return we(n)?t?t(n):null:n},Gr={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,i,l,a,u){const{mc:c,pc:f,pbc:m,o:{insert:g,querySelector:y,createText:v,createComment:T}}=u,p=un(t.props);let{shapeFlag:w,children:$,dynamicChildren:k}=t;if(e==null){const U=t.el=v(""),te=t.anchor=v("");g(U,n,s),g(te,n,s);const ie=(A,G)=>{w&16&&c($,A,G,o,r,i,l,a)},V=()=>{const A=t.target=Ms(t.props,y),G=zr(A,t,v,g);A&&(i!=="svg"&&_o(A)?i="svg":i!=="mathml"&&xo(A)&&(i="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(A),p||(ie(A,G),Ln(t,!1)))};p&&(ie(n,te),Ln(t,!0)),wo(t.props)?(t.el.__isMounted=!1,Ae(()=>{V(),delete t.el.__isMounted},r)):V()}else{if(wo(t.props)&&e.el.__isMounted===!1){Ae(()=>{Gr.process(e,t,n,s,o,r,i,l,a,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const U=t.anchor=e.anchor,te=t.target=e.target,ie=t.targetAnchor=e.targetAnchor,V=un(e.props),A=V?n:te,G=V?U:ie;if(i==="svg"||_o(te)?i="svg":(i==="mathml"||xo(te))&&(i="mathml"),k?(m(e.dynamicChildren,k,A,o,r,i,l),ro(e,t,!0)):a||f(e,t,A,G,o,r,i,l,!1),p)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Mn(t,n,U,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ne=t.target=Ms(t.props,y);ne&&Mn(t,ne,null,u,0)}else V&&Mn(t,te,ie,u,1);Ln(t,p)}},remove(e,t,n,{um:s,o:{remove:o}},r){const{shapeFlag:i,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:m}=e;if(f&&(o(u),o(c)),r&&o(a),i&16){const g=r||!un(m);for(let y=0;y<l.length;y++){const v=l[y];s(v,t,n,g,!!v.dynamicChildren)}}},move:Mn,hydrate:Il};function Mn(e,t,n,{o:{insert:s},m:o},r=2){r===0&&s(e.targetAnchor,t,n);const{el:i,anchor:l,shapeFlag:a,children:u,props:c}=e,f=r===2;if(f&&s(i,t,n),(!f||un(c))&&a&16)for(let m=0;m<u.length;m++)o(u[m],t,n,2);f&&s(l,t,n)}function Il(e,t,n,s,o,r,{o:{nextSibling:i,parentNode:l,querySelector:a,insert:u,createText:c}},f){function m(v,T,p,w){T.anchor=f(i(v),T,l(v),n,s,o,r),T.targetStart=p,T.targetAnchor=w}const g=t.target=Ms(t.props,a),y=un(t.props);if(g){const v=g._lpa||g.firstChild;if(t.shapeFlag&16)if(y)m(e,t,v,v&&i(v));else{t.anchor=i(e);let T=v;for(;T;){if(T&&T.nodeType===8){if(T.data==="teleport start anchor")t.targetStart=T;else if(T.data==="teleport anchor"){t.targetAnchor=T,g._lpa=t.targetAnchor&&i(t.targetAnchor);break}}T=i(T)}t.targetAnchor||zr(g,t,c,u),f(v&&i(v),t,g,n,s,o,r)}Ln(t,y)}else y&&t.shapeFlag&16&&m(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Yr=Gr;function Ln(e,t){const n=e.ctx;if(n&&n.ut){let s,o;for(t?(s=e.el,o=e.anchor):(s=e.targetStart,o=e.targetAnchor);s&&s!==o;)s.nodeType===1&&s.setAttribute("data-v-owner",n.uid),s=s.nextSibling;n.ut()}}function zr(e,t,n,s){const o=t.targetStart=n(""),r=t.targetAnchor=n("");return o[qr]=r,e&&(s(o,e),s(r,e)),r}const Dt=Symbol("_leaveCb"),Pn=Symbol("_enterCb");function Rl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return wt(()=>{e.isMounted=!0}),Ut(()=>{e.isUnmounting=!0}),e}const Ke=[Function,Array],Ll={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ke,onEnter:Ke,onAfterEnter:Ke,onEnterCancelled:Ke,onBeforeLeave:Ke,onLeave:Ke,onAfterLeave:Ke,onLeaveCancelled:Ke,onBeforeAppear:Ke,onAppear:Ke,onAfterAppear:Ke,onAppearCancelled:Ke};function Dl(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Ps(e,t,n,s,o){const{appear:r,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:m,onLeave:g,onAfterLeave:y,onLeaveCancelled:v,onBeforeAppear:T,onAppear:p,onAfterAppear:w,onAppearCancelled:$}=t,k=String(e.key),U=Dl(n,e),te=(A,G)=>{A&&Je(A,s,9,G)},ie=(A,G)=>{const ne=G[1];te(A,G),J(A)?A.every(M=>M.length<=1)&&ne():A.length<=1&&ne()},V={mode:i,persisted:l,beforeEnter(A){let G=a;if(!n.isMounted)if(r)G=T||a;else return;A[Dt]&&A[Dt](!0);const ne=U[k];ne&&Wt(e,ne)&&ne.el[Dt]&&ne.el[Dt](),te(G,[A])},enter(A){let G=u,ne=c,M=f;if(!n.isMounted)if(r)G=p||u,ne=w||c,M=$||f;else return;let F=!1;const L=A[Pn]=z=>{F||(F=!0,z?te(M,[A]):te(ne,[A]),V.delayedLeave&&V.delayedLeave(),A[Pn]=void 0)};G?ie(G,[A,L]):L()},leave(A,G){const ne=String(e.key);if(A[Pn]&&A[Pn](!0),n.isUnmounting)return G();te(m,[A]);let M=!1;const F=A[Dt]=L=>{M||(M=!0,G(),L?te(v,[A]):te(y,[A]),A[Dt]=void 0,U[ne]===e&&delete U[ne])};U[ne]=e,g?ie(g,[A,F]):F()},clone(A){return Ps(A,t,n,s)}};return V}function bn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,bn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Xr(e,t=!1,n){let s=[],o=0;for(let r=0;r<e.length;r++){let i=e[r];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:r);i.type===ye?(i.patchFlag&128&&o++,s=s.concat(Xr(i.children,t,l))):(t||i.type!==yt)&&s.push(l!=null?Ht(i,{key:l}):i)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function Fl(e,t){return ee(e)?Ce({name:e.name},t,{setup:e}):e}function eo(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Kn=new WeakMap;function fn(e,t,n,s,o=!1){if(J(e)){e.forEach((y,v)=>fn(y,t&&(J(t)?t[v]:t),n,s,o));return}if(dn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&fn(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?cs(s.component):s.el,i=o?null:r,{i:l,r:a}=e,u=t&&t.r,c=l.refs===de?l.refs={}:l.refs,f=l.setupState,m=ce(f),g=f===de?ur:y=>ue(m,y);if(u!=null&&u!==a){if(Co(t),we(u))c[u]=null,g(u)&&(f[u]=null);else if(be(u)){u.value=null;const y=t;y.k&&(c[y.k]=null)}}if(ee(a))Cn(a,l,12,[i,c]);else{const y=we(a),v=be(a);if(y||v){const T=()=>{if(e.f){const p=y?g(a)?f[a]:c[a]:a.value;if(o)J(p)&&Ws(p,r);else if(J(p))p.includes(r)||p.push(r);else if(y)c[a]=[r],g(a)&&(f[a]=c[a]);else{const w=[r];a.value=w,e.k&&(c[e.k]=w)}}else y?(c[a]=i,g(a)&&(f[a]=i)):v&&(a.value=i,e.k&&(c[e.k]=i))};if(i){const p=()=>{T(),Kn.delete(e)};p.id=-1,Kn.set(e,p),Ae(p,n)}else Co(e),T()}}}function Co(e){const t=Kn.get(e);t&&(t.flags|=8,Kn.delete(e))}const So=e=>e.nodeType===8;ts().requestIdleCallback;ts().cancelIdleCallback;function Nl(e,t){if(So(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(So(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const dn=e=>!!e.type.__asyncLoader;function jl(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:o=200,hydrate:r,timeout:i,suspensible:l=!0,onError:a}=e;let u=null,c,f=0;const m=()=>(f++,u=null,g()),g=()=>{let y;return u||(y=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),a)return new Promise((T,p)=>{a(v,()=>T(m()),()=>p(v),f+1)});throw v}).then(v=>y!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),c=v,v)))};return Fl({name:"AsyncComponentWrapper",__asyncLoader:g,__asyncHydrate(y,v,T){let p=!1;(v.bu||(v.bu=[])).push(()=>p=!0);const w=()=>{p||T()},$=r?()=>{const k=r(w,U=>Nl(y,U));k&&(v.bum||(v.bum=[])).push(k)}:w;c?$():g().then(()=>!v.isUnmounted&&$())},get __asyncResolved(){return c},setup(){const y=Se;if(eo(y),c)return()=>On(c,y);const v=$=>{u=null,Sn($,y,13,!s)};if(l&&y.suspense||Jt)return g().then($=>()=>On($,y)).catch($=>(v($),()=>s?_e(s,{error:$}):null));const T=B(!1),p=B(),w=B(!!o);return o&&setTimeout(()=>{w.value=!1},o),i!=null&&setTimeout(()=>{if(!T.value&&!p.value){const $=new Error(`Async component timed out after ${i}ms.`);v($),p.value=$}},i),g().then(()=>{T.value=!0,y.parent&&to(y.parent.vnode)&&y.parent.update()}).catch($=>{v($),p.value=$}),()=>{if(T.value&&c)return On(c,y);if(p.value&&s)return _e(s,{error:p.value});if(n&&!w.value)return On(n,y)}}})}function On(e,t){const{ref:n,props:s,children:o,ce:r}=t.vnode,i=_e(e,s,o);return i.ref=n,i.ce=r,delete t.vnode.ce,i}const to=e=>e.type.__isKeepAlive;function Hl(e,t){Jr(e,"a",t)}function Ul(e,t){Jr(e,"da",t)}function Jr(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(is(t,s,n),n){let o=n.parent;for(;o&&o.parent;)to(o.parent.vnode)&&Kl(s,t,n,o),o=o.parent}}function Kl(e,t,n,s){const o=is(t,e,s,!0);no(()=>{Ws(s[t],o)},n)}function is(e,t,n=Se,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{mt();const l=Tn(n),a=Je(t,n,e,i);return l(),gt(),a});return s?o.unshift(r):o.push(r),r}}const bt=e=>(t,n=Se)=>{(!Jt||e==="sp")&&is(e,(...s)=>t(...s),n)},Bl=bt("bm"),wt=bt("m"),Vl=bt("bu"),Zr=bt("u"),Ut=bt("bum"),no=bt("um"),Wl=bt("sp"),ql=bt("rtg"),Gl=bt("rtc");function Yl(e,t=Se){is("ec",e,t)}const zl="components";function Xl(e,t){return Zl(zl,e,!0,t)||e}const Jl=Symbol.for("v-ndc");function Zl(e,t,n=!0,s=!1){const o=De||Se;if(o){const r=o.type;{const l=Da(r,!1);if(l&&(l===t||l===qe(t)||l===Qn(qe(t))))return r}const i=Eo(o[e]||r[e],t)||Eo(o.appContext[e],t);return!i&&s?r:i}}function Eo(e,t){return e&&(e[t]||e[qe(t)]||e[Qn(qe(t))])}function En(e,t,n,s){let o;const r=n,i=J(e);if(i||we(e)){const l=i&&ht(e);let a=!1,u=!1;l&&(a=!Ne(e),u=vt(e),e=ss(e)),o=new Array(e.length);for(let c=0,f=e.length;c<f;c++)o[c]=t(a?u?Xt(Xe(e[c])):Xe(e[c]):e[c],c,void 0,r)}else if(typeof e=="number"){o=new Array(e);for(let l=0;l<e;l++)o[l]=t(l+1,l,void 0,r)}else if(pe(e))if(e[Symbol.iterator])o=Array.from(e,(l,a)=>t(l,a,void 0,r));else{const l=Object.keys(e);o=new Array(l.length);for(let a=0,u=l.length;a<u;a++){const c=l[a];o[a]=t(e[c],c,a,r)}}else o=[];return o}const Os=e=>e?vi(e)?cs(e):Os(e.parent):null,pn=Ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Os(e.parent),$root:e=>Os(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ei(e),$forceUpdate:e=>e.f||(e.f=()=>{Qs(e.update)}),$nextTick:e=>e.n||(e.n=Mt.bind(e.proxy)),$watch:e=>Pl.bind(e)}),vs=(e,t)=>e!==de&&!e.__isScriptSetup&&ue(e,t),Ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(vs(s,t))return i[t]=1,s[t];if(o!==de&&ue(o,t))return i[t]=2,o[t];if(ue(r,t))return i[t]=3,r[t];if(n!==de&&ue(n,t))return i[t]=4,n[t];Is&&(i[t]=0)}}const u=pn[t];let c,f;if(u)return t==="$attrs"&&$e(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==de&&ue(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,ue(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return vs(o,t)?(o[t]=n,!0):s!==de&&ue(s,t)?(s[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:i}},l){let a;return!!(n[l]||e!==de&&l[0]!=="$"&&ue(e,l)||vs(t,l)||ue(r,l)||ue(s,l)||ue(pn,l)||ue(o.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function To(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Is=!0;function ea(e){const t=ei(e),n=e.proxy,s=e.ctx;Is=!1,t.beforeCreate&&$o(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:m,beforeUpdate:g,updated:y,activated:v,deactivated:T,beforeDestroy:p,beforeUnmount:w,destroyed:$,unmounted:k,render:U,renderTracked:te,renderTriggered:ie,errorCaptured:V,serverPrefetch:A,expose:G,inheritAttrs:ne,components:M,directives:F,filters:L}=t;if(u&&ta(u,s,null),i)for(const W in i){const oe=i[W];ee(oe)&&(s[W]=oe.bind(n))}if(o){const W=o.call(n,n);pe(W)&&(e.data=os(W))}if(Is=!0,r)for(const W in r){const oe=r[W],He=ee(oe)?oe.bind(n,n):ee(oe.get)?oe.get.bind(n,n):lt,ct=!ee(oe)&&ee(oe.set)?oe.set.bind(n):lt,Ue=je({get:He,set:ct});Object.defineProperty(s,W,{enumerable:!0,configurable:!0,get:()=>Ue.value,set:R=>Ue.value=R})}if(l)for(const W in l)Qr(l[W],s,n,W);if(a){const W=ee(a)?a.call(n):a;Reflect.ownKeys(W).forEach(oe=>{Br(oe,W[oe])})}c&&$o(c,e,"c");function q(W,oe){J(oe)?oe.forEach(He=>W(He.bind(n))):oe&&W(oe.bind(n))}if(q(Bl,f),q(wt,m),q(Vl,g),q(Zr,y),q(Hl,v),q(Ul,T),q(Yl,V),q(Gl,te),q(ql,ie),q(Ut,w),q(no,k),q(Wl,A),J(G))if(G.length){const W=e.exposed||(e.exposed={});G.forEach(oe=>{Object.defineProperty(W,oe,{get:()=>n[oe],set:He=>n[oe]=He,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===lt&&(e.render=U),ne!=null&&(e.inheritAttrs=ne),M&&(e.components=M),F&&(e.directives=F),A&&eo(e)}function ta(e,t,n=lt){J(e)&&(e=Rs(e));for(const s in e){const o=e[s];let r;pe(o)?"default"in o?r=kt(o.from||s,o.default,!0):r=kt(o.from||s):r=kt(o),be(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function $o(e,t,n){Je(J(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Qr(e,t,n,s){let o=s.includes(".")?Wr(n,s):()=>n[s];if(we(e)){const r=t[e];ee(r)&&ze(o,r)}else if(ee(e))ze(o,e.bind(n));else if(pe(e))if(J(e))e.forEach(r=>Qr(r,t,n,s));else{const r=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(r)&&ze(o,r,e)}}function ei(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let a;return l?a=l:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(u=>Bn(a,u,i,!0)),Bn(a,t,i)),pe(t)&&r.set(t,a),a}function Bn(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Bn(e,r,n,!0),o&&o.forEach(i=>Bn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=na[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const na={data:ko,props:Ao,emits:Ao,methods:on,computed:on,beforeCreate:ke,created:ke,beforeMount:ke,mounted:ke,beforeUpdate:ke,updated:ke,beforeDestroy:ke,beforeUnmount:ke,destroyed:ke,unmounted:ke,activated:ke,deactivated:ke,errorCaptured:ke,serverPrefetch:ke,components:on,directives:on,watch:oa,provide:ko,inject:sa};function ko(e,t){return t?e?function(){return Ce(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function sa(e,t){return on(Rs(e),Rs(t))}function Rs(e){if(J(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ke(e,t){return e?[...new Set([].concat(e,t))]:t}function on(e,t){return e?Ce(Object.create(null),e,t):t}function Ao(e,t){return e?J(e)&&J(t)?[...new Set([...e,...t])]:Ce(Object.create(null),To(e),To(t??{})):t}function oa(e,t){if(!e)return t;if(!t)return e;const n=Ce(Object.create(null),e);for(const s in t)n[s]=ke(e[s],t[s]);return n}function ti(){return{app:null,config:{isNativeTag:ur,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ra=0;function ia(e,t){return function(s,o=null){ee(s)||(s=Ce({},s)),o!=null&&!pe(o)&&(o=null);const r=ti(),i=new WeakSet,l=[];let a=!1;const u=r.app={_uid:ra++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:Na,get config(){return r.config},set config(c){},use(c,...f){return i.has(c)||(c&&ee(c.install)?(i.add(c),c.install(u,...f)):ee(c)&&(i.add(c),c(u,...f))),u},mixin(c){return r.mixins.includes(c)||r.mixins.push(c),u},component(c,f){return f?(r.components[c]=f,u):r.components[c]},directive(c,f){return f?(r.directives[c]=f,u):r.directives[c]},mount(c,f,m){if(!a){const g=u._ceVNode||_e(s,o);return g.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(g,c,m),a=!0,u._container=c,c.__vue_app__=u,cs(g.component)}},onUnmount(c){l.push(c)},unmount(){a&&(Je(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,f){return r.provides[c]=f,u},runWithContext(c){const f=jt;jt=u;try{return c()}finally{jt=f}}};return u}}let jt=null;const la=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${qe(t)}Modifiers`]||e[`${At(t)}Modifiers`];function aa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||de;let o=n;const r=t.startsWith("update:"),i=r&&la(s,t.slice(7));i&&(i.trim&&(o=n.map(c=>we(c)?c.trim():c)),i.number&&(o=n.map(es)));let l,a=s[l=ds(t)]||s[l=ds(qe(t))];!a&&r&&(a=s[l=ds(At(t))]),a&&Je(a,e,6,o);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Je(u,e,6,o)}}const ca=new WeakMap;function ni(e,t,n=!1){const s=n?ca:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ee(e)){const a=u=>{const c=ni(u,t,!0);c&&(l=!0,Ce(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(pe(e)&&s.set(e,null),null):(J(r)?r.forEach(a=>i[a]=null):Ce(i,r),pe(e)&&s.set(e,i),i)}function ls(e,t){return!e||!zn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,At(t))||ue(e,t))}function Mo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:m,setupState:g,ctx:y,inheritAttrs:v}=e,T=Un(e);let p,w;try{if(n.shapeFlag&4){const k=o||s,U=k;p=rt(u.call(U,k,c,f,g,m,y)),w=l}else{const k=t;p=rt(k.length>1?k(f,{attrs:l,slots:i,emit:a}):k(f,null)),w=t.props?l:ua(l)}}catch(k){hn.length=0,Sn(k,e,1),p=_e(yt)}let $=p;if(w&&v!==!1){const k=Object.keys(w),{shapeFlag:U}=$;k.length&&U&7&&(r&&k.some(Vs)&&(w=fa(w,r)),$=Ht($,w,!1,!0))}return n.dirs&&($=Ht($,null,!1,!0),$.dirs=$.dirs?$.dirs.concat(n.dirs):n.dirs),n.transition&&bn($,n.transition),p=$,Un(T),p}const ua=e=>{let t;for(const n in e)(n==="class"||n==="style"||zn(n))&&((t||(t={}))[n]=e[n]);return t},fa=(e,t)=>{const n={};for(const s in e)(!Vs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function da(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:a}=t,u=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Po(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const m=c[f];if(i[m]!==s[m]&&!ls(u,m))return!0}}}else return(o||l)&&(!l||!l.$stable)?!0:s===i?!1:s?i?Po(s,i,u):!0:!!i;return!1}function Po(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let o=0;o<s.length;o++){const r=s[o];if(t[r]!==e[r]&&!ls(n,r))return!0}return!1}function pa({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const si={},oi=()=>Object.create(si),ri=e=>Object.getPrototypeOf(e)===si;function ha(e,t,n,s=!1){const o={},r=oi();e.propsDefaults=Object.create(null),ii(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:hl(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function ma(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=ce(o),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f<c.length;f++){let m=c[f];if(ls(e.emitsOptions,m))continue;const g=t[m];if(a)if(ue(r,m))g!==r[m]&&(r[m]=g,u=!0);else{const y=qe(m);o[y]=Ls(a,l,y,g,e,!1)}else g!==r[m]&&(r[m]=g,u=!0)}}}else{ii(e,t,o,r)&&(u=!0);let c;for(const f in l)(!t||!ue(t,f)&&((c=At(f))===f||!ue(t,c)))&&(a?n&&(n[f]!==void 0||n[c]!==void 0)&&(o[f]=Ls(a,l,f,void 0,e,!0)):delete o[f]);if(r!==l)for(const f in r)(!t||!ue(t,f))&&(delete r[f],u=!0)}u&&dt(e.attrs,"set","")}function ii(e,t,n,s){const[o,r]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(ln(a))continue;const u=t[a];let c;o&&ue(o,c=qe(a))?!r||!r.includes(c)?n[c]=u:(l||(l={}))[c]=u:ls(e.emitsOptions,a)||(!(a in s)||u!==s[a])&&(s[a]=u,i=!0)}if(r){const a=ce(n),u=l||de;for(let c=0;c<r.length;c++){const f=r[c];n[f]=Ls(o,a,f,u[f],e,!ue(u,f))}}return i}function Ls(e,t,n,s,o,r){const i=e[n];if(i!=null){const l=ue(i,"default");if(l&&s===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&ee(a)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const c=Tn(o);s=u[n]=a.call(null,t),c()}}else s=a;o.ce&&o.ce._setProp(n,s)}i[0]&&(r&&!l?s=!1:i[1]&&(s===""||s===At(n))&&(s=!0))}return s}const ga=new WeakMap;function li(e,t,n=!1){const s=n?ga:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,i={},l=[];let a=!1;if(!ee(e)){const c=f=>{a=!0;const[m,g]=li(f,t,!0);Ce(i,m),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!a)return pe(e)&&s.set(e,qt),qt;if(J(r))for(let c=0;c<r.length;c++){const f=qe(r[c]);Oo(f)&&(i[f]=de)}else if(r)for(const c in r){const f=qe(c);if(Oo(f)){const m=r[c],g=i[f]=J(m)||ee(m)?{type:m}:Ce({},m),y=g.type;let v=!1,T=!0;if(J(y))for(let p=0;p<y.length;++p){const w=y[p],$=ee(w)&&w.name;if($==="Boolean"){v=!0;break}else $==="String"&&(T=!1)}else v=ee(y)&&y.name==="Boolean";g[0]=v,g[1]=T,(v||ue(g,"default"))&&l.push(f)}}const u=[i,l];return pe(e)&&s.set(e,u),u}function Oo(e){return e[0]!=="$"&&!ln(e)}const so=e=>e==="_"||e==="_ctx"||e==="$stable",oo=e=>J(e)?e.map(rt):[rt(e)],va=(e,t,n)=>{if(t._n)return t;const s=Kr((...o)=>oo(t(...o)),n);return s._c=!1,s},ai=(e,t,n)=>{const s=e._ctx;for(const o in e){if(so(o))continue;const r=e[o];if(ee(r))t[o]=va(o,r,s);else if(r!=null){const i=oo(r);t[o]=()=>i}}},ci=(e,t)=>{const n=oo(t);e.slots.default=()=>n},ui=(e,t,n)=>{for(const s in t)(n||!so(s))&&(e[s]=t[s])},ya=(e,t,n)=>{const s=e.slots=oi();if(e.vnode.shapeFlag&32){const o=t._;o?(ui(s,t,n),n&&hr(s,"_",o,!0)):ai(t,s)}else t&&ci(e,t)},ba=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=de;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:ui(o,t,n):(r=!t.$stable,ai(t,o)),i=t}else t&&(ci(e,t),i={default:1});if(r)for(const l in o)!so(l)&&i[l]==null&&delete o[l]},Ae=Sa;function wa(e){return _a(e)}function _a(e,t){const n=ts();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:m,setScopeId:g=lt,insertStaticContent:y}=e,v=(d,h,b,S=null,x=null,C=null,D=void 0,O=null,P=!!h.dynamicChildren)=>{if(d===h)return;d&&!Wt(d,h)&&(S=X(d),R(d,x,C,!0),d=null),h.patchFlag===-2&&(P=!1,h.dynamicChildren=null);const{type:E,ref:Z,shapeFlag:N}=h;switch(E){case as:T(d,h,b,S);break;case yt:p(d,h,b,S);break;case bs:d==null&&w(h,b,S,D);break;case ye:M(d,h,b,S,x,C,D,O,P);break;default:N&1?U(d,h,b,S,x,C,D,O,P):N&6?F(d,h,b,S,x,C,D,O,P):(N&64||N&128)&&E.process(d,h,b,S,x,C,D,O,P,Re)}Z!=null&&x?fn(Z,d&&d.ref,C,h||d,!h):Z==null&&d&&d.ref!=null&&fn(d.ref,null,C,d,!0)},T=(d,h,b,S)=>{if(d==null)s(h.el=l(h.children),b,S);else{const x=h.el=d.el;h.children!==d.children&&u(x,h.children)}},p=(d,h,b,S)=>{d==null?s(h.el=a(h.children||""),b,S):h.el=d.el},w=(d,h,b,S)=>{[d.el,d.anchor]=y(d.children,h,b,S,d.el,d.anchor)},$=({el:d,anchor:h},b,S)=>{let x;for(;d&&d!==h;)x=m(d),s(d,b,S),d=x;s(h,b,S)},k=({el:d,anchor:h})=>{let b;for(;d&&d!==h;)b=m(d),o(d),d=b;o(h)},U=(d,h,b,S,x,C,D,O,P)=>{if(h.type==="svg"?D="svg":h.type==="math"&&(D="mathml"),d==null)te(h,b,S,x,C,D,O,P);else{const E=d.el&&d.el._isVueCE?d.el:null;try{E&&E._beginPatch(),A(d,h,x,C,D,O,P)}finally{E&&E._endPatch()}}},te=(d,h,b,S,x,C,D,O)=>{let P,E;const{props:Z,shapeFlag:N,transition:Y,dirs:Q}=d;if(P=d.el=i(d.type,C,Z&&Z.is,Z),N&8?c(P,d.children):N&16&&V(d.children,P,null,S,x,ys(d,C),D,O),Q&&Ot(d,null,S,"created"),ie(P,d,d.scopeId,D,S),Z){for(const he in Z)he!=="value"&&!ln(he)&&r(P,he,null,Z[he],C,S);"value"in Z&&r(P,"value",null,Z.value,C),(E=Z.onVnodeBeforeMount)&&nt(E,S,d)}Q&&Ot(d,null,S,"beforeMount");const le=xa(x,Y);le&&Y.beforeEnter(P),s(P,h,b),((E=Z&&Z.onVnodeMounted)||le||Q)&&Ae(()=>{E&&nt(E,S,d),le&&Y.enter(P),Q&&Ot(d,null,S,"mounted")},x)},ie=(d,h,b,S,x)=>{if(b&&g(d,b),S)for(let C=0;C<S.length;C++)g(d,S[C]);if(x){let C=x.subTree;if(h===C||pi(C.type)&&(C.ssContent===h||C.ssFallback===h)){const D=x.vnode;ie(d,D,D.scopeId,D.slotScopeIds,x.parent)}}},V=(d,h,b,S,x,C,D,O,P=0)=>{for(let E=P;E<d.length;E++){const Z=d[E]=O?Tt(d[E]):rt(d[E]);v(null,Z,h,b,S,x,C,D,O)}},A=(d,h,b,S,x,C,D)=>{const O=h.el=d.el;let{patchFlag:P,dynamicChildren:E,dirs:Z}=h;P|=d.patchFlag&16;const N=d.props||de,Y=h.props||de;let Q;if(b&&It(b,!1),(Q=Y.onVnodeBeforeUpdate)&&nt(Q,b,h,d),Z&&Ot(h,d,b,"beforeUpdate"),b&&It(b,!0),(N.innerHTML&&Y.innerHTML==null||N.textContent&&Y.textContent==null)&&c(O,""),E?G(d.dynamicChildren,E,O,b,S,ys(h,x),C):D||oe(d,h,O,null,b,S,ys(h,x),C,!1),P>0){if(P&16)ne(O,N,Y,b,x);else if(P&2&&N.class!==Y.class&&r(O,"class",null,Y.class,x),P&4&&r(O,"style",N.style,Y.style,x),P&8){const le=h.dynamicProps;for(let he=0;he<le.length;he++){const fe=le[he],Oe=N[fe],Ie=Y[fe];(Ie!==Oe||fe==="value")&&r(O,fe,Oe,Ie,x,b)}}P&1&&d.children!==h.children&&c(O,h.children)}else!D&&E==null&&ne(O,N,Y,b,x);((Q=Y.onVnodeUpdated)||Z)&&Ae(()=>{Q&&nt(Q,b,h,d),Z&&Ot(h,d,b,"updated")},S)},G=(d,h,b,S,x,C,D)=>{for(let O=0;O<h.length;O++){const P=d[O],E=h[O],Z=P.el&&(P.type===ye||!Wt(P,E)||P.shapeFlag&198)?f(P.el):b;v(P,E,Z,null,S,x,C,D,!0)}},ne=(d,h,b,S,x)=>{if(h!==b){if(h!==de)for(const C in h)!ln(C)&&!(C in b)&&r(d,C,h[C],null,x,S);for(const C in b){if(ln(C))continue;const D=b[C],O=h[C];D!==O&&C!=="value"&&r(d,C,O,D,x,S)}"value"in b&&r(d,"value",h.value,b.value,x)}},M=(d,h,b,S,x,C,D,O,P)=>{const E=h.el=d?d.el:l(""),Z=h.anchor=d?d.anchor:l("");let{patchFlag:N,dynamicChildren:Y,slotScopeIds:Q}=h;Q&&(O=O?O.concat(Q):Q),d==null?(s(E,b,S),s(Z,b,S),V(h.children||[],b,Z,x,C,D,O,P)):N>0&&N&64&&Y&&d.dynamicChildren&&d.dynamicChildren.length===Y.length?(G(d.dynamicChildren,Y,b,x,C,D,O),(h.key!=null||x&&h===x.subTree)&&ro(d,h,!0)):oe(d,h,b,Z,x,C,D,O,P)},F=(d,h,b,S,x,C,D,O,P)=>{h.slotScopeIds=O,d==null?h.shapeFlag&512?x.ctx.activate(h,b,S,D,P):L(h,b,S,x,C,D,P):z(d,h,P)},L=(d,h,b,S,x,C,D)=>{const O=d.component=Pa(d,S,x);if(to(d)&&(O.ctx.renderer=Re),Oa(O,!1,D),O.asyncDep){if(x&&x.registerDep(O,q,D),!d.el){const P=O.subTree=_e(yt);p(null,P,h,b),d.placeholder=P.el}}else q(O,d,h,b,x,C,D)},z=(d,h,b)=>{const S=h.component=d.component;if(da(d,h,b))if(S.asyncDep&&!S.asyncResolved){W(S,h,b);return}else S.next=h,S.update();else h.el=d.el,S.vnode=h},q=(d,h,b,S,x,C,D)=>{const O=()=>{if(d.isMounted){let{next:N,bu:Y,u:Q,parent:le,vnode:he}=d;{const et=fi(d);if(et){N&&(N.el=he.el,W(d,N,D)),et.asyncDep.then(()=>{d.isUnmounted||O()});return}}let fe=N,Oe;It(d,!1),N?(N.el=he.el,W(d,N,D)):N=he,Y&&Rn(Y),(Oe=N.props&&N.props.onVnodeBeforeUpdate)&&nt(Oe,le,N,he),It(d,!0);const Ie=Mo(d),Qe=d.subTree;d.subTree=Ie,v(Qe,Ie,f(Qe.el),X(Qe),d,x,C),N.el=Ie.el,fe===null&&pa(d,Ie.el),Q&&Ae(Q,x),(Oe=N.props&&N.props.onVnodeUpdated)&&Ae(()=>nt(Oe,le,N,he),x)}else{let N;const{el:Y,props:Q}=h,{bm:le,m:he,parent:fe,root:Oe,type:Ie}=d,Qe=dn(h);It(d,!1),le&&Rn(le),!Qe&&(N=Q&&Q.onVnodeBeforeMount)&&nt(N,fe,h),It(d,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Ie);const et=d.subTree=Mo(d);v(null,et,b,S,d,x,C),h.el=et.el}if(he&&Ae(he,x),!Qe&&(N=Q&&Q.onVnodeMounted)){const et=h;Ae(()=>nt(N,fe,et),x)}(h.shapeFlag&256||fe&&dn(fe.vnode)&&fe.vnode.shapeFlag&256)&&d.a&&Ae(d.a,x),d.isMounted=!0,h=b=S=null}};d.scope.on();const P=d.effect=new _r(O);d.scope.off();const E=d.update=P.run.bind(P),Z=d.job=P.runIfDirty.bind(P);Z.i=d,Z.id=d.uid,P.scheduler=()=>Qs(Z),It(d,!0),E()},W=(d,h,b)=>{h.component=d;const S=d.vnode.props;d.vnode=h,d.next=null,ma(d,h.props,S,b),ba(d,h.children,b),mt(),bo(d),gt()},oe=(d,h,b,S,x,C,D,O,P=!1)=>{const E=d&&d.children,Z=d?d.shapeFlag:0,N=h.children,{patchFlag:Y,shapeFlag:Q}=h;if(Y>0){if(Y&128){ct(E,N,b,S,x,C,D,O,P);return}else if(Y&256){He(E,N,b,S,x,C,D,O,P);return}}Q&8?(Z&16&&Pe(E,x,C),N!==E&&c(b,N)):Z&16?Q&16?ct(E,N,b,S,x,C,D,O,P):Pe(E,x,C,!0):(Z&8&&c(b,""),Q&16&&V(N,b,S,x,C,D,O,P))},He=(d,h,b,S,x,C,D,O,P)=>{d=d||qt,h=h||qt;const E=d.length,Z=h.length,N=Math.min(E,Z);let Y;for(Y=0;Y<N;Y++){const Q=h[Y]=P?Tt(h[Y]):rt(h[Y]);v(d[Y],Q,b,null,x,C,D,O,P)}E>Z?Pe(d,x,C,!0,!1,N):V(h,b,S,x,C,D,O,P,N)},ct=(d,h,b,S,x,C,D,O,P)=>{let E=0;const Z=h.length;let N=d.length-1,Y=Z-1;for(;E<=N&&E<=Y;){const Q=d[E],le=h[E]=P?Tt(h[E]):rt(h[E]);if(Wt(Q,le))v(Q,le,b,null,x,C,D,O,P);else break;E++}for(;E<=N&&E<=Y;){const Q=d[N],le=h[Y]=P?Tt(h[Y]):rt(h[Y]);if(Wt(Q,le))v(Q,le,b,null,x,C,D,O,P);else break;N--,Y--}if(E>N){if(E<=Y){const Q=Y+1,le=Q<Z?h[Q].el:S;for(;E<=Y;)v(null,h[E]=P?Tt(h[E]):rt(h[E]),b,le,x,C,D,O,P),E++}}else if(E>Y)for(;E<=N;)R(d[E],x,C,!0),E++;else{const Q=E,le=E,he=new Map;for(E=le;E<=Y;E++){const Le=h[E]=P?Tt(h[E]):rt(h[E]);Le.key!=null&&he.set(Le.key,E)}let fe,Oe=0;const Ie=Y-le+1;let Qe=!1,et=0;const Qt=new Array(Ie);for(E=0;E<Ie;E++)Qt[E]=0;for(E=Q;E<=N;E++){const Le=d[E];if(Oe>=Ie){R(Le,x,C,!0);continue}let tt;if(Le.key!=null)tt=he.get(Le.key);else for(fe=le;fe<=Y;fe++)if(Qt[fe-le]===0&&Wt(Le,h[fe])){tt=fe;break}tt===void 0?R(Le,x,C,!0):(Qt[tt-le]=E+1,tt>=et?et=tt:Qe=!0,v(Le,h[tt],b,null,x,C,D,O,P),Oe++)}const fo=Qe?Ca(Qt):qt;for(fe=fo.length-1,E=Ie-1;E>=0;E--){const Le=le+E,tt=h[Le],po=h[Le+1],ho=Le+1<Z?po.el||di(po):S;Qt[E]===0?v(null,tt,b,ho,x,C,D,O,P):Qe&&(fe<0||E!==fo[fe]?Ue(tt,b,ho,2):fe--)}}},Ue=(d,h,b,S,x=null)=>{const{el:C,type:D,transition:O,children:P,shapeFlag:E}=d;if(E&6){Ue(d.component.subTree,h,b,S);return}if(E&128){d.suspense.move(h,b,S);return}if(E&64){D.move(d,h,b,Re);return}if(D===ye){s(C,h,b);for(let N=0;N<P.length;N++)Ue(P[N],h,b,S);s(d.anchor,h,b);return}if(D===bs){$(d,h,b);return}if(S!==2&&E&1&&O)if(S===0)O.beforeEnter(C),s(C,h,b),Ae(()=>O.enter(C),x);else{const{leave:N,delayLeave:Y,afterLeave:Q}=O,le=()=>{d.ctx.isUnmounted?o(C):s(C,h,b)},he=()=>{C._isLeaving&&C[Dt](!0),N(C,()=>{le(),Q&&Q()})};Y?Y(C,le,he):he()}else s(C,h,b)},R=(d,h,b,S=!1,x=!1)=>{const{type:C,props:D,ref:O,children:P,dynamicChildren:E,shapeFlag:Z,patchFlag:N,dirs:Y,cacheIndex:Q}=d;if(N===-2&&(x=!1),O!=null&&(mt(),fn(O,null,b,d,!0),gt()),Q!=null&&(h.renderCache[Q]=void 0),Z&256){h.ctx.deactivate(d);return}const le=Z&1&&Y,he=!dn(d);let fe;if(he&&(fe=D&&D.onVnodeBeforeUnmount)&&nt(fe,h,d),Z&6)ge(d.component,b,S);else{if(Z&128){d.suspense.unmount(b,S);return}le&&Ot(d,null,h,"beforeUnmount"),Z&64?d.type.remove(d,h,b,Re,S):E&&!E.hasOnce&&(C!==ye||N>0&&N&64)?Pe(E,h,b,!1,!0):(C===ye&&N&384||!x&&Z&16)&&Pe(P,h,b),S&&j(d)}(he&&(fe=D&&D.onVnodeUnmounted)||le)&&Ae(()=>{fe&&nt(fe,h,d),le&&Ot(d,null,h,"unmounted")},b)},j=d=>{const{type:h,el:b,anchor:S,transition:x}=d;if(h===ye){re(b,S);return}if(h===bs){k(d);return}const C=()=>{o(b),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(d.shapeFlag&1&&x&&!x.persisted){const{leave:D,delayLeave:O}=x,P=()=>D(b,C);O?O(d.el,C,P):P()}else C()},re=(d,h)=>{let b;for(;d!==h;)b=m(d),o(d),d=b;o(h)},ge=(d,h,b)=>{const{bum:S,scope:x,job:C,subTree:D,um:O,m:P,a:E}=d;Io(P),Io(E),S&&Rn(S),x.stop(),C&&(C.flags|=8,R(D,d,h,b)),O&&Ae(O,h),Ae(()=>{d.isUnmounted=!0},h)},Pe=(d,h,b,S=!1,x=!1,C=0)=>{for(let D=C;D<d.length;D++)R(d[D],h,b,S,x)},X=d=>{if(d.shapeFlag&6)return X(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=m(d.anchor||d.el),b=h&&h[qr];return b?m(b):h};let H=!1;const xe=(d,h,b)=>{let S;d==null?h._vnode&&(R(h._vnode,null,null,!0),S=h._vnode.component):v(h._vnode||null,d,h,null,null,null,b),h._vnode=d,H||(H=!0,bo(S),jr(),H=!1)},Re={p:v,um:R,m:Ue,r:j,mt:L,mc:V,pc:oe,pbc:G,n:X,o:e};return{render:xe,hydrate:void 0,createApp:ia(xe)}}function ys({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function It({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function xa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ro(e,t,n=!1){const s=e.children,o=t.children;if(J(s)&&J(o))for(let r=0;r<s.length;r++){const i=s[r];let l=o[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=o[r]=Tt(o[r]),l.el=i.el),!n&&l.patchFlag!==-2&&ro(i,l)),l.type===as&&(l.patchFlag!==-1?l.el=i.el:l.__elIndex=r+(e.type===ye?1:0)),l.type===yt&&!l.el&&(l.el=i.el)}}function Ca(e){const t=e.slice(),n=[0];let s,o,r,i,l;const a=e.length;for(s=0;s<a;s++){const u=e[s];if(u!==0){if(o=n[n.length-1],e[o]<u){t[s]=o,n.push(s);continue}for(r=0,i=n.length-1;r<i;)l=r+i>>1,e[n[l]]<u?r=l+1:i=l;u<e[n[r]]&&(r>0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}function fi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fi(t)}function Io(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function di(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?di(t.subTree):null}const pi=e=>e.__isSuspense;function Sa(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):$l(e)}const ye=Symbol.for("v-fgt"),as=Symbol.for("v-txt"),yt=Symbol.for("v-cmt"),bs=Symbol.for("v-stc"),hn=[];let Fe=null;function I(e=!1){hn.push(Fe=e?null:[])}function Ea(){hn.pop(),Fe=hn[hn.length-1]||null}let wn=1;function Ro(e,t=!1){wn+=e,e<0&&Fe&&t&&(Fe.hasOnce=!0)}function hi(e){return e.dynamicChildren=wn>0?Fe||qt:null,Ea(),wn>0&&Fe&&Fe.push(e),e}function K(e,t,n,s,o,r){return hi(_(e,t,n,s,o,r,!0))}function Be(e,t,n,s,o){return hi(_e(e,t,n,s,o,!0))}function mi(e){return e?e.__v_isVNode===!0:!1}function Wt(e,t){return e.type===t.type&&e.key===t.key}const gi=({key:e})=>e??null,Dn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||be(e)||ee(e)?{i:De,r:e,k:t,f:!!n}:e:null);function _(e,t=null,n=null,s=0,o=null,r=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&gi(t),ref:t&&Dn(t),scopeId:Ur,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:De};return l?(io(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=we(n)?8:16),wn>0&&!i&&Fe&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Fe.push(a),a}const _e=Ta;function Ta(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===Jl)&&(e=yt),mi(e)){const l=Ht(e,t,!0);return n&&io(l,n),wn>0&&!r&&Fe&&(l.shapeFlag&6?Fe[Fe.indexOf(e)]=l:Fe.push(l)),l.patchFlag=-2,l}if(Fa(e)&&(e=e.__vccOpts),t){t=$a(t);let{class:l,style:a}=t;l&&!we(l)&&(t.class=We(l)),pe(a)&&(rs(a)&&!J(a)&&(a=Ce({},a)),t.style=xn(a))}const i=we(e)?1:pi(e)?128:Ol(e)?64:pe(e)?4:ee(e)?2:0;return _(e,t,n,s,o,i,r,!0)}function $a(e){return e?rs(e)||ri(e)?Ce({},e):e:null}function Ht(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:a}=e,u=t?ka(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&gi(u),ref:t&&t.ref?n&&r?J(r)?r.concat(Dn(t)):[r,Dn(t)]:Dn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ht(e.ssContent),ssFallback:e.ssFallback&&Ht(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&bn(c,a.clone(c)),c}function Ve(e=" ",t=0){return _e(as,null,e,t)}function ae(e="",t=!1){return t?(I(),Be(yt,null,e)):_e(yt,null,e)}function rt(e){return e==null||typeof e=="boolean"?_e(yt):J(e)?_e(ye,null,e.slice()):mi(e)?Tt(e):_e(as,null,String(e))}function Tt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ht(e)}function io(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),io(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!ri(t)?t._ctx=De:o===3&&De&&(De.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:De},n=32):(t=String(t),s&64?(n=16,t=[Ve(t)]):n=8);e.children=t,e.shapeFlag|=n}function ka(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const o in s)if(o==="class")t.class!==s.class&&(t.class=We([t.class,s.class]));else if(o==="style")t.style=xn([t.style,s.style]);else if(zn(o)){const r=t[o],i=s[o];i&&r!==i&&!(J(r)&&r.includes(i))&&(t[o]=r?[].concat(r,i):i)}else o!==""&&(t[o]=s[o])}return t}function nt(e,t,n,s=null){Je(e,t,7,[n,s])}const Aa=ti();let Ma=0;function Pa(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||Aa,r={uid:Ma++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new yr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:li(s,o),emitsOptions:ni(s,o),emit:null,emitted:null,propsDefaults:de,inheritAttrs:s.inheritAttrs,ctx:de,data:de,props:de,attrs:de,slots:de,refs:de,setupState:de,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=aa.bind(null,r),e.ce&&e.ce(r),r}let Se=null;const lo=()=>Se||De;let Vn,Ds;{const e=ts(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};Vn=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Ds=t("__VUE_SSR_SETTERS__",n=>Jt=n)}const Tn=e=>{const t=Se;return Vn(e),e.scope.on(),()=>{e.scope.off(),Vn(t)}},Lo=()=>{Se&&Se.scope.off(),Vn(null)};function vi(e){return e.vnode.shapeFlag&4}let Jt=!1;function Oa(e,t=!1,n=!1){t&&Ds(t);const{props:s,children:o}=e.vnode,r=vi(e);ha(e,s,r,t),ya(e,o,n||t);const i=r?Ia(e,t):void 0;return t&&Ds(!1),i}function Ia(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ql);const{setup:s}=n;if(s){mt();const o=e.setupContext=s.length>1?La(e):null,r=Tn(e),i=Cn(s,e,0,[e.props,o]),l=fr(i);if(gt(),r(),(l||e.sp)&&!dn(e)&&eo(e),l){if(i.then(Lo,Lo),t)return i.then(a=>{Do(e,a)}).catch(a=>{Sn(a,e,0)});e.asyncDep=i}else Do(e,i)}else yi(e)}function Do(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:pe(t)&&(e.setupState=Dr(t)),yi(e)}function yi(e,t,n){const s=e.type;e.render||(e.render=s.render||lt);{const o=Tn(e);mt();try{ea(e)}finally{gt(),o()}}}const Ra={get(e,t){return $e(e,"get",""),e[t]}};function La(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ra),slots:e.slots,emit:e.emit,expose:t}}function cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Dr(Zs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in pn)return pn[n](e)},has(t,n){return n in t||n in pn}})):e.proxy}function Da(e,t=!0){return ee(e)?e.displayName||e.name:e.name||t&&e.__name}function Fa(e){return ee(e)&&"__vccOpts"in e}const je=(e,t)=>xl(e,t,Jt),Na="3.5.27";let Fs;const Fo=typeof window<"u"&&window.trustedTypes;if(Fo)try{Fs=Fo.createPolicy("vue",{createHTML:e=>e})}catch{}const bi=Fs?e=>Fs.createHTML(e):e=>e,ja="http://www.w3.org/2000/svg",Ha="http://www.w3.org/1998/Math/MathML",ft=typeof document<"u"?document:null,No=ft&&ft.createElement("template"),Ua={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?ft.createElementNS(ja,e):t==="mathml"?ft.createElementNS(Ha,e):n?ft.createElement(e,{is:n}):ft.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>ft.createTextNode(e),createComment:e=>ft.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ft.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{No.innerHTML=bi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=No.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},_t="transition",tn="animation",Zt=Symbol("_vtc"),wi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ka=Ce({},Ll,wi),Rt=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},jo=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function Ba(e){const t={};for(const M in e)M in wi||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:s,duration:o,enterFromClass:r=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,y=Va(o),v=y&&y[0],T=y&&y[1],{onBeforeEnter:p,onEnter:w,onEnterCancelled:$,onLeave:k,onLeaveCancelled:U,onBeforeAppear:te=p,onAppear:ie=w,onAppearCancelled:V=$}=t,A=(M,F,L,z)=>{M._enterCancelled=z,xt(M,F?c:l),xt(M,F?u:i),L&&L()},G=(M,F)=>{M._isLeaving=!1,xt(M,f),xt(M,g),xt(M,m),F&&F()},ne=M=>(F,L)=>{const z=M?ie:w,q=()=>A(F,M,L);Rt(z,[F,q]),Ho(()=>{xt(F,M?a:r),st(F,M?c:l),jo(z)||Uo(F,s,v,q)})};return Ce(t,{onBeforeEnter(M){Rt(p,[M]),st(M,r),st(M,i)},onBeforeAppear(M){Rt(te,[M]),st(M,a),st(M,u)},onEnter:ne(!1),onAppear:ne(!0),onLeave(M,F){M._isLeaving=!0;const L=()=>G(M,F);st(M,f),M._enterCancelled?(st(M,m),Ns(M)):(Ns(M),st(M,m)),Ho(()=>{M._isLeaving&&(xt(M,f),st(M,g),jo(k)||Uo(M,s,T,L))}),Rt(k,[M,L])},onEnterCancelled(M){A(M,!1,void 0,!0),Rt($,[M])},onAppearCancelled(M){A(M,!0,void 0,!0),Rt(V,[M])},onLeaveCancelled(M){G(M),Rt(U,[M])}})}function Va(e){if(e==null)return null;if(pe(e))return[ws(e.enter),ws(e.leave)];{const t=ws(e);return[t,t]}}function ws(e){return ji(e)}function st(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Zt]||(e[Zt]=new Set)).add(t)}function xt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Zt];n&&(n.delete(t),n.size||(e[Zt]=void 0))}function Ho(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Wa=0;function Uo(e,t,n,s){const o=e._endId=++Wa,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:i,timeout:l,propCount:a}=_i(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,m),r()},m=g=>{g.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,m)}function _i(e,t){const n=window.getComputedStyle(e),s=y=>(n[y]||"").split(", "),o=s(`${_t}Delay`),r=s(`${_t}Duration`),i=Ko(o,r),l=s(`${tn}Delay`),a=s(`${tn}Duration`),u=Ko(l,a);let c=null,f=0,m=0;t===_t?i>0&&(c=_t,f=i,m=r.length):t===tn?u>0&&(c=tn,f=u,m=a.length):(f=Math.max(i,u),c=f>0?i>u?_t:tn:null,m=c?c===_t?r.length:a.length:0);const g=c===_t&&/\b(?:transform|all)(?:,|$)/.test(s(`${_t}Property`).toString());return{type:c,timeout:f,propCount:m,hasTransform:g}}function Ko(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>Bo(n)+Bo(e[s])))}function Bo(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ns(e){return(e?e.ownerDocument:document).body.offsetHeight}function qa(e,t,n){const s=e[Zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Wn=Symbol("_vod"),xi=Symbol("_vsh"),rn={name:"show",beforeMount(e,{value:t},{transition:n}){e[Wn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):nn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),nn(e,!0),s.enter(e)):s.leave(e,()=>{nn(e,!1)}):nn(e,t))},beforeUnmount(e,{value:t}){nn(e,t)}};function nn(e,t){e.style.display=t?e[Wn]:"none",e[xi]=!t}const Ga=Symbol(""),Ya=/(?:^|;)\s*display\s*:/;function za(e,t,n){const s=e.style,o=we(n);let r=!1;if(n&&!o){if(t)if(we(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Fn(s,l,"")}else for(const i in t)n[i]==null&&Fn(s,i,"");for(const i in n)i==="display"&&(r=!0),Fn(s,i,n[i])}else if(o){if(t!==n){const i=s[Ga];i&&(n+=";"+i),s.cssText=n,r=Ya.test(n)}}else t&&e.removeAttribute("style");Wn in e&&(e[Wn]=r?s.display:"",e[xi]&&(s.display="none"))}const Vo=/\s*!important$/;function Fn(e,t,n){if(J(n))n.forEach(s=>Fn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Xa(e,t);Vo.test(n)?e.setProperty(At(s),n.replace(Vo,""),"important"):e[s]=n}}const Wo=["Webkit","Moz","ms"],_s={};function Xa(e,t){const n=_s[t];if(n)return n;let s=qe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Qn(s);for(let o=0;o<Wo.length;o++){const r=Wo[o]+s;if(r in e)return _s[t]=r}return t}const qo="http://www.w3.org/1999/xlink";function Go(e,t,n,s,o,r=Wi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(qo,t.slice(6,t.length)):e.setAttributeNS(qo,t,n):n==null||r&&!mr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":at(n)?String(n):n)}function Yo(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?bi(n):n);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?e.getAttribute("value")||"":e.value,a=n==null?e.type==="checkbox"?"on":"":String(n);(l!==a||!("_value"in e))&&(e.value=a),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=mr(n):n==null&&l==="string"?(n="",i=!0):l==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(o||t)}function Ft(e,t,n,s){e.addEventListener(t,n,s)}function Ja(e,t,n,s){e.removeEventListener(t,n,s)}const zo=Symbol("_vei");function Za(e,t,n,s,o=null){const r=e[zo]||(e[zo]={}),i=r[t];if(s&&i)i.value=s;else{const[l,a]=Qa(t);if(s){const u=r[t]=nc(s,o);Ft(e,l,u,a)}else i&&(Ja(e,l,i,a),r[t]=void 0)}}const Xo=/(?:Once|Passive|Capture)$/;function Qa(e){let t;if(Xo.test(e)){t={};let s;for(;s=e.match(Xo);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):At(e.slice(2)),t]}let xs=0;const ec=Promise.resolve(),tc=()=>xs||(ec.then(()=>xs=0),xs=Date.now());function nc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Je(sc(s,n.value),t,5,[s])};return n.value=e,n.attached=tc(),n}function sc(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Jo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,oc=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?qa(e,s,i):t==="style"?za(e,n,s):zn(t)?Vs(t)||Za(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):rc(e,t,s,i))?(Yo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Go(e,t,s,i,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!we(s))?Yo(e,qe(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Go(e,t,s,i))};function rc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Jo(t)&&ee(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Jo(t)&&we(n)?!1:t in e}const Ci=new WeakMap,Si=new WeakMap,qn=Symbol("_moveCb"),Zo=Symbol("_enterCb"),ic=e=>(delete e.props.mode,e),lc=ic({name:"TransitionGroup",props:Ce({},Ka,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=lo(),s=Rl();let o,r;return Zr(()=>{if(!o.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!dc(o[0].el,n.vnode.el,i)){o=[];return}o.forEach(cc),o.forEach(uc);const l=o.filter(fc);Ns(n.vnode.el),l.forEach(a=>{const u=a.el,c=u.style;st(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[qn]=m=>{m&&m.target!==u||(!m||m.propertyName.endsWith("transform"))&&(u.removeEventListener("transitionend",f),u[qn]=null,xt(u,i))};u.addEventListener("transitionend",f)}),o=[]}),()=>{const i=ce(e),l=Ba(i);let a=i.tag||ye;if(o=[],r)for(let u=0;u<r.length;u++){const c=r[u];c.el&&c.el instanceof Element&&(o.push(c),bn(c,Ps(c,l,s,n)),Ci.set(c,{left:c.el.offsetLeft,top:c.el.offsetTop}))}r=t.default?Xr(t.default()):[];for(let u=0;u<r.length;u++){const c=r[u];c.key!=null&&bn(c,Ps(c,l,s,n))}return _e(a,null,r)}}}),ac=lc;function cc(e){const t=e.el;t[qn]&&t[qn](),t[Zo]&&t[Zo]()}function uc(e){Si.set(e,{left:e.el.offsetLeft,top:e.el.offsetTop})}function fc(e){const t=Ci.get(e),n=Si.get(e),s=t.left-n.left,o=t.top-n.top;if(s||o){const r=e.el.style;return r.transform=r.webkitTransform=`translate(${s}px,${o}px)`,r.transitionDuration="0s",e}}function dc(e,t,n){const s=e.cloneNode(),o=e[Zt];o&&o.forEach(l=>{l.split(/\s+/).forEach(a=>a&&s.classList.remove(a))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:i}=_i(s);return r.removeChild(s),i}const Gn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return J(t)?n=>Rn(t,n):t};function pc(e){e.target.composing=!0}function Qo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const zt=Symbol("_assign");function er(e,t,n){return t&&(e=e.trim()),n&&(e=es(e)),e}const us={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[zt]=Gn(o);const r=s||o.props&&o.props.type==="number";Ft(e,t?"change":"input",i=>{i.target.composing||e[zt](er(e.value,n,r))}),(n||r)&&Ft(e,"change",()=>{e.value=er(e.value,n,r)}),t||(Ft(e,"compositionstart",pc),Ft(e,"compositionend",Qo),Ft(e,"change",Qo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[zt]=Gn(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?es(e.value):e.value,a=t??"";l!==a&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a))}},hc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Xn(t);Ft(e,"change",()=>{const r=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?es(Yn(i)):Yn(i));e[zt](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,Mt(()=>{e._assigning=!1})}),e[zt]=Gn(s)},mounted(e,{value:t}){tr(e,t)},beforeUpdate(e,t,n){e[zt]=Gn(n)},updated(e,{value:t}){e._assigning||tr(e,t)}};function tr(e,t){const n=e.multiple,s=J(t);if(!(n&&!s&&!Xn(t))){for(let o=0,r=e.options.length;o<r;o++){const i=e.options[o],l=Yn(i);if(n)if(s){const a=typeof l;a==="string"||a==="number"?i.selected=t.some(u=>String(u)===String(l)):i.selected=Gi(t,l)>-1}else i.selected=t.has(l);else if(ns(Yn(i),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Yn(e){return"_value"in e?e._value:e.value}const mc=["ctrl","shift","alt","meta"],gc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>mc.some(n=>e[`${n}Key`]&&!t.includes(n))},Ee=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...r)=>{for(let i=0;i<t.length;i++){const l=gc[t[i]];if(l&&l(o,t))return}return e(o,...r)}))},vc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},js=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const r=At(o.key);if(t.some(i=>i===r||vc[i]===r))return e(o)}))},yc=Ce({patchProp:oc},Ua);let nr;function bc(){return nr||(nr=wa(yc))}const wc=((...e)=>{const t=bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=xc(s);if(!o)return;const r=t._component;!ee(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,_c(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t});function _c(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function xc(e){return we(e)?document.querySelector(e):e}let Ei;const fs=e=>Ei=e,Ti=Symbol();function Hs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var mn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(mn||(mn={}));function Cc(){const e=br(!0),t=e.run(()=>B({}));let n=[],s=[];const o=Zs({install(r){fs(o),o._a=r,r.provide(Ti,o),r.config.globalProperties.$pinia=o,s.forEach(i=>n.push(i)),s=[]},use(r){return this._a?n.push(r):s.push(r),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return o}const $i=()=>{};function sr(e,t,n,s=$i){e.add(t);const o=()=>{e.delete(t)&&s()};return!n&&wr()&&Yi(o),o}function Bt(e,...t){e.forEach(n=>{n(...t)})}const Sc=e=>e(),or=Symbol(),Cs=Symbol();function Us(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],o=e[n];Hs(o)&&Hs(s)&&e.hasOwnProperty(n)&&!be(s)&&!ht(s)?e[n]=Us(o,s):e[n]=s}return e}const Ec=Symbol();function Tc(e){return!Hs(e)||!Object.prototype.hasOwnProperty.call(e,Ec)}const{assign:Ct}=Object;function $c(e){return!!(be(e)&&e.effect)}function kc(e,t,n,s){const{state:o,actions:r,getters:i}=t,l=n.state.value[e];let a;function u(){l||(n.state.value[e]=o?o():{});const c=yl(n.state.value[e]);return Ct(c,r,Object.keys(i||{}).reduce((f,m)=>(f[m]=Zs(je(()=>{fs(n);const g=n._s.get(e);return i[m].call(g,g)})),f),{}))}return a=ki(e,u,t,n,s,!0),a}function ki(e,t,n={},s,o,r){let i;const l=Ct({actions:{}},n),a={deep:!0};let u,c,f=new Set,m=new Set,g;const y=s.state.value[e];!r&&!y&&(s.state.value[e]={});let v;function T(V){let A;u=c=!1,typeof V=="function"?(V(s.state.value[e]),A={type:mn.patchFunction,storeId:e,events:g}):(Us(s.state.value[e],V),A={type:mn.patchObject,payload:V,storeId:e,events:g});const G=v=Symbol();Mt().then(()=>{v===G&&(u=!0)}),c=!0,Bt(f,A,s.state.value[e])}const p=r?function(){const{state:A}=n,G=A?A():{};this.$patch(ne=>{Ct(ne,G)})}:$i;function w(){i.stop(),f.clear(),m.clear(),s._s.delete(e)}const $=(V,A="")=>{if(or in V)return V[Cs]=A,V;const G=function(){fs(s);const ne=Array.from(arguments),M=new Set,F=new Set;function L(W){M.add(W)}function z(W){F.add(W)}Bt(m,{args:ne,name:G[Cs],store:U,after:L,onError:z});let q;try{q=V.apply(this&&this.$id===e?this:U,ne)}catch(W){throw Bt(F,W),W}return q instanceof Promise?q.then(W=>(Bt(M,W),W)).catch(W=>(Bt(F,W),Promise.reject(W))):(Bt(M,q),q)};return G[or]=!0,G[Cs]=A,G},k={_p:s,$id:e,$onAction:sr.bind(null,m),$patch:T,$reset:p,$subscribe(V,A={}){const G=sr(f,V,A.detached,()=>ne()),ne=i.run(()=>ze(()=>s.state.value[e],M=>{(A.flush==="sync"?c:u)&&V({storeId:e,type:mn.direct,events:g},M)},Ct({},a,A)));return G},$dispose:w},U=os(k);s._s.set(e,U);const ie=(s._a&&s._a.runWithContext||Sc)(()=>s._e.run(()=>(i=br()).run(()=>t({action:$}))));for(const V in ie){const A=ie[V];if(be(A)&&!$c(A)||ht(A))r||(y&&Tc(A)&&(be(A)?A.value=y[V]:Us(A,y[V])),s.state.value[e][V]=A);else if(typeof A=="function"){const G=$(A,V);ie[V]=G,l.actions[V]=A}}return Ct(U,ie),Ct(ce(U),ie),Object.defineProperty(U,"$state",{get:()=>s.state.value[e],set:V=>{T(A=>{Ct(A,V)})}}),s._p.forEach(V=>{Ct(U,i.run(()=>V({store:U,app:s._a,pinia:s,options:l})))}),y&&r&&n.hydrate&&n.hydrate(U.$state,y),u=!0,c=!0,U}function Ac(e,t,n){let s;const o=typeof t=="function";s=o?n:t;function r(i,l){const a=kl();return i=i||(a?kt(Ti,null):null),i&&fs(i),i=Ei,i._s.has(e)||(o?ki(e,t,s,i):kc(e,s,i)),i._s.get(e)}return r.$id=e,r}const Pt=Ac("sessions",()=>{const e=B([]),t=je(()=>[...e.value].sort((F,L)=>{if(!F.alias)return L.alias?1:0;if(!L.alias)return-1;const z=F.alias.toLowerCase(),q=L.alias.toLowerCase();return z<q?-1:z>q?1:0})),n=B([]),s=B(null),o=B(!1),r=B(!1),i=B(""),l=B(0);let a=null,u=null,c=1e3;async function f(F,L={}){const z=await fetch(F,L);if(z.status===401&&(r.value=!1),!z.ok){const q=await z.json().catch(()=>({}));throw Object.assign(new Error(q.error||`Request failed (${z.status})`),{status:z.status})}return z}async function m(F,L=!1){const q=await(await f(`/api/sessions/${encodeURIComponent(F)}/root`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repin:L})})).json(),W=e.value.find(oe=>oe.name===F);return W&&(W.root=q.root),q.root}function g(){l.value++}async function y(){try{const L=await(await fetch("/api/auth/status")).json();i.value=typeof L.instance?.name=="string"?L.instance.name:"",o.value=!!L.authRequired,r.value=!!L.authenticated}catch{r.value=!1}return r.value}async function v(F){const L=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:F})});if(!L.ok){const z=await L.json().catch(()=>({}));throw new Error(z.error||"Login failed")}r.value=!0}async function T(){try{await fetch("/api/auth/logout",{method:"POST"})}catch{}r.value=!1,e.value=[],s.value=null,a&&(a.onclose=null,a.close(),a=null)}async function p(){const F=await fetch("/api/sessions");if(F.status===401){r.value=!1;return}const L=await F.json();e.value=L.sessions}async function w(){const L=await(await fetch("/api/sessions/shells")).json();n.value=L.shells}async function $(F,L){const z=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:F,shell:L})});if(!z.ok){const W=await z.json();throw new Error(W.error)}const q=await z.json();s.value=q.name,await p()}async function k(F){const L=await fetch(`/api/sessions/${F}/stop`,{method:"POST"});if(!L.ok){const z=await L.json();throw new Error(z.error)}await p()}async function U(F){const L=await fetch(`/api/sessions/${F}/restart`,{method:"POST"});if(!L.ok){const z=await L.json();throw new Error(z.error)}await p()}async function te(F,L){const z=await fetch(`/api/sessions/${F}/alias`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:L})});if(!z.ok){const q=await z.json();throw new Error(q.error)}await p()}async function ie(F){const L=await fetch(`/api/sessions/${F}`,{method:"DELETE"});if(!L.ok){const z=await L.json();throw new Error(z.error)}s.value===F&&(s.value=null),await p()}function V(F){s.value=F}function A(){a&&(a.onclose=null,a.close());const F=location.protocol==="https:"?"wss":"ws";a=new WebSocket(`${F}://${location.host}/ws`),a.onmessage=L=>{let z=null,q=null;try{({event:z,data:q}=JSON.parse(L.data))}catch{}if(z==="session:title"&&q&&q.name){const W=e.value.find(oe=>oe.name===q.name);if(W){W.title=q.title,W.command=q.command,W.outputActive=!!q.outputActive;return}}if(z==="session:root"&&q?.name){const W=e.value.find(oe=>oe.name===q.name);W&&(W.root=q.root);return}p()},a.onopen=()=>{c=1e3,p()},a.onclose=()=>{G()}}function G(){u||(u=setTimeout(()=>{u=null,A(),c=Math.min(c*2,3e4)},c))}function ne(){p(),w(),A()}async function M({command:F,name:L}){return $(L||null,F||null)}return{sessions:e,sortedSessions:t,shells:n,current:s,authRequired:o,authenticated:r,instanceName:i,fileRevision:l,apiRequest:f,pinRoot:m,refreshFiles:g,init:ne,checkAuth:y,login:v,logout:T,fetchSessions:p,createSession:$,create:M,stopSession:k,restartSession:U,setAlias:te,removeSession:ie,select:V}}),Ge=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},Mc=["title"],Pc={class:"card-content"},Oc={class:"card-top"},Ic=["onKeydown"],Rc={class:"session-name"},Lc={key:0,class:"alias-text"},Dc={key:1,class:"real-name"},Fc={key:2},Nc={key:0,class:"confirm-bar"},jc={key:1,class:"session-info"},Hc=["title"],Uc={class:"status-text"},Kc={__name:"SessionCard",props:{session:Object,active:Boolean,collapsed:Boolean},setup(e){const t=e,n=Pt(),s=kt("toast"),o=B(!1),r=B(!1),i=B(""),l=B(null),a=je(()=>{const p=t.session.alias?`${t.session.alias} (${t.session.name})`:t.session.name;return t.session.pid?`${p} · PID ${t.session.pid}`:p}),u=je(()=>t.session.title||t.session.command||"");function c(p,w="info"){s?.value?.show(p,w)}function f(p,w){p.stopPropagation(),o.value=!0}async function m(p,w){p.stopPropagation();try{await n.removeSession(w)}catch($){console.error($)}o.value=!1}function g(p){p.stopPropagation(),o.value=!1}function y(p){p.stopPropagation(),i.value=t.session.alias||"",r.value=!0,Mt(()=>l.value?.focus())}async function v(p){if(p&&p.stopPropagation(),!!r.value){r.value=!1;try{await n.setAlias(t.session.name,i.value.trim())}catch(w){c(w.message||"Failed to set alias","error")}}}function T(p){p.stopPropagation(),r.value=!1}return(p,w)=>(I(),K("div",{class:We(["session-card",{active:e.active,collapsed:e.collapsed}]),title:a.value},[_("div",{class:We(["status-indicator",[e.session.status,{"output-active":e.session.status==="running"&&e.session.outputActive}]])},null,2),it(_("div",Pc,[_("div",Oc,[r.value?it((I(),K("input",{key:0,ref_key:"aliasInput",ref:l,"onUpdate:modelValue":w[0]||(w[0]=$=>i.value=$),class:"alias-input",type:"text",maxlength:"100",placeholder:"Alias (Enter to save, Esc to cancel)",onClick:w[1]||(w[1]=Ee(()=>{},["stop"])),onKeydown:[w[2]||(w[2]=Ee(()=>{},["stop"])),w[3]||(w[3]=js(Ee($=>v($),["prevent"]),["enter"])),js(Ee(T,["prevent"]),["esc"])],onBlur:v},null,40,Ic)),[[us,i.value]]):(I(),K(ye,{key:1},[_("div",Rc,[e.session.alias?(I(),K("span",Lc,se(e.session.alias),1)):ae("",!0),e.session.alias?(I(),K("span",Dc,se(e.session.name),1)):(I(),K("span",Fc,se(e.session.name),1))]),o.value?ae("",!0):(I(),K("button",{key:0,class:"close-btn",title:"Set alias",onClick:w[4]||(w[4]=$=>y($))},[...w[8]||(w[8]=[_("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})],-1)])])),o.value?ae("",!0):(I(),K("button",{key:1,class:"close-btn",title:"Delete session",onClick:w[5]||(w[5]=$=>f($,e.session.name))},[...w[9]||(w[9]=[_("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),_("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]))],64))]),o.value?(I(),K("div",Nc,[w[10]||(w[10]=_("span",{class:"confirm-text"},"Delete?",-1)),_("button",{class:"confirm-yes",onClick:w[6]||(w[6]=$=>m($,e.session.name))},"Yes"),_("button",{class:"confirm-no",onClick:w[7]||(w[7]=$=>g($))},"No")])):(I(),K("div",jc,[_("span",{class:"pane-title",title:u.value},se(u.value),9,Hc),_("span",Uc,se(e.session.status),1)]))],512),[[rn,!e.collapsed]])],10,Mc))}},Bc=Ge(Kc,[["__scopeId","data-v-0e38e5ff"]]),Vc="modulepreload",Wc=function(e){return"/"+e},rr={},ao=function(t,n,s){let o=Promise.resolve();if(n&&n.length>0){let a=function(u){return Promise.all(u.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=i?.nonce||i?.getAttribute("nonce");o=a(n.map(u=>{if(u=Wc(u),u in rr)return;rr[u]=!0;const c=u.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${f}`))return;const m=document.createElement("link");if(m.rel=c?"stylesheet":Vc,c||(m.as="script"),m.crossOrigin="",m.href=u,l&&m.setAttribute("nonce",l),document.head.appendChild(m),c)return new Promise((g,y)=>{m.addEventListener("load",g),m.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${u}`)))})}))}function r(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return o.then(i=>{for(const l of i||[])l.status==="rejected"&&r(l.reason);return t().catch(r)})},Ss="https://acli-preview.invalid",ir=e=>e.split("/").map(encodeURIComponent).join("/");function lr(e){const t=[];for(const n of e.split("/"))!n||n==="."||(n===".."?t.pop():t.push(n));return`/${t.join("/")}`}function ar(e,t,n){if(typeof e!="string"||e.length>8192||/[\u0000-\u001f\u007f\\]/.test(e))throw new Error("不支持的链接地址");if(e=e.trim(),/^(?:https?:)?\/\//i.test(e)){const u=new URL(e,Ss);if(!["http:","https:"].includes(u.protocol))throw new Error("不支持的链接协议");return{kind:"external",url:u.href}}if(/^[a-z][a-z\d+.-]*:/i.test(e))throw new Error("只支持项目内文件和 HTTP/HTTPS 链接");if(!t?.startsWith("/")||!n?.startsWith("/"))throw new Error("当前文档没有有效的项目目录");const s=lr(n),o=`${Ss}${ir(t)}`,r=e.startsWith("/")?`${ir(s).replace(/\/$/,"")}${e}`:e;let i,l,a;try{i=new URL(r,o),l=lr(decodeURIComponent(i.pathname)),a=decodeURIComponent(i.hash.slice(1))}catch{throw new Error("链接包含无效的路径编码")}if(i.origin!==Ss||/[\u0000-\u001f\u007f\\]/.test(l))throw new Error("不支持的链接地址");if(s!=="/"&&l!==s&&!l.startsWith(`${s}/`))throw new Error("链接超出了当前项目目录");return{kind:"file",path:l,hash:a}}function qc(e){return e.normalize("NFC").trim().toLowerCase().replace(/[^\p{L}\p{N}\p{M}_\s-]/gu,"").replace(/\s/g,"-")||"section"}function Gc(e){return`<script>(()=>{
|
|
3
3
|
const token=${JSON.stringify(e).replace(/</g,"\\u003c")};
|
|
4
4
|
const position=()=>({left:window.scrollX,top:window.scrollY});
|
|
5
5
|
const scroll=hash=>{const target=document.getElementById(hash)||Array.from(document.getElementsByName(hash))[0];if(target)target.scrollIntoView({behavior:'instant'});else if(!hash)window.scrollTo({left:0,top:0,behavior:'instant'})};
|
|
6
6
|
document.addEventListener('click',event=>{const link=event.target instanceof Element?event.target.closest('a[href]'):null;if(!event.isTrusted||!link)return;event.preventDefault();event.stopImmediatePropagation();const href=link.getAttribute('href');if(href.startsWith('#')){try{scroll(decodeURIComponent(href.slice(1)))}catch{};return}parent.postMessage({type:'acli-preview-link',token,href,scroll:position()},'*')},true);
|
|
7
7
|
window.addEventListener('message',event=>{const data=event.data;if(event.source!==parent||data?.type!=='acli-preview-scroll'||data.token!==token)return;if(Number.isFinite(data.left)&&Number.isFinite(data.top))window.scrollTo({left:data.left,top:data.top,behavior:'instant'});else if(typeof data.hash==='string'&&data.hash.length<=8192)scroll(data.hash)});
|
|
8
|
-
})()<\/script>`}function
|
|
9
|
-
`);return o.at(-1)===""&&o.pop(),o.map(r=>{const i=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(r);return i?(t=Number(i[1]),n=Number(i[2]),s=!0,{type:"hunk",text:r}):((r.startsWith("diff --git ")||r.startsWith("diff --no-index "))&&(s=!1),s&&r.startsWith("+")?{type:"add",sign:"+",text:r.slice(1),newLine:n++}:s&&r.startsWith("-")?{type:"delete",sign:"−",text:r.slice(1),oldLine:t++}:s&&r.startsWith(" ")?{type:"context",sign:" ",text:r.slice(1),oldLine:t++,newLine:n++}:{type:"meta",text:r})})}const zc={role:"none"},Xc=["aria-expanded","aria-label","title"],Jc={class:"chevron","aria-hidden":"true"},Zc={class:"file-icon","aria-hidden":"true"},Qc=["title"],eu={key:1,class:"git-dot",title:"包含 Git 改动","aria-hidden":"true"},tu=["aria-label"],nu={key:0,role:"group",class:"tree-children"},su={key:0,role:"none",class:"tree-status"},ou={key:1,role:"none",class:"tree-status error"},ru={key:2,role:"none",class:"tree-status"},iu={__name:"FileTreeItem",props:{entry:{type:Object,required:!0},changes:{type:Array,default:()=>[]}},emits:["preview","menu","operation"],setup(e,{emit:t}){const n=e,s=t,o=
|
|
8
|
+
})()<\/script>`}function co(e,t){return`${e.replace(/\/$/,"")}/${t}`}function Ai(e,t=!1,n=null){return`/api/files/content?${new URLSearchParams({path:e,...t?{download:"1"}:{},...n?{root:n}:{}})}`}function Mi(e){return e.includes(".")?e.split(".").pop().toLowerCase():""}function dd(e){const t=Mi(e);return["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif","heic","heif"].includes(t)?"image":["mp3","wav","ogg","m4a","aac","flac","opus"].includes(t)?"audio":["mp4","webm","mov","m4v","ogv"].includes(t)?"video":t==="pdf"?"pdf":["md","markdown"].includes(t)?"markdown":["html","htm","xhtml"].includes(t)?"html":t==="docx"?"docx":["csv","tsv"].includes(t)?"table":["zip","gz","bz2","xz","7z","rar","tar","woff","woff2","ttf","exe","dll","so","dylib","db","sqlite","sqlite3","doc","xls","xlsx","ppt","pptx","wasm","bin"].includes(t)?"unsupported":"text"}function Yc(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(1)} MiB`}async function pd(e,t){const{default:n}=await ao(async()=>{const{default:o}=await import("./papaparse.min-DBcLlWLv.js").then(r=>r.p);return{default:o}},__vite__mapDeps([0,1])),s=n.parse(e,{delimiter:Mi(t)==="tsv"?" ":",",skipEmptyLines:"greedy"});return s.errors.length?null:s.data}async function hd(e,t=null){const{default:n}=await ao(async()=>{const{default:i}=await import("./markdown-it-CnX5h4q1.js");return{default:i}},[]),s=new n({html:!1,linkify:!0}),o=new Set;s.renderer.rules.heading_open=(i,l,a,u,c)=>{const f=i[l+1],m=f.children?.filter(T=>["text","code_inline","emoji"].includes(T.type)).map(T=>T.content).join("")||f.content,g=qc(m);let y=g,v=0;for(;o.has(y);)y=`${g}-${++v}`;return o.add(y),i[l].attrSet("id",y),c.renderToken(i,l,a)},s.renderer.rules.link_open=(i,l,a,u,c)=>{const f=i[l],m=f.attrGet("href")||"";if(t){f.attrSet("data-preview-href",m);try{const g=ar(m,t.path,t.root);f.attrSet("href",g.kind==="external"?g.url:"#")}catch{f.attrSet("href","#")}}return/^https?:\/\//i.test(f.attrGet("href"))&&(f.attrSet("target","_blank"),f.attrSet("rel","noopener noreferrer")),c.renderToken(i,l,a)};const r=s.renderer.rules.image;return s.renderer.rules.image=(i,l,a,u,c)=>{const f=i[l];if(t)try{const m=ar(f.attrGet("src")||"",t.path,t.root);f.attrSet("src",m.kind==="external"?m.url:Ai(m.path,!1,t.root))}catch{f.attrSet("src",""),f.attrSet("title","图片路径无效或超出当前项目目录")}return f.attrSet("referrerpolicy","no-referrer"),r(i,l,a,u,c)},s.render(e)}function md(e,{linkToken:t}={}){return`<!doctype html><html><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: blob:; font-src data:; media-src data: blob:; base-uri 'none'; form-action 'none'"><meta name="referrer" content="no-referrer">${t?Gc(t):""}<style>body{font:15px/1.6 system-ui,sans-serif;padding:20px;overflow-wrap:anywhere}img{max-width:100%}table{border-collapse:collapse}td,th{border:1px solid #ccc;padding:6px}</style></head><body>${e}</body></html>`}const Es=Object.freeze({M:"已修改",A:"已新增(已暂存)",U:"未跟踪的新文件",D:"已删除",R:"已重命名",C:"存在合并冲突"});function Pi(e,t,n=[]){const s=`${t.replace(/\/$/,"")}/`,o=new Map(e.map(i=>[i.path,{...i}])),r=new Map(n.map(i=>[i.path,i]));for(const i of n){if(!i.deleted||!i.path.startsWith(s))continue;const l=i.path.slice(s.length).split("/"),a=`${s}${l[0]}`;o.has(a)||o.set(a,{name:l[0],path:a,type:l.length>1?"directory":"file",size:0,mtime:null,virtual:!0,deleted:!0})}return[...o.values()].map(i=>{const l=r.get(i.path);return{...i,...l?.deleted?{virtual:!0,deleted:!0}:{},gitChange:l,gitStatus:l?.status,hasGitChanges:i.type==="directory"&&n.some(a=>a.path.startsWith(`${i.path}/`))}}).sort((i,l)=>(l.type==="directory")-(i.type==="directory")||i.name.localeCompare(l.name,void 0,{numeric:!0}))}function gd(e){let t=0,n=0,s=!1;const o=e.split(`
|
|
9
|
+
`);return o.at(-1)===""&&o.pop(),o.map(r=>{const i=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(r);return i?(t=Number(i[1]),n=Number(i[2]),s=!0,{type:"hunk",text:r}):((r.startsWith("diff --git ")||r.startsWith("diff --no-index "))&&(s=!1),s&&r.startsWith("+")?{type:"add",sign:"+",text:r.slice(1),newLine:n++}:s&&r.startsWith("-")?{type:"delete",sign:"−",text:r.slice(1),oldLine:t++}:s&&r.startsWith(" ")?{type:"context",sign:" ",text:r.slice(1),oldLine:t++,newLine:n++}:{type:"meta",text:r})})}const zc={role:"none"},Xc=["aria-expanded","aria-label","title"],Jc={class:"chevron","aria-hidden":"true"},Zc={class:"file-icon","aria-hidden":"true"},Qc=["title"],eu={key:1,class:"git-dot",title:"包含 Git 改动","aria-hidden":"true"},tu=["aria-label"],nu={key:0,role:"group",class:"tree-children"},su={key:0,role:"none",class:"tree-status"},ou={key:1,role:"none",class:"tree-status error"},ru={key:2,role:"none",class:"tree-status"},iu={__name:"FileTreeItem",props:{entry:{type:Object,required:!0},changes:{type:Array,default:()=>[]}},emits:["preview","menu","operation"],setup(e,{emit:t}){const n=e,s=t,o=Pt(),r=B(!1),i=B([]),l=B(!1),a=B(""),u=B(null),c=je(()=>Pi(i.value,n.entry.path,n.changes)),f=je(()=>{const p=n.entry;return p.virtual?`${p.path}
|
|
10
10
|
已从工作区删除,可查看 Git Diff`:`${p.path}
|
|
11
11
|
${Yc(p.size)} · ${new Date(p.mtime).toLocaleString()}${p.type==="symlink"?`
|
|
12
12
|
Symbolic link — target is not followed`:""}${p.gitStatus?`
|
|
13
|
-
Git:${
|
|
14
|
-
原路径:${p.gitChange.originalPath}`:""}`});let m=null;async function g(){if(m?.abort(),n.entry.virtual){i.value=[],l.value=!1,a.value="";return}const p=new AbortController;m=p,l.value=!0,a.value="";try{const $=await(await o.apiRequest(`/api/files?${new URLSearchParams({path:n.entry.path})}`,{signal:p.signal})).json();p.signal.aborted||(i.value=$.entries)}catch(w){p.signal.aborted||(a.value=w.message)}finally{p.signal.aborted||(l.value=!1)}}async function y(){n.entry.type==="directory"?(r.value=!r.value,r.value&&await g()):n.entry.type==="file"&&s("preview",n.entry)}function v(p){if(p.preventDefault(),n.entry.virtual)return;const w=u.value.getBoundingClientRect();s("menu",{entry:n.entry,x:p.clientX||w.left,y:p.clientY||w.bottom,trigger:u.value})}async function T(p){if(p.target!==u.value)return;const w=[...u.value.closest('[role="tree"]').querySelectorAll("[data-tree-row]")],$=w.indexOf(u.value);["ArrowDown","ArrowUp","Home","End"].includes(p.key)?(p.preventDefault(),w[p.key==="Home"?0:p.key==="End"?w.length-1:Math.max(0,Math.min(w.length-1,$+(p.key==="ArrowDown"?1:-1)))]?.focus()):p.key==="ArrowRight"&&n.entry.type==="directory"?(p.preventDefault(),r.value?(await Ht(),u.value.parentElement.querySelector('[role="group"] [data-tree-row]')?.focus()):await y()):p.key==="ArrowLeft"?(p.preventDefault(),r.value?r.value=!1:u.value.parentElement.parentElement.closest("li")?.querySelector("[data-tree-row]")?.focus()):p.key==="Enter"||p.key===" "?(p.preventDefault(),y()):p.key==="ContextMenu"||p.shiftKey&&p.key==="F10"?v(p):!n.entry.virtual&&(p.key==="F2"||p.key==="Delete")&&(p.preventDefault(),s("operation",{kind:p.key==="F2"?"rename":"delete",entry:n.entry}))}return Xe(()=>o.fileRevision,()=>{r.value&&g()}),Xe(()=>n.entry.virtual,()=>{r.value&&g()}),Ut(()=>m?.abort()),(p,w)=>{const $=Xl("FileTreeItem",!0);return I(),K("li",zc,[_("div",{ref_key:"row",ref:u,class:"tree-row",role:"treeitem","data-tree-row":"",tabindex:"0","aria-expanded":e.entry.type==="directory"?r.value:void 0,"aria-label":`${e.entry.name}${e.entry.gitStatus?`,${ve(Ts)[e.entry.gitStatus]}`:e.entry.hasGitChanges?",包含 Git 改动":""}`,title:f.value,onClick:y,onContextmenu:v,onKeydown:T},[_("span",Jc,se(e.entry.type==="directory"?r.value?"⌄":"›":""),1),_("span",Zc,se(e.entry.type==="directory"?"▱":e.entry.type==="symlink"?"↗":"≡"),1),_("span",{class:We(["filename",{dotfile:e.entry.name.startsWith("."),deleted:e.entry.virtual}])},se(e.entry.name),3),_("span",{class:We(["row-end",{"has-menu":!e.entry.virtual,"has-status":e.entry.gitStatus||e.entry.hasGitChanges}])},[e.entry.type!=="directory"&&e.entry.gitStatus?(I(),K("span",{key:0,class:We(["git-badge",`git-${e.entry.gitStatus}`]),title:ve(Ts)[e.entry.gitStatus],"aria-hidden":"true"},se(e.entry.gitStatus),11,Qc)):e.entry.hasGitChanges?(I(),K("span",eu,"●")):ae("",!0),e.entry.virtual?ae("",!0):(I(),K("button",{key:2,class:"more","aria-label":`${e.entry.name} 文件操作`,title:"文件操作",onClick:$e(v,["stop"]),onKeydown:w[0]||(w[0]=$e(()=>{},["stop"]))},"⋯",40,tu))],2)],40,Xc),r.value?(I(),K("ul",nu,[l.value?(I(),K("li",su,"加载中…")):a.value?(I(),K("li",ou,[Be(se(a.value)+" ",1),_("button",{onClick:g},"重试")])):c.value.length?ae("",!0):(I(),K("li",ru,"空文件夹")),(I(!0),K(ye,null,En(c.value,k=>(I(),Ve($,{key:k.path,entry:k,changes:e.changes,onPreview:w[1]||(w[1]=U=>s("preview",U)),onMenu:w[2]||(w[2]=U=>s("menu",U)),onOperation:w[3]||(w[3]=U=>s("operation",U))},null,8,["entry","changes"]))),128))])):ae("",!0)])}}},lu=Ge(iu,[["__scopeId","data-v-5c068d88"]]),au={id:"operation-title"},cu={class:"operation-path"},uu={key:0},fu={key:1},du=["disabled"],pu={key:2,class:"error",role:"alert"},hu={class:"dialog-actions"},mu=["disabled"],gu=["disabled"],vu={__name:"FileOperationDialog",props:{operation:{type:Object,required:!0},trash:String,busy:Boolean,error:String},emits:["close","submit"],setup(e,{emit:t}){const n=e,s=t,o=V(null),r=V(null),i=V(n.operation.kind==="rename"?n.operation.entry.name:n.operation.entry.path),l=Re(()=>({rename:"重命名",move:"移动文件",delete:n.trash==="mv-trash"?"移到废纸篓?":"永久删除?"})[n.operation.kind]);let a;return At(()=>{a=document.activeElement,o.value.showModal(),r.value?.select()}),Ut(()=>a?.focus()),(u,c)=>(I(),Ve(Gr,{to:"body"},[_("dialog",{ref_key:"dialog",ref:o,class:"file-dialog","aria-labelledby":"operation-title",onCancel:c[3]||(c[3]=$e(f=>!e.busy&&s("close"),["prevent"])),onClick:c[4]||(c[4]=f=>{f.target===o.value&&!e.busy&&s("close")})},[_("form",{onSubmit:c[2]||(c[2]=$e(f=>s("submit",i.value),["prevent"]))},[_("h3",au,se(l.value),1),_("p",cu,se(e.operation.entry.path),1),e.operation.kind==="delete"?(I(),K("p",uu,se(e.trash==="mv-trash"?"文件将移到 ~/.Trash/,可从废纸篓找回。":"文件将永久删除,此操作无法撤销。"),1)):(I(),K("label",fu,[Be(se(e.operation.kind==="rename"?"新名称":"目标完整路径(含文件名)")+" ",1),Ye(_("input",{ref_key:"input",ref:r,"onUpdate:modelValue":c[0]||(c[0]=f=>i.value=f),required:"",disabled:e.busy,autocomplete:"off"},null,8,du),[[$n,i.value]])])),e.error?(I(),K("p",pu,se(e.error),1)):ae("",!0),_("div",hu,[_("button",{type:"button",class:"btn",disabled:e.busy,onClick:c[1]||(c[1]=f=>s("close"))},"取消",8,mu),_("button",{class:We(["btn",e.operation.kind==="delete"?"delete-btn":"btn-primary"]),disabled:e.busy||!i.value.trim()},se(e.busy?"处理中…":l.value),11,gu)])],32)],544)]))}},yu=Ge(vu,[["__scopeId","data-v-5ceee09a"]]),bu={id:"clipboard-title"},wu={id:"clipboard-help"},_u=["readonly","aria-label"],xu={class:"clipboard-actions"},Cu=["disabled"],Su={__name:"ClipboardDialog",props:{mode:{type:String,required:!0},text:{type:String,default:""},shortcut:{type:String,required:!0}},emits:["close","paste"],setup(e,{emit:t}){const n=e,s=t,o=V(null),r=V(null),i=V(n.text);At(()=>{o.value.focus(),n.mode==="copy"&&o.value.select()});function l(a){if(a.key==="Escape")a.preventDefault(),s("close");else if(a.key==="Tab"){const u=[...r.value.querySelectorAll("textarea, button:not(:disabled)")],c=u[0],f=u[u.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),c.focus())}}return(a,u)=>(I(),K("div",{class:"clipboard-overlay",onClick:u[3]||(u[3]=$e(c=>s("close"),["self"])),onKeydown:l},[_("form",{ref_key:"dialog",ref:r,class:"clipboard-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"clipboard-title","aria-describedby":"clipboard-help",onSubmit:u[2]||(u[2]=$e(c=>s("paste",i.value),["prevent"]))},[_("h3",bu,se(e.mode==="copy"?"Copy text":"Paste text"),1),_("p",wu,[u[4]||(u[4]=Be(" Clipboard access is unavailable. ",-1)),e.mode==="copy"?(I(),K(ye,{key:0},[Be("Copy the selected text with "+se(e.shortcut)+".",1)],64)):(I(),K(ye,{key:1},[Be("Paste here with "+se(e.shortcut)+", then click Paste into terminal.",1)],64))]),Ye(_("textarea",{ref_key:"textarea",ref:o,"onUpdate:modelValue":u[0]||(u[0]=c=>i.value=c),readonly:e.mode==="copy","aria-label":e.mode==="copy"?"Text to copy":"Text to paste",spellcheck:"false"},null,8,_u),[[$n,i.value]]),_("div",xu,[_("button",{type:"button",class:"btn",onClick:u[1]||(u[1]=c=>s("close"))},se(e.mode==="copy"?"Done":"Cancel"),1),e.mode==="paste"?(I(),K("button",{key:0,class:"btn btn-primary",disabled:!i.value.length}," Paste into terminal ",8,Cu)):ae("",!0)])],544)],32))}},Oi=Ge(Su,[["__scopeId","data-v-317cb3e2"]]),Eu=20,sn=3,Tu=1,Rn=4,$u=12,Ii=160,ku=64;function Au(e,t,n){if(!Number.isFinite(e.deltaY))return 0;if(e.deltaMode===1)return e.deltaY;if(e.deltaMode===2)return e.deltaY*(n>0&&Number.isFinite(n)?n:24);if(e.deltaMode!==0)return 0;const s=t>0&&Number.isFinite(t)?t:Eu;return e.deltaY/s}function Mu({getRowHeight:e,getRows:t,emitStep:n,requestFrame:s,cancelFrame:o,now:r}){let i=0,l=0,a=null,u=null,c=Rn,f=null;function m(){f!==null&&o(f),f=null,i=0,l=0,a=null,u=null,c=Rn}function g(){if(r()-u>ku){m();return}for(;i>=sn&&c>0;)if(i-=sn,c--,n(l,a)===!1){m();return}f===null&&c<Rn&&(f=s(()=>{f=null,c=Rn,i>=sn&&g()}))}return{wheel(y){const v=Au(y,e(),t());if(!v||!Number.isFinite(v))return!1;const T=r(),p=Math.sign(v);return(p!==l||u===null||T-u>Ii||T<u)&&(i=sn-Tu),l=p,u=T,a=y,i=Math.min(i+Math.abs(v),$u*sn),g(),!0},cancel:m}}function Pu({doc:e,terminal:t}){const n=e.defaultView,s=t.element;if(!n?.WheelEvent||!s?.addEventListener)return()=>{};const o=[];function r(v,T,p,w={capture:!0}){v.addEventListener(T,p,w),o.push(()=>v.removeEventListener(T,p,w))}const i=()=>t.modes?.mouseTrackingMode,l=()=>["vt200","drag","any"].includes(i());let a="";const u=()=>`${i()}:${t.buffer?.active?.type}`,c=s.querySelector(".xterm-screen")||s;let f=0,m=0,g=-1/0;const y=Mu({getRowHeight:()=>{const v=n.performance.now();return(m!==t.rows||v-g>=Ii)&&(f=c.getBoundingClientRect().height/(t.rows||1),m=t.rows,g=v),f},getRows:()=>t.rows,requestFrame:v=>n.requestAnimationFrame(v),cancelFrame:v=>n.cancelAnimationFrame(v),now:()=>n.performance.now(),emitStep:(v,T)=>s.isConnected===!1||e.hidden||!l()||u()!==a?!1:(c.dispatchEvent(new n.WheelEvent("wheel",{deltaY:v,deltaMode:1,clientX:T.clientX,clientY:T.clientY,bubbles:!0,cancelable:!0,view:n})),!0)});r(s,"wheel",v=>{if(!v.isTrusted)return;const T=Math.abs(v.deltaX)>Math.abs(v.deltaY);if(v.defaultPrevented||v.ctrlKey||v.metaKey||v.altKey||v.shiftKey||T||!l()){y.cancel();return}u()!==a&&y.cancel(),a=u(),y.wheel(v)&&(v.preventDefault(),v.stopImmediatePropagation())},{capture:!0,passive:!1});for(const v of["keydown","pointerdown","touchstart","paste","visibilitychange"])r(e,v,y.cancel);return r(n,"blur",y.cancel),r(n,"resize",()=>{g=-1/0,y.cancel()}),()=>{y.cancel(),o.forEach(v=>v())}}async function Ks(e,t=document,n=navigator){try{if(n.clipboard?.writeText)return await n.clipboard.writeText(e),!0}catch{}if(!t.execCommand)return!1;const s=t.activeElement,o=t.createElement("textarea");o.value=e,o.readOnly=!0,o.style.cssText="position:fixed;left:-9999px;top:0;",t.body.appendChild(o);try{return o.focus({preventScroll:!0}),o.select(),t.execCommand("copy")}catch{return!1}finally{o.remove(),s?.focus({preventScroll:!0})}}const Ou=10,Iu=.85,ar=.05,Ru=20;function Lu(e,t){return Math.abs(t)>=Ou&&Math.abs(t)>Math.abs(e)}function Du({getRowHeight:e,emitWheel:t,requestFrame:n=s=>setTimeout(()=>s(performance.now()),16)}){let s=null,o=!1,r=0;function i(){const a=e();return a>0?a:Ru}function l(a){if(Number.isFinite(a)&&(r+=a/i(),Math.abs(r)>=1)){const u=Math.trunc(r);r-=u,t(-u*i(),s?.lastX??0,s?.lastY??0)}}return{touchStart(a){if(o=!1,!a.touches||a.touches.length!==1){s=null;return}const u=a.touches[0];s={id:u.identifier,startX:u.clientX,startY:u.clientY,lastX:u.clientX,lastY:u.clientY,lastTime:a.timeStamp??Date.now(),velocity:0,active:!1}},touchMove(a){if(!s)return;const u=[...a.touches].find(g=>g.identifier===s.id);if(!u)return;const c=a.timeStamp??Date.now();if(!s.active){if(!Lu(u.clientX-s.startX,u.clientY-s.startY))return;s.active=!0,s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c}a.preventDefault();const f=u.clientY-s.lastY,m=Math.max(c-s.lastTime,1);s.velocity=.8*s.velocity+.2*(f/m),s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c,l(f)},touchEnd(a){if(!(!s||![...a.changedTouches].some(c=>c.identifier===s.id))){if(s.active&&Math.abs(s.velocity)>ar){o=!0;let c=s.velocity,f=s.lastTime;const m=g=>{if(!o)return;const y=Math.max((g??Date.now())-f,1);if(!Number.isFinite(y)){o=!1;return}if(f=g??Date.now(),c*=Math.pow(Iu,y/16),Math.abs(c)<ar){o=!1;return}l(c*y),n(m)};n(m)}s=null}},cancel(){o=!1,s=null,r=0}}}function Fu({doc:e,terminal:t,isMac:n,getCopyText:s,onCopy:o,onContextMenu:r,onDismiss:i,onInput:l,onSelection:a,onTmuxCopy:u}){const c=[];function f(p,w,$={capture:!0}){e.addEventListener(p,w,$),c.push(()=>e.removeEventListener(p,w,$))}function m(p){p.preventDefault(),p.stopImmediatePropagation()}for(const p of["pointerdown","pointerup","mousedown","mouseup","auxclick"])f(p,w=>{w.button===2||n&&w.button===0&&w.ctrlKey?(w.stopImmediatePropagation(),w.shiftKey||w.preventDefault()):p==="mousedown"&&(i(),w.button===0&&l())});f("contextmenu",p=>{if(p.shiftKey){i();return}m(p),r(p)}),c.push(Pu({doc:e,terminal:t}));const g=Du({getRowHeight:()=>t.element?t.element.getBoundingClientRect().height/(t.rows||1):0,emitWheel:(p,w,$)=>{const k=t.element?.querySelector(".xterm-screen")||t.element;!k||!e.defaultView||k.dispatchEvent(new e.defaultView.WheelEvent("wheel",{deltaY:p,deltaMode:0,clientX:w,clientY:$,bubbles:!0,cancelable:!0}))}}),y={capture:!0,passive:!1};f("touchstart",p=>g.touchStart(p),y),f("touchmove",p=>g.touchMove(p),y),f("touchend",p=>g.touchEnd(p),y),f("touchcancel",()=>g.cancel(),y),c.push(()=>g.cancel()),f("copy",p=>{const w=s();!w||!p.clipboardData||(p.clipboardData.setData("text/plain",w),m(p))}),f("paste",p=>{if(!p.clipboardData)return;const w=p.clipboardData.getData("text/plain");m(p),i(),l(),t.paste(w)}),f("keydown",p=>{const w=p.key.toLowerCase(),$=!p.altKey&&(n&&p.metaKey&&!p.ctrlKey&&w==="c"||p.ctrlKey&&p.shiftKey&&!p.metaKey&&w==="c"),k=!p.altKey&&(n&&p.metaKey&&w==="v"||p.ctrlKey&&w==="v");$?(m(p),o()):k?p.stopImmediatePropagation():(i(),["Shift","Control","Alt","Meta"].includes(p.key)||l())});const v=t.onSelectionChange(()=>a(t.getSelection()));c.push(()=>v.dispose());const T=t.parser.registerOscHandler(52,p=>{const w=p.indexOf(";");if(w<0)return!1;const $=p.slice(w+1);if($==="?")return!1;try{const k=Uint8Array.from(atob($),U=>U.charCodeAt(0));u(new TextDecoder().decode(k))}catch{}return!0});return c.push(()=>T.dispose()),()=>c.forEach(p=>p())}const Nu={class:"file-panel","aria-label":"文件管理器"},ju={class:"file-toolbar"},Hu=["title"],Uu=["disabled"],Ku=["disabled"],Vu=["title"],Bu={key:1,class:"panel-hint",role:"status"},Wu={key:2,class:"panel-hint"},qu={key:3,class:"panel-hint"},Gu={key:4,class:"panel-hint error",role:"alert"},Yu={key:5,class:"panel-hint git-warning",role:"status"},zu={key:6,class:"panel-hint",role:"status"},Xu=["aria-label","aria-busy"],Ju={key:0,role:"none",class:"panel-hint"},Zu=["disabled"],Qu=["disabled"],ef={__name:"FilePanel",setup(e){const t=jl(()=>lo(()=>import("./PreviewDialog-CyWZ9PNI.js"),__vite__mapDeps([2,3]))),n=Mt(),s=$t("toast"),o=Re(()=>n.sessions.find(R=>R.name===n.current)),r=V([]),i=V({available:!1,changes:[]}),l=V(""),a=Re(()=>Pi(r.value,o.value?.root||"/",i.value.changes)),u=V(null),c=V(!1),f=V(!1),m=V(""),g=V(null),y=V(null),v=V(null),T=V(null),p=V(""),w=V(!1),$=V(!1),k=V(null);let U=null,te=0;const ie=/Mac|iPhone|iPad/.test(navigator.platform)?"⌘C":"Ctrl+C";function B(R,j="info",re){s?.value?.show(R,j,re)}async function A(){const R=o.value,j=++te;if(!R||R.root||R.status!=="running"){f.value=!1;return}f.value=!0,m.value="";try{await n.pinRoot(R.name)}catch(re){j===te&&o.value?.name===R.name&&(m.value=re.message)}finally{j===te&&(f.value=!1)}}async function G(){U?.abort();const R=new AbortController;U=R;const j=o.value?.root;if(!j){r.value=[],u.value=null,c.value=!1;return}c.value=!0,m.value="";const re=(async()=>{try{const Pe=await(await n.apiRequest(`/api/git/status?${new URLSearchParams({root:j})}`,{signal:R.signal})).json();R.signal.aborted||(i.value=Pe,l.value=Pe.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":"")}catch(ge){R.signal.aborted||(l.value=`Git 状态更新失败,已有标记可能已过时:${ge.message}`)}})();try{const Pe=await(await n.apiRequest(`/api/files?${new URLSearchParams({path:j})}`,{signal:R.signal})).json();R.signal.aborted||(r.value=Pe.entries,u.value=Pe.trash)}catch(ge){R.signal.aborted||(m.value=ge.message)}finally{await re,R.signal.aborted||(c.value=!1)}}function ne(R){i.value=R,l.value=R.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":""}async function M(){const R=o.value;if(!(!R||R.status!=="running"))try{await n.pinRoot(R.name,!0),n.refreshFiles(),B("已将文件根目录固定到 shell 当前目录。","success")}catch(j){B(j.message,"error")}}async function F(R){y.value=R,await Ht(),!(!y.value||!v.value)&&(y.value.x=Math.max(8,Math.min(R.x,window.innerWidth-v.value.offsetWidth-8)),y.value.y=Math.max(8,Math.min(R.y,window.innerHeight-v.value.offsetHeight-8)),v.value.querySelector("button:not(:disabled)")?.focus())}function L(R=!1){R&&y.value?.trigger?.focus(),y.value=null}function z(R){if(["Escape","Tab"].includes(R.key))R.key==="Escape"&&R.preventDefault(),L(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(R.key)){R.preventDefault();const j=[...v.value.querySelectorAll("button:not(:disabled)")],re=j.indexOf(document.activeElement),ge=R.key==="Home"?0:R.key==="End"?j.length-1:(re+(R.key==="ArrowDown"?1:-1)+j.length)%j.length;j[ge]?.focus()}}function q(R,j=y.value?.entry){L(!0),!(!j||j.virtual||w.value||R==="delete"&&!u.value)&&(p.value="",T.value={kind:R,entry:j})}async function W(R){if(w.value)return;const{kind:j,entry:re}=T.value;w.value=!0,p.value="";try{if(j==="delete")await n.apiRequest(`/api/files?${new URLSearchParams({path:re.path})}`,{method:"DELETE"});else{if(j==="rename"&&(!R||R==="."||R===".."||R.includes("/")||R.includes("\0")))throw new Error("请输入不含 / 的有效文件名");const ge=j==="rename"?ao(re.path.slice(0,re.path.lastIndexOf("/"))||"/",R):R;await n.apiRequest("/api/files",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:re.path,to:ge})})}T.value=null,n.refreshFiles(),B(j==="delete"?u.value==="mv-trash"?"已移到废纸篓。":"已永久删除。":"文件已更新。","success")}catch(ge){p.value=ge.message}finally{w.value=!1}}function oe(R=y.value?.entry){if(L(!0),!R)return;const j=document.createElement("a");j.href=Ai(R.path,!0),j.download=R.name,document.body.append(j),j.click(),j.remove()}async function He(R=y.value?.entry){L(!0),await Ks(R.path)?B("路径已复制。","success"):k.value=R.path}async function ct(R=y.value?.entry){const j=o.value?.root;if(L(!0),!(!R||!j||$.value)){$.value=!0;try{const ge=await(await n.apiRequest("/api/files/archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:R.path,root:j})})).json();n.refreshFiles(),B(`已生成:${ge.path}`,"success",{action:{label:"下载",onClick:()=>oe({path:ge.path,name:ge.path.split("/").pop()})}})}catch(re){B(re.message,"error")}finally{$.value=!1}}}function Ue(R){v.value?.contains(R.target)||L()}return Xe(()=>[o.value?.name,o.value?.status],()=>{m.value="",A()},{immediate:!0}),Xe(()=>[o.value?.name,o.value?.root],()=>{r.value=[],g.value=null,L(),i.value={available:!1,changes:[]},l.value="",w.value||(T.value=null),G()},{immediate:!0}),Xe(()=>n.fileRevision,G),At(()=>{document.addEventListener("pointerdown",Ue),window.addEventListener("resize",L)}),Ut(()=>{te++,U?.abort(),document.removeEventListener("pointerdown",Ue),window.removeEventListener("resize",L)}),(R,j)=>(I(),K("section",Nu,[_("div",ju,[_("span",{class:"project-name",title:o.value?.root||""},se(o.value?.alias||o.value?.name||"文件"),9,Hu),_("button",{disabled:!o.value?.root||c.value,title:"刷新目录和 Git 标记","aria-label":"刷新目录和 Git 标记",onClick:j[0]||(j[0]=re=>ve(n).refreshFiles())},"↻",8,Uu),_("button",{disabled:o.value?.status!=="running",title:"重新固定到 shell 当前目录","aria-label":"重新固定到 shell 当前目录",onClick:M},"📍",8,Ku)]),o.value?.root?(I(),K("div",{key:0,class:"root-path",title:o.value.root},se(o.value.root),9,Vu)):ae("",!0),$.value?(I(),K("div",Bu,"正在生成 ZIP…")):ae("",!0),o.value?!o.value.root&&!c.value&&!f.value&&!m.value?(I(),K("div",qu,"启动 session 后自动确定根目录")):ae("",!0):(I(),K("div",Wu,"选择一个会话以浏览文件。")),m.value?(I(),K("div",Gu,[Be(se(m.value)+" ",1),_("button",{onClick:j[1]||(j[1]=re=>o.value?.root?G():A())},"重试")])):ae("",!0),l.value?(I(),K("div",Yu,se(l.value),1)):ae("",!0),c.value||f.value?(I(),K("div",zu,"加载中…")):ae("",!0),o.value?.root?(I(),K("ul",{key:`${o.value.name}:${o.value.root}`,class:"file-tree",role:"tree","aria-label":o.value.root,"aria-busy":c.value},[(I(!0),K(ye,null,En(a.value,re=>(I(),Ve(lu,{key:re.path,entry:re,changes:i.value.changes,onPreview:j[2]||(j[2]=ge=>g.value=ge),onMenu:F,onOperation:ge=>q(ge.kind,ge.entry)},null,8,["entry","changes","onOperation"]))),128)),!a.value.length&&!c.value&&!m.value?(I(),K("li",Ju,"空文件夹")):ae("",!0)],8,Xu)):ae("",!0),(I(),Ve(Gr,{to:"body"},[y.value?(I(),K("div",{key:0,ref_key:"menuElement",ref:v,class:"file-menu",style:xn({left:`${y.value.x}px`,top:`${y.value.y}px`}),role:"menu","aria-label":"文件操作",onKeydown:z},[y.value.entry.type==="file"?(I(),K("button",{key:0,role:"menuitem",onClick:j[3]||(j[3]=re=>{g.value=y.value.entry,L(!0)})},"预览")):ae("",!0),_("button",{role:"menuitem",onClick:j[4]||(j[4]=re=>q("rename"))},[...j[13]||(j[13]=[Be("重命名 ",-1),_("span",null,"F2",-1)])]),_("button",{role:"menuitem",onClick:j[5]||(j[5]=re=>q("move"))},"移动…"),y.value.entry.type==="file"?(I(),K("button",{key:1,role:"menuitem",onClick:j[6]||(j[6]=re=>oe())},"下载")):ae("",!0),y.value.entry.type==="directory"?(I(),K("button",{key:2,role:"menuitem",disabled:$.value,onClick:j[7]||(j[7]=re=>ct())},"压缩为 ZIP",8,Zu)):ae("",!0),_("button",{role:"menuitem",onClick:j[8]||(j[8]=re=>He())},"复制路径"),_("button",{class:"danger",role:"menuitem",disabled:!u.value,onClick:j[9]||(j[9]=re=>q("delete"))},se(u.value==="mv-trash"?"移到废纸篓…":"永久删除…"),9,Qu)],36)):ae("",!0)])),g.value?(I(),Ve(ve(t),{key:8,entry:g.value,root:o.value.root,changes:i.value.changes,onGitStatus:ne,onClose:j[10]||(j[10]=re=>g.value=null)},null,8,["entry","root","changes"])):ae("",!0),T.value?(I(),Ve(yu,{key:T.value.entry.path+T.value.kind,operation:T.value,trash:u.value,busy:w.value,error:p.value,onClose:j[11]||(j[11]=re=>T.value=null),onSubmit:W},null,8,["operation","trash","busy","error"])):ae("",!0),k.value!==null?(I(),Ve(Oi,{key:10,mode:"copy",text:k.value,shortcut:ve(ie),onClose:j[12]||(j[12]=re=>k.value=null)},null,8,["text","shortcut"])):ae("",!0)]))}},tf=Ge(ef,[["__scopeId","data-v-771bf310"]]),nf={class:"sidebar-tabs",role:"tablist","aria-label":"侧栏"},sf=["aria-selected"],of=["aria-selected"],rf={class:"sessions-panel",id:"sessions-panel",role:"tabpanel","aria-labelledby":"sessions-tab"},lf={class:"sidebar-header"},af={class:"sidebar-title"},cf={class:"session-list"},uf={key:0,class:"empty-hint"},ff={key:0,id:"files-panel",class:"files-panel",role:"tabpanel","aria-labelledby":"files-tab"},df={__name:"Sidebar",props:{collapsed:Boolean,mobile:Boolean},emits:["create","expand"],setup(e,{emit:t}){const n=t,s=Mt(),o=V("sessions");function r(i){o.value=i,n("expand")}return(i,l)=>(I(),K("aside",{class:We(["sidebar",{collapsed:e.collapsed}])},[_("div",nf,[_("button",{id:"sessions-tab",role:"tab","aria-selected":o.value==="sessions","aria-controls":"sessions-panel",onClick:l[0]||(l[0]=a=>r("sessions"))},"会话",8,sf),_("button",{id:"files-tab",role:"tab","aria-selected":o.value==="files","aria-controls":"files-panel",onClick:l[1]||(l[1]=a=>r("files"))},"文件",8,of)]),Ye(_("div",rf,[_("div",lf,[Ye(_("h2",af,"Sessions",512),[[rn,!e.collapsed]]),_("button",{class:"icon-btn new-session-btn",onClick:l[2]||(l[2]=a=>n("create")),title:"New Session"},[l[3]||(l[3]=_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),_("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),Ye(_("span",null,"New Session",512),[[rn,!e.collapsed]])])]),_("div",cf,[(I(!0),K(ye,null,En(ve(s).sortedSessions,a=>(I(),Ve(Vc,{key:a.name,session:a,active:ve(s).current===a.name,collapsed:e.collapsed,onClick:u=>ve(s).select(a.name)},null,8,["session","active","collapsed","onClick"]))),128)),ve(s).sessions.length?ae("",!0):Ye((I(),K("div",uf,[...l[4]||(l[4]=[_("p",null,"No active sessions",-1),_("p",{class:"sub-hint"},"Create one to get started",-1)])],512)),[[rn,!e.collapsed]])])],512),[[rn,o.value==="sessions"]]),o.value==="files"&&!e.collapsed?(I(),K("div",ff,[_e(tf)])):ae("",!0)],2))}},pf=Ge(df,[["__scopeId","data-v-b8faf56e"]]),hf="/logo.svg",mf=["width","height"],gf={__name:"BrandMark",props:{size:{type:Number,default:32}},setup(e){return(t,n)=>(I(),K("img",{class:"brand-mark",src:hf,width:e.size,height:e.size,alt:"","aria-hidden":"true",draggable:"false"},null,8,mf))}},co=Ge(gf,[["__scopeId","data-v-f54af403"]]);async function vf({files:e,directory:t,signal:n,onProgress:s=()=>{},onUnauthorized:o=()=>{},createXHR:r=()=>new XMLHttpRequest}){const i={completed:[],cancelled:[],failed:[]};for(let l=0;l<e.length;l++){const a=e[l],u=ao(t,a.name);if(n.aborted){i.cancelled.push(u);continue}s({index:l+1,total:e.length,percent:0,filename:a.name});try{const c=await new Promise((f,m)=>{const g=r(),y=()=>g.abort(),v=(T,p)=>{n.removeEventListener("abort",y),T(p)};g.open("POST",`/api/files/upload?${new URLSearchParams({dir:t,filename:a.name})}`),g.setRequestHeader("Content-Type","application/octet-stream"),g.upload.onprogress=T=>{T.lengthComputable&&s({index:l+1,total:e.length,percent:Math.round(T.loaded/T.total*100),filename:a.name})},g.onload=()=>{let T={};try{T=JSON.parse(g.responseText)}catch{}g.status===401&&o(),g.status>=200&&g.status<300&&T.path?v(f,T):v(m,new Error(T.error||`Upload failed (${g.status})`))},g.onerror=()=>v(m,new Error("Network error while uploading")),g.onabort=()=>v(m,new DOMException("Upload cancelled","AbortError")),n.addEventListener("abort",y,{once:!0}),n.aborted?v(m,new DOMException("Upload cancelled","AbortError")):g.send(a)});i.completed.push(c.path)}catch(c){n.aborted||c.name==="AbortError"?i.cancelled.push(u):i.failed.push({path:u,error:c.message})}}return i}const yf={class:"terminal-area"},bf={key:0,class:"terminal-tools","aria-label":"Terminal tools"},wf=["disabled","title"],_f=["disabled","title"],xf=["disabled"],Cf=["title"],Sf=["value"],Ef={key:1,class:"selection-hint"},Tf=["src"],$f={key:2,class:"welcome__container"},kf={class:"welcome__content"},Af={class:"welcome-brand"},Mf={class:"welcome__text"},Pf={class:"highlight"},Of=["disabled"],If=["disabled"],Rf={__name:"TerminalView",emits:["create"],setup(e,{emit:t}){const n=Mt(),s=t,o=$t("toast"),r=V(null),i=ml(null),l=V(""),a=V(""),u=V(null),c=V(null),f=V(null),m=/Mac|iPhone|iPad/.test(navigator.platform),g=m?"⌘C":"Ctrl+Shift+C",y=m?"⌘V":"Ctrl+Shift+V",v=m?"Option":"Shift",T=Re(()=>!!(l.value||a.value));let p=null,w=null;const $=V(null),k=V(null),U=V(!1);let te=null,ie=null,B=!1;function A(){z();const X=M.value;!X||X.status!=="running"||U.value||(ie={name:X.name,root:(X.root?Promise.resolve(X.root):n.pinRoot(X.name)).then(H=>({root:H}),H=>({error:H}))},$.value.click())}async function G(X){const H=X.join(`
|
|
15
|
-
`);await Ks(H)?L("路径已复制。","success"):f.value={mode:"copy",text:H}}async function ne(X){const H=Array.from(X.target.files||[]);X.target.value="";const xe=ie;if(ie=null,!H.length||!xe||U.value)return;U.value=!0,te=new AbortController;const
|
|
13
|
+
Git:${Es[p.gitStatus]}`:""}${p.gitChange?.originalPath?`
|
|
14
|
+
原路径:${p.gitChange.originalPath}`:""}`});let m=null;async function g(){if(m?.abort(),n.entry.virtual){i.value=[],l.value=!1,a.value="";return}const p=new AbortController;m=p,l.value=!0,a.value="";try{const $=await(await o.apiRequest(`/api/files?${new URLSearchParams({path:n.entry.path})}`,{signal:p.signal})).json();p.signal.aborted||(i.value=$.entries)}catch(w){p.signal.aborted||(a.value=w.message)}finally{p.signal.aborted||(l.value=!1)}}async function y(){n.entry.type==="directory"?(r.value=!r.value,r.value&&await g()):n.entry.type==="file"&&s("preview",n.entry)}function v(p){if(p.preventDefault(),n.entry.virtual)return;const w=u.value.getBoundingClientRect();s("menu",{entry:n.entry,x:p.clientX||w.left,y:p.clientY||w.bottom,trigger:u.value})}async function T(p){if(p.target!==u.value)return;const w=[...u.value.closest('[role="tree"]').querySelectorAll("[data-tree-row]")],$=w.indexOf(u.value);["ArrowDown","ArrowUp","Home","End"].includes(p.key)?(p.preventDefault(),w[p.key==="Home"?0:p.key==="End"?w.length-1:Math.max(0,Math.min(w.length-1,$+(p.key==="ArrowDown"?1:-1)))]?.focus()):p.key==="ArrowRight"&&n.entry.type==="directory"?(p.preventDefault(),r.value?(await Mt(),u.value.parentElement.querySelector('[role="group"] [data-tree-row]')?.focus()):await y()):p.key==="ArrowLeft"?(p.preventDefault(),r.value?r.value=!1:u.value.parentElement.parentElement.closest("li")?.querySelector("[data-tree-row]")?.focus()):p.key==="Enter"||p.key===" "?(p.preventDefault(),y()):p.key==="ContextMenu"||p.shiftKey&&p.key==="F10"?v(p):!n.entry.virtual&&(p.key==="F2"||p.key==="Delete")&&(p.preventDefault(),s("operation",{kind:p.key==="F2"?"rename":"delete",entry:n.entry}))}return ze(()=>o.fileRevision,()=>{r.value&&g()}),ze(()=>n.entry.virtual,()=>{r.value&&g()}),Ut(()=>m?.abort()),(p,w)=>{const $=Xl("FileTreeItem",!0);return I(),K("li",zc,[_("div",{ref_key:"row",ref:u,class:"tree-row",role:"treeitem","data-tree-row":"",tabindex:"0","aria-expanded":e.entry.type==="directory"?r.value:void 0,"aria-label":`${e.entry.name}${e.entry.gitStatus?`,${ve(Es)[e.entry.gitStatus]}`:e.entry.hasGitChanges?",包含 Git 改动":""}`,title:f.value,onClick:y,onContextmenu:v,onKeydown:T},[_("span",Jc,se(e.entry.type==="directory"?r.value?"⌄":"›":""),1),_("span",Zc,se(e.entry.type==="directory"?"▱":e.entry.type==="symlink"?"↗":"≡"),1),_("span",{class:We(["filename",{dotfile:e.entry.name.startsWith("."),deleted:e.entry.virtual}])},se(e.entry.name),3),_("span",{class:We(["row-end",{"has-menu":!e.entry.virtual,"has-status":e.entry.gitStatus||e.entry.hasGitChanges}])},[e.entry.type!=="directory"&&e.entry.gitStatus?(I(),K("span",{key:0,class:We(["git-badge",`git-${e.entry.gitStatus}`]),title:ve(Es)[e.entry.gitStatus],"aria-hidden":"true"},se(e.entry.gitStatus),11,Qc)):e.entry.hasGitChanges?(I(),K("span",eu,"●")):ae("",!0),e.entry.virtual?ae("",!0):(I(),K("button",{key:2,class:"more","aria-label":`${e.entry.name} 文件操作`,title:"文件操作",onClick:Ee(v,["stop"]),onKeydown:w[0]||(w[0]=Ee(()=>{},["stop"]))},"⋯",40,tu))],2)],40,Xc),r.value?(I(),K("ul",nu,[l.value?(I(),K("li",su,"加载中…")):a.value?(I(),K("li",ou,[Ve(se(a.value)+" ",1),_("button",{onClick:g},"重试")])):c.value.length?ae("",!0):(I(),K("li",ru,"空文件夹")),(I(!0),K(ye,null,En(c.value,k=>(I(),Be($,{key:k.path,entry:k,changes:e.changes,onPreview:w[1]||(w[1]=U=>s("preview",U)),onMenu:w[2]||(w[2]=U=>s("menu",U)),onOperation:w[3]||(w[3]=U=>s("operation",U))},null,8,["entry","changes"]))),128))])):ae("",!0)])}}},lu=Ge(iu,[["__scopeId","data-v-5c068d88"]]),au={id:"operation-title"},cu={class:"operation-path"},uu={key:0},fu={key:1},du=["disabled"],pu={key:2,class:"error",role:"alert"},hu={class:"dialog-actions"},mu=["disabled"],gu=["disabled"],vu={__name:"FileOperationDialog",props:{operation:{type:Object,required:!0},trash:String,busy:Boolean,error:String},emits:["close","submit"],setup(e,{emit:t}){const n=e,s=t,o=B(null),r=B(null),i=B(n.operation.kind==="rename"?n.operation.entry.name:n.operation.entry.path),l=je(()=>({rename:"重命名",move:"移动文件",delete:n.trash==="mv-trash"?"移到废纸篓?":"永久删除?"})[n.operation.kind]);let a;return wt(()=>{a=document.activeElement,o.value.showModal(),r.value?.select()}),Ut(()=>a?.focus()),(u,c)=>(I(),Be(Yr,{to:"body"},[_("dialog",{ref_key:"dialog",ref:o,class:"file-dialog","aria-labelledby":"operation-title",onCancel:c[3]||(c[3]=Ee(f=>!e.busy&&s("close"),["prevent"])),onClick:c[4]||(c[4]=f=>{f.target===o.value&&!e.busy&&s("close")})},[_("form",{onSubmit:c[2]||(c[2]=Ee(f=>s("submit",i.value),["prevent"]))},[_("h3",au,se(l.value),1),_("p",cu,se(e.operation.entry.path),1),e.operation.kind==="delete"?(I(),K("p",uu,se(e.trash==="mv-trash"?"文件将移到 ~/.Trash/,可从废纸篓找回。":"文件将永久删除,此操作无法撤销。"),1)):(I(),K("label",fu,[Ve(se(e.operation.kind==="rename"?"新名称":"目标完整路径(含文件名)")+" ",1),it(_("input",{ref_key:"input",ref:r,"onUpdate:modelValue":c[0]||(c[0]=f=>i.value=f),required:"",disabled:e.busy,autocomplete:"off"},null,8,du),[[us,i.value]])])),e.error?(I(),K("p",pu,se(e.error),1)):ae("",!0),_("div",hu,[_("button",{type:"button",class:"btn",disabled:e.busy,onClick:c[1]||(c[1]=f=>s("close"))},"取消",8,mu),_("button",{class:We(["btn",e.operation.kind==="delete"?"delete-btn":"btn-primary"]),disabled:e.busy||!i.value.trim()},se(e.busy?"处理中…":l.value),11,gu)])],32)],544)]))}},yu=Ge(vu,[["__scopeId","data-v-5ceee09a"]]),bu={id:"clipboard-title"},wu={id:"clipboard-help"},_u=["readonly","aria-label"],xu={class:"clipboard-actions"},Cu=["disabled"],Su={__name:"ClipboardDialog",props:{mode:{type:String,required:!0},text:{type:String,default:""},shortcut:{type:String,required:!0}},emits:["close","paste"],setup(e,{emit:t}){const n=e,s=t,o=B(null),r=B(null),i=B(n.text);wt(()=>{o.value.focus(),n.mode==="copy"&&o.value.select()});function l(a){if(a.key==="Escape")a.preventDefault(),s("close");else if(a.key==="Tab"){const u=[...r.value.querySelectorAll("textarea, button:not(:disabled)")],c=u[0],f=u[u.length-1];a.shiftKey&&document.activeElement===c?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),c.focus())}}return(a,u)=>(I(),K("div",{class:"clipboard-overlay",onClick:u[3]||(u[3]=Ee(c=>s("close"),["self"])),onKeydown:l},[_("form",{ref_key:"dialog",ref:r,class:"clipboard-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"clipboard-title","aria-describedby":"clipboard-help",onSubmit:u[2]||(u[2]=Ee(c=>s("paste",i.value),["prevent"]))},[_("h3",bu,se(e.mode==="copy"?"Copy text":"Paste text"),1),_("p",wu,[u[4]||(u[4]=Ve(" Clipboard access is unavailable. ",-1)),e.mode==="copy"?(I(),K(ye,{key:0},[Ve("Copy the selected text with "+se(e.shortcut)+".",1)],64)):(I(),K(ye,{key:1},[Ve("Paste here with "+se(e.shortcut)+", then click Paste into terminal.",1)],64))]),it(_("textarea",{ref_key:"textarea",ref:o,"onUpdate:modelValue":u[0]||(u[0]=c=>i.value=c),readonly:e.mode==="copy","aria-label":e.mode==="copy"?"Text to copy":"Text to paste",spellcheck:"false"},null,8,_u),[[us,i.value]]),_("div",xu,[_("button",{type:"button",class:"btn",onClick:u[1]||(u[1]=c=>s("close"))},se(e.mode==="copy"?"Done":"Cancel"),1),e.mode==="paste"?(I(),K("button",{key:0,class:"btn btn-primary",disabled:!i.value.length}," Paste into terminal ",8,Cu)):ae("",!0)])],544)],32))}},Oi=Ge(Su,[["__scopeId","data-v-317cb3e2"]]),Eu=20,sn=3,Tu=1,In=4,$u=12,Ii=160,ku=64;function Au(e,t,n){if(!Number.isFinite(e.deltaY))return 0;if(e.deltaMode===1)return e.deltaY;if(e.deltaMode===2)return e.deltaY*(n>0&&Number.isFinite(n)?n:24);if(e.deltaMode!==0)return 0;const s=t>0&&Number.isFinite(t)?t:Eu;return e.deltaY/s}function Mu({getRowHeight:e,getRows:t,emitStep:n,requestFrame:s,cancelFrame:o,now:r}){let i=0,l=0,a=null,u=null,c=In,f=null;function m(){f!==null&&o(f),f=null,i=0,l=0,a=null,u=null,c=In}function g(){if(r()-u>ku){m();return}for(;i>=sn&&c>0;)if(i-=sn,c--,n(l,a)===!1){m();return}f===null&&c<In&&(f=s(()=>{f=null,c=In,i>=sn&&g()}))}return{wheel(y){const v=Au(y,e(),t());if(!v||!Number.isFinite(v))return!1;const T=r(),p=Math.sign(v);return(p!==l||u===null||T-u>Ii||T<u)&&(i=sn-Tu),l=p,u=T,a=y,i=Math.min(i+Math.abs(v),$u*sn),g(),!0},cancel:m}}function Pu({doc:e,terminal:t}){const n=e.defaultView,s=t.element;if(!n?.WheelEvent||!s?.addEventListener)return()=>{};const o=[];function r(v,T,p,w={capture:!0}){v.addEventListener(T,p,w),o.push(()=>v.removeEventListener(T,p,w))}const i=()=>t.modes?.mouseTrackingMode,l=()=>["vt200","drag","any"].includes(i());let a="";const u=()=>`${i()}:${t.buffer?.active?.type}`,c=s.querySelector(".xterm-screen")||s;let f=0,m=0,g=-1/0;const y=Mu({getRowHeight:()=>{const v=n.performance.now();return(m!==t.rows||v-g>=Ii)&&(f=c.getBoundingClientRect().height/(t.rows||1),m=t.rows,g=v),f},getRows:()=>t.rows,requestFrame:v=>n.requestAnimationFrame(v),cancelFrame:v=>n.cancelAnimationFrame(v),now:()=>n.performance.now(),emitStep:(v,T)=>s.isConnected===!1||e.hidden||!l()||u()!==a?!1:(c.dispatchEvent(new n.WheelEvent("wheel",{deltaY:v,deltaMode:1,clientX:T.clientX,clientY:T.clientY,bubbles:!0,cancelable:!0,view:n})),!0)});r(s,"wheel",v=>{if(!v.isTrusted)return;const T=Math.abs(v.deltaX)>Math.abs(v.deltaY);if(v.defaultPrevented||v.ctrlKey||v.metaKey||v.altKey||v.shiftKey||T||!l()){y.cancel();return}u()!==a&&y.cancel(),a=u(),y.wheel(v)&&(v.preventDefault(),v.stopImmediatePropagation())},{capture:!0,passive:!1});for(const v of["keydown","pointerdown","touchstart","paste","visibilitychange"])r(e,v,y.cancel);return r(n,"blur",y.cancel),r(n,"resize",()=>{g=-1/0,y.cancel()}),()=>{y.cancel(),o.forEach(v=>v())}}async function Ks(e,t=document,n=navigator){try{if(n.clipboard?.writeText)return await n.clipboard.writeText(e),!0}catch{}if(!t.execCommand)return!1;const s=t.activeElement,o=t.createElement("textarea");o.value=e,o.readOnly=!0,o.style.cssText="position:fixed;left:-9999px;top:0;",t.body.appendChild(o);try{return o.focus({preventScroll:!0}),o.select(),t.execCommand("copy")}catch{return!1}finally{o.remove(),s?.focus({preventScroll:!0})}}const Ou=10,Iu=.85,cr=.05,Ru=20;function Lu(e,t){return Math.abs(t)>=Ou&&Math.abs(t)>Math.abs(e)}function Du({getRowHeight:e,emitWheel:t,requestFrame:n=s=>setTimeout(()=>s(performance.now()),16)}){let s=null,o=!1,r=0;function i(){const a=e();return a>0?a:Ru}function l(a){if(Number.isFinite(a)&&(r+=a/i(),Math.abs(r)>=1)){const u=Math.trunc(r);r-=u,t(-u*i(),s?.lastX??0,s?.lastY??0)}}return{touchStart(a){if(o=!1,!a.touches||a.touches.length!==1){s=null;return}const u=a.touches[0];s={id:u.identifier,startX:u.clientX,startY:u.clientY,lastX:u.clientX,lastY:u.clientY,lastTime:a.timeStamp??Date.now(),velocity:0,active:!1}},touchMove(a){if(!s)return;const u=[...a.touches].find(g=>g.identifier===s.id);if(!u)return;const c=a.timeStamp??Date.now();if(!s.active){if(!Lu(u.clientX-s.startX,u.clientY-s.startY))return;s.active=!0,s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c}a.preventDefault();const f=u.clientY-s.lastY,m=Math.max(c-s.lastTime,1);s.velocity=.8*s.velocity+.2*(f/m),s.lastX=u.clientX,s.lastY=u.clientY,s.lastTime=c,l(f)},touchEnd(a){if(!(!s||![...a.changedTouches].some(c=>c.identifier===s.id))){if(s.active&&Math.abs(s.velocity)>cr){o=!0;let c=s.velocity,f=s.lastTime;const m=g=>{if(!o)return;const y=Math.max((g??Date.now())-f,1);if(!Number.isFinite(y)){o=!1;return}if(f=g??Date.now(),c*=Math.pow(Iu,y/16),Math.abs(c)<cr){o=!1;return}l(c*y),n(m)};n(m)}s=null}},cancel(){o=!1,s=null,r=0}}}function Fu({doc:e,terminal:t,isMac:n,getCopyText:s,onCopy:o,onContextMenu:r,onDismiss:i,onInput:l,onSelection:a,onTmuxCopy:u}){const c=[];function f(p,w,$={capture:!0}){e.addEventListener(p,w,$),c.push(()=>e.removeEventListener(p,w,$))}function m(p){p.preventDefault(),p.stopImmediatePropagation()}for(const p of["pointerdown","pointerup","mousedown","mouseup","auxclick"])f(p,w=>{w.button===2||n&&w.button===0&&w.ctrlKey?(w.stopImmediatePropagation(),w.shiftKey||w.preventDefault()):p==="mousedown"&&(i(),w.button===0&&l())});f("contextmenu",p=>{if(p.shiftKey){i();return}m(p),r(p)}),c.push(Pu({doc:e,terminal:t}));const g=Du({getRowHeight:()=>t.element?t.element.getBoundingClientRect().height/(t.rows||1):0,emitWheel:(p,w,$)=>{const k=t.element?.querySelector(".xterm-screen")||t.element;!k||!e.defaultView||k.dispatchEvent(new e.defaultView.WheelEvent("wheel",{deltaY:p,deltaMode:0,clientX:w,clientY:$,bubbles:!0,cancelable:!0}))}}),y={capture:!0,passive:!1};f("touchstart",p=>g.touchStart(p),y),f("touchmove",p=>g.touchMove(p),y),f("touchend",p=>g.touchEnd(p),y),f("touchcancel",()=>g.cancel(),y),c.push(()=>g.cancel()),f("copy",p=>{const w=s();!w||!p.clipboardData||(p.clipboardData.setData("text/plain",w),m(p))}),f("paste",p=>{if(!p.clipboardData)return;const w=p.clipboardData.getData("text/plain");m(p),i(),l(),t.paste(w)}),f("keydown",p=>{const w=p.key.toLowerCase(),$=!p.altKey&&(n&&p.metaKey&&!p.ctrlKey&&w==="c"||p.ctrlKey&&p.shiftKey&&!p.metaKey&&w==="c"),k=!p.altKey&&(n&&p.metaKey&&w==="v"||p.ctrlKey&&w==="v");$?(m(p),o()):k?p.stopImmediatePropagation():(i(),["Shift","Control","Alt","Meta"].includes(p.key)||l())});const v=t.onSelectionChange(()=>a(t.getSelection()));c.push(()=>v.dispose());const T=t.parser.registerOscHandler(52,p=>{const w=p.indexOf(";");if(w<0)return!1;const $=p.slice(w+1);if($==="?")return!1;try{const k=Uint8Array.from(atob($),U=>U.charCodeAt(0));u(new TextDecoder().decode(k))}catch{}return!0});return c.push(()=>T.dispose()),()=>c.forEach(p=>p())}const Nu={class:"file-panel","aria-label":"文件管理器"},ju={class:"file-toolbar"},Hu=["title"],Uu=["disabled"],Ku=["disabled"],Bu=["title"],Vu={key:1,class:"panel-hint",role:"status"},Wu={key:2,class:"panel-hint"},qu={key:3,class:"panel-hint"},Gu={key:4,class:"panel-hint error",role:"alert"},Yu={key:5,class:"panel-hint git-warning",role:"status"},zu={key:6,class:"panel-hint",role:"status"},Xu=["aria-label","aria-busy"],Ju={key:0,role:"none",class:"panel-hint"},Zu=["disabled"],Qu=["disabled"],ef={__name:"FilePanel",setup(e){const t=jl(()=>ao(()=>import("./PreviewDialog-Dc7jb9yA.js"),__vite__mapDeps([2,3]))),n=Pt(),s=kt("toast"),o=je(()=>n.sessions.find(R=>R.name===n.current)),r=B([]),i=B({available:!1,changes:[]}),l=B(""),a=je(()=>Pi(r.value,o.value?.root||"/",i.value.changes)),u=B(null),c=B(!1),f=B(!1),m=B(""),g=B(null),y=B(null),v=B(null),T=B(null),p=B(""),w=B(!1),$=B(!1),k=B(null);let U=null,te=0;const ie=/Mac|iPhone|iPad/.test(navigator.platform)?"⌘C":"Ctrl+C";function V(R,j="info",re){s?.value?.show(R,j,re)}async function A(){const R=o.value,j=++te;if(!R||R.root||R.status!=="running"){f.value=!1;return}f.value=!0,m.value="";try{await n.pinRoot(R.name)}catch(re){j===te&&o.value?.name===R.name&&(m.value=re.message)}finally{j===te&&(f.value=!1)}}async function G(){U?.abort();const R=new AbortController;U=R;const j=o.value?.root;if(!j){r.value=[],u.value=null,c.value=!1;return}c.value=!0,m.value="";const re=(async()=>{try{const Pe=await(await n.apiRequest(`/api/git/status?${new URLSearchParams({root:j})}`,{signal:R.signal})).json();R.signal.aborted||(i.value=Pe,l.value=Pe.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":"")}catch(ge){R.signal.aborted||(l.value=`Git 状态更新失败,已有标记可能已过时:${ge.message}`)}})();try{const Pe=await(await n.apiRequest(`/api/files?${new URLSearchParams({path:j})}`,{signal:R.signal})).json();R.signal.aborted||(r.value=Pe.entries,u.value=Pe.trash)}catch(ge){R.signal.aborted||(m.value=ge.message)}finally{await re,R.signal.aborted||(c.value=!1)}}function ne(R){i.value=R,l.value=R.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":""}async function M(){const R=o.value;if(!(!R||R.status!=="running"))try{await n.pinRoot(R.name,!0),n.refreshFiles(),V("已将文件根目录固定到 shell 当前目录。","success")}catch(j){V(j.message,"error")}}async function F(R){y.value=R,await Mt(),!(!y.value||!v.value)&&(y.value.x=Math.max(8,Math.min(R.x,window.innerWidth-v.value.offsetWidth-8)),y.value.y=Math.max(8,Math.min(R.y,window.innerHeight-v.value.offsetHeight-8)),v.value.querySelector("button:not(:disabled)")?.focus())}function L(R=!1){R&&y.value?.trigger?.focus(),y.value=null}function z(R){if(["Escape","Tab"].includes(R.key))R.key==="Escape"&&R.preventDefault(),L(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(R.key)){R.preventDefault();const j=[...v.value.querySelectorAll("button:not(:disabled)")],re=j.indexOf(document.activeElement),ge=R.key==="Home"?0:R.key==="End"?j.length-1:(re+(R.key==="ArrowDown"?1:-1)+j.length)%j.length;j[ge]?.focus()}}function q(R,j=y.value?.entry){L(!0),!(!j||j.virtual||w.value||R==="delete"&&!u.value)&&(p.value="",T.value={kind:R,entry:j})}async function W(R){if(w.value)return;const{kind:j,entry:re}=T.value;w.value=!0,p.value="";try{if(j==="delete")await n.apiRequest(`/api/files?${new URLSearchParams({path:re.path})}`,{method:"DELETE"});else{if(j==="rename"&&(!R||R==="."||R===".."||R.includes("/")||R.includes("\0")))throw new Error("请输入不含 / 的有效文件名");const ge=j==="rename"?co(re.path.slice(0,re.path.lastIndexOf("/"))||"/",R):R;await n.apiRequest("/api/files",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:re.path,to:ge})})}T.value=null,n.refreshFiles(),V(j==="delete"?u.value==="mv-trash"?"已移到废纸篓。":"已永久删除。":"文件已更新。","success")}catch(ge){p.value=ge.message}finally{w.value=!1}}function oe(R=y.value?.entry){if(L(!0),!R)return;const j=document.createElement("a");j.href=Ai(R.path,!0),j.download=R.name,document.body.append(j),j.click(),j.remove()}async function He(R=y.value?.entry){L(!0),await Ks(R.path)?V("路径已复制。","success"):k.value=R.path}async function ct(R=y.value?.entry){const j=o.value?.root;if(L(!0),!(!R||!j||$.value)){$.value=!0;try{const ge=await(await n.apiRequest("/api/files/archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:R.path,root:j})})).json();n.refreshFiles(),V(`已生成:${ge.path}`,"success",{action:{label:"下载",onClick:()=>oe({path:ge.path,name:ge.path.split("/").pop()})}})}catch(re){V(re.message,"error")}finally{$.value=!1}}}function Ue(R){v.value?.contains(R.target)||L()}return ze(()=>[o.value?.name,o.value?.status],()=>{m.value="",A()},{immediate:!0}),ze(()=>[o.value?.name,o.value?.root],()=>{r.value=[],g.value=null,L(),i.value={available:!1,changes:[]},l.value="",w.value||(T.value=null),G()},{immediate:!0}),ze(()=>n.fileRevision,G),wt(()=>{document.addEventListener("pointerdown",Ue),window.addEventListener("resize",L)}),Ut(()=>{te++,U?.abort(),document.removeEventListener("pointerdown",Ue),window.removeEventListener("resize",L)}),(R,j)=>(I(),K("section",Nu,[_("div",ju,[_("span",{class:"project-name",title:o.value?.root||""},se(o.value?.alias||o.value?.name||"文件"),9,Hu),_("button",{disabled:!o.value?.root||c.value,title:"刷新目录和 Git 标记","aria-label":"刷新目录和 Git 标记",onClick:j[0]||(j[0]=re=>ve(n).refreshFiles())},"↻",8,Uu),_("button",{disabled:o.value?.status!=="running",title:"重新固定到 shell 当前目录","aria-label":"重新固定到 shell 当前目录",onClick:M},"📍",8,Ku)]),o.value?.root?(I(),K("div",{key:0,class:"root-path",title:o.value.root},se(o.value.root),9,Bu)):ae("",!0),$.value?(I(),K("div",Vu,"正在生成 ZIP…")):ae("",!0),o.value?!o.value.root&&!c.value&&!f.value&&!m.value?(I(),K("div",qu,"启动 session 后自动确定根目录")):ae("",!0):(I(),K("div",Wu,"选择一个会话以浏览文件。")),m.value?(I(),K("div",Gu,[Ve(se(m.value)+" ",1),_("button",{onClick:j[1]||(j[1]=re=>o.value?.root?G():A())},"重试")])):ae("",!0),l.value?(I(),K("div",Yu,se(l.value),1)):ae("",!0),c.value||f.value?(I(),K("div",zu,"加载中…")):ae("",!0),o.value?.root?(I(),K("ul",{key:`${o.value.name}:${o.value.root}`,class:"file-tree",role:"tree","aria-label":o.value.root,"aria-busy":c.value},[(I(!0),K(ye,null,En(a.value,re=>(I(),Be(lu,{key:re.path,entry:re,changes:i.value.changes,onPreview:j[2]||(j[2]=ge=>g.value=ge),onMenu:F,onOperation:ge=>q(ge.kind,ge.entry)},null,8,["entry","changes","onOperation"]))),128)),!a.value.length&&!c.value&&!m.value?(I(),K("li",Ju,"空文件夹")):ae("",!0)],8,Xu)):ae("",!0),(I(),Be(Yr,{to:"body"},[y.value?(I(),K("div",{key:0,ref_key:"menuElement",ref:v,class:"file-menu",style:xn({left:`${y.value.x}px`,top:`${y.value.y}px`}),role:"menu","aria-label":"文件操作",onKeydown:z},[y.value.entry.type==="file"?(I(),K("button",{key:0,role:"menuitem",onClick:j[3]||(j[3]=re=>{g.value=y.value.entry,L(!0)})},"预览")):ae("",!0),_("button",{role:"menuitem",onClick:j[4]||(j[4]=re=>q("rename"))},[...j[13]||(j[13]=[Ve("重命名 ",-1),_("span",null,"F2",-1)])]),_("button",{role:"menuitem",onClick:j[5]||(j[5]=re=>q("move"))},"移动…"),y.value.entry.type==="file"?(I(),K("button",{key:1,role:"menuitem",onClick:j[6]||(j[6]=re=>oe())},"下载")):ae("",!0),y.value.entry.type==="directory"?(I(),K("button",{key:2,role:"menuitem",disabled:$.value,onClick:j[7]||(j[7]=re=>ct())},"压缩为 ZIP",8,Zu)):ae("",!0),_("button",{role:"menuitem",onClick:j[8]||(j[8]=re=>He())},"复制路径"),_("button",{class:"danger",role:"menuitem",disabled:!u.value,onClick:j[9]||(j[9]=re=>q("delete"))},se(u.value==="mv-trash"?"移到废纸篓…":"永久删除…"),9,Qu)],36)):ae("",!0)])),g.value?(I(),Be(ve(t),{key:8,entry:g.value,root:o.value.root,changes:i.value.changes,onGitStatus:ne,onClose:j[10]||(j[10]=re=>g.value=null)},null,8,["entry","root","changes"])):ae("",!0),T.value?(I(),Be(yu,{key:T.value.entry.path+T.value.kind,operation:T.value,trash:u.value,busy:w.value,error:p.value,onClose:j[11]||(j[11]=re=>T.value=null),onSubmit:W},null,8,["operation","trash","busy","error"])):ae("",!0),k.value!==null?(I(),Be(Oi,{key:10,mode:"copy",text:k.value,shortcut:ve(ie),onClose:j[12]||(j[12]=re=>k.value=null)},null,8,["text","shortcut"])):ae("",!0)]))}},tf=Ge(ef,[["__scopeId","data-v-771bf310"]]),nf={class:"sidebar-tabs",role:"tablist","aria-label":"侧栏"},sf=["aria-selected"],of=["aria-selected"],rf={class:"sessions-panel",id:"sessions-panel",role:"tabpanel","aria-labelledby":"sessions-tab"},lf={class:"sidebar-header"},af={class:"sidebar-title"},cf={class:"session-list"},uf={key:0,class:"empty-hint"},ff={key:0,id:"files-panel",class:"files-panel",role:"tabpanel","aria-labelledby":"files-tab"},df={__name:"Sidebar",props:{collapsed:Boolean,mobile:Boolean},emits:["create","expand"],setup(e,{emit:t}){const n=t,s=Pt(),o=B("sessions");function r(i){o.value=i,n("expand")}return(i,l)=>(I(),K("aside",{class:We(["sidebar",{collapsed:e.collapsed}])},[_("div",nf,[_("button",{id:"sessions-tab",role:"tab","aria-selected":o.value==="sessions","aria-controls":"sessions-panel",onClick:l[0]||(l[0]=a=>r("sessions"))},"会话",8,sf),_("button",{id:"files-tab",role:"tab","aria-selected":o.value==="files","aria-controls":"files-panel",onClick:l[1]||(l[1]=a=>r("files"))},"文件",8,of)]),it(_("div",rf,[_("div",lf,[it(_("h2",af,"Sessions",512),[[rn,!e.collapsed]]),_("button",{class:"icon-btn new-session-btn",onClick:l[2]||(l[2]=a=>n("create")),title:"New Session"},[l[3]||(l[3]=_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),_("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),it(_("span",null,"New Session",512),[[rn,!e.collapsed]])])]),_("div",cf,[(I(!0),K(ye,null,En(ve(s).sortedSessions,a=>(I(),Be(Bc,{key:a.name,session:a,active:ve(s).current===a.name,collapsed:e.collapsed,onClick:u=>ve(s).select(a.name)},null,8,["session","active","collapsed","onClick"]))),128)),ve(s).sessions.length?ae("",!0):it((I(),K("div",uf,[...l[4]||(l[4]=[_("p",null,"No active sessions",-1),_("p",{class:"sub-hint"},"Create one to get started",-1)])],512)),[[rn,!e.collapsed]])])],512),[[rn,o.value==="sessions"]]),o.value==="files"&&!e.collapsed?(I(),K("div",ff,[_e(tf)])):ae("",!0)],2))}},pf=Ge(df,[["__scopeId","data-v-b8faf56e"]]),hf="/logo.svg",mf=["width","height"],gf={__name:"BrandMark",props:{size:{type:Number,default:32}},setup(e){return(t,n)=>(I(),K("img",{class:"brand-mark",src:hf,width:e.size,height:e.size,alt:"","aria-hidden":"true",draggable:"false"},null,8,mf))}},uo=Ge(gf,[["__scopeId","data-v-f54af403"]]);async function vf({files:e,directory:t,signal:n,onProgress:s=()=>{},onUnauthorized:o=()=>{},createXHR:r=()=>new XMLHttpRequest}){const i={completed:[],cancelled:[],failed:[]};for(let l=0;l<e.length;l++){const a=e[l],u=co(t,a.name);if(n.aborted){i.cancelled.push(u);continue}s({index:l+1,total:e.length,percent:0,filename:a.name});try{const c=await new Promise((f,m)=>{const g=r(),y=()=>g.abort(),v=(T,p)=>{n.removeEventListener("abort",y),T(p)};g.open("POST",`/api/files/upload?${new URLSearchParams({dir:t,filename:a.name})}`),g.setRequestHeader("Content-Type","application/octet-stream"),g.upload.onprogress=T=>{T.lengthComputable&&s({index:l+1,total:e.length,percent:Math.round(T.loaded/T.total*100),filename:a.name})},g.onload=()=>{let T={};try{T=JSON.parse(g.responseText)}catch{}g.status===401&&o(),g.status>=200&&g.status<300&&T.path?v(f,T):v(m,new Error(T.error||`Upload failed (${g.status})`))},g.onerror=()=>v(m,new Error("Network error while uploading")),g.onabort=()=>v(m,new DOMException("Upload cancelled","AbortError")),n.addEventListener("abort",y,{once:!0}),n.aborted?v(m,new DOMException("Upload cancelled","AbortError")):g.send(a)});i.completed.push(c.path)}catch(c){n.aborted||c.name==="AbortError"?i.cancelled.push(u):i.failed.push({path:u,error:c.message})}}return i}const yf={class:"terminal-area"},bf={key:0,class:"terminal-tools","aria-label":"Terminal tools"},wf=["disabled","title"],_f=["disabled","title"],xf=["disabled"],Cf=["title"],Sf=["value"],Ef={key:1,class:"selection-hint"},Tf=["src"],$f={key:2,class:"welcome__container"},kf={class:"welcome__content"},Af={class:"welcome-brand"},Mf={class:"welcome__text"},Pf={class:"highlight"},Of=["disabled"],If=["disabled"],Rf={__name:"TerminalView",emits:["create"],setup(e,{emit:t}){const n=Pt(),s=t,o=kt("toast"),r=B(null),i=ml(null),l=B(""),a=B(""),u=B(null),c=B(null),f=B(null),m=/Mac|iPhone|iPad/.test(navigator.platform),g=m?"⌘C":"Ctrl+Shift+C",y=m?"⌘V":"Ctrl+Shift+V",v=m?"Option":"Shift",T=je(()=>!!(l.value||a.value));let p=null,w=null;const $=B(null),k=B(null),U=B(!1);let te=null,ie=null,V=!1;function A(){z();const X=M.value;!X||X.status!=="running"||U.value||(ie={name:X.name,root:(X.root?Promise.resolve(X.root):n.pinRoot(X.name)).then(H=>({root:H}),H=>({error:H}))},$.value.click())}async function G(X){const H=X.join(`
|
|
15
|
+
`);await Ks(H)?L("路径已复制。","success"):f.value={mode:"copy",text:H}}async function ne(X){const H=Array.from(X.target.files||[]);X.target.value="";const xe=ie;if(ie=null,!H.length||!xe||U.value)return;U.value=!0,te=new AbortController;const Re=te.signal;try{const{root:Ze,error:d}=await xe.root;if(d)throw d;if(Re.aborted)return;const h=co(Ze,"temp");V||(L("上传目录为项目下的 temp/,可在项目 .gitignore 中加入 temp/。"),V=!0);const b=await vf({files:H,directory:h,signal:Re,onProgress:x=>{k.value={...x,session:xe.name}},onUnauthorized:()=>{n.authenticated=!1,te?.abort()}});n.refreshFiles();const S=[`${xe.name}:已完成 ${b.completed.length} 个、取消 ${b.cancelled.length} 个、失败 ${b.failed.length} 个`,...b.completed.map(x=>`已完成:${x}`),...b.cancelled.map(x=>`已取消:${x}`),...b.failed.map(x=>`失败:${x.path}
|
|
16
16
|
${x.error}`)].join(`
|
|
17
|
-
`);o?.value?.show(S,b.failed.length?"error":b.cancelled.length?"info":"success",{duration:0,action:b.completed.length?{label:"复制路径",onClick:()=>G(b.completed)}:void 0})}catch(Qe){L(Qe.message,"error")}finally{U.value=!1,k.value=null,te=null}}const M=Re(()=>n.sessions.find(X=>X.name===n.current)),F=Re(()=>!M.value||M.value.status!=="running"?null:`/terminal/${M.value.name}`);function L(X,H="info"){o?.value?.show(X,H)}function z(X=!1){u.value=null,X&&i.value?.focus()}function q(){return i.value?.getSelection()||a.value}async function W(){z();const X=i.value,H=q();if(!X||!H){L(`Select text first (${v} + drag).`);return}const xe=await Ks(H);i.value===X&&(xe?(L("Copied to clipboard.","success"),X.focus()):f.value={mode:"copy",text:H})}function oe(X,H=i.value){!H||H!==i.value||(a.value="",H.paste(X),H.focus())}async function He(){z();const X=i.value;if(X)try{if(!navigator.clipboard?.readText)throw new Error("Clipboard unavailable");const H=await navigator.clipboard.readText();oe(H,X)}catch{i.value===X&&(f.value={mode:"paste",text:""})}}function ct(){f.value=null,i.value?.focus()}function Ue(X){oe(X),ct()}async function R(X){const H=r.value.getBoundingClientRect();u.value={x:H.left+X.clientX,y:H.top+X.clientY},await Ht();const xe=c.value;!xe||!u.value||(u.value.x=Math.max(8,Math.min(u.value.x,window.innerWidth-xe.offsetWidth-8)),u.value.y=Math.max(8,Math.min(u.value.y,window.innerHeight-xe.offsetHeight-8)),xe.querySelector("button:not(:disabled)")?.focus())}function j(X){if(X.key==="Escape"||X.key==="Tab")X.key==="Escape"&&X.preventDefault(),z(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(X.key)){X.preventDefault();const H=[...c.value.querySelectorAll("button:not(:disabled)")],xe=H.indexOf(document.activeElement),Le=X.key==="Home"?0:X.key==="End"?H.length-1:(xe+(X.key==="ArrowDown"?1:-1)+H.length)%H.length;H[Le]?.focus()}}function re(){clearTimeout(w),w=null,p?.(),p=null,i.value=null,l.value="",a.value="",u.value=null,f.value=null}function ge(X){re();const H=X.target,xe=Date.now()+1e4;function Le(){if(r.value!==H)return;const Qe=H.contentWindow?.term;if(!Qe){Date.now()<xe?w=setTimeout(Le,50):L("Terminal clipboard controls could not load. Please reload the page.","error");return}i.value=Qe,Qe.options.macOptionClickForcesSelection=!0,l.value=Qe.getSelection(),p=Fu({doc:H.contentDocument,terminal:Qe,isMac:m,getCopyText:q,onCopy:W,onContextMenu:R,onDismiss:()=>z(),onInput:()=>{a.value=""},onSelection:d=>{l.value=d,d&&(a.value="")},onTmuxCopy:d=>{a.value=d}})}Le()}function Pe(X){c.value?.contains(X.target)||z()}return Xe(F,re),At(()=>{document.addEventListener("pointerdown",Pe),window.addEventListener("resize",z)}),Ut(()=>{te?.abort(),re(),document.removeEventListener("pointerdown",Pe),window.removeEventListener("resize",z)}),(X,H)=>(I(),K("div",yf,[_("input",{ref_key:"fileInput",ref:$,type:"file",multiple:"",hidden:"",onChange:ne},null,544),M.value||U.value?(I(),K("div",bf,[_("button",{class:"clipboard-btn",disabled:!i.value||!T.value,title:`Copy selected text (${ve(g)})`,onMousedown:H[0]||(H[0]=$e(()=>{},["prevent"])),onClick:W},"Copy",40,wf),_("button",{class:"clipboard-btn",disabled:!i.value,title:`Paste from your computer (${ve(y)})`,onMousedown:H[1]||(H[1]=$e(()=>{},["prevent"])),onClick:He},"Paste",40,_f),_("button",{class:"clipboard-btn",disabled:M.value?.status!=="running"||U.value,onClick:A},"Upload",8,xf),U.value?(I(),K("div",{key:0,class:"upload-progress","aria-live":"polite",title:k.value?`${k.value.session}: ${k.value.filename}`:"准备上传"},[_("span",null,se(k.value?`${k.value.index}/${k.value.total} · ${k.value.percent}%`:"准备上传…"),1),_("progress",{value:k.value?.percent||0,max:"100","aria-label":"上传进度"},null,8,Sf),_("button",{class:"clipboard-btn",onClick:H[2]||(H[2]=xe=>ve(te)?.abort())},"取消")],8,Cf)):(I(),K("span",Ef,se(ve(v))+" + drag to select · "+se(ve(g))+" / "+se(ve(y)),1))])):ae("",!0),F.value?(I(),K("iframe",{ref_key:"iframe",ref:r,key:F.value,src:F.value,class:"terminal-frame",title:"Terminal",allow:"clipboard-read; clipboard-write",onLoad:ge},null,40,Tf)):(I(),K("div",$f,[_("div",kf,[_("div",Af,[_e(co,{size:104}),H[6]||(H[6]=_("div",{class:"logo-text"},"ACLI Hub",-1))]),M.value?(I(),K(ye,{key:1},[_("p",Mf,[H[8]||(H[8]=Be(" Session ",-1)),_("span",Pf,se(M.value.name),1),H[9]||(H[9]=Be(" is currently stopped. ",-1))]),H[10]||(H[10]=_("p",{class:"sub-text"},"Restart the session to continue.",-1))],64)):(I(),K(ye,{key:0},[H[7]||(H[7]=_("p",{class:"welcome__text"},"No active session selected.",-1)),_("button",{class:"btn btn-primary",onClick:H[3]||(H[3]=xe=>s("create"))}," Create First Session ")],64))])])),u.value?(I(),K("div",{key:3,ref_key:"menuElement",ref:c,class:"clipboard-menu",style:xn({left:`${u.value.x}px`,top:`${u.value.y}px`}),role:"menu","aria-label":"Terminal clipboard",onKeydown:j},[_("button",{role:"menuitem",disabled:!T.value,onMousedown:H[4]||(H[4]=$e(()=>{},["prevent"])),onClick:W},[H[11]||(H[11]=Be(" Copy ",-1)),_("span",null,se(ve(g)),1)],40,Of),_("button",{role:"menuitem",onMousedown:H[5]||(H[5]=$e(()=>{},["prevent"])),onClick:He},[H[12]||(H[12]=Be(" Paste ",-1)),_("span",null,se(ve(y)),1)],32),_("button",{role:"menuitem",disabled:M.value?.status!=="running"||U.value,onClick:A},"Upload files…",8,If),H[13]||(H[13]=_("p",null,"Shift + right-click for browser menu",-1))],36)):ae("",!0),f.value?(I(),Ve(Oi,{key:4,mode:f.value.mode,text:f.value.text,shortcut:f.value.mode==="copy"?ve(m)?"⌘C":"Ctrl+C":ve(m)?"⌘V":"Ctrl+V",onClose:ct,onPaste:Ue},null,8,["mode","text","shortcut"])):ae("",!0)]))}},Lf=Ge(Rf,[["__scopeId","data-v-95819edf"]]),Df={class:"modal-content glass"},Ff={class:"modal-header"},Nf={class:"modal-body"},jf={class:"form-group"},Hf=["placeholder"],Uf={class:"form-group"},Kf=["value"],Vf={class:"modal-footer"},Bf=["disabled"],Wf={__name:"CreateDialog",emits:["close"],setup(e,{emit:t}){const n=t,s=Mt(),o=V({name:"",command:s.shells.length?s.shells[0].id:"bash"}),r=V(!1),i=Re(()=>o.value.name?o.value.name:`${o.value.command}-auto`);async function l(){if(!r.value){r.value=!0;try{await s.create(o.value),n("close")}catch(a){console.error(a)}finally{r.value=!1}}}return(a,u)=>(I(),K("div",{class:"modal-overlay",onClick:u[4]||(u[4]=$e(c=>n("close"),["self"]))},[_("div",Df,[_("div",Ff,[u[5]||(u[5]=_("h3",null,"Create New Session",-1)),_("button",{class:"close-btn",onClick:u[0]||(u[0]=c=>n("close"))},"✕")]),_("div",Nf,[_("label",jf,[u[6]||(u[6]=_("span",{class:"label-text"},"Session Name (Optional)",-1)),Ye(_("input",{"onUpdate:modelValue":u[1]||(u[1]=c=>o.value.name=c),type:"text",placeholder:i.value,onKeyup:Xn(l,["enter"])},null,40,Hf),[[$n,o.value.name]])]),_("label",Uf,[u[7]||(u[7]=_("span",{class:"label-text"},"Shell",-1)),Ye(_("select",{"onUpdate:modelValue":u[2]||(u[2]=c=>o.value.command=c)},[(I(!0),K(ye,null,En(ve(s).shells,c=>(I(),K("option",{key:c.id,value:c.id},se(c.name),9,Kf))),128))],512),[[hc,o.value.command]])])]),_("div",Vf,[_("button",{class:"btn",onClick:u[3]||(u[3]=c=>n("close"))},"Cancel"),_("button",{class:"btn btn-primary",onClick:l,disabled:r.value},se(r.value?"Creating...":"Create Session"),9,Bf)])])]))}},qf=Ge(Wf,[["__scopeId","data-v-f9ae44fb"]]),Gf={class:"login-screen"},Yf={class:"login-logo"},zf={key:0,class:"login-error",role:"alert"},Xf=["disabled"],Jf={__name:"LoginView",emits:["success"],setup(e,{emit:t}){const n=t,s=Mt(),o=V(""),r=V(""),i=V(!1),l=V(null);At(()=>{l.value?.focus()});async function a(){if(!(!o.value||i.value)){i.value=!0,r.value="";try{await s.login(o.value),o.value="",n("success")}catch(u){r.value=u.message||"Login failed"}finally{i.value=!1}}}return(u,c)=>(I(),K("div",Gf,[_("form",{class:"login-card",onSubmit:$e(a,["prevent"])},[_("div",Yf,[_e(co,{size:72})]),c[2]||(c[2]=_("h1",null,"ACLI Hub",-1)),c[3]||(c[3]=_("p",{class:"login-hint"},"Enter the session password to continue",-1)),Ye(_("input",{ref_key:"passwordInput",ref:l,"onUpdate:modelValue":c[0]||(c[0]=f=>o.value=f),type:"password",autocomplete:"current-password",placeholder:"Password","aria-label":"Password",onKeydown:c[1]||(c[1]=Xn(f=>{o.value="",r.value=""},["esc"]))},null,544),[[$n,o.value]]),r.value?(I(),K("p",zf,se(r.value),1)):ae("",!0),_("button",{type:"submit",class:"login-btn",disabled:!o.value||i.value},se(i.value?"Signing in…":"Sign in"),9,Xf)],32)]))}},Zf=Ge(Jf,[["__scopeId","data-v-86b6b672"]]),Qf={class:"toast-container","aria-live":"polite"},ed={class:"toast-message"},td={class:"toast-actions"},nd=["onClick"],sd=["onClick"],od={__name:"Toast",setup(e,{expose:t}){const n=V([]);let s=0;const o=new Map;function r(l){clearTimeout(o.get(l)),o.delete(l),n.value=n.value.filter(a=>a.id!==l)}function i(l,a="info",{action:u,duration:c=u?0:4e3}={}){const f=++s;n.value.push({id:f,message:l,type:a,action:u}),c&&o.set(f,setTimeout(()=>r(f),c))}return Ut(()=>{for(const l of o.values())clearTimeout(l)}),t({show:i}),(l,a)=>(I(),K("div",Qf,[_e(ac,{name:"toast"},{default:Ur(()=>[(I(!0),K(ye,null,En(n.value,u=>(I(),K("div",{key:u.id,class:We(["toast",u.type])},[_("div",ed,se(u.message),1),_("div",td,[u.action?(I(),K("button",{key:0,onClick:u.action.onClick},se(u.action.label),9,nd)):ae("",!0),_("button",{"aria-label":"Dismiss notification",onClick:c=>r(u.id)},"×",8,sd)])],2))),128))]),_:1})]))}},rd=Ge(od,[["__scopeId","data-v-6bea03ca"]]);function id(e,t=globalThis.document){return!t||typeof e!="string"||!e.trim()?!1:(t.title=`${e.trim()} · ACLI Hub`,!0)}const ld={key:1,class:"app-layout"},ad={class:"toolbar glass"},cd={class:"toolbar-left"},ud={class:"logo-wrapper"},fd={class:"toolbar-right"},dd={class:"main-area"},pd={__name:"App",setup(e){const t=Mt(),n=V(!1),s=V(!1),o=V(null),r=V(!1);window.innerWidth<768&&(n.value=!0),Kr("toast",o),Xe(()=>t.authenticated,c=>{c&&t.init()}),At(async()=>{await t.checkAuth(),r.value=!0,id(t.instanceName)});async function l(){await t.logout()}function a(){n.value=!n.value}function u(){n.value=!0}return(c,f)=>r.value&&!ve(t).authenticated?(I(),Ve(Zf,{key:0})):r.value?(I(),K("div",ld,[_("header",ad,[_("div",cd,[_("button",{class:"icon-btn toggle-btn",onClick:a,"aria-label":"Toggle Sidebar"},[...f[4]||(f[4]=[_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),_("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),_("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]),_("div",ud,[_e(co,{size:28})]),f[5]||(f[5]=_("h1",{class:"toolbar-title"},"ACLI Hub",-1))]),_("div",fd,[ve(t).authRequired?(I(),K("button",{key:0,class:"icon-btn toggle-btn","aria-label":"Log out",title:"Log out",onClick:l},[...f[6]||(f[6]=[_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),_("polyline",{points:"16 17 21 12 16 7"}),_("line",{x1:"21",y1:"12",x2:"9",y2:"12"})],-1)])])):ae("",!0)])]),_("div",dd,[_("div",{class:We(["sidebar-overlay",{show:!n.value}]),onClick:u},null,2),_e(pf,{collapsed:n.value,onCreate:f[0]||(f[0]=m=>s.value=!0),onExpand:f[1]||(f[1]=m=>n.value=!1)},null,8,["collapsed"]),_e(Lf,{onCreate:f[2]||(f[2]=m=>s.value=!0)})]),s.value?(I(),Ve(qf,{key:0,onClose:f[3]||(f[3]=m=>s.value=!1)})):ae("",!0),_e(rd,{ref_key:"toastRef",ref:o},null,512)])):ae("",!0)}},hd=Ge(pd,[["__scopeId","data-v-cfab805f"]]),Ri=wc(hd);Ri.use(Cc());Ri.mount("#app");export{yd as A,vd as B,gd as C,ye as F,Ts as G,Gr as T,lo as _,Ge as a,Ut as b,I as c,Ve as d,Mi as e,_ as f,K as g,ae as h,ve as i,Yc as j,Ai as k,En as l,Be as m,We as n,At as o,md as p,$e as q,V as r,Ht as s,se as t,Mt as u,ml as v,Xe as w,Re as x,bd as y,lr as z};
|
|
17
|
+
`);o?.value?.show(S,b.failed.length?"error":b.cancelled.length?"info":"success",{duration:0,action:b.completed.length?{label:"复制路径",onClick:()=>G(b.completed)}:void 0})}catch(Ze){L(Ze.message,"error")}finally{U.value=!1,k.value=null,te=null}}const M=je(()=>n.sessions.find(X=>X.name===n.current)),F=je(()=>!M.value||M.value.status!=="running"?null:`/terminal/${M.value.name}`);function L(X,H="info"){o?.value?.show(X,H)}function z(X=!1){u.value=null,X&&i.value?.focus()}function q(){return i.value?.getSelection()||a.value}async function W(){z();const X=i.value,H=q();if(!X||!H){L(`Select text first (${v} + drag).`);return}const xe=await Ks(H);i.value===X&&(xe?(L("Copied to clipboard.","success"),X.focus()):f.value={mode:"copy",text:H})}function oe(X,H=i.value){!H||H!==i.value||(a.value="",H.paste(X),H.focus())}async function He(){z();const X=i.value;if(X)try{if(!navigator.clipboard?.readText)throw new Error("Clipboard unavailable");const H=await navigator.clipboard.readText();oe(H,X)}catch{i.value===X&&(f.value={mode:"paste",text:""})}}function ct(){f.value=null,i.value?.focus()}function Ue(X){oe(X),ct()}async function R(X){const H=r.value.getBoundingClientRect();u.value={x:H.left+X.clientX,y:H.top+X.clientY},await Mt();const xe=c.value;!xe||!u.value||(u.value.x=Math.max(8,Math.min(u.value.x,window.innerWidth-xe.offsetWidth-8)),u.value.y=Math.max(8,Math.min(u.value.y,window.innerHeight-xe.offsetHeight-8)),xe.querySelector("button:not(:disabled)")?.focus())}function j(X){if(X.key==="Escape"||X.key==="Tab")X.key==="Escape"&&X.preventDefault(),z(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(X.key)){X.preventDefault();const H=[...c.value.querySelectorAll("button:not(:disabled)")],xe=H.indexOf(document.activeElement),Re=X.key==="Home"?0:X.key==="End"?H.length-1:(xe+(X.key==="ArrowDown"?1:-1)+H.length)%H.length;H[Re]?.focus()}}function re(){clearTimeout(w),w=null,p?.(),p=null,i.value=null,l.value="",a.value="",u.value=null,f.value=null}function ge(X){re();const H=X.target,xe=Date.now()+1e4;function Re(){if(r.value!==H)return;const Ze=H.contentWindow?.term;if(!Ze){Date.now()<xe?w=setTimeout(Re,50):L("Terminal clipboard controls could not load. Please reload the page.","error");return}i.value=Ze,Ze.options.macOptionClickForcesSelection=!0,l.value=Ze.getSelection(),p=Fu({doc:H.contentDocument,terminal:Ze,isMac:m,getCopyText:q,onCopy:W,onContextMenu:R,onDismiss:()=>z(),onInput:()=>{a.value=""},onSelection:d=>{l.value=d,d&&(a.value="")},onTmuxCopy:d=>{a.value=d}})}Re()}function Pe(X){c.value?.contains(X.target)||z()}return ze(F,re),wt(()=>{document.addEventListener("pointerdown",Pe),window.addEventListener("resize",z)}),Ut(()=>{te?.abort(),re(),document.removeEventListener("pointerdown",Pe),window.removeEventListener("resize",z)}),(X,H)=>(I(),K("div",yf,[_("input",{ref_key:"fileInput",ref:$,type:"file",multiple:"",hidden:"",onChange:ne},null,544),M.value||U.value?(I(),K("div",bf,[_("button",{class:"clipboard-btn",disabled:!i.value||!T.value,title:`Copy selected text (${ve(g)})`,onMousedown:H[0]||(H[0]=Ee(()=>{},["prevent"])),onClick:W},"Copy",40,wf),_("button",{class:"clipboard-btn",disabled:!i.value,title:`Paste from your computer (${ve(y)})`,onMousedown:H[1]||(H[1]=Ee(()=>{},["prevent"])),onClick:He},"Paste",40,_f),_("button",{class:"clipboard-btn",disabled:M.value?.status!=="running"||U.value,onClick:A},"Upload",8,xf),U.value?(I(),K("div",{key:0,class:"upload-progress","aria-live":"polite",title:k.value?`${k.value.session}: ${k.value.filename}`:"准备上传"},[_("span",null,se(k.value?`${k.value.index}/${k.value.total} · ${k.value.percent}%`:"准备上传…"),1),_("progress",{value:k.value?.percent||0,max:"100","aria-label":"上传进度"},null,8,Sf),_("button",{class:"clipboard-btn",onClick:H[2]||(H[2]=xe=>ve(te)?.abort())},"取消")],8,Cf)):(I(),K("span",Ef,se(ve(v))+" + drag to select · "+se(ve(g))+" / "+se(ve(y)),1))])):ae("",!0),F.value?(I(),K("iframe",{ref_key:"iframe",ref:r,key:F.value,src:F.value,class:"terminal-frame",title:"Terminal",allow:"clipboard-read; clipboard-write",onLoad:ge},null,40,Tf)):(I(),K("div",$f,[_("div",kf,[_("div",Af,[_e(uo,{size:104}),H[6]||(H[6]=_("div",{class:"logo-text"},"ACLI Hub",-1))]),M.value?(I(),K(ye,{key:1},[_("p",Mf,[H[8]||(H[8]=Ve(" Session ",-1)),_("span",Pf,se(M.value.name),1),H[9]||(H[9]=Ve(" is currently stopped. ",-1))]),H[10]||(H[10]=_("p",{class:"sub-text"},"Restart the session to continue.",-1))],64)):(I(),K(ye,{key:0},[H[7]||(H[7]=_("p",{class:"welcome__text"},"No active session selected.",-1)),_("button",{class:"btn btn-primary",onClick:H[3]||(H[3]=xe=>s("create"))}," Create First Session ")],64))])])),u.value?(I(),K("div",{key:3,ref_key:"menuElement",ref:c,class:"clipboard-menu",style:xn({left:`${u.value.x}px`,top:`${u.value.y}px`}),role:"menu","aria-label":"Terminal clipboard",onKeydown:j},[_("button",{role:"menuitem",disabled:!T.value,onMousedown:H[4]||(H[4]=Ee(()=>{},["prevent"])),onClick:W},[H[11]||(H[11]=Ve(" Copy ",-1)),_("span",null,se(ve(g)),1)],40,Of),_("button",{role:"menuitem",onMousedown:H[5]||(H[5]=Ee(()=>{},["prevent"])),onClick:He},[H[12]||(H[12]=Ve(" Paste ",-1)),_("span",null,se(ve(y)),1)],32),_("button",{role:"menuitem",disabled:M.value?.status!=="running"||U.value,onClick:A},"Upload files…",8,If),H[13]||(H[13]=_("p",null,"Shift + right-click for browser menu",-1))],36)):ae("",!0),f.value?(I(),Be(Oi,{key:4,mode:f.value.mode,text:f.value.text,shortcut:f.value.mode==="copy"?ve(m)?"⌘C":"Ctrl+C":ve(m)?"⌘V":"Ctrl+V",onClose:ct,onPaste:Ue},null,8,["mode","text","shortcut"])):ae("",!0)]))}},Lf=Ge(Rf,[["__scopeId","data-v-95819edf"]]),Df={class:"modal-header"},Ff={class:"modal-body"},Nf={class:"form-group"},jf=["value"],Hf={class:"modal-footer"},Uf=["disabled"],Kf={__name:"CreateDialog",emits:["close"],setup(e,{emit:t}){const n=t,s=Pt(),o=B({command:s.shells.length?s.shells[0].id:"bash"}),r=B(!1),i=B(null);let l=null;wt(()=>{l=document.activeElement,i.value?.focus()}),no(()=>{l?.isConnected&&l.focus()});async function a(){if(!r.value){r.value=!0;try{await s.create(o.value),n("close")}catch(u){console.error(u)}finally{r.value=!1,await Mt(),document.activeElement===document.body&&i.value?.focus()}}}return(u,c)=>(I(),K("div",{class:"modal-overlay",onClick:c[3]||(c[3]=Ee(f=>n("close"),["self"]))},[_("form",{class:"modal-content glass",onSubmit:Ee(a,["prevent"])},[_("div",Df,[c[4]||(c[4]=_("h3",null,"Create New Session",-1)),_("button",{type:"button",class:"close-btn",onClick:c[0]||(c[0]=f=>n("close"))},"✕")]),_("div",Ff,[_("label",Nf,[c[5]||(c[5]=_("span",{class:"label-text"},"Shell",-1)),it(_("select",{"onUpdate:modelValue":c[1]||(c[1]=f=>o.value.command=f)},[(I(!0),K(ye,null,En(ve(s).shells,f=>(I(),K("option",{key:f.id,value:f.id},se(f.name),9,jf))),128))],512),[[hc,o.value.command]])])]),_("div",Hf,[_("button",{type:"button",class:"btn",onClick:c[2]||(c[2]=f=>n("close"))},"Cancel"),_("button",{ref_key:"createButton",ref:i,type:"submit",class:"btn btn-primary",disabled:r.value},se(r.value?"Creating...":"Create Session"),9,Uf)])],32)]))}},Bf=Ge(Kf,[["__scopeId","data-v-ef0ce732"]]),Vf={class:"login-screen"},Wf={class:"login-logo"},qf={key:0,class:"login-error",role:"alert"},Gf=["disabled"],Yf={__name:"LoginView",emits:["success"],setup(e,{emit:t}){const n=t,s=Pt(),o=B(""),r=B(""),i=B(!1),l=B(null);wt(()=>{l.value?.focus()});async function a(){if(!(!o.value||i.value)){i.value=!0,r.value="";try{await s.login(o.value),o.value="",n("success")}catch(u){r.value=u.message||"Login failed"}finally{i.value=!1}}}return(u,c)=>(I(),K("div",Vf,[_("form",{class:"login-card",onSubmit:Ee(a,["prevent"])},[_("div",Wf,[_e(uo,{size:72})]),c[2]||(c[2]=_("h1",null,"ACLI Hub",-1)),c[3]||(c[3]=_("p",{class:"login-hint"},"Enter the session password to continue",-1)),it(_("input",{ref_key:"passwordInput",ref:l,"onUpdate:modelValue":c[0]||(c[0]=f=>o.value=f),type:"password",autocomplete:"current-password",placeholder:"Password","aria-label":"Password",onKeydown:c[1]||(c[1]=js(f=>{o.value="",r.value=""},["esc"]))},null,544),[[us,o.value]]),r.value?(I(),K("p",qf,se(r.value),1)):ae("",!0),_("button",{type:"submit",class:"login-btn",disabled:!o.value||i.value},se(i.value?"Signing in…":"Sign in"),9,Gf)],32)]))}},zf=Ge(Yf,[["__scopeId","data-v-86b6b672"]]),Xf={class:"toast-container","aria-live":"polite"},Jf={class:"toast-message"},Zf={class:"toast-actions"},Qf=["onClick"],ed=["onClick"],td={__name:"Toast",setup(e,{expose:t}){const n=B([]);let s=0;const o=new Map;function r(l){clearTimeout(o.get(l)),o.delete(l),n.value=n.value.filter(a=>a.id!==l)}function i(l,a="info",{action:u,duration:c=u?0:4e3}={}){const f=++s;n.value.push({id:f,message:l,type:a,action:u}),c&&o.set(f,setTimeout(()=>r(f),c))}return Ut(()=>{for(const l of o.values())clearTimeout(l)}),t({show:i}),(l,a)=>(I(),K("div",Xf,[_e(ac,{name:"toast"},{default:Kr(()=>[(I(!0),K(ye,null,En(n.value,u=>(I(),K("div",{key:u.id,class:We(["toast",u.type])},[_("div",Jf,se(u.message),1),_("div",Zf,[u.action?(I(),K("button",{key:0,onClick:u.action.onClick},se(u.action.label),9,Qf)):ae("",!0),_("button",{"aria-label":"Dismiss notification",onClick:c=>r(u.id)},"×",8,ed)])],2))),128))]),_:1})]))}},nd=Ge(td,[["__scopeId","data-v-6bea03ca"]]);function sd(e,t=globalThis.document){return!t||typeof e!="string"||!e.trim()?!1:(t.title=`${e.trim()} · ACLI Hub`,!0)}const od={key:1,class:"app-layout"},rd={class:"toolbar glass"},id={class:"toolbar-left"},ld={class:"logo-wrapper"},ad={class:"toolbar-right"},cd={class:"main-area"},ud={__name:"App",setup(e){const t=Pt(),n=B(!1),s=B(!1),o=B(null),r=B(!1);window.innerWidth<768&&(n.value=!0),Br("toast",o),ze(()=>t.authenticated,c=>{c&&t.init()}),wt(async()=>{await t.checkAuth(),r.value=!0,sd(t.instanceName)});async function l(){await t.logout()}function a(){n.value=!n.value}function u(){n.value=!0}return(c,f)=>r.value&&!ve(t).authenticated?(I(),Be(zf,{key:0})):r.value?(I(),K("div",od,[_("header",rd,[_("div",id,[_("button",{class:"icon-btn toggle-btn",onClick:a,"aria-label":"Toggle Sidebar"},[...f[4]||(f[4]=[_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),_("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),_("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]),_("div",ld,[_e(uo,{size:28})]),f[5]||(f[5]=_("h1",{class:"toolbar-title"},"ACLI Hub",-1))]),_("div",ad,[ve(t).authRequired?(I(),K("button",{key:0,class:"icon-btn toggle-btn","aria-label":"Log out",title:"Log out",onClick:l},[...f[6]||(f[6]=[_("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[_("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),_("polyline",{points:"16 17 21 12 16 7"}),_("line",{x1:"21",y1:"12",x2:"9",y2:"12"})],-1)])])):ae("",!0)])]),_("div",cd,[_("div",{class:We(["sidebar-overlay",{show:!n.value}]),onClick:u},null,2),_e(pf,{collapsed:n.value,onCreate:f[0]||(f[0]=m=>s.value=!0),onExpand:f[1]||(f[1]=m=>n.value=!1)},null,8,["collapsed"]),_e(Lf,{onCreate:f[2]||(f[2]=m=>s.value=!0)})]),s.value?(I(),Be(Bf,{key:0,onClose:f[3]||(f[3]=m=>s.value=!1)})):ae("",!0),_e(nd,{ref_key:"toastRef",ref:o},null,512)])):ae("",!0)}},fd=Ge(ud,[["__scopeId","data-v-cfab805f"]]),Ri=wc(fd);Ri.use(Cc());Ri.mount("#app");export{md as A,hd as B,pd as C,ye as F,Es as G,Yr as T,ao as _,Ge as a,Ut as b,I as c,Be as d,Mi as e,_ as f,K as g,ae as h,ve as i,Yc as j,Ai as k,En as l,Ve as m,We as n,wt as o,dd as p,Ee as q,B as r,Mt as s,se as t,Pt as u,ml as v,ze as w,je as x,gd as y,ar as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-card: #1e293b;--bg-card-hover: #334155;--border-color: #334155;--border-color-hover: #475569;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-tertiary: #64748b;--accent-primary: #3b82f6;--accent-hover: #2563eb;--accent-dim: rgba(59, 130, 246, .15);--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--sidebar-width: 260px;--sidebar-collapsed-width: 0px;--toolbar-height: 56px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;background:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.glass{background:#1e293bb3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all .2s;border:1px solid transparent;outline:none}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-hover)}input{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:8px 12px;border-radius:var(--radius-md);outline:none;transition:border-color .2s}input:focus{border-color:var(--accent-primary)}.session-card[data-v-0e38e5ff]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);cursor:pointer;transition:all .2s;border:1px solid transparent;color:var(--text-secondary)}.session-card[data-v-0e38e5ff]:hover{background:var(--bg-card-hover);color:var(--text-primary)}.session-card.active[data-v-0e38e5ff]{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color)}.status-indicator[data-v-0e38e5ff]{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary);flex-shrink:0}.status-indicator.running[data-v-0e38e5ff]{background:var(--success);box-shadow:0 0 8px #10b98166}.status-indicator.running.output-active[data-v-0e38e5ff]{background:var(--warning);box-shadow:0 0 8px #f59e0b66}.card-content[data-v-0e38e5ff]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.card-top[data-v-0e38e5ff]{display:flex;align-items:center;gap:4px}.session-name[data-v-0e38e5ff]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.alias-text[data-v-0e38e5ff]{overflow:hidden;text-overflow:ellipsis}.real-name[data-v-0e38e5ff]{flex-shrink:1;max-width:45%;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:400;color:var(--text-tertiary)}.alias-input[data-v-0e38e5ff]{flex:1;min-width:0;padding:2px 6px;font-size:13px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;outline:none}.alias-input[data-v-0e38e5ff]:focus{border-color:var(--accent-primary, #3b82f6)}.close-btn[data-v-0e38e5ff]{display:none;align-items:center;justify-content:center;background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:2px;border-radius:4px;flex-shrink:0}.session-card:hover .close-btn[data-v-0e38e5ff]{display:flex}.close-btn[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--danger)}.session-info[data-v-0e38e5ff]{display:flex;align-items:baseline;gap:8px;font-size:11px;color:var(--text-tertiary)}.pane-title[data-v-0e38e5ff]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirm-bar[data-v-0e38e5ff]{display:flex;align-items:center;gap:6px;font-size:12px}.confirm-text[data-v-0e38e5ff]{color:var(--danger);font-weight:500}.confirm-yes[data-v-0e38e5ff],.confirm-no[data-v-0e38e5ff]{background:none;border:1px solid var(--border-color);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer;color:var(--text-secondary)}.confirm-yes[data-v-0e38e5ff]:hover{background:var(--danger);border-color:var(--danger);color:#fff}.confirm-no[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.session-card.collapsed[data-v-0e38e5ff]{justify-content:center;padding:12px}.session-card.collapsed .status-indicator[data-v-0e38e5ff]{width:10px;height:10px}li[data-v-5c068d88]{list-style:none}.tree-row[data-v-5c068d88]{display:flex;align-items:center;gap:5px;min-height:31px;padding:2px 6px;cursor:pointer;border-radius:3px;outline-offset:-2px}.tree-row[data-v-5c068d88]:hover,.tree-row[data-v-5c068d88]:focus-visible{background:var(--bg-tertiary)}.chevron[data-v-5c068d88]{flex:0 0 10px;color:var(--text-secondary)}.file-icon[data-v-5c068d88]{color:var(--text-secondary);font-size:18px;width:15px}.filename[data-v-5c068d88]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px}.dotfile[data-v-5c068d88]{opacity:.55}.deleted[data-v-5c068d88]{text-decoration:line-through;opacity:.65}.row-end[data-v-5c068d88]{position:relative;flex:0 0 20px;height:24px}.git-badge[data-v-5c068d88],.git-dot[data-v-5c068d88]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.git-badge[data-v-5c068d88]{font:600 11px/1.5 ui-monospace,monospace}.git-M[data-v-5c068d88],.git-dot[data-v-5c068d88]{color:#e5b45c}.git-A[data-v-5c068d88],.git-U[data-v-5c068d88]{color:#71c993}.git-D[data-v-5c068d88],.git-C[data-v-5c068d88]{color:#f08080}.git-R[data-v-5c068d88]{color:#79b8ff}.git-dot[data-v-5c068d88]{font-size:7px}.more[data-v-5c068d88]{position:absolute;inset:0;width:100%;background:var(--bg-tertiary);color:var(--text-secondary);border:none;border-radius:3px;cursor:pointer;padding:0;font-size:18px;opacity:0;pointer-events:none}.tree-row:hover .more[data-v-5c068d88],.tree-row:focus-within .more[data-v-5c068d88]{opacity:1;pointer-events:auto}.tree-row:hover .has-menu .git-badge[data-v-5c068d88],.tree-row:hover .has-menu .git-dot[data-v-5c068d88],.tree-row:focus-within .has-menu .git-badge[data-v-5c068d88],.tree-row:focus-within .has-menu .git-dot[data-v-5c068d88]{opacity:0}.tree-children[data-v-5c068d88]{margin-left:14px;padding-left:5px;border-left:1px solid var(--border-color)}.tree-status[data-v-5c068d88]{padding:5px 10px;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere}.tree-status button[data-v-5c068d88]{background:none;color:var(--text-primary);border:none;cursor:pointer;text-decoration:underline}.error[data-v-5c068d88]{color:var(--danger)}@media(hover:none){.more[data-v-5c068d88]{pointer-events:auto}.row-end:not(.has-status) .more[data-v-5c068d88]{opacity:1;background:transparent}}.file-dialog[data-v-5ceee09a]{margin:auto;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;padding:24px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg)}.file-dialog[data-v-5ceee09a]::backdrop{background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}p[data-v-5ceee09a]{margin:12px 0;color:var(--text-secondary)}.operation-path[data-v-5ceee09a]{overflow-wrap:anywhere;font:12px/1.6 monospace}label[data-v-5ceee09a]{display:flex;flex-direction:column;gap:8px}.dialog-actions[data-v-5ceee09a]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn[data-v-5ceee09a]{background:var(--bg-tertiary);color:var(--text-primary)}.btn-primary[data-v-5ceee09a]{background:var(--accent-primary)}.delete-btn[data-v-5ceee09a]{background:var(--danger);color:#fff}.error[data-v-5ceee09a]{color:var(--danger)}button[data-v-5ceee09a]:disabled{opacity:.5;cursor:default}.clipboard-overlay[data-v-317cb3e2]{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.clipboard-dialog[data-v-317cb3e2]{width:min(520px,calc(100vw - 32px));padding:20px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}h3[data-v-317cb3e2]{font-size:16px}p[data-v-317cb3e2]{margin:12px 0;color:var(--text-secondary)}textarea[data-v-317cb3e2]{width:100%;height:180px;resize:vertical;padding:12px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);font:13px/1.5 monospace}textarea[data-v-317cb3e2]:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.clipboard-actions[data-v-317cb3e2]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}button[type=button][data-v-317cb3e2]{color:var(--text-primary);background:var(--bg-tertiary)}button[data-v-317cb3e2]:disabled{opacity:.5;cursor:default}.file-panel[data-v-771bf310]{display:flex;flex-direction:column;min-height:0;flex:1}.file-toolbar[data-v-771bf310]{display:flex;align-items:center;gap:4px;padding:10px 12px 4px}.project-name[data-v-771bf310]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600}.file-toolbar button[data-v-771bf310],.panel-hint button[data-v-771bf310]{border:none;background:transparent;color:var(--text-secondary);padding:3px 5px;cursor:pointer;font-size:17px}.file-toolbar button[data-v-771bf310]:hover{background:var(--bg-tertiary);border-radius:4px}button[data-v-771bf310]:disabled{opacity:.4;cursor:default}.root-path[data-v-771bf310]{color:var(--text-secondary);font:11px/1.6 monospace;overflow-wrap:anywhere;padding:0 12px 10px;border-bottom:1px solid var(--border-color)}.file-tree[data-v-771bf310]{overflow:auto;padding:6px;flex:1;min-height:0}.panel-hint[data-v-771bf310]{padding:12px;color:var(--text-secondary);font-size:12px;list-style:none;overflow-wrap:anywhere}.error[data-v-771bf310]{color:var(--danger)}.git-warning[data-v-771bf310]{color:#e5b45c}.file-menu[data-v-771bf310]{position:fixed;z-index:110;width:min(230px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.file-menu button[data-v-771bf310]{display:flex;justify-content:space-between;width:100%;text-align:left;padding:8px 10px;background:none;color:var(--text-primary);border:none;border-radius:4px;cursor:pointer}.file-menu button[data-v-771bf310]:hover:not(:disabled),.file-menu button[data-v-771bf310]:focus-visible{background:var(--bg-tertiary)}.file-menu span[data-v-771bf310]{color:var(--text-secondary)}.file-menu .danger[data-v-771bf310]{color:var(--danger)}.sidebar[data-v-b8faf56e]{width:var(--sidebar-width);border-right:1px solid var(--border-color);background:var(--bg-secondary);display:flex;flex-direction:column;flex-shrink:0;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;height:100%;z-index:20}.sidebar.collapsed[data-v-b8faf56e]{width:72px}.sidebar-tabs[data-v-b8faf56e]{display:flex;flex-shrink:0;border-bottom:1px solid var(--border-color)}.sidebar-tabs button[data-v-b8faf56e]{flex:1;padding:12px 4px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:12px}.sidebar-tabs button[aria-selected=true][data-v-b8faf56e]{border-bottom-color:var(--accent-primary);color:var(--text-primary);background:var(--bg-primary)}.sessions-panel[data-v-b8faf56e],.files-panel[data-v-b8faf56e]{display:flex;flex-direction:column;min-height:0;flex:1}.sidebar-header[data-v-b8faf56e]{padding:16px;border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;gap:12px}.sidebar-title[data-v-b8faf56e]{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);font-weight:600}.new-session-btn[data-v-b8faf56e]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:var(--accent-primary);color:#fff;border:none;border-radius:var(--radius-md);padding:10px;cursor:pointer;font-weight:500;transition:all .2s}.new-session-btn[data-v-b8faf56e]:hover{background:var(--accent-hover)}.sidebar.collapsed .new-session-btn[data-v-b8faf56e]{padding:10px 0}.session-list[data-v-b8faf56e]{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:4px}.empty-hint[data-v-b8faf56e]{text-align:center;padding:40px 10px;color:var(--text-tertiary)}.empty-hint p[data-v-b8faf56e]{font-size:14px;margin-bottom:4px}.empty-hint .sub-hint[data-v-b8faf56e]{font-size:12px;opacity:.7}@media(max-width:768px){.sidebar[data-v-b8faf56e]{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);transform:translate(0);box-shadow:var(--shadow-md);z-index:50}.sidebar.collapsed[data-v-b8faf56e]{transform:translate(-100%);width:var(--sidebar-width)}}.brand-mark[data-v-f54af403]{display:block;flex-shrink:0;object-fit:contain}.terminal-area[data-v-95819edf]{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#000;position:relative}.terminal-frame[data-v-95819edf]{flex:1;width:100%;min-height:0;border:none;background:#000}.terminal-tools[data-v-95819edf]{display:flex;align-items:center;flex-shrink:0;gap:8px;padding:6px 12px;background:var(--bg-primary);border-bottom:1px solid var(--border-color);flex-wrap:wrap}.upload-progress[data-v-95819edf]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}.upload-progress progress[data-v-95819edf]{width:64px;height:4px;accent-color:var(--accent-primary)}.clipboard-btn[data-v-95819edf]{padding:4px 10px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer}.clipboard-btn[data-v-95819edf]:hover:not(:disabled){background:var(--bg-tertiary)}.clipboard-btn[data-v-95819edf]:disabled,.clipboard-menu button[data-v-95819edf]:disabled{opacity:.45;cursor:default}.selection-hint[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu[data-v-95819edf]{position:fixed;z-index:100;width:min(280px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.clipboard-menu button[data-v-95819edf]{display:flex;justify-content:space-between;width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.clipboard-menu button[data-v-95819edf]:hover:not(:disabled),.clipboard-menu button[data-v-95819edf]:focus-visible{background:var(--bg-tertiary)}.clipboard-menu span[data-v-95819edf],.clipboard-menu p[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu p[data-v-95819edf]{padding:8px 10px 4px;border-top:1px solid var(--border-color)}@media(max-width:600px){.selection-hint[data-v-95819edf]{display:none}}.welcome__container[data-v-95819edf]{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);background-image:radial-gradient(circle at center,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.welcome__content[data-v-95819edf]{text-align:center;max-width:400px;padding:40px}.welcome-brand[data-v-95819edf]{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px}.logo-text[data-v-95819edf]{font-size:32px;font-weight:700;color:var(--text-primary);letter-spacing:-1px}.welcome__text[data-v-95819edf]{color:var(--text-secondary);font-size:16px;margin-bottom:24px}.highlight[data-v-95819edf]{color:var(--text-primary);font-weight:600}.sub-text[data-v-95819edf]{color:var(--text-tertiary);font-size:14px}.modal-overlay[data-v-f9ae44fb]{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn-f9ae44fb .2s ease}.modal-content[data-v-f9ae44fb]{width:100%;max-width:400px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:16px;overflow:hidden;animation:slideUp-f9ae44fb .3s cubic-bezier(.16,1,.3,1)}.modal-header[data-v-f9ae44fb]{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-f9ae44fb]{font-size:16px;font-weight:600;color:var(--text-primary)}.close-btn[data-v-f9ae44fb]{background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:18px;padding:4px;border-radius:4px}.close-btn[data-v-f9ae44fb]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body[data-v-f9ae44fb]{padding:20px;display:flex;flex-direction:column;gap:16px}.form-group[data-v-f9ae44fb]{display:flex;flex-direction:column;gap:8px}.label-text[data-v-f9ae44fb]{font-size:13px;font-weight:500;color:var(--text-secondary)}select[data-v-f9ae44fb],input[data-v-f9ae44fb]{width:100%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:10px;border-radius:var(--radius-md);outline:none;font-size:14px;appearance:none}select[data-v-f9ae44fb]:focus,input[data-v-f9ae44fb]:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-dim)}.modal-footer[data-v-f9ae44fb]{padding:16px 20px;background:var(--bg-primary);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:12px}@keyframes fadeIn-f9ae44fb{0%{opacity:0}to{opacity:1}}@keyframes slideUp-f9ae44fb{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.login-screen[data-v-86b6b672]{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-card[data-v-86b6b672]{width:min(360px,calc(100vw - 48px));padding:32px;display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.login-logo[data-v-86b6b672]{display:flex;align-items:center;justify-content:center;width:72px;height:72px}h1[data-v-86b6b672]{font-size:22px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.login-hint[data-v-86b6b672]{margin:-4px 0 8px;font-size:13px;color:var(--text-secondary)}input[data-v-86b6b672]{width:100%;padding:10px 12px;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);outline:none}input[data-v-86b6b672]:focus{border-color:var(--accent-primary, #3b82f6)}.login-error[data-v-86b6b672]{width:100%;margin:0;font-size:13px;color:var(--danger)}.login-btn[data-v-86b6b672]{width:100%;margin-top:4px;padding:10px 12px;font-size:14px;font-weight:500;color:#fff;background:var(--accent-primary, #3b82f6);border:none;border-radius:var(--radius-md);cursor:pointer}.login-btn[data-v-86b6b672]:disabled{opacity:.5;cursor:default}.login-btn[data-v-86b6b672]:not(:disabled):hover{filter:brightness(1.1)}.toast-container[data-v-6bea03ca]{position:fixed;top:60px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 80px);overflow:auto}.toast[data-v-6bea03ca]{padding:10px 16px;border-radius:8px;font-size:13px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);min-width:200px;background:var(--bg-secondary);display:flex;align-items:flex-start;gap:12px}.toast-message[data-v-6bea03ca]{white-space:pre-wrap;overflow-wrap:anywhere;max-height:35vh;overflow:auto;flex:1}.toast-actions[data-v-6bea03ca]{display:flex;gap:8px;flex-shrink:0}.toast-actions button[data-v-6bea03ca]{border:none;background:transparent;color:inherit;cursor:pointer;font:inherit}.toast.info[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--text-primary)}.toast.error[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--danger)}.toast.success[data-v-6bea03ca]{background:#4ade8026;color:#4ade80}.toast-enter-active[data-v-6bea03ca]{animation:slideIn-6bea03ca .3s ease}.toast-leave-active[data-v-6bea03ca]{animation:slideOut-6bea03ca .3s ease}@keyframes slideIn-6bea03ca{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut-6bea03ca{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.app-layout[data-v-cfab805f]{height:100vh;display:flex;flex-direction:column}.toolbar[data-v-cfab805f]{height:var(--toolbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border-color);flex-shrink:0;z-index:30;background:var(--bg-primary)}.toolbar-left[data-v-cfab805f]{display:flex;align-items:center;gap:12px}.toggle-btn[data-v-cfab805f]{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.toggle-btn[data-v-cfab805f]:hover{color:var(--text-primary);background:var(--bg-tertiary)}.logo-wrapper[data-v-cfab805f]{display:flex;align-items:center;justify-content:center;flex-shrink:0}.toolbar-title[data-v-cfab805f]{font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.main-area[data-v-cfab805f]{flex:1;display:flex;overflow:hidden;position:relative}.sidebar-overlay[data-v-cfab805f]{display:none;position:absolute;inset:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:15;opacity:0;transition:opacity .3s ease;pointer-events:none}@media(max-width:768px){.sidebar-overlay[data-v-cfab805f]{display:block}.sidebar-overlay.show[data-v-cfab805f]{opacity:1;pointer-events:auto}}
|
|
1
|
+
:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-card: #1e293b;--bg-card-hover: #334155;--border-color: #334155;--border-color-hover: #475569;--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-tertiary: #64748b;--accent-primary: #3b82f6;--accent-hover: #2563eb;--accent-dim: rgba(59, 130, 246, .15);--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--sidebar-width: 260px;--sidebar-collapsed-width: 0px;--toolbar-height: 56px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;background:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.glass{background:#1e293bb3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all .2s;border:1px solid transparent;outline:none}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-hover)}input{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:8px 12px;border-radius:var(--radius-md);outline:none;transition:border-color .2s}input:focus{border-color:var(--accent-primary)}.session-card[data-v-0e38e5ff]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);cursor:pointer;transition:all .2s;border:1px solid transparent;color:var(--text-secondary)}.session-card[data-v-0e38e5ff]:hover{background:var(--bg-card-hover);color:var(--text-primary)}.session-card.active[data-v-0e38e5ff]{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-color)}.status-indicator[data-v-0e38e5ff]{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary);flex-shrink:0}.status-indicator.running[data-v-0e38e5ff]{background:var(--success);box-shadow:0 0 8px #10b98166}.status-indicator.running.output-active[data-v-0e38e5ff]{background:var(--warning);box-shadow:0 0 8px #f59e0b66}.card-content[data-v-0e38e5ff]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.card-top[data-v-0e38e5ff]{display:flex;align-items:center;gap:4px}.session-name[data-v-0e38e5ff]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.alias-text[data-v-0e38e5ff]{overflow:hidden;text-overflow:ellipsis}.real-name[data-v-0e38e5ff]{flex-shrink:1;max-width:45%;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:400;color:var(--text-tertiary)}.alias-input[data-v-0e38e5ff]{flex:1;min-width:0;padding:2px 6px;font-size:13px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;outline:none}.alias-input[data-v-0e38e5ff]:focus{border-color:var(--accent-primary, #3b82f6)}.close-btn[data-v-0e38e5ff]{display:none;align-items:center;justify-content:center;background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:2px;border-radius:4px;flex-shrink:0}.session-card:hover .close-btn[data-v-0e38e5ff]{display:flex}.close-btn[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--danger)}.session-info[data-v-0e38e5ff]{display:flex;align-items:baseline;gap:8px;font-size:11px;color:var(--text-tertiary)}.pane-title[data-v-0e38e5ff]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirm-bar[data-v-0e38e5ff]{display:flex;align-items:center;gap:6px;font-size:12px}.confirm-text[data-v-0e38e5ff]{color:var(--danger);font-weight:500}.confirm-yes[data-v-0e38e5ff],.confirm-no[data-v-0e38e5ff]{background:none;border:1px solid var(--border-color);border-radius:4px;padding:1px 8px;font-size:11px;cursor:pointer;color:var(--text-secondary)}.confirm-yes[data-v-0e38e5ff]:hover{background:var(--danger);border-color:var(--danger);color:#fff}.confirm-no[data-v-0e38e5ff]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.session-card.collapsed[data-v-0e38e5ff]{justify-content:center;padding:12px}.session-card.collapsed .status-indicator[data-v-0e38e5ff]{width:10px;height:10px}li[data-v-5c068d88]{list-style:none}.tree-row[data-v-5c068d88]{display:flex;align-items:center;gap:5px;min-height:31px;padding:2px 6px;cursor:pointer;border-radius:3px;outline-offset:-2px}.tree-row[data-v-5c068d88]:hover,.tree-row[data-v-5c068d88]:focus-visible{background:var(--bg-tertiary)}.chevron[data-v-5c068d88]{flex:0 0 10px;color:var(--text-secondary)}.file-icon[data-v-5c068d88]{color:var(--text-secondary);font-size:18px;width:15px}.filename[data-v-5c068d88]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px}.dotfile[data-v-5c068d88]{opacity:.55}.deleted[data-v-5c068d88]{text-decoration:line-through;opacity:.65}.row-end[data-v-5c068d88]{position:relative;flex:0 0 20px;height:24px}.git-badge[data-v-5c068d88],.git-dot[data-v-5c068d88]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.git-badge[data-v-5c068d88]{font:600 11px/1.5 ui-monospace,monospace}.git-M[data-v-5c068d88],.git-dot[data-v-5c068d88]{color:#e5b45c}.git-A[data-v-5c068d88],.git-U[data-v-5c068d88]{color:#71c993}.git-D[data-v-5c068d88],.git-C[data-v-5c068d88]{color:#f08080}.git-R[data-v-5c068d88]{color:#79b8ff}.git-dot[data-v-5c068d88]{font-size:7px}.more[data-v-5c068d88]{position:absolute;inset:0;width:100%;background:var(--bg-tertiary);color:var(--text-secondary);border:none;border-radius:3px;cursor:pointer;padding:0;font-size:18px;opacity:0;pointer-events:none}.tree-row:hover .more[data-v-5c068d88],.tree-row:focus-within .more[data-v-5c068d88]{opacity:1;pointer-events:auto}.tree-row:hover .has-menu .git-badge[data-v-5c068d88],.tree-row:hover .has-menu .git-dot[data-v-5c068d88],.tree-row:focus-within .has-menu .git-badge[data-v-5c068d88],.tree-row:focus-within .has-menu .git-dot[data-v-5c068d88]{opacity:0}.tree-children[data-v-5c068d88]{margin-left:14px;padding-left:5px;border-left:1px solid var(--border-color)}.tree-status[data-v-5c068d88]{padding:5px 10px;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere}.tree-status button[data-v-5c068d88]{background:none;color:var(--text-primary);border:none;cursor:pointer;text-decoration:underline}.error[data-v-5c068d88]{color:var(--danger)}@media(hover:none){.more[data-v-5c068d88]{pointer-events:auto}.row-end:not(.has-status) .more[data-v-5c068d88]{opacity:1;background:transparent}}.file-dialog[data-v-5ceee09a]{margin:auto;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;padding:24px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-lg)}.file-dialog[data-v-5ceee09a]::backdrop{background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}p[data-v-5ceee09a]{margin:12px 0;color:var(--text-secondary)}.operation-path[data-v-5ceee09a]{overflow-wrap:anywhere;font:12px/1.6 monospace}label[data-v-5ceee09a]{display:flex;flex-direction:column;gap:8px}.dialog-actions[data-v-5ceee09a]{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn[data-v-5ceee09a]{background:var(--bg-tertiary);color:var(--text-primary)}.btn-primary[data-v-5ceee09a]{background:var(--accent-primary)}.delete-btn[data-v-5ceee09a]{background:var(--danger);color:#fff}.error[data-v-5ceee09a]{color:var(--danger)}button[data-v-5ceee09a]:disabled{opacity:.5;cursor:default}.clipboard-overlay[data-v-317cb3e2]{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.clipboard-dialog[data-v-317cb3e2]{width:min(520px,calc(100vw - 32px));padding:20px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}h3[data-v-317cb3e2]{font-size:16px}p[data-v-317cb3e2]{margin:12px 0;color:var(--text-secondary)}textarea[data-v-317cb3e2]{width:100%;height:180px;resize:vertical;padding:12px;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);font:13px/1.5 monospace}textarea[data-v-317cb3e2]:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.clipboard-actions[data-v-317cb3e2]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}button[type=button][data-v-317cb3e2]{color:var(--text-primary);background:var(--bg-tertiary)}button[data-v-317cb3e2]:disabled{opacity:.5;cursor:default}.file-panel[data-v-771bf310]{display:flex;flex-direction:column;min-height:0;flex:1}.file-toolbar[data-v-771bf310]{display:flex;align-items:center;gap:4px;padding:10px 12px 4px}.project-name[data-v-771bf310]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600}.file-toolbar button[data-v-771bf310],.panel-hint button[data-v-771bf310]{border:none;background:transparent;color:var(--text-secondary);padding:3px 5px;cursor:pointer;font-size:17px}.file-toolbar button[data-v-771bf310]:hover{background:var(--bg-tertiary);border-radius:4px}button[data-v-771bf310]:disabled{opacity:.4;cursor:default}.root-path[data-v-771bf310]{color:var(--text-secondary);font:11px/1.6 monospace;overflow-wrap:anywhere;padding:0 12px 10px;border-bottom:1px solid var(--border-color)}.file-tree[data-v-771bf310]{overflow:auto;padding:6px;flex:1;min-height:0}.panel-hint[data-v-771bf310]{padding:12px;color:var(--text-secondary);font-size:12px;list-style:none;overflow-wrap:anywhere}.error[data-v-771bf310]{color:var(--danger)}.git-warning[data-v-771bf310]{color:#e5b45c}.file-menu[data-v-771bf310]{position:fixed;z-index:110;width:min(230px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.file-menu button[data-v-771bf310]{display:flex;justify-content:space-between;width:100%;text-align:left;padding:8px 10px;background:none;color:var(--text-primary);border:none;border-radius:4px;cursor:pointer}.file-menu button[data-v-771bf310]:hover:not(:disabled),.file-menu button[data-v-771bf310]:focus-visible{background:var(--bg-tertiary)}.file-menu span[data-v-771bf310]{color:var(--text-secondary)}.file-menu .danger[data-v-771bf310]{color:var(--danger)}.sidebar[data-v-b8faf56e]{width:var(--sidebar-width);border-right:1px solid var(--border-color);background:var(--bg-secondary);display:flex;flex-direction:column;flex-shrink:0;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;height:100%;z-index:20}.sidebar.collapsed[data-v-b8faf56e]{width:72px}.sidebar-tabs[data-v-b8faf56e]{display:flex;flex-shrink:0;border-bottom:1px solid var(--border-color)}.sidebar-tabs button[data-v-b8faf56e]{flex:1;padding:12px 4px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:12px}.sidebar-tabs button[aria-selected=true][data-v-b8faf56e]{border-bottom-color:var(--accent-primary);color:var(--text-primary);background:var(--bg-primary)}.sessions-panel[data-v-b8faf56e],.files-panel[data-v-b8faf56e]{display:flex;flex-direction:column;min-height:0;flex:1}.sidebar-header[data-v-b8faf56e]{padding:16px;border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;gap:12px}.sidebar-title[data-v-b8faf56e]{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);font-weight:600}.new-session-btn[data-v-b8faf56e]{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:var(--accent-primary);color:#fff;border:none;border-radius:var(--radius-md);padding:10px;cursor:pointer;font-weight:500;transition:all .2s}.new-session-btn[data-v-b8faf56e]:hover{background:var(--accent-hover)}.sidebar.collapsed .new-session-btn[data-v-b8faf56e]{padding:10px 0}.session-list[data-v-b8faf56e]{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:4px}.empty-hint[data-v-b8faf56e]{text-align:center;padding:40px 10px;color:var(--text-tertiary)}.empty-hint p[data-v-b8faf56e]{font-size:14px;margin-bottom:4px}.empty-hint .sub-hint[data-v-b8faf56e]{font-size:12px;opacity:.7}@media(max-width:768px){.sidebar[data-v-b8faf56e]{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);transform:translate(0);box-shadow:var(--shadow-md);z-index:50}.sidebar.collapsed[data-v-b8faf56e]{transform:translate(-100%);width:var(--sidebar-width)}}.brand-mark[data-v-f54af403]{display:block;flex-shrink:0;object-fit:contain}.terminal-area[data-v-95819edf]{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#000;position:relative}.terminal-frame[data-v-95819edf]{flex:1;width:100%;min-height:0;border:none;background:#000}.terminal-tools[data-v-95819edf]{display:flex;align-items:center;flex-shrink:0;gap:8px;padding:6px 12px;background:var(--bg-primary);border-bottom:1px solid var(--border-color);flex-wrap:wrap}.upload-progress[data-v-95819edf]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}.upload-progress progress[data-v-95819edf]{width:64px;height:4px;accent-color:var(--accent-primary)}.clipboard-btn[data-v-95819edf]{padding:4px 10px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer}.clipboard-btn[data-v-95819edf]:hover:not(:disabled){background:var(--bg-tertiary)}.clipboard-btn[data-v-95819edf]:disabled,.clipboard-menu button[data-v-95819edf]:disabled{opacity:.45;cursor:default}.selection-hint[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu[data-v-95819edf]{position:fixed;z-index:100;width:min(280px,calc(100vw - 16px));padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.clipboard-menu button[data-v-95819edf]{display:flex;justify-content:space-between;width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.clipboard-menu button[data-v-95819edf]:hover:not(:disabled),.clipboard-menu button[data-v-95819edf]:focus-visible{background:var(--bg-tertiary)}.clipboard-menu span[data-v-95819edf],.clipboard-menu p[data-v-95819edf]{color:var(--text-secondary);font-size:12px}.clipboard-menu p[data-v-95819edf]{padding:8px 10px 4px;border-top:1px solid var(--border-color)}@media(max-width:600px){.selection-hint[data-v-95819edf]{display:none}}.welcome__container[data-v-95819edf]{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);background-image:radial-gradient(circle at center,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.welcome__content[data-v-95819edf]{text-align:center;max-width:400px;padding:40px}.welcome-brand[data-v-95819edf]{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px}.logo-text[data-v-95819edf]{font-size:32px;font-weight:700;color:var(--text-primary);letter-spacing:-1px}.welcome__text[data-v-95819edf]{color:var(--text-secondary);font-size:16px;margin-bottom:24px}.highlight[data-v-95819edf]{color:var(--text-primary);font-weight:600}.sub-text[data-v-95819edf]{color:var(--text-tertiary);font-size:14px}.modal-overlay[data-v-ef0ce732]{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn-ef0ce732 .2s ease}.modal-content[data-v-ef0ce732]{width:100%;max-width:400px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);margin:16px;overflow:hidden;animation:slideUp-ef0ce732 .3s cubic-bezier(.16,1,.3,1)}.modal-header[data-v-ef0ce732]{padding:16px 20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.modal-header h3[data-v-ef0ce732]{font-size:16px;font-weight:600;color:var(--text-primary)}.close-btn[data-v-ef0ce732]{background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:18px;padding:4px;border-radius:4px}.close-btn[data-v-ef0ce732]:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body[data-v-ef0ce732]{padding:20px;display:flex;flex-direction:column;gap:16px}.form-group[data-v-ef0ce732]{display:flex;flex-direction:column;gap:8px}.label-text[data-v-ef0ce732]{font-size:13px;font-weight:500;color:var(--text-secondary)}select[data-v-ef0ce732]{width:100%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-primary);padding:10px;border-radius:var(--radius-md);outline:none;font-size:14px;appearance:none}select[data-v-ef0ce732]:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-dim)}.modal-footer[data-v-ef0ce732]{padding:16px 20px;background:var(--bg-primary);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:12px}@keyframes fadeIn-ef0ce732{0%{opacity:0}to{opacity:1}}@keyframes slideUp-ef0ce732{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.login-screen[data-v-86b6b672]{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-card[data-v-86b6b672]{width:min(360px,calc(100vw - 48px));padding:32px;display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.login-logo[data-v-86b6b672]{display:flex;align-items:center;justify-content:center;width:72px;height:72px}h1[data-v-86b6b672]{font-size:22px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.login-hint[data-v-86b6b672]{margin:-4px 0 8px;font-size:13px;color:var(--text-secondary)}input[data-v-86b6b672]{width:100%;padding:10px 12px;font-size:14px;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);outline:none}input[data-v-86b6b672]:focus{border-color:var(--accent-primary, #3b82f6)}.login-error[data-v-86b6b672]{width:100%;margin:0;font-size:13px;color:var(--danger)}.login-btn[data-v-86b6b672]{width:100%;margin-top:4px;padding:10px 12px;font-size:14px;font-weight:500;color:#fff;background:var(--accent-primary, #3b82f6);border:none;border-radius:var(--radius-md);cursor:pointer}.login-btn[data-v-86b6b672]:disabled{opacity:.5;cursor:default}.login-btn[data-v-86b6b672]:not(:disabled):hover{filter:brightness(1.1)}.toast-container[data-v-6bea03ca]{position:fixed;top:60px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 80px);overflow:auto}.toast[data-v-6bea03ca]{padding:10px 16px;border-radius:8px;font-size:13px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);min-width:200px;background:var(--bg-secondary);display:flex;align-items:flex-start;gap:12px}.toast-message[data-v-6bea03ca]{white-space:pre-wrap;overflow-wrap:anywhere;max-height:35vh;overflow:auto;flex:1}.toast-actions[data-v-6bea03ca]{display:flex;gap:8px;flex-shrink:0}.toast-actions button[data-v-6bea03ca]{border:none;background:transparent;color:inherit;cursor:pointer;font:inherit}.toast.info[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--text-primary)}.toast.error[data-v-6bea03ca]{background:var(--bg-secondary);color:var(--danger)}.toast.success[data-v-6bea03ca]{background:#4ade8026;color:#4ade80}.toast-enter-active[data-v-6bea03ca]{animation:slideIn-6bea03ca .3s ease}.toast-leave-active[data-v-6bea03ca]{animation:slideOut-6bea03ca .3s ease}@keyframes slideIn-6bea03ca{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut-6bea03ca{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.app-layout[data-v-cfab805f]{height:100vh;display:flex;flex-direction:column}.toolbar[data-v-cfab805f]{height:var(--toolbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border-color);flex-shrink:0;z-index:30;background:var(--bg-primary)}.toolbar-left[data-v-cfab805f]{display:flex;align-items:center;gap:12px}.toggle-btn[data-v-cfab805f]{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.toggle-btn[data-v-cfab805f]:hover{color:var(--text-primary);background:var(--bg-tertiary)}.logo-wrapper[data-v-cfab805f]{display:flex;align-items:center;justify-content:center;flex-shrink:0}.toolbar-title[data-v-cfab805f]{font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:-.5px}.main-area[data-v-cfab805f]{flex:1;display:flex;overflow:hidden;position:relative}.sidebar-overlay[data-v-cfab805f]{display:none;position:absolute;inset:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:15;opacity:0;transition:opacity .3s ease;pointer-events:none}@media(max-width:768px){.sidebar-overlay[data-v-cfab805f]{display:block}.sidebar-overlay.show[data-v-cfab805f]{opacity:1;pointer-events:auto}}
|
package/server/public/index.html
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
|
|
11
11
|
<link rel="manifest" href="/site.webmanifest" />
|
|
12
12
|
<title>ACLI Hub</title>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-DlR3k_jH.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-xnjgJSWe.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="app"></div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const os = require('os');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
function ensureUserConfig({ env = process.env, home = os.homedir(), warn = console.warn } = {}) {
|
|
6
|
+
const directory = path.join(env.XDG_CONFIG_HOME || path.join(home, '.config'), 'acli-hub');
|
|
7
|
+
const example = path.join(directory, '.env.example');
|
|
8
|
+
try {
|
|
9
|
+
fs.mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
10
|
+
try {
|
|
11
|
+
fs.copyFileSync(path.join(__dirname, '..', '..', '.env.example'), example, fs.constants.COPYFILE_EXCL);
|
|
12
|
+
} catch (err) {
|
|
13
|
+
// Preserve existing templates, including symlinks, without following them.
|
|
14
|
+
if (err.code !== 'EEXIST') throw err;
|
|
15
|
+
}
|
|
16
|
+
} catch (err) {
|
|
17
|
+
// A missing template must not prevent environment-only/read-only deployments.
|
|
18
|
+
warn(`WARNING: Could not create config template at ${example}: ${err.message}`);
|
|
19
|
+
}
|
|
20
|
+
return directory;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = { ensureUserConfig };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const test = require('node:test');
|
|
2
|
+
const assert = require('node:assert/strict');
|
|
3
|
+
const fs = require('node:fs');
|
|
4
|
+
const os = require('node:os');
|
|
5
|
+
const path = require('node:path');
|
|
6
|
+
const { ensureUserConfig } = require('./user-config');
|
|
7
|
+
|
|
8
|
+
function fixture(t) {
|
|
9
|
+
const directory = fs.mkdtempSync(path.join(os.tmpdir(), 'hub-user-config-'));
|
|
10
|
+
t.after(() => fs.rmSync(directory, { recursive: true, force: true }));
|
|
11
|
+
const warnings = [];
|
|
12
|
+
return { directory, options: { env: {}, home: directory, warn: message => warnings.push(message) }, warnings };
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const template = () => fs.readFileSync(path.join(__dirname, '..', '..', '.env.example'), 'utf8');
|
|
16
|
+
|
|
17
|
+
test('first startup creates the user config directory and packaged example, not an active .env', t => {
|
|
18
|
+
const { directory, options, warnings } = fixture(t);
|
|
19
|
+
const config = ensureUserConfig(options);
|
|
20
|
+
assert.equal(config, path.join(directory, '.config', 'acli-hub'));
|
|
21
|
+
assert.equal(fs.readFileSync(path.join(config, '.env.example'), 'utf8'), template());
|
|
22
|
+
assert.equal(fs.existsSync(path.join(config, '.env')), false);
|
|
23
|
+
if (process.platform !== 'win32') assert.equal(fs.statSync(config).mode & 0o777, 0o700);
|
|
24
|
+
assert.deepEqual(warnings, []);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('XDG_CONFIG_HOME redirects initialization without creating the default config directory', t => {
|
|
28
|
+
const { directory, options, warnings } = fixture(t);
|
|
29
|
+
options.env.XDG_CONFIG_HOME = path.join(directory, 'custom config', '配置');
|
|
30
|
+
const config = ensureUserConfig(options);
|
|
31
|
+
assert.equal(config, path.join(options.env.XDG_CONFIG_HOME, 'acli-hub'));
|
|
32
|
+
assert.equal(fs.readFileSync(path.join(config, '.env.example'), 'utf8'), template());
|
|
33
|
+
assert.equal(fs.existsSync(path.join(directory, '.config')), false);
|
|
34
|
+
assert.deepEqual(warnings, []);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('repeated startups preserve an existing template and active configuration', t => {
|
|
38
|
+
const { options, warnings } = fixture(t);
|
|
39
|
+
const config = ensureUserConfig(options);
|
|
40
|
+
const example = path.join(config, '.env.example');
|
|
41
|
+
const active = path.join(config, '.env');
|
|
42
|
+
fs.writeFileSync(example, '# user-maintained example\n');
|
|
43
|
+
fs.writeFileSync(active, 'ACLI_HUB_PORT=4321\n');
|
|
44
|
+
const before = fs.statSync(example);
|
|
45
|
+
ensureUserConfig(options);
|
|
46
|
+
ensureUserConfig(options);
|
|
47
|
+
assert.equal(fs.readFileSync(example, 'utf8'), '# user-maintained example\n');
|
|
48
|
+
assert.equal(fs.readFileSync(active, 'utf8'), 'ACLI_HUB_PORT=4321\n');
|
|
49
|
+
assert.equal(fs.statSync(example).mtimeMs, before.mtimeMs);
|
|
50
|
+
assert.deepEqual(warnings, []);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('an existing directory receives a missing example without modifying its .env', t => {
|
|
54
|
+
const { directory, options, warnings } = fixture(t);
|
|
55
|
+
const config = path.join(directory, '.config', 'acli-hub');
|
|
56
|
+
fs.mkdirSync(config, { recursive: true });
|
|
57
|
+
fs.writeFileSync(path.join(config, '.env'), 'ACLI_HUB_NAME=东京开发机\n');
|
|
58
|
+
ensureUserConfig(options);
|
|
59
|
+
assert.equal(fs.readFileSync(path.join(config, '.env.example'), 'utf8'), template());
|
|
60
|
+
assert.equal(fs.readFileSync(path.join(config, '.env'), 'utf8'), 'ACLI_HUB_NAME=东京开发机\n');
|
|
61
|
+
assert.deepEqual(warnings, []);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('an existing example symlink is preserved and its target is never overwritten', t => {
|
|
65
|
+
const { directory, options, warnings } = fixture(t);
|
|
66
|
+
const config = path.join(directory, '.config', 'acli-hub');
|
|
67
|
+
fs.mkdirSync(config, { recursive: true });
|
|
68
|
+
const target = path.join(directory, 'external-example');
|
|
69
|
+
fs.writeFileSync(target, 'keep this file');
|
|
70
|
+
const example = path.join(config, '.env.example');
|
|
71
|
+
fs.symlinkSync(target, example);
|
|
72
|
+
ensureUserConfig(options);
|
|
73
|
+
assert.equal(fs.readlinkSync(example), target);
|
|
74
|
+
assert.equal(fs.readFileSync(target, 'utf8'), 'keep this file');
|
|
75
|
+
assert.deepEqual(warnings, []);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('unwritable config locations warn instead of blocking startup', t => {
|
|
79
|
+
const { directory, options, warnings } = fixture(t);
|
|
80
|
+
const blocked = path.join(directory, 'not-a-directory');
|
|
81
|
+
fs.writeFileSync(blocked, 'keep this file');
|
|
82
|
+
options.env.XDG_CONFIG_HOME = blocked;
|
|
83
|
+
assert.equal(ensureUserConfig(options), path.join(blocked, 'acli-hub'));
|
|
84
|
+
assert.equal(fs.readFileSync(blocked, 'utf8'), 'keep this file');
|
|
85
|
+
assert.equal(warnings.length, 1);
|
|
86
|
+
assert.match(warnings[0], /WARNING: Could not create config template/);
|
|
87
|
+
});
|