@surenkid/acli-hub 1.0.8 → 1.0.10
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 +6 -2
- package/package.json +1 -1
- package/server/index.js +3 -2
- package/server/public/assets/{PreviewDialog-CyWZ9PNI.js → PreviewDialog-Ci4fyUxf.js} +1 -1
- package/server/public/assets/index-4pGJ-wDO.js +17 -0
- package/server/public/assets/{index-DNFZqhmU.css → index-yuyx9-SN.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/server/public/assets/index-CBc7nL_R.js +0 -17
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
|
@@ -24,7 +24,7 @@ ACLI Hub(AI CLI Hub)是一个面向 AI CLI 工具的 Web 工作台。它基
|
|
|
24
24
|
- **📡 CLI 实时状态** — 侧栏直接显示每个 CLI 当前正在执行的任务(读取终端标题,无需轮询界面)
|
|
25
25
|
- **🏷 会话备注** — 给会话设置中文别名,一眼认出哪个窗口在干什么
|
|
26
26
|
- **📁 文件管理器** — 按会话固定项目根:目录树浏览、文件预览、重命名、移动、下载、文件夹压缩 ZIP
|
|
27
|
-
- **📤 多文件上传** —
|
|
27
|
+
- **📤 多文件上传** — 点 Upload、拖入文件或在终端粘贴图片/文件,上传到项目 `temp/`;实时进度、可取消,一键复制落盘路径贴给 agent
|
|
28
28
|
- **👀 全能预览** — 源码语法高亮、Markdown、HTML(沙箱隔离)、图片、音视频、PDF、DOCX、CSV/TSV 表格
|
|
29
29
|
- **🖱 右键复制粘贴 + 触屏滚动** — 桌面与移动一致的终端操作体验
|
|
30
30
|
- **🔐 密码登录** — Cookie 会话 + 限流,配置 HTTPS 反代后可安全暴露到公网
|
|
@@ -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
|
| 变量 | 说明 | 默认值 |
|
|
@@ -104,6 +106,8 @@ npm run build && npm start
|
|
|
104
106
|
|
|
105
107
|
侧栏「文件」面板和终端工具条的 Upload 首次使用时,会将当前 shell 目录固定为该会话的项目根;之后 `cd` 不会改变文件树,点击 📍 可重新固定。文件默认上传到根目录的 `temp/`,可在项目 `.gitignore` 中加入 `temp/`。取消上传会保留已完成的文件;同名上传和 ZIP 会自动加后缀。删除前始终确认,macOS 移到 `~/.Trash/`,其他平台永久删除。
|
|
106
108
|
|
|
109
|
+
也可将本地文件拖入右侧终端区域,或聚焦终端后按 `Ctrl+V`(macOS:`⌘V`)粘贴图片/文件;能否粘贴系统文件管理器中复制的文件,取决于浏览器是否提供实际文件数据。纯文字仍按原方式粘贴,有文件时只上传文件,不同时输入附带文字。上传完成后手动「复制路径」,不会自动向终端输入内容;工具栏/右键菜单的 Paste 仍只粘贴文字。暂不支持文件夹和并行上传批次。
|
|
110
|
+
|
|
107
111
|
预览支持源码高亮、Markdown、HTML、图片、音视频、PDF、DOCX、CSV/TSV。文本预览上限为 2 MiB,DOCX 为 10 MiB;更大文件可下载查看。
|
|
108
112
|
|
|
109
113
|
### 🔐 公网暴露
|
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-4pGJ-wDO.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};
|
|
@@ -0,0 +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-Ci4fyUxf.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 Vs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const fe={},Kt=[],st=()=>{},fr=()=>!1,Xn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ws=e=>e.startsWith("onUpdate:"),xe=Object.assign,qs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ni=Object.prototype.hasOwnProperty,ae=(e,t)=>Ni.call(e,t),z=Array.isArray,Vt=e=>bn(e)==="[object Map]",Jn=e=>bn(e)==="[object Set]",go=e=>bn(e)==="[object Date]",Q=e=>typeof e=="function",ye=e=>typeof e=="string",ot=e=>typeof e=="symbol",de=e=>e!==null&&typeof e=="object",dr=e=>(de(e)||Q(e))&&Q(e.then)&&Q(e.catch),pr=Object.prototype.toString,bn=e=>pr.call(e),ji=e=>bn(e).slice(8,-1),hr=e=>bn(e)==="[object Object]",Zn=e=>ye(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,on=Vs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Hi=/-\w/g,Ke=Qn(e=>e.replace(Hi,t=>t.slice(1).toUpperCase())),Ui=/\B([A-Z])/g,St=Qn(e=>e.replace(Ui,"-$1").toLowerCase()),es=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),ps=Qn(e=>e?`on${es(e)}`:""),xt=(e,t)=>!Object.is(e,t),Rn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},mr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ts=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Bi=e=>{const t=ye(e)?Number(e):NaN;return isNaN(t)?e:t};let vo;const ns=()=>vo||(vo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function wn(e){if(z(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],o=ye(s)?qi(s):wn(s);if(o)for(const r in o)t[r]=o[r]}return t}else if(ye(e)||de(e))return e}const Ki=/;(?![^(]*\))/g,Vi=/:([^]+)/,Wi=/\/\*[^]*?\*\//g;function qi(e){const t={};return e.replace(Wi,"").split(Ki).forEach(n=>{if(n){const s=n.split(Vi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(ye(e))t=e;else if(z(e))for(let n=0;n<e.length;n++){const s=Be(e[n]);s&&(t+=s+" ")}else if(de(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Gi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Yi=Vs(Gi);function gr(e){return!!e||e===""}function zi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=ss(e[s],t[s]);return n}function ss(e,t){if(e===t)return!0;let n=go(e),s=go(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=ot(e),s=ot(t),n||s)return e===t;if(n=z(e),s=z(t),n||s)return n&&s?zi(e,t):!1;if(n=de(e),s=de(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||!ss(e[i],t[i]))return!1}}return String(e)===String(t)}function Xi(e,t){return e.findIndex(n=>ss(n,t))}const vr=e=>!!(e&&e.__v_isRef===!0),te=e=>ye(e)?e:e==null?"":z(e)||de(e)&&(e.toString===pr||!Q(e.toString))?vr(e)?te(e.value):JSON.stringify(e,yr,2):String(e),yr=(e,t)=>vr(t)?yr(e,t.value):Vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[hs(s,r)+" =>"]=o,n),{})}:Jn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:ot(t)?hs(t):de(t)&&!z(t)&&!hr(t)?String(t):t,hs=(e,t="")=>{var n;return ot(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class br{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 wr(e){return new br(e)}function _r(){return Ee}function Ji(e,t=!1){Ee&&Ee.cleanups.push(e)}let he;const ms=new WeakSet;class xr{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||Sr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,yo(this),Er(this);const t=he,n=We;he=this,We=!0;try{return this.fn()}finally{Tr(this),he=t,We=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)zs(t);this.deps=this.depsTail=void 0,yo(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 Cr=0,rn,ln;function Sr(e,t=!1){if(e.flags|=8,t){e.next=ln,ln=e;return}e.next=rn,rn=e}function Gs(){Cr++}function Ys(){if(--Cr>0)return;if(ln){let t=ln;for(ln=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;rn;){let t=rn;for(rn=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 Er(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Tr(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),zs(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&&($r(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function $r(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===hn)||(e.globalVersion=hn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$s(e))))return;e.flags|=2;const t=e.dep,n=he,s=We;he=e,We=!0;try{Er(e);const o=e.fn(e._value);(t.version===0||xt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{he=n,We=s,Tr(e),e.flags&=-3}}function zs(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)zs(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 We=!0;const kr=[];function ut(){kr.push(We),We=!1}function ft(){const e=kr.pop();We=e===void 0?!0:e}function yo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=he;he=void 0;try{t()}finally{he=n}}}let hn=0;class Qi{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 Xs{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(!he||!We||he===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==he)n=this.activeLink=new Qi(he,this),he.deps?(n.prevDep=he.depsTail,he.depsTail.nextDep=n,he.depsTail=n):he.deps=he.depsTail=n,Ar(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=he.depsTail,n.nextDep=void 0,he.depsTail.nextDep=n,he.depsTail=n,he.deps===n&&(he.deps=s)}return n}trigger(t){this.version++,hn++,this.notify(t)}notify(t){Gs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ys()}}}function Ar(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)Ar(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const jn=new WeakMap,Lt=Symbol(""),ks=Symbol(""),mn=Symbol("");function Te(e,t,n){if(We&&he){let s=jn.get(e);s||jn.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new Xs),o.map=s,o.key=n),o.track()}}function lt(e,t,n,s,o,r){const i=jn.get(e);if(!i){hn++;return}const l=a=>{a&&a.trigger()};if(Gs(),t==="clear")i.forEach(l);else{const a=z(e),u=a&&Zn(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,m)=>{(m==="length"||m===mn||!ot(m)&&m>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(mn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(Lt)),Vt(e)&&l(i.get(ks)));break;case"delete":a||(l(i.get(Lt)),Vt(e)&&l(i.get(ks)));break;case"set":Vt(e)&&l(i.get(Lt));break}}Ys()}function el(e,t){const n=jn.get(e);return n&&n.get(t)}function jt(e){const t=le(e);return t===e?t:(Te(t,"iterate",mn),De(e)?t:t.map(Ge))}function os(e){return Te(e=le(e),"iterate",mn),e}function bt(e,t){return dt(e)?Gt(ct(e)?Ge(t):t):Ge(t)}const tl={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,e=>bt(this,e))},concat(...e){return jt(this).concat(...e.map(t=>z(t)?jt(t):t))},entries(){return gs(this,"entries",e=>(e[1]=bt(this,e[1]),e))},every(e,t){return rt(this,"every",e,t,void 0,arguments)},filter(e,t){return rt(this,"filter",e,t,n=>n.map(s=>bt(this,s)),arguments)},find(e,t){return rt(this,"find",e,t,n=>bt(this,n),arguments)},findIndex(e,t){return rt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return rt(this,"findLast",e,t,n=>bt(this,n),arguments)},findLastIndex(e,t){return rt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return rt(this,"forEach",e,t,void 0,arguments)},includes(...e){return vs(this,"includes",e)},indexOf(...e){return vs(this,"indexOf",e)},join(e){return jt(this).join(e)},lastIndexOf(...e){return vs(this,"lastIndexOf",e)},map(e,t){return rt(this,"map",e,t,void 0,arguments)},pop(){return Zt(this,"pop")},push(...e){return Zt(this,"push",e)},reduce(e,...t){return bo(this,"reduce",e,t)},reduceRight(e,...t){return bo(this,"reduceRight",e,t)},shift(){return Zt(this,"shift")},some(e,t){return rt(this,"some",e,t,void 0,arguments)},splice(...e){return Zt(this,"splice",e)},toReversed(){return jt(this).toReversed()},toSorted(e){return jt(this).toSorted(e)},toSpliced(...e){return jt(this).toSpliced(...e)},unshift(...e){return Zt(this,"unshift",e)},values(){return gs(this,"values",e=>bt(this,e))}};function gs(e,t,n){const s=os(e),o=s[t]();return s!==e&&!De(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const nl=Array.prototype;function rt(e,t,n,s,o,r){const i=os(e),l=i!==e&&!De(e),a=i[t];if(a!==nl[t]){const f=a.apply(e,r);return l?Ge(f):f}let u=n;i!==e&&(l?u=function(f,m){return n.call(this,bt(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 bo(e,t,n,s){const o=os(e);let r=n;return o!==e&&(De(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,bt(e,l),a,e)}),o[t](r,...s)}function vs(e,t,n){const s=le(e);Te(s,"iterate",mn);const o=s[t](...n);return(o===-1||o===!1)&&is(n[0])?(n[0]=le(n[0]),s[t](...n)):o}function Zt(e,t,n=[]){ut(),Gs();const s=le(e)[t].apply(e,n);return Ys(),ft(),s}const sl=Vs("__proto__,__v_isRef,__isVue"),Mr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ot));function ol(e){ot(e)||(e=String(e));const t=le(this);return Te(t,"has",e),t.hasOwnProperty(e)}class Pr{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?hl:Lr:r?Rr:Ir).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=z(t);if(!o){let a;if(i&&(a=tl[n]))return a;if(n==="hasOwnProperty")return ol}const l=Reflect.get(t,n,ve(t)?t:s);if((ot(n)?Mr.has(n):sl(n))||(o||Te(t,"get",n),r))return l;if(ve(l)){const a=i&&Zn(n)?l:l.value;return o&&de(a)?Ms(a):a}return de(l)?o?Ms(l):rs(l):l}}class Or extends Pr{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const i=z(t)&&Zn(n);if(!this._isShallow){const u=dt(r);if(!De(s)&&!dt(s)&&(r=le(r),s=le(s)),!i&&ve(r)&&!ve(s))return u||(r.value=s),!0}const l=i?Number(n)<t.length:ae(t,n),a=Reflect.set(t,n,s,ve(t)?t:o);return t===le(o)&&(l?xt(s,r)&<(t,"set",n,s):lt(t,"add",n,s)),a}deleteProperty(t,n){const s=ae(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&s&<(t,"delete",n,void 0),o}has(t,n){const s=Reflect.has(t,n);return(!ot(n)||!Mr.has(n))&&Te(t,"has",n),s}ownKeys(t){return Te(t,"iterate",z(t)?"length":Lt),Reflect.ownKeys(t)}}class rl extends Pr{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const il=new Or,ll=new rl,al=new Or(!0);const As=e=>e,$n=e=>Reflect.getPrototypeOf(e);function cl(e,t,n){return function(...s){const o=this.__v_raw,r=le(o),i=Vt(r),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...s),c=n?As:t?Gt:Ge;return!t&&Te(r,"iterate",a?ks:Lt),xe(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 ul(e,t){const n={get(o){const r=this.__v_raw,i=le(r),l=le(o);e||(xt(o,l)&&Te(i,"get",o),Te(i,"get",l));const{has:a}=$n(i),u=t?As:e?Gt:Ge;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(le(o),"iterate",Lt),o.size},has(o){const r=this.__v_raw,i=le(r),l=le(o);return e||(xt(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=le(l),u=t?As:e?Gt:Ge;return!e&&Te(a,"iterate",Lt),l.forEach((c,f)=>o.call(r,u(c),u(f),i))}};return xe(n,e?{add:kn("add"),set:kn("set"),delete:kn("delete"),clear:kn("clear")}:{add(o){!t&&!De(o)&&!dt(o)&&(o=le(o));const r=le(this);return $n(r).has.call(r,o)||(r.add(o),lt(r,"add",o,o)),this},set(o,r){!t&&!De(r)&&!dt(r)&&(r=le(r));const i=le(this),{has:l,get:a}=$n(i);let u=l.call(i,o);u||(o=le(o),u=l.call(i,o));const c=a.call(i,o);return i.set(o,r),u?xt(r,c)&<(i,"set",o,r):lt(i,"add",o,r),this},delete(o){const r=le(this),{has:i,get:l}=$n(r);let a=i.call(r,o);a||(o=le(o),a=i.call(r,o)),l&&l.call(r,o);const u=r.delete(o);return a&<(r,"delete",o,void 0),u},clear(){const o=le(this),r=o.size!==0,i=o.clear();return r&<(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=cl(o,e,t)}),n}function Js(e,t){const n=ul(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(ae(n,o)&&o in s?n:s,o,r)}const fl={get:Js(!1,!1)},dl={get:Js(!1,!0)},pl={get:Js(!0,!1)};const Ir=new WeakMap,Rr=new WeakMap,Lr=new WeakMap,hl=new WeakMap;function ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function gl(e){return e.__v_skip||!Object.isExtensible(e)?0:ml(ji(e))}function rs(e){return dt(e)?e:Zs(e,!1,il,fl,Ir)}function vl(e){return Zs(e,!1,al,dl,Rr)}function Ms(e){return Zs(e,!0,ll,pl,Lr)}function Zs(e,t,n,s,o){if(!de(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=gl(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 ct(e){return dt(e)?ct(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function De(e){return!!(e&&e.__v_isShallow)}function is(e){return e?!!e.__v_raw:!1}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function Qs(e){return!ae(e,"__v_skip")&&Object.isExtensible(e)&&mr(e,"__v_skip",!0),e}const Ge=e=>de(e)?rs(e):e,Gt=e=>de(e)?Ms(e):e;function ve(e){return e?e.__v_isRef===!0:!1}function K(e){return Dr(e,!1)}function yl(e){return Dr(e,!0)}function Dr(e,t){return ve(e)?e:new bl(e,t)}class bl{constructor(t,n){this.dep=new Xs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:le(t),this._value=n?t:Ge(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||De(t)||dt(t);t=s?t:le(t),xt(t,n)&&(this._rawValue=t,this._value=s?t:Ge(t),this.dep.trigger())}}function ue(e){return ve(e)?e.value:e}const wl={get:(e,t,n)=>t==="__v_raw"?e:ue(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return ve(o)&&!ve(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Fr(e){return ct(e)?e:new Proxy(e,wl)}function _l(e){const t=z(e)?new Array(e.length):{};for(const n in e)t[n]=Cl(e,n);return t}class xl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=le(t);let o=!0,r=t;if(!z(t)||!Zn(String(n)))do o=!is(r)||De(r);while(o&&(r=r.__v_raw));this._shallow=o}get value(){let t=this._object[this._key];return this._shallow&&(t=ue(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ve(this._raw[this._key])){const n=this._object[this._key];if(ve(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return el(this._raw,this._key)}}function Cl(e,t,n){return new xl(e,t,n)}class Sl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Xs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=hn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&he!==this)return Sr(this,!0),!0}get value(){const t=this.dep.track();return $r(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function El(e,t,n=!1){let s,o;return Q(e)?s=e:(s=e.get,o=e.set),new Sl(s,o,n)}const An={},Hn=new WeakMap;let Ot;function Tl(e,t=!1,n=Ot){if(n){let s=Hn.get(n);s||Hn.set(n,s=[]),s.push(e)}}function $l(e,t,n=fe){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:a}=n,u=k=>o?k:De(k)||o===!1||o===0?at(k,1):at(k);let c,f,m,v,w=!1,y=!1;if(ve(e)?(f=()=>e.value,w=De(e)):ct(e)?(f=()=>u(e),w=!0):z(e)?(y=!0,w=e.some(k=>ct(k)||De(k)),f=()=>e.map(k=>{if(ve(k))return k.value;if(ct(k))return u(k);if(Q(k))return a?a(k,2):k()})):Q(e)?t?f=a?()=>a(e,2):e:f=()=>{if(m){ut();try{m()}finally{ft()}}const k=Ot;Ot=c;try{return a?a(e,3,[v]):e(v)}finally{Ot=k}}:f=st,t&&o){const k=f,D=o===!0?1/0:o;f=()=>at(k(),D)}const A=_r(),b=()=>{c.stop(),A&&A.active&&qs(A.effects,c)};if(r&&t){const k=t;t=(...D)=>{k(...D),b()}}let S=y?new Array(e.length).fill(An):An;const _=k=>{if(!(!(c.flags&1)||!c.dirty&&!k))if(t){const D=c.run();if(o||w||(y?D.some((X,oe)=>xt(X,S[oe])):xt(D,S))){m&&m();const X=Ot;Ot=c;try{const oe=[D,S===An?void 0:y&&S[0]===An?[]:S,v];S=D,a?a(t,3,oe):t(...oe)}finally{Ot=X}}}else c.run()};return l&&l(_),c=new xr(f),c.scheduler=i?()=>i(_,!1):_,v=k=>Tl(k,!1,c),m=c.onStop=()=>{const k=Hn.get(c);if(k){if(a)a(k,4);else for(const D of k)D();Hn.delete(c)}},t?s?_(!0):S=c.run():i?i(_.bind(null,!0),!0):c.run(),b.pause=c.pause.bind(c),b.resume=c.resume.bind(c),b.stop=b,b}function at(e,t=1/0,n){if(t<=0||!de(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ve(e))at(e.value,t,n);else if(z(e))for(let s=0;s<e.length;s++)at(e[s],t,n);else if(Jn(e)||Vt(e))e.forEach(s=>{at(s,t,n)});else if(hr(e)){for(const s in e)at(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&at(e[s],t,n)}return e}function _n(e,t,n,s){try{return s?e(...s):e()}catch(o){xn(o,t,n)}}function Ye(e,t,n,s){if(Q(e)){const o=_n(e,t,n,s);return o&&dr(o)&&o.catch(r=>{xn(r,t,n)}),o}if(z(e)){const o=[];for(let r=0;r<e.length;r++)o.push(Ye(e[r],t,n,s));return o}}function xn(e,t,n,s=!0){const o=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||fe;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){ut(),_n(r,null,10,[e,a,u]),ft();return}}kl(e,n,o,s,i)}function kl(e,t,n,s=!0,o=!1){if(o)throw e;console.error(e)}const Ae=[];let et=-1;const Wt=[];let wt=null,Ut=0;const Nr=Promise.resolve();let Un=null;function Et(e){const t=Un||Nr;return e?t.then(this?e.bind(this):e):t}function Al(e){let t=et+1,n=Ae.length;for(;t<n;){const s=t+n>>>1,o=Ae[s],r=gn(o);r<e||r===e&&o.flags&2?t=s+1:n=s}return t}function eo(e){if(!(e.flags&1)){const t=gn(e),n=Ae[Ae.length-1];!n||!(e.flags&2)&&t>=gn(n)?Ae.push(e):Ae.splice(Al(t),0,e),e.flags|=1,jr()}}function jr(){Un||(Un=Nr.then(Ur))}function Ml(e){z(e)?Wt.push(...e):wt&&e.id===-1?wt.splice(Ut+1,0,e):e.flags&1||(Wt.push(e),e.flags|=1),jr()}function wo(e,t,n=et+1){for(;n<Ae.length;n++){const s=Ae[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Ae.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Hr(e){if(Wt.length){const t=[...new Set(Wt)].sort((n,s)=>gn(n)-gn(s));if(Wt.length=0,wt){wt.push(...t);return}for(wt=t,Ut=0;Ut<wt.length;Ut++){const n=wt[Ut];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}wt=null,Ut=0}}const gn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Ur(e){try{for(et=0;et<Ae.length;et++){const t=Ae[et];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),_n(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;et<Ae.length;et++){const t=Ae[et];t&&(t.flags&=-2)}et=-1,Ae.length=0,Hr(),Un=null,(Ae.length||Wt.length)&&Ur()}}let Re=null,Br=null;function Bn(e){const t=Re;return Re=e,Br=e&&e.type.__scopeId||null,t}function Kr(e,t=Re,n){if(!t||e._n)return e;const s=(...o)=>{s._d&&Lo(-1);const r=Bn(t);let i;try{i=e(...o)}finally{Bn(r),s._d&&Lo(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function nt(e,t){if(Re===null)return e;const n=us(Re),s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[r,i,l,a=fe]=t[o];r&&(Q(r)&&(r={mounted:r,updated:r}),r.deep&&at(i),s.push({dir:r,instance:n,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function At(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&&(ut(),Ye(a,n,8,[e.el,l,e,t]),ft())}}function Vr(e,t){if(Ce){let n=Ce.provides;const s=Ce.parent&&Ce.parent.provides;s===n&&(n=Ce.provides=Object.create(s)),n[e]=t}}function Ct(e,t,n=!1){const s=ao();if(s||Dt){let o=Dt?Dt._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&&Q(t)?t.call(s&&s.proxy):t}}function Pl(){return!!(ao()||Dt)}const Ol=Symbol.for("v-scx"),Il=()=>Ct(Ol);function qe(e,t,n){return Wr(e,t,n)}function Wr(e,t,n=fe){const{immediate:s,deep:o,flush:r,once:i}=n,l=xe({},n),a=t&&s||!t&&r!=="post";let u;if(Yt){if(r==="sync"){const v=Il();u=v.__watcherHandles||(v.__watcherHandles=[])}else if(!a){const v=()=>{};return v.stop=st,v.resume=st,v.pause=st,v}}const c=Ce;l.call=(v,w,y)=>Ye(v,c,w,y);let f=!1;r==="post"?l.scheduler=v=>{ke(v,c&&c.suspense)}:r!=="sync"&&(f=!0,l.scheduler=(v,w)=>{w?v():eo(v)}),l.augmentJob=v=>{t&&(v.flags|=4),f&&(v.flags|=2,c&&(v.id=c.uid,v.i=c))};const m=$l(e,t,l);return Yt&&(u?u.push(m):a&&m()),m}function Rl(e,t,n){const s=this.proxy,o=ye(e)?e.includes(".")?qr(s,e):()=>s[e]:e.bind(s,s);let r;Q(t)?r=t:(r=t.handler,n=t);const i=Sn(this),l=Wr(o,r.bind(s),n);return i(),l}function qr(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 Gr=Symbol("_vte"),Ll=e=>e.__isTeleport,an=e=>e&&(e.disabled||e.disabled===""),_o=e=>e&&(e.defer||e.defer===""),xo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Co=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ps=(e,t)=>{const n=e&&e.to;return ye(n)?t?t(n):null:n},Yr={name:"Teleport",__isTeleport:!0,process(e,t,n,s,o,r,i,l,a,u){const{mc:c,pc:f,pbc:m,o:{insert:v,querySelector:w,createText:y,createComment:A}}=u,b=an(t.props);let{shapeFlag:S,children:_,dynamicChildren:k}=t;if(e==null){const D=t.el=y(""),X=t.anchor=y("");v(D,n,s),v(X,n,s);const oe=(M,W)=>{S&16&&c(_,M,W,o,r,i,l,a)},H=()=>{const M=t.target=Ps(t.props,w),W=Xr(M,t,y,v);M&&(i!=="svg"&&xo(M)?i="svg":i!=="mathml"&&Co(M)&&(i="mathml"),o&&o.isCE&&(o.ce._teleportTargets||(o.ce._teleportTargets=new Set)).add(M),b||(oe(M,W),Ln(t,!1)))};b&&(oe(n,X),Ln(t,!0)),_o(t.props)?(t.el.__isMounted=!1,ke(()=>{H(),delete t.el.__isMounted},r)):H()}else{if(_o(t.props)&&e.el.__isMounted===!1){ke(()=>{Yr.process(e,t,n,s,o,r,i,l,a,u)},r);return}t.el=e.el,t.targetStart=e.targetStart;const D=t.anchor=e.anchor,X=t.target=e.target,oe=t.targetAnchor=e.targetAnchor,H=an(e.props),M=H?n:X,W=H?D:oe;if(i==="svg"||xo(X)?i="svg":(i==="mathml"||Co(X))&&(i="mathml"),k?(m(e.dynamicChildren,k,M,o,r,i,l),io(e,t,!0)):a||f(e,t,M,W,o,r,i,l,!1),b)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Mn(t,n,D,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ee=t.target=Ps(t.props,w);ee&&Mn(t,ee,null,u,0)}else H&&Mn(t,X,oe,u,1);Ln(t,b)}},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 v=r||!an(m);for(let w=0;w<l.length;w++){const y=l[w];s(y,t,n,v,!!y.dynamicChildren)}}},move:Mn,hydrate:Dl};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||an(c))&&a&16)for(let m=0;m<u.length;m++)o(u[m],t,n,2);f&&s(l,t,n)}function Dl(e,t,n,s,o,r,{o:{nextSibling:i,parentNode:l,querySelector:a,insert:u,createText:c}},f){function m(y,A,b,S){A.anchor=f(i(y),A,l(y),n,s,o,r),A.targetStart=b,A.targetAnchor=S}const v=t.target=Ps(t.props,a),w=an(t.props);if(v){const y=v._lpa||v.firstChild;if(t.shapeFlag&16)if(w)m(e,t,y,y&&i(y));else{t.anchor=i(e);let A=y;for(;A;){if(A&&A.nodeType===8){if(A.data==="teleport start anchor")t.targetStart=A;else if(A.data==="teleport anchor"){t.targetAnchor=A,v._lpa=t.targetAnchor&&i(t.targetAnchor);break}}A=i(A)}t.targetAnchor||Xr(v,t,c,u),f(y&&i(y),t,v,n,s,o,r)}Ln(t,w)}else w&&t.shapeFlag&16&&m(e,t,e,i(e));return t.anchor&&i(t.anchor)}const zr=Yr;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 Xr(e,t,n,s){const o=t.targetStart=n(""),r=t.targetAnchor=n("");return o[Gr]=r,e&&(s(o,e),s(r,e)),r}const It=Symbol("_leaveCb"),Pn=Symbol("_enterCb");function Fl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return mt(()=>{e.isMounted=!0}),Nt(()=>{e.isUnmounting=!0}),e}const je=[Function,Array],Nl={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:je,onEnter:je,onAfterEnter:je,onEnterCancelled:je,onBeforeLeave:je,onLeave:je,onAfterLeave:je,onLeaveCancelled:je,onBeforeAppear:je,onAppear:je,onAfterAppear:je,onAppearCancelled:je};function jl(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:v,onAfterLeave:w,onLeaveCancelled:y,onBeforeAppear:A,onAppear:b,onAfterAppear:S,onAppearCancelled:_}=t,k=String(e.key),D=jl(n,e),X=(M,W)=>{M&&Ye(M,s,9,W)},oe=(M,W)=>{const ee=W[1];X(M,W),z(M)?M.every(L=>L.length<=1)&&ee():M.length<=1&&ee()},H={mode:i,persisted:l,beforeEnter(M){let W=a;if(!n.isMounted)if(r)W=A||a;else return;M[It]&&M[It](!0);const ee=D[k];ee&&Bt(e,ee)&&ee.el[It]&&ee.el[It](),X(W,[M])},enter(M){let W=u,ee=c,L=f;if(!n.isMounted)if(r)W=b||u,ee=S||c,L=_||f;else return;let U=!1;const F=M[Pn]=J=>{U||(U=!0,J?X(L,[M]):X(ee,[M]),H.delayedLeave&&H.delayedLeave(),M[Pn]=void 0)};W?oe(W,[M,F]):F()},leave(M,W){const ee=String(e.key);if(M[Pn]&&M[Pn](!0),n.isUnmounting)return W();X(m,[M]);let L=!1;const U=M[It]=F=>{L||(L=!0,W(),F?X(y,[M]):X(w,[M]),M[It]=void 0,D[ee]===e&&delete D[ee])};D[ee]=e,v?oe(v,[M,U]):U()},clone(M){return Os(M,t,n,s)}};return H}function vn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,vn(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 Jr(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===ge?(i.patchFlag&128&&o++,s=s.concat(Jr(i.children,t,l))):(t||i.type!==pt)&&s.push(l!=null?Ft(i,{key:l}):i)}if(o>1)for(let r=0;r<s.length;r++)s[r].patchFlag=-2;return s}function Hl(e,t){return Q(e)?xe({name:e.name},t,{setup:e}):e}function to(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Kn=new WeakMap;function cn(e,t,n,s,o=!1){if(z(e)){e.forEach((w,y)=>cn(w,t&&(z(t)?t[y]:t),n,s,o));return}if(un(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&cn(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?us(s.component):s.el,i=o?null:r,{i:l,r:a}=e,u=t&&t.r,c=l.refs===fe?l.refs={}:l.refs,f=l.setupState,m=le(f),v=f===fe?fr:w=>ae(m,w);if(u!=null&&u!==a){if(So(t),ye(u))c[u]=null,v(u)&&(f[u]=null);else if(ve(u)){u.value=null;const w=t;w.k&&(c[w.k]=null)}}if(Q(a))_n(a,l,12,[i,c]);else{const w=ye(a),y=ve(a);if(w||y){const A=()=>{if(e.f){const b=w?v(a)?f[a]:c[a]:a.value;if(o)z(b)&&qs(b,r);else if(z(b))b.includes(r)||b.push(r);else if(w)c[a]=[r],v(a)&&(f[a]=c[a]);else{const S=[r];a.value=S,e.k&&(c[e.k]=S)}}else w?(c[a]=i,v(a)&&(f[a]=i)):y&&(a.value=i,e.k&&(c[e.k]=i))};if(i){const b=()=>{A(),Kn.delete(e)};b.id=-1,Kn.set(e,b),ke(b,n)}else So(e),A()}}}function So(e){const t=Kn.get(e);t&&(t.flags|=8,Kn.delete(e))}const Eo=e=>e.nodeType===8;ns().requestIdleCallback;ns().cancelIdleCallback;function Ul(e,t){if(Eo(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(Eo(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const un=e=>!!e.type.__asyncLoader;function Bl(e){Q(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,v()),v=()=>{let w;return u||(w=u=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),a)return new Promise((A,b)=>{a(y,()=>A(m()),()=>b(y),f+1)});throw y}).then(y=>w!==u&&u?u:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return Hl({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(w,y,A){let b=!1;(y.bu||(y.bu=[])).push(()=>b=!0);const S=()=>{b||A()},_=r?()=>{const k=r(S,D=>Ul(w,D));k&&(y.bum||(y.bum=[])).push(k)}:S;c?_():v().then(()=>!y.isUnmounted&&_())},get __asyncResolved(){return c},setup(){const w=Ce;if(to(w),c)return()=>On(c,w);const y=_=>{u=null,xn(_,w,13,!s)};if(l&&w.suspense||Yt)return v().then(_=>()=>On(_,w)).catch(_=>(y(_),()=>s?_e(s,{error:_}):null));const A=K(!1),b=K(),S=K(!!o);return o&&setTimeout(()=>{S.value=!1},o),i!=null&&setTimeout(()=>{if(!A.value&&!b.value){const _=new Error(`Async component timed out after ${i}ms.`);y(_),b.value=_}},i),v().then(()=>{A.value=!0,w.parent&&no(w.parent.vnode)&&w.parent.update()}).catch(_=>{y(_),b.value=_}),()=>{if(A.value&&c)return On(c,w);if(b.value&&s)return _e(s,{error:b.value});if(n&&!S.value)return On(n,w)}}})}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 no=e=>e.type.__isKeepAlive;function Kl(e,t){Zr(e,"a",t)}function Vl(e,t){Zr(e,"da",t)}function Zr(e,t,n=Ce){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ls(t,s,n),n){let o=n.parent;for(;o&&o.parent;)no(o.parent.vnode)&&Wl(s,t,n,o),o=o.parent}}function Wl(e,t,n,s){const o=ls(t,e,s,!0);so(()=>{qs(s[t],o)},n)}function ls(e,t,n=Ce,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{ut();const l=Sn(n),a=Ye(t,n,e,i);return l(),ft(),a});return s?o.unshift(r):o.push(r),r}}const ht=e=>(t,n=Ce)=>{(!Yt||e==="sp")&&ls(e,(...s)=>t(...s),n)},ql=ht("bm"),mt=ht("m"),Gl=ht("bu"),Qr=ht("u"),Nt=ht("bum"),so=ht("um"),Yl=ht("sp"),zl=ht("rtg"),Xl=ht("rtc");function Jl(e,t=Ce){ls("ec",e,t)}const Zl="components";function Ql(e,t){return ta(Zl,e,!0,t)||e}const ea=Symbol.for("v-ndc");function ta(e,t,n=!0,s=!1){const o=Re||Ce;if(o){const r=o.type;{const l=ja(r,!1);if(l&&(l===t||l===Ke(t)||l===es(Ke(t))))return r}const i=To(o[e]||r[e],t)||To(o.appContext[e],t);return!i&&s?r:i}}function To(e,t){return e&&(e[t]||e[Ke(t)]||e[es(Ke(t))])}function Cn(e,t,n,s){let o;const r=n,i=z(e);if(i||ye(e)){const l=i&&ct(e);let a=!1,u=!1;l&&(a=!De(e),u=dt(e),e=os(e)),o=new Array(e.length);for(let c=0,f=e.length;c<f;c++)o[c]=t(a?u?Gt(Ge(e[c])):Ge(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(de(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?yi(e)?us(e):Is(e.parent):null,fn=xe(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=>ti(e),$forceUpdate:e=>e.f||(e.f=()=>{eo(e.update)}),$nextTick:e=>e.n||(e.n=Et.bind(e.proxy)),$watch:e=>Rl.bind(e)}),ys=(e,t)=>e!==fe&&!e.__isScriptSetup&&ae(e,t),na={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!==fe&&ae(o,t))return i[t]=2,o[t];if(ae(r,t))return i[t]=3,r[t];if(n!==fe&&ae(n,t))return i[t]=4,n[t];Rs&&(i[t]=0)}}const u=fn[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!==fe&&ae(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,ae(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!==fe&&ae(s,t)?(s[t]=n,!0):ae(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!==fe&&l[0]!=="$"&&ae(e,l)||ys(t,l)||ae(r,l)||ae(s,l)||ae(fn,l)||ae(o.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ae(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function $o(e){return z(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function sa(e){const t=ti(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&ko(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:m,beforeUpdate:v,updated:w,activated:y,deactivated:A,beforeDestroy:b,beforeUnmount:S,destroyed:_,unmounted:k,render:D,renderTracked:X,renderTriggered:oe,errorCaptured:H,serverPrefetch:M,expose:W,inheritAttrs:ee,components:L,directives:U,filters:F}=t;if(u&&oa(u,s,null),i)for(const q in i){const ne=i[q];Q(ne)&&(s[q]=ne.bind(n))}if(o){const q=o.call(n,n);de(q)&&(e.data=rs(q))}if(Rs=!0,r)for(const q in r){const ne=r[q],be=Q(ne)?ne.bind(n,n):Q(ne.get)?ne.get.bind(n,n):st,Ne=!Q(ne)&&Q(ne.set)?ne.set.bind(n):st,we=Fe({get:be,set:Ne});Object.defineProperty(s,q,{enumerable:!0,configurable:!0,get:()=>we.value,set:O=>we.value=O})}if(l)for(const q in l)ei(l[q],s,n,q);if(a){const q=Q(a)?a.call(n):a;Reflect.ownKeys(q).forEach(ne=>{Vr(ne,q[ne])})}c&&ko(c,e,"c");function G(q,ne){z(ne)?ne.forEach(be=>q(be.bind(n))):ne&&q(ne.bind(n))}if(G(ql,f),G(mt,m),G(Gl,v),G(Qr,w),G(Kl,y),G(Vl,A),G(Jl,H),G(Xl,X),G(zl,oe),G(Nt,S),G(so,k),G(Yl,M),z(W))if(W.length){const q=e.exposed||(e.exposed={});W.forEach(ne=>{Object.defineProperty(q,ne,{get:()=>n[ne],set:be=>n[ne]=be,enumerable:!0})})}else e.exposed||(e.exposed={});D&&e.render===st&&(e.render=D),ee!=null&&(e.inheritAttrs=ee),L&&(e.components=L),U&&(e.directives=U),M&&to(e)}function oa(e,t,n=st){z(e)&&(e=Ls(e));for(const s in e){const o=e[s];let r;de(o)?"default"in o?r=Ct(o.from||s,o.default,!0):r=Ct(o.from||s):r=Ct(o),ve(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function ko(e,t,n){Ye(z(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function ei(e,t,n,s){let o=s.includes(".")?qr(n,s):()=>n[s];if(ye(e)){const r=t[e];Q(r)&&qe(o,r)}else if(Q(e))qe(o,e.bind(n));else if(de(e))if(z(e))e.forEach(r=>ei(r,t,n,s));else{const r=Q(e.handler)?e.handler.bind(n):t[e.handler];Q(r)&&qe(o,r,e)}}function ti(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=>Vn(a,u,i,!0)),Vn(a,t,i)),de(t)&&r.set(t,a),a}function Vn(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Vn(e,r,n,!0),o&&o.forEach(i=>Vn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=ra[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ra={data:Ao,props:Mo,emits:Mo,methods:nn,computed:nn,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:nn,directives:nn,watch:la,provide:Ao,inject:ia};function Ao(e,t){return t?e?function(){return xe(Q(e)?e.call(this,this):e,Q(t)?t.call(this,this):t)}:t:e}function ia(e,t){return nn(Ls(e),Ls(t))}function Ls(e){if(z(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function $e(e,t){return e?[...new Set([].concat(e,t))]:t}function nn(e,t){return e?xe(Object.create(null),e,t):t}function Mo(e,t){return e?z(e)&&z(t)?[...new Set([...e,...t])]:xe(Object.create(null),$o(e),$o(t??{})):t}function la(e,t){if(!e)return t;if(!t)return e;const n=xe(Object.create(null),e);for(const s in t)n[s]=$e(e[s],t[s]);return n}function ni(){return{app:null,config:{isNativeTag:fr,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 aa=0;function ca(e,t){return function(s,o=null){Q(s)||(s=xe({},s)),o!=null&&!de(o)&&(o=null);const r=ni(),i=new WeakSet,l=[];let a=!1;const u=r.app={_uid:aa++,_component:s,_props:o,_container:null,_context:r,_instance:null,version:Ua,get config(){return r.config},set config(c){},use(c,...f){return i.has(c)||(c&&Q(c.install)?(i.add(c),c.install(u,...f)):Q(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 v=u._ceVNode||_e(s,o);return v.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(v,c,m),a=!0,u._container=c,c.__vue_app__=u,us(v.component)}},onUnmount(c){l.push(c)},unmount(){a&&(Ye(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=Dt;Dt=u;try{return c()}finally{Dt=f}}};return u}}let Dt=null;const ua=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ke(t)}Modifiers`]||e[`${St(t)}Modifiers`];function fa(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||fe;let o=n;const r=t.startsWith("update:"),i=r&&ua(s,t.slice(7));i&&(i.trim&&(o=n.map(c=>ye(c)?c.trim():c)),i.number&&(o=n.map(ts)));let l,a=s[l=ps(t)]||s[l=ps(Ke(t))];!a&&r&&(a=s[l=ps(St(t))]),a&&Ye(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,Ye(u,e,6,o)}}const da=new WeakMap;function si(e,t,n=!1){const s=n?da:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!Q(e)){const a=u=>{const c=si(u,t,!0);c&&(l=!0,xe(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(de(e)&&s.set(e,null),null):(z(r)?r.forEach(a=>i[a]=null):xe(i,r),de(e)&&s.set(e,i),i)}function as(e,t){return!e||!Xn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ae(e,t[0].toLowerCase()+t.slice(1))||ae(e,St(t))||ae(e,t))}function Po(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:v,ctx:w,inheritAttrs:y}=e,A=Bn(e);let b,S;try{if(n.shapeFlag&4){const k=o||s,D=k;b=tt(u.call(D,k,c,f,v,m,w)),S=l}else{const k=t;b=tt(k.length>1?k(f,{attrs:l,slots:i,emit:a}):k(f,null)),S=t.props?l:pa(l)}}catch(k){dn.length=0,xn(k,e,1),b=_e(pt)}let _=b;if(S&&y!==!1){const k=Object.keys(S),{shapeFlag:D}=_;k.length&&D&7&&(r&&k.some(Ws)&&(S=ha(S,r)),_=Ft(_,S,!1,!0))}return n.dirs&&(_=Ft(_,null,!1,!0),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&vn(_,n.transition),b=_,Bn(A),b}const pa=e=>{let t;for(const n in e)(n==="class"||n==="style"||Xn(n))&&((t||(t={}))[n]=e[n]);return t},ha=(e,t)=>{const n={};for(const s in e)(!Ws(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ma(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?Oo(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]&&!as(u,m))return!0}}}else return(o||l)&&(!l||!l.$stable)?!0:s===i?!1:s?i?Oo(s,i,u):!0:!!i;return!1}function Oo(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]&&!as(n,r))return!0}return!1}function ga({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 oi={},ri=()=>Object.create(oi),ii=e=>Object.getPrototypeOf(e)===oi;function va(e,t,n,s=!1){const o={},r=ri();e.propsDefaults=Object.create(null),li(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:vl(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function ya(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=le(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(as(e.emitsOptions,m))continue;const v=t[m];if(a)if(ae(r,m))v!==r[m]&&(r[m]=v,u=!0);else{const w=Ke(m);o[w]=Ds(a,l,w,v,e,!1)}else v!==r[m]&&(r[m]=v,u=!0)}}}else{li(e,t,o,r)&&(u=!0);let c;for(const f in l)(!t||!ae(t,f)&&((c=St(f))===f||!ae(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||!ae(t,f))&&(delete r[f],u=!0)}u&<(e.attrs,"set","")}function li(e,t,n,s){const[o,r]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(on(a))continue;const u=t[a];let c;o&&ae(o,c=Ke(a))?!r||!r.includes(c)?n[c]=u:(l||(l={}))[c]=u:as(e.emitsOptions,a)||(!(a in s)||u!==s[a])&&(s[a]=u,i=!0)}if(r){const a=le(n),u=l||fe;for(let c=0;c<r.length;c++){const f=r[c];n[f]=Ds(o,a,f,u[f],e,!ae(u,f))}}return i}function Ds(e,t,n,s,o,r){const i=e[n];if(i!=null){const l=ae(i,"default");if(l&&s===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&Q(a)){const{propsDefaults:u}=o;if(n in u)s=u[n];else{const c=Sn(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===St(n))&&(s=!0))}return s}const ba=new WeakMap;function ai(e,t,n=!1){const s=n?ba:t.propsCache,o=s.get(e);if(o)return o;const r=e.props,i={},l=[];let a=!1;if(!Q(e)){const c=f=>{a=!0;const[m,v]=ai(f,t,!0);xe(i,m),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!a)return de(e)&&s.set(e,Kt),Kt;if(z(r))for(let c=0;c<r.length;c++){const f=Ke(r[c]);Io(f)&&(i[f]=fe)}else if(r)for(const c in r){const f=Ke(c);if(Io(f)){const m=r[c],v=i[f]=z(m)||Q(m)?{type:m}:xe({},m),w=v.type;let y=!1,A=!0;if(z(w))for(let b=0;b<w.length;++b){const S=w[b],_=Q(S)&&S.name;if(_==="Boolean"){y=!0;break}else _==="String"&&(A=!1)}else y=Q(w)&&w.name==="Boolean";v[0]=y,v[1]=A,(y||ae(v,"default"))&&l.push(f)}}const u=[i,l];return de(e)&&s.set(e,u),u}function Io(e){return e[0]!=="$"&&!on(e)}const oo=e=>e==="_"||e==="_ctx"||e==="$stable",ro=e=>z(e)?e.map(tt):[tt(e)],wa=(e,t,n)=>{if(t._n)return t;const s=Kr((...o)=>ro(t(...o)),n);return s._c=!1,s},ci=(e,t,n)=>{const s=e._ctx;for(const o in e){if(oo(o))continue;const r=e[o];if(Q(r))t[o]=wa(o,r,s);else if(r!=null){const i=ro(r);t[o]=()=>i}}},ui=(e,t)=>{const n=ro(t);e.slots.default=()=>n},fi=(e,t,n)=>{for(const s in t)(n||!oo(s))&&(e[s]=t[s])},_a=(e,t,n)=>{const s=e.slots=ri();if(e.vnode.shapeFlag&32){const o=t._;o?(fi(s,t,n),n&&mr(s,"_",o,!0)):ci(t,s)}else t&&ui(e,t)},xa=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=fe;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:fi(o,t,n):(r=!t.$stable,ci(t,o)),i=t}else t&&(ui(e,t),i={default:1});if(r)for(const l in o)!oo(l)&&i[l]==null&&delete o[l]},ke=$a;function Ca(e){return Sa(e)}function Sa(e,t){const n=ns();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:v=st,insertStaticContent:w}=e,y=(d,p,h,g=null,x=null,E=null,I=void 0,P=null,T=!!p.dynamicChildren)=>{if(d===p)return;d&&!Bt(d,p)&&(g=$t(d),O(d,x,E,!0),d=null),p.patchFlag===-2&&(T=!1,p.dynamicChildren=null);const{type:$,ref:V,shapeFlag:j}=p;switch($){case cs:A(d,p,h,g);break;case pt:b(d,p,h,g);break;case ws:d==null&&S(p,h,g,I);break;case ge:L(d,p,h,g,x,E,I,P,T);break;default:j&1?D(d,p,h,g,x,E,I,P,T):j&6?U(d,p,h,g,x,E,I,P,T):(j&64||j&128)&&$.process(d,p,h,g,x,E,I,P,T,kt)}V!=null&&x?cn(V,d&&d.ref,E,p||d,!p):V==null&&d&&d.ref!=null&&cn(d.ref,null,E,d,!0)},A=(d,p,h,g)=>{if(d==null)s(p.el=l(p.children),h,g);else{const x=p.el=d.el;p.children!==d.children&&u(x,p.children)}},b=(d,p,h,g)=>{d==null?s(p.el=a(p.children||""),h,g):p.el=d.el},S=(d,p,h,g)=>{[d.el,d.anchor]=w(d.children,p,h,g,d.el,d.anchor)},_=({el:d,anchor:p},h,g)=>{let x;for(;d&&d!==p;)x=m(d),s(d,h,g),d=x;s(p,h,g)},k=({el:d,anchor:p})=>{let h;for(;d&&d!==p;)h=m(d),o(d),d=h;o(p)},D=(d,p,h,g,x,E,I,P,T)=>{if(p.type==="svg"?I="svg":p.type==="math"&&(I="mathml"),d==null)X(p,h,g,x,E,I,P,T);else{const $=d.el&&d.el._isVueCE?d.el:null;try{$&&$._beginPatch(),M(d,p,x,E,I,P,T)}finally{$&&$._endPatch()}}},X=(d,p,h,g,x,E,I,P)=>{let T,$;const{props:V,shapeFlag:j,transition:Y,dirs:Z}=d;if(T=d.el=i(d.type,E,V&&V.is,V),j&8?c(T,d.children):j&16&&H(d.children,T,null,g,x,bs(d,E),I,P),Z&&At(d,null,g,"created"),oe(T,d,d.scopeId,I,g),V){for(const pe in V)pe!=="value"&&!on(pe)&&r(T,pe,null,V[pe],E,g);"value"in V&&r(T,"value",null,V.value,E),($=V.onVnodeBeforeMount)&&Ze($,g,d)}Z&&At(d,null,g,"beforeMount");const ie=Ea(x,Y);ie&&Y.beforeEnter(T),s(T,p,h),(($=V&&V.onVnodeMounted)||ie||Z)&&ke(()=>{$&&Ze($,g,d),ie&&Y.enter(T),Z&&At(d,null,g,"mounted")},x)},oe=(d,p,h,g,x)=>{if(h&&v(d,h),g)for(let E=0;E<g.length;E++)v(d,g[E]);if(x){let E=x.subTree;if(p===E||hi(E.type)&&(E.ssContent===p||E.ssFallback===p)){const I=x.vnode;oe(d,I,I.scopeId,I.slotScopeIds,x.parent)}}},H=(d,p,h,g,x,E,I,P,T=0)=>{for(let $=T;$<d.length;$++){const V=d[$]=P?_t(d[$]):tt(d[$]);y(null,V,p,h,g,x,E,I,P)}},M=(d,p,h,g,x,E,I)=>{const P=p.el=d.el;let{patchFlag:T,dynamicChildren:$,dirs:V}=p;T|=d.patchFlag&16;const j=d.props||fe,Y=p.props||fe;let Z;if(h&&Mt(h,!1),(Z=Y.onVnodeBeforeUpdate)&&Ze(Z,h,p,d),V&&At(p,d,h,"beforeUpdate"),h&&Mt(h,!0),(j.innerHTML&&Y.innerHTML==null||j.textContent&&Y.textContent==null)&&c(P,""),$?W(d.dynamicChildren,$,P,h,g,bs(p,x),E):I||ne(d,p,P,null,h,g,bs(p,x),E,!1),T>0){if(T&16)ee(P,j,Y,h,x);else if(T&2&&j.class!==Y.class&&r(P,"class",null,Y.class,x),T&4&&r(P,"style",j.style,Y.style,x),T&8){const ie=p.dynamicProps;for(let pe=0;pe<ie.length;pe++){const ce=ie[pe],Pe=j[ce],Oe=Y[ce];(Oe!==Pe||ce==="value")&&r(P,ce,Pe,Oe,x,h)}}T&1&&d.children!==p.children&&c(P,p.children)}else!I&&$==null&&ee(P,j,Y,h,x);((Z=Y.onVnodeUpdated)||V)&&ke(()=>{Z&&Ze(Z,h,p,d),V&&At(p,d,h,"updated")},g)},W=(d,p,h,g,x,E,I)=>{for(let P=0;P<p.length;P++){const T=d[P],$=p[P],V=T.el&&(T.type===ge||!Bt(T,$)||T.shapeFlag&198)?f(T.el):h;y(T,$,V,null,g,x,E,I,!0)}},ee=(d,p,h,g,x)=>{if(p!==h){if(p!==fe)for(const E in p)!on(E)&&!(E in h)&&r(d,E,p[E],null,x,g);for(const E in h){if(on(E))continue;const I=h[E],P=p[E];I!==P&&E!=="value"&&r(d,E,P,I,x,g)}"value"in h&&r(d,"value",p.value,h.value,x)}},L=(d,p,h,g,x,E,I,P,T)=>{const $=p.el=d?d.el:l(""),V=p.anchor=d?d.anchor:l("");let{patchFlag:j,dynamicChildren:Y,slotScopeIds:Z}=p;Z&&(P=P?P.concat(Z):Z),d==null?(s($,h,g),s(V,h,g),H(p.children||[],h,V,x,E,I,P,T)):j>0&&j&64&&Y&&d.dynamicChildren&&d.dynamicChildren.length===Y.length?(W(d.dynamicChildren,Y,h,x,E,I,P),(p.key!=null||x&&p===x.subTree)&&io(d,p,!0)):ne(d,p,h,V,x,E,I,P,T)},U=(d,p,h,g,x,E,I,P,T)=>{p.slotScopeIds=P,d==null?p.shapeFlag&512?x.ctx.activate(p,h,g,I,T):F(p,h,g,x,E,I,T):J(d,p,T)},F=(d,p,h,g,x,E,I)=>{const P=d.component=Ra(d,g,x);if(no(d)&&(P.ctx.renderer=kt),La(P,!1,I),P.asyncDep){if(x&&x.registerDep(P,G,I),!d.el){const T=P.subTree=_e(pt);b(null,T,p,h),d.placeholder=T.el}}else G(P,d,p,h,x,E,I)},J=(d,p,h)=>{const g=p.component=d.component;if(ma(d,p,h))if(g.asyncDep&&!g.asyncResolved){q(g,p,h);return}else g.next=p,g.update();else p.el=d.el,g.vnode=p},G=(d,p,h,g,x,E,I)=>{const P=()=>{if(d.isMounted){let{next:j,bu:Y,u:Z,parent:ie,vnode:pe}=d;{const Xe=di(d);if(Xe){j&&(j.el=pe.el,q(d,j,I)),Xe.asyncDep.then(()=>{d.isUnmounted||P()});return}}let ce=j,Pe;Mt(d,!1),j?(j.el=pe.el,q(d,j,I)):j=pe,Y&&Rn(Y),(Pe=j.props&&j.props.onVnodeBeforeUpdate)&&Ze(Pe,ie,j,pe),Mt(d,!0);const Oe=Po(d),ze=d.subTree;d.subTree=Oe,y(ze,Oe,f(ze.el),$t(ze),d,x,E),j.el=Oe.el,ce===null&&ga(d,Oe.el),Z&&ke(Z,x),(Pe=j.props&&j.props.onVnodeUpdated)&&ke(()=>Ze(Pe,ie,j,pe),x)}else{let j;const{el:Y,props:Z}=p,{bm:ie,m:pe,parent:ce,root:Pe,type:Oe}=d,ze=un(p);Mt(d,!1),ie&&Rn(ie),!ze&&(j=Z&&Z.onVnodeBeforeMount)&&Ze(j,ce,p),Mt(d,!0);{Pe.ce&&Pe.ce._def.shadowRoot!==!1&&Pe.ce._injectChildStyle(Oe);const Xe=d.subTree=Po(d);y(null,Xe,h,g,d,x,E),p.el=Xe.el}if(pe&&ke(pe,x),!ze&&(j=Z&&Z.onVnodeMounted)){const Xe=p;ke(()=>Ze(j,ce,Xe),x)}(p.shapeFlag&256||ce&&un(ce.vnode)&&ce.vnode.shapeFlag&256)&&d.a&&ke(d.a,x),d.isMounted=!0,p=h=g=null}};d.scope.on();const T=d.effect=new xr(P);d.scope.off();const $=d.update=T.run.bind(T),V=d.job=T.runIfDirty.bind(T);V.i=d,V.id=d.uid,T.scheduler=()=>eo(V),Mt(d,!0),$()},q=(d,p,h)=>{p.component=d;const g=d.vnode.props;d.vnode=p,d.next=null,ya(d,p.props,g,h),xa(d,p.children,h),ut(),wo(d),ft()},ne=(d,p,h,g,x,E,I,P,T=!1)=>{const $=d&&d.children,V=d?d.shapeFlag:0,j=p.children,{patchFlag:Y,shapeFlag:Z}=p;if(Y>0){if(Y&128){Ne($,j,h,g,x,E,I,P,T);return}else if(Y&256){be($,j,h,g,x,E,I,P,T);return}}Z&8?(V&16&&Me($,x,E),j!==$&&c(h,j)):V&16?Z&16?Ne($,j,h,g,x,E,I,P,T):Me($,x,E,!0):(V&8&&c(h,""),Z&16&&H(j,h,g,x,E,I,P,T))},be=(d,p,h,g,x,E,I,P,T)=>{d=d||Kt,p=p||Kt;const $=d.length,V=p.length,j=Math.min($,V);let Y;for(Y=0;Y<j;Y++){const Z=p[Y]=T?_t(p[Y]):tt(p[Y]);y(d[Y],Z,h,null,x,E,I,P,T)}$>V?Me(d,x,E,!0,!1,j):H(p,h,g,x,E,I,P,T,j)},Ne=(d,p,h,g,x,E,I,P,T)=>{let $=0;const V=p.length;let j=d.length-1,Y=V-1;for(;$<=j&&$<=Y;){const Z=d[$],ie=p[$]=T?_t(p[$]):tt(p[$]);if(Bt(Z,ie))y(Z,ie,h,null,x,E,I,P,T);else break;$++}for(;$<=j&&$<=Y;){const Z=d[j],ie=p[Y]=T?_t(p[Y]):tt(p[Y]);if(Bt(Z,ie))y(Z,ie,h,null,x,E,I,P,T);else break;j--,Y--}if($>j){if($<=Y){const Z=Y+1,ie=Z<V?p[Z].el:g;for(;$<=Y;)y(null,p[$]=T?_t(p[$]):tt(p[$]),h,ie,x,E,I,P,T),$++}}else if($>Y)for(;$<=j;)O(d[$],x,E,!0),$++;else{const Z=$,ie=$,pe=new Map;for($=ie;$<=Y;$++){const Ie=p[$]=T?_t(p[$]):tt(p[$]);Ie.key!=null&&pe.set(Ie.key,$)}let ce,Pe=0;const Oe=Y-ie+1;let ze=!1,Xe=0;const Jt=new Array(Oe);for($=0;$<Oe;$++)Jt[$]=0;for($=Z;$<=j;$++){const Ie=d[$];if(Pe>=Oe){O(Ie,x,E,!0);continue}let Je;if(Ie.key!=null)Je=pe.get(Ie.key);else for(ce=ie;ce<=Y;ce++)if(Jt[ce-ie]===0&&Bt(Ie,p[ce])){Je=ce;break}Je===void 0?O(Ie,x,E,!0):(Jt[Je-ie]=$+1,Je>=Xe?Xe=Je:ze=!0,y(Ie,p[Je],h,null,x,E,I,P,T),Pe++)}const po=ze?Ta(Jt):Kt;for(ce=po.length-1,$=Oe-1;$>=0;$--){const Ie=ie+$,Je=p[Ie],ho=p[Ie+1],mo=Ie+1<V?ho.el||pi(ho):g;Jt[$]===0?y(null,Je,h,mo,x,E,I,P,T):ze&&(ce<0||$!==po[ce]?we(Je,h,mo,2):ce--)}}},we=(d,p,h,g,x=null)=>{const{el:E,type:I,transition:P,children:T,shapeFlag:$}=d;if($&6){we(d.component.subTree,p,h,g);return}if($&128){d.suspense.move(p,h,g);return}if($&64){I.move(d,p,h,kt);return}if(I===ge){s(E,p,h);for(let j=0;j<T.length;j++)we(T[j],p,h,g);s(d.anchor,p,h);return}if(I===ws){_(d,p,h);return}if(g!==2&&$&1&&P)if(g===0)P.beforeEnter(E),s(E,p,h),ke(()=>P.enter(E),x);else{const{leave:j,delayLeave:Y,afterLeave:Z}=P,ie=()=>{d.ctx.isUnmounted?o(E):s(E,p,h)},pe=()=>{E._isLeaving&&E[It](!0),j(E,()=>{ie(),Z&&Z()})};Y?Y(E,ie,pe):pe()}else s(E,p,h)},O=(d,p,h,g=!1,x=!1)=>{const{type:E,props:I,ref:P,children:T,dynamicChildren:$,shapeFlag:V,patchFlag:j,dirs:Y,cacheIndex:Z}=d;if(j===-2&&(x=!1),P!=null&&(ut(),cn(P,null,h,d,!0),ft()),Z!=null&&(p.renderCache[Z]=void 0),V&256){p.ctx.deactivate(d);return}const ie=V&1&&Y,pe=!un(d);let ce;if(pe&&(ce=I&&I.onVnodeBeforeUnmount)&&Ze(ce,p,d),V&6)me(d.component,h,g);else{if(V&128){d.suspense.unmount(h,g);return}ie&&At(d,null,p,"beforeUnmount"),V&64?d.type.remove(d,p,h,kt,g):$&&!$.hasOnce&&(E!==ge||j>0&&j&64)?Me($,p,h,!1,!0):(E===ge&&j&384||!x&&V&16)&&Me(T,p,h),g&&N(d)}(pe&&(ce=I&&I.onVnodeUnmounted)||ie)&&ke(()=>{ce&&Ze(ce,p,d),ie&&At(d,null,p,"unmounted")},h)},N=d=>{const{type:p,el:h,anchor:g,transition:x}=d;if(p===ge){re(h,g);return}if(p===ws){k(d);return}const E=()=>{o(h),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(d.shapeFlag&1&&x&&!x.persisted){const{leave:I,delayLeave:P}=x,T=()=>I(h,E);P?P(d.el,E,T):T()}else E()},re=(d,p)=>{let h;for(;d!==p;)h=m(d),o(d),d=h;o(p)},me=(d,p,h)=>{const{bum:g,scope:x,job:E,subTree:I,um:P,m:T,a:$}=d;Ro(T),Ro($),g&&Rn(g),x.stop(),E&&(E.flags|=8,O(I,d,p,h)),P&&ke(P,p),ke(()=>{d.isUnmounted=!0},p)},Me=(d,p,h,g=!1,x=!1,E=0)=>{for(let I=E;I<d.length;I++)O(d[I],p,h,g,x)},$t=d=>{if(d.shapeFlag&6)return $t(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=m(d.anchor||d.el),h=p&&p[Gr];return h?m(h):p};let Xt=!1;const En=(d,p,h)=>{let g;d==null?p._vnode&&(O(p._vnode,null,null,!0),g=p._vnode.component):y(p._vnode||null,d,p,null,null,null,h),p._vnode=d,Xt||(Xt=!0,wo(g),Hr(),Xt=!1)},kt={p:y,um:O,m:we,r:N,mt:F,mc:H,pc:ne,pbc:W,n:$t,o:e};return{render:En,hydrate:void 0,createApp:ca(En)}}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 Mt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ea(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function io(e,t,n=!1){const s=e.children,o=t.children;if(z(s)&&z(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]=_t(o[r]),l.el=i.el),!n&&l.patchFlag!==-2&&io(i,l)),l.type===cs&&(l.patchFlag!==-1?l.el=i.el:l.__elIndex=r+(e.type===ge?1:0)),l.type===pt&&!l.el&&(l.el=i.el)}}function Ta(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 di(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:di(t)}function Ro(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function pi(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?pi(t.subTree):null}const hi=e=>e.__isSuspense;function $a(e,t){t&&t.pendingBranch?z(e)?t.effects.push(...e):t.effects.push(e):Ml(e)}const ge=Symbol.for("v-fgt"),cs=Symbol.for("v-txt"),pt=Symbol.for("v-cmt"),ws=Symbol.for("v-stc"),dn=[];let Le=null;function R(e=!1){dn.push(Le=e?null:[])}function ka(){dn.pop(),Le=dn[dn.length-1]||null}let yn=1;function Lo(e,t=!1){yn+=e,e<0&&Le&&t&&(Le.hasOnce=!0)}function mi(e){return e.dynamicChildren=yn>0?Le||Kt:null,ka(),yn>0&&Le&&Le.push(e),e}function B(e,t,n,s,o,r){return mi(C(e,t,n,s,o,r,!0))}function He(e,t,n,s,o){return mi(_e(e,t,n,s,o,!0))}function gi(e){return e?e.__v_isVNode===!0:!1}function Bt(e,t){return e.type===t.type&&e.key===t.key}const vi=({key:e})=>e??null,Dn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ye(e)||ve(e)||Q(e)?{i:Re,r:e,k:t,f:!!n}:e:null);function C(e,t=null,n=null,s=0,o=null,r=e===ge?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vi(t),ref:t&&Dn(t),scopeId:Br,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:Re};return l?(lo(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=ye(n)?8:16),yn>0&&!i&&Le&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Le.push(a),a}const _e=Aa;function Aa(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===ea)&&(e=pt),gi(e)){const l=Ft(e,t,!0);return n&&lo(l,n),yn>0&&!r&&Le&&(l.shapeFlag&6?Le[Le.indexOf(e)]=l:Le.push(l)),l.patchFlag=-2,l}if(Ha(e)&&(e=e.__vccOpts),t){t=Ma(t);let{class:l,style:a}=t;l&&!ye(l)&&(t.class=Be(l)),de(a)&&(is(a)&&!z(a)&&(a=xe({},a)),t.style=wn(a))}const i=ye(e)?1:hi(e)?128:Ll(e)?64:de(e)?4:Q(e)?2:0;return C(e,t,n,s,o,i,r,!0)}function Ma(e){return e?is(e)||ii(e)?xe({},e):e:null}function Ft(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:a}=e,u=t?Pa(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&vi(u),ref:t&&t.ref?n&&r?z(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!==ge?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&&Ft(e.ssContent),ssFallback:e.ssFallback&&Ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&vn(c,a.clone(c)),c}function Ue(e=" ",t=0){return _e(cs,null,e,t)}function se(e="",t=!1){return t?(R(),He(pt,null,e)):_e(pt,null,e)}function tt(e){return e==null||typeof e=="boolean"?_e(pt):z(e)?_e(ge,null,e.slice()):gi(e)?_t(e):_e(cs,null,String(e))}function _t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ft(e)}function lo(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(z(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),lo(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!ii(t)?t._ctx=Re:o===3&&Re&&(Re.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Q(t)?(t={default:t,_ctx:Re},n=32):(t=String(t),s&64?(n=16,t=[Ue(t)]):n=8);e.children=t,e.shapeFlag|=n}function Pa(...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=Be([t.class,s.class]));else if(o==="style")t.style=wn([t.style,s.style]);else if(Xn(o)){const r=t[o],i=s[o];i&&r!==i&&!(z(r)&&r.includes(i))&&(t[o]=r?[].concat(r,i):i)}else o!==""&&(t[o]=s[o])}return t}function Ze(e,t,n,s=null){Ye(e,t,7,[n,s])}const Oa=ni();let Ia=0;function Ra(e,t,n){const s=e.type,o=(t?t.appContext:e.appContext)||Oa,r={uid:Ia++,vnode:e,type:s,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new br(!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:ai(s,o),emitsOptions:si(s,o),emit:null,emitted:null,propsDefaults:fe,inheritAttrs:s.inheritAttrs,ctx:fe,data:fe,props:fe,attrs:fe,slots:fe,refs:fe,setupState:fe,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=fa.bind(null,r),e.ce&&e.ce(r),r}let Ce=null;const ao=()=>Ce||Re;let Wn,Fs;{const e=ns(),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=>Ce=n),Fs=t("__VUE_SSR_SETTERS__",n=>Yt=n)}const Sn=e=>{const t=Ce;return Wn(e),e.scope.on(),()=>{e.scope.off(),Wn(t)}},Do=()=>{Ce&&Ce.scope.off(),Wn(null)};function yi(e){return e.vnode.shapeFlag&4}let Yt=!1;function La(e,t=!1,n=!1){t&&Fs(t);const{props:s,children:o}=e.vnode,r=yi(e);va(e,s,r,t),_a(e,o,n||t);const i=r?Da(e,t):void 0;return t&&Fs(!1),i}function Da(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,na);const{setup:s}=n;if(s){ut();const o=e.setupContext=s.length>1?Na(e):null,r=Sn(e),i=_n(s,e,0,[e.props,o]),l=dr(i);if(ft(),r(),(l||e.sp)&&!un(e)&&to(e),l){if(i.then(Do,Do),t)return i.then(a=>{Fo(e,a)}).catch(a=>{xn(a,e,0)});e.asyncDep=i}else Fo(e,i)}else bi(e)}function Fo(e,t,n){Q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:de(t)&&(e.setupState=Fr(t)),bi(e)}function bi(e,t,n){const s=e.type;e.render||(e.render=s.render||st);{const o=Sn(e);ut();try{sa(e)}finally{ft(),o()}}}const Fa={get(e,t){return Te(e,"get",""),e[t]}};function Na(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Fa),slots:e.slots,emit:e.emit,expose:t}}function us(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Fr(Qs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in fn)return fn[n](e)},has(t,n){return n in t||n in fn}})):e.proxy}function ja(e,t=!0){return Q(e)?e.displayName||e.name:e.name||t&&e.__name}function Ha(e){return Q(e)&&"__vccOpts"in e}const Fe=(e,t)=>El(e,t,Yt),Ua="3.5.27";let Ns;const No=typeof window<"u"&&window.trustedTypes;if(No)try{Ns=No.createPolicy("vue",{createHTML:e=>e})}catch{}const wi=Ns?e=>Ns.createHTML(e):e=>e,Ba="http://www.w3.org/2000/svg",Ka="http://www.w3.org/1998/Math/MathML",it=typeof document<"u"?document:null,jo=it&&it.createElement("template"),Va={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"?it.createElementNS(Ba,e):t==="mathml"?it.createElementNS(Ka,e):n?it.createElement(e,{is:n}):it.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>it.createTextNode(e),createComment:e=>it.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>it.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{jo.innerHTML=wi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=jo.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]}},gt="transition",Qt="animation",zt=Symbol("_vtc"),_i={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},Wa=xe({},Nl,_i),Pt=(e,t=[])=>{z(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ho=e=>e?z(e)?e.some(t=>t.length>1):e.length>1:!1;function qa(e){const t={};for(const L in e)L in _i||(t[L]=e[L]);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:v=`${n}-leave-to`}=e,w=Ga(o),y=w&&w[0],A=w&&w[1],{onBeforeEnter:b,onEnter:S,onEnterCancelled:_,onLeave:k,onLeaveCancelled:D,onBeforeAppear:X=b,onAppear:oe=S,onAppearCancelled:H=_}=t,M=(L,U,F,J)=>{L._enterCancelled=J,vt(L,U?c:l),vt(L,U?u:i),F&&F()},W=(L,U)=>{L._isLeaving=!1,vt(L,f),vt(L,v),vt(L,m),U&&U()},ee=L=>(U,F)=>{const J=L?oe:S,G=()=>M(U,L,F);Pt(J,[U,G]),Uo(()=>{vt(U,L?a:r),Qe(U,L?c:l),Ho(J)||Bo(U,s,y,G)})};return xe(t,{onBeforeEnter(L){Pt(b,[L]),Qe(L,r),Qe(L,i)},onBeforeAppear(L){Pt(X,[L]),Qe(L,a),Qe(L,u)},onEnter:ee(!1),onAppear:ee(!0),onLeave(L,U){L._isLeaving=!0;const F=()=>W(L,U);Qe(L,f),L._enterCancelled?(Qe(L,m),js(L)):(js(L),Qe(L,m)),Uo(()=>{L._isLeaving&&(vt(L,f),Qe(L,v),Ho(k)||Bo(L,s,A,F))}),Pt(k,[L,F])},onEnterCancelled(L){M(L,!1,void 0,!0),Pt(_,[L])},onAppearCancelled(L){M(L,!0,void 0,!0),Pt(H,[L])},onLeaveCancelled(L){W(L),Pt(D,[L])}})}function Ga(e){if(e==null)return null;if(de(e))return[_s(e.enter),_s(e.leave)];{const t=_s(e);return[t,t]}}function _s(e){return Bi(e)}function Qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function vt(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 Uo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ya=0;function Bo(e,t,n,s){const o=e._endId=++Ya,r=()=>{o===e._endId&&s()};if(n!=null)return setTimeout(r,n);const{type:i,timeout:l,propCount:a}=xi(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,m),r()},m=v=>{v.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,m)}function xi(e,t){const n=window.getComputedStyle(e),s=w=>(n[w]||"").split(", "),o=s(`${gt}Delay`),r=s(`${gt}Duration`),i=Ko(o,r),l=s(`${Qt}Delay`),a=s(`${Qt}Duration`),u=Ko(l,a);let c=null,f=0,m=0;t===gt?i>0&&(c=gt,f=i,m=r.length):t===Qt?u>0&&(c=Qt,f=u,m=a.length):(f=Math.max(i,u),c=f>0?i>u?gt:Qt:null,m=c?c===gt?r.length:a.length:0);const v=c===gt&&/\b(?:transform|all)(?:,|$)/.test(s(`${gt}Property`).toString());return{type:c,timeout:f,propCount:m,hasTransform:v}}function Ko(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>Vo(n)+Vo(e[s])))}function Vo(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function js(e){return(e?e.ownerDocument:document).body.offsetHeight}function za(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"),Ci=Symbol("_vsh"),sn={name:"show",beforeMount(e,{value:t},{transition:n}){e[qn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):en(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),en(e,!0),s.enter(e)):s.leave(e,()=>{en(e,!1)}):en(e,t))},beforeUnmount(e,{value:t}){en(e,t)}};function en(e,t){e.style.display=t?e[qn]:"none",e[Ci]=!t}const Xa=Symbol(""),Ja=/(?:^|;)\s*display\s*:/;function Za(e,t,n){const s=e.style,o=ye(n);let r=!1;if(n&&!o){if(t)if(ye(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[Xa];i&&(n+=";"+i),s.cssText=n,r=Ja.test(n)}}else t&&e.removeAttribute("style");qn in e&&(e[qn]=r?s.display:"",e[Ci]&&(s.display="none"))}const Wo=/\s*!important$/;function Fn(e,t,n){if(z(n))n.forEach(s=>Fn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Qa(e,t);Wo.test(n)?e.setProperty(St(s),n.replace(Wo,""),"important"):e[s]=n}}const qo=["Webkit","Moz","ms"],xs={};function Qa(e,t){const n=xs[t];if(n)return n;let s=Ke(t);if(s!=="filter"&&s in e)return xs[t]=s;s=es(s);for(let o=0;o<qo.length;o++){const r=qo[o]+s;if(r in e)return xs[t]=r}return t}const Go="http://www.w3.org/1999/xlink";function Yo(e,t,n,s,o,r=Yi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Go,t.slice(6,t.length)):e.setAttributeNS(Go,t,n):n==null||r&&!gr(n)?e.removeAttribute(t):e.setAttribute(t,r?"":ot(n)?String(n):n)}function zo(e,t,n,s,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?wi(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=gr(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 Rt(e,t,n,s){e.addEventListener(t,n,s)}function ec(e,t,n,s){e.removeEventListener(t,n,s)}const Xo=Symbol("_vei");function tc(e,t,n,s,o=null){const r=e[Xo]||(e[Xo]={}),i=r[t];if(s&&i)i.value=s;else{const[l,a]=nc(t);if(s){const u=r[t]=rc(s,o);Rt(e,l,u,a)}else i&&(ec(e,l,i,a),r[t]=void 0)}}const Jo=/(?:Once|Passive|Capture)$/;function nc(e){let t;if(Jo.test(e)){t={};let s;for(;s=e.match(Jo);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):St(e.slice(2)),t]}let Cs=0;const sc=Promise.resolve(),oc=()=>Cs||(sc.then(()=>Cs=0),Cs=Date.now());function rc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ye(ic(s,n.value),t,5,[s])};return n.value=e,n.attached=oc(),n}function ic(e,t){if(z(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 Zo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,lc=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?za(e,s,i):t==="style"?Za(e,n,s):Xn(t)?Ws(t)||tc(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ac(e,t,s,i))?(zo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Yo(e,t,s,i,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ye(s))?zo(e,Ke(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Yo(e,t,s,i))};function ac(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Zo(t)&&Q(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 Zo(t)&&ye(n)?!1:t in e}const Si=new WeakMap,Ei=new WeakMap,Gn=Symbol("_moveCb"),Qo=Symbol("_enterCb"),cc=e=>(delete e.props.mode,e),uc=cc({name:"TransitionGroup",props:xe({},Wa,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ao(),s=Fl();let o,r;return Qr(()=>{if(!o.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!mc(o[0].el,n.vnode.el,i)){o=[];return}o.forEach(dc),o.forEach(pc);const l=o.filter(hc);js(n.vnode.el),l.forEach(a=>{const u=a.el,c=u.style;Qe(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,vt(u,i))};u.addEventListener("transitionend",f)}),o=[]}),()=>{const i=le(e),l=qa(i);let a=i.tag||ge;if(o=[],r)for(let u=0;u<r.length;u++){const c=r[u];c.el&&c.el instanceof Element&&(o.push(c),vn(c,Os(c,l,s,n)),Si.set(c,{left:c.el.offsetLeft,top:c.el.offsetTop}))}r=t.default?Jr(t.default()):[];for(let u=0;u<r.length;u++){const c=r[u];c.key!=null&&vn(c,Os(c,l,s,n))}return _e(a,null,r)}}}),fc=uc;function dc(e){const t=e.el;t[Gn]&&t[Gn](),t[Qo]&&t[Qo]()}function pc(e){Ei.set(e,{left:e.el.offsetLeft,top:e.el.offsetTop})}function hc(e){const t=Si.get(e),n=Ei.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 mc(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}=xi(s);return r.removeChild(s),i}const Yn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return z(t)?n=>Rn(t,n):t};function gc(e){e.target.composing=!0}function er(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const qt=Symbol("_assign");function tr(e,t,n){return t&&(e=e.trim()),n&&(e=ts(e)),e}const fs={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[qt]=Yn(o);const r=s||o.props&&o.props.type==="number";Rt(e,t?"change":"input",i=>{i.target.composing||e[qt](tr(e.value,n,r))}),(n||r)&&Rt(e,"change",()=>{e.value=tr(e.value,n,r)}),t||(Rt(e,"compositionstart",gc),Rt(e,"compositionend",er),Rt(e,"change",er))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[qt]=Yn(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?ts(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))}},vc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Jn(t);Rt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?ts(zn(i)):zn(i));e[qt](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,Et(()=>{e._assigning=!1})}),e[qt]=Yn(s)},mounted(e,{value:t}){nr(e,t)},beforeUpdate(e,t,n){e[qt]=Yn(n)},updated(e,{value:t}){e._assigning||nr(e,t)}};function nr(e,t){const n=e.multiple,s=z(t);if(!(n&&!s&&!Jn(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=Xi(t,l)>-1}else i.selected=t.has(l);else if(ss(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 yc=["ctrl","shift","alt","meta"],bc={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)=>yc.some(n=>e[`${n}Key`]&&!t.includes(n))},Se=(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=bc[t[i]];if(l&&l(o,t))return}return e(o,...r)}))},wc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Hs=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(o=>{if(!("key"in o))return;const r=St(o.key);if(t.some(i=>i===r||wc[i]===r))return e(o)}))},_c=xe({patchProp:lc},Va);let sr;function xc(){return sr||(sr=Ca(_c))}const Cc=((...e)=>{const t=xc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Ec(s);if(!o)return;const r=t._component;!Q(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,Sc(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t});function Sc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ec(e){return ye(e)?document.querySelector(e):e}let Ti;const ds=e=>Ti=e,$i=Symbol();function Us(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(pn||(pn={}));function Tc(){const e=wr(!0),t=e.run(()=>K({}));let n=[],s=[];const o=Qs({install(r){ds(o),o._a=r,r.provide($i,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 ki=()=>{};function or(e,t,n,s=ki){e.add(t);const o=()=>{e.delete(t)&&s()};return!n&&_r()&&Ji(o),o}function Ht(e,...t){e.forEach(n=>{n(...t)})}const $c=e=>e(),rr=Symbol(),Ss=Symbol();function Bs(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];Us(o)&&Us(s)&&e.hasOwnProperty(n)&&!ve(s)&&!ct(s)?e[n]=Bs(o,s):e[n]=s}return e}const kc=Symbol();function Ac(e){return!Us(e)||!Object.prototype.hasOwnProperty.call(e,kc)}const{assign:yt}=Object;function Mc(e){return!!(ve(e)&&e.effect)}function Pc(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=_l(n.state.value[e]);return yt(c,r,Object.keys(i||{}).reduce((f,m)=>(f[m]=Qs(Fe(()=>{ds(n);const v=n._s.get(e);return i[m].call(v,v)})),f),{}))}return a=Ai(e,u,t,n,s,!0),a}function Ai(e,t,n={},s,o,r){let i;const l=yt({actions:{}},n),a={deep:!0};let u,c,f=new Set,m=new Set,v;const w=s.state.value[e];!r&&!w&&(s.state.value[e]={});let y;function A(H){let M;u=c=!1,typeof H=="function"?(H(s.state.value[e]),M={type:pn.patchFunction,storeId:e,events:v}):(Bs(s.state.value[e],H),M={type:pn.patchObject,payload:H,storeId:e,events:v});const W=y=Symbol();Et().then(()=>{y===W&&(u=!0)}),c=!0,Ht(f,M,s.state.value[e])}const b=r?function(){const{state:M}=n,W=M?M():{};this.$patch(ee=>{yt(ee,W)})}:ki;function S(){i.stop(),f.clear(),m.clear(),s._s.delete(e)}const _=(H,M="")=>{if(rr in H)return H[Ss]=M,H;const W=function(){ds(s);const ee=Array.from(arguments),L=new Set,U=new Set;function F(q){L.add(q)}function J(q){U.add(q)}Ht(m,{args:ee,name:W[Ss],store:D,after:F,onError:J});let G;try{G=H.apply(this&&this.$id===e?this:D,ee)}catch(q){throw Ht(U,q),q}return G instanceof Promise?G.then(q=>(Ht(L,q),q)).catch(q=>(Ht(U,q),Promise.reject(q))):(Ht(L,G),G)};return W[rr]=!0,W[Ss]=M,W},k={_p:s,$id:e,$onAction:or.bind(null,m),$patch:A,$reset:b,$subscribe(H,M={}){const W=or(f,H,M.detached,()=>ee()),ee=i.run(()=>qe(()=>s.state.value[e],L=>{(M.flush==="sync"?c:u)&&H({storeId:e,type:pn.direct,events:v},L)},yt({},a,M)));return W},$dispose:S},D=rs(k);s._s.set(e,D);const oe=(s._a&&s._a.runWithContext||$c)(()=>s._e.run(()=>(i=wr()).run(()=>t({action:_}))));for(const H in oe){const M=oe[H];if(ve(M)&&!Mc(M)||ct(M))r||(w&&Ac(M)&&(ve(M)?M.value=w[H]:Bs(M,w[H])),s.state.value[e][H]=M);else if(typeof M=="function"){const W=_(M,H);oe[H]=W,l.actions[H]=M}}return yt(D,oe),yt(le(D),oe),Object.defineProperty(D,"$state",{get:()=>s.state.value[e],set:H=>{A(M=>{yt(M,H)})}}),s._p.forEach(H=>{yt(D,i.run(()=>H({store:D,app:s._a,pinia:s,options:l})))}),w&&r&&n.hydrate&&n.hydrate(D.$state,w),u=!0,c=!0,D}function Oc(e,t,n){let s;const o=typeof t=="function";s=o?n:t;function r(i,l){const a=Pl();return i=i||(a?Ct($i,null):null),i&&ds(i),i=Ti,i._s.has(e)||(o?Ai(e,t,s,i):Pc(e,s,i)),i._s.get(e)}return r.$id=e,r}const Tt=Oc("sessions",()=>{const e=K([]),t=Fe(()=>[...e.value].sort((U,F)=>{if(!U.alias)return F.alias?1:0;if(!F.alias)return-1;const J=U.alias.toLowerCase(),G=F.alias.toLowerCase();return J<G?-1:J>G?1:0})),n=K([]),s=K(null),o=K(!1),r=K(!1),i=K(""),l=K(0);let a=null,u=null,c=1e3;async function f(U,F={}){const J=await fetch(U,F);if(J.status===401&&(r.value=!1),!J.ok){const G=await J.json().catch(()=>({}));throw Object.assign(new Error(G.error||`Request failed (${J.status})`),{status:J.status})}return J}async function m(U,F=!1){const G=await(await f(`/api/sessions/${encodeURIComponent(U)}/root`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repin:F})})).json(),q=e.value.find(ne=>ne.name===U);return q&&(q.root=G.root),G.root}function v(){l.value++}async function w(){try{const F=await(await fetch("/api/auth/status")).json();i.value=typeof F.instance?.name=="string"?F.instance.name:"",o.value=!!F.authRequired,r.value=!!F.authenticated}catch{r.value=!1}return r.value}async function y(U){const F=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:U})});if(!F.ok){const J=await F.json().catch(()=>({}));throw new Error(J.error||"Login failed")}r.value=!0}async function A(){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 b(){const U=await fetch("/api/sessions");if(U.status===401){r.value=!1;return}const F=await U.json();e.value=F.sessions}async function S(){const F=await(await fetch("/api/sessions/shells")).json();n.value=F.shells}async function _(U,F){const J=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:U,shell:F})});if(!J.ok){const q=await J.json();throw new Error(q.error)}const G=await J.json();s.value=G.name,await b()}async function k(U){const F=await fetch(`/api/sessions/${U}/stop`,{method:"POST"});if(!F.ok){const J=await F.json();throw new Error(J.error)}await b()}async function D(U){const F=await fetch(`/api/sessions/${U}/restart`,{method:"POST"});if(!F.ok){const J=await F.json();throw new Error(J.error)}await b()}async function X(U,F){const J=await fetch(`/api/sessions/${U}/alias`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:F})});if(!J.ok){const G=await J.json();throw new Error(G.error)}await b()}async function oe(U){const F=await fetch(`/api/sessions/${U}`,{method:"DELETE"});if(!F.ok){const J=await F.json();throw new Error(J.error)}s.value===U&&(s.value=null),await b()}function H(U){s.value=U}function M(){a&&(a.onclose=null,a.close());const U=location.protocol==="https:"?"wss":"ws";a=new WebSocket(`${U}://${location.host}/ws`),a.onmessage=F=>{let J=null,G=null;try{({event:J,data:G}=JSON.parse(F.data))}catch{}if(J==="session:title"&&G&&G.name){const q=e.value.find(ne=>ne.name===G.name);if(q){q.title=G.title,q.command=G.command,q.outputActive=!!G.outputActive;return}}if(J==="session:root"&&G?.name){const q=e.value.find(ne=>ne.name===G.name);q&&(q.root=G.root);return}b()},a.onopen=()=>{c=1e3,b()},a.onclose=()=>{W()}}function W(){u||(u=setTimeout(()=>{u=null,M(),c=Math.min(c*2,3e4)},c))}function ee(){b(),S(),M()}async function L({command:U,name:F}){return _(F||null,U||null)}return{sessions:e,sortedSessions:t,shells:n,current:s,authRequired:o,authenticated:r,instanceName:i,fileRevision:l,apiRequest:f,pinRoot:m,refreshFiles:v,init:ee,checkAuth:w,login:y,logout:A,fetchSessions:b,createSession:_,create:L,stopSession:k,restartSession:D,setAlias:X,removeSession:oe,select:H}}),Ve=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},Ic=["title"],Rc={class:"card-content"},Lc={class:"card-top"},Dc=["onKeydown"],Fc={class:"session-name"},Nc={key:0,class:"alias-text"},jc={key:1,class:"real-name"},Hc={key:2},Uc={key:0,class:"confirm-bar"},Bc={key:1,class:"session-info"},Kc=["title"],Vc={class:"status-text"},Wc={__name:"SessionCard",props:{session:Object,active:Boolean,collapsed:Boolean},setup(e){const t=e,n=Tt(),s=Ct("toast"),o=K(!1),r=K(!1),i=K(""),l=K(null),a=Fe(()=>{const b=t.session.alias?`${t.session.alias} (${t.session.name})`:t.session.name;return t.session.pid?`${b} · PID ${t.session.pid}`:b}),u=Fe(()=>t.session.title||t.session.command||"");function c(b,S="info"){s?.value?.show(b,S)}function f(b,S){b.stopPropagation(),o.value=!0}async function m(b,S){b.stopPropagation();try{await n.removeSession(S)}catch(_){console.error(_)}o.value=!1}function v(b){b.stopPropagation(),o.value=!1}function w(b){b.stopPropagation(),i.value=t.session.alias||"",r.value=!0,Et(()=>l.value?.focus())}async function y(b){if(b&&b.stopPropagation(),!!r.value){r.value=!1;try{await n.setAlias(t.session.name,i.value.trim())}catch(S){c(S.message||"Failed to set alias","error")}}}function A(b){b.stopPropagation(),r.value=!1}return(b,S)=>(R(),B("div",{class:Be(["session-card",{active:e.active,collapsed:e.collapsed}]),title:a.value},[C("div",{class:Be(["status-indicator",[e.session.status,{"output-active":e.session.status==="running"&&e.session.outputActive}]])},null,2),nt(C("div",Rc,[C("div",Lc,[r.value?nt((R(),B("input",{key:0,ref_key:"aliasInput",ref:l,"onUpdate:modelValue":S[0]||(S[0]=_=>i.value=_),class:"alias-input",type:"text",maxlength:"100",placeholder:"Alias (Enter to save, Esc to cancel)",onClick:S[1]||(S[1]=Se(()=>{},["stop"])),onKeydown:[S[2]||(S[2]=Se(()=>{},["stop"])),S[3]||(S[3]=Hs(Se(_=>y(_),["prevent"]),["enter"])),Hs(Se(A,["prevent"]),["esc"])],onBlur:y},null,40,Dc)),[[fs,i.value]]):(R(),B(ge,{key:1},[C("div",Fc,[e.session.alias?(R(),B("span",Nc,te(e.session.alias),1)):se("",!0),e.session.alias?(R(),B("span",jc,te(e.session.name),1)):(R(),B("span",Hc,te(e.session.name),1))]),o.value?se("",!0):(R(),B("button",{key:0,class:"close-btn",title:"Set alias",onClick:S[4]||(S[4]=_=>w(_))},[...S[8]||(S[8]=[C("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[C("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})],-1)])])),o.value?se("",!0):(R(),B("button",{key:1,class:"close-btn",title:"Delete session",onClick:S[5]||(S[5]=_=>f(_,e.session.name))},[...S[9]||(S[9]=[C("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[C("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),C("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]))],64))]),o.value?(R(),B("div",Uc,[S[10]||(S[10]=C("span",{class:"confirm-text"},"Delete?",-1)),C("button",{class:"confirm-yes",onClick:S[6]||(S[6]=_=>m(_,e.session.name))},"Yes"),C("button",{class:"confirm-no",onClick:S[7]||(S[7]=_=>v(_))},"No")])):(R(),B("div",Bc,[C("span",{class:"pane-title",title:u.value},te(u.value),9,Kc),C("span",Vc,te(e.session.status),1)]))],512),[[sn,!e.collapsed]])],10,Ic))}},qc=Ve(Wc,[["__scopeId","data-v-0e38e5ff"]]),Gc="modulepreload",Yc=function(e){return"/"+e},ir={},co=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=Yc(u),u in ir)return;ir[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":Gc,c||(m.as="script"),m.crossOrigin="",m.href=u,l&&m.setAttribute("nonce",l),document.head.appendChild(m),c)return new Promise((v,w)=>{m.addEventListener("load",v),m.addEventListener("error",()=>w(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",lr=e=>e.split("/").map(encodeURIComponent).join("/");function ar(e){const t=[];for(const n of e.split("/"))!n||n==="."||(n===".."?t.pop():t.push(n));return`/${t.join("/")}`}function cr(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=ar(n),o=`${Es}${lr(t)}`,r=e.startsWith("/")?`${lr(s).replace(/\/$/,"")}${e}`:e;let i,l,a;try{i=new URL(r,o),l=ar(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 zc(e){return e.normalize("NFC").trim().toLowerCase().replace(/[^\p{L}\p{N}\p{M}_\s-]/gu,"").replace(/\s/g,"-")||"section"}function Xc(e){return`<script>(()=>{
|
|
3
|
+
const token=${JSON.stringify(e).replace(/</g,"\\u003c")};
|
|
4
|
+
const position=()=>({left:window.scrollX,top:window.scrollY});
|
|
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
|
+
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
|
+
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 uo(e,t){return`${e.replace(/\/$/,"")}/${t}`}function Mi(e,t=!1,n=null){return`/api/files/content?${new URLSearchParams({path:e,...t?{download:"1"}:{},...n?{root:n}:{}})}`}function Pi(e){return e.includes(".")?e.split(".").pop().toLowerCase():""}function gd(e){const t=Pi(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 Jc(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KiB`:`${(e/(1024*1024)).toFixed(1)} MiB`}async function vd(e,t){const{default:n}=await co(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:Pi(t)==="tsv"?" ":",",skipEmptyLines:"greedy"});return s.errors.length?null:s.data}async function yd(e,t=null){const{default:n}=await co(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(A=>["text","code_inline","emoji"].includes(A.type)).map(A=>A.content).join("")||f.content,v=zc(m);let w=v,y=0;for(;o.has(w);)w=`${v}-${++y}`;return o.add(w),i[l].attrSet("id",w),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 v=cr(m,t.path,t.root);f.attrSet("href",v.kind==="external"?v.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=cr(f.attrGet("src")||"",t.path,t.root);f.attrSet("src",m.kind==="external"?m.url:Mi(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 bd(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?Xc(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 Ts=Object.freeze({M:"已修改",A:"已新增(已暂存)",U:"未跟踪的新文件",D:"已删除",R:"已重命名",C:"存在合并冲突"});function Oi(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 wd(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"},Qc=["aria-expanded","aria-label","title"],eu={class:"chevron","aria-hidden":"true"},tu={class:"file-icon","aria-hidden":"true"},nu=["title"],su={key:1,class:"git-dot",title:"包含 Git 改动","aria-hidden":"true"},ou=["aria-label"],ru={key:0,role:"group",class:"tree-children"},iu={key:0,role:"none",class:"tree-status"},lu={key:1,role:"none",class:"tree-status error"},au={key:2,role:"none",class:"tree-status"},cu={__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=Tt(),r=K(!1),i=K([]),l=K(!1),a=K(""),u=K(null),c=Fe(()=>Oi(i.value,n.entry.path,n.changes)),f=Fe(()=>{const b=n.entry;return b.virtual?`${b.path}
|
|
10
|
+
已从工作区删除,可查看 Git Diff`:`${b.path}
|
|
11
|
+
${Jc(b.size)} · ${new Date(b.mtime).toLocaleString()}${b.type==="symlink"?`
|
|
12
|
+
Symbolic link — target is not followed`:""}${b.gitStatus?`
|
|
13
|
+
Git:${Ts[b.gitStatus]}`:""}${b.gitChange?.originalPath?`
|
|
14
|
+
原路径:${b.gitChange.originalPath}`:""}`});let m=null;async function v(){if(m?.abort(),n.entry.virtual){i.value=[],l.value=!1,a.value="";return}const b=new AbortController;m=b,l.value=!0,a.value="";try{const _=await(await o.apiRequest(`/api/files?${new URLSearchParams({path:n.entry.path})}`,{signal:b.signal})).json();b.signal.aborted||(i.value=_.entries)}catch(S){b.signal.aborted||(a.value=S.message)}finally{b.signal.aborted||(l.value=!1)}}async function w(){n.entry.type==="directory"?(r.value=!r.value,r.value&&await v()):n.entry.type==="file"&&s("preview",n.entry)}function y(b){if(b.preventDefault(),n.entry.virtual)return;const S=u.value.getBoundingClientRect();s("menu",{entry:n.entry,x:b.clientX||S.left,y:b.clientY||S.bottom,trigger:u.value})}async function A(b){if(b.target!==u.value)return;const S=[...u.value.closest('[role="tree"]').querySelectorAll("[data-tree-row]")],_=S.indexOf(u.value);["ArrowDown","ArrowUp","Home","End"].includes(b.key)?(b.preventDefault(),S[b.key==="Home"?0:b.key==="End"?S.length-1:Math.max(0,Math.min(S.length-1,_+(b.key==="ArrowDown"?1:-1)))]?.focus()):b.key==="ArrowRight"&&n.entry.type==="directory"?(b.preventDefault(),r.value?(await Et(),u.value.parentElement.querySelector('[role="group"] [data-tree-row]')?.focus()):await w()):b.key==="ArrowLeft"?(b.preventDefault(),r.value?r.value=!1:u.value.parentElement.parentElement.closest("li")?.querySelector("[data-tree-row]")?.focus()):b.key==="Enter"||b.key===" "?(b.preventDefault(),w()):b.key==="ContextMenu"||b.shiftKey&&b.key==="F10"?y(b):!n.entry.virtual&&(b.key==="F2"||b.key==="Delete")&&(b.preventDefault(),s("operation",{kind:b.key==="F2"?"rename":"delete",entry:n.entry}))}return qe(()=>o.fileRevision,()=>{r.value&&v()}),qe(()=>n.entry.virtual,()=>{r.value&&v()}),Nt(()=>m?.abort()),(b,S)=>{const _=Ql("FileTreeItem",!0);return R(),B("li",Zc,[C("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?`,${ue(Ts)[e.entry.gitStatus]}`:e.entry.hasGitChanges?",包含 Git 改动":""}`,title:f.value,onClick:w,onContextmenu:y,onKeydown:A},[C("span",eu,te(e.entry.type==="directory"?r.value?"⌄":"›":""),1),C("span",tu,te(e.entry.type==="directory"?"▱":e.entry.type==="symlink"?"↗":"≡"),1),C("span",{class:Be(["filename",{dotfile:e.entry.name.startsWith("."),deleted:e.entry.virtual}])},te(e.entry.name),3),C("span",{class:Be(["row-end",{"has-menu":!e.entry.virtual,"has-status":e.entry.gitStatus||e.entry.hasGitChanges}])},[e.entry.type!=="directory"&&e.entry.gitStatus?(R(),B("span",{key:0,class:Be(["git-badge",`git-${e.entry.gitStatus}`]),title:ue(Ts)[e.entry.gitStatus],"aria-hidden":"true"},te(e.entry.gitStatus),11,nu)):e.entry.hasGitChanges?(R(),B("span",su,"●")):se("",!0),e.entry.virtual?se("",!0):(R(),B("button",{key:2,class:"more","aria-label":`${e.entry.name} 文件操作`,title:"文件操作",onClick:Se(y,["stop"]),onKeydown:S[0]||(S[0]=Se(()=>{},["stop"]))},"⋯",40,ou))],2)],40,Qc),r.value?(R(),B("ul",ru,[l.value?(R(),B("li",iu,"加载中…")):a.value?(R(),B("li",lu,[Ue(te(a.value)+" ",1),C("button",{onClick:v},"重试")])):c.value.length?se("",!0):(R(),B("li",au,"空文件夹")),(R(!0),B(ge,null,Cn(c.value,k=>(R(),He(_,{key:k.path,entry:k,changes:e.changes,onPreview:S[1]||(S[1]=D=>s("preview",D)),onMenu:S[2]||(S[2]=D=>s("menu",D)),onOperation:S[3]||(S[3]=D=>s("operation",D))},null,8,["entry","changes"]))),128))])):se("",!0)])}}},uu=Ve(cu,[["__scopeId","data-v-5c068d88"]]),fu={id:"operation-title"},du={class:"operation-path"},pu={key:0},hu={key:1},mu=["disabled"],gu={key:2,class:"error",role:"alert"},vu={class:"dialog-actions"},yu=["disabled"],bu=["disabled"],wu={__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=K(null),r=K(null),i=K(n.operation.kind==="rename"?n.operation.entry.name:n.operation.entry.path),l=Fe(()=>({rename:"重命名",move:"移动文件",delete:n.trash==="mv-trash"?"移到废纸篓?":"永久删除?"})[n.operation.kind]);let a;return mt(()=>{a=document.activeElement,o.value.showModal(),r.value?.select()}),Nt(()=>a?.focus()),(u,c)=>(R(),He(zr,{to:"body"},[C("dialog",{ref_key:"dialog",ref:o,class:"file-dialog","aria-labelledby":"operation-title",onCancel:c[3]||(c[3]=Se(f=>!e.busy&&s("close"),["prevent"])),onClick:c[4]||(c[4]=f=>{f.target===o.value&&!e.busy&&s("close")})},[C("form",{onSubmit:c[2]||(c[2]=Se(f=>s("submit",i.value),["prevent"]))},[C("h3",fu,te(l.value),1),C("p",du,te(e.operation.entry.path),1),e.operation.kind==="delete"?(R(),B("p",pu,te(e.trash==="mv-trash"?"文件将移到 ~/.Trash/,可从废纸篓找回。":"文件将永久删除,此操作无法撤销。"),1)):(R(),B("label",hu,[Ue(te(e.operation.kind==="rename"?"新名称":"目标完整路径(含文件名)")+" ",1),nt(C("input",{ref_key:"input",ref:r,"onUpdate:modelValue":c[0]||(c[0]=f=>i.value=f),required:"",disabled:e.busy,autocomplete:"off"},null,8,mu),[[fs,i.value]])])),e.error?(R(),B("p",gu,te(e.error),1)):se("",!0),C("div",vu,[C("button",{type:"button",class:"btn",disabled:e.busy,onClick:c[1]||(c[1]=f=>s("close"))},"取消",8,yu),C("button",{class:Be(["btn",e.operation.kind==="delete"?"delete-btn":"btn-primary"]),disabled:e.busy||!i.value.trim()},te(e.busy?"处理中…":l.value),11,bu)])],32)],544)]))}},_u=Ve(wu,[["__scopeId","data-v-5ceee09a"]]),xu={id:"clipboard-title"},Cu={id:"clipboard-help"},Su=["readonly","aria-label"],Eu={class:"clipboard-actions"},Tu=["disabled"],$u={__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=K(null),r=K(null),i=K(n.text);mt(()=>{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)=>(R(),B("div",{class:"clipboard-overlay",onClick:u[3]||(u[3]=Se(c=>s("close"),["self"])),onKeydown:l},[C("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]=Se(c=>s("paste",i.value),["prevent"]))},[C("h3",xu,te(e.mode==="copy"?"Copy text":"Paste text"),1),C("p",Cu,[u[4]||(u[4]=Ue(" Clipboard access is unavailable. ",-1)),e.mode==="copy"?(R(),B(ge,{key:0},[Ue("Copy the selected text with "+te(e.shortcut)+".",1)],64)):(R(),B(ge,{key:1},[Ue("Paste here with "+te(e.shortcut)+", then click Paste into terminal.",1)],64))]),nt(C("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,Su),[[fs,i.value]]),C("div",Eu,[C("button",{type:"button",class:"btn",onClick:u[1]||(u[1]=c=>s("close"))},te(e.mode==="copy"?"Done":"Cancel"),1),e.mode==="paste"?(R(),B("button",{key:0,class:"btn btn-primary",disabled:!i.value.length}," Paste into terminal ",8,Tu)):se("",!0)])],544)],32))}},Ii=Ve($u,[["__scopeId","data-v-317cb3e2"]]),ku=20,tn=3,Au=1,In=4,Mu=12,Ri=160,Pu=64;function Ou(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:ku;return e.deltaY/s}function Iu({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 v(){if(r()-u>Pu){m();return}for(;i>=tn&&c>0;)if(i-=tn,c--,n(l,a)===!1){m();return}f===null&&c<In&&(f=s(()=>{f=null,c=In,i>=tn&&v()}))}return{wheel(w){const y=Ou(w,e(),t());if(!y||!Number.isFinite(y))return!1;const A=r(),b=Math.sign(y);return(b!==l||u===null||A-u>Ri||A<u)&&(i=tn-Au),l=b,u=A,a=w,i=Math.min(i+Math.abs(y),Mu*tn),v(),!0},cancel:m}}function Ru({doc:e,terminal:t}){const n=e.defaultView,s=t.element;if(!n?.WheelEvent||!s?.addEventListener)return()=>{};const o=[];function r(y,A,b,S={capture:!0}){y.addEventListener(A,b,S),o.push(()=>y.removeEventListener(A,b,S))}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,v=-1/0;const w=Iu({getRowHeight:()=>{const y=n.performance.now();return(m!==t.rows||y-v>=Ri)&&(f=c.getBoundingClientRect().height/(t.rows||1),m=t.rows,v=y),f},getRows:()=>t.rows,requestFrame:y=>n.requestAnimationFrame(y),cancelFrame:y=>n.cancelAnimationFrame(y),now:()=>n.performance.now(),emitStep:(y,A)=>s.isConnected===!1||e.hidden||!l()||u()!==a?!1:(c.dispatchEvent(new n.WheelEvent("wheel",{deltaY:y,deltaMode:1,clientX:A.clientX,clientY:A.clientY,bubbles:!0,cancelable:!0,view:n})),!0)});r(s,"wheel",y=>{if(!y.isTrusted)return;const A=Math.abs(y.deltaX)>Math.abs(y.deltaY);if(y.defaultPrevented||y.ctrlKey||y.metaKey||y.altKey||y.shiftKey||A||!l()){w.cancel();return}u()!==a&&w.cancel(),a=u(),w.wheel(y)&&(y.preventDefault(),y.stopImmediatePropagation())},{capture:!0,passive:!1});for(const y of["keydown","pointerdown","touchstart","paste","visibilitychange"])r(e,y,w.cancel);return r(n,"blur",w.cancel),r(n,"resize",()=>{v=-1/0,w.cancel()}),()=>{w.cancel(),o.forEach(y=>y())}}function Nn(e){return!!(e&&(Array.from(e.types||[]).includes("Files")||Array.from(e.items||[]).some(t=>t.kind==="file")||e.files?.length))}function Li(e){const t=Array.from(e?.items||[]).filter(o=>o.kind==="file"),n=[];let s=!1;for(const o of t){if(o.webkitGetAsEntry?.()?.isDirectory){s=!0;continue}const r=o.getAsFile?.();r&&n.push(r)}return t.length||n.push(...Array.from(e?.files||[])),{files:n,hasDirectories:s}}function Lu(e,t=new Date){const n={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/bmp":"bmp","image/tiff":"tiff","image/svg+xml":"svg","image/avif":"avif","image/heic":"heic","image/heif":"heif"},s=t.toISOString().replace(/[-:.]/g,"");return e.map((o,r)=>{if(o.name&&!(o.type.startsWith("image/")&&/^image(?:\.[a-z0-9]+)?$/i.test(o.name)))return o;const i=n[o.type];return new File([o],`clipboard-${s}-${r+1}${i?`.${i}`:""}`,{type:o.type,lastModified:o.lastModified})})}function Di({element:e,onFiles:t,onDragChange:n=()=>{},ignore:s=()=>!1}){let o=0;const r=[],i={capture:!0};function l(c,f){e.addEventListener(c,f,i),r.push(()=>e.removeEventListener(c,f,i))}function a(c){c.preventDefault(),c.stopImmediatePropagation()}function u(){o=0,n(!1)}for(const c of["dragenter","dragover"])l(c,f=>{s(f)||!Nn(f.dataTransfer)||(a(f),c==="dragenter"&&o++,f.dataTransfer.dropEffect="copy",n(!0))});return l("dragleave",c=>{s(c)||!Nn(c.dataTransfer)||--o<=0&&u()}),l("dragend",u),l("drop",c=>{if(s(c)||!Nn(c.dataTransfer))return;a(c),u();const{files:f,hasDirectories:m}=Li(c.dataTransfer);t(f,{source:"drop",hasDirectories:m})}),()=>{r.forEach(c=>c()),u()}}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 Du=10,Fu=.85,ur=.05,Nu=20;function ju(e,t){return Math.abs(t)>=Du&&Math.abs(t)>Math.abs(e)}function Hu({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:Nu}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(v=>v.identifier===s.id);if(!u)return;const c=a.timeStamp??Date.now();if(!s.active){if(!ju(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)>ur){o=!0;let c=s.velocity,f=s.lastTime;const m=v=>{if(!o)return;const w=Math.max((v??Date.now())-f,1);if(!Number.isFinite(w)){o=!1;return}if(f=v??Date.now(),c*=Math.pow(Fu,w/16),Math.abs(c)<ur){o=!1;return}l(c*w),n(m)};n(m)}s=null}},cancel(){o=!1,s=null,r=0}}}function Uu({doc:e,terminal:t,isMac:n,getCopyText:s,onCopy:o,onContextMenu:r,onDismiss:i,onInput:l,onSelection:a,onTmuxCopy:u,onFiles:c,onDragChange:f}){const m=[];function v(_,k,D={capture:!0}){e.addEventListener(_,k,D),m.push(()=>e.removeEventListener(_,k,D))}function w(_){_.preventDefault(),_.stopImmediatePropagation()}for(const _ of["pointerdown","pointerup","mousedown","mouseup","auxclick"])v(_,k=>{k.button===2||n&&k.button===0&&k.ctrlKey?(k.stopImmediatePropagation(),k.shiftKey||k.preventDefault()):_==="mousedown"&&(i(),k.button===0&&l())});v("contextmenu",_=>{if(_.shiftKey){i();return}w(_),r(_)}),m.push(Ru({doc:e,terminal:t})),c&&m.push(Di({element:e,onDragChange:f,onFiles:(_,k)=>{i(),c(_,k)}}));const y=Hu({getRowHeight:()=>t.element?t.element.getBoundingClientRect().height/(t.rows||1):0,emitWheel:(_,k,D)=>{const X=t.element?.querySelector(".xterm-screen")||t.element;!X||!e.defaultView||X.dispatchEvent(new e.defaultView.WheelEvent("wheel",{deltaY:_,deltaMode:0,clientX:k,clientY:D,bubbles:!0,cancelable:!0}))}}),A={capture:!0,passive:!1};v("touchstart",_=>y.touchStart(_),A),v("touchmove",_=>y.touchMove(_),A),v("touchend",_=>y.touchEnd(_),A),v("touchcancel",()=>y.cancel(),A),m.push(()=>y.cancel()),v("copy",_=>{const k=s();!k||!_.clipboardData||(_.clipboardData.setData("text/plain",k),w(_))}),v("paste",_=>{if(!_.clipboardData)return;if(c&&Nn(_.clipboardData)){const{files:D,hasDirectories:X}=Li(_.clipboardData);w(_),i(),c(D,{source:"paste",hasDirectories:X});return}const k=_.clipboardData.getData("text/plain");w(_),i(),l(),t.paste(k)}),v("keydown",_=>{const k=_.key.toLowerCase(),D=!_.altKey&&(n&&_.metaKey&&!_.ctrlKey&&k==="c"||_.ctrlKey&&_.shiftKey&&!_.metaKey&&k==="c"),X=!_.altKey&&(n&&_.metaKey&&k==="v"||_.ctrlKey&&k==="v");D?(w(_),o()):X?_.stopImmediatePropagation():(i(),["Shift","Control","Alt","Meta"].includes(_.key)||l())});const b=t.onSelectionChange(()=>a(t.getSelection()));m.push(()=>b.dispose());const S=t.parser.registerOscHandler(52,_=>{const k=_.indexOf(";");if(k<0)return!1;const D=_.slice(k+1);if(D==="?")return!1;try{const X=Uint8Array.from(atob(D),oe=>oe.charCodeAt(0));u(new TextDecoder().decode(X))}catch{}return!0});return m.push(()=>S.dispose()),()=>m.forEach(_=>_())}const Bu={class:"file-panel","aria-label":"文件管理器"},Ku={class:"file-toolbar"},Vu=["title"],Wu=["disabled"],qu=["disabled"],Gu=["title"],Yu={key:1,class:"panel-hint",role:"status"},zu={key:2,class:"panel-hint"},Xu={key:3,class:"panel-hint"},Ju={key:4,class:"panel-hint error",role:"alert"},Zu={key:5,class:"panel-hint git-warning",role:"status"},Qu={key:6,class:"panel-hint",role:"status"},ef=["aria-label","aria-busy"],tf={key:0,role:"none",class:"panel-hint"},nf=["disabled"],sf=["disabled"],of={__name:"FilePanel",setup(e){const t=Bl(()=>co(()=>import("./PreviewDialog-Ci4fyUxf.js"),__vite__mapDeps([2,3]))),n=Tt(),s=Ct("toast"),o=Fe(()=>n.sessions.find(O=>O.name===n.current)),r=K([]),i=K({available:!1,changes:[]}),l=K(""),a=Fe(()=>Oi(r.value,o.value?.root||"/",i.value.changes)),u=K(null),c=K(!1),f=K(!1),m=K(""),v=K(null),w=K(null),y=K(null),A=K(null),b=K(""),S=K(!1),_=K(!1),k=K(null);let D=null,X=0;const oe=/Mac|iPhone|iPad/.test(navigator.platform)?"⌘C":"Ctrl+C";function H(O,N="info",re){s?.value?.show(O,N,re)}async function M(){const O=o.value,N=++X;if(!O||O.root||O.status!=="running"){f.value=!1;return}f.value=!0,m.value="";try{await n.pinRoot(O.name)}catch(re){N===X&&o.value?.name===O.name&&(m.value=re.message)}finally{N===X&&(f.value=!1)}}async function W(){D?.abort();const O=new AbortController;D=O;const N=o.value?.root;if(!N){r.value=[],u.value=null,c.value=!1;return}c.value=!0,m.value="";const re=(async()=>{try{const Me=await(await n.apiRequest(`/api/git/status?${new URLSearchParams({root:N})}`,{signal:O.signal})).json();O.signal.aborted||(i.value=Me,l.value=Me.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":"")}catch(me){O.signal.aborted||(l.value=`Git 状态更新失败,已有标记可能已过时:${me.message}`)}})();try{const Me=await(await n.apiRequest(`/api/files?${new URLSearchParams({path:N})}`,{signal:O.signal})).json();O.signal.aborted||(r.value=Me.entries,u.value=Me.trash)}catch(me){O.signal.aborted||(m.value=me.message)}finally{await re,O.signal.aborted||(c.value=!1)}}function ee(O){i.value=O,l.value=O.reason==="git-unavailable"?"未安装 Git,无法显示改动标记。":""}async function L(){const O=o.value;if(!(!O||O.status!=="running"))try{await n.pinRoot(O.name,!0),n.refreshFiles(),H("已将文件根目录固定到 shell 当前目录。","success")}catch(N){H(N.message,"error")}}async function U(O){w.value=O,await Et(),!(!w.value||!y.value)&&(w.value.x=Math.max(8,Math.min(O.x,window.innerWidth-y.value.offsetWidth-8)),w.value.y=Math.max(8,Math.min(O.y,window.innerHeight-y.value.offsetHeight-8)),y.value.querySelector("button:not(:disabled)")?.focus())}function F(O=!1){O&&w.value?.trigger?.focus(),w.value=null}function J(O){if(["Escape","Tab"].includes(O.key))O.key==="Escape"&&O.preventDefault(),F(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(O.key)){O.preventDefault();const N=[...y.value.querySelectorAll("button:not(:disabled)")],re=N.indexOf(document.activeElement),me=O.key==="Home"?0:O.key==="End"?N.length-1:(re+(O.key==="ArrowDown"?1:-1)+N.length)%N.length;N[me]?.focus()}}function G(O,N=w.value?.entry){F(!0),!(!N||N.virtual||S.value||O==="delete"&&!u.value)&&(b.value="",A.value={kind:O,entry:N})}async function q(O){if(S.value)return;const{kind:N,entry:re}=A.value;S.value=!0,b.value="";try{if(N==="delete")await n.apiRequest(`/api/files?${new URLSearchParams({path:re.path})}`,{method:"DELETE"});else{if(N==="rename"&&(!O||O==="."||O===".."||O.includes("/")||O.includes("\0")))throw new Error("请输入不含 / 的有效文件名");const me=N==="rename"?uo(re.path.slice(0,re.path.lastIndexOf("/"))||"/",O):O;await n.apiRequest("/api/files",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:re.path,to:me})})}A.value=null,n.refreshFiles(),H(N==="delete"?u.value==="mv-trash"?"已移到废纸篓。":"已永久删除。":"文件已更新。","success")}catch(me){b.value=me.message}finally{S.value=!1}}function ne(O=w.value?.entry){if(F(!0),!O)return;const N=document.createElement("a");N.href=Mi(O.path,!0),N.download=O.name,document.body.append(N),N.click(),N.remove()}async function be(O=w.value?.entry){F(!0),await Ks(O.path)?H("路径已复制。","success"):k.value=O.path}async function Ne(O=w.value?.entry){const N=o.value?.root;if(F(!0),!(!O||!N||_.value)){_.value=!0;try{const me=await(await n.apiRequest("/api/files/archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:O.path,root:N})})).json();n.refreshFiles(),H(`已生成:${me.path}`,"success",{action:{label:"下载",onClick:()=>ne({path:me.path,name:me.path.split("/").pop()})}})}catch(re){H(re.message,"error")}finally{_.value=!1}}}function we(O){y.value?.contains(O.target)||F()}return qe(()=>[o.value?.name,o.value?.status],()=>{m.value="",M()},{immediate:!0}),qe(()=>[o.value?.name,o.value?.root],()=>{r.value=[],v.value=null,F(),i.value={available:!1,changes:[]},l.value="",S.value||(A.value=null),W()},{immediate:!0}),qe(()=>n.fileRevision,W),mt(()=>{document.addEventListener("pointerdown",we),window.addEventListener("resize",F)}),Nt(()=>{X++,D?.abort(),document.removeEventListener("pointerdown",we),window.removeEventListener("resize",F)}),(O,N)=>(R(),B("section",Bu,[C("div",Ku,[C("span",{class:"project-name",title:o.value?.root||""},te(o.value?.alias||o.value?.name||"文件"),9,Vu),C("button",{disabled:!o.value?.root||c.value,title:"刷新目录和 Git 标记","aria-label":"刷新目录和 Git 标记",onClick:N[0]||(N[0]=re=>ue(n).refreshFiles())},"↻",8,Wu),C("button",{disabled:o.value?.status!=="running",title:"重新固定到 shell 当前目录","aria-label":"重新固定到 shell 当前目录",onClick:L},"📍",8,qu)]),o.value?.root?(R(),B("div",{key:0,class:"root-path",title:o.value.root},te(o.value.root),9,Gu)):se("",!0),_.value?(R(),B("div",Yu,"正在生成 ZIP…")):se("",!0),o.value?!o.value.root&&!c.value&&!f.value&&!m.value?(R(),B("div",Xu,"启动 session 后自动确定根目录")):se("",!0):(R(),B("div",zu,"选择一个会话以浏览文件。")),m.value?(R(),B("div",Ju,[Ue(te(m.value)+" ",1),C("button",{onClick:N[1]||(N[1]=re=>o.value?.root?W():M())},"重试")])):se("",!0),l.value?(R(),B("div",Zu,te(l.value),1)):se("",!0),c.value||f.value?(R(),B("div",Qu,"加载中…")):se("",!0),o.value?.root?(R(),B("ul",{key:`${o.value.name}:${o.value.root}`,class:"file-tree",role:"tree","aria-label":o.value.root,"aria-busy":c.value},[(R(!0),B(ge,null,Cn(a.value,re=>(R(),He(uu,{key:re.path,entry:re,changes:i.value.changes,onPreview:N[2]||(N[2]=me=>v.value=me),onMenu:U,onOperation:me=>G(me.kind,me.entry)},null,8,["entry","changes","onOperation"]))),128)),!a.value.length&&!c.value&&!m.value?(R(),B("li",tf,"空文件夹")):se("",!0)],8,ef)):se("",!0),(R(),He(zr,{to:"body"},[w.value?(R(),B("div",{key:0,ref_key:"menuElement",ref:y,class:"file-menu",style:wn({left:`${w.value.x}px`,top:`${w.value.y}px`}),role:"menu","aria-label":"文件操作",onKeydown:J},[w.value.entry.type==="file"?(R(),B("button",{key:0,role:"menuitem",onClick:N[3]||(N[3]=re=>{v.value=w.value.entry,F(!0)})},"预览")):se("",!0),C("button",{role:"menuitem",onClick:N[4]||(N[4]=re=>G("rename"))},[...N[13]||(N[13]=[Ue("重命名 ",-1),C("span",null,"F2",-1)])]),C("button",{role:"menuitem",onClick:N[5]||(N[5]=re=>G("move"))},"移动…"),w.value.entry.type==="file"?(R(),B("button",{key:1,role:"menuitem",onClick:N[6]||(N[6]=re=>ne())},"下载")):se("",!0),w.value.entry.type==="directory"?(R(),B("button",{key:2,role:"menuitem",disabled:_.value,onClick:N[7]||(N[7]=re=>Ne())},"压缩为 ZIP",8,nf)):se("",!0),C("button",{role:"menuitem",onClick:N[8]||(N[8]=re=>be())},"复制路径"),C("button",{class:"danger",role:"menuitem",disabled:!u.value,onClick:N[9]||(N[9]=re=>G("delete"))},te(u.value==="mv-trash"?"移到废纸篓…":"永久删除…"),9,sf)],36)):se("",!0)])),v.value?(R(),He(ue(t),{key:8,entry:v.value,root:o.value.root,changes:i.value.changes,onGitStatus:ee,onClose:N[10]||(N[10]=re=>v.value=null)},null,8,["entry","root","changes"])):se("",!0),A.value?(R(),He(_u,{key:A.value.entry.path+A.value.kind,operation:A.value,trash:u.value,busy:S.value,error:b.value,onClose:N[11]||(N[11]=re=>A.value=null),onSubmit:q},null,8,["operation","trash","busy","error"])):se("",!0),k.value!==null?(R(),He(Ii,{key:10,mode:"copy",text:k.value,shortcut:ue(oe),onClose:N[12]||(N[12]=re=>k.value=null)},null,8,["text","shortcut"])):se("",!0)]))}},rf=Ve(of,[["__scopeId","data-v-771bf310"]]),lf={class:"sidebar-tabs",role:"tablist","aria-label":"侧栏"},af=["aria-selected"],cf=["aria-selected"],uf={class:"sessions-panel",id:"sessions-panel",role:"tabpanel","aria-labelledby":"sessions-tab"},ff={class:"sidebar-header"},df={class:"sidebar-title"},pf={class:"session-list"},hf={key:0,class:"empty-hint"},mf={key:0,id:"files-panel",class:"files-panel",role:"tabpanel","aria-labelledby":"files-tab"},gf={__name:"Sidebar",props:{collapsed:Boolean,mobile:Boolean},emits:["create","expand"],setup(e,{emit:t}){const n=t,s=Tt(),o=K("sessions");function r(i){o.value=i,n("expand")}return(i,l)=>(R(),B("aside",{class:Be(["sidebar",{collapsed:e.collapsed}])},[C("div",lf,[C("button",{id:"sessions-tab",role:"tab","aria-selected":o.value==="sessions","aria-controls":"sessions-panel",onClick:l[0]||(l[0]=a=>r("sessions"))},"会话",8,af),C("button",{id:"files-tab",role:"tab","aria-selected":o.value==="files","aria-controls":"files-panel",onClick:l[1]||(l[1]=a=>r("files"))},"文件",8,cf)]),nt(C("div",uf,[C("div",ff,[nt(C("h2",df,"Sessions",512),[[sn,!e.collapsed]]),C("button",{class:"icon-btn new-session-btn",onClick:l[2]||(l[2]=a=>n("create")),title:"New Session"},[l[3]||(l[3]=C("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"},[C("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),C("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),nt(C("span",null,"New Session",512),[[sn,!e.collapsed]])])]),C("div",pf,[(R(!0),B(ge,null,Cn(ue(s).sortedSessions,a=>(R(),He(qc,{key:a.name,session:a,active:ue(s).current===a.name,collapsed:e.collapsed,onClick:u=>ue(s).select(a.name)},null,8,["session","active","collapsed","onClick"]))),128)),ue(s).sessions.length?se("",!0):nt((R(),B("div",hf,[...l[4]||(l[4]=[C("p",null,"No active sessions",-1),C("p",{class:"sub-hint"},"Create one to get started",-1)])],512)),[[sn,!e.collapsed]])])],512),[[sn,o.value==="sessions"]]),o.value==="files"&&!e.collapsed?(R(),B("div",mf,[_e(rf)])):se("",!0)],2))}},vf=Ve(gf,[["__scopeId","data-v-b8faf56e"]]),yf="/logo.svg",bf=["width","height"],wf={__name:"BrandMark",props:{size:{type:Number,default:32}},setup(e){return(t,n)=>(R(),B("img",{class:"brand-mark",src:yf,width:e.size,height:e.size,alt:"","aria-hidden":"true",draggable:"false"},null,8,bf))}},fo=Ve(wf,[["__scopeId","data-v-f54af403"]]);async function _f({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=uo(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 v=r(),w=()=>v.abort(),y=(A,b)=>{n.removeEventListener("abort",w),A(b)};v.open("POST",`/api/files/upload?${new URLSearchParams({dir:t,filename:a.name})}`),v.setRequestHeader("Content-Type","application/octet-stream"),v.upload.onprogress=A=>{A.lengthComputable&&s({index:l+1,total:e.length,percent:Math.round(A.loaded/A.total*100),filename:a.name})},v.onload=()=>{let A={};try{A=JSON.parse(v.responseText)}catch{}v.status===401&&o(),v.status>=200&&v.status<300&&A.path?y(f,A):y(m,new Error(A.error||`Upload failed (${v.status})`))},v.onerror=()=>y(m,new Error("Network error while uploading")),v.onabort=()=>y(m,new DOMException("Upload cancelled","AbortError")),n.addEventListener("abort",w,{once:!0}),n.aborted?y(m,new DOMException("Upload cancelled","AbortError")):v.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 xf={key:0,class:"terminal-tools","aria-label":"Terminal tools"},Cf=["disabled","title"],Sf=["disabled","title"],Ef=["disabled","title"],Tf=["title"],$f=["value"],kf={key:1,class:"selection-hint"},Af=["src"],Mf={key:2,class:"file-drop-hint",role:"status"},Pf={key:3,class:"welcome__container"},Of={class:"welcome__content"},If={class:"welcome-brand"},Rf={class:"welcome__text"},Lf={class:"highlight"},Df=["disabled"],Ff=["disabled"],Nf={__name:"TerminalView",emits:["create"],setup(e,{emit:t}){const n=Tt(),s=t,o=Ct("toast"),r=K(null),i=K(null),l=K(!1),a=yl(null),u=K(""),c=K(""),f=K(null),m=K(null),v=K(null),w=/Mac|iPhone|iPad/.test(navigator.platform),y=w?"⌘C":"Ctrl+Shift+C",A=w?"⌘V":"Ctrl+Shift+V",b=w?"⌘V":"Ctrl+V",S=w?"Option":"Shift",_=Fe(()=>!!(u.value||c.value));let k=null,D=null,X=null;const oe=K(null),H=K(null),M=K(!1);let W=null,ee=null,L=!1;function U(h){return{name:h.name,root:(h.root?Promise.resolve(h.root):n.pinRoot(h.name)).then(g=>({root:g}),g=>({error:g}))}}function F(){O();const h=be.value;!h||h.status!=="running"||M.value||(ee=U(h),oe.value.click())}async function J(h){const g=h.join(`
|
|
15
|
+
`);await Ks(g)?we("路径已复制。","success"):v.value={mode:"copy",text:g}}async function G(h){const g=Array.from(h.target.files||[]);h.target.value="";const x=ee;ee=null,await ne(g,x)}function q(h,{source:g,hasDirectories:x}){if(O(),l.value=!1,M.value){we("正在上传,请稍后。");return}const E=be.value;if(!E||E.status!=="running"){we("请先选择正在运行的会话。");return}if(x&&we("暂不支持上传文件夹,已忽略文件夹。"),!h.length){x||we("浏览器未提供可读取的文件,请使用 Upload 选择文件。");return}const I=U(E);ne(g==="paste"?Lu(h):h,I)}async function ne(h,g){if(!h.length||!g||M.value)return;M.value=!0,W=new AbortController;const x=W.signal;try{const{root:E,error:I}=await g.root;if(I)throw I;if(x.aborted)return;const P=uo(E,"temp");L||(we("上传目录为项目下的 temp/,可在项目 .gitignore 中加入 temp/。"),L=!0);const T=await _f({files:h,directory:P,signal:x,onProgress:V=>{H.value={...V,session:g.name}},onUnauthorized:()=>{n.authenticated=!1,W?.abort()}});n.refreshFiles();const $=[`${g.name}:已完成 ${T.completed.length} 个、取消 ${T.cancelled.length} 个、失败 ${T.failed.length} 个`,...T.completed.map(V=>`已完成:${V}`),...T.cancelled.map(V=>`已取消:${V}`),...T.failed.map(V=>`失败:${V.path}
|
|
16
|
+
${V.error}`)].join(`
|
|
17
|
+
`);o?.value?.show($,T.failed.length?"error":T.cancelled.length?"info":"success",{duration:0,action:T.completed.length?{label:"复制路径",onClick:()=>J(T.completed)}:void 0})}catch(E){we(E.message,"error")}finally{M.value=!1,H.value=null,W=null}}const be=Fe(()=>n.sessions.find(h=>h.name===n.current)),Ne=Fe(()=>!be.value||be.value.status!=="running"?null:`/terminal/${be.value.name}`);function we(h,g="info"){o?.value?.show(h,g)}function O(h=!1){f.value=null,h&&a.value?.focus()}function N(){return a.value?.getSelection()||c.value}async function re(){O();const h=a.value,g=N();if(!h||!g){we(`Select text first (${S} + drag).`);return}const x=await Ks(g);a.value===h&&(x?(we("Copied to clipboard.","success"),h.focus()):v.value={mode:"copy",text:g})}function me(h,g=a.value){!g||g!==a.value||(c.value="",g.paste(h),g.focus())}async function Me(){O();const h=a.value;if(h)try{if(!navigator.clipboard?.readText)throw new Error("Clipboard unavailable");const g=await navigator.clipboard.readText();me(g,h)}catch{a.value===h&&(v.value={mode:"paste",text:""})}}function $t(){v.value=null,a.value?.focus()}function Xt(h){me(h),$t()}async function En(h){const g=r.value.getBoundingClientRect();f.value={x:g.left+h.clientX,y:g.top+h.clientY},await Et();const x=m.value;!x||!f.value||(f.value.x=Math.max(8,Math.min(f.value.x,window.innerWidth-x.offsetWidth-8)),f.value.y=Math.max(8,Math.min(f.value.y,window.innerHeight-x.offsetHeight-8)),x.querySelector("button:not(:disabled)")?.focus())}function kt(h){if(h.key==="Escape"||h.key==="Tab")h.key==="Escape"&&h.preventDefault(),O(!0);else if(["ArrowDown","ArrowUp","Home","End"].includes(h.key)){h.preventDefault();const g=[...m.value.querySelectorAll("button:not(:disabled)")],x=g.indexOf(document.activeElement),E=h.key==="Home"?0:h.key==="End"?g.length-1:(x+(h.key==="ArrowDown"?1:-1)+g.length)%g.length;g[E]?.focus()}}function Tn(){clearTimeout(X),X=null,k?.(),k=null,a.value=null,u.value="",c.value="",f.value=null,v.value=null,l.value=!1}function d(h){Tn();const g=h.target,x=n.current,E=Date.now()+1e4;function I(){if(r.value!==g)return;const P=g.contentWindow?.term;if(!P){Date.now()<E?X=setTimeout(I,50):we("Terminal clipboard controls could not load. Please reload the page.","error");return}a.value=P,P.options.macOptionClickForcesSelection=!0,u.value=P.getSelection(),k=Uu({doc:g.contentDocument,terminal:P,isMac:w,getCopyText:N,onCopy:re,onContextMenu:En,onDismiss:()=>O(),onInput:()=>{c.value=""},onSelection:T=>{u.value=T,T&&(c.value="")},onTmuxCopy:T=>{c.value=T},onFiles:(T,$)=>{n.current===x&&q(T,$)},onDragChange:T=>{n.current===x&&(l.value=T)}})}I()}function p(h){m.value?.contains(h.target)||O()}return qe(Ne,Tn),mt(()=>{D=Di({element:i.value,onFiles:q,onDragChange:h=>{l.value=h},ignore:()=>!!v.value}),document.addEventListener("pointerdown",p),window.addEventListener("resize",O)}),Nt(()=>{W?.abort(),D?.(),Tn(),document.removeEventListener("pointerdown",p),window.removeEventListener("resize",O)}),(h,g)=>(R(),B("div",{ref_key:"terminalArea",ref:i,class:"terminal-area"},[C("input",{ref_key:"fileInput",ref:oe,type:"file",multiple:"",hidden:"",onChange:G},null,544),be.value||M.value?(R(),B("div",xf,[C("button",{class:"clipboard-btn",disabled:!a.value||!_.value,title:`Copy selected text (${ue(y)})`,onMousedown:g[0]||(g[0]=Se(()=>{},["prevent"])),onClick:re},"Copy",40,Cf),C("button",{class:"clipboard-btn",disabled:!a.value,title:`Paste text from your computer (${ue(A)}); paste images/files inside the terminal with ${ue(b)}`,onMousedown:g[1]||(g[1]=Se(()=>{},["prevent"])),onClick:Me},"Paste",40,Sf),C("button",{class:"clipboard-btn",disabled:be.value?.status!=="running"||M.value,title:`上传到当前会话的 temp/;也可拖入文件或使用 ${ue(b)} 粘贴图片、文件。完成后手动复制路径。`,onClick:F},"Upload",8,Ef),M.value?(R(),B("div",{key:0,class:"upload-progress","aria-live":"polite",title:H.value?`${H.value.session}: ${H.value.filename}`:"准备上传"},[C("span",null,te(H.value?`${H.value.index}/${H.value.total} · ${H.value.percent}%`:"准备上传…"),1),C("progress",{value:H.value?.percent||0,max:"100","aria-label":"上传进度"},null,8,$f),C("button",{class:"clipboard-btn",onClick:g[2]||(g[2]=x=>ue(W)?.abort())},"取消")],8,Tf)):(R(),B("span",kf,te(ue(S))+" + drag to select · "+te(ue(y))+" / "+te(ue(A))+" · 拖入文件 / "+te(ue(b))+" 粘贴图片、文件上传",1))])):se("",!0),Ne.value?(R(),B("iframe",{ref_key:"iframe",ref:r,key:Ne.value,src:Ne.value,class:"terminal-frame",title:"Terminal",allow:"clipboard-read; clipboard-write",onLoad:d},null,40,Af)):se("",!0),l.value?(R(),B("div",Mf,te(M.value?"正在上传,请稍后":be.value?.status==="running"?"松开以上传到当前会话的 temp/":"请先选择正在运行的会话"),1)):se("",!0),Ne.value?se("",!0):(R(),B("div",Pf,[C("div",Of,[C("div",If,[_e(fo,{size:104}),g[6]||(g[6]=C("div",{class:"logo-text"},"ACLI Hub",-1))]),be.value?(R(),B(ge,{key:1},[C("p",Rf,[g[8]||(g[8]=Ue(" Session ",-1)),C("span",Lf,te(be.value.name),1),g[9]||(g[9]=Ue(" is currently stopped. ",-1))]),g[10]||(g[10]=C("p",{class:"sub-text"},"Restart the session to continue.",-1))],64)):(R(),B(ge,{key:0},[g[7]||(g[7]=C("p",{class:"welcome__text"},"No active session selected.",-1)),C("button",{class:"btn btn-primary",onClick:g[3]||(g[3]=x=>s("create"))}," Create First Session ")],64))])])),f.value?(R(),B("div",{key:4,ref_key:"menuElement",ref:m,class:"clipboard-menu",style:wn({left:`${f.value.x}px`,top:`${f.value.y}px`}),role:"menu","aria-label":"Terminal clipboard",onKeydown:kt},[C("button",{role:"menuitem",disabled:!_.value,onMousedown:g[4]||(g[4]=Se(()=>{},["prevent"])),onClick:re},[g[11]||(g[11]=Ue(" Copy ",-1)),C("span",null,te(ue(y)),1)],40,Df),C("button",{role:"menuitem",onMousedown:g[5]||(g[5]=Se(()=>{},["prevent"])),onClick:Me},[g[12]||(g[12]=Ue(" Paste ",-1)),C("span",null,te(ue(A)),1)],32),C("button",{role:"menuitem",disabled:be.value?.status!=="running"||M.value,onClick:F},"Upload files…",8,Ff),g[13]||(g[13]=C("p",null,"Shift + right-click for browser menu",-1))],36)):se("",!0),v.value?(R(),He(Ii,{key:5,mode:v.value.mode,text:v.value.text,shortcut:v.value.mode==="copy"?ue(w)?"⌘C":"Ctrl+C":ue(w)?"⌘V":"Ctrl+V",onClose:$t,onPaste:Xt},null,8,["mode","text","shortcut"])):se("",!0)],512))}},jf=Ve(Nf,[["__scopeId","data-v-dba7ce31"]]),Hf={class:"modal-header"},Uf={class:"modal-body"},Bf={class:"form-group"},Kf=["value"],Vf={class:"modal-footer"},Wf=["disabled"],qf={__name:"CreateDialog",emits:["close"],setup(e,{emit:t}){const n=t,s=Tt(),o=K({command:s.shells.length?s.shells[0].id:"bash"}),r=K(!1),i=K(null);let l=null;mt(()=>{l=document.activeElement,i.value?.focus()}),so(()=>{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 Et(),document.activeElement===document.body&&i.value?.focus()}}}return(u,c)=>(R(),B("div",{class:"modal-overlay",onClick:c[3]||(c[3]=Se(f=>n("close"),["self"]))},[C("form",{class:"modal-content glass",onSubmit:Se(a,["prevent"])},[C("div",Hf,[c[4]||(c[4]=C("h3",null,"Create New Session",-1)),C("button",{type:"button",class:"close-btn",onClick:c[0]||(c[0]=f=>n("close"))},"✕")]),C("div",Uf,[C("label",Bf,[c[5]||(c[5]=C("span",{class:"label-text"},"Shell",-1)),nt(C("select",{"onUpdate:modelValue":c[1]||(c[1]=f=>o.value.command=f)},[(R(!0),B(ge,null,Cn(ue(s).shells,f=>(R(),B("option",{key:f.id,value:f.id},te(f.name),9,Kf))),128))],512),[[vc,o.value.command]])])]),C("div",Vf,[C("button",{type:"button",class:"btn",onClick:c[2]||(c[2]=f=>n("close"))},"Cancel"),C("button",{ref_key:"createButton",ref:i,type:"submit",class:"btn btn-primary",disabled:r.value},te(r.value?"Creating...":"Create Session"),9,Wf)])],32)]))}},Gf=Ve(qf,[["__scopeId","data-v-ef0ce732"]]),Yf={class:"login-screen"},zf={class:"login-logo"},Xf={key:0,class:"login-error",role:"alert"},Jf=["disabled"],Zf={__name:"LoginView",emits:["success"],setup(e,{emit:t}){const n=t,s=Tt(),o=K(""),r=K(""),i=K(!1),l=K(null);mt(()=>{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)=>(R(),B("div",Yf,[C("form",{class:"login-card",onSubmit:Se(a,["prevent"])},[C("div",zf,[_e(fo,{size:72})]),c[2]||(c[2]=C("h1",null,"ACLI Hub",-1)),c[3]||(c[3]=C("p",{class:"login-hint"},"Enter the session password to continue",-1)),nt(C("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]=Hs(f=>{o.value="",r.value=""},["esc"]))},null,544),[[fs,o.value]]),r.value?(R(),B("p",Xf,te(r.value),1)):se("",!0),C("button",{type:"submit",class:"login-btn",disabled:!o.value||i.value},te(i.value?"Signing in…":"Sign in"),9,Jf)],32)]))}},Qf=Ve(Zf,[["__scopeId","data-v-86b6b672"]]),ed={class:"toast-container","aria-live":"polite"},td={class:"toast-message"},nd={class:"toast-actions"},sd=["onClick"],od=["onClick"],rd={__name:"Toast",setup(e,{expose:t}){const n=K([]);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 Nt(()=>{for(const l of o.values())clearTimeout(l)}),t({show:i}),(l,a)=>(R(),B("div",ed,[_e(fc,{name:"toast"},{default:Kr(()=>[(R(!0),B(ge,null,Cn(n.value,u=>(R(),B("div",{key:u.id,class:Be(["toast",u.type])},[C("div",td,te(u.message),1),C("div",nd,[u.action?(R(),B("button",{key:0,onClick:u.action.onClick},te(u.action.label),9,sd)):se("",!0),C("button",{"aria-label":"Dismiss notification",onClick:c=>r(u.id)},"×",8,od)])],2))),128))]),_:1})]))}},id=Ve(rd,[["__scopeId","data-v-6bea03ca"]]);function ld(e,t=globalThis.document){return!t||typeof e!="string"||!e.trim()?!1:(t.title=`${e.trim()} · ACLI Hub`,!0)}const ad={key:1,class:"app-layout"},cd={class:"toolbar glass"},ud={class:"toolbar-left"},fd={class:"logo-wrapper"},dd={class:"toolbar-right"},pd={class:"main-area"},hd={__name:"App",setup(e){const t=Tt(),n=K(!1),s=K(!1),o=K(null),r=K(!1);window.innerWidth<768&&(n.value=!0),Vr("toast",o),qe(()=>t.authenticated,c=>{c&&t.init()}),mt(async()=>{await t.checkAuth(),r.value=!0,ld(t.instanceName)});async function l(){await t.logout()}function a(){n.value=!n.value}function u(){n.value=!0}return(c,f)=>r.value&&!ue(t).authenticated?(R(),He(Qf,{key:0})):r.value?(R(),B("div",ad,[C("header",cd,[C("div",ud,[C("button",{class:"icon-btn toggle-btn",onClick:a,"aria-label":"Toggle Sidebar"},[...f[4]||(f[4]=[C("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"},[C("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),C("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),C("line",{x1:"3",y1:"18",x2:"21",y2:"18"})],-1)])]),C("div",fd,[_e(fo,{size:28})]),f[5]||(f[5]=C("h1",{class:"toolbar-title"},"ACLI Hub",-1))]),C("div",dd,[ue(t).authRequired?(R(),B("button",{key:0,class:"icon-btn toggle-btn","aria-label":"Log out",title:"Log out",onClick:l},[...f[6]||(f[6]=[C("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"},[C("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),C("polyline",{points:"16 17 21 12 16 7"}),C("line",{x1:"21",y1:"12",x2:"9",y2:"12"})],-1)])])):se("",!0)])]),C("div",pd,[C("div",{class:Be(["sidebar-overlay",{show:!n.value}]),onClick:u},null,2),_e(vf,{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(jf,{onCreate:f[2]||(f[2]=m=>s.value=!0)})]),s.value?(R(),He(Gf,{key:0,onClose:f[3]||(f[3]=m=>s.value=!1)})):se("",!0),_e(id,{ref_key:"toastRef",ref:o},null,512)])):se("",!0)}},md=Ve(hd,[["__scopeId","data-v-cfab805f"]]),Fi=Cc(md);Fi.use(Tc());Fi.mount("#app");export{bd as A,yd as B,vd as C,ge as F,Ts as G,zr as T,co as _,Ve as a,Nt as b,R as c,He as d,Pi as e,C as f,B as g,se as h,ue as i,Jc as j,Mi as k,Cn as l,Ue as m,Be as n,mt as o,gd as p,Se as q,K as r,Et as s,te as t,Tt as u,yl as v,qe as w,Fe as x,wd as y,cr as z};
|