Files
CoreInject/frontend/dist/assets/index-DJCNZJwH.js

32 lines
493 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))o(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function s(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function o(l){if(l.ep)return;l.ep=!0;const a=s(l);fetch(l.href,a)}})();/**
* @vue/shared v3.5.22
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function ma(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const ut={},rn=[],ps=()=>{},Rr=()=>!1,Jo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ha=e=>e.startsWith("onUpdate:"),bt=Object.assign,ga=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},nd=Object.prototype.hasOwnProperty,it=(e,t)=>nd.call(e,t),He=Array.isArray,cn=e=>lo(e)==="[object Map]",_n=e=>lo(e)==="[object Set]",za=e=>lo(e)==="[object Date]",Ze=e=>typeof e=="function",ht=e=>typeof e=="string",ts=e=>typeof e=="symbol",ct=e=>e!==null&&typeof e=="object",Ur=e=>(ct(e)||Ze(e))&&Ze(e.then)&&Ze(e.catch),Dr=Object.prototype.toString,lo=e=>Dr.call(e),od=e=>lo(e).slice(8,-1),Mr=e=>lo(e)==="[object Object]",ya=e=>ht(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,On=ma(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zo=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},ld=/-\w/g,Zt=Zo(e=>e.replace(ld,t=>t.slice(1).toUpperCase())),ad=/\B([A-Z])/g,Bs=Zo(e=>e.replace(ad,"-$1").toLowerCase()),Xo=Zo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Cl=Zo(e=>e?`on${Xo(e)}`:""),Ps=(e,t)=>!Object.is(e,t),$o=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Pr=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},Lo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},id=e=>{const t=ht(e)?Number(e):NaN;return isNaN(t)?e:t};let Wa;const Yo=()=>Wa||(Wa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $t(e){if(He(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],l=ht(o)?dd(o):$t(o);if(l)for(const a in l)t[a]=l[a]}return t}else if(ht(e)||ct(e))return e}const rd=/;(?![^(]*\))/g,cd=/:([^]+)/,ud=/\/\*[^]*?\*\//g;function dd(e){const t={};return e.replace(ud,"").split(rd).forEach(s=>{if(s){const o=s.split(cd);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function $e(e){let t="";if(ht(e))t=e;else if(He(e))for(let s=0;s<e.length;s++){const o=$e(e[s]);o&&(t+=o+" ")}else if(ct(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const fd="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",pd=ma(fd);function Lr(e){return!!e||e===""}function vd(e,t){if(e.length!==t.length)return!1;let s=!0;for(let o=0;s&&o<e.length;o++)s=en(e[o],t[o]);return s}function en(e,t){if(e===t)return!0;let s=za(e),o=za(t);if(s||o)return s&&o?e.getTime()===t.getTime():!1;if(s=ts(e),o=ts(t),s||o)return e===t;if(s=He(e),o=He(t),s||o)return s&&o?vd(e,t):!1;if(s=ct(e),o=ct(t),s||o){if(!s||!o)return!1;const l=Object.keys(e).length,a=Object.keys(t).length;if(l!==a)return!1;for(const i in e){const r=e.hasOwnProperty(i),c=t.hasOwnProperty(i);if(r&&!c||!r&&c||!en(e[i],t[i]))return!1}}return String(e)===String(t)}function ba(e,t){return e.findIndex(s=>en(s,t))}const Or=e=>!!(e&&e.__v_isRef===!0),y=e=>ht(e)?e:e==null?"":He(e)||ct(e)&&(e.toString===Dr||!Ze(e.toString))?Or(e)?y(e.value):JSON.stringify(e,Nr,2):String(e),Nr=(e,t)=>Or(t)?Nr(e,t.value):cn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,l],a)=>(s[Il(o,a)+" =>"]=l,s),{})}:_n(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Il(s))}:ts(t)?Il(t):ct(t)&&!He(t)&&!Mr(t)?String(t):t,Il=(e,t="")=>{var s;return ts(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
* @vue/reactivity v3.5.22
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let jt;class Fr{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=jt,!t&&jt&&(this.index=(jt.scopes||(jt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=jt;try{return jt=this,t()}finally{jt=s}}}on(){++this._on===1&&(this.prevScope=jt,jt=this)}off(){this._on>0&&--this._on===0&&(jt=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,o;for(s=0,o=this.effects.length;s<o;s++)this.effects[s].stop();for(this.effects.length=0,s=0,o=this.cleanups.length;s<o;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,o=this.scopes.length;s<o;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function md(e){return new Fr(e)}function hd(){return jt}let dt;const Sl=new WeakSet;class Br{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,jt&&jt.active&&jt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Sl.has(this)&&(Sl.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||jr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ka(this),qr(this);const t=dt,s=Xt;dt=this,Xt=!0;try{return this.fn()}finally{Hr(this),dt=t,Xt=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ka(t);this.deps=this.depsTail=void 0,Ka(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Sl.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Hl(this)&&this.run()}get dirty(){return Hl(this)}}let Vr=0,Nn,Fn;function jr(e,t=!1){if(e.flags|=8,t){e.next=Fn,Fn=e;return}e.next=Nn,Nn=e}function _a(){Vr++}function wa(){if(--Vr>0)return;if(Fn){let t=Fn;for(Fn=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;Nn;){let t=Nn;for(Nn=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=s}}if(e)throw e}function qr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Hr(e){let t,s=e.depsTail,o=s;for(;o;){const l=o.prevDep;o.version===-1?(o===s&&(s=l),ka(o),gd(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=l}e.deps=t,e.depsTail=s}function Hl(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(zr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function zr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Wn)||(e.globalVersion=Wn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Hl(e))))return;e.flags|=2;const t=e.dep,s=dt,o=Xt;dt=e,Xt=!0;try{qr(e);const l=e.fn(e._value);(t.version===0||Ps(l,e._value))&&(e.flags|=128,e._value=l,t.version++)}catch(l){throw t.version++,l}finally{dt=s,Xt=o,Hr(e),e.flags&=-3}}function ka(e,t=!1){const{dep:s,prevSub:o,nextSub:l}=e;if(o&&(o.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let a=s.computed.deps;a;a=a.nextDep)ka(a,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function gd(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Xt=!0;const Wr=[];function $s(){Wr.push(Xt),Xt=!1}function Cs(){const e=Wr.pop();Xt=e===void 0?!0:e}function Ka(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=dt;dt=void 0;try{t()}finally{dt=s}}}let Wn=0;class yd{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $a{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(!dt||!Xt||dt===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==dt)s=this.activeLink=new yd(dt,this),dt.deps?(s.prevDep=dt.depsTail,dt.depsTail.nextDep=s,dt.depsTail=s):dt.deps=dt.depsTail=s,Kr(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const o=s.nextDep;o.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=o),s.prevDep=dt.depsTail,s.nextDep=void 0,dt.depsTail.nextDep=s,dt.depsTail=s,dt.deps===s&&(dt.deps=o)}return s}trigger(t){this.version++,Wn++,this.notify(t)}notify(t){_a();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{wa()}}}function Kr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)Kr(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const zl=new WeakMap,Zs=Symbol(""),Wl=Symbol(""),Kn=Symbol("");function Ct(e,t,s){if(Xt&&dt){let o=zl.get(e);o||zl.set(e,o=new Map);let l=o.get(s);l||(o.set(s,l=new $a),l.map=o,l.key=s),l.track()}}function _s(e,t,s,o,l,a){const i=zl.get(e);if(!i){Wn++;return}const r=c=>{c&&c.trigger()};if(_a(),t==="clear")i.forEach(r);else{const c=He(e),f=c&&ya(s);if(c&&s==="length"){const u=Number(o);i.forEach((v,g)=>{(g==="length"||g===Kn||!ts(g)&&g>=u)&&r(v)})}else switch((s!==void 0||i.has(void 0))&&r(i.get(s)),f&&r(i.get(Kn)),t){case"add":c?f&&r(i.get("length")):(r(i.get(Zs)),cn(e)&&r(i.get(Wl)));break;case"delete":c||(r(i.get(Zs)),cn(e)&&r(i.get(Wl)));break;case"set":cn(e)&&r(i.get(Zs));break}}wa()}function on(e){const t=nt(e);return t===e?t:(Ct(t,"iterate",Kn),Qt(e)?t:t.map(wt))}function el(e){return Ct(e=nt(e),"iterate",Kn),e}const bd={__proto__:null,[Symbol.iterator](){return xl(this,Symbol.iterator,wt)},concat(...e){return on(this).concat(...e.map(t=>He(t)?on(t):t))},entries(){return xl(this,"entries",e=>(e[1]=wt(e[1]),e))},every(e,t){return hs(this,"every",e,t,void 0,arguments)},filter(e,t){return hs(this,"filter",e,t,s=>s.map(wt),arguments)},find(e,t){return hs(this,"find",e,t,wt,arguments)},findIndex(e,t){return hs(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return hs(this,"findLast",e,t,wt,arguments)},findLastIndex(e,t){return hs(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return hs(this,"forEach",e,t,void 0,arguments)},includes(...e){return Tl(this,"includes",e)},indexOf(...e){return Tl(this,"indexOf",e)},join(e){return on(this).join(e)},lastIndexOf(...e){return Tl(this,"lastIndexOf",e)},map(e,t){return hs(this,"map",e,t,void 0,arguments)},pop(){return xn(this,"pop")},push(...e){return xn(this,"push",e)},reduce(e,...t){return Ga(this,"reduce",e,t)},reduceRight(e,...t){return Ga(this,"reduceRight",e,t)},shift(){return xn(this,"shift")},some(e,t){return hs(this,"some",e,t,void 0,arguments)},splice(...e){return xn(this,"splice",e)},toReversed(){return on(this).toReversed()},toSorted(e){return on(this).toSorted(e)},toSpliced(...e){return on(this).toSpliced(...e)},unshift(...e){return xn(this,"unshift",e)},values(){return xl(this,"values",wt)}};function xl(e,t,s){const o=el(e),l=o[t]();return o!==e&&!Qt(e)&&(l._next=l.next,l.next=()=>{const a=l._next();return a.done||(a.value=s(a.value)),a}),l}const _d=Array.prototype;function hs(e,t,s,o,l,a){const i=el(e),r=i!==e&&!Qt(e),c=i[t];if(c!==_d[t]){const v=c.apply(e,a);return r?wt(v):v}let f=s;i!==e&&(r?f=function(v,g){return s.call(this,wt(v),g,e)}:s.length>2&&(f=function(v,g){return s.call(this,v,g,e)}));const u=c.call(i,f,o);return r&&l?l(u):u}function Ga(e,t,s,o){const l=el(e);let a=s;return l!==e&&(Qt(e)?s.length>3&&(a=function(i,r,c){return s.call(this,i,r,c,e)}):a=function(i,r,c){return s.call(this,i,wt(r),c,e)}),l[t](a,...o)}function Tl(e,t,s){const o=nt(e);Ct(o,"iterate",Kn);const l=o[t](...s);return(l===-1||l===!1)&&Sa(s[0])?(s[0]=nt(s[0]),o[t](...s)):l}function xn(e,t,s=[]){$s(),_a();const o=nt(e)[t].apply(e,s);return wa(),Cs(),o}const wd=ma("__proto__,__v_isRef,__isVue"),Gr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ts));function kd(e){ts(e)||(e=String(e));const t=nt(this);return Ct(t,"has",e),t.hasOwnProperty(e)}class Qr{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const l=this._isReadonly,a=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return a;if(s==="__v_raw")return o===(l?a?Ud:Yr:a?Xr:Zr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const i=He(t);if(!l){let c;if(i&&(c=bd[s]))return c;if(s==="hasOwnProperty")return kd}const r=Reflect.get(t,s,At(t)?t:o);if((ts(s)?Gr.has(s):wd(s))||(l||Ct(t,"get",s),a))return r;if(At(r)){const c=i&&ya(s)?r:r.value;return l&&ct(c)?Gl(c):c}return ct(r)?l?Gl(r):tl(r):r}}class Jr extends Qr{constructor(t=!1){super(!1,t)}set(t,s,o,l){let a=t[s];if(!this._isShallow){const c=Os(a);if(!Qt(o)&&!Os(o)&&(a=nt(a),o=nt(o)),!He(t)&&At(a)&&!At(o))return c||(a.value=o),!0}const i=He(t)&&ya(s)?Number(s)<t.length:it(t,s),r=Reflect.set(t,s,o,At(t)?t:l);return t===nt(l)&&(i?Ps(o,a)&&_s(t,"set",s,o):_s(t,"add",s,o)),r}deleteProperty(t,s){const o=it(t,s);t[s];const l=Reflect.deleteProperty(t,s);return l&&o&&_s(t,"delete",s,void 0),l}has(t,s){const o=Reflect.has(t,s);return(!ts(s)||!Gr.has(s))&&Ct(t,"has",s),o}ownKeys(t){return Ct(t,"iterate",He(t)?"length":Zs),Reflect.ownKeys(t)}}class $d extends Qr{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Cd=new Jr,Id=new $d,Sd=new Jr(!0);const Kl=e=>e,vo=e=>Reflect.getPrototypeOf(e);function xd(e,t,s){return function(...o){const l=this.__v_raw,a=nt(l),i=cn(a),r=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,f=l[e](...o),u=s?Kl:t?Oo:wt;return!t&&Ct(a,"iterate",c?Wl:Zs),{next(){const{value:v,done:g}=f.next();return g?{value:v,done:g}:{value:r?[u(v[0]),u(v[1])]:u(v),done:g}},[Symbol.iterator](){return this}}}}function mo(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Td(e,t){const s={get(l){const a=this.__v_raw,i=nt(a),r=nt(l);e||(Ps(l,r)&&Ct(i,"get",l),Ct(i,"get",r));const{has:c}=vo(i),f=t?Kl:e?Oo:wt;if(c.call(i,l))return f(a.get(l));if(c.call(i,r))return f(a.get(r));a!==i&&a.get(l)},get size(){const l=this.__v_raw;return!e&&Ct(nt(l),"iterate",Zs),l.size},has(l){const a=this.__v_raw,i=nt(a),r=nt(l);return e||(Ps(l,r)&&Ct(i,"has",l),Ct(i,"has",r)),l===r?a.has(l):a.has(l)||a.has(r)},forEach(l,a){const i=this,r=i.__v_raw,c=nt(r),f=t?Kl:e?Oo:wt;return!e&&Ct(c,"iterate",Zs),r.forEach((u,v)=>l.call(a,f(u),f(v),i))}};return bt(s,e?{add:mo("add"),set:mo("set"),delete:mo("delete"),clear:mo("clear")}:{add(l){!t&&!Qt(l)&&!Os(l)&&(l=nt(l));const a=nt(this);return vo(a).has.call(a,l)||(a.add(l),_s(a,"add",l,l)),this},set(l,a){!t&&!Qt(a)&&!Os(a)&&(a=nt(a));const i=nt(this),{has:r,get:c}=vo(i);let f=r.call(i,l);f||(l=nt(l),f=r.call(i,l));const u=c.call(i,l);return i.set(l,a),f?Ps(a,u)&&_s(i,"set",l,a):_s(i,"add",l,a),this},delete(l){const a=nt(this),{has:i,get:r}=vo(a);let c=i.call(a,l);c||(l=nt(l),c=i.call(a,l)),r&&r.call(a,l);const f=a.delete(l);return c&&_s(a,"delete",l,void 0),f},clear(){const l=nt(this),a=l.size!==0,i=l.clear();return a&&_s(l,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=xd(l,e,t)}),s}function Ca(e,t){const s=Td(e,t);return(o,l,a)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?o:Reflect.get(it(s,l)&&l in o?s:o,l,a)}const Ad={get:Ca(!1,!1)},Ed={get:Ca(!1,!0)},Rd={get:Ca(!0,!1)};const Zr=new WeakMap,Xr=new WeakMap,Yr=new WeakMap,Ud=new WeakMap;function Dd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Md(e){return e.__v_skip||!Object.isExtensible(e)?0:Dd(od(e))}function tl(e){return Os(e)?e:Ia(e,!1,Cd,Ad,Zr)}function ec(e){return Ia(e,!1,Sd,Ed,Xr)}function Gl(e){return Ia(e,!0,Id,Rd,Yr)}function Ia(e,t,s,o,l){if(!ct(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=Md(e);if(a===0)return e;const i=l.get(e);if(i)return i;const r=new Proxy(e,a===2?o:s);return l.set(e,r),r}function un(e){return Os(e)?un(e.__v_raw):!!(e&&e.__v_isReactive)}function Os(e){return!!(e&&e.__v_isReadonly)}function Qt(e){return!!(e&&e.__v_isShallow)}function Sa(e){return e?!!e.__v_raw:!1}function nt(e){const t=e&&e.__v_raw;return t?nt(t):e}function tc(e){return!it(e,"__v_skip")&&Object.isExtensible(e)&&Pr(e,"__v_skip",!0),e}const wt=e=>ct(e)?tl(e):e,Oo=e=>ct(e)?Gl(e):e;function At(e){return e?e.__v_isRef===!0:!1}function k(e){return sc(e,!1)}function Gn(e){return sc(e,!0)}function sc(e,t){return At(e)?e:new Pd(e,t)}class Pd{constructor(t,s){this.dep=new $a,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:nt(t),this._value=s?t:wt(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||Qt(t)||Os(t);t=o?t:nt(t),Ps(t,s)&&(this._rawValue=t,this._value=o?t:wt(t),this.dep.trigger())}}function Y(e){return At(e)?e.value:e}const Ld={get:(e,t,s)=>t==="__v_raw"?e:Y(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const l=e[t];return At(l)&&!At(s)?(l.value=s,!0):Reflect.set(e,t,s,o)}};function nc(e){return un(e)?e:new Proxy(e,Ld)}class Od{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new $a(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Wn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&dt!==this)return jr(this,!0),!0}get value(){const t=this.dep.track();return zr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nd(e,t,s=!1){let o,l;return Ze(e)?o=e:(o=e.get,l=e.set),new Od(o,l,s)}const ho={},No=new WeakMap;let Gs;function Fd(e,t=!1,s=Gs){if(s){let o=No.get(s);o||No.set(s,o=[]),o.push(e)}}function Bd(e,t,s=ut){const{immediate:o,deep:l,once:a,scheduler:i,augmentJob:r,call:c}=s,f=z=>l?z:Qt(z)||l===!1||l===0?ws(z,1):ws(z);let u,v,g,h,b=!1,w=!1;if(At(e)?(v=()=>e.value,b=Qt(e)):un(e)?(v=()=>f(e),b=!0):He(e)?(w=!0,b=e.some(z=>un(z)||Qt(z)),v=()=>e.map(z=>{if(At(z))return z.value;if(un(z))return f(z);if(Ze(z))return c?c(z,2):z()})):Ze(e)?t?v=c?()=>c(e,2):e:v=()=>{if(g){$s();try{g()}finally{Cs()}}const z=Gs;Gs=u;try{return c?c(e,3,[h]):e(h)}finally{Gs=z}}:v=ps,t&&l){const z=v,Z=l===!0?1/0:l;v=()=>ws(z(),Z)}const C=hd(),I=()=>{u.stop(),C&&C.active&&ga(C.effects,u)};if(a&&t){const z=t;t=(...Z)=>{z(...Z),I()}}let q=w?new Array(e.length).fill(ho):ho;const N=z=>{if(!(!(u.flags&1)||!u.dirty&&!z))if(t){const Z=u.run();if(l||b||(w?Z.some((W,te)=>Ps(W,q[te])):Ps(Z,q))){g&&g();const W=Gs;Gs=u;try{const te=[Z,q===ho?void 0:w&&q[0]===ho?[]:q,h];q=Z,c?c(t,3,te):t(...te)}finally{Gs=W}}}else u.run()};return r&&r(N),u=new Br(v),u.scheduler=i?()=>i(N,!1):N,h=z=>Fd(z,!1,u),g=u.onStop=()=>{const z=No.get(u);if(z){if(c)c(z,4);else for(const Z of z)Z();No.delete(u)}},t?o?N(!0):q=u.run():i?i(N.bind(null,!0),!0):u.run(),I.pause=u.pause.bind(u),I.resume=u.resume.bind(u),I.stop=I,I}function ws(e,t=1/0,s){if(t<=0||!ct(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,At(e))ws(e.value,t,s);else if(He(e))for(let o=0;o<e.length;o++)ws(e[o],t,s);else if(_n(e)||cn(e))e.forEach(o=>{ws(o,t,s)});else if(Mr(e)){for(const o in e)ws(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&ws(e[o],t,s)}return e}/**
* @vue/runtime-core v3.5.22
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function ao(e,t,s,o){try{return o?e(...o):e()}catch(l){sl(l,t,s)}}function ss(e,t,s,o){if(Ze(e)){const l=ao(e,t,s,o);return l&&Ur(l)&&l.catch(a=>{sl(a,t,s)}),l}if(He(e)){const l=[];for(let a=0;a<e.length;a++)l.push(ss(e[a],t,s,o));return l}}function sl(e,t,s,o=!0){const l=t?t.vnode:null,{errorHandler:a,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||ut;if(t){let r=t.parent;const c=t.proxy,f=`https://vuejs.org/error-reference/#runtime-${s}`;for(;r;){const u=r.ec;if(u){for(let v=0;v<u.length;v++)if(u[v](e,c,f)===!1)return}r=r.parent}if(a){$s(),ao(a,null,10,[e,c,f]),Cs();return}}Vd(e,s,l,o,i)}function Vd(e,t,s,o=!0,l=!1){if(l)throw e;console.error(e)}const Ot=[];let ds=-1;const dn=[];let Us=null,ln=0;const oc=Promise.resolve();let Fo=null;function vt(e){const t=Fo||oc;return e?t.then(this?e.bind(this):e):t}function jd(e){let t=ds+1,s=Ot.length;for(;t<s;){const o=t+s>>>1,l=Ot[o],a=Qn(l);a<e||a===e&&l.flags&2?t=o+1:s=o}return t}function xa(e){if(!(e.flags&1)){const t=Qn(e),s=Ot[Ot.length-1];!s||!(e.flags&2)&&t>=Qn(s)?Ot.push(e):Ot.splice(jd(t),0,e),e.flags|=1,lc()}}function lc(){Fo||(Fo=oc.then(ic))}function qd(e){He(e)?dn.push(...e):Us&&e.id===-1?Us.splice(ln+1,0,e):e.flags&1||(dn.push(e),e.flags|=1),lc()}function Qa(e,t,s=ds+1){for(;s<Ot.length;s++){const o=Ot[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Ot.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function ac(e){if(dn.length){const t=[...new Set(dn)].sort((s,o)=>Qn(s)-Qn(o));if(dn.length=0,Us){Us.push(...t);return}for(Us=t,ln=0;ln<Us.length;ln++){const s=Us[ln];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Us=null,ln=0}}const Qn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ic(e){try{for(ds=0;ds<Ot.length;ds++){const t=Ot[ds];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),ao(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;ds<Ot.length;ds++){const t=Ot[ds];t&&(t.flags&=-2)}ds=-1,Ot.length=0,ac(),Fo=null,(Ot.length||dn.length)&&ic()}}let kt=null,rc=null;function Bo(e){const t=kt;return kt=e,rc=e&&e.type.__scopeId||null,t}function ft(e,t=kt,s){if(!t||e._n)return e;const o=(...l)=>{o._d&&qo(-1);const a=Bo(t);let i;try{i=e(...l)}finally{Bo(a),o._d&&qo(1)}return i};return o._n=!0,o._c=!0,o._d=!0,o}function Be(e,t){if(kt===null)return e;const s=il(kt),o=e.dirs||(e.dirs=[]);for(let l=0;l<t.length;l++){let[a,i,r,c=ut]=t[l];a&&(Ze(a)&&(a={mounted:a,updated:a}),a.deep&&ws(i),o.push({dir:a,instance:s,value:i,oldValue:void 0,arg:r,modifiers:c}))}return e}function qs(e,t,s,o){const l=e.dirs,a=t&&t.dirs;for(let i=0;i<l.length;i++){const r=l[i];a&&(r.oldValue=a[i].value);let c=r.dir[o];c&&($s(),ss(c,s,8,[e.el,r,e,t]),Cs())}}const cc=Symbol("_vte"),uc=e=>e.__isTeleport,Bn=e=>e&&(e.disabled||e.disabled===""),Ja=e=>e&&(e.defer||e.defer===""),Za=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Xa=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ql=(e,t)=>{const s=e&&e.to;return ht(s)?t?t(s):null:s},dc={name:"Teleport",__isTeleport:!0,process(e,t,s,o,l,a,i,r,c,f){const{mc:u,pc:v,pbc:g,o:{insert:h,querySelector:b,createText:w,createComment:C}}=f,I=Bn(t.props);let{shapeFlag:q,children:N,dynamicChildren:z}=t;if(e==null){const Z=t.el=w(""),W=t.anchor=w("");h(Z,s,o),h(W,s,o);const te=(R,F)=>{q&16&&u(N,R,F,l,a,i,r,c)},O=()=>{const R=t.target=Ql(t.props,b),F=fc(R,t,w,h);R&&(i!=="svg"&&Za(R)?i="svg":i!=="mathml"&&Xa(R)&&(i="mathml"),l&&l.isCE&&(l.ce._teleportTargets||(l.ce._teleportTargets=new Set)).add(R),I||(te(R,F),Co(t,!1)))};I&&(te(s,W),Co(t,!0)),Ja(t.props)?(t.el.__isMounted=!1,Lt(()=>{O(),delete t.el.__isMounted},a)):O()}else{if(Ja(t.props)&&e.el.__isMounted===!1){Lt(()=>{dc.process(e,t,s,o,l,a,i,r,c,f)},a);return}t.el=e.el,t.targetStart=e.targetStart;const Z=t.anchor=e.anchor,W=t.target=e.target,te=t.targetAnchor=e.targetAnchor,O=Bn(e.props),R=O?s:W,F=O?Z:te;if(i==="svg"||Za(W)?i="svg":(i==="mathml"||Xa(W))&&(i="mathml"),z?(g(e.dynamicChildren,z,R,l,a,i,r),Ua(e,t,!0)):c||v(e,t,R,F,l,a,i,r,!1),I)O?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):go(t,s,Z,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const $=t.target=Ql(t.props,b);$&&go(t,$,null,f,0)}else O&&go(t,W,te,f,1);Co(t,I)}},remove(e,t,s,{um:o,o:{remove:l}},a){const{shapeFlag:i,children:r,anchor:c,targetStart:f,targetAnchor:u,target:v,props:g}=e;if(v&&(l(f),l(u)),a&&l(c),i&16){const h=a||!Bn(g);for(let b=0;b<r.length;b++){const w=r[b];o(w,t,s,h,!!w.dynamicChildren)}}},move:go,hydrate:Hd};function go(e,t,s,{o:{insert:o},m:l},a=2){a===0&&o(e.targetAnchor,t,s);const{el:i,anchor:r,shapeFlag:c,children:f,props:u}=e,v=a===2;if(v&&o(i,t,s),(!v||Bn(u))&&c&16)for(let g=0;g<f.length;g++)l(f[g],t,s,2);v&&o(r,t,s)}function Hd(e,t,s,o,l,a,{o:{nextSibling:i,parentNode:r,querySelector:c,insert:f,createText:u}},v){function g(w,C,I,q){C.anchor=v(i(w),C,r(w),s,o,l,a),C.targetStart=I,C.targetAnchor=q}const h=t.target=Ql(t.props,c),b=Bn(t.props);if(h){const w=h._lpa||h.firstChild;if(t.shapeFlag&16)if(b)g(e,t,w,w&&i(w));else{t.anchor=i(e);let C=w;for(;C;){if(C&&C.nodeType===8){if(C.data==="teleport start anchor")t.targetStart=C;else if(C.data==="teleport anchor"){t.targetAnchor=C,h._lpa=t.targetAnchor&&i(t.targetAnchor);break}}C=i(C)}t.targetAnchor||fc(h,t,u,f),v(w&&i(w),t,h,s,o,l,a)}Co(t,b)}else b&&t.shapeFlag&16&&g(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Nt=dc;function Co(e,t){const s=e.ctx;if(s&&s.ut){let o,l;for(t?(o=e.el,l=e.anchor):(o=e.targetStart,l=e.targetAnchor);o&&o!==l;)o.nodeType===1&&o.setAttribute("data-v-owner",s.uid),o=o.nextSibling;s.ut()}}function fc(e,t,s,o){const l=t.targetStart=s(""),a=t.targetAnchor=s("");return l[cc]=a,e&&(o(l,e),o(a,e)),a}const bs=Symbol("_leaveCb"),yo=Symbol("_enterCb");function pc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return rt(()=>{e.isMounted=!0}),Aa(()=>{e.isUnmounting=!0}),e}const Gt=[Function,Array],vc={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Gt,onEnter:Gt,onAfterEnter:Gt,onEnterCancelled:Gt,onBeforeLeave:Gt,onLeave:Gt,onAfterLeave:Gt,onLeaveCancelled:Gt,onBeforeAppear:Gt,onAppear:Gt,onAfterAppear:Gt,onAppearCancelled:Gt},mc=e=>{const t=e.subTree;return t.component?mc(t.component):t},zd={name:"BaseTransition",props:vc,setup(e,{slots:t}){const s=Ma(),o=pc();return()=>{const l=t.default&&Ta(t.default(),!0);if(!l||!l.length)return;const a=hc(l),i=nt(e),{mode:r}=i;if(o.isLeaving)return Al(a);const c=Ya(a);if(!c)return Al(a);let f=Jn(c,i,o,s,v=>f=v);c.type!==It&&tn(c,f);let u=s.subTree&&Ya(s.subTree);if(u&&u.type!==It&&!Qs(u,c)&&mc(s).type!==It){let v=Jn(u,i,o,s);if(tn(u,v),r==="out-in"&&c.type!==It)return o.isLeaving=!0,v.afterLeave=()=>{o.isLeaving=!1,s.job.flags&8||s.update(),delete v.afterLeave,u=void 0},Al(a);r==="in-out"&&c.type!==It?v.delayLeave=(g,h,b)=>{const w=gc(o,u);w[String(u.key)]=u,g[bs]=()=>{h(),g[bs]=void 0,delete f.delayedLeave,u=void 0},f.delayedLeave=()=>{b(),delete f.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return a}}};function hc(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==It){t=s;break}}return t}const Wd=zd;function gc(e,t){const{leavingVNodes:s}=e;let o=s.get(t.type);return o||(o=Object.create(null),s.set(t.type,o)),o}function Jn(e,t,s,o,l){const{appear:a,mode:i,persisted:r=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:u,onEnterCancelled:v,onBeforeLeave:g,onLeave:h,onAfterLeave:b,onLeaveCancelled:w,onBeforeAppear:C,onAppear:I,onAfterAppear:q,onAppearCancelled:N}=t,z=String(e.key),Z=gc(s,e),W=(R,F)=>{R&&ss(R,o,9,F)},te=(R,F)=>{const $=F[1];W(R,F),He(R)?R.every(U=>U.length<=1)&&$():R.length<=1&&$()},O={mode:i,persisted:r,beforeEnter(R){let F=c;if(!s.isMounted)if(a)F=C||c;else return;R[bs]&&R[bs](!0);const $=Z[z];$&&Qs(e,$)&&$.el[bs]&&$.el[bs](),W(F,[R])},enter(R){let F=f,$=u,U=v;if(!s.isMounted)if(a)F=I||f,$=q||u,U=N||v;else return;let se=!1;const M=R[yo]=G=>{se||(se=!0,G?W(U,[R]):W($,[R]),O.delayedLeave&&O.delayedLeave(),R[yo]=void 0)};F?te(F,[R,M]):M()},leave(R,F){const $=String(e.key);if(R[yo]&&R[yo](!0),s.isUnmounting)return F();W(g,[R]);let U=!1;const se=R[bs]=M=>{U||(U=!0,F(),M?W(w,[R]):W(b,[R]),R[bs]=void 0,Z[$]===e&&delete Z[$])};Z[$]=e,h?te(h,[R,se]):se()},clone(R){const F=Jn(R,t,s,o,l);return l&&l(F),F}};return O}function Al(e){if(nl(e))return e=Ns(e),e.children=null,e}function Ya(e){if(!nl(e))return uc(e.type)&&e.children?hc(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&Ze(s.default))return s.default()}}function tn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,tn(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 Ta(e,t=!1,s){let o=[],l=0;for(let a=0;a<e.length;a++){let i=e[a];const r=s==null?i.key:String(s)+String(i.key!=null?i.key:a);i.type===he?(i.patchFlag&128&&l++,o=o.concat(Ta(i.children,t,r))):(t||i.type!==It)&&o.push(r!=null?Ns(i,{key:r}):i)}if(l>1)for(let a=0;a<o.length;a++)o[a].patchFlag=-2;return o}function ze(e,t){return Ze(e)?bt({name:e.name},t,{setup:e}):e}function yc(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Vo=new WeakMap;function Vn(e,t,s,o,l=!1){if(He(e)){e.forEach((b,w)=>Vn(b,t&&(He(t)?t[w]:t),s,o,l));return}if(fn(o)&&!l){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&Vn(e,t,s,o.component.subTree);return}const a=o.shapeFlag&4?il(o.component):o.el,i=l?null:a,{i:r,r:c}=e,f=t&&t.r,u=r.refs===ut?r.refs={}:r.refs,v=r.setupState,g=nt(v),h=v===ut?Rr:b=>it(g,b);if(f!=null&&f!==c){if(ei(t),ht(f))u[f]=null,h(f)&&(v[f]=null);else if(At(f)){f.value=null;const b=t;b.k&&(u[b.k]=null)}}if(Ze(c))ao(c,r,12,[i,u]);else{const b=ht(c),w=At(c);if(b||w){const C=()=>{if(e.f){const I=b?h(c)?v[c]:u[c]:c.value;if(l)He(I)&&ga(I,a);else if(He(I))I.includes(a)||I.push(a);else if(b)u[c]=[a],h(c)&&(v[c]=u[c]);else{const q=[a];c.value=q,e.k&&(u[e.k]=q)}}else b?(u[c]=i,h(c)&&(v[c]=i)):w&&(c.value=i,e.k&&(u[e.k]=i))};if(i){const I=()=>{C(),Vo.delete(e)};I.id=-1,Vo.set(e,I),Lt(I,s)}else ei(e),C()}}}function ei(e){const t=Vo.get(e);t&&(t.flags|=8,Vo.delete(e))}Yo().requestIdleCallback;Yo().cancelIdleCallback;const fn=e=>!!e.type.__asyncLoader,nl=e=>e.type.__isKeepAlive;function Kd(e,t){bc(e,"a",t)}function Gd(e,t){bc(e,"da",t)}function bc(e,t,s=St){const o=e.__wdc||(e.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(ol(t,o,s),s){let l=s.parent;for(;l&&l.parent;)nl(l.parent.vnode)&&Qd(o,t,s,l),l=l.parent}}function Qd(e,t,s,o){const l=ol(t,e,o,!0);Et(()=>{ga(o[t],l)},s)}function ol(e,t,s=St,o=!1){if(s){const l=s[e]||(s[e]=[]),a=t.__weh||(t.__weh=(...i)=>{$s();const r=io(s),c=ss(t,s,e,i);return r(),Cs(),c});return o?l.unshift(a):l.push(a),a}}const Is=e=>(t,s=St)=>{(!Yn||e==="sp")&&ol(e,(...o)=>t(...o),s)},Jd=Is("bm"),rt=Is("m"),Zd=Is("bu"),_c=Is("u"),Aa=Is("bum"),Et=Is("um"),Xd=Is("sp"),Yd=Is("rtg"),ef=Is("rtc");function tf(e,t=St){ol("ec",e,t)}const sf="components";function nf(e,t){return lf(sf,e,!0,t)||e}const of=Symbol.for("v-ndc");function lf(e,t,s=!0,o=!1){const l=kt||St;if(l){const a=l.type;{const r=Kf(a,!1);if(r&&(r===t||r===Zt(t)||r===Xo(Zt(t))))return a}const i=ti(l[e]||a[e],t)||ti(l.appContext[e],t);return!i&&o?a:i}}function ti(e,t){return e&&(e[t]||e[Zt(t)]||e[Xo(Zt(t))])}function Re(e,t,s,o){let l;const a=s,i=He(e);if(i||ht(e)){const r=i&&un(e);let c=!1,f=!1;r&&(c=!Qt(e),f=Os(e),e=el(e)),l=new Array(e.length);for(let u=0,v=e.length;u<v;u++)l[u]=t(c?f?Oo(wt(e[u])):wt(e[u]):e[u],u,void 0,a)}else if(typeof e=="number"){l=new Array(e);for(let r=0;r<e;r++)l[r]=t(r+1,r,void 0,a)}else if(ct(e))if(e[Symbol.iterator])l=Array.from(e,(r,c)=>t(r,c,void 0,a));else{const r=Object.keys(e);l=new Array(r.length);for(let c=0,f=r.length;c<f;c++){const u=r[c];l[c]=t(e[u],u,c,a)}}else l=[];return l}function si(e,t,s={},o,l){if(kt.ce||kt.parent&&fn(kt.parent)&&kt.parent.ce){const f=Object.keys(s).length>0;return s.name=t,d(),Fe(he,null,[m("slot",s,o&&o())],f?-2:64)}let a=e[t];a&&a._c&&(a._d=!1),d();const i=a&&wc(a(s)),r=s.key||i&&i.key,c=Fe(he,{key:(r&&!ts(r)?r:`_${t}`)+(!i&&o?"_fb":"")},i||(o?o():[]),i&&e._===1?64:-2);return a&&a._c&&(a._d=!0),c}function wc(e){return e.some(t=>Xn(t)?!(t.type===It||t.type===he&&!wc(t.children)):!0)?e:null}const Jl=e=>e?Bc(e)?il(e):Jl(e.parent):null,jn=bt(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=>Jl(e.parent),$root:e=>Jl(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>$c(e),$forceUpdate:e=>e.f||(e.f=()=>{xa(e.update)}),$nextTick:e=>e.n||(e.n=vt.bind(e.proxy)),$watch:e=>xf.bind(e)}),El=(e,t)=>e!==ut&&!e.__isScriptSetup&&it(e,t),af={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:l,props:a,accessCache:i,type:r,appContext:c}=e;let f;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return o[t];case 2:return l[t];case 4:return s[t];case 3:return a[t]}else{if(El(o,t))return i[t]=1,o[t];if(l!==ut&&it(l,t))return i[t]=2,l[t];if((f=e.propsOptions[0])&&it(f,t))return i[t]=3,a[t];if(s!==ut&&it(s,t))return i[t]=4,s[t];Zl&&(i[t]=0)}}const u=jn[t];let v,g;if(u)return t==="$attrs"&&Ct(e.attrs,"get",""),u(e);if((v=r.__cssModules)&&(v=v[t]))return v;if(s!==ut&&it(s,t))return i[t]=4,s[t];if(g=c.config.globalProperties,it(g,t))return g[t]},set({_:e},t,s){const{data:o,setupState:l,ctx:a}=e;return El(l,t)?(l[t]=s,!0):o!==ut&&it(o,t)?(o[t]=s,!0):it(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:l,propsOptions:a,type:i}},r){let c,f;return!!(s[r]||e!==ut&&r[0]!=="$"&&it(e,r)||El(t,r)||(c=a[0])&&it(c,r)||it(o,r)||it(jn,r)||it(l.config.globalProperties,r)||(f=i.__cssModules)&&f[r])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:it(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function ni(e){return He(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Zl=!0;function rf(e){const t=$c(e),s=e.proxy,o=e.ctx;Zl=!1,t.beforeCreate&&oi(t.beforeCreate,e,"bc");const{data:l,computed:a,methods:i,watch:r,provide:c,inject:f,created:u,beforeMount:v,mounted:g,beforeUpdate:h,updated:b,activated:w,deactivated:C,beforeDestroy:I,beforeUnmount:q,destroyed:N,unmounted:z,render:Z,renderTracked:W,renderTriggered:te,errorCaptured:O,serverPrefetch:R,expose:F,inheritAttrs:$,components:U,directives:se,filters:M}=t;if(f&&cf(f,o,null),i)for(const V in i){const X=i[V];Ze(X)&&(o[V]=X.bind(s))}if(l){const V=l.call(s,s);ct(V)&&(e.data=tl(V))}if(Zl=!0,a)for(const V in a){const X=a[V],pe=Ze(X)?X.bind(s,s):Ze(X.get)?X.get.bind(s,s):ps,Ne=!Ze(X)&&Ze(X.set)?X.set.bind(s):ps,Pe=fe({get:pe,set:Ne});Object.defineProperty(o,V,{enumerable:!0,configurable:!0,get:()=>Pe.value,set:Ee=>Pe.value=Ee})}if(r)for(const V in r)kc(r[V],o,s,V);if(c){const V=Ze(c)?c.call(s):c;Reflect.ownKeys(V).forEach(X=>{Io(X,V[X])})}u&&oi(u,e,"c");function B(V,X){He(X)?X.forEach(pe=>V(pe.bind(s))):X&&V(X.bind(s))}if(B(Jd,v),B(rt,g),B(Zd,h),B(_c,b),B(Kd,w),B(Gd,C),B(tf,O),B(ef,W),B(Yd,te),B(Aa,q),B(Et,z),B(Xd,R),He(F))if(F.length){const V=e.exposed||(e.exposed={});F.forEach(X=>{Object.defineProperty(V,X,{get:()=>s[X],set:pe=>s[X]=pe,enumerable:!0})})}else e.exposed||(e.exposed={});Z&&e.render===ps&&(e.render=Z),$!=null&&(e.inheritAttrs=$),U&&(e.components=U),se&&(e.directives=se),R&&yc(e)}function cf(e,t,s=ps){He(e)&&(e=Xl(e));for(const o in e){const l=e[o];let a;ct(l)?"default"in l?a=Yt(l.from||o,l.default,!0):a=Yt(l.from||o):a=Yt(l),At(a)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>a.value,set:i=>a.value=i}):t[o]=a}}function oi(e,t,s){ss(He(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function kc(e,t,s,o){let l=o.includes(".")?Pc(s,o):()=>s[o];if(ht(e)){const a=t[e];Ze(a)&&st(l,a)}else if(Ze(e))st(l,e.bind(s));else if(ct(e))if(He(e))e.forEach(a=>kc(a,t,s,o));else{const a=Ze(e.handler)?e.handler.bind(s):t[e.handler];Ze(a)&&st(l,a,e)}}function $c(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:l,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,r=a.get(t);let c;return r?c=r:!l.length&&!s&&!o?c=t:(c={},l.length&&l.forEach(f=>jo(c,f,i,!0)),jo(c,t,i)),ct(t)&&a.set(t,c),c}function jo(e,t,s,o=!1){const{mixins:l,extends:a}=t;a&&jo(e,a,s,!0),l&&l.forEach(i=>jo(e,i,s,!0));for(const i in t)if(!(o&&i==="expose")){const r=uf[i]||s&&s[i];e[i]=r?r(e[i],t[i]):t[i]}return e}const uf={data:li,props:ai,emits:ai,methods:Ln,computed:Ln,beforeCreate:Pt,created:Pt,beforeMount:Pt,mounted:Pt,beforeUpdate:Pt,updated:Pt,beforeDestroy:Pt,beforeUnmount:Pt,destroyed:Pt,unmounted:Pt,activated:Pt,deactivated:Pt,errorCaptured:Pt,serverPrefetch:Pt,components:Ln,directives:Ln,watch:ff,provide:li,inject:df};function li(e,t){return t?e?function(){return bt(Ze(e)?e.call(this,this):e,Ze(t)?t.call(this,this):t)}:t:e}function df(e,t){return Ln(Xl(e),Xl(t))}function Xl(e){if(He(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Pt(e,t){return e?[...new Set([].concat(e,t))]:t}function Ln(e,t){return e?bt(Object.create(null),e,t):t}function ai(e,t){return e?He(e)&&He(t)?[...new Set([...e,...t])]:bt(Object.create(null),ni(e),ni(t??{})):t}function ff(e,t){if(!e)return t;if(!t)return e;const s=bt(Object.create(null),e);for(const o in t)s[o]=Pt(e[o],t[o]);return s}function Cc(){return{app:null,config:{isNativeTag:Rr,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 pf=0;function vf(e,t){return function(o,l=null){Ze(o)||(o=bt({},o)),l!=null&&!ct(l)&&(l=null);const a=Cc(),i=new WeakSet,r=[];let c=!1;const f=a.app={_uid:pf++,_component:o,_props:l,_container:null,_context:a,_instance:null,version:Qf,get config(){return a.config},set config(u){},use(u,...v){return i.has(u)||(u&&Ze(u.install)?(i.add(u),u.install(f,...v)):Ze(u)&&(i.add(u),u(f,...v))),f},mixin(u){return a.mixins.includes(u)||a.mixins.push(u),f},component(u,v){return v?(a.components[u]=v,f):a.components[u]},directive(u,v){return v?(a.directives[u]=v,f):a.directives[u]},mount(u,v,g){if(!c){const h=f._ceVNode||m(o,l);return h.appContext=a,g===!0?g="svg":g===!1&&(g=void 0),e(h,u,g),c=!0,f._container=u,u.__vue_app__=f,il(h.component)}},onUnmount(u){r.push(u)},unmount(){c&&(ss(r,f._instance,16),e(null,f._container),delete f._container.__vue_app__)},provide(u,v){return a.provides[u]=v,f},runWithContext(u){const v=pn;pn=f;try{return u()}finally{pn=v}}};return f}}let pn=null;function Io(e,t){if(St){let s=St.provides;const o=St.parent&&St.parent.provides;o===s&&(s=St.provides=Object.create(o)),s[e]=t}}function Yt(e,t,s=!1){const o=Ma();if(o||pn){let l=pn?pn._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return s&&Ze(t)?t.call(o&&o.proxy):t}}const Ic={},Sc=()=>Object.create(Ic),xc=e=>Object.getPrototypeOf(e)===Ic;function mf(e,t,s,o=!1){const l={},a=Sc();e.propsDefaults=Object.create(null),Tc(e,t,l,a);for(const i in e.propsOptions[0])i in l||(l[i]=void 0);s?e.props=o?l:ec(l):e.type.props?e.props=l:e.props=a,e.attrs=a}function hf(e,t,s,o){const{props:l,attrs:a,vnode:{patchFlag:i}}=e,r=nt(l),[c]=e.propsOptions;let f=!1;if((o||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let v=0;v<u.length;v++){let g=u[v];if(ll(e.emitsOptions,g))continue;const h=t[g];if(c)if(it(a,g))h!==a[g]&&(a[g]=h,f=!0);else{const b=Zt(g);l[b]=Yl(c,r,b,h,e,!1)}else h!==a[g]&&(a[g]=h,f=!0)}}}else{Tc(e,t,l,a)&&(f=!0);let u;for(const v in r)(!t||!it(t,v)&&((u=Bs(v))===v||!it(t,u)))&&(c?s&&(s[v]!==void 0||s[u]!==void 0)&&(l[v]=Yl(c,r,v,void 0,e,!0)):delete l[v]);if(a!==r)for(const v in a)(!t||!it(t,v))&&(delete a[v],f=!0)}f&&_s(e.attrs,"set","")}function Tc(e,t,s,o){const[l,a]=e.propsOptions;let i=!1,r;if(t)for(let c in t){if(On(c))continue;const f=t[c];let u;l&&it(l,u=Zt(c))?!a||!a.includes(u)?s[u]=f:(r||(r={}))[u]=f:ll(e.emitsOptions,c)||(!(c in o)||f!==o[c])&&(o[c]=f,i=!0)}if(a){const c=nt(s),f=r||ut;for(let u=0;u<a.length;u++){const v=a[u];s[v]=Yl(l,c,v,f[v],e,!it(f,v))}}return i}function Yl(e,t,s,o,l,a){const i=e[s];if(i!=null){const r=it(i,"default");if(r&&o===void 0){const c=i.default;if(i.type!==Function&&!i.skipFactory&&Ze(c)){const{propsDefaults:f}=l;if(s in f)o=f[s];else{const u=io(l);o=f[s]=c.call(null,t),u()}}else o=c;l.ce&&l.ce._setProp(s,o)}i[0]&&(a&&!r?o=!1:i[1]&&(o===""||o===Bs(s))&&(o=!0))}return o}const gf=new WeakMap;function Ac(e,t,s=!1){const o=s?gf:t.propsCache,l=o.get(e);if(l)return l;const a=e.props,i={},r=[];let c=!1;if(!Ze(e)){const u=v=>{c=!0;const[g,h]=Ac(v,t,!0);bt(i,g),h&&r.push(...h)};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!c)return ct(e)&&o.set(e,rn),rn;if(He(a))for(let u=0;u<a.length;u++){const v=Zt(a[u]);ii(v)&&(i[v]=ut)}else if(a)for(const u in a){const v=Zt(u);if(ii(v)){const g=a[u],h=i[v]=He(g)||Ze(g)?{type:g}:bt({},g),b=h.type;let w=!1,C=!0;if(He(b))for(let I=0;I<b.length;++I){const q=b[I],N=Ze(q)&&q.name;if(N==="Boolean"){w=!0;break}else N==="String"&&(C=!1)}else w=Ze(b)&&b.name==="Boolean";h[0]=w,h[1]=C,(w||it(h,"default"))&&r.push(v)}}const f=[i,r];return ct(e)&&o.set(e,f),f}function ii(e){return e[0]!=="$"&&!On(e)}const Ea=e=>e==="_"||e==="_ctx"||e==="$stable",Ra=e=>He(e)?e.map(fs):[fs(e)],yf=(e,t,s)=>{if(t._n)return t;const o=ft((...l)=>Ra(t(...l)),s);return o._c=!1,o},Ec=(e,t,s)=>{const o=e._ctx;for(const l in e){if(Ea(l))continue;const a=e[l];if(Ze(a))t[l]=yf(l,a,o);else if(a!=null){const i=Ra(a);t[l]=()=>i}}},Rc=(e,t)=>{const s=Ra(t);e.slots.default=()=>s},Uc=(e,t,s)=>{for(const o in t)(s||!Ea(o))&&(e[o]=t[o])},bf=(e,t,s)=>{const o=e.slots=Sc();if(e.vnode.shapeFlag&32){const l=t._;l?(Uc(o,t,s),s&&Pr(o,"_",l,!0)):Ec(t,o)}else t&&Rc(e,t)},_f=(e,t,s)=>{const{vnode:o,slots:l}=e;let a=!0,i=ut;if(o.shapeFlag&32){const r=t._;r?s&&r===1?a=!1:Uc(l,t,s):(a=!t.$stable,Ec(t,l)),i=t}else t&&(Rc(e,t),i={default:1});if(a)for(const r in l)!Ea(r)&&i[r]==null&&delete l[r]},Lt=Pf;function wf(e){return kf(e)}function kf(e,t){const s=Yo();s.__VUE__=!0;const{insert:o,remove:l,patchProp:a,createElement:i,createText:r,createComment:c,setText:f,setElementText:u,parentNode:v,nextSibling:g,setScopeId:h=ps,insertStaticContent:b}=e,w=(T,D,A,J=null,ce=null,x=null,S=void 0,L=null,P=!!D.dynamicChildren)=>{if(T===D)return;T&&!Qs(T,D)&&(J=K(T),Ee(T,ce,x,!0),T=null),D.patchFlag===-2&&(P=!1,D.dynamicChildren=null);const{type:ee,ref:ue,shapeFlag:ve}=D;switch(ee){case al:C(T,D,A,J);break;case It:I(T,D,A,J);break;case So:T==null&&q(D,A,J,S);break;case he:U(T,D,A,J,ce,x,S,L,P);break;default:ve&1?Z(T,D,A,J,ce,x,S,L,P):ve&6?se(T,D,A,J,ce,x,S,L,P):(ve&64||ve&128)&&ee.process(T,D,A,J,ce,x,S,L,P,Ce)}ue!=null&&ce?Vn(ue,T&&T.ref,x,D||T,!D):ue==null&&T&&T.ref!=null&&Vn(T.ref,null,x,T,!0)},C=(T,D,A,J)=>{if(T==null)o(D.el=r(D.children),A,J);else{const ce=D.el=T.el;D.children!==T.children&&f(ce,D.children)}},I=(T,D,A,J)=>{T==null?o(D.el=c(D.children||""),A,J):D.el=T.el},q=(T,D,A,J)=>{[T.el,T.anchor]=b(T.children,D,A,J,T.el,T.anchor)},N=({el:T,anchor:D},A,J)=>{let ce;for(;T&&T!==D;)ce=g(T),o(T,A,J),T=ce;o(D,A,J)},z=({el:T,anchor:D})=>{let A;for(;T&&T!==D;)A=g(T),l(T),T=A;l(D)},Z=(T,D,A,J,ce,x,S,L,P)=>{D.type==="svg"?S="svg":D.type==="math"&&(S="mathml"),T==null?W(D,A,J,ce,x,S,L,P):R(T,D,ce,x,S,L,P)},W=(T,D,A,J,ce,x,S,L)=>{let P,ee;const{props:ue,shapeFlag:ve,transition:Ie,dirs:Oe}=T;if(P=T.el=i(T.type,x,ue&&ue.is,ue),ve&8?u(P,T.children):ve&16&&O(T.children,P,null,J,ce,Rl(T,x),S,L),Oe&&qs(T,null,J,"created"),te(P,T,T.scopeId,S,J),ue){for(const ge in ue)ge!=="value"&&!On(ge)&&a(P,ge,null,ue[ge],x,J);"value"in ue&&a(P,"value",null,ue.value,x),(ee=ue.onVnodeBeforeMount)&&rs(ee,J,T)}Oe&&qs(T,null,J,"beforeMount");const Ke=$f(ce,Ie);Ke&&Ie.beforeEnter(P),o(P,D,A),((ee=ue&&ue.onVnodeMounted)||Ke||Oe)&&Lt(()=>{ee&&rs(ee,J,T),Ke&&Ie.enter(P),Oe&&qs(T,null,J,"mounted")},ce)},te=(T,D,A,J,ce)=>{if(A&&h(T,A),J)for(let x=0;x<J.length;x++)h(T,J[x]);if(ce){let x=ce.subTree;if(D===x||Oc(x.type)&&(x.ssContent===D||x.ssFallback===D)){const S=ce.vnode;te(T,S,S.scopeId,S.slotScopeIds,ce.parent)}}},O=(T,D,A,J,ce,x,S,L,P=0)=>{for(let ee=P;ee<T.length;ee++){const ue=T[ee]=L?Ds(T[ee]):fs(T[ee]);w(null,ue,D,A,J,ce,x,S,L)}},R=(T,D,A,J,ce,x,S)=>{const L=D.el=T.el;let{patchFlag:P,dynamicChildren:ee,dirs:ue}=D;P|=T.patchFlag&16;const ve=T.props||ut,Ie=D.props||ut;let Oe;if(A&&Hs(A,!1),(Oe=Ie.onVnodeBeforeUpdate)&&rs(Oe,A,D,T),ue&&qs(D,T,A,"beforeUpdate"),A&&Hs(A,!0),(ve.innerHTML&&Ie.innerHTML==null||ve.textContent&&Ie.textContent==null)&&u(L,""),ee?F(T.dynamicChildren,ee,L,A,J,Rl(D,ce),x):S||X(T,D,L,null,A,J,Rl(D,ce),x,!1),P>0){if(P&16)$(L,ve,Ie,A,ce);else if(P&2&&ve.class!==Ie.class&&a(L,"class",null,Ie.class,ce),P&4&&a(L,"style",ve.style,Ie.style,ce),P&8){const Ke=D.dynamicProps;for(let ge=0;ge<Ke.length;ge++){const Xe=Ke[ge],yt=ve[Xe],pt=Ie[Xe];(pt!==yt||Xe==="value")&&a(L,Xe,yt,pt,ce,A)}}P&1&&T.children!==D.children&&u(L,D.children)}else!S&&ee==null&&$(L,ve,Ie,A,ce);((Oe=Ie.onVnodeUpdated)||ue)&&Lt(()=>{Oe&&rs(Oe,A,D,T),ue&&qs(D,T,A,"updated")},J)},F=(T,D,A,J,ce,x,S)=>{for(let L=0;L<D.length;L++){const P=T[L],ee=D[L],ue=P.el&&(P.type===he||!Qs(P,ee)||P.shapeFlag&198)?v(P.el):A;w(P,ee,ue,null,J,ce,x,S,!0)}},$=(T,D,A,J,ce)=>{if(D!==A){if(D!==ut)for(const x in D)!On(x)&&!(x in A)&&a(T,x,D[x],null,ce,J);for(const x in A){if(On(x))continue;const S=A[x],L=D[x];S!==L&&x!=="value"&&a(T,x,L,S,ce,J)}"value"in A&&a(T,"value",D.value,A.value,ce)}},U=(T,D,A,J,ce,x,S,L,P)=>{const ee=D.el=T?T.el:r(""),ue=D.anchor=T?T.anchor:r("");let{patchFlag:ve,dynamicChildren:Ie,slotScopeIds:Oe}=D;Oe&&(L=L?L.concat(Oe):Oe),T==null?(o(ee,A,J),o(ue,A,J),O(D.children||[],A,ue,ce,x,S,L,P)):ve>0&&ve&64&&Ie&&T.dynamicChildren?(F(T.dynamicChildren,Ie,A,ce,x,S,L),(D.key!=null||ce&&D===ce.subTree)&&Ua(T,D,!0)):X(T,D,A,ue,ce,x,S,L,P)},se=(T,D,A,J,ce,x,S,L,P)=>{D.slotScopeIds=L,T==null?D.shapeFlag&512?ce.ctx.activate(D,A,J,S,P):M(D,A,J,ce,x,S,P):G(T,D,P)},M=(T,D,A,J,ce,x,S)=>{const L=T.component=jf(T,J,ce);if(nl(T)&&(L.ctx.renderer=Ce),qf(L,!1,S),L.asyncDep){if(ce&&ce.registerDep(L,B,S),!T.el){const P=L.subTree=m(It);I(null,P,D,A),T.placeholder=P.el}}else B(L,T,D,A,ce,x,S)},G=(T,D,A)=>{const J=D.component=T.component;if(Df(T,D,A))if(J.asyncDep&&!J.asyncResolved){V(J,D,A);return}else J.next=D,J.update();else D.el=T.el,J.vnode=D},B=(T,D,A,J,ce,x,S)=>{const L=()=>{if(T.isMounted){let{next:ve,bu:Ie,u:Oe,parent:Ke,vnode:ge}=T;{const Se=Dc(T);if(Se){ve&&(ve.el=ge.el,V(T,ve,S)),Se.asyncDep.then(()=>{T.isUnmounted||L()});return}}let Xe=ve,yt;Hs(T,!1),ve?(ve.el=ge.el,V(T,ve,S)):ve=ge,Ie&&$o(Ie),(yt=ve.props&&ve.props.onVnodeBeforeUpdate)&&rs(yt,Ke,ve,ge),Hs(T,!0);const pt=ci(T),lt=T.subTree;T.subTree=pt,w(lt,pt,v(lt.el),K(lt),T,ce,x),ve.el=pt.el,Xe===null&&Mf(T,pt.el),Oe&&Lt(Oe,ce),(yt=ve.props&&ve.props.onVnodeUpdated)&&Lt(()=>rs(yt,Ke,ve,ge),ce)}else{let ve;const{el:Ie,props:Oe}=D,{bm:Ke,m:ge,parent:Xe,root:yt,type:pt}=T,lt=fn(D);Hs(T,!1),Ke&&$o(Ke),!lt&&(ve=Oe&&Oe.onVnodeBeforeMount)&&rs(ve,Xe,D),Hs(T,!0);{yt.ce&&yt.ce._def.shadowRoot!==!1&&yt.ce._injectChildStyle(pt);const Se=T.subTree=ci(T);w(null,Se,A,J,T,ce,x),D.el=Se.el}if(ge&&Lt(ge,ce),!lt&&(ve=Oe&&Oe.onVnodeMounted)){const Se=D;Lt(()=>rs(ve,Xe,Se),ce)}(D.shapeFlag&256||Xe&&fn(Xe.vnode)&&Xe.vnode.shapeFlag&256)&&T.a&&Lt(T.a,ce),T.isMounted=!0,D=A=J=null}};T.scope.on();const P=T.effect=new Br(L);T.scope.off();const ee=T.update=P.run.bind(P),ue=T.job=P.runIfDirty.bind(P);ue.i=T,ue.id=T.uid,P.scheduler=()=>xa(ue),Hs(T,!0),ee()},V=(T,D,A)=>{D.component=T;const J=T.vnode.props;T.vnode=D,T.next=null,hf(T,D.props,J,A),_f(T,D.children,A),$s(),Qa(T),Cs()},X=(T,D,A,J,ce,x,S,L,P=!1)=>{const ee=T&&T.children,ue=T?T.shapeFlag:0,ve=D.children,{patchFlag:Ie,shapeFlag:Oe}=D;if(Ie>0){if(Ie&128){Ne(ee,ve,A,J,ce,x,S,L,P);return}else if(Ie&256){pe(ee,ve,A,J,ce,x,S,L,P);return}}Oe&8?(ue&16&&Me(ee,ce,x),ve!==ee&&u(A,ve)):ue&16?Oe&16?Ne(ee,ve,A,J,ce,x,S,L,P):Me(ee,ce,x,!0):(ue&8&&u(A,""),Oe&16&&O(ve,A,J,ce,x,S,L,P))},pe=(T,D,A,J,ce,x,S,L,P)=>{T=T||rn,D=D||rn;const ee=T.length,ue=D.length,ve=Math.min(ee,ue);let Ie;for(Ie=0;Ie<ve;Ie++){const Oe=D[Ie]=P?Ds(D[Ie]):fs(D[Ie]);w(T[Ie],Oe,A,null,ce,x,S,L,P)}ee>ue?Me(T,ce,x,!0,!1,ve):O(D,A,J,ce,x,S,L,P,ve)},Ne=(T,D,A,J,ce,x,S,L,P)=>{let ee=0;const ue=D.length;let ve=T.length-1,Ie=ue-1;for(;ee<=ve&&ee<=Ie;){const Oe=T[ee],Ke=D[ee]=P?Ds(D[ee]):fs(D[ee]);if(Qs(Oe,Ke))w(Oe,Ke,A,null,ce,x,S,L,P);else break;ee++}for(;ee<=ve&&ee<=Ie;){const Oe=T[ve],Ke=D[Ie]=P?Ds(D[Ie]):fs(D[Ie]);if(Qs(Oe,Ke))w(Oe,Ke,A,null,ce,x,S,L,P);else break;ve--,Ie--}if(ee>ve){if(ee<=Ie){const Oe=Ie+1,Ke=Oe<ue?D[Oe].el:J;for(;ee<=Ie;)w(null,D[ee]=P?Ds(D[ee]):fs(D[ee]),A,Ke,ce,x,S,L,P),ee++}}else if(ee>Ie)for(;ee<=ve;)Ee(T[ee],ce,x,!0),ee++;else{const Oe=ee,Ke=ee,ge=new Map;for(ee=Ke;ee<=Ie;ee++){const Ve=D[ee]=P?Ds(D[ee]):fs(D[ee]);Ve.key!=null&&ge.set(Ve.key,ee)}let Xe,yt=0;const pt=Ie-Ke+1;let lt=!1,Se=0;const _e=new Array(pt);for(ee=0;ee<pt;ee++)_e[ee]=0;for(ee=Oe;ee<=ve;ee++){const Ve=T[ee];if(yt>=pt){Ee(Ve,ce,x,!0);continue}let et;if(Ve.key!=null)et=ge.get(Ve.key);else for(Xe=Ke;Xe<=Ie;Xe++)if(_e[Xe-Ke]===0&&Qs(Ve,D[Xe])){et=Xe;break}et===void 0?Ee(Ve,ce,x,!0):(_e[et-Ke]=ee+1,et>=Se?Se=et:lt=!0,w(Ve,D[et],A,null,ce,x,S,L,P),yt++)}const Ue=lt?Cf(_e):rn;for(Xe=Ue.length-1,ee=pt-1;ee>=0;ee--){const Ve=Ke+ee,et=D[Ve],ot=D[Ve+1],tt=Ve+1<ue?ot.el||ot.placeholder:J;_e[ee]===0?w(null,et,A,tt,ce,x,S,L,P):lt&&(Xe<0||ee!==Ue[Xe]?Pe(et,A,tt,2):Xe--)}}},Pe=(T,D,A,J,ce=null)=>{const{el:x,type:S,transition:L,children:P,shapeFlag:ee}=T;if(ee&6){Pe(T.component.subTree,D,A,J);return}if(ee&128){T.suspense.move(D,A,J);return}if(ee&64){S.move(T,D,A,Ce);return}if(S===he){o(x,D,A);for(let ve=0;ve<P.length;ve++)Pe(P[ve],D,A,J);o(T.anchor,D,A);return}if(S===So){N(T,D,A);return}if(J!==2&&ee&1&&L)if(J===0)L.beforeEnter(x),o(x,D,A),Lt(()=>L.enter(x),ce);else{const{leave:ve,delayLeave:Ie,afterLeave:Oe}=L,Ke=()=>{T.ctx.isUnmounted?l(x):o(x,D,A)},ge=()=>{x._isLeaving&&x[bs](!0),ve(x,()=>{Ke(),Oe&&Oe()})};Ie?Ie(x,Ke,ge):ge()}else o(x,D,A)},Ee=(T,D,A,J=!1,ce=!1)=>{const{type:x,props:S,ref:L,children:P,dynamicChildren:ee,shapeFlag:ue,patchFlag:ve,dirs:Ie,cacheIndex:Oe}=T;if(ve===-2&&(ce=!1),L!=null&&($s(),Vn(L,null,A,T,!0),Cs()),Oe!=null&&(D.renderCache[Oe]=void 0),ue&256){D.ctx.deactivate(T);return}const Ke=ue&1&&Ie,ge=!fn(T);let Xe;if(ge&&(Xe=S&&S.onVnodeBeforeUnmount)&&rs(Xe,D,T),ue&6)Te(T.component,A,J);else{if(ue&128){T.suspense.unmount(A,J);return}Ke&&qs(T,null,D,"beforeUnmount"),ue&64?T.type.remove(T,D,A,Ce,J):ee&&!ee.hasOnce&&(x!==he||ve>0&&ve&64)?Me(ee,D,A,!1,!0):(x===he&&ve&384||!ce&&ue&16)&&Me(P,D,A),J&&ye(T)}(ge&&(Xe=S&&S.onVnodeUnmounted)||Ke)&&Lt(()=>{Xe&&rs(Xe,D,T),Ke&&qs(T,null,D,"unmounted")},A)},ye=T=>{const{type:D,el:A,anchor:J,transition:ce}=T;if(D===he){de(A,J);return}if(D===So){z(T);return}const x=()=>{l(A),ce&&!ce.persisted&&ce.afterLeave&&ce.afterLeave()};if(T.shapeFlag&1&&ce&&!ce.persisted){const{leave:S,delayLeave:L}=ce,P=()=>S(A,x);L?L(T.el,x,P):P()}else x()},de=(T,D)=>{let A;for(;T!==D;)A=g(T),l(T),T=A;l(D)},Te=(T,D,A)=>{const{bum:J,scope:ce,job:x,subTree:S,um:L,m:P,a:ee}=T;ri(P),ri(ee),J&&$o(J),ce.stop(),x&&(x.flags|=8,Ee(S,T,D,A)),L&&Lt(L,D),Lt(()=>{T.isUnmounted=!0},D)},Me=(T,D,A,J=!1,ce=!1,x=0)=>{for(let S=x;S<T.length;S++)Ee(T[S],D,A,J,ce)},K=T=>{if(T.shapeFlag&6)return K(T.component.subTree);if(T.shapeFlag&128)return T.suspense.next();const D=g(T.anchor||T.el),A=D&&D[cc];return A?g(A):D};let ie=!1;const re=(T,D,A)=>{T==null?D._vnode&&Ee(D._vnode,null,null,!0):w(D._vnode||null,T,D,null,null,null,A),D._vnode=T,ie||(ie=!0,Qa(),ac(),ie=!1)},Ce={p:w,um:Ee,m:Pe,r:ye,mt:M,mc:O,pc:X,pbc:F,n:K,o:e};return{render:re,hydrate:void 0,createApp:vf(re)}}function Rl({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Hs({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function $f(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ua(e,t,s=!1){const o=e.children,l=t.children;if(He(o)&&He(l))for(let a=0;a<o.length;a++){const i=o[a];let r=l[a];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=l[a]=Ds(l[a]),r.el=i.el),!s&&r.patchFlag!==-2&&Ua(i,r)),r.type===al&&r.patchFlag!==-1&&(r.el=i.el),r.type===It&&!r.el&&(r.el=i.el)}}function Cf(e){const t=e.slice(),s=[0];let o,l,a,i,r;const c=e.length;for(o=0;o<c;o++){const f=e[o];if(f!==0){if(l=s[s.length-1],e[l]<f){t[o]=l,s.push(o);continue}for(a=0,i=s.length-1;a<i;)r=a+i>>1,e[s[r]]<f?a=r+1:i=r;f<e[s[a]]&&(a>0&&(t[o]=s[a-1]),s[a]=o)}}for(a=s.length,i=s[a-1];a-- >0;)s[a]=i,i=t[i];return s}function Dc(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Dc(t)}function ri(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const If=Symbol.for("v-scx"),Sf=()=>Yt(If);function st(e,t,s){return Mc(e,t,s)}function Mc(e,t,s=ut){const{immediate:o,deep:l,flush:a,once:i}=s,r=bt({},s),c=t&&o||!t&&a!=="post";let f;if(Yn){if(a==="sync"){const h=Sf();f=h.__watcherHandles||(h.__watcherHandles=[])}else if(!c){const h=()=>{};return h.stop=ps,h.resume=ps,h.pause=ps,h}}const u=St;r.call=(h,b,w)=>ss(h,u,b,w);let v=!1;a==="post"?r.scheduler=h=>{Lt(h,u&&u.suspense)}:a!=="sync"&&(v=!0,r.scheduler=(h,b)=>{b?h():xa(h)}),r.augmentJob=h=>{t&&(h.flags|=4),v&&(h.flags|=2,u&&(h.id=u.uid,h.i=u))};const g=Bd(e,t,r);return Yn&&(f?f.push(g):c&&g()),g}function xf(e,t,s){const o=this.proxy,l=ht(e)?e.includes(".")?Pc(o,e):()=>o[e]:e.bind(o,o);let a;Ze(t)?a=t:(a=t.handler,s=t);const i=io(this),r=Mc(l,a.bind(o),s);return i(),r}function Pc(e,t){const s=t.split(".");return()=>{let o=e;for(let l=0;l<s.length&&o;l++)o=o[s[l]];return o}}const Tf=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Zt(t)}Modifiers`]||e[`${Bs(t)}Modifiers`];function Af(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||ut;let l=s;const a=t.startsWith("update:"),i=a&&Tf(o,t.slice(7));i&&(i.trim&&(l=s.map(u=>ht(u)?u.trim():u)),i.number&&(l=s.map(Lo)));let r,c=o[r=Cl(t)]||o[r=Cl(Zt(t))];!c&&a&&(c=o[r=Cl(Bs(t))]),c&&ss(c,e,6,l);const f=o[r+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ss(f,e,6,l)}}const Ef=new WeakMap;function Lc(e,t,s=!1){const o=s?Ef:t.emitsCache,l=o.get(e);if(l!==void 0)return l;const a=e.emits;let i={},r=!1;if(!Ze(e)){const c=f=>{const u=Lc(f,t,!0);u&&(r=!0,bt(i,u))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!a&&!r?(ct(e)&&o.set(e,null),null):(He(a)?a.forEach(c=>i[c]=null):bt(i,a),ct(e)&&o.set(e,i),i)}function ll(e,t){return!e||!Jo(t)?!1:(t=t.slice(2).replace(/Once$/,""),it(e,t[0].toLowerCase()+t.slice(1))||it(e,Bs(t))||it(e,t))}function ci(e){const{type:t,vnode:s,proxy:o,withProxy:l,propsOptions:[a],slots:i,attrs:r,emit:c,render:f,renderCache:u,props:v,data:g,setupState:h,ctx:b,inheritAttrs:w}=e,C=Bo(e);let I,q;try{if(s.shapeFlag&4){const z=l||o,Z=z;I=fs(f.call(Z,z,u,v,h,g,b)),q=r}else{const z=t;I=fs(z.length>1?z(v,{attrs:r,slots:i,emit:c}):z(v,null)),q=t.props?r:Rf(r)}}catch(z){qn.length=0,sl(z,e,1),I=m(It)}let N=I;if(q&&w!==!1){const z=Object.keys(q),{shapeFlag:Z}=N;z.length&&Z&7&&(a&&z.some(ha)&&(q=Uf(q,a)),N=Ns(N,q,!1,!0))}return s.dirs&&(N=Ns(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(s.dirs):s.dirs),s.transition&&tn(N,s.transition),I=N,Bo(C),I}const Rf=e=>{let t;for(const s in e)(s==="class"||s==="style"||Jo(s))&&((t||(t={}))[s]=e[s]);return t},Uf=(e,t)=>{const s={};for(const o in e)(!ha(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function Df(e,t,s){const{props:o,children:l,component:a}=e,{props:i,children:r,patchFlag:c}=t,f=a.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return o?ui(o,i,f):!!i;if(c&8){const u=t.dynamicProps;for(let v=0;v<u.length;v++){const g=u[v];if(i[g]!==o[g]&&!ll(f,g))return!0}}}else return(l||r)&&(!r||!r.$stable)?!0:o===i?!1:o?i?ui(o,i,f):!0:!!i;return!1}function ui(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l<o.length;l++){const a=o[l];if(t[a]!==e[a]&&!ll(s,a))return!0}return!1}function Mf({vnode:e,parent:t},s){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=s,t=t.parent;else break}}const Oc=e=>e.__isSuspense;function Pf(e,t){t&&t.pendingBranch?He(e)?t.effects.push(...e):t.effects.push(e):qd(e)}const he=Symbol.for("v-fgt"),al=Symbol.for("v-txt"),It=Symbol.for("v-cmt"),So=Symbol.for("v-stc"),qn=[];let zt=null;function d(e=!1){qn.push(zt=e?null:[])}function Lf(){qn.pop(),zt=qn[qn.length-1]||null}let Zn=1;function qo(e,t=!1){Zn+=e,e<0&&zt&&t&&(zt.hasOnce=!0)}function Nc(e){return e.dynamicChildren=Zn>0?zt||rn:null,Lf(),Zn>0&&zt&&zt.push(e),e}function p(e,t,s,o,l,a){return Nc(n(e,t,s,o,l,a,!0))}function Fe(e,t,s,o,l){return Nc(m(e,t,s,o,l,!0))}function Xn(e){return e?e.__v_isVNode===!0:!1}function Qs(e,t){return e.type===t.type&&e.key===t.key}const Fc=({key:e})=>e??null,xo=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ht(e)||At(e)||Ze(e)?{i:kt,r:e,k:t,f:!!s}:e:null);function n(e,t=null,s=null,o=0,l=null,a=e===he?0:1,i=!1,r=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fc(t),ref:t&&xo(t),scopeId:rc,slotScopeIds:null,children:s,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:a,patchFlag:o,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:kt};return r?(Da(c,s),a&128&&e.normalize(c)):s&&(c.shapeFlag|=ht(s)?8:16),Zn>0&&!i&&zt&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&zt.push(c),c}const m=Of;function Of(e,t=null,s=null,o=0,l=null,a=!1){if((!e||e===of)&&(e=It),Xn(e)){const r=Ns(e,t,!0);return s&&Da(r,s),Zn>0&&!a&&zt&&(r.shapeFlag&6?zt[zt.indexOf(e)]=r:zt.push(r)),r.patchFlag=-2,r}if(Gf(e)&&(e=e.__vccOpts),t){t=Nf(t);let{class:r,style:c}=t;r&&!ht(r)&&(t.class=$e(r)),ct(c)&&(Sa(c)&&!He(c)&&(c=bt({},c)),t.style=$t(c))}const i=ht(e)?1:Oc(e)?128:uc(e)?64:ct(e)?4:Ze(e)?2:0;return n(e,t,s,o,l,i,a,!0)}function Nf(e){return e?Sa(e)||xc(e)?bt({},e):e:null}function Ns(e,t,s=!1,o=!1){const{props:l,ref:a,patchFlag:i,children:r,transition:c}=e,f=t?Ff(l||{},t):l,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Fc(f),ref:t&&t.ref?s&&a?He(a)?a.concat(xo(t)):[a,xo(t)]:xo(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ns(e.ssContent),ssFallback:e.ssFallback&&Ns(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&o&&tn(u,c.clone(u)),u}function be(e=" ",t=0){return m(al,null,e,t)}function Ho(e,t){const s=m(So,null,e);return s.staticCount=t,s}function E(e="",t=!1){return t?(d(),Fe(It,null,e)):m(It,null,e)}function fs(e){return e==null||typeof e=="boolean"?m(It):He(e)?m(he,null,e.slice()):Xn(e)?Ds(e):m(al,null,String(e))}function Ds(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ns(e)}function Da(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(He(t))s=16;else if(typeof t=="object")if(o&65){const l=t.default;l&&(l._c&&(l._d=!1),Da(e,l()),l._c&&(l._d=!0));return}else{s=32;const l=t._;!l&&!xc(t)?t._ctx=kt:l===3&&kt&&(kt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ze(t)?(t={default:t,_ctx:kt},s=32):(t=String(t),o&64?(s=16,t=[be(t)]):s=8);e.children=t,e.shapeFlag|=s}function Ff(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const l in o)if(l==="class")t.class!==o.class&&(t.class=$e([t.class,o.class]));else if(l==="style")t.style=$t([t.style,o.style]);else if(Jo(l)){const a=t[l],i=o[l];i&&a!==i&&!(He(a)&&a.includes(i))&&(t[l]=a?[].concat(a,i):i)}else l!==""&&(t[l]=o[l])}return t}function rs(e,t,s,o=null){ss(e,t,7,[s,o])}const Bf=Cc();let Vf=0;function jf(e,t,s){const o=e.type,l=(t?t.appContext:e.appContext)||Bf,a={uid:Vf++,vnode:e,type:o,parent:t,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Fr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(l.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ac(o,l),emitsOptions:Lc(o,l),emit:null,emitted:null,propsDefaults:ut,inheritAttrs:o.inheritAttrs,ctx:ut,data:ut,props:ut,attrs:ut,slots:ut,refs:ut,setupState:ut,setupContext:null,suspense:s,suspenseId:s?s.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 a.ctx={_:a},a.root=t?t.root:a,a.emit=Af.bind(null,a),e.ce&&e.ce(a),a}let St=null;const Ma=()=>St||kt;let zo,ea;{const e=Yo(),t=(s,o)=>{let l;return(l=e[s])||(l=e[s]=[]),l.push(o),a=>{l.length>1?l.forEach(i=>i(a)):l[0](a)}};zo=t("__VUE_INSTANCE_SETTERS__",s=>St=s),ea=t("__VUE_SSR_SETTERS__",s=>Yn=s)}const io=e=>{const t=St;return zo(e),e.scope.on(),()=>{e.scope.off(),zo(t)}},di=()=>{St&&St.scope.off(),zo(null)};function Bc(e){return e.vnode.shapeFlag&4}let Yn=!1;function qf(e,t=!1,s=!1){t&&ea(t);const{props:o,children:l}=e.vnode,a=Bc(e);mf(e,o,a,t),bf(e,l,s||t);const i=a?Hf(e,t):void 0;return t&&ea(!1),i}function Hf(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,af);const{setup:o}=s;if(o){$s();const l=e.setupContext=o.length>1?Wf(e):null,a=io(e),i=ao(o,e,0,[e.props,l]),r=Ur(i);if(Cs(),a(),(r||e.sp)&&!fn(e)&&yc(e),r){if(i.then(di,di),t)return i.then(c=>{fi(e,c)}).catch(c=>{sl(c,e,0)});e.asyncDep=i}else fi(e,i)}else Vc(e)}function fi(e,t,s){Ze(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ct(t)&&(e.setupState=nc(t)),Vc(e)}function Vc(e,t,s){const o=e.type;e.render||(e.render=o.render||ps);{const l=io(e);$s();try{rf(e)}finally{Cs(),l()}}}const zf={get(e,t){return Ct(e,"get",""),e[t]}};function Wf(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,zf),slots:e.slots,emit:e.emit,expose:t}}function il(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nc(tc(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in jn)return jn[s](e)},has(t,s){return s in t||s in jn}})):e.proxy}function Kf(e,t=!0){return Ze(e)?e.displayName||e.name:e.name||t&&e.__name}function Gf(e){return Ze(e)&&"__vccOpts"in e}const fe=(e,t)=>Nd(e,t,Yn);function eo(e,t,s){try{qo(-1);const o=arguments.length;return o===2?ct(t)&&!He(t)?Xn(t)?m(e,null,[t]):m(e,t):m(e,null,t):(o>3?s=Array.prototype.slice.call(arguments,2):o===3&&Xn(s)&&(s=[s]),m(e,t,s))}finally{qo(1)}}const Qf="3.5.22";/**
* @vue/runtime-dom v3.5.22
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let ta;const pi=typeof window<"u"&&window.trustedTypes;if(pi)try{ta=pi.createPolicy("vue",{createHTML:e=>e})}catch{}const jc=ta?e=>ta.createHTML(e):e=>e,Jf="http://www.w3.org/2000/svg",Zf="http://www.w3.org/1998/Math/MathML",ys=typeof document<"u"?document:null,vi=ys&&ys.createElement("template"),Xf={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,o)=>{const l=t==="svg"?ys.createElementNS(Jf,e):t==="mathml"?ys.createElementNS(Zf,e):s?ys.createElement(e,{is:s}):ys.createElement(e);return e==="select"&&o&&o.multiple!=null&&l.setAttribute("multiple",o.multiple),l},createText:e=>ys.createTextNode(e),createComment:e=>ys.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ys.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,l,a){const i=s?s.previousSibling:t.lastChild;if(l&&(l===a||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),s),!(l===a||!(l=l.nextSibling)););else{vi.innerHTML=jc(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const r=vi.content;if(o==="svg"||o==="mathml"){const c=r.firstChild;for(;c.firstChild;)r.appendChild(c.firstChild);r.removeChild(c)}t.insertBefore(r,s)}return[i?i.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},As="transition",Tn="animation",vn=Symbol("_vtc"),qc={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},Hc=bt({},vc,qc),Yf=e=>(e.displayName="Transition",e.props=Hc,e),mt=Yf((e,{slots:t})=>eo(Wd,zc(e),t)),zs=(e,t=[])=>{He(e)?e.forEach(s=>s(...t)):e&&e(...t)},mi=e=>e?He(e)?e.some(t=>t.length>1):e.length>1:!1;function zc(e){const t={};for(const U in e)U in qc||(t[U]=e[U]);if(e.css===!1)return t;const{name:s="v",type:o,duration:l,enterFromClass:a=`${s}-enter-from`,enterActiveClass:i=`${s}-enter-active`,enterToClass:r=`${s}-enter-to`,appearFromClass:c=a,appearActiveClass:f=i,appearToClass:u=r,leaveFromClass:v=`${s}-leave-from`,leaveActiveClass:g=`${s}-leave-active`,leaveToClass:h=`${s}-leave-to`}=e,b=ep(l),w=b&&b[0],C=b&&b[1],{onBeforeEnter:I,onEnter:q,onEnterCancelled:N,onLeave:z,onLeaveCancelled:Z,onBeforeAppear:W=I,onAppear:te=q,onAppearCancelled:O=N}=t,R=(U,se,M,G)=>{U._enterCancelled=G,Rs(U,se?u:r),Rs(U,se?f:i),M&&M()},F=(U,se)=>{U._isLeaving=!1,Rs(U,v),Rs(U,h),Rs(U,g),se&&se()},$=U=>(se,M)=>{const G=U?te:q,B=()=>R(se,U,M);zs(G,[se,B]),hi(()=>{Rs(se,U?c:a),us(se,U?u:r),mi(G)||gi(se,o,w,B)})};return bt(t,{onBeforeEnter(U){zs(I,[U]),us(U,a),us(U,i)},onBeforeAppear(U){zs(W,[U]),us(U,c),us(U,f)},onEnter:$(!1),onAppear:$(!0),onLeave(U,se){U._isLeaving=!0;const M=()=>F(U,se);us(U,v),U._enterCancelled?(us(U,g),sa(U)):(sa(U),us(U,g)),hi(()=>{U._isLeaving&&(Rs(U,v),us(U,h),mi(z)||gi(U,o,C,M))}),zs(z,[U,M])},onEnterCancelled(U){R(U,!1,void 0,!0),zs(N,[U])},onAppearCancelled(U){R(U,!0,void 0,!0),zs(O,[U])},onLeaveCancelled(U){F(U),zs(Z,[U])}})}function ep(e){if(e==null)return null;if(ct(e))return[Ul(e.enter),Ul(e.leave)];{const t=Ul(e);return[t,t]}}function Ul(e){return id(e)}function us(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.add(s)),(e[vn]||(e[vn]=new Set)).add(t)}function Rs(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const s=e[vn];s&&(s.delete(t),s.size||(e[vn]=void 0))}function hi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let tp=0;function gi(e,t,s,o){const l=e._endId=++tp,a=()=>{l===e._endId&&o()};if(s!=null)return setTimeout(a,s);const{type:i,timeout:r,propCount:c}=Wc(e,t);if(!i)return o();const f=i+"end";let u=0;const v=()=>{e.removeEventListener(f,g),a()},g=h=>{h.target===e&&++u>=c&&v()};setTimeout(()=>{u<c&&v()},r+1),e.addEventListener(f,g)}function Wc(e,t){const s=window.getComputedStyle(e),o=b=>(s[b]||"").split(", "),l=o(`${As}Delay`),a=o(`${As}Duration`),i=yi(l,a),r=o(`${Tn}Delay`),c=o(`${Tn}Duration`),f=yi(r,c);let u=null,v=0,g=0;t===As?i>0&&(u=As,v=i,g=a.length):t===Tn?f>0&&(u=Tn,v=f,g=c.length):(v=Math.max(i,f),u=v>0?i>f?As:Tn:null,g=u?u===As?a.length:c.length:0);const h=u===As&&/\b(?:transform|all)(?:,|$)/.test(o(`${As}Property`).toString());return{type:u,timeout:v,propCount:g,hasTransform:h}}function yi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((s,o)=>bi(s)+bi(e[o])))}function bi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function sa(e){return(e?e.ownerDocument:document).body.offsetHeight}function sp(e,t,s){const o=e[vn];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Wo=Symbol("_vod"),Kc=Symbol("_vsh"),es={name:"show",beforeMount(e,{value:t},{transition:s}){e[Wo]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):An(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:o}){!t!=!s&&(o?t?(o.beforeEnter(e),An(e,!0),o.enter(e)):o.leave(e,()=>{An(e,!1)}):An(e,t))},beforeUnmount(e,{value:t}){An(e,t)}};function An(e,t){e.style.display=t?e[Wo]:"none",e[Kc]=!t}const np=Symbol(""),op=/(?:^|;)\s*display\s*:/;function lp(e,t,s){const o=e.style,l=ht(s);let a=!1;if(s&&!l){if(t)if(ht(t))for(const i of t.split(";")){const r=i.slice(0,i.indexOf(":")).trim();s[r]==null&&To(o,r,"")}else for(const i in t)s[i]==null&&To(o,i,"");for(const i in s)i==="display"&&(a=!0),To(o,i,s[i])}else if(l){if(t!==s){const i=o[np];i&&(s+=";"+i),o.cssText=s,a=op.test(s)}}else t&&e.removeAttribute("style");Wo in e&&(e[Wo]=a?o.display:"",e[Kc]&&(o.display="none"))}const _i=/\s*!important$/;function To(e,t,s){if(He(s))s.forEach(o=>To(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=ap(e,t);_i.test(s)?e.setProperty(Bs(o),s.replace(_i,""),"important"):e[o]=s}}const wi=["Webkit","Moz","ms"],Dl={};function ap(e,t){const s=Dl[t];if(s)return s;let o=Zt(t);if(o!=="filter"&&o in e)return Dl[t]=o;o=Xo(o);for(let l=0;l<wi.length;l++){const a=wi[l]+o;if(a in e)return Dl[t]=a}return t}const ki="http://www.w3.org/1999/xlink";function $i(e,t,s,o,l,a=pd(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(ki,t.slice(6,t.length)):e.setAttributeNS(ki,t,s):s==null||a&&!Lr(s)?e.removeAttribute(t):e.setAttribute(t,a?"":ts(s)?String(s):s)}function Ci(e,t,s,o,l){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?jc(s):s);return}const a=e.tagName;if(t==="value"&&a!=="PROGRESS"&&!a.includes("-")){const r=a==="OPTION"?e.getAttribute("value")||"":e.value,c=s==null?e.type==="checkbox"?"on":"":String(s);(r!==c||!("_value"in e))&&(e.value=c),s==null&&e.removeAttribute(t),e._value=s;return}let i=!1;if(s===""||s==null){const r=typeof e[t];r==="boolean"?s=Lr(s):s==null&&r==="string"?(s="",i=!0):r==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(l||t)}function ks(e,t,s,o){e.addEventListener(t,s,o)}function ip(e,t,s,o){e.removeEventListener(t,s,o)}const Ii=Symbol("_vei");function rp(e,t,s,o,l=null){const a=e[Ii]||(e[Ii]={}),i=a[t];if(o&&i)i.value=o;else{const[r,c]=cp(t);if(o){const f=a[t]=fp(o,l);ks(e,r,f,c)}else i&&(ip(e,r,i,c),a[t]=void 0)}}const Si=/(?:Once|Passive|Capture)$/;function cp(e){let t;if(Si.test(e)){t={};let o;for(;o=e.match(Si);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Bs(e.slice(2)),t]}let Ml=0;const up=Promise.resolve(),dp=()=>Ml||(up.then(()=>Ml=0),Ml=Date.now());function fp(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;ss(pp(o,s.value),t,5,[o])};return s.value=e,s.attached=dp(),s}function pp(e,t){if(He(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>l=>!l._stopped&&o&&o(l))}else return t}const xi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,vp=(e,t,s,o,l,a)=>{const i=l==="svg";t==="class"?sp(e,o,i):t==="style"?lp(e,s,o):Jo(t)?ha(t)||rp(e,t,s,o,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):mp(e,t,o,i))?(Ci(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&$i(e,t,o,i,a,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ht(o))?Ci(e,Zt(t),o,a,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),$i(e,t,o,i))};function mp(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&xi(t)&&Ze(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const l=e.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return xi(t)&&ht(s)?!1:t in e}const Gc=new WeakMap,Qc=new WeakMap,Ko=Symbol("_moveCb"),Ti=Symbol("_enterCb"),hp=e=>(delete e.props.mode,e),gp=hp({name:"TransitionGroup",props:bt({},Hc,{tag:String,moveClass:String}),setup(e,{slots:t}){const s=Ma(),o=pc();let l,a;return _c(()=>{if(!l.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!kp(l[0].el,s.vnode.el,i)){l=[];return}l.forEach(bp),l.forEach(_p);const r=l.filter(wp);sa(s.vnode.el),r.forEach(c=>{const f=c.el,u=f.style;us(f,i),u.transform=u.webkitTransform=u.transitionDuration="";const v=f[Ko]=g=>{g&&g.target!==f||(!g||g.propertyName.endsWith("transform"))&&(f.removeEventListener("transitionend",v),f[Ko]=null,Rs(f,i))};f.addEventListener("transitionend",v)}),l=[]}),()=>{const i=nt(e),r=zc(i);let c=i.tag||he;if(l=[],a)for(let f=0;f<a.length;f++){const u=a[f];u.el&&u.el instanceof Element&&(l.push(u),tn(u,Jn(u,r,o,s)),Gc.set(u,u.el.getBoundingClientRect()))}a=t.default?Ta(t.default()):[];for(let f=0;f<a.length;f++){const u=a[f];u.key!=null&&tn(u,Jn(u,r,o,s))}return m(c,null,a)}}}),yp=gp;function bp(e){const t=e.el;t[Ko]&&t[Ko](),t[Ti]&&t[Ti]()}function _p(e){Qc.set(e,e.el.getBoundingClientRect())}function wp(e){const t=Gc.get(e),s=Qc.get(e),o=t.left-s.left,l=t.top-s.top;if(o||l){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${o}px,${l}px)`,a.transitionDuration="0s",e}}function kp(e,t,s){const o=e.cloneNode(),l=e[vn];l&&l.forEach(r=>{r.split(/\s+/).forEach(c=>c&&o.classList.remove(c))}),s.split(/\s+/).forEach(r=>r&&o.classList.add(r)),o.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(o);const{hasTransform:i}=Wc(o);return a.removeChild(o),i}const Fs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return He(t)?s=>$o(t,s):t};function $p(e){e.target.composing=!0}function Ai(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Jt=Symbol("_assign"),Je={created(e,{modifiers:{lazy:t,trim:s,number:o}},l){e[Jt]=Fs(l);const a=o||l.props&&l.props.type==="number";ks(e,t?"change":"input",i=>{if(i.target.composing)return;let r=e.value;s&&(r=r.trim()),a&&(r=Lo(r)),e[Jt](r)}),s&&ks(e,"change",()=>{e.value=e.value.trim()}),t||(ks(e,"compositionstart",$p),ks(e,"compositionend",Ai),ks(e,"change",Ai))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:l,number:a}},i){if(e[Jt]=Fs(i),e.composing)return;const r=(a||e.type==="number")&&!/^0\d/.test(e.value)?Lo(e.value):e.value,c=t??"";r!==c&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||l&&e.value.trim()===c)||(e.value=c))}},Jc={deep:!0,created(e,t,s){e[Jt]=Fs(s),ks(e,"change",()=>{const o=e._modelValue,l=mn(e),a=e.checked,i=e[Jt];if(He(o)){const r=ba(o,l),c=r!==-1;if(a&&!c)i(o.concat(l));else if(!a&&c){const f=[...o];f.splice(r,1),i(f)}}else if(_n(o)){const r=new Set(o);a?r.add(l):r.delete(l),i(r)}else i(Zc(e,a))})},mounted:Ei,beforeUpdate(e,t,s){e[Jt]=Fs(s),Ei(e,t,s)}};function Ei(e,{value:t,oldValue:s},o){e._modelValue=t;let l;if(He(t))l=ba(t,o.props.value)>-1;else if(_n(t))l=t.has(o.props.value);else{if(t===s)return;l=en(t,Zc(e,!0))}e.checked!==l&&(e.checked=l)}const Cp={created(e,{value:t},s){e.checked=en(t,s.props.value),e[Jt]=Fs(s),ks(e,"change",()=>{e[Jt](mn(e))})},beforeUpdate(e,{value:t,oldValue:s},o){e[Jt]=Fs(o),t!==s&&(e.checked=en(t,o.props.value))}},Pa={deep:!0,created(e,{value:t,modifiers:{number:s}},o){const l=_n(t);ks(e,"change",()=>{const a=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>s?Lo(mn(i)):mn(i));e[Jt](e.multiple?l?new Set(a):a:a[0]),e._assigning=!0,vt(()=>{e._assigning=!1})}),e[Jt]=Fs(o)},mounted(e,{value:t}){Ri(e,t)},beforeUpdate(e,t,s){e[Jt]=Fs(s)},updated(e,{value:t}){e._assigning||Ri(e,t)}};function Ri(e,t){const s=e.multiple,o=He(t);if(!(s&&!o&&!_n(t))){for(let l=0,a=e.options.length;l<a;l++){const i=e.options[l],r=mn(i);if(s)if(o){const c=typeof r;c==="string"||c==="number"?i.selected=t.some(f=>String(f)===String(r)):i.selected=ba(t,r)>-1}else i.selected=t.has(r);else if(en(mn(i),t)){e.selectedIndex!==l&&(e.selectedIndex=l);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function mn(e){return"_value"in e?e._value:e.value}function Zc(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Ip={created(e,t,s){bo(e,t,s,null,"created")},mounted(e,t,s){bo(e,t,s,null,"mounted")},beforeUpdate(e,t,s,o){bo(e,t,s,o,"beforeUpdate")},updated(e,t,s,o){bo(e,t,s,o,"updated")}};function Sp(e,t){switch(e){case"SELECT":return Pa;case"TEXTAREA":return Je;default:switch(t){case"checkbox":return Jc;case"radio":return Cp;default:return Je}}}function bo(e,t,s,o,l){const i=Sp(e.tagName,s.props&&s.props.type)[l];i&&i(e,t,s,o)}const xp=["ctrl","shift","alt","meta"],Tp={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)=>xp.some(s=>e[`${s}Key`]&&!t.includes(s))},je=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(l,...a)=>{for(let i=0;i<t.length;i++){const r=Tp[t[i]];if(r&&r(l,t))return}return e(l,...a)})},Ap={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Xs=(e,t)=>{const s=e._withKeys||(e._withKeys={}),o=t.join(".");return s[o]||(s[o]=l=>{if(!("key"in l))return;const a=Bs(l.key);if(t.some(i=>i===a||Ap[i]===a))return e(l)})},Ep=bt({patchProp:vp},Xf);let Ui;function Rp(){return Ui||(Ui=wf(Ep))}const Up=(...e)=>{const t=Rp().createApp(...e),{mount:s}=t;return t.mount=o=>{const l=Mp(o);if(!l)return;const a=t._component;!Ze(a)&&!a.render&&!a.template&&(a.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const i=s(l,!1,Dp(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),i},t};function Dp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Mp(e){return ht(e)?document.querySelector(e):e}/*!
* pinia v2.3.1
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/const Pp=Symbol();var Di;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Di||(Di={}));function Lp(){const e=md(!0),t=e.run(()=>k({}));let s=[],o=[];const l=tc({install(a){l._a=a,a.provide(Pp,l),a.config.globalProperties.$pinia=l,o.forEach(i=>s.push(i)),o=[]},use(a){return this._a?s.push(a):o.push(a),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return l}function Xc(e,t){return function(){return e.apply(t,arguments)}}const{toString:Op}=Object.prototype,{getPrototypeOf:La}=Object,{iterator:rl,toStringTag:Yc}=Symbol,cl=(e=>t=>{const s=Op.call(t);return e[s]||(e[s]=s.slice(8,-1).toLowerCase())})(Object.create(null)),os=e=>(e=e.toLowerCase(),t=>cl(t)===e),ul=e=>t=>typeof t===e,{isArray:wn}=Array,hn=ul("undefined");function ro(e){return e!==null&&!hn(e)&&e.constructor!==null&&!hn(e.constructor)&&qt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const eu=os("ArrayBuffer");function Np(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&eu(e.buffer),t}const Fp=ul("string"),qt=ul("function"),tu=ul("number"),co=e=>e!==null&&typeof e=="object",Bp=e=>e===!0||e===!1,Ao=e=>{if(cl(e)!=="object")return!1;const t=La(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Yc in e)&&!(rl in e)},Vp=e=>{if(!co(e)||ro(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},jp=os("Date"),qp=os("File"),Hp=os("Blob"),zp=os("FileList"),Wp=e=>co(e)&&qt(e.pipe),Kp=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||qt(e.append)&&((t=cl(e))==="formdata"||t==="object"&&qt(e.toString)&&e.toString()==="[object FormData]"))},Gp=os("URLSearchParams"),[Qp,Jp,Zp,Xp]=["ReadableStream","Request","Response","Headers"].map(os),Yp=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function uo(e,t,{allOwnKeys:s=!1}={}){if(e===null||typeof e>"u")return;let o,l;if(typeof e!="object"&&(e=[e]),wn(e))for(o=0,l=e.length;o<l;o++)t.call(null,e[o],o,e);else{if(ro(e))return;const a=s?Object.getOwnPropertyNames(e):Object.keys(e),i=a.length;let r;for(o=0;o<i;o++)r=a[o],t.call(null,e[r],r,e)}}function su(e,t){if(ro(e))return null;t=t.toLowerCase();const s=Object.keys(e);let o=s.length,l;for(;o-- >0;)if(l=s[o],t===l.toLowerCase())return l;return null}const Js=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,nu=e=>!hn(e)&&e!==Js;function na(){const{caseless:e,skipUndefined:t}=nu(this)&&this||{},s={},o=(l,a)=>{const i=e&&su(s,a)||a;Ao(s[i])&&Ao(l)?s[i]=na(s[i],l):Ao(l)?s[i]=na({},l):wn(l)?s[i]=l.slice():(!t||!hn(l))&&(s[i]=l)};for(let l=0,a=arguments.length;l<a;l++)arguments[l]&&uo(arguments[l],o);return s}const ev=(e,t,s,{allOwnKeys:o}={})=>(uo(t,(l,a)=>{s&&qt(l)?e[a]=Xc(l,s):e[a]=l},{allOwnKeys:o}),e),tv=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),sv=(e,t,s,o)=>{e.prototype=Object.create(t.prototype,o),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),s&&Object.assign(e.prototype,s)},nv=(e,t,s,o)=>{let l,a,i;const r={};if(t=t||{},e==null)return t;do{for(l=Object.getOwnPropertyNames(e),a=l.length;a-- >0;)i=l[a],(!o||o(i,e,t))&&!r[i]&&(t[i]=e[i],r[i]=!0);e=s!==!1&&La(e)}while(e&&(!s||s(e,t))&&e!==Object.prototype);return t},ov=(e,t,s)=>{e=String(e),(s===void 0||s>e.length)&&(s=e.length),s-=t.length;const o=e.indexOf(t,s);return o!==-1&&o===s},lv=e=>{if(!e)return null;if(wn(e))return e;let t=e.length;if(!tu(t))return null;const s=new Array(t);for(;t-- >0;)s[t]=e[t];return s},av=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&La(Uint8Array)),iv=(e,t)=>{const o=(e&&e[rl]).call(e);let l;for(;(l=o.next())&&!l.done;){const a=l.value;t.call(e,a[0],a[1])}},rv=(e,t)=>{let s;const o=[];for(;(s=e.exec(t))!==null;)o.push(s);return o},cv=os("HTMLFormElement"),uv=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(s,o,l){return o.toUpperCase()+l}),Mi=(({hasOwnProperty:e})=>(t,s)=>e.call(t,s))(Object.prototype),dv=os("RegExp"),ou=(e,t)=>{const s=Object.getOwnPropertyDescriptors(e),o={};uo(s,(l,a)=>{let i;(i=t(l,a,e))!==!1&&(o[a]=i||l)}),Object.defineProperties(e,o)},fv=e=>{ou(e,(t,s)=>{if(qt(e)&&["arguments","caller","callee"].indexOf(s)!==-1)return!1;const o=e[s];if(qt(o)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+s+"'")})}})},pv=(e,t)=>{const s={},o=l=>{l.forEach(a=>{s[a]=!0})};return wn(e)?o(e):o(String(e).split(t)),s},vv=()=>{},mv=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function hv(e){return!!(e&&qt(e.append)&&e[Yc]==="FormData"&&e[rl])}const gv=e=>{const t=new Array(10),s=(o,l)=>{if(co(o)){if(t.indexOf(o)>=0)return;if(ro(o))return o;if(!("toJSON"in o)){t[l]=o;const a=wn(o)?[]:{};return uo(o,(i,r)=>{const c=s(i,l+1);!hn(c)&&(a[r]=c)}),t[l]=void 0,a}}return o};return s(e,0)},yv=os("AsyncFunction"),bv=e=>e&&(co(e)||qt(e))&&qt(e.then)&&qt(e.catch),lu=((e,t)=>e?setImmediate:t?((s,o)=>(Js.addEventListener("message",({source:l,data:a})=>{l===Js&&a===s&&o.length&&o.shift()()},!1),l=>{o.push(l),Js.postMessage(s,"*")}))(`axios@${Math.random()}`,[]):s=>setTimeout(s))(typeof setImmediate=="function",qt(Js.postMessage)),_v=typeof queueMicrotask<"u"?queueMicrotask.bind(Js):typeof process<"u"&&process.nextTick||lu,wv=e=>e!=null&&qt(e[rl]),le={isArray:wn,isArrayBuffer:eu,isBuffer:ro,isFormData:Kp,isArrayBufferView:Np,isString:Fp,isNumber:tu,isBoolean:Bp,isObject:co,isPlainObject:Ao,isEmptyObject:Vp,isReadableStream:Qp,isRequest:Jp,isResponse:Zp,isHeaders:Xp,isUndefined:hn,isDate:jp,isFile:qp,isBlob:Hp,isRegExp:dv,isFunction:qt,isStream:Wp,isURLSearchParams:Gp,isTypedArray:av,isFileList:zp,forEach:uo,merge:na,extend:ev,trim:Yp,stripBOM:tv,inherits:sv,toFlatObject:nv,kindOf:cl,kindOfTest:os,endsWith:ov,toArray:lv,forEachEntry:iv,matchAll:rv,isHTMLForm:cv,hasOwnProperty:Mi,hasOwnProp:Mi,reduceDescriptors:ou,freezeMethods:fv,toObjectSet:pv,toCamelCase:uv,noop:vv,toFiniteNumber:mv,findKey:su,global:Js,isContextDefined:nu,isSpecCompliantForm:hv,toJSONObject:gv,isAsyncFn:yv,isThenable:bv,setImmediate:lu,asap:_v,isIterable:wv};function Ye(e,t,s,o,l){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),s&&(this.config=s),o&&(this.request=o),l&&(this.response=l,this.status=l.status?l.status:null)}le.inherits(Ye,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:le.toJSONObject(this.config),code:this.code,status:this.status}}});const au=Ye.prototype,iu={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{iu[e]={value:e}});Object.defineProperties(Ye,iu);Object.defineProperty(au,"isAxiosError",{value:!0});Ye.from=(e,t,s,o,l,a)=>{const i=Object.create(au);le.toFlatObject(e,i,function(u){return u!==Error.prototype},f=>f!=="isAxiosError");const r=e&&e.message?e.message:"Error",c=t==null&&e?e.code:t;return Ye.call(i,r,c,s,o,l),e&&i.cause==null&&Object.defineProperty(i,"cause",{value:e,configurable:!0}),i.name=e&&e.name||"Error",a&&Object.assign(i,a),i};const kv=null;function oa(e){return le.isPlainObject(e)||le.isArray(e)}function ru(e){return le.endsWith(e,"[]")?e.slice(0,-2):e}function Pi(e,t,s){return e?e.concat(t).map(function(l,a){return l=ru(l),!s&&a?"["+l+"]":l}).join(s?".":""):t}function $v(e){return le.isArray(e)&&!e.some(oa)}const Cv=le.toFlatObject(le,{},null,function(t){return/^is[A-Z]/.test(t)});function dl(e,t,s){if(!le.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,s=le.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,C){return!le.isUndefined(C[w])});const o=s.metaTokens,l=s.visitor||u,a=s.dots,i=s.indexes,c=(s.Blob||typeof Blob<"u"&&Blob)&&le.isSpecCompliantForm(t);if(!le.isFunction(l))throw new TypeError("visitor must be a function");function f(b){if(b===null)return"";if(le.isDate(b))return b.toISOString();if(le.isBoolean(b))return b.toString();if(!c&&le.isBlob(b))throw new Ye("Blob is not supported. Use a Buffer instead.");return le.isArrayBuffer(b)||le.isTypedArray(b)?c&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function u(b,w,C){let I=b;if(b&&!C&&typeof b=="object"){if(le.endsWith(w,"{}"))w=o?w:w.slice(0,-2),b=JSON.stringify(b);else if(le.isArray(b)&&$v(b)||(le.isFileList(b)||le.endsWith(w,"[]"))&&(I=le.toArray(b)))return w=ru(w),I.forEach(function(N,z){!(le.isUndefined(N)||N===null)&&t.append(i===!0?Pi([w],z,a):i===null?w:w+"[]",f(N))}),!1}return oa(b)?!0:(t.append(Pi(C,w,a),f(b)),!1)}const v=[],g=Object.assign(Cv,{defaultVisitor:u,convertValue:f,isVisitable:oa});function h(b,w){if(!le.isUndefined(b)){if(v.indexOf(b)!==-1)throw Error("Circular reference detected in "+w.join("."));v.push(b),le.forEach(b,function(I,q){(!(le.isUndefined(I)||I===null)&&l.call(t,I,le.isString(q)?q.trim():q,w,g))===!0&&h(I,w?w.concat(q):[q])}),v.pop()}}if(!le.isObject(e))throw new TypeError("data must be an object");return h(e),t}function Li(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(o){return t[o]})}function Oa(e,t){this._pairs=[],e&&dl(e,this,t)}const cu=Oa.prototype;cu.append=function(t,s){this._pairs.push([t,s])};cu.toString=function(t){const s=t?function(o){return t.call(this,o,Li)}:Li;return this._pairs.map(function(l){return s(l[0])+"="+s(l[1])},"").join("&")};function Iv(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function uu(e,t,s){if(!t)return e;const o=s&&s.encode||Iv;le.isFunction(s)&&(s={serialize:s});const l=s&&s.serialize;let a;if(l?a=l(t,s):a=le.isURLSearchParams(t)?t.toString():new Oa(t,s).toString(o),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class Oi{constructor(){this.handlers=[]}use(t,s,o){return this.handlers.push({fulfilled:t,rejected:s,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){le.forEach(this.handlers,function(o){o!==null&&t(o)})}}const du={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Sv=typeof URLSearchParams<"u"?URLSearchParams:Oa,xv=typeof FormData<"u"?FormData:null,Tv=typeof Blob<"u"?Blob:null,Av={isBrowser:!0,classes:{URLSearchParams:Sv,FormData:xv,Blob:Tv},protocols:["http","https","file","blob","url","data"]},Na=typeof window<"u"&&typeof document<"u",la=typeof navigator=="object"&&navigator||void 0,Ev=Na&&(!la||["ReactNative","NativeScript","NS"].indexOf(la.product)<0),Rv=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Uv=Na&&window.location.href||"http://localhost",Dv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Na,hasStandardBrowserEnv:Ev,hasStandardBrowserWebWorkerEnv:Rv,navigator:la,origin:Uv},Symbol.toStringTag,{value:"Module"})),xt={...Dv,...Av};function Mv(e,t){return dl(e,new xt.classes.URLSearchParams,{visitor:function(s,o,l,a){return xt.isNode&&le.isBuffer(s)?(this.append(o,s.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}function Pv(e){return le.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Lv(e){const t={},s=Object.keys(e);let o;const l=s.length;let a;for(o=0;o<l;o++)a=s[o],t[a]=e[a];return t}function fu(e){function t(s,o,l,a){let i=s[a++];if(i==="__proto__")return!0;const r=Number.isFinite(+i),c=a>=s.length;return i=!i&&le.isArray(l)?l.length:i,c?(le.hasOwnProp(l,i)?l[i]=[l[i],o]:l[i]=o,!r):((!l[i]||!le.isObject(l[i]))&&(l[i]=[]),t(s,o,l[i],a)&&le.isArray(l[i])&&(l[i]=Lv(l[i])),!r)}if(le.isFormData(e)&&le.isFunction(e.entries)){const s={};return le.forEachEntry(e,(o,l)=>{t(Pv(o),l,s,0)}),s}return null}function Ov(e,t,s){if(le.isString(e))try{return(t||JSON.parse)(e),le.trim(e)}catch(o){if(o.name!=="SyntaxError")throw o}return(s||JSON.stringify)(e)}const fo={transitional:du,adapter:["xhr","http","fetch"],transformRequest:[function(t,s){const o=s.getContentType()||"",l=o.indexOf("application/json")>-1,a=le.isObject(t);if(a&&le.isHTMLForm(t)&&(t=new FormData(t)),le.isFormData(t))return l?JSON.stringify(fu(t)):t;if(le.isArrayBuffer(t)||le.isBuffer(t)||le.isStream(t)||le.isFile(t)||le.isBlob(t)||le.isReadableStream(t))return t;if(le.isArrayBufferView(t))return t.buffer;if(le.isURLSearchParams(t))return s.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(a){if(o.indexOf("application/x-www-form-urlencoded")>-1)return Mv(t,this.formSerializer).toString();if((r=le.isFileList(t))||o.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return dl(r?{"files[]":t}:t,c&&new c,this.formSerializer)}}return a||l?(s.setContentType("application/json",!1),Ov(t)):t}],transformResponse:[function(t){const s=this.transitional||fo.transitional,o=s&&s.forcedJSONParsing,l=this.responseType==="json";if(le.isResponse(t)||le.isReadableStream(t))return t;if(t&&le.isString(t)&&(o&&!this.responseType||l)){const i=!(s&&s.silentJSONParsing)&&l;try{return JSON.parse(t,this.parseReviver)}catch(r){if(i)throw r.name==="SyntaxError"?Ye.from(r,Ye.ERR_BAD_RESPONSE,this,null,this.response):r}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:xt.classes.FormData,Blob:xt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};le.forEach(["delete","get","head","post","put","patch"],e=>{fo.headers[e]={}});const Nv=le.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Fv=e=>{const t={};let s,o,l;return e&&e.split(`
`).forEach(function(i){l=i.indexOf(":"),s=i.substring(0,l).trim().toLowerCase(),o=i.substring(l+1).trim(),!(!s||t[s]&&Nv[s])&&(s==="set-cookie"?t[s]?t[s].push(o):t[s]=[o]:t[s]=t[s]?t[s]+", "+o:o)}),t},Ni=Symbol("internals");function En(e){return e&&String(e).trim().toLowerCase()}function Eo(e){return e===!1||e==null?e:le.isArray(e)?e.map(Eo):String(e)}function Bv(e){const t=Object.create(null),s=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let o;for(;o=s.exec(e);)t[o[1]]=o[2];return t}const Vv=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Pl(e,t,s,o,l){if(le.isFunction(o))return o.call(this,t,s);if(l&&(t=s),!!le.isString(t)){if(le.isString(o))return t.indexOf(o)!==-1;if(le.isRegExp(o))return o.test(t)}}function jv(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,s,o)=>s.toUpperCase()+o)}function qv(e,t){const s=le.toCamelCase(" "+t);["get","set","has"].forEach(o=>{Object.defineProperty(e,o+s,{value:function(l,a,i){return this[o].call(this,t,l,a,i)},configurable:!0})})}let Ht=class{constructor(t){t&&this.set(t)}set(t,s,o){const l=this;function a(r,c,f){const u=En(c);if(!u)throw new Error("header name must be a non-empty string");const v=le.findKey(l,u);(!v||l[v]===void 0||f===!0||f===void 0&&l[v]!==!1)&&(l[v||c]=Eo(r))}const i=(r,c)=>le.forEach(r,(f,u)=>a(f,u,c));if(le.isPlainObject(t)||t instanceof this.constructor)i(t,s);else if(le.isString(t)&&(t=t.trim())&&!Vv(t))i(Fv(t),s);else if(le.isObject(t)&&le.isIterable(t)){let r={},c,f;for(const u of t){if(!le.isArray(u))throw TypeError("Object iterator must return a key-value pair");r[f=u[0]]=(c=r[f])?le.isArray(c)?[...c,u[1]]:[c,u[1]]:u[1]}i(r,s)}else t!=null&&a(s,t,o);return this}get(t,s){if(t=En(t),t){const o=le.findKey(this,t);if(o){const l=this[o];if(!s)return l;if(s===!0)return Bv(l);if(le.isFunction(s))return s.call(this,l,o);if(le.isRegExp(s))return s.exec(l);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,s){if(t=En(t),t){const o=le.findKey(this,t);return!!(o&&this[o]!==void 0&&(!s||Pl(this,this[o],o,s)))}return!1}delete(t,s){const o=this;let l=!1;function a(i){if(i=En(i),i){const r=le.findKey(o,i);r&&(!s||Pl(o,o[r],r,s))&&(delete o[r],l=!0)}}return le.isArray(t)?t.forEach(a):a(t),l}clear(t){const s=Object.keys(this);let o=s.length,l=!1;for(;o--;){const a=s[o];(!t||Pl(this,this[a],a,t,!0))&&(delete this[a],l=!0)}return l}normalize(t){const s=this,o={};return le.forEach(this,(l,a)=>{const i=le.findKey(o,a);if(i){s[i]=Eo(l),delete s[a];return}const r=t?jv(a):String(a).trim();r!==a&&delete s[a],s[r]=Eo(l),o[r]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const s=Object.create(null);return le.forEach(this,(o,l)=>{o!=null&&o!==!1&&(s[l]=t&&le.isArray(o)?o.join(", "):o)}),s}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,s])=>t+": "+s).join(`
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...s){const o=new this(t);return s.forEach(l=>o.set(l)),o}static accessor(t){const o=(this[Ni]=this[Ni]={accessors:{}}).accessors,l=this.prototype;function a(i){const r=En(i);o[r]||(qv(l,i),o[r]=!0)}return le.isArray(t)?t.forEach(a):a(t),this}};Ht.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);le.reduceDescriptors(Ht.prototype,({value:e},t)=>{let s=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(o){this[s]=o}}});le.freezeMethods(Ht);function Ll(e,t){const s=this||fo,o=t||s,l=Ht.from(o.headers);let a=o.data;return le.forEach(e,function(r){a=r.call(s,a,l.normalize(),t?t.status:void 0)}),l.normalize(),a}function pu(e){return!!(e&&e.__CANCEL__)}function kn(e,t,s){Ye.call(this,e??"canceled",Ye.ERR_CANCELED,t,s),this.name="CanceledError"}le.inherits(kn,Ye,{__CANCEL__:!0});function vu(e,t,s){const o=s.config.validateStatus;!s.status||!o||o(s.status)?e(s):t(new Ye("Request failed with status code "+s.status,[Ye.ERR_BAD_REQUEST,Ye.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s))}function Hv(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function zv(e,t){e=e||10;const s=new Array(e),o=new Array(e);let l=0,a=0,i;return t=t!==void 0?t:1e3,function(c){const f=Date.now(),u=o[a];i||(i=f),s[l]=c,o[l]=f;let v=a,g=0;for(;v!==l;)g+=s[v++],v=v%e;if(l=(l+1)%e,l===a&&(a=(a+1)%e),f-i<t)return;const h=u&&f-u;return h?Math.round(g*1e3/h):void 0}}function Wv(e,t){let s=0,o=1e3/t,l,a;const i=(f,u=Date.now())=>{s=u,l=null,a&&(clearTimeout(a),a=null),e(...f)};return[(...f)=>{const u=Date.now(),v=u-s;v>=o?i(f,u):(l=f,a||(a=setTimeout(()=>{a=null,i(l)},o-v)))},()=>l&&i(l)]}const Go=(e,t,s=3)=>{let o=0;const l=zv(50,250);return Wv(a=>{const i=a.loaded,r=a.lengthComputable?a.total:void 0,c=i-o,f=l(c),u=i<=r;o=i;const v={loaded:i,total:r,progress:r?i/r:void 0,bytes:c,rate:f||void 0,estimated:f&&r&&u?(r-i)/f:void 0,event:a,lengthComputable:r!=null,[t?"download":"upload"]:!0};e(v)},s)},Fi=(e,t)=>{const s=e!=null;return[o=>t[0]({lengthComputable:s,total:e,loaded:o}),t[1]]},Bi=e=>(...t)=>le.asap(()=>e(...t)),Kv=xt.hasStandardBrowserEnv?((e,t)=>s=>(s=new URL(s,xt.origin),e.protocol===s.protocol&&e.host===s.host&&(t||e.port===s.port)))(new URL(xt.origin),xt.navigator&&/(msie|trident)/i.test(xt.navigator.userAgent)):()=>!0,Gv=xt.hasStandardBrowserEnv?{write(e,t,s,o,l,a){const i=[e+"="+encodeURIComponent(t)];le.isNumber(s)&&i.push("expires="+new Date(s).toGMTString()),le.isString(o)&&i.push("path="+o),le.isString(l)&&i.push("domain="+l),a===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Qv(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Jv(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function mu(e,t,s){let o=!Qv(t);return e&&(o||s==!1)?Jv(e,t):t}const Vi=e=>e instanceof Ht?{...e}:e;function sn(e,t){t=t||{};const s={};function o(f,u,v,g){return le.isPlainObject(f)&&le.isPlainObject(u)?le.merge.call({caseless:g},f,u):le.isPlainObject(u)?le.merge({},u):le.isArray(u)?u.slice():u}function l(f,u,v,g){if(le.isUndefined(u)){if(!le.isUndefined(f))return o(void 0,f,v,g)}else return o(f,u,v,g)}function a(f,u){if(!le.isUndefined(u))return o(void 0,u)}function i(f,u){if(le.isUndefined(u)){if(!le.isUndefined(f))return o(void 0,f)}else return o(void 0,u)}function r(f,u,v){if(v in t)return o(f,u);if(v in e)return o(void 0,f)}const c={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:r,headers:(f,u,v)=>l(Vi(f),Vi(u),v,!0)};return le.forEach(Object.keys({...e,...t}),function(u){const v=c[u]||l,g=v(e[u],t[u],u);le.isUndefined(g)&&v!==r||(s[u]=g)}),s}const hu=e=>{const t=sn({},e);let{data:s,withXSRFToken:o,xsrfHeaderName:l,xsrfCookieName:a,headers:i,auth:r}=t;if(t.headers=i=Ht.from(i),t.url=uu(mu(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),r&&i.set("Authorization","Basic "+btoa((r.username||"")+":"+(r.password?unescape(encodeURIComponent(r.password)):""))),le.isFormData(s)){if(xt.hasStandardBrowserEnv||xt.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(le.isFunction(s.getHeaders)){const c=s.getHeaders(),f=["content-type","content-length"];Object.entries(c).forEach(([u,v])=>{f.includes(u.toLowerCase())&&i.set(u,v)})}}if(xt.hasStandardBrowserEnv&&(o&&le.isFunction(o)&&(o=o(t)),o||o!==!1&&Kv(t.url))){const c=l&&a&&Gv.read(a);c&&i.set(l,c)}return t},Zv=typeof XMLHttpRequest<"u",Xv=Zv&&function(e){return new Promise(function(s,o){const l=hu(e);let a=l.data;const i=Ht.from(l.headers).normalize();let{responseType:r,onUploadProgress:c,onDownloadProgress:f}=l,u,v,g,h,b;function w(){h&&h(),b&&b(),l.cancelToken&&l.cancelToken.unsubscribe(u),l.signal&&l.signal.removeEventListener("abort",u)}let C=new XMLHttpRequest;C.open(l.method.toUpperCase(),l.url,!0),C.timeout=l.timeout;function I(){if(!C)return;const N=Ht.from("getAllResponseHeaders"in C&&C.getAllResponseHeaders()),Z={data:!r||r==="text"||r==="json"?C.responseText:C.response,status:C.status,statusText:C.statusText,headers:N,config:e,request:C};vu(function(te){s(te),w()},function(te){o(te),w()},Z),C=null}"onloadend"in C?C.onloadend=I:C.onreadystatechange=function(){!C||C.readyState!==4||C.status===0&&!(C.responseURL&&C.responseURL.indexOf("file:")===0)||setTimeout(I)},C.onabort=function(){C&&(o(new Ye("Request aborted",Ye.ECONNABORTED,e,C)),C=null)},C.onerror=function(z){const Z=z&&z.message?z.message:"Network Error",W=new Ye(Z,Ye.ERR_NETWORK,e,C);W.event=z||null,o(W),C=null},C.ontimeout=function(){let z=l.timeout?"timeout of "+l.timeout+"ms exceeded":"timeout exceeded";const Z=l.transitional||du;l.timeoutErrorMessage&&(z=l.timeoutErrorMessage),o(new Ye(z,Z.clarifyTimeoutError?Ye.ETIMEDOUT:Ye.ECONNABORTED,e,C)),C=null},a===void 0&&i.setContentType(null),"setRequestHeader"in C&&le.forEach(i.toJSON(),function(z,Z){C.setRequestHeader(Z,z)}),le.isUndefined(l.withCredentials)||(C.withCredentials=!!l.withCredentials),r&&r!=="json"&&(C.responseType=l.responseType),f&&([g,b]=Go(f,!0),C.addEventListener("progress",g)),c&&C.upload&&([v,h]=Go(c),C.upload.addEventListener("progress",v),C.upload.addEventListener("loadend",h)),(l.cancelToken||l.signal)&&(u=N=>{C&&(o(!N||N.type?new kn(null,e,C):N),C.abort(),C=null)},l.cancelToken&&l.cancelToken.subscribe(u),l.signal&&(l.signal.aborted?u():l.signal.addEventListener("abort",u)));const q=Hv(l.url);if(q&&xt.protocols.indexOf(q)===-1){o(new Ye("Unsupported protocol "+q+":",Ye.ERR_BAD_REQUEST,e));return}C.send(a||null)})},Yv=(e,t)=>{const{length:s}=e=e?e.filter(Boolean):[];if(t||s){let o=new AbortController,l;const a=function(f){if(!l){l=!0,r();const u=f instanceof Error?f:this.reason;o.abort(u instanceof Ye?u:new kn(u instanceof Error?u.message:u))}};let i=t&&setTimeout(()=>{i=null,a(new Ye(`timeout ${t} of ms exceeded`,Ye.ETIMEDOUT))},t);const r=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(a):f.removeEventListener("abort",a)}),e=null)};e.forEach(f=>f.addEventListener("abort",a));const{signal:c}=o;return c.unsubscribe=()=>le.asap(r),c}},em=function*(e,t){let s=e.byteLength;if(s<t){yield e;return}let o=0,l;for(;o<s;)l=o+t,yield e.slice(o,l),o=l},tm=async function*(e,t){for await(const s of sm(e))yield*em(s,t)},sm=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:s,value:o}=await t.read();if(s)break;yield o}}finally{await t.cancel()}},ji=(e,t,s,o)=>{const l=tm(e,t);let a=0,i,r=c=>{i||(i=!0,o&&o(c))};return new ReadableStream({async pull(c){try{const{done:f,value:u}=await l.next();if(f){r(),c.close();return}let v=u.byteLength;if(s){let g=a+=v;s(g)}c.enqueue(new Uint8Array(u))}catch(f){throw r(f),f}},cancel(c){return r(c),l.return()}},{highWaterMark:2})},qi=64*1024,{isFunction:_o}=le,nm=(({Request:e,Response:t})=>({Request:e,Response:t}))(le.global),{ReadableStream:Hi,TextEncoder:zi}=le.global,Wi=(e,...t)=>{try{return!!e(...t)}catch{return!1}},om=e=>{e=le.merge.call({skipUndefined:!0},nm,e);const{fetch:t,Request:s,Response:o}=e,l=t?_o(t):typeof fetch=="function",a=_o(s),i=_o(o);if(!l)return!1;const r=l&&_o(Hi),c=l&&(typeof zi=="function"?(b=>w=>b.encode(w))(new zi):async b=>new Uint8Array(await new s(b).arrayBuffer())),f=a&&r&&Wi(()=>{let b=!1;const w=new s(xt.origin,{body:new Hi,method:"POST",get duplex(){return b=!0,"half"}}).headers.has("Content-Type");return b&&!w}),u=i&&r&&Wi(()=>le.isReadableStream(new o("").body)),v={stream:u&&(b=>b.body)};l&&["text","arrayBuffer","blob","formData","stream"].forEach(b=>{!v[b]&&(v[b]=(w,C)=>{let I=w&&w[b];if(I)return I.call(w);throw new Ye(`Response type '${b}' is not supported`,Ye.ERR_NOT_SUPPORT,C)})});const g=async b=>{if(b==null)return 0;if(le.isBlob(b))return b.size;if(le.isSpecCompliantForm(b))return(await new s(xt.origin,{method:"POST",body:b}).arrayBuffer()).byteLength;if(le.isArrayBufferView(b)||le.isArrayBuffer(b))return b.byteLength;if(le.isURLSearchParams(b)&&(b=b+""),le.isString(b))return(await c(b)).byteLength},h=async(b,w)=>{const C=le.toFiniteNumber(b.getContentLength());return C??g(w)};return async b=>{let{url:w,method:C,data:I,signal:q,cancelToken:N,timeout:z,onDownloadProgress:Z,onUploadProgress:W,responseType:te,headers:O,withCredentials:R="same-origin",fetchOptions:F}=hu(b),$=t||fetch;te=te?(te+"").toLowerCase():"text";let U=Yv([q,N&&N.toAbortSignal()],z),se=null;const M=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let G;try{if(W&&f&&C!=="get"&&C!=="head"&&(G=await h(O,I))!==0){let Pe=new s(w,{method:"POST",body:I,duplex:"half"}),Ee;if(le.isFormData(I)&&(Ee=Pe.headers.get("content-type"))&&O.setContentType(Ee),Pe.body){const[ye,de]=Fi(G,Go(Bi(W)));I=ji(Pe.body,qi,ye,de)}}le.isString(R)||(R=R?"include":"omit");const B=a&&"credentials"in s.prototype,V={...F,signal:U,method:C.toUpperCase(),headers:O.normalize().toJSON(),body:I,duplex:"half",credentials:B?R:void 0};se=a&&new s(w,V);let X=await(a?$(se,F):$(w,V));const pe=u&&(te==="stream"||te==="response");if(u&&(Z||pe&&M)){const Pe={};["status","statusText","headers"].forEach(Te=>{Pe[Te]=X[Te]});const Ee=le.toFiniteNumber(X.headers.get("content-length")),[ye,de]=Z&&Fi(Ee,Go(Bi(Z),!0))||[];X=new o(ji(X.body,qi,ye,()=>{de&&de(),M&&M()}),Pe)}te=te||"text";let Ne=await v[le.findKey(v,te)||"text"](X,b);return!pe&&M&&M(),await new Promise((Pe,Ee)=>{vu(Pe,Ee,{data:Ne,headers:Ht.from(X.headers),status:X.status,statusText:X.statusText,config:b,request:se})})}catch(B){throw M&&M(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new Ye("Network Error",Ye.ERR_NETWORK,b,se),{cause:B.cause||B}):Ye.from(B,B&&B.code,b,se)}}},lm=new Map,gu=e=>{let t=e?e.env:{};const{fetch:s,Request:o,Response:l}=t,a=[o,l,s];let i=a.length,r=i,c,f,u=lm;for(;r--;)c=a[r],f=u.get(c),f===void 0&&u.set(c,f=r?new Map:om(t)),u=f;return f};gu();const aa={http:kv,xhr:Xv,fetch:{get:gu}};le.forEach(aa,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ki=e=>`- ${e}`,am=e=>le.isFunction(e)||e===null||e===!1,yu={getAdapter:(e,t)=>{e=le.isArray(e)?e:[e];const{length:s}=e;let o,l;const a={};for(let i=0;i<s;i++){o=e[i];let r;if(l=o,!am(o)&&(l=aa[(r=String(o)).toLowerCase()],l===void 0))throw new Ye(`Unknown adapter '${r}'`);if(l&&(le.isFunction(l)||(l=l.get(t))))break;a[r||"#"+i]=l}if(!l){const i=Object.entries(a).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let r=s?i.length>1?`since :
`+i.map(Ki).join(`
`):" "+Ki(i[0]):"as no adapter specified";throw new Ye("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return l},adapters:aa};function Ol(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new kn(null,e)}function Gi(e){return Ol(e),e.headers=Ht.from(e.headers),e.data=Ll.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),yu.getAdapter(e.adapter||fo.adapter,e)(e).then(function(o){return Ol(e),o.data=Ll.call(e,e.transformResponse,o),o.headers=Ht.from(o.headers),o},function(o){return pu(o)||(Ol(e),o&&o.response&&(o.response.data=Ll.call(e,e.transformResponse,o.response),o.response.headers=Ht.from(o.response.headers))),Promise.reject(o)})}const bu="1.12.2",fl={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{fl[e]=function(o){return typeof o===e||"a"+(t<1?"n ":" ")+e}});const Qi={};fl.transitional=function(t,s,o){function l(a,i){return"[Axios v"+bu+"] Transitional option '"+a+"'"+i+(o?". "+o:"")}return(a,i,r)=>{if(t===!1)throw new Ye(l(i," has been removed"+(s?" in "+s:"")),Ye.ERR_DEPRECATED);return s&&!Qi[i]&&(Qi[i]=!0,console.warn(l(i," has been deprecated since v"+s+" and will be removed in the near future"))),t?t(a,i,r):!0}};fl.spelling=function(t){return(s,o)=>(console.warn(`${o} is likely a misspelling of ${t}`),!0)};function im(e,t,s){if(typeof e!="object")throw new Ye("options must be an object",Ye.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let l=o.length;for(;l-- >0;){const a=o[l],i=t[a];if(i){const r=e[a],c=r===void 0||i(r,a,e);if(c!==!0)throw new Ye("option "+a+" must be "+c,Ye.ERR_BAD_OPTION_VALUE);continue}if(s!==!0)throw new Ye("Unknown option "+a,Ye.ERR_BAD_OPTION)}}const Ro={assertOptions:im,validators:fl},cs=Ro.validators;let Ys=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Oi,response:new Oi}}async request(t,s){try{return await this._request(t,s)}catch(o){if(o instanceof Error){let l={};Error.captureStackTrace?Error.captureStackTrace(l):l=new Error;const a=l.stack?l.stack.replace(/^.+\n/,""):"";try{o.stack?a&&!String(o.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(o.stack+=`
`+a):o.stack=a}catch{}}throw o}}_request(t,s){typeof t=="string"?(s=s||{},s.url=t):s=t||{},s=sn(this.defaults,s);const{transitional:o,paramsSerializer:l,headers:a}=s;o!==void 0&&Ro.assertOptions(o,{silentJSONParsing:cs.transitional(cs.boolean),forcedJSONParsing:cs.transitional(cs.boolean),clarifyTimeoutError:cs.transitional(cs.boolean)},!1),l!=null&&(le.isFunction(l)?s.paramsSerializer={serialize:l}:Ro.assertOptions(l,{encode:cs.function,serialize:cs.function},!0)),s.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?s.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:s.allowAbsoluteUrls=!0),Ro.assertOptions(s,{baseUrl:cs.spelling("baseURL"),withXsrfToken:cs.spelling("withXSRFToken")},!0),s.method=(s.method||this.defaults.method||"get").toLowerCase();let i=a&&le.merge(a.common,a[s.method]);a&&le.forEach(["delete","get","head","post","put","patch","common"],b=>{delete a[b]}),s.headers=Ht.concat(i,a);const r=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(s)===!1||(c=c&&w.synchronous,r.unshift(w.fulfilled,w.rejected))});const f=[];this.interceptors.response.forEach(function(w){f.push(w.fulfilled,w.rejected)});let u,v=0,g;if(!c){const b=[Gi.bind(this),void 0];for(b.unshift(...r),b.push(...f),g=b.length,u=Promise.resolve(s);v<g;)u=u.then(b[v++],b[v++]);return u}g=r.length;let h=s;for(;v<g;){const b=r[v++],w=r[v++];try{h=b(h)}catch(C){w.call(this,C);break}}try{u=Gi.call(this,h)}catch(b){return Promise.reject(b)}for(v=0,g=f.length;v<g;)u=u.then(f[v++],f[v++]);return u}getUri(t){t=sn(this.defaults,t);const s=mu(t.baseURL,t.url,t.allowAbsoluteUrls);return uu(s,t.params,t.paramsSerializer)}};le.forEach(["delete","get","head","options"],function(t){Ys.prototype[t]=function(s,o){return this.request(sn(o||{},{method:t,url:s,data:(o||{}).data}))}});le.forEach(["post","put","patch"],function(t){function s(o){return function(a,i,r){return this.request(sn(r||{},{method:t,headers:o?{"Content-Type":"multipart/form-data"}:{},url:a,data:i}))}}Ys.prototype[t]=s(),Ys.prototype[t+"Form"]=s(!0)});let rm=class _u{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let s;this.promise=new Promise(function(a){s=a});const o=this;this.promise.then(l=>{if(!o._listeners)return;let a=o._listeners.length;for(;a-- >0;)o._listeners[a](l);o._listeners=null}),this.promise.then=l=>{let a;const i=new Promise(r=>{o.subscribe(r),a=r}).then(l);return i.cancel=function(){o.unsubscribe(a)},i},t(function(a,i,r){o.reason||(o.reason=new kn(a,i,r),s(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const s=this._listeners.indexOf(t);s!==-1&&this._listeners.splice(s,1)}toAbortSignal(){const t=new AbortController,s=o=>{t.abort(o)};return this.subscribe(s),t.signal.unsubscribe=()=>this.unsubscribe(s),t.signal}static source(){let t;return{token:new _u(function(l){t=l}),cancel:t}}};function cm(e){return function(s){return e.apply(null,s)}}function um(e){return le.isObject(e)&&e.isAxiosError===!0}const ia={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ia).forEach(([e,t])=>{ia[t]=e});function wu(e){const t=new Ys(e),s=Xc(Ys.prototype.request,t);return le.extend(s,Ys.prototype,t,{allOwnKeys:!0}),le.extend(s,t,null,{allOwnKeys:!0}),s.create=function(l){return wu(sn(e,l))},s}const gt=wu(fo);gt.Axios=Ys;gt.CanceledError=kn;gt.CancelToken=rm;gt.isCancel=pu;gt.VERSION=bu;gt.toFormData=dl;gt.AxiosError=Ye;gt.Cancel=gt.CanceledError;gt.all=function(t){return Promise.all(t)};gt.spread=cm;gt.isAxiosError=um;gt.mergeConfig=sn;gt.AxiosHeaders=Ht;gt.formToJSON=e=>fu(le.isHTMLForm(e)?new FormData(e):e);gt.getAdapter=yu.getAdapter;gt.HttpStatusCode=ia;gt.default=gt;const{Axios:xU,AxiosError:TU,CanceledError:AU,isCancel:EU,CancelToken:RU,VERSION:UU,all:DU,Cancel:MU,isAxiosError:PU,spread:LU,toFormData:OU,AxiosHeaders:NU,HttpStatusCode:FU,formToJSON:BU,getAdapter:VU,mergeConfig:jU}=gt,_t=gt.create({baseURL:"/api",timeout:12e4});_t.interceptors.request.use(e=>{const t=localStorage.getItem("token");return t&&(e.headers.Authorization=`Bearer ${t}`),e});_t.interceptors.response.use(e=>e,e=>{var t;return((t=e.response)==null?void 0:t.status)===401&&(localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),window.dispatchEvent(new CustomEvent("auth:unauthorized"))),Promise.reject(e)});const Ae=gt.create({baseURL:"/api",timeout:12e4});Ae.interceptors.request.use(e=>{let t=e.url||"";if(e.params){const l=new URLSearchParams;for(const[i,r]of Object.entries(e.params))r!=null&&l.append(i,String(r));const a=l.toString();a&&(t+=(t.includes("?")?"&":"?")+a),e.params=void 0}const s=(e.method||"GET").toUpperCase();e.url="/proxy",e.headers||(e.headers={}),e.headers["x-forward-by-qiuchenly"]=t,e.headers["x-forward-method-by-qiuchenly"]=s;const o=localStorage.getItem("token");return o&&(e.headers.Authorization=`Bearer ${o}`),e});Ae.interceptors.response.use(e=>e,e=>{var t;return((t=e.response)==null?void 0:t.status)===401&&(localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),window.dispatchEvent(new CustomEvent("auth:unauthorized"))),Promise.reject(e)});function dm(e){var l,a,i,r,c,f;const t=e;if(!t)return null;const s=((l=t.response)==null?void 0:l.status)&&t.response.status>=500,o=t.code==="ERR_NETWORK"||t.code==="ECONNREFUSED"||t.code==="ERR_CONNECTION_REFUSED"||((a=t.message)==null?void 0:a.includes("Network Error"))||((i=t.message)==null?void 0:i.includes("Connection refused"));if(s||o){let u="无法连接到后端服务,请确保服务已启动";return s&&(u=`服务器错误 (${(r=t.response)==null?void 0:r.status}): 内部服务器错误`),{isConnectionError:!0,message:u,code:t.code,requestUrl:(c=t.config)==null?void 0:c.url,statusCode:(f=t.response)==null?void 0:f.status}}return null}class oe{static async getApps(){return(await _t.get("/apps")).data}static async getApp(t){return(await _t.get(`/apps/${t}`)).data}static getAppIconUrl(t){return`/api/apps/icon/${t}`}static async getForumPermissions(){try{const t=await Ae.get("/api/v1/forums/permissions");return t.data.success?t.data.data||[]:[]}catch(t){return console.error("获取讨论区权限列表失败:",t),[]}}static async getForumPermissionsBatch(t){var s;try{const o=await Ae.post("/api/v1/forums/permissions/batch",{bundleIds:t});return o.data.success&&((s=o.data.data)!=null&&s.enabledBundleIds)?o.data.data.enabledBundleIds:[]}catch(o){return console.error("批量获取讨论区权限失败:",o),[]}}static async getForumPermission(t){var s;try{const o=await Ae.get(`/api/v1/forums/permissions/${t}`);return o.data.success&&o.data.data||null}catch(o){return((s=o.response)==null?void 0:s.status)===404||console.error("获取讨论区权限失败:",o),null}}static async checkForumEnabled(t){try{const s=await this.getForumPermission(t);return(s==null?void 0:s.enabled)??!1}catch(s){return console.error("检查讨论区是否开放失败:",s),!1}}static async enableForum(t){return(await Ae.post(`/api/v1/forums/permissions/${t}/enable`)).data}static async disableForum(t){return(await Ae.post(`/api/v1/forums/permissions/${t}/disable`)).data}static async updateApp(t){return(await _t.post(`/apps/${t}/update`)).data}static async getConfig(){return(await _t.get("/config")).data}static async getStatus(){return(await _t.get("/status")).data}static async getStoreApps(){return(await _t.get("/store/apps")).data}static async startDownload(t,s){return(await _t.post("/download/start",{url:t,fileName:s})).data}static async pauseDownload(t){await _t.post(`/download/${t}/pause`)}static async resumeDownload(t){await _t.post(`/download/${t}/resume`)}static async getDownloadTask(t){return(await _t.get(`/download/${t}`)).data}static async getAllDownloads(){return(await _t.get("/downloads")).data}static async deleteDownload(t){await _t.delete(`/download/${t}`)}static async openDownloadFile(t){await _t.post(`/download/${t}/open`)}static async getAllSettings(){const t=await _t.get("/settings");return t.data&&typeof t.data=="object"&&"data"in t.data&&t.data.data?t.data.data:t.data}static async updateSettings(t){await _t.post("/settings",t)}static async validatePath(t){return(await _t.get("/validate-path",{params:{path:t}})).data.data}static async login(t){var o,l;const s=await Ae.post("/api/v1/auth/login",t);return(o=s.data.data)!=null&&o.token&&localStorage.setItem("token",s.data.data.token),(l=s.data.data)!=null&&l.refreshToken&&localStorage.setItem("refreshToken",s.data.data.refreshToken),s.data}static async register(t){var o,l;const s=await Ae.post("/api/v1/auth/register",t);return(o=s.data.data)!=null&&o.token&&localStorage.setItem("token",s.data.data.token),(l=s.data.data)!=null&&l.refreshToken&&localStorage.setItem("refreshToken",s.data.data.refreshToken),s.data}static async getAuthStatus(){return(await Ae.get("/api/v1/auth/user")).data}static async logout(){localStorage.removeItem("token"),localStorage.removeItem("refreshToken");try{await Ae.post("/api/v1/auth/logout",{})}catch{}}static async syncUpload(){return(await Ae.get("/api/v1/server/all")).data}static async syncUploadApp(t){return(await Ae.post("/api/v1/server/bindFileForApp",{bundleId:t})).data}static async getCloudApps(t=1,s=20){return(await Ae.get(`/api/v1/appinfo/all/${t}/${s}`)).data.data||[]}static async getUsers(t=1,s=20,o){const l={};o&&o.trim()&&(l.search=o.trim());const i=(await Ae.get(`/api/v1/auth/users/${t}/${s}`,{params:l})).data.data||{};return{users:Array.isArray(i.users)?i.users:[],total:i.total||0}}static async addUser(t){return(await Ae.post("/api/v1/admin/users",t)).data}static async updateUser(t,s){return(await Ae.put(`/api/v1/admin/users/${t}`,s)).data}static async deleteUserByUsername(t){return(await Ae.delete(`/api/v1/auth/user/${t}`)).data}static async banUserByUsername(t,s){return(await Ae.post(`/api/v1/auth/setUserStatus/${t}`,{status:s})).data}static async requestForumOpen(t,s){return(await Ae.post("/api/v1/forums/requests",{bundleId:t,appName:s})).data}static async getForumRequests(t,s=1,o=20){var i;const l={page:s,pageSize:o};t&&t!=="all"&&(l.status=t);const a=await Ae.get("/api/v1/forums/requests",{params:l});return a.data.success?Array.isArray(a.data.data)?{requests:a.data.data,total:a.data.data.length}:(i=a.data.data)!=null&&i.requests?{requests:a.data.data.requests,total:a.data.data.total||a.data.data.requests.length}:{requests:[],total:0}:{requests:[],total:0}}static async processForumRequest(t,s,o){const l={action:s};return o&&(l.reason=o),(await Ae.post(`/api/v1/forums/requests/${t}/process`,l)).data}static async checkUserRequestStatus(t){return{hasRequest:!1}}static async getForumOpenRequests(){return(await this.getForumRequests("all",1,1e3)).requests}static async approveForumRequest(t){return await this.processForumRequest(t,"approve")}static async rejectForumRequest(t,s){return await this.processForumRequest(t,"reject",s)}static async getDownloadUrl(t,s){var l;return((l=(await Ae.get(`/api/v1/server/getDownloadUrl/${t}/${s}`)).data.data)==null?void 0:l.downloadUrl)||""}static async healthCheck(){return(await Ae.get("/api/v1/health")).data}static async upgradeUserRole(t,s){return(await Ae.post(`/api/v1/auth/upgradeUserRole/${t}`,{role:s})).data}static async setUserStatus(t,s){return(await Ae.post(`/api/v1/auth/setUserStatus/${t}`,{status:s})).data}static async deleteUser(t){return(await Ae.delete(`/api/v1/auth/user/${t}`)).data}static async getOperationLogs(t=1,s=20){return(await Ae.get(`/api/v1/auth/operationLogs/${t}/${s}`)).data}static async getFiles(){return(await Ae.get("/api/v1/server/all")).data}static async bindFile(t){return(await Ae.post("/api/v1/server/bindFileForApp",t)).data}static async getBinds(t=1,s=20){return(await Ae.get(`/api/v1/server/bindAll/${t}/${s}`)).data}static async deleteBind(t){return(await Ae.delete(`/api/v1/server/bind/${t}`)).data}static async refreshToken(t){var o,l;const s=await Ae.post("/api/v1/auth/refreshToken",{refreshToken:t});return(o=s.data.data)!=null&&o.token&&localStorage.setItem("token",s.data.data.token),(l=s.data.data)!=null&&l.refreshToken&&localStorage.setItem("refreshToken",s.data.data.refreshToken),s.data}static async getMyOperationLogs(t=1,s=20){return(await Ae.get(`/api/v1/auth/myOperationLogs/${t}/${s}`)).data}static async getAppInfoAll(t=1,s=20){return(await Ae.get(`/api/v1/appinfo/all/${t}/${s}`)).data}static async uploadAppInfo(t){return(await Ae.post("/api/v1/appinfo/app/setup",t)).data}static async uploadImage(t,s){const o=new FormData;return o.append("image",s),(await Ae.post(`/api/v1/appinfo/app/uploadImage/${t}`,o)).data}static async uploadImages(t,s){const o=new FormData;return s.forEach(a=>{o.append("images",a)}),(await Ae.post(`/api/v1/appinfo/uploadImages/${t}`,o)).data}static async getImage(t,s,o,l){const a={};s!==void 0&&(a.quality=s),o!==void 0&&(a.width=o),l!==void 0&&(a.height=l);const r=(await Ae.get(`/api/v1/appinfo/app/getImage/${t}`,{params:a,responseType:"blob"})).data;return URL.createObjectURL(r)}static getImageUrl(t,s,o,l){const a=new URLSearchParams;s!==void 0&&a.append("quality",s.toString()),o!==void 0&&a.append("width",o.toString()),l!==void 0&&a.append("height",l.toString());const i=a.toString();return`/api/proxy/api/v1/appinfo/app/getImage/${t}${i?"?"+i:""}`}static async getImageInfo(t){return(await Ae.get(`/api/v1/appinfo/app/getImageInfo/${t}`)).data}static async getImagesInfo(t){return(await Ae.post("/api/v1/appinfo/app/getImagesInfo",{imageMd5s:t})).data}static async getBindByBundleId(t){return(await Ae.get(`/api/v1/server/getBindByBundleId/${t}`)).data}static async getBuckets(){return(await Ae.get("/api/v1/buckets/buckets")).data}static async createBucket(t,s){return(await Ae.post("/api/v1/buckets/buckets",{name:t,region:s})).data}static async deleteBucket(t){return(await Ae.delete(`/api/v1/buckets/buckets/${t}`)).data}static async checkBucket(t){try{return(await Ae.head(`/api/v1/buckets/buckets/${t}`)).status===200}catch{return!1}}static async getForumPosts(t,s=1,o=20){const l=await Ae.get(`/api/v1/forums/${t}/posts`,{params:{page:s,pageSize:o}});return l.data.success?l.data.data||{posts:[],total:0,page:s,pageSize:o}:{posts:[],total:0,page:s,pageSize:o}}static async getForumPost(t,s,o=1,l=50){const a={};return o>1&&(a.replyPage=o),l!==50&&(a.replyPageSize=l),(await Ae.get(`/api/v1/forums/${t}/posts/${s}`,{params:a})).data.data||null}static async uploadImageAttachment(t,s){const o=new FormData;return o.append("image",t),(await Ae.post("/api/v1/attachments/image",o,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:a=>{if(a.total&&s){const i=Math.round(a.loaded*100/a.total);s(i)}}})).data}static async uploadFileAttachment(t,s){const o=new FormData;return o.append("file",t),(await Ae.post("/api/v1/attachments/file",o,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:a=>{if(a.total&&s){const i=Math.round(a.loaded*100/a.total);s(i)}}})).data}static async createForumPost(t,s,o,l){const a={title:s,content:o};return l&&l.length>0&&(a.attachmentIds=l),(await Ae.post(`/api/v1/forums/${t}/posts`,a)).data}static async getAttachment(t){try{const s=await Ae.get(`/api/v1/attachments/${t}`);return s.data.success&&s.data.data||null}catch(s){return console.error("获取附件信息失败:",s),null}}static async getAttachmentDownloadUrl(t,s){var o;try{const l={};s&&(l.expiry=s);const a=await Ae.get(`/api/v1/attachments/${t}/download`,{params:l});return a.data.success&&((o=a.data.data)!=null&&o.url)?a.data.data.url:null}catch(l){return console.error("获取附件下载URL失败:",l),null}}static async getAttachmentImage(t){try{const o=(await Ae.get(`/api/v1/attachments/${t}/image`,{responseType:"blob"})).data;return URL.createObjectURL(o)}catch(s){return console.error("获取附件图片失败:",s),null}}static async updateForumPost(t,s,o,l,a,i){const r=new FormData;return r.append("title",o),r.append("content",l),a&&a.length>0&&a.forEach(f=>{r.append("images",f)}),i&&i.length>0&&i.forEach(f=>{r.append("files",f)}),(await Ae.put(`/forums/${t}/posts/${s}`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}static async deleteForumPost(t,s){return(await Ae.delete(`/forums/${t}/posts/${s}`)).data}static async likeForumPost(t,s,o){const l=await Ae.post(`/api/v1/forums/${t}/posts/${s}/like`,{action:o});return l.data.success&&l.data.data?{success:!0,likeCount:l.data.data.likeCount,dislikeCount:l.data.data.dislikeCount,userLikeStatus:l.data.data.userLikeStatus}:{success:!1,likeCount:0,dislikeCount:0,userLikeStatus:null}}static async createForumReply(t,s,o,l,a,i){const r={content:o};return l&&(r.replyToUserId=l),a&&(r.replyToUserName=a),i&&i.length>0&&(r.attachmentIds=i),(await Ae.post(`/api/v1/forums/${t}/posts/${s}/replies`,r)).data}static async createNestedReply(t,s,o,l,a,i,r){const c={content:l};return a&&(c.replyToUserId=a),i&&(c.replyToUserName=i),r&&r.length>0&&(c.attachmentIds=r),(await Ae.post(`/api/v1/forums/${t}/posts/${s}/replies/${o}/nested`,c)).data}static async updateForumReply(t,s,o,l,a,i){const r=new FormData;return r.append("content",l),a&&a.length>0&&a.forEach(f=>{r.append("images",f)}),i&&i.length>0&&i.forEach(f=>{r.append("files",f)}),(await Ae.put(`/forums/${t}/posts/${s}/replies/${o}`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}static async deleteForumReply(t,s,o){return(await Ae.delete(`/forums/${t}/posts/${s}/replies/${o}`)).data}static async likeForumReply(t,s,o,l){return(await Ae.post(`/api/v1/forums/${t}/posts/${s}/replies/${o}/like`,{action:l})).data.data||{success:!1,likeCount:0,dislikeCount:0}}static async submitReport(t,s,o,l,a,i,r){const c={type:t,targetId:s,bundleId:o,postId:l,reportTypes:a,content:i};return r&&(c.comment=r),(await Ae.post("/api/v1/reports",c)).data}static async getAdminPosts(t=1,s=20,o,l){const a={page:t,pageSize:s};return o&&(a.search=o),l&&l!=="all"&&(a.status=l),(await Ae.get("/api/v1/admin/posts",{params:a})).data}static async updateAdminPost(t,s,o,l){const a={title:s,content:o};return l!==void 0&&(a.attachmentIds=l),(await Ae.put(`/api/v1/admin/posts/${t}`,a)).data}static async deleteAdminPost(t){return(await Ae.delete(`/api/v1/admin/posts/${t}`)).data}static async getAdminViolations(t=1,s=20,o){const l={page:t,pageSize:s};return o&&o!=="all"&&(l.status=o),(await Ae.get("/api/v1/admin/violations",{params:l})).data}static async resolveViolation(t,s){return(await Ae.post(`/api/v1/admin/violations/${t}/resolve`,{status:s})).data}static async getUserInfo(t){try{const s=await Ae.get(`/api/v1/users/${t}/info`);return s.data.success&&s.data.data?s.data.data:null}catch(s){return console.error("获取用户信息失败:",s),null}}static async getNotifications(t=1,s=20,o){const l={page:t,pageSize:s};return o&&(l.unreadOnly="true"),(await Ae.get("/api/v1/notifications",{params:l})).data}static async getUnreadNotificationCount(){return(await Ae.get("/api/v1/notifications/unread-count")).data}static async markNotificationAsRead(t){return(await Ae.put(`/api/v1/notifications/${t}/read`)).data}static async markAllNotificationsAsRead(){return(await Ae.put("/api/v1/notifications/read-all")).data}static async getMyReplies(t=1,s=20){const o={page:t,pageSize:s};return(await Ae.get("/api/v1/user/replies/my",{params:o})).data}static async getRepliesToMe(t=1,s=20){const o={page:t,pageSize:s};return(await Ae.get("/api/v1/user/replies/to-me",{params:o})).data}static async getMessageNotifications(t=10){const s={limit:t};return(await Ae.get("/api/v1/messages/notifications",{params:s})).data}static async getUnreadMessageCount(){return(await Ae.get("/api/v1/messages/unread-count")).data}static async getConversations(t=1,s=20){const o={page:t,pageSize:s};return(await Ae.get("/api/v1/messages/conversations",{params:o})).data}static async getConversationMessages(t,s=1,o=50){const l={page:s,pageSize:o};return(await Ae.get(`/api/v1/messages/conversations/${t}/messages`,{params:l})).data}static async sendMessage(t,s){return(await Ae.post(`/api/v1/messages/conversations/${t}/messages`,{content:s})).data}static async getOrCreateConversationByUserId(t){return(await Ae.post(`/api/v1/messages/conversations/by-user/${t}`)).data}static async setConversationBlock(t,s){return(await Ae.put(`/api/v1/messages/conversations/${t}/block`,{blocked:s})).data}static async setConversationMute(t,s){return(await Ae.put(`/api/v1/messages/conversations/${t}/mute`,{muted:s})).data}}const ku=/^[a-z0-9]+(-[a-z0-9]+)*$/,pl=(e,t,s,o="")=>{const l=e.split(":");if(e.slice(0,1)==="@"){if(l.length<2||l.length>3)return null;o=l.shift().slice(1)}if(l.length>3||!l.length)return null;if(l.length>1){const r=l.pop(),c=l.pop(),f={provider:l.length>0?l[0]:o,prefix:c,name:r};return t&&!Uo(f)?null:f}const a=l[0],i=a.split("-");if(i.length>1){const r={provider:o,prefix:i.shift(),name:i.join("-")};return t&&!Uo(r)?null:r}if(s&&o===""){const r={provider:o,prefix:"",name:a};return t&&!Uo(r,s)?null:r}return null},Uo=(e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,$u=Object.freeze({left:0,top:0,width:16,height:16}),Qo=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),vl=Object.freeze({...$u,...Qo}),ra=Object.freeze({...vl,body:"",hidden:!1});function fm(e,t){const s={};!e.hFlip!=!t.hFlip&&(s.hFlip=!0),!e.vFlip!=!t.vFlip&&(s.vFlip=!0);const o=((e.rotate||0)+(t.rotate||0))%4;return o&&(s.rotate=o),s}function Ji(e,t){const s=fm(e,t);for(const o in ra)o in Qo?o in e&&!(o in s)&&(s[o]=Qo[o]):o in t?s[o]=t[o]:o in e&&(s[o]=e[o]);return s}function pm(e,t){const s=e.icons,o=e.aliases||Object.create(null),l=Object.create(null);function a(i){if(s[i])return l[i]=[];if(!(i in l)){l[i]=null;const r=o[i]&&o[i].parent,c=r&&a(r);c&&(l[i]=[r].concat(c))}return l[i]}return Object.keys(s).concat(Object.keys(o)).forEach(a),l}function vm(e,t,s){const o=e.icons,l=e.aliases||Object.create(null);let a={};function i(r){a=Ji(o[r]||l[r],a)}return i(t),s.forEach(i),Ji(e,a)}function Cu(e,t){const s=[];if(typeof e!="object"||typeof e.icons!="object")return s;e.not_found instanceof Array&&e.not_found.forEach(l=>{t(l,null),s.push(l)});const o=pm(e);for(const l in o){const a=o[l];a&&(t(l,vm(e,l,a)),s.push(l))}return s}const mm={provider:"",aliases:{},not_found:{},...$u};function Nl(e,t){for(const s in t)if(s in e&&typeof e[s]!=typeof t[s])return!1;return!0}function Iu(e){if(typeof e!="object"||e===null)return null;const t=e;if(typeof t.prefix!="string"||!e.icons||typeof e.icons!="object"||!Nl(e,mm))return null;const s=t.icons;for(const l in s){const a=s[l];if(!l||typeof a.body!="string"||!Nl(a,ra))return null}const o=t.aliases||Object.create(null);for(const l in o){const a=o[l],i=a.parent;if(!l||typeof i!="string"||!s[i]&&!o[i]||!Nl(a,ra))return null}return t}const Zi=Object.create(null);function hm(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function gn(e,t){const s=Zi[e]||(Zi[e]=Object.create(null));return s[t]||(s[t]=hm(e,t))}function Su(e,t){return Iu(t)?Cu(t,(s,o)=>{o?e.icons[s]=o:e.missing.add(s)}):[]}function gm(e,t,s){try{if(typeof s.body=="string")return e.icons[t]={...s},!0}catch{}return!1}let to=!1;function xu(e){return typeof e=="boolean"&&(to=e),to}function ym(e){const t=typeof e=="string"?pl(e,!0,to):e;if(t){const s=gn(t.provider,t.prefix),o=t.name;return s.icons[o]||(s.missing.has(o)?null:void 0)}}function bm(e,t){const s=pl(e,!0,to);if(!s)return!1;const o=gn(s.provider,s.prefix);return t?gm(o,s.name,t):(o.missing.add(s.name),!0)}function _m(e,t){if(typeof e!="object")return!1;if(typeof t!="string"&&(t=e.provider||""),to&&!t&&!e.prefix){let l=!1;return Iu(e)&&(e.prefix="",Cu(e,(a,i)=>{bm(a,i)&&(l=!0)})),l}const s=e.prefix;if(!Uo({prefix:s,name:"a"}))return!1;const o=gn(t,s);return!!Su(o,e)}const Tu=Object.freeze({width:null,height:null}),Au=Object.freeze({...Tu,...Qo}),wm=/(-?[0-9.]*[0-9]+[0-9.]*)/g,km=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function Xi(e,t,s){if(t===1)return e;if(s=s||100,typeof e=="number")return Math.ceil(e*t*s)/s;if(typeof e!="string")return e;const o=e.split(wm);if(o===null||!o.length)return e;const l=[];let a=o.shift(),i=km.test(a);for(;;){if(i){const r=parseFloat(a);isNaN(r)?l.push(a):l.push(Math.ceil(r*t*s)/s)}else l.push(a);if(a=o.shift(),a===void 0)return l.join("");i=!i}}function $m(e,t="defs"){let s="";const o=e.indexOf("<"+t);for(;o>=0;){const l=e.indexOf(">",o),a=e.indexOf("</"+t);if(l===-1||a===-1)break;const i=e.indexOf(">",a);if(i===-1)break;s+=e.slice(l+1,a).trim(),e=e.slice(0,o).trim()+e.slice(i+1)}return{defs:s,content:e}}function Cm(e,t){return e?"<defs>"+e+"</defs>"+t:t}function Im(e,t,s){const o=$m(e);return Cm(o.defs,t+o.content+s)}const Sm=e=>e==="unset"||e==="undefined"||e==="none";function xm(e,t){const s={...vl,...e},o={...Au,...t},l={left:s.left,top:s.top,width:s.width,height:s.height};let a=s.body;[s,o].forEach(w=>{const C=[],I=w.hFlip,q=w.vFlip;let N=w.rotate;I?q?N+=2:(C.push("translate("+(l.width+l.left).toString()+" "+(0-l.top).toString()+")"),C.push("scale(-1 1)"),l.top=l.left=0):q&&(C.push("translate("+(0-l.left).toString()+" "+(l.height+l.top).toString()+")"),C.push("scale(1 -1)"),l.top=l.left=0);let z;switch(N<0&&(N-=Math.floor(N/4)*4),N=N%4,N){case 1:z=l.height/2+l.top,C.unshift("rotate(90 "+z.toString()+" "+z.toString()+")");break;case 2:C.unshift("rotate(180 "+(l.width/2+l.left).toString()+" "+(l.height/2+l.top).toString()+")");break;case 3:z=l.width/2+l.left,C.unshift("rotate(-90 "+z.toString()+" "+z.toString()+")");break}N%2===1&&(l.left!==l.top&&(z=l.left,l.left=l.top,l.top=z),l.width!==l.height&&(z=l.width,l.width=l.height,l.height=z)),C.length&&(a=Im(a,'<g transform="'+C.join(" ")+'">',"</g>"))});const i=o.width,r=o.height,c=l.width,f=l.height;let u,v;i===null?(v=r===null?"1em":r==="auto"?f:r,u=Xi(v,c/f)):(u=i==="auto"?c:i,v=r===null?Xi(u,f/c):r==="auto"?f:r);const g={},h=(w,C)=>{Sm(C)||(g[w]=C.toString())};h("width",u),h("height",v);const b=[l.left,l.top,c,f];return g.viewBox=b.join(" "),{attributes:g,viewBox:b,body:a}}const Tm=/\sid="(\S+)"/g,Am="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);let Em=0;function Rm(e,t=Am){const s=[];let o;for(;o=Tm.exec(e);)s.push(o[1]);if(!s.length)return e;const l="suffix"+(Math.random()*16777216|Date.now()).toString(16);return s.forEach(a=>{const i=typeof t=="function"?t(a):t+(Em++).toString(),r=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+r+')([")]|\\.[a-z])',"g"),"$1"+i+l+"$3")}),e=e.replace(new RegExp(l,"g"),""),e}const ca=Object.create(null);function Um(e,t){ca[e]=t}function ua(e){return ca[e]||ca[""]}function Fa(e){let t;if(typeof e.resources=="string")t=[e.resources];else if(t=e.resources,!(t instanceof Array)||!t.length)return null;return{resources:t,path:e.path||"/",maxURL:e.maxURL||500,rotate:e.rotate||750,timeout:e.timeout||5e3,random:e.random===!0,index:e.index||0,dataAfterTimeout:e.dataAfterTimeout!==!1}}const Ba=Object.create(null),Rn=["https://api.simplesvg.com","https://api.unisvg.com"],Do=[];for(;Rn.length>0;)Rn.length===1||Math.random()>.5?Do.push(Rn.shift()):Do.push(Rn.pop());Ba[""]=Fa({resources:["https://api.iconify.design"].concat(Do)});function Dm(e,t){const s=Fa(t);return s===null?!1:(Ba[e]=s,!0)}function Va(e){return Ba[e]}const Mm=()=>{let e;try{if(e=fetch,typeof e=="function")return e}catch{}};let Yi=Mm();function Pm(e,t){const s=Va(e);if(!s)return 0;let o;if(!s.maxURL)o=0;else{let l=0;s.resources.forEach(i=>{l=Math.max(l,i.length)});const a=t+".json?icons=";o=s.maxURL-l-s.path.length-a.length}return o}function Lm(e){return e===404}const Om=(e,t,s)=>{const o=[],l=Pm(e,t),a="icons";let i={type:a,provider:e,prefix:t,icons:[]},r=0;return s.forEach((c,f)=>{r+=c.length+1,r>=l&&f>0&&(o.push(i),i={type:a,provider:e,prefix:t,icons:[]},r=c.length),i.icons.push(c)}),o.push(i),o};function Nm(e){if(typeof e=="string"){const t=Va(e);if(t)return t.path}return"/"}const Fm=(e,t,s)=>{if(!Yi){s("abort",424);return}let o=Nm(t.provider);switch(t.type){case"icons":{const a=t.prefix,r=t.icons.join(","),c=new URLSearchParams({icons:r});o+=a+".json?"+c.toString();break}case"custom":{const a=t.uri;o+=a.slice(0,1)==="/"?a.slice(1):a;break}default:s("abort",400);return}let l=503;Yi(e+o).then(a=>{const i=a.status;if(i!==200){setTimeout(()=>{s(Lm(i)?"abort":"next",i)});return}return l=501,a.json()}).then(a=>{if(typeof a!="object"||a===null){setTimeout(()=>{a===404?s("abort",a):s("next",l)});return}setTimeout(()=>{s("success",a)})}).catch(()=>{s("next",l)})},Bm={prepare:Om,send:Fm};function Vm(e){const t={loaded:[],missing:[],pending:[]},s=Object.create(null);e.sort((l,a)=>l.provider!==a.provider?l.provider.localeCompare(a.provider):l.prefix!==a.prefix?l.prefix.localeCompare(a.prefix):l.name.localeCompare(a.name));let o={provider:"",prefix:"",name:""};return e.forEach(l=>{if(o.name===l.name&&o.prefix===l.prefix&&o.provider===l.provider)return;o=l;const a=l.provider,i=l.prefix,r=l.name,c=s[a]||(s[a]=Object.create(null)),f=c[i]||(c[i]=gn(a,i));let u;r in f.icons?u=t.loaded:i===""||f.missing.has(r)?u=t.missing:u=t.pending;const v={provider:a,prefix:i,name:r};u.push(v)}),t}function Eu(e,t){e.forEach(s=>{const o=s.loaderCallbacks;o&&(s.loaderCallbacks=o.filter(l=>l.id!==t))})}function jm(e){e.pendingCallbacksFlag||(e.pendingCallbacksFlag=!0,setTimeout(()=>{e.pendingCallbacksFlag=!1;const t=e.loaderCallbacks?e.loaderCallbacks.slice(0):[];if(!t.length)return;let s=!1;const o=e.provider,l=e.prefix;t.forEach(a=>{const i=a.icons,r=i.pending.length;i.pending=i.pending.filter(c=>{if(c.prefix!==l)return!0;const f=c.name;if(e.icons[f])i.loaded.push({provider:o,prefix:l,name:f});else if(e.missing.has(f))i.missing.push({provider:o,prefix:l,name:f});else return s=!0,!0;return!1}),i.pending.length!==r&&(s||Eu([e],a.id),a.callback(i.loaded.slice(0),i.missing.slice(0),i.pending.slice(0),a.abort))})}))}let qm=0;function Hm(e,t,s){const o=qm++,l=Eu.bind(null,s,o);if(!t.pending.length)return l;const a={id:o,icons:t,callback:e,abort:l};return s.forEach(i=>{(i.loaderCallbacks||(i.loaderCallbacks=[])).push(a)}),l}function zm(e,t=!0,s=!1){const o=[];return e.forEach(l=>{const a=typeof l=="string"?pl(l,t,s):l;a&&o.push(a)}),o}var Wm={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function Km(e,t,s,o){const l=e.resources.length,a=e.random?Math.floor(Math.random()*l):e.index;let i;if(e.random){let W=e.resources.slice(0);for(i=[];W.length>1;){const te=Math.floor(Math.random()*W.length);i.push(W[te]),W=W.slice(0,te).concat(W.slice(te+1))}i=i.concat(W)}else i=e.resources.slice(a).concat(e.resources.slice(0,a));const r=Date.now();let c="pending",f=0,u,v=null,g=[],h=[];typeof o=="function"&&h.push(o);function b(){v&&(clearTimeout(v),v=null)}function w(){c==="pending"&&(c="aborted"),b(),g.forEach(W=>{W.status==="pending"&&(W.status="aborted")}),g=[]}function C(W,te){te&&(h=[]),typeof W=="function"&&h.push(W)}function I(){return{startTime:r,payload:t,status:c,queriesSent:f,queriesPending:g.length,subscribe:C,abort:w}}function q(){c="failed",h.forEach(W=>{W(void 0,u)})}function N(){g.forEach(W=>{W.status==="pending"&&(W.status="aborted")}),g=[]}function z(W,te,O){const R=te!=="success";switch(g=g.filter(F=>F!==W),c){case"pending":break;case"failed":if(R||!e.dataAfterTimeout)return;break;default:return}if(te==="abort"){u=O,q();return}if(R){u=O,g.length||(i.length?Z():q());return}if(b(),N(),!e.random){const F=e.resources.indexOf(W.resource);F!==-1&&F!==e.index&&(e.index=F)}c="completed",h.forEach(F=>{F(O)})}function Z(){if(c!=="pending")return;b();const W=i.shift();if(W===void 0){if(g.length){v=setTimeout(()=>{b(),c==="pending"&&(N(),q())},e.timeout);return}q();return}const te={status:"pending",resource:W,callback:(O,R)=>{z(te,O,R)}};g.push(te),f++,v=setTimeout(Z,e.rotate),s(W,t,te.callback)}return setTimeout(Z),I}function Ru(e){const t={...Wm,...e};let s=[];function o(){s=s.filter(r=>r().status==="pending")}function l(r,c,f){const u=Km(t,r,c,(v,g)=>{o(),f&&f(v,g)});return s.push(u),u}function a(r){return s.find(c=>r(c))||null}return{query:l,find:a,setIndex:r=>{t.index=r},getIndex:()=>t.index,cleanup:o}}function er(){}const Fl=Object.create(null);function Gm(e){if(!Fl[e]){const t=Va(e);if(!t)return;const s=Ru(t),o={config:t,redundancy:s};Fl[e]=o}return Fl[e]}function Qm(e,t,s){let o,l;if(typeof e=="string"){const a=ua(e);if(!a)return s(void 0,424),er;l=a.send;const i=Gm(e);i&&(o=i.redundancy)}else{const a=Fa(e);if(a){o=Ru(a);const i=e.resources?e.resources[0]:"",r=ua(i);r&&(l=r.send)}}return!o||!l?(s(void 0,424),er):o.query(t,l,s)().abort}function tr(){}function Jm(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,jm(e)}))}function Zm(e){const t=[],s=[];return e.forEach(o=>{(o.match(ku)?t:s).push(o)}),{valid:t,invalid:s}}function Un(e,t,s){function o(){const l=e.pendingIcons;t.forEach(a=>{l&&l.delete(a),e.icons[a]||e.missing.add(a)})}if(s&&typeof s=="object")try{if(!Su(e,s).length){o();return}}catch(l){console.error(l)}o(),Jm(e)}function sr(e,t){e instanceof Promise?e.then(s=>{t(s)}).catch(()=>{t(null)}):t(e)}function Xm(e,t){e.iconsToLoad?e.iconsToLoad=e.iconsToLoad.concat(t).sort():e.iconsToLoad=t,e.iconsQueueFlag||(e.iconsQueueFlag=!0,setTimeout(()=>{e.iconsQueueFlag=!1;const{provider:s,prefix:o}=e,l=e.iconsToLoad;if(delete e.iconsToLoad,!l||!l.length)return;const a=e.loadIcon;if(e.loadIcons&&(l.length>1||!a)){sr(e.loadIcons(l,o,s),u=>{Un(e,l,u)});return}if(a){l.forEach(u=>{const v=a(u,o,s);sr(v,g=>{const h=g?{prefix:o,icons:{[u]:g}}:null;Un(e,[u],h)})});return}const{valid:i,invalid:r}=Zm(l);if(r.length&&Un(e,r,null),!i.length)return;const c=o.match(ku)?ua(s):null;if(!c){Un(e,i,null);return}c.prepare(s,o,i).forEach(u=>{Qm(s,u,v=>{Un(e,u.icons,v)})})}))}const Ym=(e,t)=>{const s=zm(e,!0,xu()),o=Vm(s);if(!o.pending.length){let c=!0;return t&&setTimeout(()=>{c&&t(o.loaded,o.missing,o.pending,tr)}),()=>{c=!1}}const l=Object.create(null),a=[];let i,r;return o.pending.forEach(c=>{const{provider:f,prefix:u}=c;if(u===r&&f===i)return;i=f,r=u,a.push(gn(f,u));const v=l[f]||(l[f]=Object.create(null));v[u]||(v[u]=[])}),o.pending.forEach(c=>{const{provider:f,prefix:u,name:v}=c,g=gn(f,u),h=g.pendingIcons||(g.pendingIcons=new Set);h.has(v)||(h.add(v),l[f][u].push(v))}),a.forEach(c=>{const f=l[c.provider][c.prefix];f.length&&Xm(c,f)}),t?Hm(t,o,a):tr};function eh(e,t){const s={...e};for(const o in t){const l=t[o],a=typeof l;o in Tu?(l===null||l&&(a==="string"||a==="number"))&&(s[o]=l):a===typeof s[o]&&(s[o]=o==="rotate"?l%4:l)}return s}const th=/[\s,]+/;function sh(e,t){t.split(th).forEach(s=>{switch(s.trim()){case"horizontal":e.hFlip=!0;break;case"vertical":e.vFlip=!0;break}})}function nh(e,t=0){const s=e.replace(/^-?[0-9.]*/,"");function o(l){for(;l<0;)l+=4;return l%4}if(s===""){const l=parseInt(e);return isNaN(l)?0:o(l)}else if(s!==e){let l=0;switch(s){case"%":l=25;break;case"deg":l=90}if(l){let a=parseFloat(e.slice(0,e.length-s.length));return isNaN(a)?0:(a=a/l,a%1===0?o(a):0)}}return t}function oh(e,t){let s=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const o in t)s+=" "+o+'="'+t[o]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+s+">"+e+"</svg>"}function lh(e){return e.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function ah(e){return"data:image/svg+xml,"+lh(e)}function ih(e){return'url("'+ah(e)+'")'}const nr={...Au,inline:!1},rh={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},ch={display:"inline-block"},da={backgroundColor:"currentColor"},Uu={backgroundColor:"transparent"},or={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},lr={webkitMask:da,mask:da,background:Uu};for(const e in lr){const t=lr[e];for(const s in or)t[e+s]=or[s]}const Mo={};["horizontal","vertical"].forEach(e=>{const t=e.slice(0,1)+"Flip";Mo[e+"-flip"]=t,Mo[e.slice(0,1)+"-flip"]=t,Mo[e+"Flip"]=t});function ar(e){return e+(e.match(/^[-0-9.]+$/)?"px":"")}const ir=(e,t)=>{const s=eh(nr,t),o={...rh},l=t.mode||"svg",a={},i=t.style,r=typeof i=="object"&&!(i instanceof Array)?i:{};for(let w in t){const C=t[w];if(C!==void 0)switch(w){case"icon":case"style":case"onLoad":case"mode":case"ssr":break;case"inline":case"hFlip":case"vFlip":s[w]=C===!0||C==="true"||C===1;break;case"flip":typeof C=="string"&&sh(s,C);break;case"color":a.color=C;break;case"rotate":typeof C=="string"?s[w]=nh(C):typeof C=="number"&&(s[w]=C);break;case"ariaHidden":case"aria-hidden":C!==!0&&C!=="true"&&delete o["aria-hidden"];break;default:{const I=Mo[w];I?(C===!0||C==="true"||C===1)&&(s[I]=!0):nr[w]===void 0&&(o[w]=C)}}}const c=xm(e,s),f=c.attributes;if(s.inline&&(a.verticalAlign="-0.125em"),l==="svg"){o.style={...a,...r},Object.assign(o,f);let w=0,C=t.id;return typeof C=="string"&&(C=C.replace(/-/g,"_")),o.innerHTML=Rm(c.body,C?()=>C+"ID"+w++:"iconifyVue"),eo("svg",o)}const{body:u,width:v,height:g}=e,h=l==="mask"||(l==="bg"?!1:u.indexOf("currentColor")!==-1),b=oh(u,{...f,width:v+"",height:g+""});return o.style={...a,"--svg":ih(b),width:ar(f.width),height:ar(f.height),...ch,...h?da:Uu,...r},eo("span",o)};xu(!0);Um("",Bm);if(typeof document<"u"&&typeof window<"u"){const e=window;if(e.IconifyPreload!==void 0){const t=e.IconifyPreload,s="Invalid IconifyPreload syntax.";typeof t=="object"&&t!==null&&(t instanceof Array?t:[t]).forEach(o=>{try{(typeof o!="object"||o===null||o instanceof Array||typeof o.icons!="object"||typeof o.prefix!="string"||!_m(o))&&console.error(s)}catch{console.error(s)}})}if(e.IconifyProviders!==void 0){const t=e.IconifyProviders;if(typeof t=="object"&&t!==null)for(let s in t){const o="IconifyProviders["+s+"] is invalid.";try{const l=t[s];if(typeof l!="object"||!l||l.resources===void 0)continue;Dm(s,l)||console.error(o)}catch{console.error(o)}}}}const uh={...vl,body:""},dh=ze((e,{emit:t})=>{const s=k(null);function o(){var f,u;s.value&&((u=(f=s.value).abort)==null||u.call(f),s.value=null)}const l=k(!!e.ssr),a=k(""),i=Gn(null);function r(){const f=e.icon;if(typeof f=="object"&&f!==null&&typeof f.body=="string")return a.value="",{data:f};let u;if(typeof f!="string"||(u=pl(f,!1,!0))===null)return null;let v=ym(u);if(!v){const b=s.value;return(!b||b.name!==f)&&(v===null?s.value={name:f}:s.value={name:f,abort:Ym([u],c)}),null}o(),a.value!==f&&(a.value=f,vt(()=>{t("load",f)}));const g=e.customise;if(g){v=Object.assign({},v);const b=g(v.body,u.name,u.prefix,u.provider);typeof b=="string"&&(v.body=b)}const h=["iconify"];return u.prefix!==""&&h.push("iconify--"+u.prefix),u.provider!==""&&h.push("iconify--"+u.provider),{data:v,classes:h}}function c(){var u;const f=r();f?f.data!==((u=i.value)==null?void 0:u.data)&&(i.value=f):i.value=null}return l.value?c():rt(()=>{l.value=!0,c()}),st(()=>e.icon,c),Et(o),()=>{const f=i.value;if(!f)return ir(uh,e);let u=e;return f.classes&&(u={...e,class:f.classes.join(" ")}),ir({...vl,...f.data},u)}},{props:["icon","mode","ssr","width","height","style","color","inline","rotate","hFlip","horizontalFlip","vFlip","verticalFlip","flip","id","ariaHidden","customise","title"],emits:["load"]}),_=ze({__name:"IconifyIcon",props:{icon:{},className:{}},setup(e){return(t,s)=>(d(),Fe(Y(dh),{icon:e.icon,class:$e(e.className)},null,8,["icon","class"]))}});function Du(){const e=k("auto"),t=k(!1),s=fe(()=>e.value==="auto"?t.value:e.value==="dark"),o=()=>{if(typeof window<"u"){const h=window.matchMedia("(prefers-color-scheme: dark)");t.value=h.matches}};let l=null;const a=h=>{t.value=h.matches},i=()=>{if(typeof document<"u"){const h=document.documentElement;s.value?h.setAttribute("data-theme","dark"):h.removeAttribute("data-theme")}},r=h=>{typeof localStorage<"u"&&localStorage.setItem("hayaku-theme",h)},c=()=>{if(typeof localStorage<"u"){const h=localStorage.getItem("hayaku-theme");if(h&&["light","dark","auto"].includes(h))return h}return"auto"},f=()=>{e.value==="auto"?e.value="dark":e.value==="dark"?e.value="light":e.value="auto",r(e.value)},u=h=>{e.value=h,r(h)},v=()=>{e.value=c(),o(),typeof window<"u"&&(l=window.matchMedia("(prefers-color-scheme: dark)"),l.addEventListener("change",a)),i()},g=()=>{l&&l.removeEventListener("change",a)};return st(s,()=>{i()},{immediate:!0}),st(e,()=>{i()}),rt(()=>{v()}),Et(()=>{g()}),{theme:e,isDark:s,toggleTheme:f,setTheme:u,systemPrefersDark:t}}const Ge=(e,t)=>{const s=e.__vccOpts||e;for(const[o,l]of t)s[o]=l;return s};function $n(){const e=k(!1),t=k({title:"",message:"",type:"warning",confirmText:"确认",cancelText:"取消"});let s=null;const o=i=>(t.value={...t.value,...i,title:i.title||"",message:i.message||""},e.value=!0,new Promise(r=>{s=r})),l=()=>{e.value=!1,s&&(s(!0),s=null)},a=()=>{e.value=!1,s&&(s(!1),s=null)};return{visible:fe(()=>e.value),config:fe(()=>t.value),show:o,handleConfirm:l,handleCancel:a}}const fh={key:0,class:"dialog-icon"},ph={class:"dialog-title"},vh={key:1,class:"dialog-message"},mh={class:"dialog-actions"},hh=ze({__name:"ConfirmDialog",props:{visible:{type:Boolean},title:{},message:{default:""},type:{default:"warning"},confirmText:{default:"确认"},cancelText:{default:"取消"},showIcon:{type:Boolean,default:!0}},emits:["confirm","cancel"],setup(e,{emit:t}){const s=e,o=t,l=fe(()=>({info:"fluent-color:question-circle-24",warning:"fluent-color:warning-24",danger:"fluent-color:error-circle-24"})[s.type]),a=fe(()=>({info:"btn-primary",warning:"btn-warning",danger:"btn-error"})[s.type]),i=()=>{o("confirm")},r=()=>{o("cancel")};return(c,f)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"confirm-dialog-overlay",onClick:je(r,["self"])},[n("div",{class:$e(["confirm-dialog",`type-${e.type}`])},[e.showIcon?(d(),p("div",fh,[m(_,{icon:l.value},null,8,["icon"])])):E("",!0),n("h3",ph,y(e.title),1),e.message?(d(),p("p",vh,y(e.message),1)):E("",!0),n("div",mh,[e.cancelText?(d(),p("button",{key:0,class:"btn btn-outline",onClick:r},y(e.cancelText),1)):E("",!0),n("button",{class:$e(["btn",a.value]),onClick:i},y(e.confirmText),3)])],2)])):E("",!0)]),_:1})]))}}),nn=Ge(hh,[["__scopeId","data-v-383f01a7"]]);function Ft(){const e=k([]),t=(r,c="info",f=3e3,u=!0)=>{const v=`${Date.now()}-${Math.random()}`,g={id:v,message:r,type:c,duration:f,closable:u};return e.value.push(g),f>0&&setTimeout(()=>{s(v)},f),v},s=r=>{const c=e.value.findIndex(f=>f.id===r);c>-1&&e.value.splice(c,1)};return{toasts:e,showToast:t,removeToast:s,success:(r,c)=>t(r,"success",c),error:(r,c)=>t(r,"error",c),info:(r,c)=>t(r,"info",c),warning:(r,c)=>t(r,"warning",c)}}const gh={class:"toast-content"},yh={class:"toast-message"},bh=["onClick"],_h=ze({__name:"Toast",props:{toasts:{}},emits:["remove"],setup(e,{emit:t}){const s=t,o=a=>{const i={success:"mdi:check-circle",error:"mdi:alert-circle",info:"mdi:information",warning:"mdi:alert"};return i[a]||i.info},l=a=>{s("remove",a)};return(a,i)=>(d(),Fe(Nt,{to:"body"},[m(yp,{name:"toast",tag:"div",class:"toast-container"},{default:ft(()=>[(d(!0),p(he,null,Re(e.toasts,r=>(d(),p("div",{key:r.id,class:$e(["toast",`toast-${r.type}`])},[n("div",gh,[m(_,{icon:o(r.type),class:"toast-icon"},null,8,["icon"]),n("span",yh,y(r.message),1)]),r.closable?(d(),p("button",{key:0,class:"toast-close",onClick:c=>l(r.id)},[m(_,{icon:"mdi:close"})],8,bh)):E("",!0)],2))),128))]),_:1})]))}}),ls=Ge(_h,[["__scopeId","data-v-8adff0c8"]]),wh={class:"setup-wizard"},kh={class:"wizard-card"},$h={class:"steps-indicator"},Ch={key:0,class:"wizard-content step-1"},Ih={class:"setting-group"},Sh={class:"setting-label"},xh={class:"path-input-group"},Th={key:0,class:"setting-error"},Ah={class:"quick-options"},Eh=["onClick"],Rh={key:1,class:"wizard-content step-2"},Uh={class:"setting-group"},Dh={class:"setting-label"},Mh={class:"wizard-actions"},Ph=["disabled"],Lh=ze({__name:"SetupWizard",emits:["complete"],setup(e,{emit:t}){const s=t,o=k(1),l=k(""),a=k(""),i=k(3),r=k(!0),c=k(!0),{visible:f,config:u,show:v,handleConfirm:g,handleCancel:h}=$n(),{toasts:b,error:w,removeToast:C}=Ft(),I=fe(()=>l.value.trim().length>0&&!a.value);rt(()=>{setTimeout(()=>{c.value=!1},100)});const q=[{label:"Downloads",value:"/Users/用户/Downloads/Hayaku/",icon:"mdi:folder-download"},{label:"Desktop",value:"/Users/用户/Desktop/Hayaku/",icon:"mdi:desktop-classic"},{label:"自定义",value:"",icon:"mdi:folder-cog"}],N=()=>{if(a.value="",!!l.value.trim()){if(l.value.includes("~")){a.value="路径不能包含 ~ 符号,请使用完整路径(例如:/Users/你的用户名/Downloads/Hayaku/";return}if(!l.value.startsWith("/")){a.value="路径必须是绝对路径,以 / 开头";return}l.value.endsWith("/")||(a.value="路径必须以 / 结尾")}},z=async()=>{await v({title:"路径格式说明",message:"请输入完整的绝对路径(不能使用 ~ 符号),例如:/Users/你的用户名/Downloads/Hayaku/。注意:必须以 / 开头并以 / 结尾",type:"info",confirmText:"我知道了",cancelText:""})},Z=()=>{g()},W=()=>{h()},te=async()=>{if(o.value<2&&l.value&&!a.value)try{const F=await oe.validatePath(l.value);if(!F.exists){a.value="目录不存在,请选择有效的目录";return}if(!F.isDirectory){a.value="所选路径不是目录";return}o.value++}catch(F){console.error("验证路径失败:",F),a.value="无法验证目录是否存在"}},O=()=>{o.value>1&&o.value--},R=async()=>{try{await oe.updateSettings({download_path:l.value,concurrent_downloads:i.value.toString(),auto_check_update:r.value?"true":"false"}),s("complete")}catch(F){console.error("保存配置失败:",F),w("保存配置失败,请重试",4e3)}};return(F,$)=>(d(),p("div",wh,[n("div",{class:$e(["white-overlay",{"fade-out":!c.value}])},null,2),n("div",{class:$e(["starfield-layer",{visible:!c.value}])},null,2),n("div",{class:$e(["glass-blur-layer",{visible:!c.value}])},null,2),$[15]||($[15]=Ho('<div class="wizard-background" data-v-e30f1f17><div class="gradient-orb orb-1" data-v-e30f1f17></div><div class="gradient-orb orb-2" data-v-e30f1f17></div><div class="gradient-orb orb-3" data-v-e30f1f17></div><div class="gradient-orb orb-4" data-v-e30f1f17></div><div class="gradient-orb orb-5" data-v-e30f1f17></div><div class="gradient-orb orb-6" data-v-e30f1f17></div><div class="gradient-orb orb-7" data-v-e30f1f17></div><div class="gradient-orb orb-8" data-v-e30f1f17></div><div class="gradient-orb orb-9" data-v-e30f1f17></div><div class="gradient-orb orb-10" data-v-e30f1f17></div><div class="gradient-orb orb-11" data-v-e30f1f17></div><div class="gradient-orb orb-12" data-v-e30f1f17></div><div class="gradient-orb orb-13" data-v-e30f1f17></div><div class="gradient-orb orb-14" data-v-e30f1f17></div><div class="gradient-orb orb-15" data-v-e30f1f17></div></div>',1)),n("div",kh,[$[14]||($[14]=n("div",{class:"wizard-header"},[n("h1",{class:"wizard-title"},"欢迎使用"),n("p",{class:"wizard-subtitle"},"让我们先进行简单的配置")],-1)),n("div",$h,[n("div",{class:$e(["step",{active:o.value===1}])},[...$[2]||($[2]=[n("div",{class:"step-circle"},"1",-1),n("span",null,"下载路径",-1)])],2),$[4]||($[4]=n("div",{class:"step-line"},null,-1)),n("div",{class:$e(["step",{active:o.value===2}])},[...$[3]||($[3]=[n("div",{class:"step-circle"},"2",-1),n("span",null,"偏好设置",-1)])],2)]),o.value===1?(d(),p("div",Ch,[n("div",Ih,[n("label",Sh,[m(_,{icon:"mdi:folder-download"}),$[5]||($[5]=be(" 输入默认下载位置 ",-1))]),n("div",xh,[Be(n("input",{ref:"pathInputRef","onUpdate:modelValue":$[0]||($[0]=U=>l.value=U),type:"text",class:"path-input",placeholder:"/Users/你的用户名/Downloads/Hayaku/",onInput:N},null,544),[[Je,l.value]]),n("button",{class:"browse-btn",onClick:z},[m(_,{icon:"mdi:help-circle"}),$[6]||($[6]=be(" 帮助 ",-1))])]),$[7]||($[7]=n("p",{class:"setting-hint"},"请输入完整的绝对路径,不能使用 ~ 符号",-1)),a.value?(d(),p("p",Th,y(a.value),1)):E("",!0)]),n("div",Ah,[$[8]||($[8]=n("p",{class:"quick-label"},"快速选择:",-1)),(d(),p(he,null,Re(q,U=>n("button",{key:U.value,class:"quick-option",onClick:se=>{l.value=U.value,N()}},[m(_,{icon:U.icon},null,8,["icon"]),be(" "+y(U.label),1)],8,Eh)),64))])])):o.value===2?(d(),p("div",Rh,[n("div",Uh,[n("label",Dh,[m(_,{icon:"mdi:download-multiple"}),$[9]||($[9]=be(" 最大并发下载数 ",-1))]),Be(n("select",{"onUpdate:modelValue":$[1]||($[1]=U=>i.value=U),class:"setting-select"},[...$[10]||($[10]=[n("option",{value:1},"1个较慢但稳定",-1),n("option",{value:3},"3个推荐",-1),n("option",{value:5},"5个快速",-1)])],512),[[Pa,i.value]])])])):E("",!0),n("div",Mh,[o.value>1?(d(),p("button",{key:0,class:"btn btn-secondary",onClick:O},[m(_,{icon:"mdi:arrow-left"}),$[11]||($[11]=be(" 上一步 ",-1))])):E("",!0),o.value<2?(d(),p("button",{key:1,class:"btn btn-primary",onClick:te,disabled:!I.value},[$[12]||($[12]=be(" 下一步 ",-1)),m(_,{icon:"mdi:arrow-right"})],8,Ph)):(d(),p("button",{key:2,class:"btn btn-primary btn-finish",onClick:R},[m(_,{icon:"mdi:check"}),$[13]||($[13]=be(" 完成设置 ",-1))]))])]),m(nn,{visible:Y(f),title:Y(u).title,message:Y(u).message,type:Y(u).type,confirmText:Y(u).confirmText,cancelText:Y(u).cancelText,onConfirm:Z,onCancel:W},null,8,["visible","title","message","type","confirmText","cancelText"]),m(ls,{toasts:Y(b),onRemove:Y(C)},null,8,["toasts","onRemove"])]))}}),Oh=Ge(Lh,[["__scopeId","data-v-e30f1f17"]]),Nh={class:"error-card"},Fh={class:"error-icon-container"},Bh={key:0,class:"error-details"},Vh={class:"detail-item"},jh={class:"detail-value"},qh={key:0,class:"detail-item detail-status"},Hh={class:"tech-details"},zh={key:0,class:"tech-content"},Wh={class:"tech-item"},Kh={class:"tech-value"},Gh={class:"tech-item"},Qh={class:"tech-value"},Jh={class:"tech-item"},Zh={class:"tech-value"},Xh=ze({__name:"ErrorPage",props:{errorMessage:{},errorCode:{},requestUrl:{},statusCode:{}},emits:["retry"],setup(e,{emit:t}){const{isDark:s}=Du(),o=t,l=k(!1),a=()=>{o("retry")},i=r=>r&&r>=500?"status-5xx":"";return(r,c)=>(d(),p("div",{class:$e(["error-page",{"light-theme":!Y(s)}])},[c[9]||(c[9]=Ho('<div class="background-layer" data-v-97516c7f><div class="gradient-orb orb-1" data-v-97516c7f></div><div class="gradient-orb orb-2" data-v-97516c7f></div><div class="gradient-orb orb-3" data-v-97516c7f></div><div class="gradient-orb orb-4" data-v-97516c7f></div><div class="gradient-orb orb-5" data-v-97516c7f></div><div class="gradient-orb orb-6" data-v-97516c7f></div></div><div class="blur-layer" data-v-97516c7f></div>',2)),n("div",Nh,[n("div",Fh,[m(_,{icon:"mdi:alert-circle",class:"error-icon"})]),c[7]||(c[7]=n("h1",{class:"error-title"},"无法连接到服务",-1)),c[8]||(c[8]=n("p",{class:"error-description"},"无法与后端服务建立连接,请确保服务已启动",-1)),e.errorMessage?(d(),p("div",Bh,[n("div",Vh,[c[1]||(c[1]=n("span",{class:"detail-label"},"错误信息:",-1)),n("span",jh,y(e.errorMessage),1)]),e.statusCode?(d(),p("div",qh,[c[2]||(c[2]=n("span",{class:"detail-label"},"HTTP 状态:",-1)),n("span",{class:$e(["detail-value status-badge",i(e.statusCode)])},y(e.statusCode),3)])):E("",!0)])):E("",!0),n("button",{class:"retry-button",onClick:a},[m(_,{icon:"mdi:refresh",class:"retry-icon"}),c[3]||(c[3]=be(" 重试连接 ",-1))]),n("div",Hh,[n("button",{class:"tech-toggle",onClick:c[0]||(c[0]=f=>l.value=!l.value)},[m(_,{icon:l.value?"mdi:chevron-up":"mdi:chevron-down",class:"toggle-icon"},null,8,["icon"]),be(" "+y(l.value?"隐藏":"显示")+"技术细节 ",1)]),l.value?(d(),p("div",zh,[n("div",Wh,[c[4]||(c[4]=n("span",{class:"tech-label"},"错误代码:",-1)),n("code",Kh,y(e.errorCode||"N/A"),1)]),n("div",Gh,[c[5]||(c[5]=n("span",{class:"tech-label"},"请求地址:",-1)),n("code",Qh,y(e.requestUrl||"N/A"),1)]),n("div",Jh,[c[6]||(c[6]=n("span",{class:"tech-label"},"状态码:",-1)),n("code",Zh,y(e.statusCode||"N/A"),1)])])):E("",!0)])])],2))}}),Yh=Ge(Xh,[["__scopeId","data-v-97516c7f"]]),eg={class:"brand-mini"},tg={class:"mini-icon morphing-logo",viewBox:"0 0 134 78",xmlns:"http://www.w3.org/2000/svg"},sg={class:"text-morph-container"},ng=ze({__name:"GpuBadge",setup(e){const t=["nvidia","amd","intel"],s=k(!1),o=k(!1),l=k(0),a=fe(()=>t[Math.min(l.value,t.length-1)]);return rt(()=>{s.value=!0,setTimeout(()=>{l.value=0},0),setTimeout(()=>{l.value=1},3e3),setTimeout(()=>{l.value=2},6e3),setTimeout(()=>{o.value=!0,setTimeout(()=>{s.value=!1},1e3)},9e3)}),(i,r)=>s.value?(d(),p("div",{key:0,class:$e(["gpu-badge",{visible:!o.value,fading:o.value}])},[n("div",{class:$e(["gpu-badge-content",a.value])},[n("div",eg,[(d(),p("svg",tg,[n("g",{class:$e(["logo-group nvidia-group",{active:a.value==="nvidia"}])},[...r[0]||(r[0]=[Ho('<path class="morph-path" d="M0 0 C12.54 0 25.08 0 38 0 C38 13.2 38 26.4 38 40 C25.46 40 12.92 40 0 40 C0 38.68 0 37.36 0 36 C1.06476562 35.85304687 2.12953125 35.70609375 3.2265625 35.5546875 C13.3120975 34.03853081 21.82451691 31.49322389 31 27 C31 26.01 31 25.02 31 24 C27.46874936 23.06964139 25.69973057 22.63277298 22.40234375 24.36328125 C21.58894531 25.00652344 20.77554688 25.64976563 19.9375 26.3125 C14.90363622 30.23302898 11.16302084 32.29768056 4.6875 32.125 C3.80449219 32.10695312 2.92148437 32.08890625 2.01171875 32.0703125 C1.34785156 32.04710937 0.68398438 32.02390625 0 32 C0 31.01 0 30.02 0 29 C0.61746094 28.92523438 1.23492188 28.85046875 1.87109375 28.7734375 C10.09930732 27.49599795 16.00282149 24.36268808 21.5625 18.125 C22.036875 17.42375 22.51125 16.7225 23 16 C16.03283063 8.89660106 9.55458904 6.8667936 0 5 C0 3.35 0 1.7 0 0 Z" transform="translate(29,8)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C0 0.66 0 1.32 0 2 C0.825 1.896875 1.65 1.79375 2.5 1.6875 C7.27727816 2.11404269 10.15086437 4.29165297 14 7 C14.99 7.66 15.98 8.32 17 9 C16.43997584 12.53659092 15.32225676 13.95559692 12.5625 16.1875 C11.94503906 16.69667969 11.32757813 17.20585937 10.69140625 17.73046875 C7.14616093 20.39144965 4.36286967 20.08079388 0 20 C0 16.37 0 12.74 0 9 C5 11 5 11 6 13 C7.32 12.67 8.64 12.34 10 12 C10 11.01 10 10.02 10 9 C6.73454239 7.11608215 3.71888239 6.50712033 0 6 C0 5.01 0 4.02 0 3 C-5.4783585 4.13345348 -9.63973355 5.27782133 -14 9 C-15.33333333 11.33333333 -15.33333333 11.33333333 -15 14 C-12.06092106 19.53903338 -8.56258889 23.03298533 -2.6875 25.25 C-1.800625 25.4975 -0.91375 25.745 0 26 C0 26.99 0 27.98 0 29 C-5.48444452 29.84376069 -8.5206825 27.85606651 -12.81640625 24.77734375 C-17.94614183 20.60197758 -21.40291563 16.54804593 -23 10 C-16.2722326 4.50046262 -9.11114104 -0.934476 0 0 Z" transform="translate(29,14)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C0 0.99 0 1.98 0 3 C0.86625 2.9175 1.7325 2.835 2.625 2.75 C6.75988007 3.05628741 8.74642697 4.52108722 12 7 C11.01 8.32 10.02 9.64 9 11 C5.6885981 10.42906864 4.24945577 9.45395174 2 7 C1.34 6.67 0.68 6.34 0 6 C0 11.61 0 17.22 0 23 C-6.78988666 21.86835222 -6.78988666 21.86835222 -10.25 18.6875 C-11.24773438 17.79611328 -11.24773438 17.79611328 -12.265625 16.88671875 C-14.74048324 14.19447432 -16.02983263 12.19330518 -15.9375 8.5 C-14.44956331 4.53216883 -11.51205953 2.97552228 -8.0625 0.75 C-5.32037505 -0.24713635 -2.89171193 -0.13144145 0 0 Z" transform="translate(29,17)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C0.33 0 0.66 0 1 0 C1 1.65 1 3.3 1 5 C1.65226562 5.03738281 2.30453125 5.07476563 2.9765625 5.11328125 C12.74217854 5.84786299 17.93868328 9.45842487 25 16 C20.37191571 22.08312594 15.34160408 26.55279864 8 29 C5.66700175 29.03954234 3.33291811 29.04401732 1 29 C1 28.01 1 27.02 1 26 C1.56847656 25.92523438 2.13695312 25.85046875 2.72265625 25.7734375 C8.80959782 24.73692992 12.94210373 22.74628938 17 18 C17.33 17.01 17.66 16.02 18 15 C17.484375 14.7525 16.96875 14.505 16.4375 14.25 C14.4531691 13.23239441 12.52785489 12.10035577 10.625 10.9375 C7.46522605 9.10169181 4.66706956 8.35776288 1 8 C1 7.34 1 6.68 1 6 C-0.32 5.67 -1.64 5.34 -3 5 C-2.01 5 -1.02 5 0 5 C0 3.35 0 1.7 0 0 Z" transform="translate(28,8)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.8125 0.9375 2.8125 0.9375 4.8125 3.9375 C-4.1337481 10.13105638 -14.50909388 14.14654541 -25.5 14 C-26.38300781 13.99097656 -27.26601563 13.98195313 -28.17578125 13.97265625 C-28.83964844 13.96105469 -29.50351562 13.94945312 -30.1875 13.9375 C-29.5275 13.6075 -28.8675 13.2775 -28.1875 12.9375 C-28.1875 11.9475 -28.1875 10.9575 -28.1875 9.9375 C-27.58164062 9.92332031 -26.97578125 9.90914062 -26.3515625 9.89453125 C-18.20738915 9.43093984 -11.64529404 6.92377667 -5.4375 1.5625 C-3.1875 -0.0625 -3.1875 -0.0625 0 0 Z" transform="translate(57.1875,30.0625)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C0 0.99 0 1.98 0 3 C-0.71027344 3.25394531 -1.42054687 3.50789063 -2.15234375 3.76953125 C-3.53099609 4.28580078 -3.53099609 4.28580078 -4.9375 4.8125 C-5.85402344 5.14894531 -6.77054688 5.48539063 -7.71484375 5.83203125 C-10.3340424 6.83409094 -10.3340424 6.83409094 -11 10 C-8.26260237 15.36073703 -5.19932107 17.40033946 0 20 C0 20.99 0 21.98 0 23 C-5.56450647 22.86088734 -8.30281329 20.42713774 -12.265625 16.88671875 C-14.74048324 14.19447432 -16.02983263 12.19330518 -15.9375 8.5 C-14.44956331 4.53216883 -11.51205953 2.97552228 -8.0625 0.75 C-5.32037505 -0.24713635 -2.89171193 -0.13144145 0 0 Z" transform="translate(29,17)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C1.32 0 2.64 0 4 0 C4 3.63 4 7.26 4 11 C0.23312136 9.11656068 -0.79421646 8.30867531 -3 5 C-1.125 1.125 -1.125 1.125 0 0 Z" transform="translate(25,23)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C5.29441695 -0.50423019 7.81413519 0.81076967 12 4 C11.01 5.32 10.02 6.64 9 8 C5.6885981 7.42906864 4.24945577 6.45395174 2 4 C1.34 3.67 0.68 3.34 0 3 C0 2.01 0 1.02 0 0 Z" transform="translate(29,20)" data-v-730d2ac5></path>',8)])],2),n("g",{class:$e(["logo-group amd-group",{active:a.value==="amd"}])},[...r[1]||(r[1]=[n("path",{class:"morph-path",d:"M0 0 C16.83 0 33.66 0 51 0 C51 16.83 51 33.66 51 51 C48.69 49.02 46.38 47.04 44 45 C43.27417725 44.44562256 42.54835449 43.89124512 41.80053711 43.32006836 C38.81899562 40.84913766 37.20846555 39.06230495 36.44970703 35.19580078 C36.31170153 31.95595732 36.38764439 28.80021093 36.5625 25.5625 C36.59408203 24.44939453 36.62566406 23.33628906 36.65820312 22.18945312 C36.74029762 19.45687928 36.85504989 16.72984059 37 14 C36.01157104 14.10211792 36.01157104 14.10211792 35.00317383 14.20629883 C14.83637543 16.01467235 14.83637543 16.01467235 8.51171875 11.140625 C5.23950088 8.05852675 2.52477592 4.71319584 0 1 C0 0.67 0 0.34 0 0 Z",transform:"translate(9,12)"},null,-1),n("path",{class:"morph-path",d:"M0 0 C0 6.6 0 13.2 0 20 C6.6 20 13.2 20 20 20 C18.02 22.31 16.04 24.62 14 27 C13.42822021 27.72582275 12.85644043 28.45164551 12.26733398 29.19946289 C9.88914075 31.98841686 8.12555493 33.75449963 4.47705078 34.55029297 C1.63912549 34.68763628 -1.10220242 34.61385822 -3.9375 34.4375 C-4.90751953 34.40591797 -5.87753906 34.37433594 -6.87695312 34.34179688 C-9.25449905 34.25981253 -11.62561699 34.14518805 -14 34 C-16.06963753 16.73016067 -16.06963753 16.73016067 -12.74023438 10.72949219 C-10.29011715 7.6376776 -4.19941795 0 0 0 Z",transform:"translate(22,30)"},null,-1)])],2),n("g",{class:$e(["logo-group intel-group",{active:a.value==="intel"}])},[...r[2]||(r[2]=[Ho('<path class="morph-path" d="M0 0 C4.66018963 1.7027616 7.47755931 3.70250846 10 8 C10.33 10.97 10.66 13.94 11 17 C0.605 17.495 0.605 17.495 -10 18 C-7.44764651 21.22333274 -7.44764651 21.22333274 -4.80859375 21.109375 C-4.02613281 20.99078125 -3.24367188 20.8721875 -2.4375 20.75 C-1.65246094 20.64171875 -0.86742188 20.5334375 -0.05859375 20.421875 C2.05183551 20.08180814 2.05183551 20.08180814 4 19 C5.32 19.99 6.64 20.98 8 22 C7.05708604 24.35728489 6.4290911 25.7267671 4.2578125 27.109375 C-0.02942315 28.8005337 -4.47792027 28.5242991 -9 28 C-12.85432136 26.21049365 -14.49773376 24.73665715 -16.875 21.25 C-18.2388688 17.30993459 -18.73319703 14.11908446 -18 10 C-14.17920383 2.35840766 -8.43449648 -1.38325742 0 0 Z" transform="translate(91,28)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.31 0 4.62 0 7 0 C7.33 0.99 7.66 1.98 8 3 C8.515625 2.505 9.03125 2.01 9.5625 1.5 C12.92584256 -0.56974927 15.10277407 -0.4031613 19 0 C22.70339505 1.28194444 24.48363039 2.22240812 26.66015625 5.5 C28.41579632 10.08616181 28.33015601 14.01738 28.1875 18.875 C28.16719727 20.19371094 28.16719727 20.19371094 28.14648438 21.5390625 C28.11136623 23.69297552 28.05756694 25.84657004 28 28 C25.36 28 22.72 28 20 28 C19.98541748 27.43490723 19.97083496 26.86981445 19.95581055 26.28759766 C19.88143942 23.73269981 19.78474758 21.17912502 19.6875 18.625 C19.66494141 17.73554687 19.64238281 16.84609375 19.61914062 15.9296875 C19.5659668 14.65351562 19.5659668 14.65351562 19.51171875 13.3515625 C19.48553467 12.56604004 19.45935059 11.78051758 19.43237305 10.97119141 C19.15110403 8.59959844 19.15110403 8.59959844 16 7 C12.92334973 7.08221709 12.92334973 7.08221709 10 8 C8.0243438 10.96348429 7.73623141 11.68020373 7.5859375 15.01171875 C7.54726563 15.76904297 7.50859375 16.52636719 7.46875 17.30664062 C7.4378125 18.09232422 7.406875 18.87800781 7.375 19.6875 C7.33632813 20.48478516 7.29765625 21.28207031 7.2578125 22.10351562 C7.16367506 24.06863475 7.08075368 26.0342854 7 28 C4.69 28 2.38 28 0 28 C0 18.76 0 9.52 0 0 Z" transform="translate(27,28)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.64 0 5.28 0 8 0 C8 3.3 8 6.6 8 10 C9.65 10 11.3 10 13 10 C13 12.31 13 14.62 13 17 C11.35 17 9.7 17 8 17 C8.33 21.29 8.66 25.58 9 30 C10.32 30.33 11.64 30.66 13 31 C13 33.31 13 35.62 13 38 C8.56356484 38.43494462 6.67136622 38.54001196 3.125 35.6875 C-0.20289126 31.47869634 -0.11969945 28.36876926 -0.09765625 23.14453125 C-0.0962413 22.48289474 -0.09482635 21.82125824 -0.09336853 21.13957214 C-0.08777996 19.03050172 -0.07522965 16.92153823 -0.0625 14.8125 C-0.05748352 13.38086091 -0.05292087 11.94922015 -0.04882812 10.51757812 C-0.0378143 7.01168412 -0.02055755 3.5058525 0 0 Z" transform="translate(58,18)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.64 0 5.28 0 8 0 C8 13.2 8 26.4 8 40 C5.36 40 2.72 40 0 40 C0 26.8 0 13.6 0 0 Z" transform="translate(105,16)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.64 0 5.28 0 8 0 C8 9.24 8 18.48 8 28 C5.36 28 2.72 28 0 28 C0 18.76 0 9.52 0 0 Z" transform="translate(15,28)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C3.88095252 0.45658265 5.45400707 1.64150707 8.1875 4.375 C8.1875 5.035 8.1875 5.695 8.1875 6.375 C3.2375 6.375 -1.7125 6.375 -6.8125 6.375 C-3.88392857 0.51785714 -3.88392857 0.51785714 0 0 Z" transform="translate(86.8125,33.625)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C2.64 0 5.28 0 8 0 C8 2.64 8 5.28 8 8 C5.36 8 2.72 8 0 8 C0 5.36 0 2.72 0 0 Z" transform="translate(15,16)" data-v-730d2ac5></path><path class="morph-path" d="M0 0 C0.99 0.33 1.98 0.66 3 1 C3.33 1.99 3.66 2.98 4 4 C3.67 4.66 3.34 5.32 3 6 C1.35 5.67 -0.3 5.34 -2 5 C-2 3.68 -2 2.36 -2 1 C-1.34 0.67 -0.68 0.34 0 0 Z" transform="translate(118,50)" data-v-730d2ac5></path>',8)])],2)])),n("div",sg,[n("span",{class:$e(["morph-text",{active:a.value==="nvidia"}])},[...r[3]||(r[3]=[be(" NVIDIA ",-1),n("span",{class:"sub-brand-text"},"RTX",-1)])],2),n("span",{class:$e(["morph-text",{active:a.value==="amd"}])},[...r[4]||(r[4]=[be(" AMD ",-1),n("span",{class:"sub-brand-text"},"Radeon",-1)])],2),n("span",{class:$e(["morph-text",{active:a.value==="intel"}])},[...r[5]||(r[5]=[be(" Intel ",-1),n("span",{class:"sub-brand-text"},"CORE x Arc",-1)])],2)])])],2)],2)):E("",!0)}}),og=Ge(ng,[["__scopeId","data-v-730d2ac5"]]),Ws=k(null),Ks=k(!1),Dn=k(!1);function lg(e){if(typeof e=="string"&&(e==="user"||e==="admin"||e==="qiuchenly"))return e;const t={0:"user",1:"admin",2:"qiuchenly"},s=typeof e=="number"?e:parseInt(String(e||0));return t[s]||"user"}function rr(e){return{...e,role:lg(e.role)}}function Ss(){const e=async()=>{var r;const i=localStorage.getItem("token");if(!i){Ws.value=null,Ks.value=!1;return}try{const f=await oe.getAuthStatus(),u=f.data;u&&f.success===!0?(Ws.value=rr(u),Ks.value=!0):(Ws.value=null,Ks.value=!1,localStorage.removeItem("token"),localStorage.removeItem("refreshToken"))}catch(c){console.error("检查登录状态失败:",c),((r=c.response)==null?void 0:r.status)===401?(Ws.value=null,Ks.value=!1,localStorage.removeItem("token"),localStorage.removeItem("refreshToken")):i||(Ws.value=null,Ks.value=!1)}},t=async i=>{var r,c,f;Dn.value=!0;try{const u=await oe.login(i);return u.success&&((r=u.data)!=null&&r.user)?(Ws.value=rr(u.data.user),Ks.value=!0,e().catch(()=>{}),{success:!0,message:u.message||"登录成功"}):{success:!1,message:u.message||"登录失败"}}catch(u){return{success:!1,message:((f=(c=u.response)==null?void 0:c.data)==null?void 0:f.message)||u.message||"登录失败"}}finally{Dn.value=!1}},s=async i=>{var r,c;Dn.value=!0;try{const f=await oe.register(i);return f.success?(await e(),{success:!0,message:f.message||"注册成功"}):{success:!1,message:f.message||"注册失败"}}catch(f){return{success:!1,message:((c=(r=f.response)==null?void 0:r.data)==null?void 0:c.message)||f.message||"注册失败"}}finally{Dn.value=!1}},o=async()=>{try{await oe.logout(),await e()}catch(i){console.error("登出失败:",i),await e()}},l=fe(()=>Ws.value),a=fe(()=>Ks.value);return{user:l,isLoggedIn:a,loading:fe(()=>Dn.value),login:t,register:s,logout:o,checkAuthStatus:e}}const ag=Object.freeze(Object.defineProperty({__proto__:null,useAuth:Ss},Symbol.toStringTag,{value:"Module"})),ig={class:"dialog-header"},rg={class:"header-content"},cg={class:"header-icon-wrapper"},ug={class:"dialog-tabs"},dg={class:"dialog-content"},fg={class:"form-group"},pg={class:"form-label"},vg={class:"input-wrapper"},mg={class:"form-group"},hg={class:"form-label"},gg={class:"input-wrapper"},yg={key:0,class:"error-message"},bg=["disabled"],_g={key:1,class:"loading-spinner"},wg={class:"form-group"},kg={class:"form-label"},$g={class:"input-wrapper"},Cg={class:"form-group"},Ig={class:"form-label"},Sg={class:"input-wrapper"},xg={class:"form-group"},Tg={class:"form-label"},Ag={class:"input-wrapper"},Eg={class:"form-group"},Rg={class:"form-label"},Ug={class:"input-wrapper"},Dg={key:0,class:"error-message"},Mg=["disabled"],Pg={key:1,class:"loading-spinner"},Lg=ze({__name:"LoginDialog",props:{show:{type:Boolean}},emits:["close","success"],setup(e,{emit:t}){const s=e,o=t,{login:l,register:a,loading:i}=Ss(),{success:r}=Ft(),c=k("login"),f=k({username:"",password:""}),u=k({username:"",password:"",nickName:"",email:""}),v=k(""),g=k(""),h=()=>{o("close"),v.value="",g.value="",f.value={username:"",password:""},u.value={username:"",password:"",nickName:"",email:""}},b=async()=>{v.value="";const C=await l(f.value);C.success?(r("登录成功",2e3),o("success"),h()):v.value=C.message},w=async()=>{g.value="";const C=await a(u.value);C.success?(r("注册成功",2e3),o("success"),h()):g.value=C.message};return st(()=>s.show,C=>{C&&(c.value="login",v.value="",g.value="")}),(C,I)=>(d(),Fe(mt,{name:"dialog-fade"},{default:ft(()=>[e.show?(d(),p("div",{key:0,class:"login-overlay",onClick:je(h,["self"])},[n("div",{class:"login-dialog",onClick:I[8]||(I[8]=je(()=>{},["stop"]))},[n("div",ig,[n("div",rg,[n("div",cg,[m(_,{icon:"fluent-color:phone-laptop-16",class:"header-icon"})]),I[9]||(I[9]=n("h2",{class:"dialog-title"},"登录 / 注册",-1))]),n("button",{onClick:h,class:"close-button","aria-label":"关闭"},[m(_,{icon:"fluent-color:dismiss-circle-24",class:"close-icon"})])]),n("div",ug,[n("button",{class:$e(["tab-button",{active:c.value==="login"}]),onClick:I[0]||(I[0]=q=>c.value="login")},[m(_,{icon:"fluent-emoji-flat:backhand-index-pointing-right",class:"tab-icon"}),I[10]||(I[10]=n("span",null,"登录",-1))],2),n("button",{class:$e(["tab-button",{active:c.value==="register"}]),onClick:I[1]||(I[1]=q=>c.value="register")},[m(_,{icon:"fluent-color:person-add-24",class:"tab-icon"}),I[11]||(I[11]=n("span",null,"注册",-1))],2)]),n("div",dg,[c.value==="login"?(d(),p("form",{key:0,onSubmit:je(b,["prevent"]),class:"login-form"},[n("div",fg,[n("label",pg,[m(_,{icon:"fluent-color:person-24",class:"label-icon"}),I[12]||(I[12]=n("span",null,"用户名",-1))]),n("div",vg,[m(_,{icon:"fluent-color:person-20",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[2]||(I[2]=q=>f.value.username=q),type:"text",class:"form-input",placeholder:"请输入用户名",required:"",autocomplete:"username"},null,512),[[Je,f.value.username]])])]),n("div",mg,[n("label",hg,[m(_,{icon:"fluent-color:lock-closed-24",class:"label-icon"}),I[13]||(I[13]=n("span",null,"密码",-1))]),n("div",gg,[m(_,{icon:"fluent-color:lock-closed-20",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[3]||(I[3]=q=>f.value.password=q),type:"password",class:"form-input",placeholder:"请输入密码",required:"",autocomplete:"current-password"},null,512),[[Je,f.value.password]])])]),v.value?(d(),p("div",yg,[m(_,{icon:"fluent-color:error-circle-24-filled",class:"error-icon"}),n("span",null,y(v.value),1)])):E("",!0),n("button",{type:"submit",class:"btn btn-primary",disabled:Y(i)},[Y(i)?(d(),p("div",_g)):(d(),Fe(_,{key:0,icon:"fluent-emoji-flat:backhand-index-pointing-right",class:"btn-icon"})),n("span",null,y(Y(i)?"登录中...":"登录"),1)],8,bg)],32)):E("",!0),c.value==="register"?(d(),p("form",{key:1,onSubmit:je(w,["prevent"]),class:"login-form"},[n("div",wg,[n("label",kg,[m(_,{icon:"fluent-color:person-24",class:"label-icon"}),I[14]||(I[14]=n("span",null,"用户名",-1))]),n("div",$g,[m(_,{icon:"fluent-color:person-20",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[4]||(I[4]=q=>u.value.username=q),type:"text",class:"form-input",placeholder:"请输入用户名",required:"",autocomplete:"username"},null,512),[[Je,u.value.username]])])]),n("div",Cg,[n("label",Ig,[m(_,{icon:"fluent-color:lock-closed-24",class:"label-icon"}),I[15]||(I[15]=n("span",null,"密码",-1))]),n("div",Sg,[m(_,{icon:"fluent-color:lock-closed-20",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[5]||(I[5]=q=>u.value.password=q),type:"password",class:"form-input",placeholder:"请输入密码",required:"",autocomplete:"new-password"},null,512),[[Je,u.value.password]])])]),n("div",xg,[n("label",Tg,[m(_,{icon:"fluent-color:certificate-16",class:"label-icon"}),I[16]||(I[16]=n("span",null,"昵称(可选)",-1))]),n("div",Ag,[m(_,{icon:"fluent-color:certificate-16",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[6]||(I[6]=q=>u.value.nickName=q),type:"text",class:"form-input",placeholder:"请输入昵称",autocomplete:"nickname"},null,512),[[Je,u.value.nickName]])])]),n("div",Eg,[n("label",Rg,[m(_,{icon:"fluent-color:mail-24",class:"label-icon"}),I[17]||(I[17]=n("span",null,"邮箱(可选)",-1))]),n("div",Ug,[m(_,{icon:"fluent-color:mail-20",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[7]||(I[7]=q=>u.value.email=q),type:"email",class:"form-input",placeholder:"请输入邮箱",autocomplete:"email"},null,512),[[Je,u.value.email]])])]),g.value?(d(),p("div",Dg,[m(_,{icon:"fluent-color:error-circle-24-filled",class:"error-icon"}),n("span",null,y(g.value),1)])):E("",!0),n("button",{type:"submit",class:"btn btn-primary",disabled:Y(i)},[Y(i)?(d(),p("div",Pg)):(d(),Fe(_,{key:0,icon:"fluent-color:person-add-24",class:"btn-icon"})),n("span",null,y(Y(i)?"注册中...":"注册"),1)],8,Mg)],32)):E("",!0)])])])):E("",!0)]),_:1}))}}),Mu=Ge(Lg,[["__scopeId","data-v-34074855"]]),Og={class:"version-list-container"},Ng={key:0,class:"empty"},Fg={key:1},Bg={class:"version-filters"},Vg={class:"versions-list"},jg={class:"version-info"},qg={class:"version-number-wrapper"},Hg={key:0,class:"version-tag beta-tag"},zg={key:1,class:"version-tag release-tag"},Wg={class:"version-number"},Kg={key:0,class:"version-full"},Gg={key:0,class:"version-url"},Qg=["onClick","disabled"],Jg={key:"spinner",class:"spinner-small"},Zg=ze({__name:"VersionList",props:{bundleId:{default:""},versions:{default:()=>[]}},setup(e){const t=e,s=fe(()=>t.versions);k(!1),k("");const o=k([]),l=k([]),a=k("all"),{toasts:i,success:r,error:c,removeToast:f}=Ft(),u=fe(()=>a.value==="all"?s.value||[]:a.value==="release"?s.value.filter(g=>!g.beta):s.value.filter(g=>g.beta)),v=async(g,h)=>{if(!g.url){c("版本URL为空");return}o.value.push(h);try{await oe.startDownload(g.url),r(`下载已启动: ${g.version}`,3e3),o.value=o.value.filter(b=>b!==h),l.value.push(h),setTimeout(()=>{l.value=l.value.filter(b=>b!==h)},2e3)}catch(b){console.error("启动下载失败:",b),c(`下载启动失败: ${g.version}`,4e3),setTimeout(()=>{o.value=o.value.filter(w=>w!==h)},300)}};return(g,h)=>(d(),p(he,null,[n("div",Og,[s.value.length===0?(d(),p("div",Ng,[m(_,{icon:"mdi:package-variant",class:"empty-icon"}),h[3]||(h[3]=n("p",null,"暂无可用版本",-1))])):(d(),p("div",Fg,[n("div",Bg,[n("button",{class:$e(["filter-btn",{active:a.value==="all"}]),onClick:h[0]||(h[0]=b=>a.value="all")}," 全部 ",2),n("button",{class:$e(["filter-btn",{active:a.value==="release"}]),onClick:h[1]||(h[1]=b=>a.value="release")}," 正式版 ",2),n("button",{class:$e(["filter-btn",{active:a.value==="beta"}]),onClick:h[2]||(h[2]=b=>a.value="beta")}," 测试版 ",2)]),n("div",Vg,[(d(!0),p(he,null,Re(u.value,(b,w)=>(d(),p("div",{key:w,class:$e(["version-item",{downloading:o.value.includes(w)}])},[n("div",jg,[n("div",qg,[b.beta?(d(),p("span",Hg,"测试版")):(d(),p("span",zg,"正式版")),n("span",Wg,[be(y(b.version)+" ",1),b.fullVersion?(d(),p("span",Kg," ("+y(b.fullVersion)+") ",1)):E("",!0)])]),b.url?(d(),p("span",Gg,[m(_,{icon:"mdi:link",class:"url-icon"}),be(" "+y(b.url),1)])):E("",!0)]),n("button",{class:$e(["btn btn-sm",{"btn-primary":!o.value.includes(w)&&!l.value.includes(w),"btn-downloading":o.value.includes(w),"btn-success-state":l.value.includes(w)}]),onClick:C=>v(b,w),disabled:o.value.includes(w)||l.value.includes(w)},[m(mt,{name:"fade",mode:"out-in"},{default:ft(()=>[!o.value.includes(w)&&!l.value.includes(w)?(d(),Fe(_,{key:"icon-download",icon:"mdi:download",class:"btn-icon"})):o.value.includes(w)?(d(),p("div",Jg)):(d(),Fe(_,{key:"icon-success",icon:"mdi:check-circle",class:"btn-icon"}))]),_:2},1024),m(mt,{name:"fade",mode:"out-in"},{default:ft(()=>[(d(),p("span",{key:o.value.includes(w)?"downloading":l.value.includes(w)?"success":"download"},y(o.value.includes(w)?"下载中...":l.value.includes(w)?"已启动":"下载"),1))]),_:2},1024)],10,Qg)],2))),128))])]))]),m(ls,{toasts:Y(i),onRemove:Y(f)},null,8,["toasts","onRemove"])],64))}}),Pu=Ge(Zg,[["__scopeId","data-v-37f36415"]]),Xg={class:"dialog-header"},Yg={class:"header-content"},e1={class:"app-info"},t1={class:"app-icon-wrapper"},s1=["src","alt"],n1={key:1,class:"app-icon-placeholder"},o1={class:"app-details"},l1={class:"app-name"},a1={class:"app-bundle-id"},i1={class:"dialog-content"},r1=ze({__name:"VersionSelectorDialog",props:{visible:{type:Boolean},app:{}},emits:["close"],setup(e,{emit:t}){const s=e,o=t,l=fe(()=>{var r;return(r=s.app)!=null&&r.hasIcon?oe.getAppIconUrl(s.app.bundleId):null}),a=()=>{o("close")},i=r=>{r.target===r.currentTarget&&a()};return(r,c)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"dialog-fade"},{default:ft(()=>{var f,u;return[e.visible&&e.app?(d(),p("div",{key:0,class:"version-dialog-overlay",onClick:i},[n("div",{class:"version-dialog-container",onClick:c[0]||(c[0]=je(()=>{},["stop"]))},[n("div",Xg,[n("div",Yg,[n("div",e1,[n("div",t1,[l.value?(d(),p("img",{key:0,src:l.value,alt:e.app.name,class:"app-icon"},null,8,s1)):(d(),p("div",n1,y(e.app.name.charAt(0).toUpperCase()),1))]),n("div",o1,[n("h2",l1,y(e.app.name),1),n("p",a1,y(e.app.bundleId),1)])]),n("button",{class:"close-button",onClick:a,"aria-label":"关闭"},[m(_,{icon:"mdi:close"})])])]),n("div",i1,[e.app?(d(),Fe(Pu,{key:0,bundleId:e.app.bundleId,versions:((u=(f=e.app)==null?void 0:f.update)==null?void 0:u.versions)||[]},null,8,["bundleId","versions"])):E("",!0)])])])):E("",!0)]}),_:1})]))}}),c1=Ge(r1,[["__scopeId","data-v-22d36606"]]),u1={class:"search-box"},d1=["placeholder"],f1={class:"search-actions"},p1=["disabled"],v1={key:0,class:"focus-indicator"},m1={class:"history-content"},h1={key:0,class:"history-section"},g1={class:"history-text"},y1={key:1,class:"history-section"},b1={class:"history-header"},_1=["onClick"],w1={class:"history-text"},k1=["onClick"],$1={key:2,class:"empty-history"},cr="search_history",wo=10,C1=ze({__name:"SearchBox",props:{modelValue:{default:""},placeholder:{default:"搜索应用、游戏等"},width:{default:400}},emits:["update:modelValue","search","clear"],setup(e,{emit:t}){const s=e,o=t,l=k(s.modelValue),a=k(!1),i=k(null),r=k([]);let c=null,f=null;const u=fe(()=>a.value&&(l.value.trim()||r.value.length>0)),v=fe(()=>{if(!l.value.trim())return r.value.slice(0,wo);const O=l.value.trim().toLowerCase();return r.value.filter(R=>R.toLowerCase().includes(O)).slice(0,wo)}),g=()=>{try{const O=localStorage.getItem(cr);O?r.value=JSON.parse(O):(r.value=["QQ","腾讯QQ","QQ邮箱","微信","QQ音乐","Photoshop","Lightroom","Final Cut Pro","Sketch","Sublime Text"],h())}catch(O){console.error("加载搜索历史失败:",O),r.value=[]}},h=()=>{try{localStorage.setItem(cr,JSON.stringify(r.value))}catch(O){console.error("保存搜索历史失败:",O)}},b=O=>{if(!O.trim())return;const R=r.value.indexOf(O);R!==-1&&r.value.splice(R,1),r.value.unshift(O),r.value.length>wo&&(r.value=r.value.slice(0,wo)),h()},w=O=>{r.value.splice(O,1),h()},C=()=>{r.value=[],h()},I=O=>{l.value=O,o("update:modelValue",O),N()};st(()=>s.modelValue,O=>{l.value=O});const q=()=>{o("update:modelValue",l.value),c&&clearTimeout(c),c=window.setTimeout(()=>{l.value.trim()&&o("search",l.value.trim())},300)},N=()=>{var O;c&&clearTimeout(c),l.value.trim()&&(b(l.value.trim()),o("search",l.value.trim())),(O=i.value)==null||O.blur()},z=()=>{var O;l.value="",o("update:modelValue",""),o("clear"),(O=i.value)==null||O.focus()},Z=()=>{f&&(clearTimeout(f),f=null),a.value=!0},W=()=>{f=window.setTimeout(()=>{a.value=!1},200)},te=()=>{var O;(O=i.value)==null||O.blur()};return rt(()=>{g()}),(O,R)=>(d(),p("div",u1,[n("div",{class:"search-wrapper",style:$t({width:typeof s.width=="number"?`${s.width}px`:s.width})},[n("div",{class:$e(["search-container",{"is-focused":a.value}])},[Be(n("input",{ref_key:"inputRef",ref:i,"onUpdate:modelValue":R[0]||(R[0]=F=>l.value=F),type:"text",class:"search-input",placeholder:e.placeholder,onInput:q,onKeydown:[Xs(N,["enter"]),Xs(te,["escape"])],onFocus:Z,onBlur:W},null,40,d1),[[Je,l.value]]),n("div",f1,[l.value?(d(),p("button",{key:0,class:"action-button clear-button",onClick:z,onMousedown:R[1]||(R[1]=je(()=>{},["prevent"]))},[m(_,{icon:"mdi:close-circle",class:"action-icon"})],32)):E("",!0),n("button",{class:"action-button search-button",disabled:!l.value.trim(),onClick:N,onMousedown:R[2]||(R[2]=je(()=>{},["prevent"]))},[m(_,{icon:"mdi:magnify",class:"action-icon"})],40,p1)])],2),a.value?(d(),p("div",v1)):E("",!0),a.value&&u.value?(d(),p("div",{key:1,class:"history-dropdown",onMousedown:R[6]||(R[6]=je(()=>{},["prevent"]))},[n("div",m1,[l.value.trim()?(d(),p("div",h1,[n("div",{class:"history-item suggestion-item",onClick:R[3]||(R[3]=F=>I(l.value.trim()))},[m(_,{icon:"fluent-color:search-sparkle-24",class:"history-icon"}),n("span",g1,y(l.value.trim()),1)])])):E("",!0),r.value.length>0?(d(),p("div",y1,[n("div",b1,[R[7]||(R[7]=n("span",{class:"history-title"},"历史搜索",-1)),n("button",{class:"clear-history-btn",onClick:C,onMousedown:R[4]||(R[4]=je(()=>{},["prevent"]))}," 清除 ",32)]),(d(!0),p(he,null,Re(v.value,(F,$)=>(d(),p("div",{key:$,class:"history-item",onClick:U=>I(F)},[m(_,{icon:"fluent-color:clock-24",class:"history-icon"}),n("span",w1,y(F),1),n("button",{class:"delete-history-btn",onClick:je(U=>w($),["stop"]),onMousedown:R[5]||(R[5]=je(()=>{},["prevent"]))},[m(_,{icon:"fluent-color:dismiss-circle-24",class:"delete-icon"})],40,k1)],8,_1))),128))])):E("",!0),!l.value.trim()&&r.value.length===0?(d(),p("div",$1,[m(_,{icon:"fluent-color:history-24",class:"empty-icon"}),R[8]||(R[8]=n("span",{class:"empty-text"},"暂无搜索历史",-1))])):E("",!0)])],32)):E("",!0)],4)]))}}),I1=Ge(C1,[["__scopeId","data-v-0fed5efb"]]),S1={class:"sidebar"},x1={key:0,class:"sidebar-group top-group"},T1=["onClick"],A1={class:"item-content"},E1={key:1,class:"item-text"},R1={key:0,class:"item-badge"},U1={key:1,class:"sidebar-group bottom-group"},D1=["onClick"],M1={class:"item-content"},P1={key:1,class:"item-text"},L1={key:0,class:"item-badge"},O1=ze({__name:"Sidebar",props:{items:{default:()=>[]},activeItem:{default:""}},emits:["item-click"],setup(e,{emit:t}){const s=e,o=t,l=fe(()=>s.items.filter(r=>!r.group||r.group==="top")),a=fe(()=>s.items.filter(r=>r.group==="bottom")),i=(r,c)=>{o("item-click",r,c)};return(r,c)=>(d(),p("div",S1,[l.value.length>0?(d(),p("div",x1,[(d(!0),p(he,null,Re(l.value,(f,u)=>(d(),p("div",{key:f.id||u,class:$e(["sidebar-item",{active:f.id===e.activeItem}]),onClick:v=>i(f,u)},[c[0]||(c[0]=n("div",{class:"item-indicator"},null,-1)),n("div",A1,[si(r.$slots,"item",{item:f,index:u},()=>[f.icon?(d(),Fe(_,{key:0,icon:f.icon,class:"item-icon"},null,8,["icon"])):E("",!0),f.label?(d(),p("span",E1,y(f.label),1)):E("",!0)]),f.badge&&f.badge>0?(d(),p("span",R1,y(f.badge>99?"99+":f.badge),1)):E("",!0)])],10,T1))),128))])):E("",!0),c[2]||(c[2]=n("div",{class:"sidebar-spacer"},null,-1)),a.value.length>0?(d(),p("div",U1,[(d(!0),p(he,null,Re(a.value,(f,u)=>(d(),p("div",{key:f.id||`bottom-${u}`,class:$e(["sidebar-item",{active:f.id===e.activeItem}]),onClick:v=>i(f,l.value.length+u)},[c[1]||(c[1]=n("div",{class:"item-indicator"},null,-1)),n("div",M1,[si(r.$slots,"item",{item:f,index:l.value.length+u},()=>[f.icon?(d(),Fe(_,{key:0,icon:f.icon,class:"item-icon"},null,8,["icon"])):E("",!0),f.label?(d(),p("span",P1,y(f.label),1)):E("",!0)]),f.badge&&f.badge>0?(d(),p("span",L1,y(f.badge>99?"99+":f.badge),1)):E("",!0)])],10,D1))),128))])):E("",!0)]))}}),N1=Ge(O1,[["__scopeId","data-v-04e1a9dc"]]),Bl=new Map;async function Lu(e,t){if(!e||e.trim()==="")return"";const s=`avatar-${e}`;if(Bl.has(s))return Bl.get(s);try{const o=await oe.getImage(e,80,200,200);return o&&o.trim()!==""?(Bl.set(s,o),o):""}catch(o){return console.error("获取用户头像图片失败:",o,"avatarId:",e),""}}const F1=["src","alt"],B1={key:1,class:"avatar-placeholder"},V1=ze({__name:"Avatar",props:{avatarId:{default:void 0},userId:{default:void 0},userName:{default:void 0},size:{default:"medium"},width:{default:void 0},height:{default:void 0},onAvatarLoaded:{type:Function,default:void 0}},setup(e){const t=e,s=k(""),o=k("User"),l=k(null),a=fe(()=>{const v={};return t.width&&(v.width=typeof t.width=="number"?`${t.width}px`:t.width,v.minWidth=v.width,v.maxWidth=v.width),t.height&&(v.height=typeof t.height=="number"?`${t.height}px`:t.height,v.minHeight=v.height,v.maxHeight=v.height),v}),i=async()=>{if(t.userName&&(o.value=t.userName),t.avatarId&&t.avatarId.trim()!==""){await r(t.avatarId);return}if(t.userId)try{const v=await oe.getUserInfo(t.userId);if(v&&(o.value=v.nickName||v.username||"User",v.avatar&&v.avatar.trim()!=="")){await r(v.avatar);return}}catch(v){console.error("查询用户信息失败:",v)}s.value=""},r=async v=>{if(!v||v.trim()===""){s.value="";return}try{const g=await Lu(v,o.value);s.value=g}catch(g){console.error("加载头像失败:",g),s.value=""}},c=()=>{s.value=""},f=async()=>{if(!(!t.onAvatarLoaded||!s.value))try{if(s.value.startsWith("blob:")){const b=await(await fetch(s.value)).blob();t.onAvatarLoaded(b);return}const v=await fetch(s.value);if(!v.ok){console.error("获取头像图片失败:",v.statusText);return}const g=await v.blob();t.onAvatarLoaded(g)}catch(v){console.error("转换头像为 blob 失败:",v)}},u=()=>{if(!o.value||o.value==="User")return"U";const v=o.value.charAt(0);return/[\u4e00-\u9fa5]/.test(v)?v:v.toUpperCase()};return st(()=>[t.avatarId,t.userId,t.userName],()=>{i()},{immediate:!0}),rt(()=>{i()}),(v,g)=>(d(),p("div",{class:$e(["avatar-wrapper",{small:e.size==="small",large:e.size==="large"}]),style:$t(a.value)},[s.value&&s.value.trim()!==""?(d(),p("img",{key:0,ref_key:"avatarImageRef",ref:l,src:s.value,alt:o.value||e.userName||"User",class:"avatar-image",onError:c,onLoad:f},null,40,F1)):(d(),p("div",B1,y(u()),1))],6))}}),Tt=Ge(V1,[["__scopeId","data-v-8866c957"]]);/*!
* vue-router v4.5.1
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/const an=typeof document<"u";function Ou(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function j1(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ou(e.default)}const at=Object.assign;function Vl(e,t){const s={};for(const o in t){const l=t[o];s[o]=ns(l)?l.map(e):e(l)}return s}const Hn=()=>{},ns=Array.isArray,Nu=/#/g,q1=/&/g,H1=/\//g,z1=/=/g,W1=/\?/g,Fu=/\+/g,K1=/%5B/g,G1=/%5D/g,Bu=/%5E/g,Q1=/%60/g,Vu=/%7B/g,J1=/%7C/g,ju=/%7D/g,Z1=/%20/g;function ja(e){return encodeURI(""+e).replace(J1,"|").replace(K1,"[").replace(G1,"]")}function X1(e){return ja(e).replace(Vu,"{").replace(ju,"}").replace(Bu,"^")}function fa(e){return ja(e).replace(Fu,"%2B").replace(Z1,"+").replace(Nu,"%23").replace(q1,"%26").replace(Q1,"`").replace(Vu,"{").replace(ju,"}").replace(Bu,"^")}function Y1(e){return fa(e).replace(z1,"%3D")}function ey(e){return ja(e).replace(Nu,"%23").replace(W1,"%3F")}function ty(e){return e==null?"":ey(e).replace(H1,"%2F")}function so(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const sy=/\/$/,ny=e=>e.replace(sy,"");function jl(e,t,s="/"){let o,l={},a="",i="";const r=t.indexOf("#");let c=t.indexOf("?");return r<c&&r>=0&&(c=-1),c>-1&&(o=t.slice(0,c),a=t.slice(c+1,r>-1?r:t.length),l=e(a)),r>-1&&(o=o||t.slice(0,r),i=t.slice(r,t.length)),o=iy(o??t,s),{fullPath:o+(a&&"?")+a+i,path:o,query:l,hash:so(i)}}function oy(e,t){const s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function ur(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ly(e,t,s){const o=t.matched.length-1,l=s.matched.length-1;return o>-1&&o===l&&yn(t.matched[o],s.matched[l])&&qu(t.params,s.params)&&e(t.query)===e(s.query)&&t.hash===s.hash}function yn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function qu(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(!ay(e[s],t[s]))return!1;return!0}function ay(e,t){return ns(e)?dr(e,t):ns(t)?dr(t,e):e===t}function dr(e,t){return ns(t)?e.length===t.length&&e.every((s,o)=>s===t[o]):e.length===1&&e[0]===t}function iy(e,t){if(e.startsWith("/"))return e;if(!e)return t;const s=t.split("/"),o=e.split("/"),l=o[o.length-1];(l===".."||l===".")&&o.push("");let a=s.length-1,i,r;for(i=0;i<o.length;i++)if(r=o[i],r!==".")if(r==="..")a>1&&a--;else break;return s.slice(0,a).join("/")+"/"+o.slice(i).join("/")}const Es={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var no;(function(e){e.pop="pop",e.push="push"})(no||(no={}));var zn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(zn||(zn={}));function ry(e){if(!e)if(an){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),ny(e)}const cy=/^[^#]+#/;function uy(e,t){return e.replace(cy,"#")+t}function dy(e,t){const s=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-s.left-(t.left||0),top:o.top-s.top-(t.top||0)}}const ml=()=>({left:window.scrollX,top:window.scrollY});function fy(e){let t;if("el"in e){const s=e.el,o=typeof s=="string"&&s.startsWith("#"),l=typeof s=="string"?o?document.getElementById(s.slice(1)):document.querySelector(s):s;if(!l)return;t=dy(l,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function fr(e,t){return(history.state?history.state.position-t:-1)+e}const pa=new Map;function py(e,t){pa.set(e,t)}function vy(e){const t=pa.get(e);return pa.delete(e),t}let my=()=>location.protocol+"//"+location.host;function Hu(e,t){const{pathname:s,search:o,hash:l}=t,a=e.indexOf("#");if(a>-1){let r=l.includes(e.slice(a))?e.slice(a).length:1,c=l.slice(r);return c[0]!=="/"&&(c="/"+c),ur(c,"")}return ur(s,e)+o+l}function hy(e,t,s,o){let l=[],a=[],i=null;const r=({state:g})=>{const h=Hu(e,location),b=s.value,w=t.value;let C=0;if(g){if(s.value=h,t.value=g,i&&i===b){i=null;return}C=w?g.position-w.position:0}else o(h);l.forEach(I=>{I(s.value,b,{delta:C,type:no.pop,direction:C?C>0?zn.forward:zn.back:zn.unknown})})};function c(){i=s.value}function f(g){l.push(g);const h=()=>{const b=l.indexOf(g);b>-1&&l.splice(b,1)};return a.push(h),h}function u(){const{history:g}=window;g.state&&g.replaceState(at({},g.state,{scroll:ml()}),"")}function v(){for(const g of a)g();a=[],window.removeEventListener("popstate",r),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",r),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:f,destroy:v}}function pr(e,t,s,o=!1,l=!1){return{back:e,current:t,forward:s,replaced:o,position:window.history.length,scroll:l?ml():null}}function gy(e){const{history:t,location:s}=window,o={value:Hu(e,s)},l={value:t.state};l.value||a(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(c,f,u){const v=e.indexOf("#"),g=v>-1?(s.host&&document.querySelector("base")?e:e.slice(v))+c:my()+e+c;try{t[u?"replaceState":"pushState"](f,"",g),l.value=f}catch(h){console.error(h),s[u?"replace":"assign"](g)}}function i(c,f){const u=at({},t.state,pr(l.value.back,c,l.value.forward,!0),f,{position:l.value.position});a(c,u,!0),o.value=c}function r(c,f){const u=at({},l.value,t.state,{forward:c,scroll:ml()});a(u.current,u,!0);const v=at({},pr(o.value,c,null),{position:u.position+1},f);a(c,v,!1),o.value=c}return{location:o,state:l,push:r,replace:i}}function yy(e){e=ry(e);const t=gy(e),s=hy(e,t.state,t.location,t.replace);function o(a,i=!0){i||s.pauseListeners(),history.go(a)}const l=at({location:"",base:e,go:o,createHref:uy.bind(null,e)},t,s);return Object.defineProperty(l,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(l,"state",{enumerable:!0,get:()=>t.state.value}),l}function by(e){return typeof e=="string"||e&&typeof e=="object"}function zu(e){return typeof e=="string"||typeof e=="symbol"}const Wu=Symbol("");var vr;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vr||(vr={}));function bn(e,t){return at(new Error,{type:e,[Wu]:!0},t)}function gs(e,t){return e instanceof Error&&Wu in e&&(t==null||!!(e.type&t))}const mr="[^/]+?",_y={sensitive:!1,strict:!1,start:!0,end:!0},wy=/[.+*?^${}()[\]/\\]/g;function ky(e,t){const s=at({},_y,t),o=[];let l=s.start?"^":"";const a=[];for(const f of e){const u=f.length?[]:[90];s.strict&&!f.length&&(l+="/");for(let v=0;v<f.length;v++){const g=f[v];let h=40+(s.sensitive?.25:0);if(g.type===0)v||(l+="/"),l+=g.value.replace(wy,"\\$&"),h+=40;else if(g.type===1){const{value:b,repeatable:w,optional:C,regexp:I}=g;a.push({name:b,repeatable:w,optional:C});const q=I||mr;if(q!==mr){h+=10;try{new RegExp(`(${q})`)}catch(z){throw new Error(`Invalid custom RegExp for param "${b}" (${q}): `+z.message)}}let N=w?`((?:${q})(?:/(?:${q}))*)`:`(${q})`;v||(N=C&&f.length<2?`(?:/${N})`:"/"+N),C&&(N+="?"),l+=N,h+=20,C&&(h+=-8),w&&(h+=-20),q===".*"&&(h+=-50)}u.push(h)}o.push(u)}if(s.strict&&s.end){const f=o.length-1;o[f][o[f].length-1]+=.7000000000000001}s.strict||(l+="/?"),s.end?l+="$":s.strict&&!l.endsWith("/")&&(l+="(?:/|$)");const i=new RegExp(l,s.sensitive?"":"i");function r(f){const u=f.match(i),v={};if(!u)return null;for(let g=1;g<u.length;g++){const h=u[g]||"",b=a[g-1];v[b.name]=h&&b.repeatable?h.split("/"):h}return v}function c(f){let u="",v=!1;for(const g of e){(!v||!u.endsWith("/"))&&(u+="/"),v=!1;for(const h of g)if(h.type===0)u+=h.value;else if(h.type===1){const{value:b,repeatable:w,optional:C}=h,I=b in f?f[b]:"";if(ns(I)&&!w)throw new Error(`Provided param "${b}" is an array but it is not repeatable (* or + modifiers)`);const q=ns(I)?I.join("/"):I;if(!q)if(C)g.length<2&&(u.endsWith("/")?u=u.slice(0,-1):v=!0);else throw new Error(`Missing required param "${b}"`);u+=q}}return u||"/"}return{re:i,score:o,keys:a,parse:r,stringify:c}}function $y(e,t){let s=0;for(;s<e.length&&s<t.length;){const o=t[s]-e[s];if(o)return o;s++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function Ku(e,t){let s=0;const o=e.score,l=t.score;for(;s<o.length&&s<l.length;){const a=$y(o[s],l[s]);if(a)return a;s++}if(Math.abs(l.length-o.length)===1){if(hr(o))return 1;if(hr(l))return-1}return l.length-o.length}function hr(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Cy={type:0,value:""},Iy=/[a-zA-Z0-9_]/;function Sy(e){if(!e)return[[]];if(e==="/")return[[Cy]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${s})/"${f}": ${h}`)}let s=0,o=s;const l=[];let a;function i(){a&&l.push(a),a=[]}let r=0,c,f="",u="";function v(){f&&(s===0?a.push({type:0,value:f}):s===1||s===2||s===3?(a.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:f,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),f="")}function g(){f+=c}for(;r<e.length;){if(c=e[r++],c==="\\"&&s!==2){o=s,s=4;continue}switch(s){case 0:c==="/"?(f&&v(),i()):c===":"?(v(),s=1):g();break;case 4:g(),s=o;break;case 1:c==="("?s=2:Iy.test(c)?g():(v(),s=0,c!=="*"&&c!=="?"&&c!=="+"&&r--);break;case 2:c===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+c:s=3:u+=c;break;case 3:v(),s=0,c!=="*"&&c!=="?"&&c!=="+"&&r--,u="";break;default:t("Unknown state");break}}return s===2&&t(`Unfinished custom RegExp for param "${f}"`),v(),i(),l}function xy(e,t,s){const o=ky(Sy(e.path),s),l=at(o,{record:e,parent:t,children:[],alias:[]});return t&&!l.record.aliasOf==!t.record.aliasOf&&t.children.push(l),l}function Ty(e,t){const s=[],o=new Map;t=_r({strict:!1,end:!0,sensitive:!1},t);function l(v){return o.get(v)}function a(v,g,h){const b=!h,w=yr(v);w.aliasOf=h&&h.record;const C=_r(t,v),I=[w];if("alias"in v){const z=typeof v.alias=="string"?[v.alias]:v.alias;for(const Z of z)I.push(yr(at({},w,{components:h?h.record.components:w.components,path:Z,aliasOf:h?h.record:w})))}let q,N;for(const z of I){const{path:Z}=z;if(g&&Z[0]!=="/"){const W=g.record.path,te=W[W.length-1]==="/"?"":"/";z.path=g.record.path+(Z&&te+Z)}if(q=xy(z,g,C),h?h.alias.push(q):(N=N||q,N!==q&&N.alias.push(q),b&&v.name&&!br(q)&&i(v.name)),Gu(q)&&c(q),w.children){const W=w.children;for(let te=0;te<W.length;te++)a(W[te],q,h&&h.children[te])}h=h||q}return N?()=>{i(N)}:Hn}function i(v){if(zu(v)){const g=o.get(v);g&&(o.delete(v),s.splice(s.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=s.indexOf(v);g>-1&&(s.splice(g,1),v.record.name&&o.delete(v.record.name),v.children.forEach(i),v.alias.forEach(i))}}function r(){return s}function c(v){const g=Ry(v,s);s.splice(g,0,v),v.record.name&&!br(v)&&o.set(v.record.name,v)}function f(v,g){let h,b={},w,C;if("name"in v&&v.name){if(h=o.get(v.name),!h)throw bn(1,{location:v});C=h.record.name,b=at(gr(g.params,h.keys.filter(N=>!N.optional).concat(h.parent?h.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),v.params&&gr(v.params,h.keys.map(N=>N.name))),w=h.stringify(b)}else if(v.path!=null)w=v.path,h=s.find(N=>N.re.test(w)),h&&(b=h.parse(w),C=h.record.name);else{if(h=g.name?o.get(g.name):s.find(N=>N.re.test(g.path)),!h)throw bn(1,{location:v,currentLocation:g});C=h.record.name,b=at({},g.params,v.params),w=h.stringify(b)}const I=[];let q=h;for(;q;)I.unshift(q.record),q=q.parent;return{name:C,path:w,params:b,matched:I,meta:Ey(I)}}e.forEach(v=>a(v));function u(){s.length=0,o.clear()}return{addRoute:a,resolve:f,removeRoute:i,clearRoutes:u,getRoutes:r,getRecordMatcher:l}}function gr(e,t){const s={};for(const o of t)o in e&&(s[o]=e[o]);return s}function yr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ay(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ay(e){const t={},s=e.props||!1;if("component"in e)t.default=s;else for(const o in e.components)t[o]=typeof s=="object"?s[o]:s;return t}function br(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ey(e){return e.reduce((t,s)=>at(t,s.meta),{})}function _r(e,t){const s={};for(const o in e)s[o]=o in t?t[o]:e[o];return s}function Ry(e,t){let s=0,o=t.length;for(;s!==o;){const a=s+o>>1;Ku(e,t[a])<0?o=a:s=a+1}const l=Uy(e);return l&&(o=t.lastIndexOf(l,o-1)),o}function Uy(e){let t=e;for(;t=t.parent;)if(Gu(t)&&Ku(e,t)===0)return t}function Gu({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Dy(e){const t={};if(e===""||e==="?")return t;const o=(e[0]==="?"?e.slice(1):e).split("&");for(let l=0;l<o.length;++l){const a=o[l].replace(Fu," "),i=a.indexOf("="),r=so(i<0?a:a.slice(0,i)),c=i<0?null:so(a.slice(i+1));if(r in t){let f=t[r];ns(f)||(f=t[r]=[f]),f.push(c)}else t[r]=c}return t}function wr(e){let t="";for(let s in e){const o=e[s];if(s=Y1(s),o==null){o!==void 0&&(t+=(t.length?"&":"")+s);continue}(ns(o)?o.map(a=>a&&fa(a)):[o&&fa(o)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+s,a!=null&&(t+="="+a))})}return t}function My(e){const t={};for(const s in e){const o=e[s];o!==void 0&&(t[s]=ns(o)?o.map(l=>l==null?null:""+l):o==null?o:""+o)}return t}const Py=Symbol(""),kr=Symbol(""),hl=Symbol(""),qa=Symbol(""),va=Symbol("");function Mn(){let e=[];function t(o){return e.push(o),()=>{const l=e.indexOf(o);l>-1&&e.splice(l,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function Ms(e,t,s,o,l,a=i=>i()){const i=o&&(o.enterCallbacks[l]=o.enterCallbacks[l]||[]);return()=>new Promise((r,c)=>{const f=g=>{g===!1?c(bn(4,{from:s,to:t})):g instanceof Error?c(g):by(g)?c(bn(2,{from:t,to:g})):(i&&o.enterCallbacks[l]===i&&typeof g=="function"&&i.push(g),r())},u=a(()=>e.call(o&&o.instances[l],t,s,f));let v=Promise.resolve(u);e.length<3&&(v=v.then(f)),v.catch(g=>c(g))})}function ql(e,t,s,o,l=a=>a()){const a=[];for(const i of e)for(const r in i.components){let c=i.components[r];if(!(t!=="beforeRouteEnter"&&!i.instances[r]))if(Ou(c)){const u=(c.__vccOpts||c)[t];u&&a.push(Ms(u,s,o,i,r,l))}else{let f=c();a.push(()=>f.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${r}" at "${i.path}"`);const v=j1(u)?u.default:u;i.mods[r]=u,i.components[r]=v;const h=(v.__vccOpts||v)[t];return h&&Ms(h,s,o,i,r,l)()}))}}return a}function $r(e){const t=Yt(hl),s=Yt(qa),o=fe(()=>{const c=Y(e.to);return t.resolve(c)}),l=fe(()=>{const{matched:c}=o.value,{length:f}=c,u=c[f-1],v=s.matched;if(!u||!v.length)return-1;const g=v.findIndex(yn.bind(null,u));if(g>-1)return g;const h=Cr(c[f-2]);return f>1&&Cr(u)===h&&v[v.length-1].path!==h?v.findIndex(yn.bind(null,c[f-2])):g}),a=fe(()=>l.value>-1&&By(s.params,o.value.params)),i=fe(()=>l.value>-1&&l.value===s.matched.length-1&&qu(s.params,o.value.params));function r(c={}){if(Fy(c)){const f=t[Y(e.replace)?"replace":"push"](Y(e.to)).catch(Hn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:o,href:fe(()=>o.value.href),isActive:a,isExactActive:i,navigate:r}}function Ly(e){return e.length===1?e[0]:e}const Oy=ze({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:$r,setup(e,{slots:t}){const s=tl($r(e)),{options:o}=Yt(hl),l=fe(()=>({[Ir(e.activeClass,o.linkActiveClass,"router-link-active")]:s.isActive,[Ir(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:s.isExactActive}));return()=>{const a=t.default&&Ly(t.default(s));return e.custom?a:eo("a",{"aria-current":s.isExactActive?e.ariaCurrentValue:null,href:s.href,onClick:s.navigate,class:l.value},a)}}}),Ny=Oy;function Fy(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function By(e,t){for(const s in t){const o=t[s],l=e[s];if(typeof o=="string"){if(o!==l)return!1}else if(!ns(l)||l.length!==o.length||o.some((a,i)=>a!==l[i]))return!1}return!0}function Cr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ir=(e,t,s)=>e??t??s,Vy=ze({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:s}){const o=Yt(va),l=fe(()=>e.route||o.value),a=Yt(kr,0),i=fe(()=>{let f=Y(a);const{matched:u}=l.value;let v;for(;(v=u[f])&&!v.components;)f++;return f}),r=fe(()=>l.value.matched[i.value]);Io(kr,fe(()=>i.value+1)),Io(Py,r),Io(va,l);const c=k();return st(()=>[c.value,r.value,e.name],([f,u,v],[g,h,b])=>{u&&(u.instances[v]=f,h&&h!==u&&f&&f===g&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),f&&u&&(!h||!yn(u,h)||!g)&&(u.enterCallbacks[v]||[]).forEach(w=>w(f))},{flush:"post"}),()=>{const f=l.value,u=e.name,v=r.value,g=v&&v.components[u];if(!g)return Sr(s.default,{Component:g,route:f});const h=v.props[u],b=h?h===!0?f.params:typeof h=="function"?h(f):h:null,C=eo(g,at({},b,t,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(v.instances[u]=null)},ref:c}));return Sr(s.default,{Component:C,route:f})||C}}});function Sr(e,t){if(!e)return null;const s=e(t);return s.length===1?s[0]:s}const jy=Vy;function qy(e){const t=Ty(e.routes,e),s=e.parseQuery||Dy,o=e.stringifyQuery||wr,l=e.history,a=Mn(),i=Mn(),r=Mn(),c=Gn(Es);let f=Es;an&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Vl.bind(null,K=>""+K),v=Vl.bind(null,ty),g=Vl.bind(null,so);function h(K,ie){let re,Ce;return zu(K)?(re=t.getRecordMatcher(K),Ce=ie):Ce=K,t.addRoute(Ce,re)}function b(K){const ie=t.getRecordMatcher(K);ie&&t.removeRoute(ie)}function w(){return t.getRoutes().map(K=>K.record)}function C(K){return!!t.getRecordMatcher(K)}function I(K,ie){if(ie=at({},ie||c.value),typeof K=="string"){const A=jl(s,K,ie.path),J=t.resolve({path:A.path},ie),ce=l.createHref(A.fullPath);return at(A,J,{params:g(J.params),hash:so(A.hash),redirectedFrom:void 0,href:ce})}let re;if(K.path!=null)re=at({},K,{path:jl(s,K.path,ie.path).path});else{const A=at({},K.params);for(const J in A)A[J]==null&&delete A[J];re=at({},K,{params:v(A)}),ie.params=v(ie.params)}const Ce=t.resolve(re,ie),Le=K.hash||"";Ce.params=u(g(Ce.params));const T=oy(o,at({},K,{hash:X1(Le),path:Ce.path})),D=l.createHref(T);return at({fullPath:T,hash:Le,query:o===wr?My(K.query):K.query||{}},Ce,{redirectedFrom:void 0,href:D})}function q(K){return typeof K=="string"?jl(s,K,c.value.path):at({},K)}function N(K,ie){if(f!==K)return bn(8,{from:ie,to:K})}function z(K){return te(K)}function Z(K){return z(at(q(K),{replace:!0}))}function W(K){const ie=K.matched[K.matched.length-1];if(ie&&ie.redirect){const{redirect:re}=ie;let Ce=typeof re=="function"?re(K):re;return typeof Ce=="string"&&(Ce=Ce.includes("?")||Ce.includes("#")?Ce=q(Ce):{path:Ce},Ce.params={}),at({query:K.query,hash:K.hash,params:Ce.path!=null?{}:K.params},Ce)}}function te(K,ie){const re=f=I(K),Ce=c.value,Le=K.state,T=K.force,D=K.replace===!0,A=W(re);if(A)return te(at(q(A),{state:typeof A=="object"?at({},Le,A.state):Le,force:T,replace:D}),ie||re);const J=re;J.redirectedFrom=ie;let ce;return!T&&ly(o,Ce,re)&&(ce=bn(16,{to:J,from:Ce}),Pe(Ce,Ce,!0,!1)),(ce?Promise.resolve(ce):F(J,Ce)).catch(x=>gs(x)?gs(x,2)?x:Ne(x):X(x,J,Ce)).then(x=>{if(x){if(gs(x,2))return te(at({replace:D},q(x.to),{state:typeof x.to=="object"?at({},Le,x.to.state):Le,force:T}),ie||J)}else x=U(J,Ce,!0,D,Le);return $(J,Ce,x),x})}function O(K,ie){const re=N(K,ie);return re?Promise.reject(re):Promise.resolve()}function R(K){const ie=de.values().next().value;return ie&&typeof ie.runWithContext=="function"?ie.runWithContext(K):K()}function F(K,ie){let re;const[Ce,Le,T]=Hy(K,ie);re=ql(Ce.reverse(),"beforeRouteLeave",K,ie);for(const A of Ce)A.leaveGuards.forEach(J=>{re.push(Ms(J,K,ie))});const D=O.bind(null,K,ie);return re.push(D),Me(re).then(()=>{re=[];for(const A of a.list())re.push(Ms(A,K,ie));return re.push(D),Me(re)}).then(()=>{re=ql(Le,"beforeRouteUpdate",K,ie);for(const A of Le)A.updateGuards.forEach(J=>{re.push(Ms(J,K,ie))});return re.push(D),Me(re)}).then(()=>{re=[];for(const A of T)if(A.beforeEnter)if(ns(A.beforeEnter))for(const J of A.beforeEnter)re.push(Ms(J,K,ie));else re.push(Ms(A.beforeEnter,K,ie));return re.push(D),Me(re)}).then(()=>(K.matched.forEach(A=>A.enterCallbacks={}),re=ql(T,"beforeRouteEnter",K,ie,R),re.push(D),Me(re))).then(()=>{re=[];for(const A of i.list())re.push(Ms(A,K,ie));return re.push(D),Me(re)}).catch(A=>gs(A,8)?A:Promise.reject(A))}function $(K,ie,re){r.list().forEach(Ce=>R(()=>Ce(K,ie,re)))}function U(K,ie,re,Ce,Le){const T=N(K,ie);if(T)return T;const D=ie===Es,A=an?history.state:{};re&&(Ce||D?l.replace(K.fullPath,at({scroll:D&&A&&A.scroll},Le)):l.push(K.fullPath,Le)),c.value=K,Pe(K,ie,re,D),Ne()}let se;function M(){se||(se=l.listen((K,ie,re)=>{if(!Te.listening)return;const Ce=I(K),Le=W(Ce);if(Le){te(at(Le,{replace:!0,force:!0}),Ce).catch(Hn);return}f=Ce;const T=c.value;an&&py(fr(T.fullPath,re.delta),ml()),F(Ce,T).catch(D=>gs(D,12)?D:gs(D,2)?(te(at(q(D.to),{force:!0}),Ce).then(A=>{gs(A,20)&&!re.delta&&re.type===no.pop&&l.go(-1,!1)}).catch(Hn),Promise.reject()):(re.delta&&l.go(-re.delta,!1),X(D,Ce,T))).then(D=>{D=D||U(Ce,T,!1),D&&(re.delta&&!gs(D,8)?l.go(-re.delta,!1):re.type===no.pop&&gs(D,20)&&l.go(-1,!1)),$(Ce,T,D)}).catch(Hn)}))}let G=Mn(),B=Mn(),V;function X(K,ie,re){Ne(K);const Ce=B.list();return Ce.length?Ce.forEach(Le=>Le(K,ie,re)):console.error(K),Promise.reject(K)}function pe(){return V&&c.value!==Es?Promise.resolve():new Promise((K,ie)=>{G.add([K,ie])})}function Ne(K){return V||(V=!K,M(),G.list().forEach(([ie,re])=>K?re(K):ie()),G.reset()),K}function Pe(K,ie,re,Ce){const{scrollBehavior:Le}=e;if(!an||!Le)return Promise.resolve();const T=!re&&vy(fr(K.fullPath,0))||(Ce||!re)&&history.state&&history.state.scroll||null;return vt().then(()=>Le(K,ie,T)).then(D=>D&&fy(D)).catch(D=>X(D,K,ie))}const Ee=K=>l.go(K);let ye;const de=new Set,Te={currentRoute:c,listening:!0,addRoute:h,removeRoute:b,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:w,resolve:I,options:e,push:z,replace:Z,go:Ee,back:()=>Ee(-1),forward:()=>Ee(1),beforeEach:a.add,beforeResolve:i.add,afterEach:r.add,onError:B.add,isReady:pe,install(K){const ie=this;K.component("RouterLink",Ny),K.component("RouterView",jy),K.config.globalProperties.$router=ie,Object.defineProperty(K.config.globalProperties,"$route",{enumerable:!0,get:()=>Y(c)}),an&&!ye&&c.value===Es&&(ye=!0,z(l.location).catch(Le=>{}));const re={};for(const Le in Es)Object.defineProperty(re,Le,{get:()=>c.value[Le],enumerable:!0});K.provide(hl,ie),K.provide(qa,ec(re)),K.provide(va,c);const Ce=K.unmount;de.add(K),K.unmount=function(){de.delete(K),de.size<1&&(f=Es,se&&se(),se=null,c.value=Es,ye=!1,V=!1),Ce()}}};function Me(K){return K.reduce((ie,re)=>ie.then(()=>R(re)),Promise.resolve())}return Te}function Hy(e,t){const s=[],o=[],l=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;i<a;i++){const r=t.matched[i];r&&(e.matched.find(f=>yn(f,r))?o.push(r):s.push(r));const c=e.matched[i];c&&(t.matched.find(f=>yn(f,c))||l.push(c))}return[s,o,l]}function Wt(){return Yt(hl)}function Cn(e){return Yt(qa)}function gl(){const{user:e,isLoggedIn:t}=Ss(),s={user:10,admin:90,qiuchenly:9999},o=fe(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s.admin),l=fe(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s.qiuchenly),a=r=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s[r],i=fe(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)<s.admin);return{isAdmin:o,isQiuChenLy:l,isUser:i,hasPermission:a}}const zy=Object.freeze(Object.defineProperty({__proto__:null,usePermission:gl},Symbol.toStringTag,{value:"Module"})),Pn=k({visible:!1,text:"加载中..."}),po=()=>({loadingState:Pn,show:s=>{Pn.value.visible=!0,Pn.value.text=s||"加载中..."},hide:()=>{Pn.value.visible=!1,Pn.value.text="加载中..."}}),Wy={key:0,class:"loading-overlay"},Ky={class:"loading-content"},Gy=ze({__name:"LoadingDialog",setup(e){const{loadingState:t}=po();return(s,o)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[Y(t).visible?(d(),p("div",Wy,[n("div",Ky,[o[0]||(o[0]=n("div",{class:"spinner"},null,-1)),n("p",null,y(Y(t).text),1)])])):E("",!0)]),_:1})]))}}),Qu=Ge(Gy,[["__scopeId","data-v-b54fe5a1"]]),Qy={id:"app"},Jy={key:3,class:"app-layout"},Zy={class:"top-bar"},Xy={class:"top-bar-center"},Yy={class:"top-bar-right"},eb={class:"user-avatar"},tb={class:"user-menu-dropdown"},sb={class:"menu-header"},nb={class:"user-info"},ob={class:"user-avatar-large"},lb={class:"user-details"},ab={class:"user-name"},ib={class:"user-email"},rb={class:"user-role"},cb={class:"main-content"},ub={class:"main-content-left"},db={key:1,class:"item-text"},fb={class:"main-content-right"},pb=ze({__name:"App",setup(e){const t=Gn([]),s=Gn([]),o=k(!1);Du();const{user:l,isLoggedIn:a,logout:i,checkAuthStatus:r}=Ss(),{isAdmin:c,isQiuChenLy:f}=gl(),u=$n(),v=k(!1),g=k(!1),h=k(null),b=Wt(),w=Cn(),C=k(w.query.search||"");st(()=>w.query.search,A=>{C.value=A||""});const I=A=>{A.trim()?w.path!=="/"?b.push({path:"/",query:{search:A.trim()}}):b.push({query:{...w.query,search:A.trim()}}):q()},q=()=>{if(C.value="",w.path==="/"){const A={...w.query};delete A.search,b.push({query:A})}else b.push({path:"/",query:{}})},N=()=>{v.value=!0},z=A=>{h.value=A.detail,g.value=!0};rt(()=>{window.addEventListener("open-login-dialog",N),window.addEventListener("open-version-dialog",z)}),Et(()=>{window.removeEventListener("open-login-dialog",N),window.removeEventListener("open-version-dialog",z)}),k(!0);const Z=k(!1),W=k(!1),te=k(null),O=()=>{Z.value=!1},R=()=>{W.value=!1,te.value=null,Z.value=!1,F()},F=async()=>{try{(await oe.getAllSettings()).download_path?(Z.value=!1,W.value=!1,await r()):(Z.value=!0,W.value=!1)}catch(A){console.error("检查设置状态失败:",A);const J=dm(A);J?(te.value=J,W.value=!0,Z.value=!1):(Z.value=!0,W.value=!1)}},$=fe(()=>{const A={total:t.value.length,injected:0,update:0,unsupported:0,store:0};for(const J of t.value)J.status==="injected"?A.injected++:J.status==="upgrade_available"?A.update++:J.status==="unsupported"&&A.unsupported++,J.update!==null&&A.store++;return A});fe(()=>$.value.total),fe(()=>$.value.injected),fe(()=>$.value.update),fe(()=>$.value.unsupported),fe(()=>$.value.store),fe(()=>{if(s.value.length===0)return 0;let A=0;for(const J of s.value)J.status==="downloading"&&A++;return A});const U=async()=>{try{t.value=await oe.getApps(),o.value=!0}catch(A){console.error("加载应用列表失败:",A),o.value=!1}},se=async()=>{try{s.value=await oe.getAllDownloads()}catch(A){console.error("加载下载列表失败:",A)}};let M=null,G=null;const B=()=>{const A=()=>{const J=s.value.some(ce=>ce.status==="downloading"||ce.status==="pending");M!==null&&(clearInterval(M),M=null),J?M=window.setInterval(se,2e3):M=window.setInterval(se,1e4),se()};A(),G!==null&&clearInterval(G),G=window.setInterval(A,5e3)},V=k(0),X=k(null),pe=async()=>{if(!a.value){V.value=0;return}try{const A=await oe.getUnreadMessageCount();A.success&&A.data&&(V.value=A.data.count||0)}catch(A){console.error("获取未读私信数量失败:",A),V.value=0}};st(a,A=>{X.value!==null&&(clearInterval(X.value),X.value=null),A?(pe(),X.value=window.setInterval(()=>{pe()},5e3)):V.value=0},{immediate:!0}),rt(()=>{r(),U(),se(),B(),a.value&&(pe(),X.value=window.setInterval(()=>{pe()},5e3)),document.addEventListener("visibilitychange",()=>{!document.hidden&&a.value&&pe()}),window.addEventListener("focus",()=>{a.value&&pe()}),window.addEventListener("messages:conversations-updated",()=>{a.value&&pe()})}),Et(()=>{M!==null&&clearInterval(M),G!==null&&clearInterval(G),X.value!==null&&(clearInterval(X.value),X.value=null)});const Ne=A=>{if(!A)return"用户";switch(A){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},Pe=async()=>{await u.show({title:"登出确认",message:"确定要登出吗?",type:"warning",confirmText:"登出",cancelText:"取消"})&&(await i(),b.push("/"))},Ee=()=>{},ye=k(null),de=()=>l.value&&(l.value.nickName||l.value.username)||"用户",Te=()=>{v.value=!0},Me=()=>{b.push("/profile")},K=()=>{console.log("发送反馈")},ie=()=>{b.push("/settings")},re=k("apps"),Ce=fe(()=>re.value),Le=[{id:"home",label:"主页",icon:"fluent-color:home-24",group:"top"},{id:"apps",label:"应用",icon:"fluent-color:apps-24",group:"top"},{id:"official",label:"来自官方",icon:"fluent-color:shield-checkmark-24",group:"top"},{id:"new",label:"新增功能",icon:"fluent-color:megaphone-loud-24",group:"top"},{id:"discussion",label:"讨论区",icon:"fluent-color:chat-bubbles-question-24",group:"top"},{id:"admin",label:"管理员",icon:"fluent-color:layer-diagonal-person-24",group:"top",adminOnly:!0},{id:"downloads",label:"下载",icon:"fluent-color:cloud-24",group:"bottom"},{id:"notifications",label:"消息",icon:"fluent-color:comment-multiple-32",group:"bottom"},{id:"settings",label:"设置",icon:"fluent-color:settings-24",group:"bottom"}],T=fe(()=>Le.filter(J=>!J.adminOnly||c.value).map(J=>J.id==="notifications"?{...J,badge:V.value>0?V.value:void 0}:J)),D=(A,J)=>{console.log("点击了按钮:",A.label||A.id,"ID:",A.id,"索引:",J),re.value=A.id,A.id==="home"?b.push("/"):A.id==="apps"?b.push("/apps"):A.id==="official"?b.push("/official"):A.id==="downloads"?b.push("/downloads"):A.id==="settings"?b.push("/settings"):A.id==="new"?b.push("/new-features"):A.id==="discussion"?b.push("/discussion"):A.id==="admin"?b.push("/admin"):A.id==="notifications"?b.push("/notifications"):console.log("Sidebar item clicked:",A,J)};return st(()=>w.path,A=>{A==="/"||A==="/home"?re.value="home":A==="/apps"?re.value="apps":A==="/official"?re.value="official":A.startsWith("/downloads")?re.value="downloads":A.startsWith("/settings")?re.value="settings":A.startsWith("/new-features")?re.value="new":A.startsWith("/discussion")?re.value="discussion":A.startsWith("/admin")?re.value="admin":A.startsWith("/notifications")?re.value="notifications":A.startsWith("/messages")&&(re.value="")},{immediate:!0}),(A,J)=>{var x,S,L,P,ee,ue,ve,Ie,Oe,Ke;const ce=nf("router-view");return d(),p("div",Qy,[m(og),W.value?(d(),Fe(Yh,{key:1,onRetry:R,"error-message":(x=te.value)==null?void 0:x.message,"error-code":(S=te.value)==null?void 0:S.code,"request-url":(L=te.value)==null?void 0:L.requestUrl,"status-code":(P=te.value)==null?void 0:P.statusCode},null,8,["error-message","error-code","request-url","status-code"])):Z.value?(d(),Fe(Oh,{key:2,onComplete:O})):(d(),p("div",Jy,[n("div",Zy,[J[12]||(J[12]=n("div",{class:"top-bar-left"},[n("div",{class:"brand-name"},"QiuChenly")],-1)),n("div",Xy,[m(I1,{modelValue:C.value,"onUpdate:modelValue":J[0]||(J[0]=ge=>C.value=ge),onSearch:I,onClear:q},null,8,["modelValue"])]),n("div",Yy,[n("div",{class:"user-menu-wrapper",ref_key:"userMenuRef",ref:ye},[n("div",eb,[Y(a)?(d(),Fe(Tt,{key:1,userId:(ee=Y(l))==null?void 0:ee._id,width:36,height:36},null,8,["userId"])):(d(),Fe(_,{key:0,icon:"fluent-color:person-24",class:"avatar-icon"}))]),n("div",tb,[Y(a)?(d(),p(he,{key:1},[n("div",sb,[n("div",nb,[n("div",ob,[m(Tt,{userId:(ue=Y(l))==null?void 0:ue._id,"user-name":de(),size:"large"},null,8,["userId","user-name"])]),n("div",lb,[n("div",ab,y(((ve=Y(l))==null?void 0:ve.nickName)||((Ie=Y(l))==null?void 0:Ie.username)||"用户"),1),n("div",ib,y(((Oe=Y(l))==null?void 0:Oe.email)||"未设置邮箱"),1),n("div",rb,y(Ne((Ke=Y(l))==null?void 0:Ke.role)),1)])])]),J[10]||(J[10]=n("div",{class:"menu-divider"},null,-1)),n("div",{class:"menu-item",onClick:Me},[m(_,{icon:"fluent-color:person-24",class:"menu-icon"}),J[6]||(J[6]=n("span",{class:"menu-text"},"个人中心",-1))]),n("div",{class:"menu-item",onClick:K},[m(_,{icon:"fluent-color:chat-24",class:"menu-icon"}),J[7]||(J[7]=n("span",{class:"menu-text"},"发送反馈",-1))]),n("div",{class:"menu-item",onClick:ie},[m(_,{icon:"fluent-color:settings-24",class:"menu-icon"}),J[8]||(J[8]=n("span",{class:"menu-text"},"存储设置",-1))]),J[11]||(J[11]=n("div",{class:"menu-divider"},null,-1)),n("div",{class:"menu-item",onClick:Pe},[m(_,{icon:"fluent-color:dismiss-circle-24",class:"menu-icon"}),J[9]||(J[9]=n("span",{class:"menu-text"},"登出",-1))])],64)):(d(),p(he,{key:0},[n("div",{class:"menu-item",onClick:Te},[m(_,{icon:"fluent-color:person-add-24",class:"menu-icon"}),J[3]||(J[3]=n("span",{class:"menu-text"},"登录",-1))]),n("div",{class:"menu-item",onClick:K},[m(_,{icon:"fluent-color:chat-24",class:"menu-icon"}),J[4]||(J[4]=n("span",{class:"menu-text"},"发送反馈",-1))]),n("div",{class:"menu-item",onClick:ie},[m(_,{icon:"fluent-color:settings-24",class:"menu-icon"}),J[5]||(J[5]=n("span",{class:"menu-text"},"存储设置",-1))])],64))])],512)])]),n("div",cb,[n("div",ub,[m(N1,{items:T.value,"active-item":Ce.value,onItemClick:D},{item:ft(({item:ge})=>[ge.icon?(d(),Fe(_,{key:0,icon:ge.icon,class:"item-icon"},null,8,["icon"])):E("",!0),ge.label?(d(),p("span",db,y(ge.label),1)):E("",!0)]),_:1},8,["items","active-item"])]),n("div",fb,[m(ce)])])])),m(Mu,{show:v.value,onClose:J[1]||(J[1]=ge=>v.value=!1),onSuccess:Ee},null,8,["show"]),m(c1,{visible:g.value,app:h.value,onClose:J[2]||(J[2]=ge=>g.value=!1)},null,8,["visible","app"]),m(nn,{visible:Y(u).visible.value,title:Y(u).config.value.title||"",message:Y(u).config.value.message||"",type:Y(u).config.value.type,"confirm-text":Y(u).config.value.confirmText,"cancel-text":Y(u).config.value.cancelText,onConfirm:Y(u).handleConfirm,onCancel:Y(u).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(Qu)])}}}),vb=Ge(pb,[["__scopeId","data-v-38779332"]]),mb="modulepreload",hb=function(e){return"/"+e},xr={},Tr=function(t,s,o){let l=Promise.resolve();if(s&&s.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),r=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));l=Promise.allSettled(s.map(c=>{if(c=hb(c),c in xr)return;xr[c]=!0;const f=c.endsWith(".css"),u=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const v=document.createElement("link");if(v.rel=f?"stylesheet":mb,f||(v.as="script"),v.crossOrigin="",v.href=c,r&&v.setAttribute("nonce",r),document.head.appendChild(v),f)return new Promise((g,h)=>{v.addEventListener("load",g),v.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${c}`)))})}))}function a(i){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=i,window.dispatchEvent(r),!r.defaultPrevented)throw i}return l.then(i=>{for(const r of i||[])r.status==="rejected"&&a(r.reason);return t().catch(a)})},gb={class:"modal-header"},yb={class:"modal-title"},bb={class:"modal-body"},_b={class:"log-time"},wb={class:"log-message"},kb={key:0,class:"log-line loading"},$b={class:"modal-footer"},Cb={class:"footer-status"},Ib={key:0,class:"status-success"},Sb={key:1,class:"status-error"},xb={key:2,class:"status-loading"},Tb={class:"footer-actions"},Ab=ze({__name:"LogModal",props:{visible:{type:Boolean},title:{default:"操作日志"},logs:{default:()=>[]},loading:{type:Boolean,default:!1},status:{default:"idle"},canClose:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:t}){const s=e,o=t,l=k(null),a=()=>{l.value&&(l.value.scrollTop=l.value.scrollHeight)};st(()=>s.logs,async()=>{await vt(),a()},{deep:!0,flush:"post"}),st(()=>s.loading,async()=>{await vt(),a()});const i=()=>{switch(s.status){case"success":return"mdi:check-circle";case"error":return"mdi:alert-circle";case"loading":return"mdi:loading";default:return"mdi:information"}},r=u=>u.level?`log-${u.level}`:"log-info",c=()=>{o("close")},f=()=>{s.canClose&&c()};return(u,v)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"modal"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"modal-overlay",onClick:f},[n("div",{class:"modal-container",onClick:v[0]||(v[0]=je(()=>{},["stop"]))},[n("div",gb,[n("h2",yb,[m(_,{icon:i(),class:"modal-icon"},null,8,["icon"]),be(" "+y(e.title),1)]),e.canClose?(d(),p("button",{key:0,onClick:c,class:"modal-close","aria-label":"关闭"},[m(_,{icon:"mdi:close"})])):E("",!0)]),n("div",bb,[n("div",{ref_key:"logContainer",ref:l,class:"log-container"},[(d(!0),p(he,null,Re(e.logs,(g,h)=>(d(),p("div",{key:h,class:$e(["log-line",r(g)])},[n("span",_b,y(g.time),1),n("span",wb,y(g.message),1)],2))),128)),e.loading?(d(),p("div",kb,[...v[1]||(v[1]=[n("div",{class:"spinner-small"},null,-1),n("span",{class:"log-message"},"处理中...",-1)])])):E("",!0)],512)]),n("div",$b,[n("div",Cb,[e.status==="success"?(d(),p("span",Ib,[m(_,{icon:"mdi:check-circle"}),v[2]||(v[2]=be(" 操作成功 ",-1))])):e.status==="error"?(d(),p("span",Sb,[m(_,{icon:"mdi:alert-circle"}),v[3]||(v[3]=be(" 操作失败 ",-1))])):e.loading?(d(),p("span",xb,[...v[4]||(v[4]=[n("div",{class:"spinner-small"},null,-1),be(" 处理中... ",-1)])])):E("",!0)]),n("div",Tb,[e.canClose?(d(),p("button",{key:0,onClick:c,class:"btn btn-outline"}," 关闭 ")):E("",!0)])])])])):E("",!0)]),_:1})]))}}),Ju=Ge(Ab,[["__scopeId","data-v-07320b59"]]);function Eb(){const e=k(!1),t=k(""),s=k([]),o=k("idle");return{modalVisible:e,modalTitle:t,logs:s,modalStatus:o,addLog:(f,u="info")=>{const v=new Date,g=`${v.getHours().toString().padStart(2,"0")}:${v.getMinutes().toString().padStart(2,"0")}:${v.getSeconds().toString().padStart(2,"0")}`;s.value.push({time:g,message:f,level:u})},showModal:f=>{t.value=f,s.value=[],o.value="loading",e.value=!0},hideModal:()=>{e.value=!1},setSuccess:()=>{o.value="success"},setError:()=>{o.value="error"}}}function Zu(e){const t=k(!1),{onRefresh:s}=e,{modalVisible:o,modalTitle:l,logs:a,modalStatus:i,addLog:r,showModal:c,hideModal:f,setSuccess:u,setError:v}=Eb();return{updating:t,modalVisible:o,modalTitle:l,logs:a,modalStatus:i,handleUpdate:async b=>{t.value=!0,c(b.status==="injected"?"更新应用":"注入应用"),r(`开始处理应用: ${b.name}`),r(`Bundle ID: ${b.bundleId}`),r(`当前版本: ${b.version}`);try{r("正在连接到服务器...");const w=await oe.updateApp(b.bundleId);w.logs&&w.logs.length>0&&w.logs.forEach(C=>{r(C,"info")}),w.success?(r("操作成功完成!","success"),u(),r("正在刷新应用状态..."),await s(),r("应用状态已更新","success")):(r(`操作失败: ${w.message}`,"error"),v())}catch(w){console.error("更新应用失败:",w),r(`网络错误: ${w}`,"error"),v()}finally{t.value=!1}},handleReinstall:async()=>{console.log("重新安装功能待实现")},hideModal:f}}const Rb={key:0,class:"status-badge"},Ub={key:0,class:"badge upgrade"},Db={key:1,class:"badge injected"},Mb={class:"card-content"},Pb={class:"app-icon-wrapper"},Lb={class:"app-icon"},Ob=["src","alt"],Nb={class:"app-info"},Fb={class:"app-name"},Bb={key:0,class:"app-rating"},Vb={class:"category-tag"},jb={key:1,class:"version-info"},qb={key:0,class:"version-item"},Hb={class:"version-value"},zb={key:1,class:"version-item latest"},Wb={class:"version-label"},Kb={class:"version-value"},Gb={key:2,class:"version-item bundle-id"},Qb={class:"version-value bundle-id-value"},Jb={key:2,class:"app-description"},Zb={class:"app-actions"},Xb=["disabled","title"],Yb={key:4,class:"button-tooltip"},e0=ze({__name:"AppCard",props:{app:{},mode:{default:"list"},showDescription:{type:Boolean,default:!1}},emits:["updated","openVersionDialog"],setup(e,{emit:t}){const s=e,o=t,l=Wt(),a=k(!1),i=k(!1),{toasts:r,warning:c,removeToast:f}=Ft(),u=fe(()=>s.app.hasIcon?oe.getAppIconUrl(s.app.bundleId):null),{updating:v,modalVisible:g,modalTitle:h,logs:b,modalStatus:w,handleUpdate:C,handleReinstall:I,hideModal:q}=Zu({onRefresh:async()=>{try{const M=await oe.getApp(s.app.bundleId);return o("updated",s.app.bundleId),M}catch(M){throw console.error("刷新应用状态失败:",M),M}}}),N=()=>{const M=s.app.bundleId.toLowerCase();return M.includes("social")||M.includes("chat")||M.includes("qq")||M.includes("wechat")?"社交":M.includes("music")||M.includes("video")||M.includes("player")?"娱乐":M.includes("design")||M.includes("photo")||M.includes("edit")?"设计":M.includes("tool")||M.includes("util")?"工具":"应用"},z=()=>`${s.app.name}是一款优秀的应用程序,提供丰富的功能和良好的用户体验。`,Z=fe(()=>{const M=s.app.status==="upgrade_available",G=s.app.update!==null&&s.app.update.hasUpdate===!0;return M||G}),W=fe(()=>{var M;return s.app.path?!1:!((M=s.app.update)!=null&&M.versions)||s.app.update.versions.length===0}),te=()=>{var M;return v.value?"处理中...":s.app.path?Z.value?"更新":s.app.status==="injected"?"已安装":s.app.status==="supported"?"一键激活":s.app.status==="unsupported"?"不支持":"一键激活":((M=s.app.update)!=null&&M.versions&&s.app.update.versions.length>0,"下载")},O=()=>!s.app.path&&W.value?"该应用暂无可用的下载版本":v.value?"正在处理中...":"",R=()=>!s.app.path&&W.value?"disabled":Z.value?"warning":s.app.status==="injected"?"success":s.app.status==="supported"?"primary":s.app.status==="unsupported"?"disabled":"primary",F=()=>{l.push(`/app/${s.app.bundleId}`)},$=()=>{var M,G;if(!s.app.path){(M=s.app.update)!=null&&M.versions&&s.app.update.versions.length>0?window.dispatchEvent(new CustomEvent("open-version-dialog",{detail:s.app})):c("该应用暂无可用的下载版本",3e3);return}Z.value&&((G=s.app.update)!=null&&G.versions)&&s.app.update.versions.length>0?window.dispatchEvent(new CustomEvent("open-version-dialog",{detail:s.app})):Z.value||s.app.status==="supported"?C(s.app):s.app.status!=="injected"&&s.app.status!=="unsupported"&&I(s.app)},U=()=>{a.value=!0,i.value=!1},se=()=>{a.value=!1,i.value=!0};return(M,G)=>{var B;return d(),p("div",{class:$e(["app-card",[`mode-${e.mode}`]]),onClick:F},[e.mode==="list"?(d(),p("div",Rb,[Z.value?(d(),p("div",Ub,[...G[0]||(G[0]=[n("span",null,"可更新",-1)])])):e.app.status==="injected"?(d(),p("div",Db,[...G[1]||(G[1]=[n("span",null,"已注入",-1)])])):E("",!0)])):E("",!0),n("div",Mb,[n("div",Pb,[n("div",Lb,[u.value?Be((d(),p("img",{key:0,src:u.value,alt:e.app.name,onLoad:U,onError:se},null,40,Ob)),[[es,a.value&&!i.value]]):E("",!0),Be(n("div",{class:"icon-placeholder"},y(e.app.name.charAt(0).toUpperCase()),513),[[es,!u.value||!a.value||i.value]])])]),n("div",Nb,[n("h3",Fb,y(e.app.name),1),e.mode==="search"?(d(),p("div",Bb,[m(_,{icon:"fluent-color:star-24",class:"star-icon"}),G[2]||(G[2]=n("span",null,"4.5",-1))])):E("",!0),n("div",Vb,[n("span",null,y(N()),1)]),e.mode==="list"?(d(),p("div",jb,[e.app.path?(d(),p("div",qb,[G[3]||(G[3]=n("span",{class:"version-label"},"当前",-1)),n("span",Hb,y(e.app.version||"未知"),1)])):E("",!0),(B=e.app.update)!=null&&B.latestVersion?(d(),p("div",zb,[n("span",Wb,y(e.app.path?"最新":"版本"),1),n("span",Kb,y(e.app.update.latestVersion),1)])):E("",!0),e.app.path?E("",!0):(d(),p("div",Gb,[G[4]||(G[4]=n("span",{class:"version-label"},"包名",-1)),n("span",Qb,y(e.app.bundleId),1)]))])):E("",!0),e.mode==="search"&&e.showDescription?(d(),p("div",Jb,y(z()),1)):E("",!0)]),n("div",Zb,[n("button",{class:$e(["action-button",R()]),onClick:je($,["stop"]),disabled:Y(v)||W.value,title:O()},[Z.value?(d(),Fe(_,{key:0,icon:"mdi:arrow-down-circle",class:"button-icon"})):s.app.status==="supported"?(d(),Fe(_,{key:1,icon:"mdi:key",class:"button-icon"})):s.app.status==="injected"?(d(),Fe(_,{key:2,icon:"mdi:check-circle",class:"button-icon"})):s.app.path?E("",!0):(d(),Fe(_,{key:3,icon:"mdi:download",class:"button-icon"})),n("span",null,y(te()),1),W.value&&!s.app.path?(d(),p("span",Yb," 该应用暂无可用的下载版本 ")):E("",!0)],10,Xb)])]),m(Ju,{visible:Y(g),title:Y(h),logs:Y(b),loading:Y(v),status:Y(w),"can-close":Y(w)!=="loading",onClose:Y(q)},null,8,["visible","title","logs","loading","status","can-close","onClose"]),m(ls,{toasts:Y(r),onRemove:Y(f)},null,8,["toasts","onRemove"])],2)}}}),oo=Ge(e0,[["__scopeId","data-v-052f9dd3"]]),t0={class:"carousel-wrapper"},s0={class:"slide-background"},n0=["src"],o0={class:"slide-content"},l0={class:"content-wrapper"},a0={key:0,class:"app-icon-wrapper"},i0=["src","alt"],r0={class:"app-info"},c0={key:0,class:"app-price"},u0={class:"app-title"},d0={key:1,class:"app-description"},f0={class:"app-actions"},p0=["onClick"],v0=["onClick"],m0=["disabled"],h0=["disabled"],g0=["viewBox"],y0=["cx","cy","r"],b0=["d"],_0={key:3,class:"carousel-indicators"},w0=["onClick"],k0=ze({__name:"HeroBanner",props:{items:{},autoPlay:{type:Boolean,default:!0},autoPlayInterval:{default:5e3},progressSize:{default:18}},emits:["action","slideChange"],setup(e,{emit:t}){const s=e,o=t,l=k(0);let a=!1;const i=k(0);let r=null,c=0;const f=k([]),u=k(!1),v=fe(()=>{const G=s.progressSize,B=24,V=B/2,X=B/2,pe=B/2*.75;return{size:G,viewBox:`0 0 ${B} ${B}`,centerX:V,centerY:X,radius:pe}}),g=G=>G.imageUrl?{backgroundImage:`url(${G.imageUrl})`}:G.imageId?{backgroundImage:`url(${oe.getImageUrl(G.imageId,80,1920,1080)})`}:{background:"linear-gradient(135deg, #0078d4 0%, #106ebe 100%)"},h=G=>{var B;if((B=G.app)!=null&&B.bundleId)return oe.getAppIconUrl(G.app.bundleId)},b=G=>{const B=G.target;B.style.display="none"},w=(G,B)=>{o("action",G,B)},C=(G=!1)=>{l.value<s.items.length-1?l.value++:l.value=0,G||O(),z(),vt(()=>{W()})},I=()=>{C(!1)},q=()=>{l.value>0?l.value--:l.value=s.items.length-1,O(),z(),vt(()=>{W()})},N=G=>{G>=0&&G<s.items.length&&(l.value=G,O(),z(),vt(()=>{W()}))},z=()=>{s.items[l.value]&&o("slideChange",l.value,s.items[l.value])},Z=(G,B)=>{G&&(f.value[B]=G)},W=()=>{vt(()=>{f.value.forEach((G,B)=>{G&&(B===l.value?G.play().catch(()=>{}):(G.pause(),G.currentTime=0))})})},te=()=>{const G=v.value.centerX,B=v.value.centerY,V=v.value.radius;if(i.value<=0)return"";if(i.value>=100)return`M ${G} ${B} m -${V} 0 a ${V} ${V} 0 1 1 ${V*2} 0 a ${V} ${V} 0 1 1 -${V*2} 0`;const pe=(i.value/100*360-90)*Math.PI/180,Ne=G+V*Math.cos(pe),Pe=B+V*Math.sin(pe),Ee=i.value>50?1:0,ye=G,de=B-V;return`M ${G} ${B} L ${ye} ${de} A ${V} ${V} 0 ${Ee} 1 ${Ne} ${Pe} Z`},O=()=>{i.value=0,c=Date.now()},R=()=>{if(!s.autoPlay||a||s.items.length<=1)return;const B=(Date.now()-c)/s.autoPlayInterval*100;B>=100?(O(),C(!0)):i.value=B},F=()=>{u.value=!0,U()},$=()=>{u.value=!1,se()},U=()=>{a||(a=!0,r&&(clearInterval(r),r=null))},se=()=>{if(!a||!s.autoPlay||s.items.length<=1)return;a=!1;const G=i.value/100*s.autoPlayInterval;c=Date.now()-G,M(!1)},M=(G=!1)=>{r&&clearInterval(r),G&&O(),r=window.setInterval(()=>{a||R()},50)};return st(()=>s.items,()=>{l.value>=s.items.length&&(l.value=0),f.value=new Array(s.items.length).fill(null),s.autoPlay&&s.items.length>1&&M(!0),vt(()=>{W()})},{immediate:!0}),st(()=>l.value,()=>{W()}),rt(()=>{s.autoPlay&&s.items.length>1&&M(!0),vt(()=>{W()})}),Et(()=>{r&&(clearInterval(r),r=null)}),(G,B)=>(d(),p("div",{class:"hero-carousel",onMouseenter:F,onMouseleave:$},[n("div",t0,[n("div",{class:"carousel-container",style:$t({transform:`translateX(-${l.value*100}%)`})},[(d(!0),p(he,null,Re(e.items,(V,X)=>(d(),p("div",{key:V.id||X,class:$e(["carousel-slide",{active:X===l.value}])},[n("div",s0,[V.type==="video"&&V.videoUrl?(d(),p("video",{key:0,ref_for:!0,ref:pe=>Z(pe,X),class:$e(["background-video",{active:X===l.value}]),src:V.videoUrl,muted:"",loop:"",playsinline:""},null,10,n0)):(d(),p("div",{key:1,class:"background-image",style:$t(g(V))},null,4)),B[0]||(B[0]=n("div",{class:"background-overlay"},null,-1))]),n("div",o0,[n("div",l0,[h(V)?(d(),p("div",a0,[n("img",{src:h(V),alt:V.title,class:"app-icon",onError:b},null,40,i0)])):E("",!0),n("div",r0,[V.price?(d(),p("div",c0,y(V.price),1)):E("",!0),n("h2",u0,y(V.title),1),V.description?(d(),p("p",d0,y(V.description),1)):E("",!0)]),n("div",f0,[V.primaryAction?(d(),p("button",{key:0,class:"action-button primary",onClick:pe=>w("primary",V)},y(V.primaryAction.label),9,p0)):E("",!0),V.secondaryAction?(d(),p("button",{key:1,class:"action-button secondary",onClick:pe=>w("secondary",V)},y(V.secondaryAction.label),9,v0)):E("",!0)])])])],2))),128))],4)]),e.items.length>1?(d(),p("button",{key:0,class:$e(["nav-arrow nav-arrow-left",{visible:u.value}]),onClick:q,disabled:l.value===0},[m(_,{icon:"mdi:triangle",class:"arrow-icon arrow-icon-left"})],10,m0)):E("",!0),e.items.length>1?(d(),p("button",{key:1,class:$e(["nav-arrow nav-arrow-right",{visible:u.value}]),onClick:I,disabled:l.value===e.items.length-1},[m(_,{icon:"mdi:triangle",class:"arrow-icon arrow-icon-right"})],10,h0)):E("",!0),e.items.length>1&&e.autoPlay?(d(),p("div",{key:2,class:"progress-indicator",style:$t({width:`${v.value.size}px`,height:`${v.value.size}px`})},[(d(),p("svg",{class:"progress-circle",viewBox:v.value.viewBox,xmlns:"http://www.w3.org/2000/svg"},[n("circle",{class:"progress-track",cx:v.value.centerX,cy:v.value.centerY,r:v.value.radius,fill:"rgba(255, 255, 255, 0.2)"},null,8,y0),n("path",{class:"progress-bar",d:te(),fill:"white"},null,8,b0)],8,g0))],4)):E("",!0),e.items.length>1?(d(),p("div",_0,[(d(!0),p(he,null,Re(e.items,(V,X)=>(d(),p("button",{key:V.id||X,class:$e(["indicator",{active:X===l.value}]),onClick:pe=>N(X)},null,10,w0))),128))])):E("",!0)],32))}}),$0=Ge(k0,[["__scopeId","data-v-ed76f4a9"]]),C0={class:"right-sidebar"},I0={key:0,class:"featured-app-card"},S0={class:"featured-app-content"},x0={class:"featured-app-icon"},T0=["src","alt"],A0={class:"featured-app-info"},E0={key:0,class:"app-price"},R0={class:"app-name"},U0={key:1,class:"app-version"},D0={key:2,class:"app-description"},M0={class:"bottom-cards"},P0={key:0,class:"card image-viewer-card"},L0={class:"card-icon-container"},O0={class:"main-icon"},N0=["src"],F0={class:"format-icons"},B0={class:"card-title"},V0={key:1,class:"card entertainment-card"},j0={class:"app-icons-grid"},q0=["onClick"],H0=["src","alt"],z0={class:"card-title"},W0=ze({__name:"RightSidebar",props:{entertainmentData:{default:void 0},imageViewerData:{default:void 0},featuredAppData:{default:void 0}},emits:["appClick"],setup(e,{emit:t}){const s=e,o=t,l=r=>{o("appClick",r)},a=()=>{var r;return(r=s.featuredAppData)!=null&&r.screenshotUrl?{backgroundImage:`url(${s.featuredAppData.screenshotUrl})`}:{backgroundImage:"url(https://cn.bing.com/th?id=OHR.LagoonNebula_ZH-CN3890147543_1920x1080.jpg)"}},i=()=>{var r;return(r=s.imageViewerData)!=null&&r.backgroundUrl?{backgroundImage:`url(${s.imageViewerData.backgroundUrl})`}:{backgroundImage:"url(https://cn.bing.com/th?id=OHR.LagoonNebula_ZH-CN3890147543_1920x1080.jpg)"}};return(r,c)=>(d(),p("div",C0,[e.featuredAppData?(d(),p("div",I0,[n("div",{class:"featured-app-background",style:$t(a())},null,4),n("div",S0,[n("div",x0,[e.featuredAppData.iconUrl?(d(),p("img",{key:0,src:e.featuredAppData.iconUrl,alt:e.featuredAppData.name},null,8,T0)):(d(),Fe(_,{key:1,icon:"fluent-color:apps-24",class:"default-icon"}))]),n("div",A0,[e.featuredAppData.price?(d(),p("div",E0,y(e.featuredAppData.price),1)):E("",!0),n("div",R0,y(e.featuredAppData.name),1),e.featuredAppData.version?(d(),p("div",U0,y(e.featuredAppData.version),1)):E("",!0),e.featuredAppData.description?(d(),p("div",D0,y(e.featuredAppData.description),1)):E("",!0)])])])):E("",!0),n("div",M0,[e.imageViewerData?(d(),p("div",P0,[n("div",{class:"image-viewer-background",style:$t(i())},null,4),n("div",L0,[n("div",O0,[e.imageViewerData.iconUrl?(d(),p("img",{key:0,src:e.imageViewerData.iconUrl,alt:"",class:"icon-image"},null,8,N0)):(d(),Fe(_,{key:1,icon:"fluent-color:image-24",class:"icon-large"}))]),n("div",F0,[(d(!0),p(he,null,Re(e.imageViewerData.tags,(f,u)=>(d(),p("span",{key:u,class:"format-tag"},y(f),1))),128))])]),n("div",B0,y(e.imageViewerData.title),1)])):E("",!0),e.entertainmentData?(d(),p("div",V0,[n("div",j0,[(d(!0),p(he,null,Re(e.entertainmentData.apps,(f,u)=>(d(),p("div",{class:"app-icon",key:u,onClick:je(v=>l(f),["stop"])},[f.iconUrl?(d(),p("img",{key:0,src:f.iconUrl,alt:f.name,class:"app-icon-image"},null,8,H0)):(d(),Fe(_,{key:1,icon:"fluent-color:play-circle-24"}))],8,q0))),128))]),n("div",z0,y(e.entertainmentData.title),1)])):E("",!0)])]))}}),K0=Ge(W0,[["__scopeId","data-v-b53155f3"]]),G0={class:"featured-scroll-wrapper"},Q0={class:"featured-list"},J0=["onClick"],Z0={class:"featured-icon-wrapper"},X0=["src","alt"],Y0={key:1,class:"featured-icon-placeholder"},e_={class:"featured-name"},t_={class:"featured-category"},s_={class:"category-tag"},n_=["onClick"],Ar=400,o_=ze({__name:"FeaturedApps",props:{apps:{}},emits:["appClick","action"],setup(e,{emit:t}){const s=e,o=t,l=k(null),a=k(!1),i=k(0),r=fe(()=>i.value>0),c=fe(()=>{if(!l.value)return!1;const N=l.value;return N.scrollWidth>N.clientWidth&&i.value<N.scrollWidth-N.clientWidth-1}),f=()=>{l.value&&(i.value=l.value.scrollLeft)},u=()=>{l.value&&l.value.scrollBy({left:-Ar,behavior:"smooth"})},v=()=>{l.value&&l.value.scrollBy({left:Ar,behavior:"smooth"})},g=N=>oe.getAppIconUrl(N.bundleId),h=()=>{},b=N=>{const z=N.bundleId.toLowerCase();return z.includes("social")||z.includes("chat")||z.includes("qq")||z.includes("wechat")?"社交":z.includes("music")||z.includes("video")||z.includes("player")?"娱乐":z.includes("design")||z.includes("photo")||z.includes("edit")?"设计":z.includes("tool")||z.includes("util")?"工具":"应用"},w=N=>N.status==="upgrade_available"?"更新":N.status==="injected"?"已安装":(N.status==="supported","获取"),C=N=>{o("appClick",N)},I=N=>{o("action",N)};st(()=>s.apps,()=>{vt(()=>{f()})},{immediate:!0});const q=()=>{vt(()=>{f()})};return rt(()=>{vt(()=>{f(),l.value&&l.value.addEventListener("scroll",f)}),window.addEventListener("resize",q)}),Et(()=>{l.value&&l.value.removeEventListener("scroll",f),window.removeEventListener("resize",q)}),(N,z)=>(d(),p("div",{class:"featured-apps",onMouseenter:z[0]||(z[0]=Z=>a.value=!0),onMouseleave:z[1]||(z[1]=Z=>a.value=!1)},[z[2]||(z[2]=n("h3",{class:"section-title"},"推荐应用",-1)),n("div",G0,[n("div",{class:"featured-scroll",ref_key:"scrollContainer",ref:l},[n("div",Q0,[(d(!0),p(he,null,Re(e.apps,Z=>(d(),p("div",{key:Z.bundleId,class:"featured-card",onClick:W=>C(Z)},[n("div",Z0,[g(Z)?(d(),p("img",{key:0,src:g(Z),alt:Z.name,class:"featured-icon",onError:h},null,40,X0)):(d(),p("div",Y0,y(Z.name.charAt(0).toUpperCase()),1))]),n("h4",e_,y(Z.name),1),n("div",t_,[n("span",s_,y(b(Z)),1)]),n("button",{class:"featured-button",onClick:je(W=>I(Z),["stop"])},y(w(Z)),9,n_)],8,J0))),128))])],512),r.value?(d(),p("button",{key:0,class:$e(["scroll-button scroll-button-left",{visible:a.value}]),onClick:u},[m(_,{icon:"mdi:chevron-left"})],2)):E("",!0),c.value?(d(),p("button",{key:1,class:$e(["scroll-button scroll-button-right",{visible:a.value}]),onClick:v},[m(_,{icon:"mdi:chevron-right"})],2)):E("",!0)])],32))}}),l_=Ge(o_,[["__scopeId","data-v-b2fac49e"]]),a_={class:"category-section"},i_={class:"category-content"},r_={class:"category-left"},c_={class:"featured-list"},u_=["onClick"],d_={class:"featured-large-icon-wrapper"},f_=["src","alt"],p_={key:1,class:"featured-large-icon-placeholder"},v_={class:"featured-large-info"},m_={class:"featured-large-name"},h_={class:"featured-large-desc"},g_=["onClick"],y_={class:"category-right"},b_={class:"category-grid"},__=["onClick"],w_={class:"category-icon"},k_={class:"category-name"},$_=ze({__name:"CategorySection",props:{featuredApps:{},categories:{default:()=>[{id:"tools",name:"工具",icon:"fluent-color:wrench-24"},{id:"social",name:"社交",icon:"fluent-color:people-24"},{id:"entertainment",name:"娱乐",icon:"fluent-color:video-24"},{id:"design",name:"设计",icon:"fluent-color:paint-brush-24"},{id:"education",name:"教育",icon:"fluent-color:book-24"},{id:"productivity",name:"效率",icon:"fluent-color:briefcase-24"},{id:"photo",name:"摄影",icon:"fluent-color:camera-24"},{id:"music",name:"音乐",icon:"fluent-color:headphones-48"},{id:"news",name:"新闻",icon:"fluent-color:news-24"},{id:"health",name:"健康",icon:"fluent-color:heart-24"},{id:"finance",name:"财务",icon:"fluent-color:coin-multiple-48"},{id:"travel",name:"旅行",icon:"fluent-color:globe-24"}]}},emits:["appClick","action","categoryClick"],setup(e,{emit:t}){const s=t,o=f=>oe.getAppIconUrl(f.bundleId),l=()=>{},a=f=>f.status==="upgrade_available"?"更新":f.status==="injected"?"已安装":(f.status==="supported","获取"),i=f=>{s("appClick",f)},r=f=>{s("action",f)},c=f=>{s("categoryClick",f)};return(f,u)=>(d(),p("div",a_,[n("div",i_,[n("div",r_,[u[0]||(u[0]=n("h3",{class:"section-title"},"特色应用",-1)),n("div",c_,[(d(!0),p(he,null,Re(e.featuredApps.slice(0,2),v=>(d(),p("div",{key:v.bundleId,class:"featured-large-card",onClick:g=>i(v)},[n("div",d_,[o(v)?(d(),p("img",{key:0,src:o(v),alt:v.name,class:"featured-large-icon",onError:l},null,40,f_)):(d(),p("div",p_,y(v.name.charAt(0).toUpperCase()),1))]),n("div",v_,[n("h4",m_,y(v.name),1),n("p",h_,y(v.bundleId),1),n("button",{class:"featured-large-button",onClick:je(g=>r(v),["stop"])},y(a(v)),9,g_)])],8,u_))),128))])]),n("div",y_,[u[1]||(u[1]=n("h3",{class:"section-title"},"分类",-1)),n("div",b_,[(d(!0),p(he,null,Re(e.categories,v=>(d(),p("div",{key:v.id,class:"category-card",onClick:g=>c(v)},[n("div",w_,[m(_,{icon:v.icon},null,8,["icon"])]),n("span",k_,y(v.name),1)],8,__))),128))])])])]))}}),C_=Ge($_,[["__scopeId","data-v-c6a81573"]]),I_={class:"select-selected"},S_=["onClick"],x_=ze({__name:"CustomSelect",props:{modelValue:{},options:{},placeholder:{default:"请选择"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=t,l=k(!1),a=k(null),i=k(null),r=k({top:"0px",left:"0px",width:"200px"}),c=fe(()=>s.options.find(h=>h.value===s.modelValue)||null),f=()=>{!l.value||!a.value||vt(()=>{const h=a.value.getBoundingClientRect(),b=s.options.length*48+16,w=window.innerHeight-h.bottom,C=h.top;let I=h.bottom+8,q=h.left,N=h.width;w<b&&C>w&&(I=h.top-b-8),q+N>window.innerWidth&&(q=window.innerWidth-N-16),q<16&&(q=16),I<16&&(I=16),I+b>window.innerHeight-16&&(I=window.innerHeight-b-16),r.value={top:`${I}px`,left:`${q}px`,width:`${N}px`}})},u=()=>{l.value=!l.value,l.value&&f()},v=h=>{o("update:modelValue",h),l.value=!1},g=h=>{const b=h.target;a.value&&a.value.contains(b)||i.value&&i.value.contains(b)||(l.value=!1)};return st(l,h=>{h?(f(),window.addEventListener("scroll",f,!0),window.addEventListener("resize",f)):(window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f))}),rt(()=>{document.addEventListener("click",g)}),Et(()=>{document.removeEventListener("click",g),window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f)}),(h,b)=>{var w,C;return d(),p("div",{class:"custom-select-wrapper",ref_key:"wrapperRef",ref:a},[n("div",{class:$e(["custom-select",{open:l.value}]),onClick:u},[n("div",I_,[m(_,{icon:((w=c.value)==null?void 0:w.icon)||"",class:"select-icon"},null,8,["icon"]),n("span",null,y(((C=c.value)==null?void 0:C.label)||e.placeholder),1),m(_,{icon:"fluent-color:chevron-down-24",class:$e(["select-arrow",{rotated:l.value}])},null,8,["class"])])],2),(d(),Fe(Nt,{to:"body"},[m(mt,{name:"dropdown-fade"},{default:ft(()=>[l.value?(d(),p("div",{key:0,ref_key:"dropdownRef",ref:i,class:"select-dropdown",style:$t(r.value),onClick:b[0]||(b[0]=je(()=>{},["stop"]))},[(d(!0),p(he,null,Re(e.options,I=>(d(),p("div",{key:I.value,class:$e(["select-option",{active:e.modelValue===I.value}]),onClick:q=>v(I.value)},[m(_,{icon:I.icon,class:"option-icon"},null,8,["icon"]),n("span",null,y(I.label),1),e.modelValue===I.value?(d(),Fe(_,{key:0,icon:"fluent-color:checkmark-24",class:"option-check"})):E("",!0)],10,S_))),128))],4)):E("",!0)]),_:1})]))],512)}}}),Ls=Ge(x_,[["__scopeId","data-v-d18bbb86"]]),T_={class:"app-list"},A_={class:"search-header"},E_={class:"search-title"},R_={class:"search-filters"},U_={class:"filter-tags"},D_={key:0,class:"loading"},M_={key:1,class:"error"},P_={key:2,class:"empty"},L_={key:3,class:"apps-grid search-results-grid"},O_={class:"hero-section"},N_={class:"list-section"},F_={class:"list-header"},B_={class:"section-title"},V_={class:"section-description"},j_={key:0,class:"loading"},q_={key:1,class:"error"},H_={key:2,class:"empty"},z_={key:3,class:"apps-grid"},W_={class:"list-footer"},K_={class:"footer-stats"},G_={class:"stat-item"},Q_={class:"stat-value"},J_={class:"stat-item"},Z_={class:"stat-value"},X_=ze({__name:"AppList",setup(e){const t=Cn(),s=Wt(),o=Gn([]),l=k(!0),a=k(""),i=fe(()=>t.query.search||""),r=fe(()=>!!i.value),c=[{id:"all",label:"所有分类"},{id:"app",label:"应用"},{id:"game",label:"游戏"},{id:"mobile",label:"移动应用"}],f=k("all"),u=[{value:"all",label:"全部",icon:"fluent-color:text-bullet-list-square-sparkle-32"},{value:"injected",label:"已安装",icon:"fluent-color:checkmark-circle-24"},{value:"update",label:"可更新",icon:"fluent-color:arrow-download-24"},{value:"store",label:"商店应用",icon:"fluent-color:store-24"}],v=fe(()=>o.value.filter(M=>M.status==="injected"||M.status==="upgrade_available").slice(0,5)),g=fe(()=>{const M={id:"test-banner",type:"image",imageUrl:"https://cn.bing.com/th?id=OHR.LagoonNebula_ZH-CN3890147543_1920x1080.jpg",title:"测试横幅",description:"这是一个测试横幅展示",price:"",primaryAction:{label:"了解更多",action:"view"}},G=v.value.map(B=>{var Ne,Pe;const V=((Ne=B.update)==null?void 0:Ne.imageId)||[],X=V.length>0?V[0]:void 0,pe=V.length>1;return{id:B.bundleId,type:pe?"video":"image",imageId:X,videoUrl:pe&&V[1]?oe.getImageUrl(V[1],80,1920,1080):void 0,title:B.name,description:(Pe=B.update)!=null&&Pe.latestVersion?`版本 ${B.update.latestVersion}`:`版本 ${B.version}`,price:"",primaryAction:{label:B.status==="upgrade_available"?"查看详情":B.status==="injected"?"已安装":"获取",action:"view",route:`/app/${B.bundleId}`},secondaryAction:B.status==="upgrade_available"?{label:"更新",action:"update"}:void 0,app:B}});return[M,...G]}),h=fe(()=>o.value.length===0?{title:"App精选",apps:[]}:{title:"App精选",apps:[...o.value].sort(()=>Math.random()-.5).slice(0,6).map(V=>({iconUrl:V.hasIcon?oe.getAppIconUrl(V.bundleId):void 0,name:V.name,bundleId:V.bundleId,...V}))}),b=[["专业级应用,为您提供卓越的使用体验。","功能强大,界面简洁,操作便捷。","让您的工作和生活更加高效。"],["精心设计的应用,满足您的各种需求。","稳定可靠,性能优异,值得信赖。","为您带来全新的使用感受。"],["功能丰富,设计精美,体验流畅。","无论是工作还是娱乐,都能轻松应对。","让您的数字生活更加精彩。"],["强大的功能,简洁的界面,出色的性能。","为您提供专业级的解决方案。","让每一次使用都成为享受。"],["创新设计,卓越性能,完美体验。","满足您的专业需求和个人喜好。","让您的设备发挥最大潜力。"],["功能全面,操作简单,效果出色。","无论是新手还是专家都能轻松上手。","为您的工作和生活增添便利。"]],w=M=>{let G=0;for(let B=0;B<M.length;B++){const V=M.charCodeAt(B);G=(G<<5)-G+V,G=G&G}return Math.abs(G)},C=M=>{const G=w(M),B=G%b.length,V=b[B],X=G%2+2;return V.slice(0,X).join(" ")},I=fe(()=>{var X,pe;if(o.value.length===0)return;const M=v.value[0]||o.value.find(Ne=>Ne.update!==null)||o.value[0];if(!M)return;const G=M.hasIcon?oe.getAppIconUrl(M.bundleId):void 0,B=(X=M.update)!=null&&X.imageId&&M.update.imageId.length>0?oe.getImageUrl(M.update.imageId[0],80,800,600):void 0,V=C(M.bundleId);return{name:M.name,iconUrl:G,version:((pe=M.update)==null?void 0:pe.latestVersion)||M.version,description:V,price:"",screenshotUrl:B}}),q=fe(()=>{var pe,Ne;if(o.value.length===0)return;const M=o.value.find(Pe=>Pe.update!==null)||o.value[0];if(!M)return;const G=M.hasIcon?oe.getAppIconUrl(M.bundleId):void 0,B=(pe=M.update)!=null&&pe.imageId&&M.update.imageId.length>0?oe.getImageUrl(M.update.imageId[0],80,800,600):void 0,V=["JPG","PNG","GIF","HEIC","BMP","WEBP","TIFF","SVG","ICO","RAW","PSD","PDF"];let X;if((Ne=M.update)!=null&&Ne.category&&M.update.category.length>0)X=M.update.category;else{const Pe=[...V].sort(()=>Math.random()-.5),Ee=Math.floor(Math.random()*2)+4;X=Pe.slice(0,Ee)}return{title:M.name,iconUrl:G,tags:X.slice(0,6),backgroundUrl:B}}),N=fe(()=>{let M=[...o.value];if(r.value&&i.value){const G=i.value.toLowerCase();M=M.filter(B=>B.name.toLowerCase().includes(G)||B.bundleId.toLowerCase().includes(G))}if(r.value&&f.value!=="all")switch(f.value){case"injected":M=M.filter(G=>G.status==="injected");break;case"update":M=M.filter(G=>G.status==="upgrade_available");break;case"store":M=M.filter(G=>G.update!==null);break}else if(!r.value){const G=t.query.filter;if(G)switch(G){case"injected":M=M.filter(B=>B.status==="injected");break;case"update":M=M.filter(B=>B.status==="upgrade_available");break;case"unsupported":M=M.filter(B=>B.status==="unsupported");break;case"store":M=M.filter(B=>B.update!==null);break}}return M.sort((G,B)=>G.name.localeCompare(B.name)),M}),z=()=>{switch(t.query.filter){case"injected":return"已注入应用";case"update":return"可更新应用";case"unsupported":return"不支持的应用";case"store":return"应用商店";default:return"所有应用"}},Z=()=>{switch(t.query.filter){case"store":return"浏览和下载应用更新版本";case"injected":return"已成功注入的应用列表";case"update":return"有新版本可用的应用";case"unsupported":return"当前版本不支持的应用";default:return"系统中所有已安装的应用"}},W=async()=>{l.value=!0,a.value="";try{const M=await oe.getApps();o.value=M}catch(M){console.error("加载应用列表失败:",M),a.value="加载应用列表失败,请检查服务是否运行",o.value=[]}finally{l.value=!1}},te=async M=>{console.log(`应用 ${M} 已更新`),await W()},O=M=>{s.push(`/app/${M.bundleId}`)},R=M=>{console.log("应用操作:",M)},F=M=>{if(M.bundleId){const G=o.value.find(B=>B.bundleId===M.bundleId);G?O(G):s.push(`/app/${M.bundleId}`)}},$=(M,G)=>{const B=M==="primary"?G.primaryAction:G.secondaryAction;B&&(B.route?s.push(B.route):B.url?window.open(B.url,"_blank"):B.action==="update"&&G.app&&console.log("更新应用:",G.app))},U=(M,G)=>{console.log("轮播切换到:",M,G.title)},se=M=>{console.log("分类点击:",M)};return rt(()=>{W()}),(M,G)=>(d(),p("div",T_,[r.value?(d(),p(he,{key:0},[n("div",A_,[n("h2",E_,'"'+y(i.value)+'"',1)]),n("div",R_,[n("div",U_,[(d(),p(he,null,Re(c,B=>n("button",{key:B.id,class:"filter-tag"},y(B.label),1)),64))]),m(Ls,{modelValue:f.value,"onUpdate:modelValue":G[0]||(G[0]=B=>f.value=B),options:u},null,8,["modelValue"])]),l.value?(d(),p("div",D_,[...G[1]||(G[1]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):a.value?(d(),p("div",M_,[n("p",null,y(a.value),1),n("button",{onClick:W,class:"btn btn-primary"},"重试")])):N.value.length===0?(d(),p("div",P_,[m(_,{icon:"fluent-color:apps-24",class:"empty-icon"}),G[2]||(G[2]=n("p",null,"没有找到应用",-1)),G[3]||(G[3]=n("p",{class:"empty-hint"},"尝试调整搜索条件或筛选器",-1))])):(d(),p("div",L_,[(d(!0),p(he,null,Re(N.value,B=>(d(),Fe(oo,{key:B.bundleId,app:B,mode:"search","show-description":!0,onUpdated:te},null,8,["app"]))),128))]))],64)):(d(),p(he,{key:1},[n("div",O_,[g.value.length>0?(d(),Fe($0,{key:0,items:g.value,"auto-play":!0,"auto-play-interval":5e3,onAction:$,onSlideChange:U},null,8,["items"])):E("",!0),m(K0,{"entertainment-data":h.value,"image-viewer-data":q.value,"featured-app-data":I.value,onAppClick:F},null,8,["entertainment-data","image-viewer-data","featured-app-data"])]),v.value.length>0?(d(),Fe(l_,{key:0,apps:v.value,onAppClick:O,onAction:R},null,8,["apps"])):E("",!0),v.value.length>0?(d(),Fe(C_,{key:1,"featured-apps":v.value.slice(0,2),onAppClick:O,onAction:R,onCategoryClick:se},null,8,["featured-apps"])):E("",!0),n("div",N_,[n("div",F_,[n("h2",B_,y(z()),1),n("p",V_,y(Z()),1)]),l.value?(d(),p("div",j_,[...G[4]||(G[4]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):a.value?(d(),p("div",q_,[n("p",null,y(a.value),1),n("button",{onClick:W,class:"btn btn-primary"},"重试")])):N.value.length===0?(d(),p("div",H_,[m(_,{icon:"fluent-color:apps-24",class:"empty-icon"}),G[5]||(G[5]=n("p",null,"没有找到应用",-1)),G[6]||(G[6]=n("p",{class:"empty-hint"},"尝试调整筛选器",-1))])):(d(),p("div",z_,[(d(!0),p(he,null,Re(N.value,B=>(d(),Fe(oo,{key:B.bundleId,app:B,mode:"list",onUpdated:te},null,8,["app"]))),128))])),n("div",W_,[n("div",K_,[n("span",G_,[G[7]||(G[7]=n("span",{class:"stat-label"},"总计:",-1)),n("span",Q_,y(o.value.length),1)]),n("span",J_,[G[8]||(G[8]=n("span",{class:"stat-label"},"显示:",-1)),n("span",Z_,y(N.value.length),1)])])])])],64))]))}}),Y_=Ge(X_,[["__scopeId","data-v-920f0a59"]]),e2={class:"dialog-header"},t2={class:"dialog-tabs"},s2={class:"dialog-content"},n2={class:"tab-content"},o2={class:"upload-card"},l2={class:"card-header"},a2={class:"card-badge"},i2={class:"card-body"},r2={key:1,class:"screenshots-grid"},c2=["src","alt"],u2=["onClick"],d2={key:0,class:"thumbnail-badge"},f2={class:"thumbnail-number"},p2={class:"tab-content"},v2={class:"form-card"},m2={class:"card-header"},h2={class:"card-body"},g2={class:"app-header-section"},y2={class:"icon-section"},b2={class:"app-icon-display"},_2=["src","alt"],w2={class:"icon-upload-control"},k2={key:0,class:"icon-status"},$2={class:"name-section"},C2={class:"form-group"},I2={class:"form-group"},S2={class:"form-group"},x2={class:"form-group"},T2={class:"form-group"},A2={class:"checkbox-label"},E2={class:"tab-content"},R2={class:"form-card"},U2={class:"card-header"},D2={class:"card-body"},M2={class:"array-field"},P2={class:"field-header"},L2={key:0,class:"empty-state"},O2={key:1,class:"array-items"},N2=["onUpdate:modelValue","placeholder"],F2=["onClick"],B2={class:"array-field"},V2={class:"field-header"},j2={key:0,class:"empty-state"},q2={key:1,class:"array-items"},H2=["onUpdate:modelValue"],z2=["onClick"],W2={class:"array-field"},K2={class:"field-header"},G2={key:0,class:"empty-state"},Q2={key:1,class:"array-items"},J2=["onUpdate:modelValue"],Z2=["onClick"],X2={class:"array-field"},Y2={class:"field-header"},ew={key:0,class:"empty-state"},tw={key:1,class:"array-items"},sw=["onUpdate:modelValue"],nw=["onClick"],ow={class:"array-field"},lw={class:"field-header"},aw={key:0,class:"empty-state"},iw={key:1,class:"array-items"},rw=["onUpdate:modelValue"],cw=["onClick"],uw={class:"array-field"},dw={class:"field-header"},fw={key:0,class:"empty-state"},pw={key:1,class:"array-items"},vw=["onUpdate:modelValue"],mw=["onClick"],hw={key:0,class:"upload-progress-bar"},gw={class:"progress-info"},yw={class:"progress-text"},bw={class:"progress-percent"},_w={class:"progress-bar"},ww={key:1,class:"error-banner"},kw={class:"dialog-footer"},$w=["disabled"],Cw=["disabled"],Iw=ze({__name:"AppInfoUploadDialog",props:{visible:{type:Boolean},app:{}},emits:["close","success"],setup(e,{emit:t}){const s=e,o=t,l=k("images"),a=k(null),i=k(null),r=k({bundleId:"",appName:"",appVersion:"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1}),c=k(null),f=k([]),u=k(!1),v=k(0),g=k(""),h=k(""),b=fe(()=>!u.value&&r.value.appName.trim()!=="");fe(()=>c.value?c.value.thumbnailUrl||c.value.preview:"");const w=fe(()=>c.value&&c.value.preview?c.value.preview:s.app?oe.getAppIconUrl(s.app.bundleId):"");st(()=>s.app,F=>{F&&(r.value.bundleId=F.bundleId,r.value.appName=F.name,r.value.appVersion=F.version)},{immediate:!0}),st(()=>s.visible,F=>{F&&(l.value="images")});const C=()=>{var F;(F=a.value)==null||F.click()},I=F=>{var M;const U=(M=F.target.files)==null?void 0:M[0];if(!U)return;const se=new FileReader;se.onload=G=>{var V;const B=(V=G.target)==null?void 0:V.result;c.value={file:U,preview:B}},se.readAsDataURL(U)},q=()=>{var F;(F=i.value)==null||F.click()},N=F=>{const U=F.target.files;if(!U)return;const se=5-f.value.length;Array.from(U).slice(0,se).forEach(G=>{const B=new FileReader;B.onload=V=>{var X;f.value.push({file:G,preview:(X=V.target)==null?void 0:X.result})},B.readAsDataURL(G)}),i.value&&(i.value.value="")},z=F=>{f.value.splice(F,1)},Z=F=>{const $=r.value[F];Array.isArray($)&&$.push("")},W=(F,$)=>{const U=r.value[F];Array.isArray(U)&&U.splice($,1)},te=async()=>{var F,$;if(b.value){h.value="",u.value=!0,v.value=0,g.value="准备上传...";try{let U="",se=null;if(c.value&&c.value.file)se=c.value.file;else if(s.app){g.value="正在获取应用图标...",v.value=5;try{const pe=oe.getAppIconUrl(s.app.bundleId),Ne=await fetch(pe);if(!Ne.ok)throw new Error("获取应用图标失败");const Pe=await Ne.blob();se=new File([Pe],`${s.app.bundleId}.png`,{type:Pe.type||"image/png"})}catch(pe){throw new Error(`获取应用图标失败: ${pe.message||"未知错误"}`)}}else throw new Error("请先选择应用图标或确保当前应用存在");if(!se)throw new Error("无法获取图标文件");g.value="正在上传图标...",v.value=10;const M=await oe.uploadImage("icon",se);if(!M.success||!((F=M.data)!=null&&F.fileId))throw new Error(M.message||"上传图标失败");U=M.data.fileId,v.value=30,g.value="正在上传截图...";const G=[];for(let pe=0;pe<f.value.length;pe++){const Ne=f.value[pe];v.value=30+pe/f.value.length*30,g.value=`正在上传截图 ${pe+1}/${f.value.length}...`;const Pe=await oe.uploadImage("appImage",Ne.file);Pe.success&&(($=Pe.data)!=null&&$.fileId)?G.push(Pe.data.fileId):console.warn(`截图 ${pe+1} 上传失败:`,Pe.message)}v.value=60,g.value="正在提交应用信息...";const B=new Date().toISOString(),V={bundleId:r.value.bundleId,appName:r.value.appName.trim(),appVersion:r.value.appVersion,iconId:U,imageId:G,description:r.value.description.trim(),permissions:r.value.permissions.filter(pe=>pe.trim()!==""),releaseDate:B,updateDate:B,compatibility:r.value.compatibility.filter(pe=>pe.trim()!==""),architecture:r.value.architecture.filter(pe=>pe.trim()!==""),language:r.value.language.filter(pe=>pe.trim()!==""),category:r.value.category.filter(pe=>pe.trim()!==""),developer:r.value.developer.filter(pe=>pe.trim()!==""),isDMCAed:r.value.isDMCAed};v.value=80;const X=await oe.uploadAppInfo(V);if(!X.success)throw new Error(X.message||"上传应用信息失败");v.value=100,g.value="上传成功!",setTimeout(()=>{o("success"),O()},500)}catch(U){h.value=U.message||"上传失败,请重试",console.error("上传失败:",U)}finally{u.value=!1}}},O=()=>{var F,$,U;u.value||(o("close"),r.value={bundleId:((F=s.app)==null?void 0:F.bundleId)||"",appName:(($=s.app)==null?void 0:$.name)||"",appVersion:((U=s.app)==null?void 0:U.version)||"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1},c.value=null,f.value=[],h.value="",v.value=0,g.value="",l.value="images")},R=F=>{F.target===F.currentTarget&&!u.value&&O()};return(F,$)=>e.visible?(d(),p("div",{key:0,class:"dialog-overlay",onClick:R},[n("div",{class:"dialog-container",onClick:$[14]||($[14]=je(()=>{},["stop"]))},[n("div",e2,[$[15]||($[15]=n("h2",{class:"dialog-title"},"上传应用信息",-1)),n("button",{class:"dialog-close",onClick:O},[m(_,{icon:"mdi:close"})])]),n("div",t2,[n("button",{class:$e(["tab-button",{active:l.value==="images"}]),onClick:$[0]||($[0]=U=>l.value="images")},[m(_,{icon:"mdi:image",class:"tab-icon"}),$[16]||($[16]=be(" 图片 ",-1))],2),n("button",{class:$e(["tab-button",{active:l.value==="basic"}]),onClick:$[1]||($[1]=U=>l.value="basic")},[m(_,{icon:"mdi:information",class:"tab-icon"}),$[17]||($[17]=be(" 基本信息 ",-1))],2),n("button",{class:$e(["tab-button",{active:l.value==="details"}]),onClick:$[2]||($[2]=U=>l.value="details")},[m(_,{icon:"mdi:format-list-bulleted",class:"tab-icon"}),$[18]||($[18]=be(" 详细信息 ",-1))],2)]),n("div",s2,[Be(n("div",n2,[n("div",o2,[n("div",l2,[m(_,{icon:"mdi:image-multiple",class:"card-icon"}),$[19]||($[19]=n("h3",null,"应用截图",-1)),n("span",a2,y(f.value.length)+"/5",1)]),n("div",i2,[n("input",{ref_key:"screenshotInput",ref:i,type:"file",accept:"image/*",multiple:"",onChange:N,class:"file-input",style:{display:"none"}},null,544),f.value.length===0?(d(),p("div",{key:0,class:"upload-area",onClick:q},[m(_,{icon:"mdi:image-multiple-outline",class:"upload-icon"}),$[20]||($[20]=n("p",{class:"upload-text"},"点击选择截图",-1)),$[21]||($[21]=n("p",{class:"upload-hint"},"最多可选择5张图片",-1))])):(d(),p("div",r2,[(d(!0),p(he,null,Re(f.value,(U,se)=>(d(),p("div",{key:se,class:"thumbnail-box"},[n("img",{src:U.thumbnailUrl||U.preview,alt:`截图${se+1}`},null,8,c2),n("button",{onClick:M=>z(se),class:"thumbnail-remove"},[m(_,{icon:"mdi:close"})],8,u2),U.fileId?(d(),p("div",d2,[m(_,{icon:"mdi:check-circle"})])):E("",!0),n("div",f2,y(se+1),1)]))),128)),f.value.length<5?(d(),p("div",{key:0,class:"thumbnail-box add-more",onClick:q},[m(_,{icon:"mdi:plus",class:"add-icon"}),$[22]||($[22]=n("p",null,"添加更多",-1))])):E("",!0)]))])])],512),[[es,l.value==="images"]]),Be(n("div",p2,[n("div",v2,[n("div",m2,[m(_,{icon:"mdi:information",class:"card-icon"}),$[23]||($[23]=n("h3",null,"基本信息",-1))]),n("div",h2,[n("div",g2,[n("div",y2,[n("div",b2,[n("img",{src:w.value,alt:r.value.appName||"应用图标"},null,8,_2)]),n("div",w2,[n("input",{ref_key:"iconInput",ref:a,type:"file",accept:"image/*",onChange:I,class:"file-input",style:{display:"none"}},null,544),n("button",{onClick:C,class:"btn-icon-upload"},[m(_,{icon:"mdi:image-edit",class:"btn-icon"}),be(" "+y(c.value?"更换图标":"上传图标"),1)]),c.value?(d(),p("div",k2,[m(_,{icon:"mdi:check-circle",class:"status-icon success"}),$[24]||($[24]=n("span",null,"已选择图标",-1))])):E("",!0)])]),n("div",$2,[n("div",C2,[$[25]||($[25]=n("label",{class:"form-label"},[be(" 应用名称 "),n("span",{class:"required"},"*")],-1)),Be(n("input",{"onUpdate:modelValue":$[3]||($[3]=U=>r.value.appName=U),type:"text",placeholder:"请输入应用名称",required:"",class:"form-input"},null,512),[[Je,r.value.appName]])]),n("div",I2,[$[26]||($[26]=n("label",{class:"form-label"},"版本号",-1)),Be(n("input",{"onUpdate:modelValue":$[4]||($[4]=U=>r.value.appVersion=U),type:"text",readonly:"",class:"form-input readonly-input"},null,512),[[Je,r.value.appVersion]])])])]),n("div",S2,[$[27]||($[27]=n("label",{class:"form-label"},"Bundle ID",-1)),Be(n("input",{"onUpdate:modelValue":$[5]||($[5]=U=>r.value.bundleId=U),type:"text",readonly:"",class:"form-input readonly-input"},null,512),[[Je,r.value.bundleId]])]),n("div",x2,[$[28]||($[28]=n("label",{class:"form-label"},"应用描述",-1)),Be(n("textarea",{"onUpdate:modelValue":$[6]||($[6]=U=>r.value.description=U),placeholder:"请输入应用描述...",rows:"5",class:"form-textarea"},null,512),[[Je,r.value.description]])]),n("div",T2,[n("label",A2,[Be(n("input",{"onUpdate:modelValue":$[7]||($[7]=U=>r.value.isDMCAed=U),type:"checkbox"},null,512),[[Jc,r.value.isDMCAed]]),$[29]||($[29]=n("span",null,"是否被DMCA",-1))])])])])],512),[[es,l.value==="basic"]]),Be(n("div",E2,[n("div",R2,[n("div",U2,[m(_,{icon:"mdi:format-list-bulleted",class:"card-icon"}),$[30]||($[30]=n("h3",null,"详细信息",-1))]),n("div",D2,[n("div",M2,[n("div",P2,[$[32]||($[32]=n("label",null,"权限列表",-1)),n("button",{onClick:$[8]||($[8]=U=>Z("permissions")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[31]||($[31]=be(" 添加 ",-1))])]),r.value.permissions.length===0?(d(),p("div",L2,[m(_,{icon:"mdi:shield-off",class:"empty-icon"}),$[33]||($[33]=n("p",null,"暂无权限信息",-1))])):(d(),p("div",O2,[(d(!0),p(he,null,Re(r.value.permissions,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.permissions[se]=M,type:"text",placeholder:`权限 ${se+1}`},null,8,N2),[[Je,r.value.permissions[se]]]),n("button",{onClick:M=>W("permissions",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,F2)]))),128))]))]),n("div",B2,[n("div",V2,[$[35]||($[35]=n("label",null,"系统兼容性",-1)),n("button",{onClick:$[9]||($[9]=U=>Z("compatibility")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[34]||($[34]=be(" 添加 ",-1))])]),r.value.compatibility.length===0?(d(),p("div",j2,[m(_,{icon:"mdi:desktop-classic",class:"empty-icon"}),$[36]||($[36]=n("p",null,"暂无兼容性信息",-1))])):(d(),p("div",q2,[(d(!0),p(he,null,Re(r.value.compatibility,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.compatibility[se]=M,type:"text",placeholder:"例如: macOS 10.15"},null,8,H2),[[Je,r.value.compatibility[se]]]),n("button",{onClick:M=>W("compatibility",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,z2)]))),128))]))]),n("div",W2,[n("div",K2,[$[38]||($[38]=n("label",null,"系统架构",-1)),n("button",{onClick:$[10]||($[10]=U=>Z("architecture")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[37]||($[37]=be(" 添加 ",-1))])]),r.value.architecture.length===0?(d(),p("div",G2,[m(_,{icon:"mdi:cpu-64-bit",class:"empty-icon"}),$[39]||($[39]=n("p",null,"暂无架构信息",-1))])):(d(),p("div",Q2,[(d(!0),p(he,null,Re(r.value.architecture,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.architecture[se]=M,type:"text",placeholder:"例如: x86_64, arm64"},null,8,J2),[[Je,r.value.architecture[se]]]),n("button",{onClick:M=>W("architecture",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,Z2)]))),128))]))]),n("div",X2,[n("div",Y2,[$[41]||($[41]=n("label",null,"支持语言",-1)),n("button",{onClick:$[11]||($[11]=U=>Z("language")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[40]||($[40]=be(" 添加 ",-1))])]),r.value.language.length===0?(d(),p("div",ew,[m(_,{icon:"mdi:translate",class:"empty-icon"}),$[42]||($[42]=n("p",null,"暂无语言信息",-1))])):(d(),p("div",tw,[(d(!0),p(he,null,Re(r.value.language,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.language[se]=M,type:"text",placeholder:"例如: English, Chinese"},null,8,sw),[[Je,r.value.language[se]]]),n("button",{onClick:M=>W("language",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,nw)]))),128))]))]),n("div",ow,[n("div",lw,[$[44]||($[44]=n("label",null,"应用分类",-1)),n("button",{onClick:$[12]||($[12]=U=>Z("category")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[43]||($[43]=be(" 添加 ",-1))])]),r.value.category.length===0?(d(),p("div",aw,[m(_,{icon:"mdi:folder",class:"empty-icon"}),$[45]||($[45]=n("p",null,"暂无分类信息",-1))])):(d(),p("div",iw,[(d(!0),p(he,null,Re(r.value.category,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.category[se]=M,type:"text",placeholder:"例如: Productivity, Games"},null,8,rw),[[Je,r.value.category[se]]]),n("button",{onClick:M=>W("category",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,cw)]))),128))]))]),n("div",uw,[n("div",dw,[$[47]||($[47]=n("label",null,"开发者",-1)),n("button",{onClick:$[13]||($[13]=U=>Z("developer")),class:"btn-icon-text"},[m(_,{icon:"mdi:plus"}),$[46]||($[46]=be(" 添加 ",-1))])]),r.value.developer.length===0?(d(),p("div",fw,[m(_,{icon:"mdi:account",class:"empty-icon"}),$[48]||($[48]=n("p",null,"暂无开发者信息",-1))])):(d(),p("div",pw,[(d(!0),p(he,null,Re(r.value.developer,(U,se)=>(d(),p("div",{key:se,class:"array-item-row"},[Be(n("input",{"onUpdate:modelValue":M=>r.value.developer[se]=M,type:"text",placeholder:"例如: Apple Inc."},null,8,vw),[[Je,r.value.developer[se]]]),n("button",{onClick:M=>W("developer",se),class:"btn-icon-danger"},[m(_,{icon:"mdi:delete"})],8,mw)]))),128))]))])])])],512),[[es,l.value==="details"]]),u.value?(d(),p("div",hw,[n("div",gw,[m(_,{icon:"mdi:cloud-upload",class:"progress-icon"}),n("span",yw,y(g.value),1),n("span",bw,y(v.value)+"%",1)]),n("div",_w,[n("div",{class:"progress-fill",style:$t({width:`${v.value}%`})},null,4)])])):E("",!0),h.value?(d(),p("div",ww,[m(_,{icon:"mdi:alert-circle",class:"error-icon"}),n("span",null,y(h.value),1)])):E("",!0)]),n("div",kw,[n("button",{onClick:O,class:"btn btn-secondary",disabled:u.value}," 取消 ",8,$w),n("button",{onClick:te,class:"btn btn-primary",disabled:u.value||!b.value},[u.value?(d(),Fe(_,{key:0,icon:"mdi:loading",class:"btn-icon spinning"})):E("",!0),be(" "+y(u.value?"上传中...":"确认上传"),1)],8,Cw)])])])):E("",!0)}}),Sw=Ge(Iw,[["__scopeId","data-v-6f782ff2"]]),xw={class:"app-recommendations"},Tw={class:"recommendations-header"},Aw={key:0,class:"loading"},Ew={key:1,class:"error"},Rw={key:2,class:"empty"},Uw={key:3,class:"recommendations-list"},Dw=["onClick"],Mw={class:"app-icon-small"},Pw=["src","alt"],Lw={key:1,class:"icon-placeholder-small"},Ow={class:"app-info-small"},Nw={class:"app-name-small"},Fw=["onClick"],Bw=ze({__name:"AppRecommendations",props:{currentBundleId:{}},setup(e){const t=e,s=Wt(),o=k([]),l=k(!0),a=k(""),i=async()=>{l.value=!0,a.value="";try{const h=[...(await oe.getApps()).filter(b=>b.bundleId!==t.currentBundleId)].sort(()=>Math.random()-.5);o.value=h.slice(0,4)}catch(v){console.error("加载推荐应用失败:",v),a.value="加载推荐应用失败"}finally{l.value=!1}},r=v=>oe.getAppIconUrl(v),c=v=>{s.push(`/app/${v.bundleId}`).then(()=>{window.location.reload()})},f=v=>{s.push(`/app/${v.bundleId}`).then(()=>{window.location.reload()})},u=v=>{const g=v.target;g.style.display="none";const h=g.nextElementSibling;h&&(h.style.display="flex")};return rt(()=>{i()}),(v,g)=>(d(),p("div",xw,[n("div",Tw,[g[0]||(g[0]=n("h2",null,"发现更多",-1)),m(_,{icon:"fluent-color:arrow-right-24"})]),l.value?(d(),p("div",Aw,[...g[1]||(g[1]=[n("div",{class:"spinner"},null,-1)])])):a.value?(d(),p("div",Ew,[n("p",null,y(a.value),1)])):o.value.length===0?(d(),p("div",Rw,[...g[2]||(g[2]=[n("p",null,"暂无推荐应用",-1)])])):(d(),p("div",Uw,[(d(!0),p(he,null,Re(o.value,h=>(d(),p("div",{key:h.bundleId,class:"recommendation-item",onClick:b=>c(h)},[n("div",Mw,[h.hasIcon?(d(),p("img",{key:0,src:r(h.bundleId),alt:h.name,onError:u},null,40,Pw)):(d(),p("div",Lw,y(h.name.charAt(0).toUpperCase()),1))]),n("div",Ow,[n("h3",Nw,y(h.name),1),n("button",{class:"download-btn",onClick:je(b=>f(h),["stop"])}," 免费下载 ",8,Fw)])],8,Dw))),128))]))]))}}),Vw=Ge(Bw,[["__scopeId","data-v-c58086a4"]]),jw=["src"],qw=ze({__name:"ImagePreviewModal",props:{visible:{type:Boolean},imageUrl:{}},emits:["close"],setup(e,{emit:t}){const s=t,o=()=>{s("close")};return(l,a)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"preview-fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"image-preview-modal",onClick:o},[n("div",{class:"preview-content",onClick:a[0]||(a[0]=je(()=>{},["stop"]))},[n("img",{src:e.imageUrl,alt:"预览"},null,8,jw),n("button",{class:"close-preview-btn",onClick:o,title:"关闭"},[m(_,{icon:"mdi:close"})])])])):E("",!0)]),_:1})]))}}),yl=Ge(qw,[["__scopeId","data-v-0b0a4a60"]]);function Xu(){const e=k(!1),t=k({title:"",type:"info",confirmText:"确定"});let s=null;const o=a=>(t.value={...t.value,...a},e.value=!0,new Promise(i=>{s=i})),l=()=>{e.value=!1,s&&(s(),s=null)};return{visible:fe(()=>e.value),config:fe(()=>t.value),show:o,handleConfirm:l}}const Hw={key:0,class:"dialog-icon"},zw={class:"dialog-title"},Ww={key:1,class:"dialog-message"},Kw={class:"dialog-actions"},Gw=ze({__name:"AlertDialog",props:{visible:{type:Boolean},title:{},message:{},type:{default:"info"},confirmText:{default:"确定"},showIcon:{type:Boolean,default:!0}},emits:["confirm"],setup(e,{emit:t}){const s=e,o=t,l=fe(()=>({info:"fluent-color:info-24",success:"fluent-color:checkmark-circle-24",warning:"fluent-color:warning-24",error:"fluent-color:error-circle-24"})[s.type]),a=fe(()=>({info:"btn-primary",success:"btn-success",warning:"btn-warning",error:"btn-error"})[s.type]),i=()=>{o("confirm")};return(r,c)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"alert-dialog-overlay",onClick:je(i,["self"])},[n("div",{class:$e(["alert-dialog",`type-${e.type}`])},[e.showIcon?(d(),p("div",Hw,[m(_,{icon:l.value},null,8,["icon"])])):E("",!0),n("h3",zw,y(e.title),1),e.message?(d(),p("p",Ww,y(e.message),1)):E("",!0),n("div",Kw,[n("button",{class:$e(["btn",a.value]),onClick:i},y(e.confirmText),3)])],2)])):E("",!0)]),_:1})]))}}),Yu=Ge(Gw,[["__scopeId","data-v-df63f188"]]),Qw={class:"comments-section"},Jw={class:"comments-header"},Zw={class:"header-actions"},Xw={key:0,class:"comments-count"},Yw={key:3,class:"request-status"},ek={class:"comment-form-container"},tk={class:"comment-form"},sk={class:"form-avatar"},nk={class:"form-content"},ok={class:"form-actions"},lk={class:"image-upload-area"},ak=["disabled"],ik={key:0,class:"image-count"},rk=["disabled"],ck={key:0,class:"image-preview-list"},uk=["src","alt"],dk=["onClick"],fk={key:0,class:"image-error"},pk={key:0,class:"comments-list"},vk={class:"comment-avatar"},mk={class:"comment-content-wrapper"},hk={class:"comment-header"},gk={class:"commenter-name"},yk={class:"comment-date"},bk={class:"comment-text"},_k={key:0,class:"comment-images"},wk=["onClick"],kk=["src","alt"],$k={class:"comment-actions"},Ck=["onClick"],Ik=["onClick"],Sk=["onClick"],xk={key:0,class:"reply-count"},Tk={key:1,class:"reply-form"},Ak={class:"reply-actions"},Ek=["onClick","disabled"],Rk={key:2,class:"replies-list"},Uk={class:"reply-avatar"},Dk={class:"reply-content-wrapper"},Mk={class:"reply-header"},Pk={class:"replyer-name"},Lk={key:0,class:"reply-to-name"},Ok={class:"reply-date"},Nk={class:"reply-text"},Fk={class:"reply-actions"},Bk=["onClick"],Vk=["onClick"],jk={key:1,class:"no-comments"},qk=ze({__name:"CommentsSection",props:{bundleId:{},comments:{}},emits:["submitComment","likeComment","dislikeComment","likeReply","dislikeReply","submitReply"],setup(e,{emit:t}){const s=e,o=t,{isLoggedIn:l,user:a}=Ss(),i=Wt(),{error:r}=Ft(),c=Xu(),f=fe(()=>{var de,Te;return((de=a.value)==null?void 0:de.nickName)||((Te=a.value)==null?void 0:Te.username)||"游客"}),u=fe(()=>l.value),v=k(!1),g=k(!1),h=k(""),b=async()=>{if(!s.bundleId){g.value=!1;return}try{const de=await oe.checkUserRequestStatus(s.bundleId);g.value=de.hasRequest}catch(de){console.error("检查申请状态失败:",de),g.value=!1}},w=async()=>{if(!s.bundleId){v.value=!1;return}try{if(v.value=await oe.checkForumEnabled(s.bundleId),v.value){const de=await oe.getForumPermission(s.bundleId);h.value=(de==null?void 0:de.appName)||s.bundleId,g.value=!1}else{try{const de=await oe.getForumPermission(s.bundleId);h.value=(de==null?void 0:de.appName)||s.bundleId}catch{try{const Te=await oe.getApp(s.bundleId);h.value=Te.name}catch{h.value=s.bundleId}}await b()}}catch(de){console.error("检查讨论区权限失败:",de),v.value=!1,await b()}},C=()=>{s.bundleId&&i.push(`/discussion/${s.bundleId}`)},I=async()=>{var de,Te;if(!(!s.bundleId||g.value))try{let Me=h.value||s.bundleId;if(!h.value)try{const ie=await oe.getApp(s.bundleId);Me=ie.name,h.value=ie.name}catch{}const K=await oe.requestForumOpen(s.bundleId,Me);K.success?(g.value=!0,await c.show({title:"申请成功",message:"讨论区开通申请已提交,等待管理员审核",type:"success"})):await c.show({title:"申请失败",message:K.message||"申请失败,请稍后重试",type:"error"})}catch(Me){console.error("申请开通失败:",Me),await c.show({title:"申请失败",message:((Te=(de=Me.response)==null?void 0:de.data)==null?void 0:Te.message)||Me.message||"申请失败,请稍后重试",type:"error"})}};st(()=>s.bundleId,()=>{w()},{immediate:!0}),rt(()=>{w()});const q=fe(()=>s.comments||[]),N=k(""),z=k([]),Z=k(null),W=k(null),te=k(""),O=k(null),R=fe(()=>N.value.trim().length>0||z.value.length>0),F=()=>{var de;if(!u.value){r("请先登录",2e3);return}(de=Z.value)==null||de.click()},$=de=>{const Te=de.target,Me=Te.files;if(!Me)return;const K=10*1024*1024,ie=5;Array.from(Me).forEach(re=>{if(z.value.length>=ie)return;if(!re.type.startsWith("image/")){z.value.push({file:re,preview:"",error:"只能上传图片文件"});return}if(re.size>K){z.value.push({file:re,preview:"",error:"图片大小不能超过10MB"});return}const Ce=new FileReader;Ce.onload=Le=>{var D;const T=z.value.findIndex(A=>A.file===re);T!==-1&&(z.value[T].preview=(D=Le.target)==null?void 0:D.result)},Ce.readAsDataURL(re),z.value.push({file:re,preview:""})}),Te&&(Te.value="")},U=de=>{z.value.splice(de,1)},se=async()=>{if(!u.value){r("请先登录",2e3);return}if(!R.value)return;const de=z.value.filter(Te=>!Te.error).map(Te=>Te.file);o("submitComment",N.value.trim(),de),N.value="",z.value=[]},M=de=>{if(!u.value){r("请先登录",2e3);return}o("likeComment",de)},G=de=>{if(!u.value){r("请先登录",2e3);return}o("dislikeComment",de)},B=(de,Te)=>{if(!u.value){r("请先登录",2e3);return}o("likeReply",de,Te)},V=(de,Te)=>{if(!u.value){r("请先登录",2e3);return}o("dislikeReply",de,Te)},X=de=>{if(!u.value){r("请先登录",2e3);return}W.value===de?(W.value=null,te.value=""):W.value=de},pe=()=>{W.value=null,te.value=""},Ne=de=>{te.value.trim()&&(o("submitReply",de,te.value.trim()),te.value="",W.value=null)},Pe=de=>{O.value=de},Ee=()=>{O.value=null},ye=de=>{try{const Te=new Date(de),K=new Date().getTime()-Te.getTime(),ie=Math.floor(K/(1e3*60)),re=Math.floor(K/(1e3*60*60)),Ce=Math.floor(K/(1e3*60*60*24));return ie<1?"刚刚":ie<60?`${ie}分钟前`:re<24?`${re}小时前`:Ce<30?`${Ce}天前`:Ce<365?`${Math.floor(Ce/30)}个月前`:`${Math.floor(Ce/365)}年前`}catch{return de}};return(de,Te)=>{var Me;return d(),p(he,null,[n("div",Qw,[n("div",Jw,[Te[5]||(Te[5]=n("h2",{class:"section-title"},"大家都在说",-1)),n("div",Zw,[q.value.length>0?(d(),p("span",Xw,y(q.value.length)+"条评论 ",1)):E("",!0),v.value?(d(),p("button",{key:1,class:"goto-forum-btn",onClick:C},[m(_,{icon:"mdi:forum-outline",class:"btn-icon"}),Te[2]||(Te[2]=be(" 跳转到讨论区 ",-1))])):g.value?g.value?(d(),p("span",Yw,[m(_,{icon:"mdi:check-circle-outline",class:"status-icon"}),Te[4]||(Te[4]=be(" 已申请开通 ",-1))])):E("",!0):(d(),p("button",{key:2,class:"request-forum-btn",onClick:I},[m(_,{icon:"mdi:forum-plus-outline",class:"btn-icon"}),Te[3]||(Te[3]=be(" 申请开通讨论区 ",-1))]))])]),n("div",ek,[n("div",tk,[n("div",sk,[m(Tt,{"avatar-id":(Me=Y(a))==null?void 0:Me.avatar,"user-name":f.value,size:"medium"},null,8,["avatar-id","user-name"])]),n("div",nk,[Be(n("textarea",{"onUpdate:modelValue":Te[0]||(Te[0]=K=>N.value=K),class:"comment-textarea",placeholder:"写下你的想法...",rows:"3",maxlength:"1000"},null,512),[[Je,N.value]]),n("div",ok,[n("div",lk,[n("input",{ref_key:"imageInput",ref:Z,type:"file",accept:"image/*",multiple:"",onChange:$,style:{display:"none"}},null,544),n("button",{class:"upload-image-btn",onClick:F,disabled:z.value.length>=5},[m(_,{icon:"fluent-color:image-24",class:"btn-icon"}),Te[6]||(Te[6]=be(" 添加图片 ",-1))],8,ak),z.value.length>0?(d(),p("span",ik," 已选择 "+y(z.value.length)+"/5 ",1)):E("",!0)]),n("button",{class:"submit-comment-btn",onClick:se,disabled:!R.value},[m(_,{icon:"fluent-color:chat-24",class:"btn-icon"}),Te[7]||(Te[7]=be(" 发表评论 ",-1))],8,rk)]),z.value.length>0?(d(),p("div",ck,[(d(!0),p(he,null,Re(z.value,(K,ie)=>(d(),p("div",{key:ie,class:"image-preview-item"},[n("img",{src:K.preview,alt:`预览图 ${ie+1}`},null,8,uk),n("button",{class:"remove-image-btn",onClick:re=>U(ie)},[m(_,{icon:"mdi:close"})],8,dk),K.error?(d(),p("div",fk,y(K.error),1)):E("",!0)]))),128))])):E("",!0)])])]),q.value.length>0?(d(),p("div",pk,[(d(!0),p(he,null,Re(q.value,K=>(d(),p("div",{key:K.id,class:"comment-item"},[n("div",vk,[m(Tt,{"avatar-id":K.userAvatar,"user-name":K.userName,size:"medium"},null,8,["avatar-id","user-name"])]),n("div",mk,[n("div",hk,[n("span",gk,y(K.userName),1),n("span",yk,y(ye(K.date)),1)]),n("p",bk,y(K.content),1),K.images&&K.images.length>0?(d(),p("div",_k,[(d(!0),p(he,null,Re(K.images,(ie,re)=>(d(),p("div",{key:re,class:"comment-image-item",onClick:Ce=>Pe(ie)},[n("img",{src:ie,alt:`评论图片 ${re+1}`},null,8,kk)],8,wk))),128))])):E("",!0),n("div",$k,[n("button",{class:$e(["action-btn",{active:K.userLikeStatus==="liked"}]),onClick:ie=>M(K.id)},[m(_,{icon:K.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(K.likeCount),1)],10,Ck),n("button",{class:$e(["action-btn",{active:K.userLikeStatus==="disliked"}]),onClick:ie=>G(K.id)},[m(_,{icon:K.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(K.dislikeCount),1)],10,Ik),n("button",{class:"action-btn reply-btn",onClick:ie=>X(K.id)},[m(_,{icon:"mdi:reply-outline",class:"action-icon"}),Te[8]||(Te[8]=n("span",null,"回复",-1)),K.replyCount?(d(),p("span",xk," ("+y(K.replyCount)+") ",1)):E("",!0)],8,Sk)]),W.value===K.id?(d(),p("div",Tk,[Be(n("textarea",{"onUpdate:modelValue":Te[1]||(Te[1]=ie=>te.value=ie),class:"reply-textarea",placeholder:"写下你的回复...",rows:"2",maxlength:"500"},null,512),[[Je,te.value]]),n("div",Ak,[n("button",{class:"cancel-reply-btn",onClick:pe}," 取消 "),n("button",{class:"submit-reply-btn",onClick:ie=>Ne(K.id),disabled:!te.value.trim()}," 发表回复 ",8,Ek)])])):E("",!0),K.replies&&K.replies.length>0?(d(),p("div",Rk,[(d(!0),p(he,null,Re(K.replies,ie=>(d(),p("div",{key:ie.id,class:"reply-item"},[n("div",Uk,[m(Tt,{"avatar-id":ie.userAvatar,"user-name":ie.userName,size:"small"},null,8,["avatar-id","user-name"])]),n("div",Dk,[n("div",Mk,[n("span",Pk,y(ie.userName),1),ie.replyToUserName?(d(),p("span",Lk," 回复 @"+y(ie.replyToUserName),1)):E("",!0),n("span",Ok,y(ye(ie.date)),1)]),n("p",Nk,y(ie.content),1),n("div",Fk,[n("button",{class:$e(["action-btn small",{active:ie.userLikeStatus==="liked"}]),onClick:re=>B(K.id,ie.id)},[m(_,{icon:ie.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(ie.likeCount),1)],10,Bk),n("button",{class:$e(["action-btn small",{active:ie.userLikeStatus==="disliked"}]),onClick:re=>V(K.id,ie.id)},[m(_,{icon:ie.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(ie.dislikeCount),1)],10,Vk)])])]))),128))])):E("",!0)])]))),128))])):(d(),p("div",jk,[m(_,{icon:"mdi:comment-multiple-outline",class:"no-comments-icon"}),Te[9]||(Te[9]=n("p",null,"还没有评论,快来发表第一条吧!",-1))])),m(yl,{visible:!!O.value,"image-url":O.value,onClose:Ee},null,8,["visible","image-url"])]),m(Yu,{visible:Y(c).visible.value,title:Y(c).config.value.title||"",message:Y(c).config.value.message,type:Y(c).config.value.type,"confirm-text":Y(c).config.value.confirmText,onConfirm:Y(c).handleConfirm},null,8,["visible","title","message","type","confirm-text","onConfirm"])],64)}}}),Hk=Ge(qk,[["__scopeId","data-v-d3f67ec7"]]),zk={class:"dialog-header"},Wk={class:"dialog-title"},Kk={class:"dialog-content"},Gk={class:"info-section"},Qk={class:"info-grid"},Jk={class:"info-item"},Zk={class:"info-value"},Xk={class:"info-item"},Yk={class:"info-value"},e$={class:"info-item"},t$={class:"info-value"},s$={class:"info-item"},n$={class:"info-value"},o$={class:"info-item"},l$={class:"info-value"},a$={class:"form-section"},i$={class:"section-title"},r$={class:"error-type-grid"},c$=["onClick"],u$={class:"type-label"},d$={class:"form-section"},f$={class:"section-title"},p$={class:"char-count"},v$={class:"form-section"},m$={class:"section-title"},h$={class:"upload-area"},g$={key:0,class:"screenshots-list"},y$=["src","alt"],b$=["onClick"],_$={key:0,class:"screenshot-error"},w$={class:"form-section"},k$={class:"section-title"},$$={class:"upload-area"},C$={key:0,class:"files-list"},I$={class:"file-name"},S$={class:"file-size"},x$=["onClick"],T$={class:"dialog-footer"},A$=["disabled"],E$=ze({__name:"ReportIssueDialog",props:{visible:{type:Boolean},appInfo:{}},emits:["close","submit"],setup(e,{emit:t}){const s=e,o=t,l=[{value:"crash",label:"打开崩溃",icon:"mdi:alert-octagon"},{value:"crack_failed",label:"破解失效",icon:"mdi:shield-off"},{value:"update_request",label:"请求更新",icon:"mdi:update"},{value:"unexpected_error",label:"意外错误",icon:"mdi:alert-circle"}],a=k(""),i=k(""),r=k([]),c=k([]),f=k(null),u=k(null),v=fe(()=>{const te=navigator.userAgent;let O="未知",R="未知";if(te.includes("Mac OS X")){const F=te.match(/Mac OS X (\d+[._]\d+)/);F?O=`macOS ${F[1].replace("_",".")}`:O="macOS"}else if(te.includes("Windows")){const F=te.match(/Windows NT (\d+\.\d+)/);F?O=`Windows ${F[1]}`:O="Windows"}else te.includes("Linux")&&(O="Linux");return navigator.platform.includes("Intel")||navigator.platform.includes("x86")?R="x86_64":navigator.platform.includes("ARM")||navigator.platform.includes("Apple")?R="ARM64":R=navigator.platform||"未知",{osVersion:O,architecture:R}}),g=fe(()=>a.value!==""&&i.value.trim().length>0),h=()=>{var te;(te=f.value)==null||te.click()},b=te=>{const O=te.target,R=O.files;if(!R)return;const F=10*1024*1024;Array.from(R).forEach($=>{if(!$.type.startsWith("image/")){r.value.push({file:$,preview:"",error:"只能上传图片文件"});return}if($.size>F){r.value.push({file:$,preview:"",error:"图片大小不能超过10MB"});return}const U=new FileReader;U.onload=se=>{var G;const M=r.value.findIndex(B=>B.file===$);M!==-1&&(r.value[M].preview=(G=se.target)==null?void 0:G.result)},U.readAsDataURL($),r.value.push({file:$,preview:""})}),O&&(O.value="")},w=te=>{r.value.splice(te,1)},C=()=>{var te;(te=u.value)==null||te.click()},I=te=>{const O=te.target,R=O.files;R&&(Array.from(R).forEach(F=>{c.value.push(F)}),O&&(O.value=""))},q=te=>{c.value.splice(te,1)},N=te=>{if(te===0)return"0 B";const O=1024,R=["B","KB","MB","GB"],F=Math.floor(Math.log(te)/Math.log(O));return Math.round(te/Math.pow(O,F)*100)/100+" "+R[F]},z=()=>{o("close")},Z=()=>{z()},W=()=>{if(!g.value||!s.appInfo)return;const te={appName:s.appInfo.name,appVersion:s.appInfo.version,bundleId:s.appInfo.bundleId,osVersion:v.value.osVersion,architecture:v.value.architecture,errorType:a.value,description:i.value.trim(),screenshots:r.value.filter(O=>!O.error).map(O=>O.file),files:c.value};o("submit",te)};return st(()=>s.visible,te=>{te||(a.value="",i.value="",r.value=[],c.value=[])}),(te,O)=>(d(),Fe(mt,{name:"dialog-fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"report-issue-dialog-overlay",onClick:Z},[n("div",{class:"report-issue-dialog",onClick:O[1]||(O[1]=je(()=>{},["stop"]))},[n("div",zk,[n("h2",Wk,[m(_,{icon:"mdi:alert-circle",class:"title-icon"}),O[2]||(O[2]=be(" 报告问题 ",-1))]),n("button",{class:"close-btn",onClick:z},[m(_,{icon:"mdi:close"})])]),n("div",Kk,[n("div",Gk,[O[8]||(O[8]=n("h3",{class:"section-title"},"应用信息",-1)),n("div",Qk,[n("div",Jk,[O[3]||(O[3]=n("span",{class:"info-label"},"应用名称",-1)),n("span",Zk,y(e.appInfo.name),1)]),n("div",Xk,[O[4]||(O[4]=n("span",{class:"info-label"},"版本",-1)),n("span",Yk,y(e.appInfo.version),1)]),n("div",e$,[O[5]||(O[5]=n("span",{class:"info-label"},"包名",-1)),n("span",t$,y(e.appInfo.bundleId),1)]),n("div",s$,[O[6]||(O[6]=n("span",{class:"info-label"},"系统版本",-1)),n("span",n$,y(v.value.osVersion),1)]),n("div",o$,[O[7]||(O[7]=n("span",{class:"info-label"},"架构",-1)),n("span",l$,y(v.value.architecture),1)])])]),n("div",a$,[n("h3",i$,[m(_,{icon:"mdi:tag-outline",class:"section-icon"}),O[9]||(O[9]=be(" 错误类型 ",-1)),O[10]||(O[10]=n("span",{class:"required"},"*",-1))]),n("div",r$,[(d(),p(he,null,Re(l,R=>n("button",{key:R.value,class:$e(["error-type-btn",{active:a.value===R.value}]),onClick:F=>a.value=R.value},[m(_,{icon:R.icon,class:"type-icon"},null,8,["icon"]),n("span",u$,y(R.label),1)],10,c$)),64))])]),n("div",d$,[n("h3",f$,[m(_,{icon:"mdi:text-box-outline",class:"section-icon"}),O[11]||(O[11]=be(" 问题描述 ",-1)),O[12]||(O[12]=n("span",{class:"required"},"*",-1))]),Be(n("textarea",{"onUpdate:modelValue":O[0]||(O[0]=R=>i.value=R),class:"description-textarea",placeholder:"请详细描述遇到的问题,包括操作步骤、预期结果和实际结果...",rows:"6",maxlength:"2000"},null,512),[[Je,i.value]]),n("div",p$,y(i.value.length)+"/2000",1)]),n("div",v$,[n("h3",m$,[m(_,{icon:"mdi:image-outline",class:"section-icon"}),O[13]||(O[13]=be(" 报错截图 ",-1))]),n("div",h$,[n("input",{ref_key:"screenshotInput",ref:f,type:"file",accept:"image/*",multiple:"",onChange:b,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:h},[m(_,{icon:"fluent-color:image-24",class:"upload-icon"}),O[14]||(O[14]=n("span",null,"选择截图",-1))]),O[15]||(O[15]=n("span",{class:"upload-hint"},"支持多张图片单张最大10MB",-1))]),r.value.length>0?(d(),p("div",g$,[(d(!0),p(he,null,Re(r.value,(R,F)=>(d(),p("div",{key:F,class:"screenshot-item"},[n("img",{src:R.preview,alt:`截图 ${F+1}`},null,8,y$),n("button",{class:"remove-screenshot-btn",onClick:$=>w(F)},[m(_,{icon:"mdi:close"})],8,b$),R.error?(d(),p("div",_$,y(R.error),1)):E("",!0)]))),128))])):E("",!0)]),n("div",w$,[n("h3",k$,[m(_,{icon:"mdi:file-upload-outline",class:"section-icon"}),O[16]||(O[16]=be(" 报告文件 ",-1))]),n("div",$$,[n("input",{ref_key:"fileInput",ref:u,type:"file",multiple:"",onChange:I,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:C},[m(_,{icon:"mdi:file-upload-outline",class:"upload-icon"}),O[17]||(O[17]=n("span",null,"选择文件",-1))]),O[18]||(O[18]=n("span",{class:"upload-hint"},"可上传日志文件、配置文件等",-1))]),c.value.length>0?(d(),p("div",C$,[(d(!0),p(he,null,Re(c.value,(R,F)=>(d(),p("div",{key:F,class:"file-item"},[m(_,{icon:"mdi:file-document-outline",class:"file-icon"}),n("span",I$,y(R.name),1),n("span",S$,y(N(R.size)),1),n("button",{class:"remove-file-btn",onClick:$=>q(F)},[m(_,{icon:"mdi:close"})],8,x$)]))),128))])):E("",!0)])]),n("div",T$,[n("button",{class:"cancel-btn",onClick:z},"取消"),n("button",{class:"submit-btn",onClick:W,disabled:!g.value},[m(_,{icon:"mdi:send",class:"btn-icon"}),O[19]||(O[19]=be(" 提交报告 ",-1))],8,A$)])])])):E("",!0)]),_:1}))}}),R$=Ge(E$,[["__scopeId","data-v-2b498d31"]]),U$={class:"app-detail-page"},D$={key:0,class:"loading-container"},M$={key:1,class:"error-container"},P$={key:2,class:"detail-layout"},L$={class:"back-section"},O$={class:"main-content"},N$={class:"content-left"},F$={class:"app-header-section"},B$={class:"app-icon-container"},V$=["src","alt"],j$={key:1,class:"icon-loading"},q$={key:2,class:"icon-placeholder"},H$={class:"app-info-main"},z$={class:"app-info-section"},W$={class:"app-name"},K$={key:0,class:"app-developer"},G$={class:"app-meta-row"},Q$={key:0,class:"rating-info"},J$={class:"rating-value"},Z$={key:0,class:"rating-count"},X$={key:1,class:"category-separator"},Y$={key:2,class:"category-badge"},e3={class:"app-version-info"},t3={class:"version-text"},s3={key:0,class:"bundle-version-text"},n3={key:1,class:"injection-info"},o3={key:2,class:"update-info"},l3={class:"app-detail-info"},a3={class:"detail-info-row"},i3={class:"detail-value"},r3={class:"detail-info-row"},c3={class:"detail-value"},u3={class:"description-compact"},d3={class:"description-text"},f3={class:"app-actions-compact"},p3=["disabled"],v3=["disabled"],m3=["disabled"],h3={key:1,class:"provider-info-compact"},g3={key:0,class:"screenshots-section"},y3={class:"section-header"},b3={class:"view-all-btn"},_3={class:"screenshots-grid"},w3=["src","alt"],k3={key:1,class:"description-section"},$3={class:"description-content"},C3={key:0},I3={key:1},S3={class:"rating-section"},x3={key:0,class:"rating-overview"},T3={class:"rating-summary"},A3={class:"rating-main"},E3={class:"rating-number"},R3={class:"rating-count"},U3={class:"rating-distribution"},D3={class:"bar-star-number"},M3={class:"bar-container"},P3={class:"bar-value"},L3={key:1,class:"no-rating"},O3={key:2,class:"versions-section"},N3={class:"content-right"},F3={key:0,class:"sticky-header"},B3={class:"sticky-header-content"},V3={class:"sticky-icon"},j3=["src","alt"],q3={key:1,class:"sticky-icon-placeholder"},H3={class:"sticky-info"},z3={class:"sticky-app-name"},W3={class:"sticky-developer"},K3={class:"sticky-meta"},G3={class:"sticky-version"},Q3={key:0,class:"sticky-bundle-version"},J3={key:1,class:"sticky-injection"},Z3={key:2,class:"sticky-update"},X3={key:3,class:"sticky-rating"},Y3={class:"sticky-right"},eC={class:"sticky-actions"},tC=["disabled"],sC=["disabled"],nC=["disabled"],oC={class:"sticky-provider"},lC=ze({__name:"AppDetail",setup(e){const t=Cn(),s=Wt(),{isLoggedIn:o}=Ss(),{success:l}=Ft(),a=k(null),i=k(!0),r=k(""),c=k(!1),f=k(!1),u=k(!1),v=k(!1),g=k(!1),h=k([]),b=fe(()=>a.value?(a.value.description||Ne()).length>200:!1),w=k(null),C=L=>{const ee=L.target.scrollTop||window.pageYOffset||document.documentElement.scrollTop;g.value=ee>200};rt(async()=>{await z(),await vt();const L=document.querySelector(".main-content-right");if(L){w.value=L,L.addEventListener("scroll",C,{passive:!0});let P=null;const ee=()=>{if(!g.value)return;const ve=document.querySelector(".sticky-header");if(ve&&L){const Ie=L.getBoundingClientRect();ve.style.top=`${Ie.top+40}px`;const Oe=Ie.width,Ke=Oe*.6;ve.style.left=`${Ie.left+(Oe-Ke)/2}px`,ve.style.width=`${Ke}px`}};st(g,()=>{g.value&&vt(()=>{ee()})}),ee(),P=()=>{ee()},window.addEventListener("resize",P,{passive:!0});const ue=()=>{ee()};L.addEventListener("scroll",ue,{passive:!0}),Et(()=>{P&&window.removeEventListener("resize",P),L.removeEventListener("scroll",ue)})}else window.addEventListener("scroll",C,{passive:!0})}),Et(()=>{w.value?w.value.removeEventListener("scroll",C):window.removeEventListener("scroll",C)});const I=k(!0),q=k(!1),N=k(!1),z=async()=>{i.value=!0,r.value="";const L=t.params.bundleId;if(!L){r.value="应用 ID 不存在",i.value=!1;return}try{const P=await oe.getApp(L);a.value=P,a.value.rating||(a.value.rating=4.1,a.value.ratingCount=661),a.value.description||(a.value.description=Ne()),a.value.category||(a.value.category=X()),(!a.value.reviews||a.value.reviews.length===0)&&(a.value.reviews=[{id:"1",userName:"dddddddddd",rating:5,title:"",content:"ddddddddddddddddd",date:new Date(Date.now()-30*24*60*60*1e3).toISOString(),helpfulCount:5},{id:"2",userName:"信泽",rating:5,title:"",content:"这个应用功能强大,界面美观,使用体验很棒!",date:new Date(Date.now()-30*24*60*60*1e3).toISOString(),helpfulCount:3},{id:"3",userName:"用户B",rating:4,title:"",content:"整体来说还不错,但还有一些小问题需要改进。",date:new Date(Date.now()-15*24*60*60*1e3).toISOString(),helpfulCount:2}]),(!a.value.features||a.value.features.length===0)&&(a.value.features=["AI智能搜索","深度思考模式","高效信息获取","多端协同"]),T(),I.value=a.value.hasIcon!==!1,q.value=!1,N.value=!1,a.value.hasIcon===!1&&(I.value=!1,N.value=!0)}catch(P){console.error("加载应用详情失败:",P),r.value="加载应用详情失败,请检查网络连接"}finally{i.value=!1}},{updating:Z,modalVisible:W,modalTitle:te,logs:O,modalStatus:R,handleUpdate:F,handleReinstall:$,hideModal:U}=Zu({onRefresh:async()=>{await z()}}),se=()=>a.value&&a.value.hasIcon!==!1?oe.getAppIconUrl(a.value.bundleId):"",M=()=>{a.value&&F(a.value)},G=async()=>{if(!(!a.value||!a.value.bundleId))try{if(!(await fetch(`/api/apps/${a.value.bundleId}/open`,{method:"POST"})).ok)throw new Error("打开应用失败")}catch(L){console.error("打开应用失败:",L)}},B=()=>{s.back()},V=()=>{s.push("/")},X=()=>{if(!a.value)return"应用";const L=a.value.bundleId.toLowerCase();return L.includes("social")||L.includes("chat")||L.includes("qq")||L.includes("wechat")?"社交":L.includes("music")||L.includes("video")||L.includes("player")?"娱乐":L.includes("design")||L.includes("photo")||L.includes("edit")?"设计":L.includes("tool")||L.includes("util")?"实用程序与工具":"应用"},pe=()=>{if(!a.value)return"";const L=a.value.bundleId.split(".");return L.length>=2?L[1].charAt(0).toUpperCase()+L[1].slice(1)+" 公司":""},Ne=()=>a.value?`${a.value.name}是一款优秀的应用程序,提供丰富的功能和良好的用户体验。`:"",Pe=fe(()=>{if(!a.value||!a.value.ratingCount)return[];const L=a.value.ratingCount,P=[];for(let ee=5;ee>=1;ee--){let ue=0;ee===5?ue=Math.round(L*.4):ee===4?ue=Math.round(L*.3):ee===3?ue=Math.round(L*.15):ee===2?ue=Math.round(L*.1):ue=L-P.reduce((ve,Ie)=>ve+Ie.count,0),P.push({stars:ee,count:ue,percentage:ue/L*100})}return P}),Ee=()=>{var L,P;navigator.share?navigator.share({title:(L=a.value)==null?void 0:L.name,text:`查看 ${(P=a.value)==null?void 0:P.name} 应用详情`,url:window.location.href}).catch(()=>{}):(navigator.clipboard.writeText(window.location.href),l("链接已复制到剪贴板",2e3))},ye=()=>{u.value=!0},de=()=>{u.value=!1},Te=L=>{console.log("提交问题报告:",L),l("问题报告已提交,感谢您的反馈!",3e3),u.value=!1},Me=()=>{I.value=!1,q.value=!0,N.value=!1},K=L=>{I.value=!1,q.value=!1,N.value=!0;const P=L.target;P&&(P.style.display="none"),a.value&&(a.value.hasIcon=!1)};st(()=>t.params.bundleId,async(L,P)=>{L&&L!==P&&await z()},{immediate:!1});const ie=async()=>{await z()},re=()=>{f.value=!0},Ce=()=>{f.value=!1},Le=()=>{f.value=!1},T=()=>{h.value=[{id:"1",userName:"张三",content:"这个应用真的很不错!界面美观,功能强大,使用起来非常流畅。强烈推荐给大家!",images:["https://www.bing.com/th?id=OHR.MountainSunset_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=400&h=300&rs=1&c=1","https://www.bing.com/th?id=OHR.OceanWaves_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=400&h=300&rs=1&c=1"],date:new Date(Date.now()-2*60*60*1e3).toISOString(),likeCount:15,dislikeCount:2,userLikeStatus:null,replyCount:3,replies:[{id:"1-1",userName:"李四",content:"我也觉得很好用!",date:new Date(Date.now()-1*60*60*1e3).toISOString(),likeCount:5,dislikeCount:0,userLikeStatus:null},{id:"1-2",userName:"王五",content:"确实不错,已经推荐给朋友了",date:new Date(Date.now()-30*60*1e3).toISOString(),likeCount:3,dislikeCount:1,userLikeStatus:null,replyToUserName:"张三"},{id:"1-3",userName:"赵六",content:"感谢分享!",date:new Date(Date.now()-15*60*1e3).toISOString(),likeCount:2,dislikeCount:0,userLikeStatus:null}]},{id:"2",userName:"用户A",content:"功能很全面,但是界面可以再优化一下。总体来说还是值得使用的。",date:new Date(Date.now()-5*60*60*1e3).toISOString(),likeCount:8,dislikeCount:1,userLikeStatus:"liked",replyCount:1,replies:[{id:"2-1",userName:"开发者",content:"感谢反馈,我们会持续优化界面的!",date:new Date(Date.now()-4*60*60*1e3).toISOString(),likeCount:10,dislikeCount:0,userLikeStatus:null,replyToUserName:"用户A"}]},{id:"3",userName:"测试用户",content:"刚下载试用了一下,感觉还不错。",images:["https://www.bing.com/th?id=OHR.ForestPath_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp&w=400&h=300&rs=1&c=1"],date:new Date(Date.now()-24*60*60*1e3).toISOString(),likeCount:4,dislikeCount:0,userLikeStatus:null,replyCount:0,replies:[]}]},D=async(L,P)=>{console.log("提交评论:",L,P)},A=L=>{console.log("点赞评论:",L);const P=h.value.find(ee=>ee.id===L);P&&(P.userLikeStatus==="liked"?(P.userLikeStatus=null,P.likeCount--):(P.userLikeStatus==="disliked"&&P.dislikeCount--,P.userLikeStatus="liked",P.likeCount++))},J=L=>{console.log("点踩评论:",L);const P=h.value.find(ee=>ee.id===L);P&&(P.userLikeStatus==="disliked"?(P.userLikeStatus=null,P.dislikeCount--):(P.userLikeStatus==="liked"&&P.likeCount--,P.userLikeStatus="disliked",P.dislikeCount++))},ce=(L,P)=>{console.log("点赞回复:",L,P);const ee=h.value.find(ue=>ue.id===L);if(ee&&ee.replies){const ue=ee.replies.find(ve=>ve.id===P);ue&&(ue.userLikeStatus==="liked"?(ue.userLikeStatus=null,ue.likeCount--):(ue.userLikeStatus==="disliked"&&ue.dislikeCount--,ue.userLikeStatus="liked",ue.likeCount++))}},x=(L,P)=>{console.log("点踩回复:",L,P);const ee=h.value.find(ue=>ue.id===L);if(ee&&ee.replies){const ue=ee.replies.find(ve=>ve.id===P);ue&&(ue.userLikeStatus==="disliked"?(ue.userLikeStatus=null,ue.dislikeCount--):(ue.userLikeStatus==="liked"&&ue.likeCount--,ue.userLikeStatus="disliked",ue.dislikeCount++))}},S=(L,P)=>{console.log("提交回复:",L,P);const ee=h.value.find(ue=>ue.id===L);ee&&(ee.replies||(ee.replies=[]))};return(L,P)=>(d(),p("div",U$,[i.value?(d(),p("div",D$,[...P[4]||(P[4]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用详情...",-1)])])):r.value?(d(),p("div",M$,[n("p",null,y(r.value),1),n("button",{onClick:z,class:"btn btn-primary"},"重试")])):a.value?(d(),p("div",P$,[n("div",L$,[n("button",{onClick:B,class:"back-btn"},[m(_,{icon:"mdi:arrow-left",class:"btn-icon"}),P[5]||(P[5]=be(" 返回 ",-1))]),n("button",{onClick:V,class:"home-btn"},[m(_,{icon:"fluent-color:home-32",class:"btn-icon"}),P[6]||(P[6]=be(" 首页 ",-1))])]),n("div",O$,[n("div",N$,[n("div",F$,[n("div",B$,[a.value.hasIcon!==!1&&se()?(d(),p("img",{key:0,src:se(),alt:a.value.name,onLoad:Me,onError:K},null,40,V$)):E("",!0),I.value&&a.value.hasIcon!==!1?(d(),p("div",j$,[...P[7]||(P[7]=[n("div",{class:"spinner"},null,-1)])])):E("",!0),N.value||a.value.hasIcon===!1?(d(),p("div",q$,y(a.value.name.charAt(0).toUpperCase()),1)):E("",!0)]),n("div",H$,[n("div",z$,[n("h1",W$,y(a.value.name),1),a.value.developer||pe()?(d(),p("p",K$,y(a.value.developer||pe()),1)):E("",!0),n("div",G$,[a.value.rating!==void 0?(d(),p("div",Q$,[n("span",J$,y(a.value.rating.toFixed(1)),1),m(_,{icon:"fluent-color:star-24",class:"star-icon"}),a.value.ratingCount?(d(),p("span",Z$,y(a.value.ratingCount)+"个评级 ",1)):E("",!0)])):E("",!0),a.value.category||X()?(d(),p("span",X$,"·")):E("",!0),a.value.category||X()?(d(),p("span",Y$,y(a.value.category||X()),1)):E("",!0)]),n("div",e3,[n("span",t3,"版本 "+y(a.value.version),1),a.value.bundleVersion?(d(),p("span",s3," ("+y(a.value.bundleVersion)+") ",1)):E("",!0),a.value.injection&&a.value.injection.version?(d(),p("span",n3," · 已注入 "+y(a.value.injection.version),1)):E("",!0),a.value.update&&a.value.update.latestVersion&&a.value.update.latestVersion!==a.value.version?(d(),p("span",o3," · 最新 "+y(a.value.update.latestVersion),1)):E("",!0)]),n("div",l3,[n("div",a3,[P[8]||(P[8]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",i3,y(a.value.bundleId),1)]),n("div",r3,[P[9]||(P[9]=n("span",{class:"detail-label"},"路径:",-1)),n("span",c3,y(a.value.path),1)])]),n("div",u3,[n("p",d3,y(a.value.description||Ne()),1),b.value?(d(),p("button",{key:0,class:"expand-btn-inline",onClick:P[0]||(P[0]=ee=>v.value=!v.value)},y(v.value?"收起":"详细显示"),1)):E("",!0)]),n("div",f3,[a.value.status==="upgrade_available"?(d(),p("button",{key:0,class:"install-btn-compact btn-primary",onClick:M,disabled:Y(Z)},[m(_,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),be(" "+y(Y(Z)?"更新中...":"更新"),1)],8,p3)):a.value.status==="supported"?(d(),p("button",{key:1,class:"install-btn-compact btn-primary",onClick:M,disabled:Y(Z)},[m(_,{icon:"fluent-color:send-24",class:"btn-icon"}),be(" "+y(Y(Z)?"处理中...":"安装"),1)],8,v3)):a.value.status==="injected"?(d(),p("button",{key:2,class:"install-btn-compact btn-success",onClick:G},[m(_,{icon:"fluent-color:planet-16",class:"btn-icon"}),P[10]||(P[10]=be(" 打开 ",-1))])):(d(),p("button",{key:3,class:"install-btn-compact btn-secondary",onClick:P[1]||(P[1]=(...ee)=>Y($)&&Y($)(...ee)),disabled:Y(Z)},[m(_,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),be(" "+y(Y(Z)?"处理中...":"重新安装"),1)],8,m3)),n("button",{class:"report-btn-compact",onClick:ye},[m(_,{icon:"mdi:alert-circle-outline",class:"btn-icon"}),P[11]||(P[11]=be(" 报告问题 ",-1))]),n("button",{class:"share-btn-compact",onClick:Ee},[m(_,{icon:"fluent-color:share-ios-24"})])]),a.value.developer||pe()?(d(),p("div",h3," 由 "+y(a.value.developer||pe())+" 提供和更新。将进行下载和安装 ",1)):E("",!0)])])]),a.value.screenshots&&a.value.screenshots.length>0?(d(),p("div",g3,[n("div",y3,[P[13]||(P[13]=n("h2",null,"屏幕截图",-1)),n("button",b3,[P[12]||(P[12]=be(" 查看全部 ",-1)),m(_,{icon:"fluent-color:arrow-right-24"})])]),n("div",_3,[(d(!0),p(he,null,Re(a.value.screenshots.slice(0,2),(ee,ue)=>(d(),p("div",{key:ue,class:"screenshot-item"},[n("img",{src:ee,alt:`${a.value.name} 截图 ${ue+1}`},null,8,w3)]))),128))])])):E("",!0),v.value?(d(),p("div",k3,[P[14]||(P[14]=n("h2",{class:"section-title"},"描述",-1)),n("div",$3,[a.value.description?(d(),p("p",C3,y(a.value.description),1)):(d(),p("p",I3,y(Ne()),1))])])):E("",!0),n("div",S3,[P[17]||(P[17]=n("div",{class:"rating-header"},[n("h2",{class:"section-title"},"评分")],-1)),a.value.rating!==void 0?(d(),p("div",x3,[n("div",T3,[n("div",A3,[n("span",E3,y(a.value.rating.toFixed(1)),1),n("span",R3,y(a.value.ratingCount||0)+"个评分",1)]),n("div",U3,[(d(!0),p(he,null,Re(Pe.value,(ee,ue)=>(d(),p("div",{key:ue,class:"rating-bar-item"},[n("span",D3,y(5-ue),1),m(_,{icon:"fluent-color:star-16",class:"bar-star-icon"}),n("div",M3,[n("div",{class:"bar-fill",style:$t({width:`${ee.percentage}%`})},null,4)]),n("span",P3,y(ee.count),1)]))),128))])])])):(d(),p("div",L3,[...P[15]||(P[15]=[n("p",null,"暂无评分",-1)])])),n("button",{class:"login-to-review-btn",onClick:re},[m(_,{icon:"fluent-color:comment-multiple-16",class:"btn-icon"}),P[16]||(P[16]=be(" 登录以进行评分或评价 ",-1))])]),m(Hk,{"bundle-id":a.value.bundleId,comments:h.value,onSubmitComment:D,onLikeComment:A,onDislikeComment:J,onLikeReply:ce,onDislikeReply:x,onSubmitReply:S},null,8,["bundle-id","comments"]),a.value.update&&a.value.update.versions&&a.value.update.versions.length>0?(d(),p("div",O3,[P[18]||(P[18]=n("h2",{class:"section-title"},"可用版本",-1)),m(Pu,{bundleId:a.value.bundleId,versions:a.value.update.versions},null,8,["bundleId","versions"])])):E("",!0)]),n("div",N3,[m(Vw,{"current-bundle-id":a.value.bundleId},null,8,["current-bundle-id"])])]),m(Ju,{visible:Y(W),title:Y(te),logs:Y(O),loading:Y(Z),status:Y(R),"can-close":Y(R)!=="loading",onClose:Y(U)},null,8,["visible","title","logs","loading","status","can-close","onClose"]),m(Sw,{visible:c.value,app:a.value,onClose:P[2]||(P[2]=ee=>c.value=!1),onSuccess:ie},null,8,["visible","app"]),m(Mu,{show:f.value,onClose:Ce,onSuccess:Le},null,8,["show"]),m(R$,{visible:u.value,"app-info":a.value,onClose:de,onSubmit:Te},null,8,["visible","app-info"])])):E("",!0),m(mt,{name:"sticky-header"},{default:ft(()=>[g.value&&a.value?(d(),p("div",F3,[n("div",B3,[n("div",V3,[a.value.hasIcon!==!1&&se()?(d(),p("img",{key:0,src:se(),alt:a.value.name,onError:K},null,40,j3)):(d(),p("div",q3,y(a.value.name.charAt(0).toUpperCase()),1))]),n("div",H3,[n("h2",z3,y(a.value.name),1),n("p",W3,y(a.value.developer||pe()),1),n("div",K3,[n("span",G3,"版本 "+y(a.value.version),1),a.value.bundleVersion?(d(),p("span",Q3," ("+y(a.value.bundleVersion)+") ",1)):E("",!0),a.value.injection&&a.value.injection.version?(d(),p("span",J3," · 已注入 "+y(a.value.injection.version),1)):E("",!0),a.value.update&&a.value.update.latestVersion&&a.value.update.latestVersion!==a.value.version?(d(),p("span",Z3," · 最新 "+y(a.value.update.latestVersion),1)):E("",!0),a.value.rating!==void 0?(d(),p("span",X3,[be(" · "+y(a.value.rating.toFixed(1))+" ",1),m(_,{icon:"fluent-color:star-16",class:"sticky-star-icon"})])):E("",!0)])]),n("div",Y3,[n("div",eC,[a.value.status==="upgrade_available"?(d(),p("button",{key:0,class:"sticky-install-btn btn-primary",onClick:M,disabled:Y(Z)},[m(_,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),be(" "+y(Y(Z)?"更新中...":"更新"),1)],8,tC)):a.value.status==="supported"?(d(),p("button",{key:1,class:"sticky-install-btn btn-primary",onClick:M,disabled:Y(Z)},[m(_,{icon:"fluent-color:send-24",class:"btn-icon"}),be(" "+y(Y(Z)?"处理中...":"安装"),1)],8,sC)):a.value.status==="injected"?(d(),p("button",{key:2,class:"sticky-install-btn btn-success",onClick:G},[m(_,{icon:"fluent-color:planet-16",class:"btn-icon"}),P[19]||(P[19]=be(" 打开 ",-1))])):(d(),p("button",{key:3,class:"sticky-install-btn btn-secondary",onClick:P[3]||(P[3]=(...ee)=>Y($)&&Y($)(...ee)),disabled:Y(Z)},[m(_,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),be(" "+y(Y(Z)?"处理中...":"重新安装"),1)],8,nC))]),n("div",oC,[n("span",null,"由 "+y(a.value.developer||pe())+" 提供和更新",1),P[20]||(P[20]=n("span",null,"·将进行下载和安装",-1))])])])])):E("",!0)]),_:1})]))}}),aC=Ge(lC,[["__scopeId","data-v-350b8124"]]);function Po(e){if(e===0)return"0 B";const t=1024,s=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(e)/Math.log(t));return`${(e/Math.pow(t,o)).toFixed(2)} ${s[o]}`}function iC(e){return e<=0?"--":`${Po(e)}/s`}function rC(e){if(e<=0)return"完成";if(e>=3600){const t=Math.floor(e/3600),s=Math.floor(e%3600/60);return`${t}小时${s}分钟`}if(e>=60){const t=Math.floor(e/60),s=Math.floor(e%60);return`${t}分${s}秒`}return`${Math.floor(e)}秒`}function Er(e){return e<0?"0.00%":e>=100?"100.00%":`${e.toFixed(2)}%`}const cC={class:"download-manager"},uC={class:"filter-bar"},dC=["onClick"],fC={class:"filter-count"},pC={class:"recent-updates-section"},vC={class:"download-list"},mC={key:0,class:"empty-state"},hC={class:"item-icon"},gC={class:"item-content"},yC={class:"item-name-row"},bC={class:"item-name"},_C={class:"item-meta-row"},wC={class:"item-type"},kC={key:0,class:"item-progress-section"},$C={class:"progress-bar"},CC={class:"progress-info"},IC={class:"progress-text"},SC={class:"progress-stats"},xC={class:"progress-speed"},TC={class:"progress-time"},AC={key:1,class:"item-progress-section"},EC={class:"progress-info"},RC={class:"progress-stats"},UC={key:2,class:"item-error"},DC={class:"item-right"},MC={key:0,class:"item-status-text"},PC={class:"item-actions"},LC=["onClick"],OC={class:"btn-more-wrapper"},NC=["onClick"],FC={key:0,class:"menu-popup"},BC=["onClick"],VC=["onClick"],jC=["onClick"],qC=["onClick"],HC=ze({__name:"DownloadManager",setup(e){const t=k([]),s=k("all");let o=null;const l=k(!1),a=k({title:"",message:"",type:"warning",confirmText:"确认",cancelText:"取消"});let i=null;const r=k(!1),c=k(null),f=[{label:"全部",value:"all"},{label:"下载中",value:"downloading"},{label:"已完成",value:"completed"},{label:"已暂停",value:"paused"},{label:"失败",value:"error"}],u=fe(()=>s.value==="all"?t.value:t.value.filter(F=>F.status===s.value)),v=F=>F==="all"?t.value.length:t.value.filter($=>$.status===F).length,g=F=>({pending:"等待中",downloading:"下载中",paused:"已暂停",completed:"应用",error:"失败"})[F]||"下载任务",h=F=>({downloading:"fluent-color:arrow-square-down-32",completed:"fluent-color:checkmark-circle-24",paused:"fluent-color:clock-24",error:"fluent-color:error-circle-24",pending:"fluent-color:hourglass-24"})[F.status]||"fluent-color:document-24",b=F=>{if(F.status==="downloading")return"下载中";if(F.status==="completed"&&F.updateTime){const $=new Date(F.updateTime*1e3),se=new Date().getTime()-$.getTime();if(Math.floor(se/(1e3*60*60*24))===0)return"今天更新";{const G=$.getFullYear(),B=String($.getMonth()+1).padStart(2,"0"),V=String($.getDate()).padStart(2,"0");return`已于${G}/${B}/${V}更新`}}return""},w=(F,$)=>{var U;$==null||$.stopPropagation(),r.value&&((U=c.value)==null?void 0:U.id)===F.id?(r.value=!1,c.value=null):(c.value=F,r.value=!0)};rt(()=>{C(),o=setInterval(C,1e3)}),Et(()=>{o&&clearInterval(o)});const C=async()=>{try{t.value=await oe.getAllDownloads()}catch(F){console.error("加载下载列表失败:",F)}},I=()=>{C()},q=async F=>{try{await oe.pauseDownload(F),await C()}catch($){console.error("暂停下载失败:",$)}},N=async F=>{try{await oe.resumeDownload(F),await C()}catch($){console.error("继续下载失败:",$)}},z=(F,$,U="warning")=>new Promise(se=>{a.value={title:F,message:$,type:U,confirmText:"确认",cancelText:"取消"},l.value=!0,i=se}),Z=()=>{i&&(i(!0),i=null)},W=()=>{i&&(i(!1),i=null)},te=async F=>{if(await z("删除下载任务","确定要删除这个下载任务吗?","danger"))try{await oe.deleteDownload(F),await C()}catch(U){console.error("删除下载失败:",U)}},O=async F=>{if(await z("重新下载",`确定要重新下载 "${F.fileName}" 吗?这将删除并重新下载该文件。`,"warning"))try{await oe.deleteDownload(F.id),await oe.startDownload(F.url,F.fileName),await C()}catch(U){console.error("重新下载失败:",U)}},R=async F=>{try{await oe.openDownloadFile(F)}catch($){console.error("打开文件失败:",$)}};return(F,$)=>(d(),p("div",cC,[n("div",{class:"page-header"},[$[2]||($[2]=n("div",{class:"header-content"},[n("h1",{class:"page-title"},"更新和下载"),n("p",{class:"page-subtitle"},' 通过单击"检查更新"、"全部更新"或"更新"下载并安装应用更新 ')],-1)),n("button",{class:"btn-check-updates",onClick:I}," 检查更新 ")]),n("div",uC,[(d(),p(he,null,Re(f,U=>n("button",{key:U.value,class:$e(["filter-btn",{active:s.value===U.value}]),onClick:se=>s.value=U.value},[be(y(U.label)+" ",1),n("span",fC,y(v(U.value)),1)],10,dC)),64))]),n("div",pC,[$[13]||($[13]=n("h2",{class:"section-title"},"最近的更新",-1)),n("div",vC,[u.value.length===0?(d(),p("div",mC,[m(_,{icon:"fluent-color:cloud-24",class:"empty-icon"}),$[3]||($[3]=n("p",{class:"empty-text"},"暂无下载任务",-1))])):E("",!0),(d(!0),p(he,null,Re(u.value,U=>{var se;return d(),p("div",{key:U.id,class:"download-item"},[n("div",hC,[m(_,{icon:h(U),class:"icon"},null,8,["icon"])]),n("div",gC,[n("div",yC,[n("span",bC,y(U.fileName),1)]),n("div",_C,[$[4]||($[4]=n("span",{class:"item-publisher"},"下载任务",-1)),$[5]||($[5]=n("span",{class:"item-separator"},"•",-1)),n("span",wC,y(g(U.status)),1)]),U.status==="downloading"?(d(),p("div",kC,[n("div",$C,[n("div",{class:"progress-fill",style:$t({width:Y(Er)(U.progress*100)})},null,4)]),n("div",CC,[n("span",IC,y(Y(Er)(U.progress*100)),1),n("span",SC,y(Y(Po)(U.downloadedSize))+" / "+y(Y(Po)(U.totalSize)),1),n("span",xC,y(Y(iC)(U.downloadSpeed)),1),n("span",TC," 剩余 "+y(Y(rC)(U.remainingTime)),1)])])):U.status==="completed"?(d(),p("div",AC,[$[7]||($[7]=n("div",{class:"progress-bar"},[n("div",{class:"progress-fill completed",style:{width:"100%"}})],-1)),n("div",EC,[$[6]||($[6]=n("span",{class:"progress-text"},"100%",-1)),n("span",RC,y(Y(Po)(U.totalSize)),1)])])):E("",!0),U.errorMsg?(d(),p("div",UC,[m(_,{icon:"fluent-color:error-circle-24",class:"error-icon"}),be(" "+y(U.errorMsg),1)])):E("",!0)]),n("div",DC,[b(U)?(d(),p("div",MC,y(b(U)),1)):E("",!0),n("div",PC,[U.status==="completed"?(d(),p("button",{key:0,class:"btn-action btn-open",onClick:M=>R(U.id)},[m(_,{icon:"mdi:folder-open",class:"btn-icon"}),$[8]||($[8]=be(" 打开 ",-1))],8,LC)):E("",!0),n("div",OC,[n("button",{class:"btn-more",onClick:je(M=>w(U,M),["stop"])},[m(_,{icon:"mdi:dots-vertical"})],8,NC),r.value&&((se=c.value)==null?void 0:se.id)===U.id?(d(),p("div",FC,[U.status==="downloading"?(d(),p("button",{key:0,class:"menu-item",onClick:M=>{q(U.id),r.value=!1}},[m(_,{icon:"fluent-color:clock-24"}),$[9]||($[9]=be(" 暂停 ",-1))],8,BC)):E("",!0),U.status==="paused"?(d(),p("button",{key:1,class:"menu-item",onClick:M=>{N(U.id),r.value=!1}},[m(_,{icon:"fluent-color:arrow-sync-24"}),$[10]||($[10]=be(" 继续 ",-1))],8,VC)):E("",!0),U.status==="completed"||U.status==="error"?(d(),p("button",{key:2,class:"menu-item",onClick:M=>{O(U),r.value=!1}},[m(_,{icon:"fluent-color:arrow-sync-24"}),$[11]||($[11]=be(" 重新下载 ",-1))],8,jC)):E("",!0),n("button",{class:"menu-item danger",onClick:M=>{te(U.id),r.value=!1}},[m(_,{icon:"fluent-color:dismiss-circle-24"}),$[12]||($[12]=be(" 删除 ",-1))],8,qC)])):E("",!0)])])])])}),128))])]),r.value?(d(),p("div",{key:0,class:"menu-overlay",onClick:$[0]||($[0]=U=>r.value=!1)})):E("",!0),m(nn,{visible:l.value,title:a.value.title,message:a.value.message,type:a.value.type,"confirm-text":a.value.confirmText,"cancel-text":a.value.cancelText,onConfirm:Z,onCancel:W,"onUpdate:visible":$[1]||($[1]=U=>l.value=U)},null,8,["visible","title","message","type","confirm-text","cancel-text"])]))}}),zC=Ge(HC,[["__scopeId","data-v-4aa8f93d"]]),WC={class:"slider-wrapper"},KC=["value","min","max","step"],GC={class:"slider-value"},QC=ze({__name:"Slider",props:{modelValue:{},min:{default:0},max:{default:100},step:{default:1},suffix:{default:""}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=t,l=fe(()=>s.suffix?`${s.modelValue} ${s.suffix}`:s.modelValue.toString()),a=fe(()=>({"--progress-percent":`${(s.modelValue-s.min)/(s.max-s.min)*100}%`})),i=r=>{const c=r.target;o("update:modelValue",Number(c.value))};return(r,c)=>(d(),p("div",WC,[n("input",{value:e.modelValue,type:"range",class:"setting-slider",style:$t(a.value),min:e.min,max:e.max,step:e.step,onInput:i},null,44,KC),n("div",GC,y(l.value),1)]))}}),ko=Ge(QC,[["__scopeId","data-v-4a2f871e"]]),JC={class:"toggle-wrapper"},ZC=["checked"],XC={class:"toggle-slider"},YC={key:0,class:"toggle-text"},e4=ze({__name:"Toggle",props:{modelValue:{type:Boolean},showLabel:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const s=t,o=l=>{const a=l.target;s("update:modelValue",a.checked)};return(l,a)=>(d(),p("label",JC,[n("input",{checked:e.modelValue,type:"checkbox",class:"toggle-input",onChange:o},null,40,ZC),n("span",XC,[e.showLabel?(d(),p("span",YC,y(e.modelValue?"开":"关"),1)):E("",!0)])]))}}),t4=Ge(e4,[["__scopeId","data-v-c85b3e46"]]),s4={class:"settings-page"},n4={class:"settings-container"},o4={class:"settings-list"},l4={class:"setting-item"},a4={class:"setting-icon"},i4={class:"setting-content"},r4={class:"setting-input-wrapper"},c4={key:0,class:"setting-error"},u4={class:"setting-item"},d4={class:"setting-icon"},f4={class:"setting-content"},p4={class:"setting-item"},v4={class:"setting-icon"},m4={class:"setting-content"},h4={class:"setting-item"},g4={class:"setting-icon"},y4={class:"setting-item"},b4={class:"setting-icon"},_4={class:"setting-content"},w4={class:"setting-item"},k4={class:"setting-icon"},$4={class:"setting-content"},C4={class:"setting-item"},I4={class:"setting-icon"},S4={class:"setting-content"},x4={class:"theme-options"},T4={class:"settings-actions"},A4=["disabled"],E4=["disabled"],R4={class:"about-section"},U4={class:"about-icon"},D4={class:"version-info"},M4={key:0,class:"about-details"},P4={class:"detail-section"},L4={class:"detail-content"},O4={class:"detail-item"},N4={class:"detail-value"},F4=ze({__name:"Settings",setup(e){const t=k({download_path:"",auto_check_update:!0,concurrent_downloads:3,theme:"auto",update_check_interval:10,update_check_threads:16,download_concurrent_threads:16}),s=k(""),o=k(!1),l=k(!1),{toasts:a,success:i,error:r,removeToast:c}=Ft(),f=$n(),u=new Date().toLocaleDateString("zh-CN",{year:"numeric",month:"long",day:"numeric"}),v=()=>{l.value=!l.value},g=async()=>{try{const C=await oe.getAllSettings();t.value={download_path:C.download_path??"",auto_check_update:C.auto_check_update??!0,concurrent_downloads:C.concurrent_downloads??3,theme:C.theme??"auto",update_check_interval:C.update_check_interval??10,update_check_threads:C.update_check_threads??16,download_concurrent_threads:C.download_concurrent_threads??16}}catch(C){console.error("加载设置失败:",C),r("加载设置失败",4e3)}},h=async()=>{var I;const C=(I=t.value.download_path)==null?void 0:I.trim();if(!C){s.value="";return}try{const q=await oe.validatePath(C);q.exists?q.isDirectory?s.value="":s.value="路径不是目录":s.value="路径不存在"}catch{s.value="验证路径失败"}},b=async()=>{if(!s.value){o.value=!0;try{const C={};t.value.download_path!==void 0&&(C.download_path=t.value.download_path),t.value.auto_check_update!==void 0&&(C.auto_check_update=t.value.auto_check_update),t.value.concurrent_downloads!==void 0&&(C.concurrent_downloads=t.value.concurrent_downloads),t.value.theme!==void 0&&(C.theme=t.value.theme),t.value.update_check_interval!==void 0&&(C.update_check_interval=t.value.update_check_interval),t.value.update_check_threads!==void 0&&(C.update_check_threads=t.value.update_check_threads),t.value.download_concurrent_threads!==void 0&&(C.download_concurrent_threads=t.value.download_concurrent_threads),await oe.updateSettings(C),i("设置已保存",3e3)}catch(C){console.error("保存设置失败:",C),r("保存设置失败",4e3)}finally{o.value=!1}}},w=async()=>{await f.show({title:"重置设置",message:"确定要重置所有设置为默认值吗?",type:"warning",confirmText:"重置",cancelText:"取消"})&&(t.value={download_path:"",auto_check_update:!0,concurrent_downloads:3,theme:"auto",update_check_interval:10,update_check_threads:16,download_concurrent_threads:16},s.value="")};return rt(()=>{g()}),(C,I)=>(d(),p("div",s4,[n("div",n4,[I[35]||(I[35]=n("h1",{class:"page-title"},"设置",-1)),n("div",o4,[n("div",l4,[n("div",a4,[m(_,{icon:"fluent-color:document-folder-24"})]),n("div",i4,[I[9]||(I[9]=n("h3",{class:"setting-title"},"下载路径",-1)),I[10]||(I[10]=n("p",{class:"setting-description"}," 请输入完整的绝对路径,不能使用 ~ 符号 ",-1)),n("div",r4,[m(_,{icon:"fluent-color:document-folder-24",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":I[0]||(I[0]=q=>t.value.download_path=q),type:"text",class:"setting-input",placeholder:"/Users/你的用户名/Downloads/Hayaku/",onInput:h},null,544),[[Je,t.value.download_path]])]),s.value?(d(),p("p",c4,[m(_,{icon:"fluent-color:error-circle-24",class:"error-icon"}),be(" "+y(s.value),1)])):E("",!0)])]),n("div",u4,[n("div",d4,[m(_,{icon:"fluent-color:send-24"})]),n("div",f4,[I[11]||(I[11]=n("h3",{class:"setting-title"},"最大并发下载数",-1)),I[12]||(I[12]=n("p",{class:"setting-description"},"同时进行的下载任务数量",-1)),m(ko,{modelValue:t.value.concurrent_downloads,"onUpdate:modelValue":I[1]||(I[1]=q=>t.value.concurrent_downloads=q),min:1,max:16,step:1},null,8,["modelValue"])])]),n("div",p4,[n("div",v4,[m(_,{icon:"fluent-color:link-multiple-24"})]),n("div",m4,[I[13]||(I[13]=n("h3",{class:"setting-title"},"下载并发线程数",-1)),I[14]||(I[14]=n("p",{class:"setting-description"}," 每个下载任务使用的并发线程数默认16 ",-1)),m(ko,{modelValue:t.value.download_concurrent_threads,"onUpdate:modelValue":I[2]||(I[2]=q=>t.value.download_concurrent_threads=q),min:1,max:64,step:1},null,8,["modelValue"])])]),n("div",h4,[n("div",g4,[m(_,{icon:"fluent-color:arrow-sync-24"})]),I[15]||(I[15]=n("div",{class:"setting-content"},[n("h3",{class:"setting-title"},"自动检查更新"),n("p",{class:"setting-description"},"是否在后台自动检查应用更新")],-1)),m(t4,{modelValue:t.value.auto_check_update,"onUpdate:modelValue":I[3]||(I[3]=q=>t.value.auto_check_update=q)},null,8,["modelValue"])]),n("div",y4,[n("div",b4,[m(_,{icon:"fluent-color:clock-24"})]),n("div",_4,[I[16]||(I[16]=n("h3",{class:"setting-title"},"更新检查间隔(分钟)",-1)),I[17]||(I[17]=n("p",{class:"setting-description"}," 后台自动检查更新的时间间隔默认10分钟 ",-1)),m(ko,{modelValue:t.value.update_check_interval,"onUpdate:modelValue":I[4]||(I[4]=q=>t.value.update_check_interval=q),min:1,max:1440,step:1,suffix:"分钟"},null,8,["modelValue"])])]),n("div",w4,[n("div",k4,[m(_,{icon:"fluent-color:link-multiple-24"})]),n("div",$4,[I[18]||(I[18]=n("h3",{class:"setting-title"},"更新检查并发线程数",-1)),I[19]||(I[19]=n("p",{class:"setting-description"}," 同时检查更新的URL数量默认16 ",-1)),m(ko,{modelValue:t.value.update_check_threads,"onUpdate:modelValue":I[5]||(I[5]=q=>t.value.update_check_threads=q),min:1,max:64,step:1},null,8,["modelValue"])])]),n("div",C4,[n("div",I4,[m(_,{icon:"fluent-color:options-24"})]),n("div",S4,[I[23]||(I[23]=n("h3",{class:"setting-title"},"主题",-1)),I[24]||(I[24]=n("p",{class:"setting-description"},"选择应用主题",-1)),n("div",x4,[n("button",{class:$e(["theme-option",{active:t.value.theme==="light"}]),onClick:I[6]||(I[6]=q=>t.value.theme="light")},[m(_,{icon:"fluent-color:weather-sunny-low-24"}),I[20]||(I[20]=n("span",null,"浅色",-1))],2),n("button",{class:$e(["theme-option",{active:t.value.theme==="dark"}]),onClick:I[7]||(I[7]=q=>t.value.theme="dark")},[m(_,{icon:"fluent-emoji-flat:crescent-moon"}),I[21]||(I[21]=n("span",null,"深色",-1))],2),n("button",{class:$e(["theme-option",{active:t.value.theme==="auto"}]),onClick:I[8]||(I[8]=q=>t.value.theme="auto")},[m(_,{icon:"fluent-emoji-flat:a-button-blood-type"}),I[22]||(I[22]=n("span",null,"自动",-1))],2)])])])]),n("div",T4,[n("button",{class:"btn btn-secondary",onClick:w,disabled:o.value},[m(_,{icon:"fluent-color:arrow-sync-24"}),I[25]||(I[25]=be(" 重置为默认值 ",-1))],8,A4),n("button",{class:"btn btn-primary",onClick:b,disabled:o.value},[m(_,{icon:"fluent-color:document-add-24"}),be(" "+y(o.value?"保存中...":"保存设置"),1)],8,E4)]),n("div",R4,[I[34]||(I[34]=n("h2",{class:"section-title"},"关于",-1)),n("div",{class:"about-item",onClick:v},[n("div",U4,[m(_,{icon:"fluent-color:apps-24"})]),I[27]||(I[27]=n("div",{class:"about-content"},[n("h3",{class:"about-title"},"秋城落叶 应用商店"),n("p",{class:"about-description"},"由 QiuChenly 发布")],-1)),n("div",D4,[I[26]||(I[26]=n("span",{class:"version-text"},"测试版 0.1 Beta",-1)),m(_,{icon:"mdi:chevron-down",class:$e(["version-arrow",{expanded:l.value}])},null,8,["class"])])]),m(mt,{name:"slide-down"},{default:ft(()=>[l.value?(d(),p("div",M4,[n("div",P4,[I[33]||(I[33]=n("h4",{class:"detail-title"},"个人信息",-1)),n("div",L4,[I[29]||(I[29]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"开发者:"),n("span",{class:"detail-value"},"QiuChenly")],-1)),I[30]||(I[30]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"邮箱:"),n("span",{class:"detail-value"},"qiuchenly@outlook.com")],-1)),I[31]||(I[31]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"GitHub"),n("span",{class:"detail-value"},"github.com/QiuChenly")],-1)),I[32]||(I[32]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"版本:"),n("span",{class:"detail-value"},"测试版 0.1 Beta")],-1)),n("div",O4,[I[28]||(I[28]=n("span",{class:"detail-label"},"构建日期:",-1)),n("span",N4,y(Y(u)),1)])])])])):E("",!0)]),_:1})])]),m(ls,{toasts:Y(a),onRemove:Y(c)},null,8,["toasts","onRemove"]),m(nn,{visible:Y(f).visible.value,title:Y(f).config.value.title||"",message:Y(f).config.value.message||"",type:Y(f).config.value.type,"confirm-text":Y(f).config.value.confirmText,"cancel-text":Y(f).config.value.cancelText,onConfirm:Y(f).handleConfirm,onCancel:Y(f).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"])]))}}),B4=Ge(F4,[["__scopeId","data-v-8f5a3bc1"]]),V4={class:"profile-page"},j4={class:"profile-content"},q4={class:"info-card"},H4={class:"card-header"},z4={class:"card-content"},W4={class:"info-item"},K4={class:"value"},G4={class:"info-item"},Q4={class:"value"},J4={class:"info-item"},Z4={class:"value"},X4={class:"info-item"},Y4={class:"info-item"},e8={key:0,class:"admin-section"},t8={class:"section-header"},s8={class:"table-container"},n8={class:"table-header"},o8={class:"search-box"},l8={key:0,class:"loading"},a8={key:1,class:"error"},i8={key:2,class:"data-table"},r8={class:"actions"},c8=["onClick"],u8={key:3,class:"pagination"},d8=["disabled"],f8=["disabled"],p8={key:1,class:"admin-section"},v8={class:"section-header"},m8={class:"tabs"},h8={key:0,class:"table-container"},g8={class:"table-header"},y8={key:0,class:"loading"},b8={key:1,class:"error"},_8={key:2,class:"data-table"},w8={class:"actions"},k8=["onClick"],$8={key:1,class:"table-container"},C8={class:"table-header"},I8={key:0,class:"loading"},S8={key:1,class:"error"},x8={key:2,class:"data-table"},T8={class:"actions"},A8=["onClick"],E8={key:3,class:"pagination"},R8=["disabled"],U8=["disabled"],D8={key:2,class:"admin-section"},M8={class:"section-header"},P8={class:"tabs"},L8={class:"table-container"},O8={class:"table-header"},N8={key:0,class:"loading"},F8={key:1,class:"error"},B8={key:2,class:"data-table"},V8={key:3,class:"pagination"},j8=["disabled"],q8=["disabled"],H8={class:"modal-dialog"},z8={class:"modal-header"},W8={class:"modal-content"},K8={class:"form-group"},G8=["value"],Q8={class:"form-group"},J8={class:"form-group"},Z8={class:"form-group"},X8=["value"],Y8={class:"modal-footer"},e5=["disabled"],t5=ze({__name:"Profile",setup(e){const{user:t}=Ss(),{isQiuChenLy:s}=gl(),{toasts:o,success:l,error:a,info:i,removeToast:r}=Ft(),c=$n(),f=k("files"),u=k([]),v=k(!1),g=k(""),h=k([]),b=k(!1),w=k(""),C=k(1),I=k(20),q=k(1),N=k("all"),z=k([]),Z=k(!1),W=k(""),te=k(1),O=k(20),R=k(1),F=k([]),$=k(!1),U=k(""),se=k(1),M=k(20),G=k(1),B=k(""),V=k(!1),X=k(null),pe=k({bundleId:"",version:""}),Ne=k(!1),Pe=fe(()=>{if(!B.value)return F.value;const x=B.value.toLowerCase();return F.value.filter(S=>S.bundleId&&S.bundleId.toLowerCase().includes(x)||S.appName&&S.appName.toLowerCase().includes(x))}),Ee=x=>{if(!x)return"用户";switch(x){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},ye=x=>{switch(x){case"admin":return"role-admin";case"qiuchenly":return"role-super";default:return"role-user"}},de=async()=>{v.value=!0,g.value="";try{const x=await oe.getFiles();x.success&&x.data?u.value=Array.isArray(x.data)?x.data:[]:g.value=x.message||"加载文件列表失败"}catch(x){g.value=x.message||"加载文件列表失败"}finally{v.value=!1}},Te=async()=>{b.value=!0,w.value="";try{const x=await oe.getBinds(C.value,I.value);x.success&&x.data?(h.value=x.data.binds||x.data.list||x.data||[],q.value=Math.ceil((x.data.total||0)/I.value)):w.value=x.message||"加载绑定列表失败"}catch(x){w.value=x.message||"加载绑定列表失败"}finally{b.value=!1}},Me=async()=>{var x;if(!pe.value.bundleId||!pe.value.version){a("请填写Bundle ID和版本",2e3);return}if(!((x=X.value)!=null&&x.name)){a("文件信息不完整",2e3);return}Ne.value=!0;try{const S=await oe.bindFile({bundleId:pe.value.bundleId,version:pe.value.version,fileId:X.value.name});S.success?(l("文件绑定成功",2e3),V.value=!1,Te()):a(S.message||"绑定失败",3e3)}catch(S){a(S.message||"绑定失败",3e3)}finally{Ne.value=!1}},K=async x=>{if(await c.show({title:"删除绑定",message:`确定要删除绑定 "${x.bundleId} ${x.version}" 吗?`,type:"danger",confirmText:"删除",cancelText:"取消"}))try{const L=x._id||x.id;if(!L){a("绑定ID不存在",2e3);return}const P=await oe.deleteBind(L);P.success?(l("绑定删除成功",2e3),Te()):a(P.message||"删除失败",3e3)}catch(L){a(L.message||"删除失败",3e3)}},ie=x=>{if(!x)return"0 B";const S=1024,L=["B","KB","MB","GB"],P=Math.floor(Math.log(x)/Math.log(S));return Math.round(x/Math.pow(S,P)*100)/100+" "+L[P]},re=x=>{if(!x)return"-";try{return(x instanceof Date?x:new Date(x)).toLocaleString("zh-CN")}catch{return String(x)}},Ce=x=>{var P;if(!x)return"-";const S=(P=x.split(".").pop())==null?void 0:P.toLowerCase();return{dmg:"DMG镜像",pkg:"安装包",zip:"压缩包",tar:"压缩包",gz:"压缩包",app:"应用程序"}[S||""]||(S==null?void 0:S.toUpperCase())||"未知"},Le=async()=>{Z.value=!0,W.value="";try{const x=await oe.getOperationLogs(te.value,O.value);if(x.success&&x.data){z.value=x.data.logs||x.data.list||x.data||[];const S=x.data.total||x.data.count||z.value.length;R.value=Math.ceil(S/O.value)}else W.value=x.message||"加载操作日志失败"}catch(x){W.value=x.message||"加载操作日志失败"}finally{Z.value=!1}},T=async()=>{Z.value=!0,W.value="";try{const x=await oe.getMyOperationLogs(te.value,O.value);if(x.success&&x.data){z.value=x.data.logs||x.data.list||x.data||[];const S=x.data.total||x.data.count||z.value.length;R.value=Math.ceil(S/O.value)}else W.value=x.message||"加载操作日志失败"}catch(x){W.value=x.message||"加载操作日志失败"}finally{Z.value=!1}},D=x=>({UPLOAD_APP_INFO:"上传应用信息",UPLOAD_IMAGE:"上传图片",BIND_FILE:"绑定文件",DELETE_BIND:"删除绑定",DELETE_USER:"删除用户",UPGRADE_USER:"升级用户",SET_USER_STATUS:"设置用户状态"})[String(x)]||String(x),A=async()=>{if(s.value){$.value=!0,U.value="";try{const x=await oe.getAppInfoAll(se.value,M.value);if(x.success&&x.data){let S=[];Array.isArray(x.data)?S=x.data:x.data.list&&Array.isArray(x.data.list)?S=x.data.list:x.data.apps&&Array.isArray(x.data.apps)&&(S=x.data.apps),F.value=S;const L=x.data.total||x.data.count||S.length;G.value=Math.ceil(L/M.value)}else U.value=x.message||"加载App列表失败"}catch(x){U.value=x.message||"加载App列表失败"}finally{$.value=!1}}},J=x=>{const S=[`Bundle ID: ${x.bundleId}`,`名称: ${x.appName||"未设置"}`,`版本: ${x.appVersion||"未设置"}`,`描述: ${x.description||"无描述"}`].join(`
`);i(S,5e3)},ce=x=>{X.value=x,pe.value={bundleId:"",version:""},V.value=!0,F.value.length===0&&!$.value&&A()};return rt(()=>{s.value&&(de(),Te(),Le())}),(x,S)=>{var L,P,ee,ue,ve,Ie,Oe,Ke;return d(),p("div",V4,[S[49]||(S[49]=n("div",{class:"profile-header"},[n("h1",null,"个人中心"),n("p",{class:"subtitle"},"管理您的账户和系统设置")],-1)),n("div",j4,[n("div",q4,[n("div",H4,[m(_,{icon:"mdi:account-circle",class:"card-icon"}),S[18]||(S[18]=n("h2",null,"用户信息",-1))]),n("div",z4,[n("div",W4,[S[19]||(S[19]=n("span",{class:"label"},"用户名:",-1)),n("span",K4,y((L=Y(t))==null?void 0:L.username),1)]),n("div",G4,[S[20]||(S[20]=n("span",{class:"label"},"昵称:",-1)),n("span",Q4,y(((P=Y(t))==null?void 0:P.nickName)||"未设置"),1)]),n("div",J4,[S[21]||(S[21]=n("span",{class:"label"},"邮箱:",-1)),n("span",Z4,y(((ee=Y(t))==null?void 0:ee.email)||"未设置"),1)]),n("div",X4,[S[22]||(S[22]=n("span",{class:"label"},"角色:",-1)),n("span",{class:$e(["value role-badge",ye((ue=Y(t))==null?void 0:ue.role)])},y(Ee((ve=Y(t))==null?void 0:ve.role)),3)]),n("div",Y4,[S[23]||(S[23]=n("span",{class:"label"},"状态:",-1)),n("span",{class:$e(["value status-badge",((Ie=Y(t))==null?void 0:Ie.status)==="active"?"active":"inactive"])},y(((Oe=Y(t))==null?void 0:Oe.status)==="active"?"正常":"禁用"),3)])])]),Y(s)?(d(),p("div",e8,[n("div",t8,[m(_,{icon:"mdi:apps",class:"section-icon"}),S[24]||(S[24]=n("h2",null,"App管理",-1))]),n("div",s8,[n("div",n8,[n("div",o8,[m(_,{icon:"mdi:magnify"}),Be(n("input",{"onUpdate:modelValue":S[0]||(S[0]=ge=>B.value=ge),type:"text",placeholder:"搜索Bundle ID或应用名称...",onInput:A},null,544),[[Je,B.value]])]),n("button",{onClick:A,class:"btn btn-primary"},[m(_,{icon:"mdi:refresh"}),S[25]||(S[25]=be(" 刷新 ",-1))])]),$.value?(d(),p("div",l8,[...S[26]||(S[26]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):U.value?(d(),p("div",a8,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(U.value),1)])):(d(),p("table",i8,[S[27]||(S[27]=n("thead",null,[n("tr",null,[n("th",null,"Bundle ID"),n("th",null,"应用名称"),n("th",null,"版本"),n("th",null,"描述"),n("th",null,"操作")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(Pe.value,ge=>(d(),p("tr",{key:ge._id||ge.id||ge.bundleId},[n("td",null,y(ge.bundleId),1),n("td",null,y(ge.appName||"-"),1),n("td",null,y(ge.appVersion||"-"),1),n("td",null,y((ge.description||"").substring(0,50))+y(ge.description&&ge.description.length>50?"...":""),1),n("td",r8,[n("button",{onClick:Xe=>J(ge),class:"btn-icon",title:"查看详情"},[m(_,{icon:"mdi:eye"})],8,c8)])]))),128))])])),F.value.length>0?(d(),p("div",u8,[n("button",{onClick:S[1]||(S[1]=ge=>se.value>1&&(se.value--,A())),disabled:se.value===1,class:"btn btn-sm"}," 上一页 ",8,d8),n("span",null,"第 "+y(se.value)+" 页,共 "+y(G.value)+" 页",1),n("button",{onClick:S[2]||(S[2]=ge=>se.value<G.value&&(se.value++,A())),disabled:se.value>=G.value,class:"btn btn-sm"}," 下一页 ",8,f8)])):E("",!0)])])):E("",!0),Y(s)?(d(),p("div",p8,[n("div",v8,[m(_,{icon:"mdi:file-document",class:"section-icon"}),S[28]||(S[28]=n("h2",null,"文件管理",-1))]),n("div",m8,[n("button",{class:$e(["tab-button",{active:f.value==="files"}]),onClick:S[3]||(S[3]=ge=>f.value="files")},[m(_,{icon:"mdi:file"}),S[29]||(S[29]=be(" 文件列表 ",-1))],2),n("button",{class:$e(["tab-button",{active:f.value==="binds"}]),onClick:S[4]||(S[4]=ge=>f.value="binds")},[m(_,{icon:"mdi:link"}),S[30]||(S[30]=be(" 文件绑定 ",-1))],2)]),f.value==="files"?(d(),p("div",h8,[n("div",g8,[n("button",{onClick:de,class:"btn btn-primary"},[m(_,{icon:"mdi:refresh"}),S[31]||(S[31]=be(" 刷新 ",-1))])]),v.value?(d(),p("div",y8,[...S[32]||(S[32]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):g.value?(d(),p("div",b8,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(g.value),1)])):(d(),p("table",_8,[S[33]||(S[33]=n("thead",null,[n("tr",null,[n("th",null,"文件名"),n("th",null,"大小"),n("th",null,"类型"),n("th",null,"修改时间"),n("th",null,"操作")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(u.value,(ge,Xe)=>(d(),p("tr",{key:ge.name||Xe},[n("td",null,y(ge.name),1),n("td",null,y(ie(ge.size)),1),n("td",null,y(Ce(ge.name)),1),n("td",null,y(re(ge.lastModified)),1),n("td",w8,[n("button",{onClick:yt=>ce(ge),class:"btn-icon",title:"绑定到应用"},[m(_,{icon:"mdi:link"})],8,k8)])]))),128))])]))])):E("",!0),f.value==="binds"?(d(),p("div",$8,[n("div",C8,[n("button",{onClick:Te,class:"btn btn-primary"},[m(_,{icon:"mdi:refresh"}),S[34]||(S[34]=be(" 刷新 ",-1))])]),b.value?(d(),p("div",I8,[...S[35]||(S[35]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):w.value?(d(),p("div",S8,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(w.value),1)])):(d(),p("table",x8,[S[36]||(S[36]=n("thead",null,[n("tr",null,[n("th",null,"Bundle ID"),n("th",null,"版本"),n("th",null,"文件名"),n("th",null,"绑定时间"),n("th",null,"操作")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(h.value,ge=>(d(),p("tr",{key:ge._id||ge.id},[n("td",null,y(ge.bundleId),1),n("td",null,y(ge.version),1),n("td",null,y(ge.fileId),1),n("td",null,y(re(ge.createdAt)),1),n("td",T8,[n("button",{onClick:Xe=>K(ge),class:"btn-icon danger",title:"删除绑定"},[m(_,{icon:"mdi:delete"})],8,A8)])]))),128))])])),h.value.length>0?(d(),p("div",E8,[n("button",{onClick:S[5]||(S[5]=ge=>C.value>1&&(C.value--,Te())),disabled:C.value===1,class:"btn btn-sm"}," 上一页 ",8,R8),n("span",null,"第 "+y(C.value)+" 页,共 "+y(q.value)+" 页",1),n("button",{onClick:S[6]||(S[6]=ge=>C.value<q.value&&(C.value++,Te())),disabled:C.value>=q.value,class:"btn btn-sm"}," 下一页 ",8,U8)])):E("",!0)])):E("",!0)])):E("",!0),Y(s)?(d(),p("div",D8,[n("div",M8,[m(_,{icon:"mdi:file-document-outline",class:"section-icon"}),S[37]||(S[37]=n("h2",null,"操作日志",-1))]),n("div",P8,[n("button",{class:$e(["tab-button",{active:N.value==="all"}]),onClick:S[7]||(S[7]=ge=>{N.value="all",Le()})},[m(_,{icon:"mdi:file-document-multiple"}),S[38]||(S[38]=be(" 所有日志 ",-1))],2),n("button",{class:$e(["tab-button",{active:N.value==="my"}]),onClick:S[8]||(S[8]=ge=>{N.value="my",T()})},[m(_,{icon:"mdi:account"}),S[39]||(S[39]=be(" 我的日志 ",-1))],2)]),n("div",L8,[n("div",O8,[n("button",{onClick:S[9]||(S[9]=ge=>N.value==="all"?Le():T()),class:"btn btn-primary"},[m(_,{icon:"mdi:refresh"}),S[40]||(S[40]=be(" 刷新 ",-1))])]),Z.value?(d(),p("div",N8,[...S[41]||(S[41]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):W.value?(d(),p("div",F8,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(W.value),1)])):(d(),p("table",B8,[S[42]||(S[42]=n("thead",null,[n("tr",null,[n("th",null,"操作类型"),n("th",null,"用户"),n("th",null,"路径"),n("th",null,"时间")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(z.value,ge=>{var Xe;return d(),p("tr",{key:ge._id||ge.id},[n("td",null,y(D(ge.operationType)),1),n("td",null,y(((Xe=ge.userId)==null?void 0:Xe.username)||ge.userId||"-"),1),n("td",null,y(ge.path||"-"),1),n("td",null,y(re(ge.createdAt)),1)])}),128))])])),z.value.length>0?(d(),p("div",V8,[n("button",{onClick:S[10]||(S[10]=ge=>te.value>1&&(te.value--,N.value==="all"?Le():T())),disabled:te.value===1,class:"btn btn-sm"}," 上一页 ",8,j8),n("span",null,"第 "+y(te.value)+" 页,共 "+y(R.value)+" 页",1),n("button",{onClick:S[11]||(S[11]=ge=>te.value<R.value&&(te.value++,N.value==="all"?Le():T())),disabled:te.value>=R.value,class:"btn btn-sm"}," 下一页 ",8,q8)])):E("",!0)])])):E("",!0),V.value?(d(),p("div",{key:3,class:"modal-overlay",onClick:S[17]||(S[17]=je(ge=>V.value=!1,["self"]))},[n("div",H8,[n("div",z8,[S[43]||(S[43]=n("h3",null,"绑定文件到应用",-1)),n("button",{onClick:S[12]||(S[12]=ge=>V.value=!1),class:"close-btn"},[m(_,{icon:"mdi:close"})])]),n("div",W8,[n("div",K8,[S[45]||(S[45]=n("label",null,"选择应用:",-1)),Be(n("select",{"onUpdate:modelValue":S[13]||(S[13]=ge=>pe.value.bundleId=ge),class:"form-select"},[S[44]||(S[44]=n("option",{value:""},"请选择应用",-1)),(d(!0),p(he,null,Re(F.value,ge=>(d(),p("option",{key:ge.bundleId,value:ge.bundleId},y(ge.appName||ge.bundleId)+" ("+y(ge.appVersion||"未知版本")+") ",9,G8))),128))],512),[[Pa,pe.value.bundleId]])]),n("div",Q8,[S[46]||(S[46]=n("label",null,"Bundle ID (或手动输入):",-1)),Be(n("input",{"onUpdate:modelValue":S[14]||(S[14]=ge=>pe.value.bundleId=ge),type:"text",placeholder:"com.example.app"},null,512),[[Je,pe.value.bundleId]])]),n("div",J8,[S[47]||(S[47]=n("label",null,"版本:",-1)),Be(n("input",{"onUpdate:modelValue":S[15]||(S[15]=ge=>pe.value.version=ge),type:"text",placeholder:"1.0.0"},null,512),[[Je,pe.value.version]])]),n("div",Z8,[S[48]||(S[48]=n("label",null,"文件:",-1)),n("input",{value:(Ke=X.value)==null?void 0:Ke.name,type:"text",disabled:""},null,8,X8)])]),n("div",Y8,[n("button",{onClick:S[16]||(S[16]=ge=>V.value=!1),class:"btn btn-secondary"},"取消"),n("button",{onClick:Me,class:"btn btn-primary",disabled:Ne.value},y(Ne.value?"绑定中...":"确认绑定"),9,e5)])])])):E("",!0)]),m(nn,{visible:Y(c).visible.value,title:Y(c).config.value.title||"",message:Y(c).config.value.message||"",type:Y(c).config.value.type,"confirm-text":Y(c).config.value.confirmText,"cancel-text":Y(c).config.value.cancelText,onConfirm:Y(c).handleConfirm,onCancel:Y(c).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(ls,{toasts:Y(o),onRemove:Y(r)},null,8,["toasts","onRemove"])])}}}),s5=Ge(t5,[["__scopeId","data-v-fceef32a"]]),n5={class:"new-features-page"},o5={class:"features-container"},l5={class:"features-list"},a5={class:"feature-header"},i5={class:"feature-title"},r5={class:"feature-description"},c5={key:0,class:"feature-action"},u5=["onClick"],d5=ze({__name:"NewFeatures",setup(e){const t=Wt(),s=k([{title:"系统通知功能",description:"全新的系统通知中心,集中管理所有重要通知。包括讨论区申请通过/拒绝通知、举报处理结果通知等。系统通知支持展开查看详细信息,包括申请详情、举报详情等。支持标记全部为已读,让你不错过任何重要信息。",action:{type:"button",label:"前往消息通知",route:"/notifications"}},{title:"讨论区申请开通功能",description:"如果某个应用的讨论区尚未开放,你可以点击「申请开放」按钮提交申请。申请提交后,管理员会收到通知并可以审核你的申请。申请通过后,讨论区将自动开放,你可以正常使用该讨论区的所有功能。",action:{type:"button",label:"前往讨论区",route:"/discussion"}},{title:"讨论区管理功能",description:"管理员可以在管理员面板中管理所有讨论区。支持按状态筛选(全部、已启用、已禁用),可以快速搜索讨论区。管理员可以一键启用或禁用某个讨论区,控制用户对讨论区的访问权限。所有讨论区默认禁用,需要管理员手动启用。",action:{type:"button",label:"前往管理员面板",route:"/admin"}},{title:"申请开通管理功能",description:"管理员可以在讨论区管理页面中查看所有用户的申请开通请求。支持一键批准全部待处理申请大大提高审核效率。每个申请都显示应用名称、Bundle ID、申请人、申请时间等信息方便管理员快速做出决策。",action:{type:"button",label:"前往管理员面板",route:"/admin"}},{title:"私信系统",description:"全新的一对一私信功能,让你可以与其他用户进行私密交流。支持发送文本消息、图片和文件。你可以拒收特定用户的消息,或拉黑用户以完全阻止其联系。私信支持实时对话,界面简洁美观,让你能够轻松管理所有会话。",action:{type:"button",label:"前往私信",route:"/messages"}},{title:"用户操作菜单",description:"在讨论区的帖子、回复和楼中楼中,点击任意用户名即可弹出操作菜单。你可以快速举报用户或发送私信,操作更加便捷高效。"},{title:"管理员面板",description:"为管理员提供完整的管理工具,包括用户管理、帖子管理、违规处理和系统设置。支持搜索和筛选功能,可以快速定位和处理问题。违规处理支持按状态筛选(全部、待处理、已处理、已驳回),让管理工作更加高效。",action:{type:"button",label:"前往管理员面板",route:"/admin"}},{title:"消息通知中心",description:"全新的消息通知功能,集中管理所有通知。包括我举报的处理状态、我回复的帖子动态、回复我的通知,以及私信消息。支持按类型筛选和标记已读,让你不错过任何重要信息。",action:{type:"button",label:"前往消息通知",route:"/notifications"}},{title:"优化的搜索体验",description:"搜索框新增蓝色焦点指示条,更清晰地显示搜索状态。搜索结果下拉框优化了内部样式,移除了不必要的圆角,界面更加简洁。搜索历史记录支持快速选择和删除,让搜索更加便捷。"},{title:"讨论区功能",description:"为每个已安装的应用自动创建讨论板块支持发布帖子、回复和楼中楼回复。你可以上传图片最多5张每张10M以内和文件最多5个每个20M以内支持图片预览和文件下载。还可以对帖子进行点赞、点踩和举报操作。",action:{type:"button",label:"前往讨论区",route:"/discussion"}},{title:"发帖和回复功能",description:"在讨论区中,你可以发布新帖子,包含标题、内容和附件。支持对帖子进行回复,以及嵌套的楼中楼回复功能。所有回复都可以附带图片和文件,让你能够更好地分享信息和资源。",action:{type:"button",label:"前往讨论区",route:"/discussion"}},{title:"举报功能",description:"新增完善的举报功能,支持举报帖子、回复和楼中楼回复。你可以选择多种举报类型(涉黄、诈骗、恶意引流、侮辱谩骂、引战、不符合社会核心主义价值观),并可添加补充说明,帮助我们更好地处理违规内容。举报按钮采用淡红色主题,更加醒目。"},{title:"支持下载未安装的应用",description:'现在你可以在"来自官方"页面浏览和下载未在 Mac 上安装的应用。应用列表会分为"已安装的应用"和"未在此Mac上安装"两个部分,让你可以轻松发现和下载新的应用。只需点击下载按钮,选择版本即可开始下载。',action:{type:"button",label:"前往来自官方",route:"/official"}},{title:"QiuChenly 应用商店产品页面的最新更新日期",description:'QiuChenly 应用商店产品页面现在在"其他信息"部分显示上次更新日期,使你能够轻松了解产品的维护和发布节奏。此日期反映了 QiuChenly 应用商店用户可以使用最新程序包更新的时间。'},{title:"焕然一新的登陆体验",description:"重新设计的登陆体验可让你比以往更轻松地了解最新内容、优惠和促销,发现 QiuChenly 应用商店中的新增功能和令人兴奋的内容。"},{title:"更新更多应用",description:'现在,你可以在 QiuChenly 应用商店中轻松、直接地更新我们的发布者提供的应用。你可以从"产品"页面进行更新,也可以转到"下载"页面,然后单击"检查更新"。如果任何已安装的此类型应用有更新,它将显示在待处理列表中。只需单击"更新"按钮即可。',action:{type:"button",label:"查看下载",route:"/downloads"}},{title:"新产品详细信息页面布局",description:"经过改进的产品详细信息页面布局以开发人员提供的主题视频和图像为核心,旨在提供具有凝聚力和视觉吸引力的体验。"},{title:"增强的搜索功能",description:"全新的搜索算法能够更准确地匹配你的搜索意图,提供更相关的结果。同时支持智能推荐和搜索历史记录,让发现应用变得更加便捷。"},{title:"优化的下载管理",description:"下载管理界面现在提供更详细的进度信息,包括下载速度、剩余时间和文件大小。你可以随时暂停、恢复或取消下载任务。",action:{type:"button",label:"前往下载管理",route:"/downloads"}},{title:"增强的下载管理系统",description:"新增下载管理数据库和下载代理功能,提供更稳定可靠的下载服务。本地数据管理系统让你可以更好地管理应用配置和设置,所有数据都安全地存储在本地。"},{title:"完善的API和服务器功能",description:"HTTP服务器处理程序已全面更新现在支持应用信息和下载任务的完整管理。增强的API接口支持应用配置和设置的获取与更新让你可以更灵活地管理应用。"},{title:"重构的用户界面",description:"前端组件已全面重构,采用现代化的样式和布局设计,带来更流畅的用户体验。界面响应速度更快,交互更加直观,整体性能和可用性显著提升。"},{title:"应用推荐和官方应用",description:"新增应用推荐功能,帮助你发现更多优质应用。官方应用页面让你可以浏览和下载来自官方的应用,所有应用都经过 QiuChenly 认证,是可信来源,安全可靠。",action:{type:"button",label:"查看官方应用",route:"/official"}},{title:"增强的应用管理",description:"应用管理功能全面增强,支持应用的打开、更新、配置等操作。路由系统已更新以支持新特性,让你可以更方便地访问各种功能。"}]),o=l=>{l.route?t.push(l.route):l.url&&window.open(l.url,"_blank")};return(l,a)=>(d(),p("div",n5,[n("div",o5,[a[1]||(a[1]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"QiuChenly 应用商店中的新增功能"),n("p",{class:"page-subtitle"}," 我们很高兴分享改进,为你提供更好的 QiuChenly 应用商店。 ")],-1)),n("div",l5,[(d(!0),p(he,null,Re(s.value,(i,r)=>(d(),p("div",{key:r,class:"feature-item"},[n("div",a5,[n("h2",i5,y(i.title),1),a[0]||(a[0]=n("span",{class:"new-badge"},"新",-1))]),n("p",r5,y(i.description),1),i.action?(d(),p("div",c5,[i.action.type==="button"?(d(),p("button",{key:0,class:"action-button",onClick:c=>o(i.action)},y(i.action.label),9,u5)):E("",!0)])):E("",!0)]))),128))])])]))}}),f5=Ge(d5,[["__scopeId","data-v-a5b7a42f"]]),p5={class:"apps-page"},v5={class:"page-container"},m5={key:0,class:"loading"},h5={key:1,class:"error"},g5={key:2,class:"empty"},y5={key:3,class:"apps-grid"},b5={key:4,class:"list-footer"},_5={class:"footer-stats"},w5={class:"stat-item"},k5={class:"stat-value"},$5=ze({__name:"Apps",setup(e){const t=k([]),s=k(!0),o=k(""),l=async()=>{s.value=!0,o.value="";try{const i=await oe.getApps();t.value=i.sort((r,c)=>r.name.localeCompare(c.name))}catch(i){console.error("加载应用列表失败:",i),o.value="加载应用列表失败,请检查服务是否运行",t.value=[]}finally{s.value=!1}},a=async i=>{console.log(`应用 ${i} 已更新`),await l()};return rt(()=>{l()}),(i,r)=>(d(),p("div",p5,[n("div",v5,[r[4]||(r[4]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"所有应用"),n("p",{class:"page-description"},"系统中所有已安装的应用")],-1)),s.value?(d(),p("div",m5,[...r[0]||(r[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):o.value?(d(),p("div",h5,[n("p",null,y(o.value),1),n("button",{onClick:l,class:"btn btn-primary"},"重试")])):t.value.length===0?(d(),p("div",g5,[m(_,{icon:"fluent-color:apps-24",class:"empty-icon"}),r[1]||(r[1]=n("p",null,"没有找到应用",-1)),r[2]||(r[2]=n("p",{class:"empty-hint"},"系统中没有已安装的应用",-1))])):(d(),p("div",y5,[(d(!0),p(he,null,Re(t.value,c=>(d(),Fe(oo,{key:c.bundleId,app:c,mode:"list",onUpdated:a},null,8,["app"]))),128))])),t.value.length>0?(d(),p("div",b5,[n("div",_5,[n("span",w5,[r[3]||(r[3]=n("span",{class:"stat-label"},"总计:",-1)),n("span",k5,y(t.value.length),1)])])])):E("",!0)])]))}}),C5=Ge($5,[["__scopeId","data-v-3d91182b"]]),I5={class:"official-apps-page"},S5={class:"page-container"},x5={key:0,class:"loading"},T5={key:1,class:"error"},A5={key:2,class:"empty"},E5={key:3},R5={key:0,class:"app-section"},U5={class:"apps-grid"},D5={key:1,class:"app-section"},M5={class:"apps-grid"},P5={key:4,class:"list-footer"},L5={class:"footer-stats"},O5={class:"stat-item"},N5={class:"stat-value"},F5={class:"stat-item"},B5={class:"stat-value"},V5={class:"stat-item"},j5={class:"stat-value"},q5=ze({__name:"OfficialApps",setup(e){const t=k([]),s=k(!0),o=k(""),l=fe(()=>t.value.sort((f,u)=>f.name.localeCompare(u.name))),a=fe(()=>l.value.filter(f=>f.path&&f.path.length>0)),i=fe(()=>l.value.filter(f=>!f.path||f.path.length===0)),r=async()=>{s.value=!0,o.value="";try{const f=await oe.getStoreApps();t.value=f}catch(f){console.error("加载应用列表失败:",f),o.value="加载应用列表失败,请检查服务是否运行",t.value=[]}finally{s.value=!1}},c=async f=>{console.log(`应用 ${f} 已更新`),await r()};return rt(()=>{r()}),(f,u)=>(d(),p("div",I5,[n("div",S5,[u[8]||(u[8]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"来自官方"),n("p",{class:"page-description"},"浏览和下载经过 QiuChenly 认证的可信来源应用")],-1)),s.value?(d(),p("div",x5,[...u[0]||(u[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):o.value?(d(),p("div",T5,[n("p",null,y(o.value),1),n("button",{onClick:r,class:"btn btn-primary"},"重试")])):l.value.length===0?(d(),p("div",A5,[m(_,{icon:"fluent-color:shield-checkmark-24",class:"empty-icon"}),u[1]||(u[1]=n("p",null,"没有找到来自官方的应用",-1)),u[2]||(u[2]=n("p",{class:"empty-hint"},"当前没有可用的应用更新",-1))])):(d(),p("div",E5,[a.value.length>0?(d(),p("div",R5,[u[3]||(u[3]=n("h3",{class:"section-title"},"已安装的应用",-1)),n("div",U5,[(d(!0),p(he,null,Re(a.value,v=>(d(),Fe(oo,{key:v.bundleId,app:v,mode:"list",onUpdated:c},null,8,["app"]))),128))])])):E("",!0),i.value.length>0?(d(),p("div",D5,[u[4]||(u[4]=n("h3",{class:"section-title"},"未在此Mac上安装",-1)),n("div",M5,[(d(!0),p(he,null,Re(i.value,v=>(d(),Fe(oo,{key:v.bundleId,app:v,mode:"list",onUpdated:c},null,8,["app"]))),128))])])):E("",!0)])),l.value.length>0?(d(),p("div",P5,[n("div",L5,[n("span",O5,[u[5]||(u[5]=n("span",{class:"stat-label"},"总计:",-1)),n("span",N5,y(l.value.length),1)]),n("span",F5,[u[6]||(u[6]=n("span",{class:"stat-label"},"已安装:",-1)),n("span",B5,y(a.value.length),1)]),n("span",V5,[u[7]||(u[7]=n("span",{class:"stat-label"},"未安装:",-1)),n("span",j5,y(i.value.length),1)])])])):E("",!0)])]))}}),H5=Ge(q5,[["__scopeId","data-v-7fd628ad"]]),z5={class:"discussion-forums-page"},W5={class:"page-container"},K5={key:0,class:"loading"},G5={key:1,class:"error"},Q5={key:2,class:"empty"},J5={key:3,class:"forums-grid"},Z5=["onClick"],X5={class:"forum-icon-wrapper"},Y5={class:"forum-icon"},e6=["src","alt","onLoad","onError"],t6={class:"forum-info"},s6={class:"forum-name"},n6={class:"forum-bundle-id"},o6={key:0,class:"forum-status-disabled"},l6=["onClick","disabled"],a6={key:4,class:"list-footer"},i6={class:"footer-stats"},r6={class:"stat-item"},c6={class:"stat-value"},u6=ze({__name:"DiscussionForums",setup(e){const t=Wt(),s=k([]),o=k(!0),l=k(""),a=k(new Map),i=Ft(),r=async()=>{try{const h=await oe.getForumPermissions();a.value.clear(),h.forEach(b=>{a.value.set(b.bundleId,b)})}catch(h){console.error("加载讨论区权限失败:",h),a.value.clear()}},c=async()=>{o.value=!0,l.value="";try{const b=(await oe.getApps()).filter(N=>N.path&&N.path.length>0),w=b.map(N=>N.bundleId),C=await oe.getForumPermissionsBatch(w),I=new Set(C),q=b.map(N=>({bundleId:N.bundleId,name:N.name,iconUrl:oe.getAppIconUrl(N.bundleId),iconLoaded:!1,iconError:!1,enabled:I.has(N.bundleId),requested:!1}));s.value=q,s.value.sort((N,z)=>N.name.localeCompare(z.name))}catch(h){console.error("加载应用列表失败:",h),l.value="加载应用列表失败,请检查服务是否运行",s.value=[]}finally{o.value=!1}},f=h=>{const b=s.value.find(w=>w.bundleId===h);b&&(b.iconLoaded=!0)},u=h=>{const b=s.value.find(w=>w.bundleId===h);b&&(b.iconError=!0,b.iconLoaded=!0)},v=h=>{const b=s.value.find(w=>w.bundleId===h);b&&b.enabled&&t.push(`/discussion/${h}`)},g=async h=>{var w,C;const b=s.value.find(I=>I.bundleId===h);if(!(!b||b.requested))try{const I=await oe.requestForumOpen(h,b.name);I.success?(b.requested=!0,i.success("申请提交成功,等待管理员审核")):i.error(I.message||"申请失败,请稍后重试")}catch(I){console.error("申请开放失败:",I);const q=((C=(w=I.response)==null?void 0:w.data)==null?void 0:C.message)||I.message||"申请失败,请稍后重试";i.error(q)}};return rt(async()=>{await r(),await c()}),(h,b)=>(d(),p(he,null,[n("div",z5,[n("div",W5,[b[4]||(b[4]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"讨论区"),n("p",{class:"page-description"},"浏览和参与已安装应用的讨论")],-1)),o.value?(d(),p("div",K5,[...b[0]||(b[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载板块中...",-1)])])):l.value?(d(),p("div",G5,[n("p",null,y(l.value),1),n("button",{onClick:c,class:"btn btn-primary"},"重试")])):s.value.length===0?(d(),p("div",Q5,[m(_,{icon:"fluent-color:chat-bubbles-question-24",class:"empty-icon"}),b[1]||(b[1]=n("p",null,"没有找到讨论板块",-1)),b[2]||(b[2]=n("p",{class:"empty-hint"},"系统中没有已安装的应用",-1))])):(d(),p("div",J5,[(d(!0),p(he,null,Re(s.value,w=>(d(),p("div",{key:w.bundleId,class:$e(["forum-card",{disabled:!w.enabled}]),onClick:C=>w.enabled?v(w.bundleId):null},[n("div",X5,[n("div",Y5,[w.iconUrl?Be((d(),p("img",{key:0,src:w.iconUrl,alt:w.name,onLoad:C=>f(w.bundleId),onError:C=>u(w.bundleId)},null,40,e6)),[[es,w.iconLoaded&&!w.iconError]]):E("",!0),Be(n("div",{class:"icon-placeholder"},y(w.name.charAt(0).toUpperCase()),513),[[es,!w.iconUrl||!w.iconLoaded||w.iconError]])])]),n("div",t6,[n("h3",s6,y(w.name),1),n("p",n6,y(w.bundleId),1),w.enabled?E("",!0):(d(),p("p",o6,"未开放")),w.enabled?E("",!0):(d(),p("button",{key:1,class:"request-open-btn",onClick:je(C=>g(w.bundleId),["stop"]),disabled:w.requested},y(w.requested?"已申请":"申请开放"),9,l6))])],10,Z5))),128))])),s.value.length>0?(d(),p("div",a6,[n("div",i6,[n("span",r6,[b[3]||(b[3]=n("span",{class:"stat-label"},"总计:",-1)),n("span",c6,y(s.value.length),1)])])])):E("",!0)])]),m(ls,{toasts:Y(i).toasts.value,onRemove:Y(i).removeToast},null,8,["toasts","onRemove"])],64))}}),d6=Ge(u6,[["__scopeId","data-v-247cb56a"]]),f6={class:"dialog-header"},p6={class:"header-icon"},v6={class:"dialog-content"},m6={class:"report-info-section"},h6={class:"section-title"},g6={class:"info-grid"},y6={class:"info-row"},b6={class:"info-value"},_6={class:"info-row"},w6={class:"info-value"},k6={class:"info-row full-width"},$6={class:"info-content"},C6={class:"report-type-section"},I6={class:"section-title"},S6={class:"report-types"},x6=["onClick"],T6={class:"type-label"},A6={class:"report-comment-section"},E6={class:"section-title"},R6={class:"char-count"},U6={class:"dialog-footer"},D6=["disabled"],M6=ze({__name:"ReportDialog",props:{visible:{type:Boolean,default:!1},reportInfo:{default:null}},emits:["close","submit"],setup(e,{emit:t}){const s=e,o=t,l=[{value:"pornography",label:"涉黄",icon:"mdi:eye-off-outline"},{value:"fraud",label:"诈骗",icon:"mdi:shield-alert-outline"},{value:"malicious_drainage",label:"恶意引流",icon:"mdi:link-variant-off"},{value:"abuse",label:"侮辱谩骂",icon:"mdi:emoticon-angry-outline"},{value:"trolling",label:"引战",icon:"mdi:fire"},{value:"against_values",label:"不符合社会核心主义价值观",icon:"mdi:flag-outline"}],a=k([]),i=k("");st(()=>s.visible,u=>{u&&(a.value=[],i.value="")});const r=u=>{const v=a.value.indexOf(u);v>-1?a.value.splice(v,1):a.value.push(u)},c=()=>{o("close")},f=()=>{a.value.length===0||!s.reportInfo||o("submit",a.value,i.value,s.reportInfo)};return(u,v)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"dialog-fade"},{default:ft(()=>{var g,h,b;return[e.visible?(d(),p("div",{key:0,class:"dialog-overlay",onClick:je(c,["self"])},[n("div",{class:"dialog-container",onClick:v[1]||(v[1]=je(()=>{},["stop"]))},[n("div",f6,[n("div",p6,[m(_,{icon:"mdi:flag"})]),v[2]||(v[2]=n("h2",{class:"dialog-title"},"举报内容",-1)),n("button",{class:"dialog-close",onClick:c,"aria-label":"关闭"},[m(_,{icon:"mdi:close"})])]),n("div",v6,[n("div",m6,[n("div",h6,[m(_,{icon:"mdi:information-outline",class:"title-icon"}),v[3]||(v[3]=n("span",null,"被举报信息",-1))]),n("div",g6,[n("div",y6,[v[4]||(v[4]=n("span",{class:"info-label"},"用户ID",-1)),n("span",b6,y(((g=e.reportInfo)==null?void 0:g.userId)||"-"),1)]),n("div",_6,[v[5]||(v[5]=n("span",{class:"info-label"},"用户昵称",-1)),n("span",w6,y(((h=e.reportInfo)==null?void 0:h.userName)||"-"),1)]),n("div",k6,[v[6]||(v[6]=n("span",{class:"info-label"},"内容",-1)),n("div",$6,y(((b=e.reportInfo)==null?void 0:b.content)||"-"),1)])])]),n("div",C6,[n("div",I6,[m(_,{icon:"mdi:alert-circle-outline",class:"title-icon"}),v[7]||(v[7]=n("span",null,"选择举报类型",-1)),v[8]||(v[8]=n("span",{class:"required"},"*",-1))]),n("div",S6,[(d(),p(he,null,Re(l,w=>n("button",{key:w.value,type:"button",class:$e(["report-type-btn",{active:a.value.includes(w.value)}]),onClick:C=>r(w.value)},[m(_,{icon:w.icon,class:"type-icon"},null,8,["icon"]),n("span",T6,y(w.label),1),a.value.includes(w.value)?(d(),Fe(_,{key:0,icon:"mdi:check-circle",class:"check-icon"})):E("",!0)],10,x6)),64))])]),n("div",A6,[n("div",E6,[m(_,{icon:"mdi:comment-text-outline",class:"title-icon"}),v[9]||(v[9]=n("span",null,"补充说明(可选)",-1))]),Be(n("textarea",{"onUpdate:modelValue":v[0]||(v[0]=w=>i.value=w),class:"comment-textarea",placeholder:"请详细描述举报原因,帮助我们更好地处理...",rows:"4",maxlength:"500"},null,512),[[Je,i.value]]),n("div",R6,y(i.value.length)+"/500",1)])]),n("div",U6,[n("button",{class:"btn btn-secondary",onClick:c},"取消"),n("button",{class:"btn btn-primary",onClick:f,disabled:a.value.length===0},[m(_,{icon:"mdi:send",class:"btn-icon"}),v[10]||(v[10]=be(" 提交举报 ",-1))],8,D6)])])])):E("",!0)]}),_:1})]))}}),ed=Ge(M6,[["__scopeId","data-v-9b50bd9b"]]),P6={class:"avatar-background"},L6={class:"background-avatar-blur"},O6=["src"],N6={class:"card-content"},F6={class:"content-layout"},B6={class:"avatar-wrapper"},V6={class:"user-info"},j6={class:"user-name"},q6={class:"action-buttons"},H6=ze({__name:"UserProfileCard",props:{visible:{type:Boolean,default:!1},userId:{default:""},userName:{default:""},position:{default:void 0},avatarUrl:{default:void 0},avatarId:{default:void 0}},emits:["close","sendMessage","blockUser","mouseEnter"],setup(e,{emit:t}){const s=e,o=t,l=k(null),a=k(null),i=k(""),r=C=>{i.value&&i.value.startsWith("blob:")&&URL.revokeObjectURL(i.value),i.value=URL.createObjectURL(C)},c=fe(()=>s.position?a.value?{left:`${a.value.x}px`,top:`${a.value.y}px`}:{left:`${s.position.x}px`,top:`${s.position.y}px`}:{}),f=()=>{if(!s.position||!l.value)return;const C=l.value.getBoundingClientRect(),I=C.width||260,q=C.height||240,N=16;let z=s.position.x,Z=s.position.y;const W=window.innerWidth,te=window.innerHeight;z+I>W-N&&(z=W-I-N),z<N&&(z=N),Z+q>te-N&&(s.position.y-N>=q?Z=s.position.y-q-8:Z=te-q-N),Z<N&&(Z=N),a.value={x:z,y:Z}};st(()=>[s.visible,s.position],()=>{a.value=null,s.visible&&s.position&&vt(()=>{f()})},{immediate:!0});const u=k(null),v=()=>{u.value&&(clearTimeout(u.value),u.value=null),o("close")},g=()=>{u.value&&(clearTimeout(u.value),u.value=null),o("mouseEnter")},h=()=>{u.value=window.setTimeout(()=>{v()},300)},b=()=>{o("sendMessage",s.userId,s.userName),v()},w=()=>{o("blockUser",s.userId,s.userName),v()};return Aa(()=>{i.value&&i.value.startsWith("blob:")&&URL.revokeObjectURL(i.value)}),st(()=>s.visible,C=>{!C&&i.value&&i.value.startsWith("blob:")&&(URL.revokeObjectURL(i.value),i.value="")}),(C,I)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"card-fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"card-overlay",onClick:v},[n("div",{ref_key:"cardContainerRef",ref:l,class:"card-container",style:$t(c.value),onClick:I[0]||(I[0]=je(()=>{},["stop"])),onMouseenter:g,onMouseleave:h},[n("div",P6,[n("div",L6,[i.value?(d(),p("img",{key:0,src:i.value,alt:"",class:"background-image"},null,8,O6)):E("",!0)]),I[1]||(I[1]=n("div",{class:"background-overlay"},null,-1))]),n("div",N6,[n("div",F6,[n("div",B6,[m(Tt,{userId:e.userId,"user-name":e.userName,"avatar-id":e.avatarId,width:80,height:80,"on-avatar-loaded":r},null,8,["userId","user-name","avatar-id"]),I[2]||(I[2]=n("div",{class:"online-indicator"},null,-1))]),n("div",V6,[n("div",j6,y(e.userName),1)])]),n("div",q6,[n("button",{class:"action-btn message-btn",onClick:b},[m(_,{icon:"fluent-color:comment-multiple-32",class:"btn-icon"}),I[3]||(I[3]=n("span",null,"私信",-1))]),n("button",{class:"action-btn block-btn",onClick:w},[m(_,{icon:"mdi:block-helper",class:"btn-icon"}),I[4]||(I[4]=n("span",null,"拉黑",-1))])])])],36)])):E("",!0)]),_:1})]))}}),td=Ge(H6,[["__scopeId","data-v-5fe2b6d2"]]),z6={class:"upload-progress-dialog"},W6={class:"dialog-header"},K6={class:"dialog-content"},G6={class:"progress-info"},Q6={class:"progress-text"},J6={class:"progress-bar-container"},Z6={class:"progress-bar"},X6={class:"progress-percent"},Y6={key:0,class:"error-message"},eI={class:"dialog-footer"},tI=ze({__name:"UploadProgressDialog",props:{visible:{type:Boolean},progress:{},title:{default:"上传中..."},statusText:{default:"正在上传文件"},error:{},cancellable:{type:Boolean,default:!0},completed:{type:Boolean,default:!1}},emits:["cancel","close"],setup(e,{emit:t}){const s=e,o=t,l=()=>{s.cancellable&&!s.completed&&o("cancel")},a=()=>{o("close")};return(i,r)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"upload-progress-overlay",onClick:je(l,["self"])},[n("div",z6,[n("div",W6,[n("h3",null,y(e.title),1),e.cancellable?(d(),p("button",{key:0,class:"close-btn",onClick:l},[m(_,{icon:"mdi:close"})])):E("",!0)]),n("div",K6,[n("div",G6,[m(_,{icon:"mdi:cloud-upload",class:"progress-icon"}),n("span",Q6,y(e.statusText),1)]),n("div",J6,[n("div",Z6,[n("div",{class:"progress-fill",style:$t({width:`${e.progress}%`})},null,4)]),n("span",X6,y(e.progress)+"%",1)]),e.error?(d(),p("div",Y6,[m(_,{icon:"mdi:alert-circle",class:"error-icon"}),n("span",null,y(e.error),1)])):E("",!0)]),n("div",eI,[e.cancellable&&!e.completed?(d(),p("button",{key:0,class:"btn btn-secondary",onClick:l}," 取消 ")):E("",!0),e.completed||e.error?(d(),p("button",{key:1,class:"btn btn-primary",onClick:a}," 确定 ")):E("",!0)])])])):E("",!0)]),_:1})]))}}),sI=Ge(tI,[["__scopeId","data-v-e6e5d333"]]),nI={class:"discussion-forum-page"},oI={class:"page-container"},lI={class:"page-header"},aI={class:"header-buttons"},iI={key:0,class:"header-content"},rI={class:"app-header"},cI={class:"app-icon-wrapper"},uI={class:"app-icon"},dI=["src","alt"],fI={class:"app-title-info"},pI={class:"page-title"},vI={class:"page-description"},mI={key:1,class:"header-content"},hI={key:0,class:"loading"},gI={key:1,class:"error"},yI={key:2,class:"discussion-content"},bI={class:"create-post-section"},_I={key:0,class:"post-form-container"},wI={class:"post-form-header"},kI={class:"post-form"},$I={class:"form-row"},CI={class:"form-row"},II={class:"form-actions"},SI={class:"upload-area"},xI=["disabled"],TI=["disabled"],AI={key:0,class:"upload-count"},EI=["disabled"],RI={key:0,class:"attachment-preview-list"},UI=["src"],DI=["onClick"],MI={key:0,class:"attachment-error"},PI={class:"file-name"},LI={class:"file-size"},OI=["onClick"],NI={key:0,class:"attachment-error"},FI={key:0,class:"posts-list"},BI=["onClick"],VI={class:"post-header"},jI={class:"post-title"},qI={class:"post-meta"},HI=["onMouseenter"],zI={class:"author-avatar"},WI={class:"post-author clickable"},KI={class:"post-time"},GI={class:"post-content-preview"},QI={class:"post-footer"},JI={class:"post-stats"},ZI={class:"stat-item"},XI={class:"post-actions"},YI=["onClick","disabled"],eS=["onClick","disabled"],tS=["onClick"],sS={key:1,class:"empty-discussion"},nS=ze({__name:"DiscussionForum",setup(e){const t=Wt(),s=Cn(),o=Ft(),l=po(),a=k(null),i=k(!0),r=k(""),c=k(!1),f=k(!1),u=k([]),v=k(null),g=k(null),h=k(""),b=k(""),w=k([]),C=k([]),I=k(null),q=k(null),N=k(!1),z=k(!1),Z=k(null),W=k(!1),te=k(void 0),O=k(""),R=k(""),F=k(""),$=k(null),U=fe(()=>s.params.bundleId),se=fe(()=>a.value?oe.getAppIconUrl(a.value.bundleId):""),M=async Se=>{try{const _e=await oe.getForumPermission(Se);_e?v.value=_e:v.value={bundleId:Se,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}catch(_e){console.error("加载讨论区权限失败:",_e),v.value={bundleId:Se,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}},G=async()=>{if(U.value)try{const Se=await oe.getForumPosts(U.value,1,20);u.value=Se.posts||[]}catch(Se){console.error("加载帖子列表失败:",Se),u.value=[]}},B=async()=>{if(!U.value){r.value="无效的应用标识符",i.value=!1;return}i.value=!0,r.value="";try{if(await M(U.value),!v.value||!v.value.enabled){r.value="该讨论区暂未开放,请等待管理员启用",i.value=!1;return}a.value=await oe.getApp(U.value),c.value=!1,f.value=!1,await G()}catch(Se){console.error("加载应用信息失败:",Se),r.value="加载应用信息失败,请检查服务是否运行",a.value=null}finally{i.value=!1}},V=()=>{t.push("/discussion")},X=()=>{t.push("/")},pe=Se=>{t.push(`/discussion/${U.value}/post/${Se}`)},Ne=Se=>Se.length<=150?Se:Se.substring(0,150)+"...",Pe=async Se=>{var et,ot;const _e=u.value.find(tt=>tt.id===Se);if(!_e||!U.value||g.value===Se)return;const Ve=_e.userLikeStatus==="liked"?"cancel":"like";g.value=Se,l.show(Ve==="cancel"?"取消点赞中...":"点赞中...");try{const tt=await oe.likeForumPost(U.value,Se,Ve);tt.success?(_e.userLikeStatus=tt.userLikeStatus,_e.likeCount=tt.likeCount,_e.dislikeCount=tt.dislikeCount,Ve==="cancel"?o.success("已取消点赞"):o.success("点赞成功")):o.error(tt.message||"点赞失败")}catch(tt){console.error("点赞失败:",tt),o.error(((ot=(et=tt.response)==null?void 0:et.data)==null?void 0:ot.message)||tt.message||"点赞失败")}finally{g.value=null,l.hide()}},Ee=async Se=>{var et,ot;const _e=u.value.find(tt=>tt.id===Se);if(!_e||!U.value||g.value===Se)return;const Ve=_e.userLikeStatus==="disliked"?"cancel":"dislike";g.value=Se,l.show(Ve==="cancel"?"取消点踩中...":"点踩中...");try{const tt=await oe.likeForumPost(U.value,Se,Ve);tt.success?(_e.userLikeStatus=tt.userLikeStatus,_e.likeCount=tt.likeCount,_e.dislikeCount=tt.dislikeCount,Ve==="cancel"?o.success("已取消点踩"):o.success("点踩成功")):o.error(tt.message||"点踩失败")}catch(tt){console.error("点踩失败:",tt),o.error(((ot=(et=tt.response)==null?void 0:et.data)==null?void 0:ot.message)||tt.message||"点踩失败")}finally{g.value=null,l.hide()}},ye=fe(()=>h.value.trim().length>0&&(b.value.trim().length>0||w.value.length>0||C.value.length>0)),de=()=>{var Se;(Se=I.value)==null||Se.click()},Te=()=>{var Se;(Se=q.value)==null||Se.click()},Me=Se=>{const _e=Se.target,Ue=Array.from(_e.files||[]),Ve=10*1024*1024;Ue.forEach(et=>{if(w.value.length>=5)return;if(et.size>Ve){w.value.push({file:et,preview:"",error:"图片大小不能超过10MB"});return}const ot=new FileReader;ot.onload=tt=>{var Rt;const vs=w.value.findIndex(as=>as.file===et);vs>=0&&(w.value[vs].preview=(Rt=tt.target)==null?void 0:Rt.result)},ot.readAsDataURL(et),w.value.push({file:et,preview:""})}),_e.value=""},K=Se=>{const _e=Se.target,Ue=Array.from(_e.files||[]),Ve=20*1024*1024;Ue.forEach(et=>{if(!(C.value.length>=5)){if(et.size>Ve){C.value.push({file:et,error:"文件大小不能超过20MB"});return}C.value.push({file:et})}}),_e.value=""},ie=Se=>{w.value.splice(Se,1)},re=Se=>{C.value.splice(Se,1)},Ce=k(!1),Le=k(0),T=k("正在上传..."),D=k(""),A=async()=>{var Se,_e,Ue,Ve,et,ot,tt,vs;if(!(!ye.value||!U.value)){Ce.value=!0,Le.value=0,T.value="正在上传文件...",D.value="";try{const Rt=[],as=w.value.length+C.value.length;let ms=0;for(let Ut=0;Ut<w.value.length;Ut++){const Vs=w.value[Ut];T.value=`正在上传图片 ${Ut+1}/${w.value.length}...`;const Dt=await oe.uploadImageAttachment(Vs.file,js=>{const xs=js/100;Le.value=Math.round((ms+xs)/as*100)});if(Dt.success&&((Se=Dt.data)!=null&&Se.attachmentId))Rt.push(Dt.data.attachmentId),ms++;else throw new Error(Dt.message||((_e=Dt.data)==null?void 0:_e.message)||"图片上传失败")}for(let Ut=0;Ut<C.value.length;Ut++){const Vs=C.value[Ut];T.value=`正在上传文件 ${Ut+1}/${C.value.length}...`;const Dt=await oe.uploadFileAttachment(Vs.file,js=>{const xs=js/100;Le.value=Math.round((ms+xs)/as*100)});if(Dt.success&&((Ue=Dt.data)!=null&&Ue.attachmentId))Rt.push(Dt.data.attachmentId),ms++;else throw new Error(Dt.message||((Ve=Dt.data)==null?void 0:Ve.message)||"文件上传失败")}T.value="正在发布帖子...",Le.value=90;const Bt=await oe.createForumPost(U.value,h.value.trim(),b.value.trim(),Rt.length>0?Rt:void 0);Bt.success&&((et=Bt.data)!=null&&et.postId)?(Le.value=100,T.value="发布成功!",await new Promise(Ut=>setTimeout(Ut,500)),await G(),h.value="",b.value="",w.value=[],C.value=[],N.value=!1,Ce.value=!1,o.success("帖子发布成功")):(D.value=Bt.message||((ot=Bt.data)==null?void 0:ot.message)||"发帖失败,请稍后重试",T.value="发布失败")}catch(Rt){console.error("发帖异常:",Rt),D.value=((vs=(tt=Rt.response)==null?void 0:tt.data)==null?void 0:vs.message)||Rt.message||"发帖失败,请稍后重试",T.value="发布失败"}}},J=()=>{Ce.value=!1,Le.value=0,D.value=""},ce=()=>{Ce.value=!1,Le.value=0,D.value=""},x=()=>{N.value=!1},S=Se=>{const _e=u.value.find(Ue=>Ue.id===Se);_e&&(Z.value={userId:_e.author,userName:_e.author,content:_e.content,type:"post",postId:_e.id},z.value=!0)},L=async(Se,_e,Ue)=>{var Ve,et;if(!(!U.value||!Ue.type||!Ue.postId)){l.show("提交举报中...");try{let ot="";if(Ue.type==="post"?ot=Ue.postId:(Ue.type==="reply"||Ue.type==="nestedReply")&&(ot=Ue.replyId||""),!ot){console.error("无法确定举报目标ID");return}const tt=await oe.submitReport(Ue.type,ot,U.value,Ue.postId,Se,Ue.content,_e||void 0);tt.success?(z.value=!1,o.success("举报提交成功")):o.error(tt.message||"举报失败")}catch(ot){console.error("举报异常:",ot),o.error(((et=(Ve=ot.response)==null?void 0:Ve.data)==null?void 0:et.message)||ot.message||"举报失败")}finally{l.hide()}}},P=Se=>typeof Se.author=="object"&&Se.author!==null?Se.author.id||"":typeof Se.author=="string"?Se.author:"",ee=Se=>typeof Se.author=="object"&&Se.author!==null?Se.author.name||"":typeof Se.author=="string"?Se.author:"",ue=async Se=>{try{const _e=await oe.getUserInfo(Se);if(_e&&_e.avatar)return await Lu(_e.avatar,_e.nickName||_e.username)}catch(_e){console.error("获取用户信息失败:",_e)}return""},ve=async(Se,_e,Ue)=>{$.value&&clearTimeout($.value),O.value=_e,R.value=Ue,F.value="",ue(_e).then(Ve=>{Ve?F.value=Ve:F.value=Ue?`https://ui-avatars.com/api/?name=${encodeURIComponent(Ue)}&background=random&size=200`:"https://ui-avatars.com/api/?name=User&background=random&size=200"}),$.value=window.setTimeout(()=>{const Ve=Se.target.getBoundingClientRect();te.value={x:Ve.left-100,y:Ve.bottom+8},W.value=!0},200)},Ie=k(null),Oe=()=>{$.value&&(clearTimeout($.value),$.value=null),Ie.value&&(clearTimeout(Ie.value),Ie.value=null),Ie.value=window.setTimeout(()=>{W.value&&(W.value=!1)},200)},Ke=()=>{Ie.value&&(clearTimeout(Ie.value),Ie.value=null)},ge=()=>{$.value&&(clearTimeout($.value),$.value=null),Ie.value&&(clearTimeout(Ie.value),Ie.value=null),W.value=!1,F.value=""},Xe=(Se,_e)=>{t.push(`/messages?userId=${Se}&userName=${encodeURIComponent(_e)}`)},yt=(Se,_e)=>{console.log("拉黑用户:",Se,_e),console.log(`已拉黑用户:${_e}`)},pt=Se=>{const _e=new Date(Se),Ve=new Date().getTime()-_e.getTime(),et=Math.floor(Ve/(1e3*60)),ot=Math.floor(Ve/(1e3*60*60)),tt=Math.floor(Ve/(1e3*60*60*24));return et<60?`${et}分钟前`:ot<24?`${ot}小时前`:tt<7?`${tt}天前`:_e.toLocaleDateString("zh-CN")},lt=Se=>Se<1024?`${Se} B`:Se<1024*1024?`${(Se/1024).toFixed(1)} KB`:`${(Se/(1024*1024)).toFixed(1)} MB`;return rt(()=>{B()}),(Se,_e)=>(d(),p("div",nI,[n("div",oI,[n("div",lI,[n("div",aI,[n("button",{class:"back-button",onClick:V},[m(_,{icon:"mdi:arrow-left",class:"back-icon"}),_e[6]||(_e[6]=n("span",null,"返回讨论区",-1))]),n("button",{class:"home-button",onClick:X},[m(_,{icon:"fluent-color:home-48",class:"home-icon"}),_e[7]||(_e[7]=n("span",null,"首页",-1))])]),a.value?(d(),p("div",iI,[n("div",rI,[n("div",cI,[n("div",uI,[se.value?Be((d(),p("img",{key:0,src:se.value,alt:a.value.name,onLoad:_e[0]||(_e[0]=Ue=>c.value=!0),onError:_e[1]||(_e[1]=Ue=>f.value=!0)},null,40,dI)),[[es,c.value&&!f.value]]):E("",!0),Be(n("div",{class:"icon-placeholder"},y(a.value.name.charAt(0).toUpperCase()),513),[[es,!se.value||!c.value||f.value]])])]),n("div",fI,[n("h1",pI,y(a.value.name),1),n("p",vI,y(a.value.bundleId),1)])])])):(d(),p("div",mI,[..._e[8]||(_e[8]=[n("h1",{class:"page-title"},"讨论区",-1)])]))]),i.value?(d(),p("div",hI,[..._e[9]||(_e[9]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):r.value?(d(),p("div",gI,[n("p",null,y(r.value),1),n("button",{onClick:B,class:"btn btn-primary"},"重试")])):a.value?(d(),p("div",yI,[n("div",bI,[N.value?E("",!0):(d(),p("button",{key:0,class:"create-post-btn",onClick:_e[2]||(_e[2]=Ue=>N.value=!0)},[m(_,{icon:"mdi:plus",class:"btn-icon"}),_e[10]||(_e[10]=n("span",null,"发帖",-1))]))]),m(mt,{name:"post-form-slide"},{default:ft(()=>[N.value?(d(),p("div",_I,[n("div",wI,[_e[11]||(_e[11]=n("h3",null,"发布新帖子",-1)),n("button",{class:"close-form-btn",onClick:x},[m(_,{icon:"mdi:close"})])]),n("div",kI,[n("div",$I,[Be(n("input",{"onUpdate:modelValue":_e[3]||(_e[3]=Ue=>h.value=Ue),class:"post-title-input",placeholder:"请输入帖子标题...",maxlength:"100"},null,512),[[Je,h.value]])]),n("div",CI,[Be(n("textarea",{"onUpdate:modelValue":_e[4]||(_e[4]=Ue=>b.value=Ue),class:"post-content-input",placeholder:"写下你想说的...",rows:"4",maxlength:"2000"},null,512),[[Je,b.value]])]),n("div",II,[n("div",SI,[n("input",{ref_key:"postImageInput",ref:I,type:"file",accept:"image/*",multiple:"",onChange:Me,style:{display:"none"}},null,544),n("input",{ref_key:"postFileInput",ref:q,type:"file",multiple:"",onChange:K,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:de,disabled:w.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(_,{icon:"mdi:image-outline",class:"btn-icon"}),_e[12]||(_e[12]=be(" 图片 ",-1))],8,xI),n("button",{class:"upload-btn",onClick:Te,disabled:C.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(_,{icon:"mdi:file-outline",class:"btn-icon"}),_e[13]||(_e[13]=be(" 文件 ",-1))],8,TI),w.value.length>0||C.value.length>0?(d(),p("span",AI,y(w.value.length+C.value.length)+" 个附件 ",1)):E("",!0)]),n("button",{class:"submit-post-btn",onClick:A,disabled:!ye.value},[m(_,{icon:"mdi:send",class:"btn-icon"}),_e[14]||(_e[14]=be(" 发布帖子 ",-1))],8,EI)]),w.value.length>0||C.value.length>0?(d(),p("div",RI,[(d(!0),p(he,null,Re(w.value,(Ue,Ve)=>(d(),p("div",{key:`post-img-${Ve}`,class:"attachment-preview-item"},[n("img",{src:Ue.preview,alt:"预览图"},null,8,UI),n("button",{class:"remove-attachment-btn",onClick:et=>ie(Ve)},[m(_,{icon:"mdi:close"})],8,DI),Ue.error?(d(),p("div",MI,y(Ue.error),1)):E("",!0)]))),128)),(d(!0),p(he,null,Re(C.value,(Ue,Ve)=>(d(),p("div",{key:`post-file-${Ve}`,class:"attachment-preview-item file"},[m(_,{icon:"mdi:file",class:"file-icon"}),n("span",PI,y(Ue.file.name),1),n("span",LI,y(lt(Ue.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:et=>re(Ve)},[m(_,{icon:"mdi:close"})],8,OI),Ue.error?(d(),p("div",NI,y(Ue.error),1)):E("",!0)]))),128))])):E("",!0)])])):E("",!0)]),_:1}),u.value.length>0?(d(),p("div",FI,[(d(!0),p(he,null,Re(u.value,Ue=>(d(),p("div",{key:Ue.id,class:"post-card",onClick:Ve=>pe(Ue.id)},[n("div",VI,[n("h3",jI,y(Ue.title),1),n("div",qI,[n("div",{class:"author-wrapper",onMouseenter:je(Ve=>ve(Ve,P(Ue),ee(Ue)),["stop"]),onMouseleave:je(Oe,["stop"])},[n("div",zI,[m(Tt,{"avatar-id":Ue.authorAvatar||(typeof Ue.author=="object"&&Ue.author!==null?Ue.author.avatar:void 0),"user-name":ee(Ue),size:"small"},null,8,["avatar-id","user-name"]),_e[15]||(_e[15]=n("div",{class:"online-indicator"},null,-1))]),n("span",WI,y(ee(Ue)),1)],40,HI),n("span",KI,y(pt(Ue.publishTime)),1)])]),n("div",GI,[n("p",null,y(Ne(Ue.content)),1)]),n("div",QI,[n("div",JI,[n("span",ZI,[m(_,{icon:"mdi:comment-outline",class:"stat-icon"}),n("span",null,y(Ue.replyCount)+" 回复",1)])]),n("div",XI,[n("button",{class:$e(["action-btn",{active:Ue.userLikeStatus==="liked"}]),onClick:je(Ve=>Pe(Ue.id),["stop"]),disabled:g.value===Ue.id},[m(_,{icon:Ue.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(Ue.likeCount),1)],10,YI),n("button",{class:$e(["action-btn",{active:Ue.userLikeStatus==="disliked"}]),onClick:je(Ve=>Ee(Ue.id),["stop"]),disabled:g.value===Ue.id},[m(_,{icon:Ue.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,y(Ue.dislikeCount),1)],10,eS),n("button",{class:"action-btn report-btn",onClick:je(Ve=>S(Ue.id),["stop"])},[m(_,{icon:"mdi:flag-outline",class:"action-icon"}),_e[16]||(_e[16]=n("span",null,"举报",-1))],8,tS)])])],8,BI))),128))])):(d(),p("div",sS,[m(_,{icon:"fluent-color:chat-bubbles-question-24",class:"empty-icon"}),_e[17]||(_e[17]=n("p",null,"暂无讨论内容",-1)),_e[18]||(_e[18]=n("p",{class:"empty-hint"},"还没有人发布帖子",-1))]))])):E("",!0)]),m(ed,{visible:z.value,"report-info":Z.value,onClose:_e[5]||(_e[5]=Ue=>z.value=!1),onSubmit:L},null,8,["visible","report-info"]),m(td,{visible:W.value,"user-id":O.value,"user-name":R.value,"avatar-url":F.value,position:te.value,onClose:ge,onSendMessage:Xe,onBlockUser:yt,onMouseEnter:Ke},null,8,["visible","user-id","user-name","avatar-url","position"]),m(sI,{visible:Ce.value,progress:Le.value,title:T.value,"status-text":T.value,error:D.value,completed:Le.value===100&&!D.value,cancellable:Le.value<100&&!D.value,onCancel:J,onClose:ce},null,8,["visible","progress","title","status-text","error","completed","cancellable"]),m(ls,{toasts:Y(o).toasts.value,onRemove:Y(o).removeToast},null,8,["toasts","onRemove"])]))}}),oS=Ge(nS,[["__scopeId","data-v-8c3df97a"]]),lS={class:"post-detail-page"},aS={class:"page-container"},iS={class:"page-header"},rS={class:"header-buttons"},cS={key:0,class:"loading"},uS={key:1,class:"error"},dS={key:2,class:"post-detail-content"},fS={key:0,class:"forum-breadcrumb"},pS={class:"forum-icon-wrapper"},vS={class:"forum-icon"},mS=["src","alt"],hS={class:"forum-name"},gS={class:"post-breadcrumb-title"},yS={class:"post-main"},bS={class:"post-header"},_S={class:"post-title"},wS={class:"post-meta"},kS={class:"author-avatar"},$S={class:"post-author clickable"},CS={class:"post-time"},IS={class:"post-content"},SS={key:0,class:"post-attachments"},xS=["onClick"],TS={class:"attachment-name"},AS={class:"attachment-size"},ES={class:"post-actions"},RS=["disabled"],US=["disabled"],DS={class:"replies-section"},MS={class:"replies-header"},PS={class:"reply-form-container"},LS={class:"reply-form"},OS={class:"form-avatar"},NS={class:"form-content"},FS={class:"form-actions"},BS={class:"upload-area"},VS=["disabled"],jS=["disabled"],qS={key:0,class:"upload-count"},HS=["disabled"],zS={key:0,class:"attachment-preview-list"},WS=["src"],KS=["onClick"],GS={key:0,class:"attachment-error"},QS={class:"file-name"},JS={class:"file-size"},ZS=["onClick"],XS={key:0,class:"attachment-error"},YS={key:0,class:"replies-list"},e7={class:"reply-avatar"},t7={class:"reply-content-wrapper"},s7={class:"reply-header"},n7=["onMouseenter"],o7={class:"reply-author clickable"},l7={key:1,class:"reply-to"},a7=["onMouseenter"],i7={class:"reply-time"},r7={class:"reply-content"},c7={key:0,class:"reply-attachments"},u7=["onClick"],d7={class:"attachment-name"},f7={class:"attachment-size"},p7={class:"reply-actions"},v7=["onClick"],m7=["onClick"],h7={key:0,class:"nested-reply-form"},g7={class:"form-content"},y7=["placeholder"],b7={class:"form-actions"},_7={class:"upload-area"},w7=["disabled"],k7=["disabled"],$7={class:"nested-reply-actions"},C7=["onClick","disabled"],I7={key:0,class:"attachment-preview-list"},S7=["src"],x7=["onClick"],T7={class:"file-name"},A7={class:"file-size"},E7=["onClick"],R7={key:1,class:"nested-replies"},U7={class:"nested-reply-avatar"},D7={class:"nested-reply-content-wrapper"},M7={class:"nested-reply-header"},P7=["onMouseenter"],L7={class:"nested-reply-author clickable"},O7={key:0,class:"reply-to"},N7=["onMouseenter","onClick"],F7={class:"nested-reply-time"},B7={class:"nested-reply-content"},V7={key:0,class:"reply-attachments"},j7=["onClick"],q7={class:"attachment-name"},H7={class:"attachment-size"},z7={class:"nested-reply-actions"},W7=["onClick"],K7=["onClick"],G7={key:1,class:"replies-pagination"},Q7=["disabled"],J7={class:"pagination-info"},Z7=["disabled"],X7={key:2,class:"empty-replies"},Y7=ze({__name:"PostDetail",setup(e){const t=Wt(),s=Cn(),o=Ft(),l=po(),{user:a}=Ss(),i=k(null),r=k(null),c=k(!0),f=k(""),u=k(null),v=k(!1),g=k(!1),h=k(1),b=k(50),w=k(0),C=fe(()=>Math.ceil(w.value/b.value)),I=fe(()=>s.params.bundleId),q=fe(()=>s.params.postId),N=fe(()=>r.value?oe.getAppIconUrl(r.value.bundleId):""),z=k(""),Z=k([]),W=k([]),te=k(null),O=k(null),R=k(null),F=k(null),$=k(null),U=k(""),se=k(!1),M=k(!1),G=k([]),B=k([]),V=k(null),X=k(null),pe=k(!1),Ne=k(null),Pe=k(!1),Ee=k(void 0),ye=k(""),de=k(""),Te=k(void 0),Me=k(null),K=k(null),ie=fe(()=>Te.value),re=fe(()=>Z.value||[]),Ce=fe(()=>W.value||[]),Le=fe(()=>G.value||[]),T=fe(()=>B.value||[]),D=async me=>{try{const ae=await oe.getForumPermission(me);return ae||{bundleId:me,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}catch(ae){return console.error("加载讨论区权限失败:",ae),{bundleId:me,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}},A=async()=>{if(!q.value||!I.value){f.value="无效的帖子ID或应用ID",c.value=!1;return}c.value=!0,f.value="";try{const me=await D(I.value);if(!me||!me.enabled){f.value="该讨论区暂未开放,请等待管理员启用",c.value=!1;return}try{r.value=await oe.getApp(I.value),v.value=!1,g.value=!1}catch(ae){console.error("加载应用信息失败:",ae)}try{const ae=await oe.getForumPost(I.value,q.value,h.value,b.value);ae?(i.value=ae,ae.replyTotal!==void 0&&(w.value=ae.replyTotal),ae.replyPage!==void 0&&(h.value=ae.replyPage)):f.value="帖子不存在"}catch(ae){console.error("加载帖子失败:",ae),f.value="加载帖子失败",i.value=null}}catch(me){console.error("加载帖子失败:",me),f.value="加载帖子失败",i.value=null}finally{c.value=!1}},J=async()=>{if(!(!I.value||!q.value||!i.value))try{const me=await oe.getForumPost(I.value,q.value,h.value,b.value);me&&(i.value.replies=me.replies,i.value.replyCount=me.replyCount,me.replyTotal!==void 0&&(w.value=me.replyTotal),me.replyPage!==void 0&&(h.value=me.replyPage))}catch(me){console.error("刷新回复列表失败:",me)}},ce=async me=>{if(!(!I.value||!q.value)){h.value=me;try{const ae=await oe.getForumPost(I.value,q.value,h.value,b.value);if(ae&&i.value){i.value.replies=ae.replies,ae.replyTotal!==void 0&&(w.value=ae.replyTotal);const We=document.querySelector(".replies-section");We&&We.scrollIntoView({behavior:"smooth",block:"start"})}}catch(ae){console.error("加载回复分页失败:",ae),o.error("加载回复失败")}}},x=()=>{t.push(`/discussion/${I.value}`)},S=()=>{t.push("/")},L=async()=>{var We,Qe;if(!i.value||!I.value||!q.value)return;const ae=i.value.userLikeStatus==="liked"?"cancel":"like";l.show(ae==="cancel"?"取消点赞中...":"点赞中...");try{const De=await oe.likeForumPost(I.value,q.value,ae);De.success&&i.value?(i.value.userLikeStatus=De.userLikeStatus,i.value.likeCount=De.likeCount,i.value.dislikeCount=De.dislikeCount,ae==="cancel"?o.success("已取消点赞"):o.success("点赞成功")):o.error(De.message||"点赞失败")}catch(De){console.error("点赞失败:",De),o.error(((Qe=(We=De.response)==null?void 0:We.data)==null?void 0:Qe.message)||De.message||"点赞失败")}finally{l.hide()}},P=async()=>{var We,Qe;if(!i.value||!I.value||!q.value)return;const ae=i.value.userLikeStatus==="disliked"?"cancel":"dislike";l.show(ae==="cancel"?"取消点踩中...":"点踩中...");try{const De=await oe.likeForumPost(I.value,q.value,ae);De.success&&i.value?(i.value.userLikeStatus=De.userLikeStatus,i.value.likeCount=De.likeCount,i.value.dislikeCount=De.dislikeCount,ae==="cancel"?o.success("已取消点踩"):o.success("点踩成功")):o.error(De.message||"点踩失败")}catch(De){console.error("点踩失败:",De),o.error(((Qe=(We=De.response)==null?void 0:We.data)==null?void 0:Qe.message)||De.message||"点踩失败")}finally{l.hide()}},ee=me=>{const ae=new Date(me),Qe=new Date().getTime()-ae.getTime(),De=Math.floor(Qe/(1e3*60)),ke=Math.floor(Qe/(1e3*60*60)),xe=Math.floor(Qe/(1e3*60*60*24));return De<60?`${De}分钟前`:ke<24?`${ke}小时前`:xe<7?`${xe}天前`:ae.toLocaleDateString("zh-CN")},ue=me=>me<1024?`${me} B`:me<1024*1024?`${(me/1024).toFixed(1)} KB`:`${(me/(1024*1024)).toFixed(1)} MB`,ve=async me=>{if(me.type==="image"){if(me.id){const ae=await oe.getAttachmentImage(me.id);ae&&(u.value=ae)}}else Oe(me)},Ie=()=>{u.value=null},Oe=me=>{const ae=document.createElement("a");ae.href=me.url||"#",ae.download=me.name,ae.target="_blank",document.body.appendChild(ae),ae.click(),document.body.removeChild(ae)},Ke=fe(()=>z.value.trim().length>0||Z.value.length>0||W.value.length>0),ge=fe(()=>U.value.trim().length>0||G.value.length>0||B.value.length>0),Xe=()=>{var me;(me=te.value)==null||me.click()},yt=()=>{var me;(me=O.value)==null||me.click()},pt=()=>{var me;(me=V.value)==null||me.click()},lt=()=>{var me;(me=X.value)==null||me.click()},Se=me=>{const ae=me.target,We=Array.from(ae.files||[]),Qe=10*1024*1024;We.forEach(De=>{if(Z.value.length>=5)return;if(De.size>Qe){Z.value.push({file:De,preview:"",error:"图片大小不能超过10MB"});return}const ke=new FileReader;ke.onload=xe=>{var Q;const j=Z.value.findIndex(H=>H.file===De);j>=0&&(Z.value[j].preview=(Q=xe.target)==null?void 0:Q.result)},ke.readAsDataURL(De),Z.value.push({file:De,preview:""})}),ae.value=""},_e=me=>{const ae=me.target,We=Array.from(ae.files||[]),Qe=20*1024*1024;We.forEach(De=>{if(!(W.value.length>=5)){if(De.size>Qe){W.value.push({file:De,error:"文件大小不能超过20MB"});return}W.value.push({file:De})}}),ae.value=""},Ue=me=>{const ae=me.target,We=Array.from(ae.files||[]),Qe=10*1024*1024;We.forEach(De=>{if(G.value.length>=3)return;if(De.size>Qe){G.value.push({file:De,preview:"",error:"图片大小不能超过10MB"});return}const ke=new FileReader;ke.onload=xe=>{var Q;const j=G.value.findIndex(H=>H.file===De);j>=0&&(G.value[j].preview=(Q=xe.target)==null?void 0:Q.result)},ke.readAsDataURL(De),G.value.push({file:De,preview:""})}),ae.value=""},Ve=me=>{const ae=me.target,We=Array.from(ae.files||[]),Qe=20*1024*1024;We.forEach(De=>{if(!(B.value.length>=3)){if(De.size>Qe){B.value.push({file:De,error:"文件大小不能超过20MB"});return}B.value.push({file:De})}}),ae.value=""},et=me=>{Z.value.splice(me,1)},ot=me=>{W.value.splice(me,1)},tt=me=>{G.value.splice(me,1)},vs=me=>{B.value.splice(me,1)},Rt=async()=>{var me,ae,We,Qe;if(!(!Ke.value||!i.value||!I.value||!q.value||se.value)){se.value=!0,l.show("发表回复中...");try{const De=[],ke=Z.value.length+W.value.length;let xe=0;for(let Q=0;Q<Z.value.length;Q++){const H=Z.value[Q],ne=await oe.uploadImageAttachment(H.file);if(ne.success&&((me=ne.data)!=null&&me.attachmentId))De.push(ne.data.attachmentId),xe++;else throw new Error(ne.message||((ae=ne.data)==null?void 0:ae.message)||"图片上传失败")}for(let Q=0;Q<W.value.length;Q++){const H=W.value[Q],ne=await oe.uploadFileAttachment(H.file);if(ne.success&&((We=ne.data)!=null&&We.attachmentId))De.push(ne.data.attachmentId),xe++;else throw new Error(ne.message||((Qe=ne.data)==null?void 0:Qe.message)||"文件上传失败")}const j=await oe.createForumReply(I.value,q.value,z.value.trim(),void 0,void 0,De.length>0?De:void 0);j.success?(await J(),z.value="",Z.value=[],W.value=[],o.success("回复成功"),setTimeout(()=>{const Q=document.querySelector(".replies-section");Q&&Q.scrollIntoView({behavior:"smooth",block:"start"})},100)):(console.error("回复失败:",j.message),o.error(j.message||"回复失败"))}catch(De){console.error("回复异常:",De),o.error(De.message||"回复失败")}finally{se.value=!1,l.hide()}}},as=(me,ae,We)=>{var Qe,De;if(R.value===me)R.value=null,F.value=null,$.value=null,U.value="",G.value=[],B.value=[];else if(R.value=me,ae&&We)F.value=ae,$.value=We;else{const ke=(De=(Qe=i.value)==null?void 0:Qe.replies)==null?void 0:De.find(xe=>xe.id===me);ke&&(F.value=ke.replyUser.id,$.value=ke.replyUser.nickName||ke.replyUser.username)}},ms=()=>{R.value=null,F.value=null,$.value=null,U.value="",G.value=[],B.value=[]},Bt=async me=>{var We,Qe,De,ke,xe;if(!(!ge.value||!i.value||!I.value||!q.value||M.value||!((We=i.value.replies)!=null&&We.find(j=>j.id===me)))){M.value=!0,l.show("发送回复中...");try{const j=[];let Q=0;for(let ne=0;ne<G.value.length;ne++){const we=G.value[ne],qe=await oe.uploadImageAttachment(we.file);if(qe.success&&((Qe=qe.data)!=null&&Qe.attachmentId))j.push(qe.data.attachmentId),Q++;else throw new Error(qe.message||((De=qe.data)==null?void 0:De.message)||"图片上传失败")}for(let ne=0;ne<B.value.length;ne++){const we=B.value[ne],qe=await oe.uploadFileAttachment(we.file);if(qe.success&&((ke=qe.data)!=null&&ke.attachmentId))j.push(qe.data.attachmentId),Q++;else throw new Error(qe.message||((xe=qe.data)==null?void 0:xe.message)||"文件上传失败")}const H=await oe.createNestedReply(I.value,q.value,me,U.value.trim(),F.value||void 0,$.value||void 0,j.length>0?j:void 0);H.success?(await J(),ms(),o.success("回复成功"),setTimeout(()=>{const ne=document.querySelector(`[data-reply-id="${me}"]`);ne&&ne.scrollIntoView({behavior:"smooth",block:"nearest"})},100)):(console.error("楼中楼回复失败:",H.message),o.error(H.message||"回复失败"))}catch(j){console.error("楼中楼回复异常:",j),o.error(j.message||"回复失败")}finally{M.value=!1,l.hide()}}},Ut=()=>{i.value&&(Ne.value={userId:i.value.author,userName:i.value.author,content:i.value.content,type:"post",postId:i.value.id},pe.value=!0)},Vs=me=>{var We;if(!i.value)return;const ae=(We=i.value.replies)==null?void 0:We.find(Qe=>Qe.id===me);ae&&(Ne.value={userId:ae.replyUser.id,userName:ae.replyUser.nickName||ae.replyUser.username,content:ae.content,type:"reply",postId:i.value.id,replyId:ae.id},pe.value=!0)},Dt=(me,ae)=>{var De,ke;if(!i.value)return;const We=(De=i.value.replies)==null?void 0:De.find(xe=>xe.id===me);if(!We)return;const Qe=(ke=We.nestedReplies)==null?void 0:ke.find(xe=>xe.id===ae);Qe&&(Ne.value={userId:Qe.replyUser.id,userName:Qe.replyUser.nickName||Qe.replyUser.username,content:Qe.content,type:"nestedReply",postId:i.value.id,replyId:ae},pe.value=!0)},js=async(me,ae,We)=>{var Qe,De;if(!(!I.value||!q.value||!We.type)){l.show("提交举报中...");try{let ke="";if(We.type==="post"?ke=We.postId||q.value:(We.type==="reply"||We.type==="nestedReply")&&(ke=We.replyId||""),!ke){console.error("无法确定举报目标ID");return}const xe=await oe.submitReport(We.type,ke,I.value,q.value,me,We.content,ae||void 0);xe.success?(pe.value=!1,o.success("举报提交成功")):o.error(xe.message||"举报失败")}catch(ke){console.error("举报异常:",ke),o.error(((De=(Qe=ke.response)==null?void 0:Qe.data)==null?void 0:De.message)||ke.message||"举报失败")}finally{l.hide()}}},xs=me=>typeof me.author=="object"&&me.author!==null?me.author.id||"":typeof me.author=="string"?me.author:"",In=me=>typeof me.author=="object"&&me.author!==null?me.author.name||"":typeof me.author=="string"?me.author:"",Kt=async(me,ae,We,Qe)=>{Me.value&&clearTimeout(Me.value),ye.value=ae,de.value=We,Qe&&Qe.trim()!==""?Te.value=Qe:Te.value=void 0,Me.value=window.setTimeout(()=>{const De=me.target.getBoundingClientRect();Ee.value={x:De.left-100,y:De.bottom+8},Pe.value=!0},200)},Ts=()=>{Me.value&&(clearTimeout(Me.value),Me.value=null),K.value&&(clearTimeout(K.value),K.value=null),K.value=window.setTimeout(()=>{Pe.value&&(Pe.value=!1)},200)},bl=()=>{K.value&&(clearTimeout(K.value),K.value=null)},_l=()=>{Me.value&&(clearTimeout(Me.value),Me.value=null),K.value&&(clearTimeout(K.value),K.value=null),Pe.value=!1,Te.value=void 0},wl=(me,ae)=>{t.push(`/messages?userId=${me}&userName=${encodeURIComponent(ae)}`)},kl=(me,ae)=>{console.log("拉黑用户:",me,ae),console.log(`已拉黑用户:${ae}`)};return rt(()=>{A()}),(me,ae)=>{var We,Qe,De;return d(),p("div",lS,[n("div",aS,[n("div",iS,[n("div",rS,[n("button",{class:"back-button",onClick:x},[m(_,{icon:"mdi:arrow-left",class:"back-icon"}),ae[8]||(ae[8]=n("span",null,"返回讨论区",-1))]),n("button",{class:"home-button",onClick:S},[m(_,{icon:"fluent-color:home-48",class:"home-icon"}),ae[9]||(ae[9]=n("span",null,"首页",-1))])])]),c.value?(d(),p("div",cS,[...ae[10]||(ae[10]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):f.value?(d(),p("div",uS,[n("p",null,y(f.value),1),n("button",{onClick:A,class:"btn btn-primary"},"重试")])):i.value?(d(),p("div",dS,[r.value?(d(),p("div",fS,[n("div",{class:"forum-info",onClick:x},[n("div",pS,[n("div",vS,[N.value?Be((d(),p("img",{key:0,src:N.value,alt:r.value.name,onLoad:ae[0]||(ae[0]=ke=>v.value=!0),onError:ae[1]||(ae[1]=ke=>g.value=!0)},null,40,mS)),[[es,v.value&&!g.value]]):E("",!0),Be(n("div",{class:"icon-placeholder"},y(r.value.name.charAt(0).toUpperCase()),513),[[es,!N.value||!v.value||g.value]])])]),n("span",hS,y(r.value.name),1),m(_,{icon:"mdi:chevron-right",class:"breadcrumb-separator"})]),n("span",gS,y(i.value.title),1)])):E("",!0),n("div",yS,[n("div",bS,[n("h1",_S,y(i.value.title),1),n("div",wS,[n("div",{class:"author-wrapper",onMouseenter:ae[2]||(ae[2]=je(ke=>Kt(ke,xs(i.value),In(i.value)),["stop"])),onMouseleave:je(Ts,["stop"])},[n("div",kS,[m(Tt,{userId:xs(i.value),width:"36px",height:"36px"},null,8,["userId"]),ae[11]||(ae[11]=n("div",{class:"online-indicator"},null,-1))]),n("span",$S,y(In(i.value)),1)],32),n("span",CS,y(ee(i.value.publishTime)),1)])]),n("div",IS,[n("p",null,y(i.value.content),1),i.value.attachments&&i.value.attachments.length>0?(d(),p("div",SS,[(d(!0),p(he,null,Re(i.value.attachments,ke=>(d(),p("div",{key:ke.id,class:$e(["attachment-item",{clickable:!0}]),onClick:xe=>ve(ke)},[m(_,{icon:ke.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",TS,y(ke.name),1),n("span",AS,y(ue(ke.size)),1),ke.type==="image"?(d(),Fe(_,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(d(),Fe(_,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,xS))),128))])):E("",!0)]),n("div",ES,[n("button",{class:$e(["action-btn",{active:i.value.userLikeStatus==="liked"}]),onClick:L,disabled:Y(l).loadingState.visible},[m(_,{icon:"mdi:thumb-up",class:"action-icon"}),n("span",null,y(i.value.likeCount),1)],10,RS),n("button",{class:$e(["action-btn",{active:i.value.userLikeStatus==="disliked"}]),onClick:P,disabled:Y(l).loadingState.visible},[m(_,{icon:"mdi:thumb-down",class:"action-icon"}),n("span",null,y(i.value.dislikeCount),1)],10,US),n("button",{class:"action-btn report-btn",onClick:Ut},[m(_,{icon:"mdi:flag-outline",class:"action-icon"}),ae[12]||(ae[12]=n("span",null,"举报",-1))])])]),n("div",DS,[n("div",MS,[n("h2",null,"回帖 ("+y(i.value.replyCount)+")",1)]),n("div",PS,[n("div",LS,[n("div",OS,[m(Tt,{userId:(We=Y(a))==null?void 0:We._id,"user-name":((Qe=Y(a))==null?void 0:Qe.nickName)||((De=Y(a))==null?void 0:De.username)||"我",width:"36px",height:"36px"},null,8,["userId","user-name"])]),n("div",NS,[Be(n("textarea",{"onUpdate:modelValue":ae[3]||(ae[3]=ke=>z.value=ke),class:"reply-textarea",placeholder:"写下你的回复...",rows:"3",maxlength:"1000"},null,512),[[Je,z.value]]),n("div",FS,[n("div",BS,[n("input",{ref_key:"imageInput",ref:te,type:"file",accept:"image/*",multiple:"",onChange:Se,style:{display:"none"}},null,544),n("input",{ref_key:"fileInput",ref:O,type:"file",multiple:"",onChange:_e,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:Xe,disabled:re.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(_,{icon:"mdi:image-outline",class:"btn-icon"}),ae[13]||(ae[13]=be(" 图片 ",-1))],8,VS),n("button",{class:"upload-btn",onClick:yt,disabled:Ce.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(_,{icon:"mdi:file-outline",class:"btn-icon"}),ae[14]||(ae[14]=be(" 文件 ",-1))],8,jS),re.value.length>0||Ce.value.length>0?(d(),p("span",qS,y(re.value.length+Ce.value.length)+" 个附件 ",1)):E("",!0)]),n("button",{class:"submit-reply-btn",onClick:Rt,disabled:!Ke.value||se.value},[m(_,{icon:se.value?"mdi:loading":"mdi:send",class:$e(["btn-icon",{spinning:se.value}])},null,8,["icon","class"]),be(" "+y(se.value?"发表中...":"发表回复"),1)],8,HS)]),re.value.length>0||Ce.value.length>0?(d(),p("div",zS,[(d(!0),p(he,null,Re(re.value,(ke,xe)=>(d(),p("div",{key:`img-${xe}`,class:"attachment-preview-item"},[n("img",{src:ke.preview,alt:"预览图"},null,8,WS),n("button",{class:"remove-attachment-btn",onClick:j=>et(xe)},[m(_,{icon:"mdi:close"})],8,KS),ke.error?(d(),p("div",GS,y(ke.error),1)):E("",!0)]))),128)),(d(!0),p(he,null,Re(Ce.value,(ke,xe)=>(d(),p("div",{key:`file-${xe}`,class:"attachment-preview-item file"},[m(_,{icon:"mdi:file",class:"file-icon"}),n("span",QS,y(ke.file.name),1),n("span",JS,y(ue(ke.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:j=>ot(xe)},[m(_,{icon:"mdi:close"})],8,ZS),ke.error?(d(),p("div",XS,y(ke.error),1)):E("",!0)]))),128))])):E("",!0)])])]),i.value.replies&&i.value.replies.length>0?(d(),p("div",YS,[(d(!0),p(he,null,Re(i.value.replies,ke=>(d(),p("div",{key:ke.id,class:"reply-item"},[n("div",e7,[m(Tt,{"avatar-id":ke.replyUser.avatar,"user-name":ke.replyUser.nickName||ke.replyUser.username,userId:ke.replyUser.id,size:"medium"},null,8,["avatar-id","user-name","userId"]),ae[15]||(ae[15]=n("div",{class:"online-indicator"},null,-1))]),n("div",t7,[n("div",s7,[n("div",{class:"author-wrapper",onMouseenter:je(xe=>Kt(xe,ke.replyUser.id,ke.replyUser.nickName||ke.replyUser.username,ke.replyUser.avatar),["stop"]),onMouseleave:je(Ts,["stop"])},[n("span",o7,y(ke.replyUser.nickName||ke.replyUser.username),1),ke.replyUser.role==="admin"||ke.replyUser.role==="qiuchenly"?(d(),p("span",{key:0,class:$e(["role-tag",{"role-admin":ke.replyUser.role==="admin","role-qiuchenly":ke.replyUser.role==="qiuchenly"}])},y(ke.replyUser.role==="admin"?"管理员":"qiuchenly"),3)):E("",!0),ke.replyToUser?(d(),p("span",l7,[ae[16]||(ae[16]=be(" 回复了 ",-1)),n("span",{class:"reply-to-name clickable",onMouseenter:je(xe=>Kt(xe,ke.replyToUser.id,ke.replyToUser.nickName||ke.replyToUser.username,ke.replyToUser.avatar),["stop"]),onMouseleave:je(Ts,["stop"])}," @"+y(ke.replyToUser.nickName||ke.replyToUser.username),41,a7)])):E("",!0)],40,n7),n("span",i7,y(ee(ke.date)),1)]),n("div",r7,[n("p",null,y(ke.content),1),ke.attachments&&ke.attachments.length>0?(d(),p("div",c7,[(d(!0),p(he,null,Re(ke.attachments,xe=>(d(),p("div",{key:xe.id,class:$e(["attachment-item",{clickable:!0}]),onClick:j=>ve(xe)},[m(_,{icon:xe.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",d7,y(xe.name),1),n("span",f7,y(ue(xe.size)),1),xe.type==="image"?(d(),Fe(_,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(d(),Fe(_,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,u7))),128))])):E("",!0)]),n("div",p7,[n("button",{class:"action-btn small",onClick:xe=>as(ke.id)},[m(_,{icon:"mdi:reply-outline",class:"action-icon"}),ae[17]||(ae[17]=n("span",null,"回复",-1))],8,v7),n("button",{class:"action-btn small report-btn",onClick:xe=>Vs(ke.id)},[m(_,{icon:"mdi:flag-outline",class:"action-icon"}),ae[18]||(ae[18]=n("span",null,"举报",-1))],8,m7)]),R.value===ke.id?(d(),p("div",h7,[ae[21]||(ae[21]=n("div",{class:"form-avatar"},[n("div",{class:"avatar-placeholder"},"我")],-1)),n("div",g7,[Be(n("textarea",{"onUpdate:modelValue":ae[4]||(ae[4]=xe=>U.value=xe),class:"reply-textarea",placeholder:`回复 ${$.value||ke.replyUser.nickName||ke.replyUser.username}:`,rows:"2",maxlength:"500"},null,8,y7),[[Je,U.value]]),n("div",b7,[n("div",_7,[n("input",{ref_for:!0,ref_key:"nestedImageInput",ref:V,type:"file",accept:"image/*",multiple:"",onChange:Ue,style:{display:"none"}},null,544),n("input",{ref_for:!0,ref_key:"nestedFileInput",ref:X,type:"file",multiple:"",onChange:Ve,style:{display:"none"}},null,544),n("button",{class:"upload-btn small",onClick:pt,disabled:Le.value.length>=3},[m(_,{icon:"mdi:image-outline",class:"btn-icon"}),ae[19]||(ae[19]=be(" 图片 ",-1))],8,w7),n("button",{class:"upload-btn small",onClick:lt,disabled:T.value.length>=3},[m(_,{icon:"mdi:file-outline",class:"btn-icon"}),ae[20]||(ae[20]=be(" 文件 ",-1))],8,k7)]),n("div",$7,[n("button",{class:"cancel-btn",onClick:ms}," 取消 "),n("button",{class:"submit-reply-btn small",onClick:xe=>Bt(ke.id),disabled:!ge.value||M.value},[m(_,{icon:M.value?"mdi:loading":"mdi:send",class:$e(["btn-icon",{spinning:M.value}])},null,8,["icon","class"]),be(" "+y(M.value?"发送中...":"发送"),1)],8,C7)])]),Le.value.length>0||T.value.length>0?(d(),p("div",I7,[(d(!0),p(he,null,Re(Le.value,(xe,j)=>(d(),p("div",{key:`nested-img-${j}`,class:"attachment-preview-item"},[n("img",{src:xe.preview,alt:"预览图"},null,8,S7),n("button",{class:"remove-attachment-btn",onClick:Q=>tt(j)},[m(_,{icon:"mdi:close"})],8,x7)]))),128)),(d(!0),p(he,null,Re(T.value,(xe,j)=>(d(),p("div",{key:`nested-file-${j}`,class:"attachment-preview-item file"},[m(_,{icon:"mdi:file",class:"file-icon"}),n("span",T7,y(xe.file.name),1),n("span",A7,y(ue(xe.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:Q=>vs(j)},[m(_,{icon:"mdi:close"})],8,E7)]))),128))])):E("",!0)])])):E("",!0),ke.nestedReplies&&ke.nestedReplies.length>0?(d(),p("div",R7,[(d(!0),p(he,null,Re(ke.nestedReplies,xe=>(d(),p("div",{key:xe.id,class:"nested-reply-item"},[n("div",U7,[m(Tt,{"avatar-id":xe.replyUser.avatar,"user-name":xe.replyUser.nickName||xe.replyUser.username,userId:xe.replyUser.id,size:"small"},null,8,["avatar-id","user-name","userId"]),ae[22]||(ae[22]=n("div",{class:"online-indicator"},null,-1))]),n("div",D7,[n("div",M7,[n("div",{class:"author-wrapper",onMouseenter:je(j=>Kt(j,xe.replyUser.id,xe.replyUser.nickName||xe.replyUser.username,xe.replyUser.avatar),["stop"]),onMouseleave:je(Ts,["stop"])},[n("span",L7,y(xe.replyUser.nickName||xe.replyUser.username),1),xe.replyUser.role==="admin"||xe.replyUser.role==="qiuchenly"?(d(),p("span",{key:0,class:$e(["role-tag",{"role-admin":xe.replyUser.role==="admin","role-qiuchenly":xe.replyUser.role==="qiuchenly"}])},y(xe.replyUser.role==="admin"?"管理员":"qiuchenly"),3)):E("",!0)],40,P7),xe.replyToUser?(d(),p("span",O7,[ae[23]||(ae[23]=be(" 回复 ",-1)),n("span",{class:"reply-to-name clickable",onMouseenter:je(j=>Kt(j,xe.replyToUser.id,xe.replyToUser.nickName||xe.replyToUser.username,xe.replyToUser.avatar),["stop"]),onMouseleave:je(Ts,["stop"]),onClick:je(j=>as(ke.id,xe.replyToUser.id,xe.replyToUser.nickName||xe.replyToUser.username),["stop"])}," @"+y(xe.replyToUser.nickName||xe.replyToUser.username),41,N7)])):E("",!0),n("span",F7,y(ee(xe.date)),1)]),n("div",B7,[n("p",null,y(xe.content),1),xe.attachments&&xe.attachments.length>0?(d(),p("div",V7,[(d(!0),p(he,null,Re(xe.attachments,j=>(d(),p("div",{key:j.id,class:$e(["attachment-item",{clickable:!0}]),onClick:Q=>ve(j)},[m(_,{icon:j.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",q7,y(j.name),1),n("span",H7,y(ue(j.size)),1),j.type==="image"?(d(),Fe(_,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(d(),Fe(_,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,j7))),128))])):E("",!0),n("div",z7,[n("button",{class:"action-btn small",onClick:j=>as(ke.id,xe.replyUser.id,xe.replyUser.nickName||xe.replyUser.username)},[m(_,{icon:"mdi:reply-outline",class:"action-icon"}),ae[24]||(ae[24]=n("span",null,"回复",-1))],8,W7),n("button",{class:"action-btn small report-btn",onClick:j=>Dt(ke.id,xe.id)},[m(_,{icon:"mdi:flag-outline",class:"action-icon"}),ae[25]||(ae[25]=n("span",null,"举报",-1))],8,K7)])])])]))),128))])):E("",!0)])]))),128))])):E("",!0),i.value.replies&&i.value.replies.length>0&&C.value>1?(d(),p("div",G7,[n("button",{class:"btn btn-secondary pagination-btn",disabled:h.value===1,onClick:ae[5]||(ae[5]=ke=>ce(h.value-1))}," 上一页 ",8,Q7),n("span",J7," 第 "+y(h.value)+" / "+y(C.value)+" 页,共 "+y(w.value)+" 条回复 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:h.value>=C.value,onClick:ae[6]||(ae[6]=ke=>ce(h.value+1))}," 下一页 ",8,Z7)])):E("",!0),!i.value.replies||i.value.replies.length===0?(d(),p("div",X7,[...ae[26]||(ae[26]=[n("p",null,"还没有回帖,快来抢沙发吧!",-1)])])):E("",!0)])])):E("",!0)]),m(yl,{visible:!!u.value,"image-url":u.value,onClose:Ie},null,8,["visible","image-url"]),m(ed,{visible:pe.value,"report-info":Ne.value,onClose:ae[7]||(ae[7]=ke=>pe.value=!1),onSubmit:js},null,8,["visible","report-info"]),m(td,{visible:Pe.value,"user-id":ye.value,"user-name":de.value,"avatar-id":ie.value,position:Ee.value,onClose:_l,onSendMessage:wl,onBlockUser:kl,onMouseEnter:bl},null,8,["visible","user-id","user-name","avatar-id","position"]),m(ls,{toasts:Y(o).toasts.value,onRemove:Y(o).removeToast},null,8,["toasts","onRemove"])])}}}),ex=Ge(Y7,[["__scopeId","data-v-32a8a315"]]),tx={class:"input-dialog"},sx={class:"dialog-header"},nx={class:"dialog-title"},ox={class:"dialog-body"},lx={key:0,class:"dialog-message"},ax={key:0,class:"input-label"},ix=["onUpdate:modelValue","placeholder","required","rows"],rx=["onUpdate:modelValue","type","placeholder","required"],cx={class:"dialog-actions"},ux=["disabled"],dx=ze({__name:"InputDialog",props:{visible:{type:Boolean},title:{},message:{},fields:{},confirmText:{default:"确认"},cancelText:{default:"取消"}},emits:["confirm","cancel"],setup(e,{emit:t}){const s=e,o=t,l=k({}),a=k([]),i=g=>g.map(h=>({value:h.value,label:h.label,icon:r(h.value)||""})),r=g=>({user:"mdi:account",admin:"mdi:shield-account",qiuchenly:"mdi:shield-crown",active:"mdi:check-circle",locked:"mdi:lock",banned:"mdi:ban"})[g]||"",c=fe(()=>s.fields.every(g=>{const h=l.value[g.key]||"";return g.required&&!h.trim()?!1:g.validator?g.validator(h):!0})),f=()=>{const g={};s.fields.forEach(h=>{g[h.key]=h.value!==void 0?h.value:h.defaultValue||""}),l.value=g};st(()=>s.visible,g=>{g&&(f(),vt(()=>{a.value[0]&&a.value[0].focus()}))}),st(()=>s.fields,()=>{s.visible&&f()},{deep:!0});const u=()=>{c.value&&o("confirm",{...l.value})},v=()=>{o("cancel")};return(g,h)=>(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"input-dialog-overlay",onClick:je(v,["self"])},[n("div",tx,[n("div",sx,[n("h3",nx,y(e.title),1),n("button",{class:"close-btn",onClick:v,type:"button"},[m(_,{icon:"mdi:close"})])]),n("div",ox,[e.message?(d(),p("p",lx,y(e.message),1)):E("",!0),(d(!0),p(he,null,Re(e.fields,(b,w)=>(d(),p("div",{class:"input-group",key:w},[b.label?(d(),p("label",ax,y(b.label),1)):E("",!0),b.type==="select"?(d(),Fe(Ls,{key:1,modelValue:l.value[b.key],"onUpdate:modelValue":C=>l.value[b.key]=C,options:i(b.options||[]),placeholder:b.placeholder||"请选择",class:"input-select"},null,8,["modelValue","onUpdate:modelValue","options","placeholder"])):b.type==="textarea"?Be((d(),p("textarea",{key:2,"onUpdate:modelValue":C=>l.value[b.key]=C,placeholder:b.placeholder,required:b.required,class:"input-field textarea-field",rows:b.rows||10,onKeyup:Xs(v,["esc"]),ref_for:!0,ref:C=>{C&&w===0&&(a.value[0]=C)}},null,40,ix)),[[Je,l.value[b.key]]]):Be((d(),p("input",{key:3,"onUpdate:modelValue":C=>l.value[b.key]=C,type:b.type||"text",placeholder:b.placeholder,required:b.required,class:"input-field",onKeyup:[Xs(u,["enter"]),Xs(v,["esc"])],ref_for:!0,ref:C=>{C&&w===0&&(a.value[0]=C)}},null,40,rx)),[[Ip,l.value[b.key]]])]))),128))]),n("div",cx,[e.cancelText?(d(),p("button",{key:0,class:"btn btn-outline",onClick:v},y(e.cancelText),1)):E("",!0),n("button",{class:"btn btn-primary",onClick:u,disabled:!c.value},y(e.confirmText),9,ux)])])])):E("",!0)]),_:1})]))}}),fx=Ge(dx,[["__scopeId","data-v-87e827f6"]]),px={class:"user-edit-dialog"},vx={class:"dialog-header"},mx={class:"dialog-body"},hx={key:0,class:"loading-state"},gx={key:1,class:"user-form"},yx={class:"user-header-section"},bx=["src"],_x={key:1,class:"avatar-placeholder"},wx=["disabled"],kx=["disabled"],$x=["disabled"],Cx={key:1,class:"avatar-menu-item uploading"},Ix={class:"readonly-info"},Sx={class:"info-item"},xx={class:"info-value"},Tx={class:"info-item"},Ax={class:"info-value"},Ex={class:"form-grid"},Rx={class:"form-item"},Ux={class:"input-with-icon"},Dx={class:"form-item"},Mx={class:"input-with-icon"},Px={class:"form-item"},Lx={class:"form-item"},Ox={class:"input-with-icon"},Nx={class:"form-item"},Fx={class:"input-with-icon"},Bx={class:"form-item"},Vx={class:"input-with-icon"},jx={key:0,class:"form-item"},qx={class:"form-item"},Hx={class:"titles-section"},zx={class:"titles-list"},Wx=["onClick"],Kx={class:"add-title-input"},Gx=["disabled"],Qx={class:"dialog-actions"},Jx=["disabled"],Zx=["src"],Xx=ze({__name:"UserEditDialog",props:{visible:{type:Boolean},userData:{},canEditRole:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(e,{emit:t}){const s=e,o=t,l=k({nickName:"",email:"",avatar:"",gender:"unknown",age:0,exp:0,level:0,role:"user",status:"active",titles:[]}),a=k(""),i=k(null),r=k(null),c=k(null),f=k(null),u=k(""),v=k(!1),g=k(!1),h=k(!1),b=k(null),{toasts:w,success:C,error:I,removeToast:q}=Ft(),N=k(""),z=async()=>{if(l.value.avatar){if(l.value.avatar.startsWith("http://")||l.value.avatar.startsWith("https://")){N.value=l.value.avatar;return}try{const Ee=await oe.getImage(l.value.avatar,80,200,200);N.value&&N.value.startsWith("blob:")&&URL.revokeObjectURL(N.value),N.value=Ee}catch(Ee){console.error("获取头像失败:",Ee),N.value=""}}else N.value&&N.value.startsWith("blob:")&&URL.revokeObjectURL(N.value),N.value=""},Z=()=>{var Ee;(Ee=i.value)==null||Ee.click()},W=async Ee=>{var K;const de=(K=Ee.target.files)==null?void 0:K[0];if(!de)return;if(!de.type.startsWith("image/")){I("请选择图片文件",2e3);return}const Te=10*1024*1024;if(de.size>Te){I("图片大小不能超过10MB",2e3);return}const Me=new FileReader;Me.onload=ie=>{var re;u.value=(re=ie.target)==null?void 0:re.result},Me.readAsDataURL(de),f.value=de,await te(de)},te=async Ee=>{var ye,de,Te;v.value=!0;try{const Me=await oe.uploadImage("icon",Ee);if(Me.success&&((ye=Me.data)!=null&&ye.fileId))l.value.avatar=Me.data.fileId,C("头像上传成功",2e3);else throw new Error(Me.message||"上传头像失败")}catch(Me){console.error("上传头像失败:",Me);const K=((Te=(de=Me.response)==null?void 0:de.data)==null?void 0:Te.message)||Me.message||"上传头像失败";I(K,3e3),f.value=null,u.value=""}finally{v.value=!1}},O=()=>{f.value=null,u.value="",l.value.avatar="",i.value&&(i.value.value=""),g.value=!1},R=()=>{b.value&&(clearTimeout(b.value),b.value=null),g.value=!0},F=()=>{(u.value||N.value)&&(h.value=!0,g.value=!1)},$=Ee=>{const ye=Ee.relatedTarget;ye&&c.value&&c.value.contains(ye)||(b.value&&clearTimeout(b.value),b.value=window.setTimeout(()=>{g.value=!1},200))},U=()=>{if(!g.value||!r.value||!c.value)return;const Ee=r.value.getBoundingClientRect(),ye=c.value,de=52,Te=ye.offsetHeight;let Me=Ee.right+12,K=Ee.top;Me+de>window.innerWidth-20&&(Me=Ee.left-de-12),K+Te>window.innerHeight-20&&(K=window.innerHeight-Te-20),Me<20&&(Me=20),K<20&&(K=20),ye.style.left=`${Me}px`,ye.style.top=`${K}px`};st(g,Ee=>{Ee&&vt(()=>{U()})});const se=fe(()=>[{value:"user",label:"普通用户",icon:"mdi:account"},{value:"admin",label:"管理员",icon:"mdi:shield-account"}]),M=fe(()=>[{value:"active",label:"正常",icon:"mdi:check-circle"},{value:"locked",label:"锁定",icon:"mdi:lock"},{value:"banned",label:"封禁",icon:"mdi:ban"}]),G=fe(()=>[{value:"unknown",label:"未知",icon:"mdi:help-circle"},{value:"male",label:"男",icon:"mdi:gender-male"},{value:"female",label:"女",icon:"mdi:gender-female"}]),B=Ee=>Ee?new Date(Ee).toLocaleString("zh-CN"):"未知",V=()=>{var ye;const Ee=a.value.trim();Ee&&!((ye=l.value.titles)!=null&&ye.includes(Ee))&&(l.value.titles||(l.value.titles=[]),l.value.titles.push(Ee),a.value="")},X=Ee=>{l.value.titles&&l.value.titles.splice(Ee,1)},pe=()=>{var Ee;s.userData&&(l.value={nickName:s.userData.nickName||"",email:s.userData.email||"",avatar:s.userData.avatar||"",gender:s.userData.gender||"unknown",age:s.userData.age||0,exp:s.userData.exp||0,level:s.userData.level||0,role:s.userData.role||"user",status:s.userData.status||"active",titles:s.userData.titles?[...s.userData.titles]:[]},f.value=null,u.value="",g.value=!1,(Ee=s.userData)!=null&&Ee.avatar?z():(N.value&&N.value.startsWith("blob:")&&URL.revokeObjectURL(N.value),N.value=""))};rt(()=>{window.addEventListener("scroll",U,!0),window.addEventListener("resize",U)}),Et(()=>{window.removeEventListener("scroll",U,!0),window.removeEventListener("resize",U),b.value&&clearTimeout(b.value),N.value&&N.value.startsWith("blob:")&&URL.revokeObjectURL(N.value)}),st(()=>s.visible,Ee=>{Ee&&(pe(),a.value="")});const Ne=()=>{o("confirm",l.value)},Pe=()=>{o("cancel")};return(Ee,ye)=>(d(),p(he,null,[(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>[e.visible?(d(),p("div",{key:0,class:"user-edit-dialog-overlay",onClick:je(Pe,["self"])},[n("div",px,[n("div",vx,[ye[12]||(ye[12]=n("h3",{class:"dialog-title"},"编辑用户信息",-1)),n("button",{class:"close-btn",onClick:Pe,type:"button"},[m(_,{icon:"mdi:close"})])]),n("div",mx,[e.loading?(d(),p("div",hx,[...ye[13]||(ye[13]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载用户信息中...",-1)])])):(d(),p("div",gx,[n("div",yx,[n("div",{class:"avatar-section",onMouseenter:R,onMouseleave:$},[n("div",{ref_key:"avatarPreviewRef",ref:r,class:"avatar-preview"},[u.value||N.value?(d(),p("img",{key:0,src:u.value||N.value,alt:"头像预览",class:"avatar-image"},null,8,bx)):(d(),p("div",_x,[m(_,{icon:"mdi:account",class:"placeholder-icon"})]))],512),n("input",{ref_key:"avatarInputRef",ref:i,type:"file",accept:"image/*",onChange:W,class:"file-input",style:{display:"none"}},null,544),(d(),Fe(Nt,{to:"body"},[m(mt,{name:"avatar-menu-fade"},{default:ft(()=>[g.value?(d(),p("div",{key:0,ref_key:"avatarMenuRef",ref:c,class:"avatar-menu",onMouseenter:R,onMouseleave:$},[n("button",{type:"button",class:"avatar-menu-item",onClick:F,disabled:!u.value&&!N.value,title:"预览"},[m(_,{icon:"fluent:eye-24-regular"})],8,wx),n("button",{type:"button",class:"avatar-menu-item",onClick:Z,disabled:v.value,title:"更换"},[m(_,{icon:"fluent:image-edit-24-regular"})],8,kx),f.value||l.value.avatar?(d(),p("button",{key:0,type:"button",class:"avatar-menu-item danger",onClick:O,disabled:v.value,title:"清除"},[m(_,{icon:"fluent:delete-24-regular"})],8,$x)):E("",!0),v.value?(d(),p("div",Cx,[...ye[14]||(ye[14]=[n("div",{class:"spinner-small"},null,-1)])])):E("",!0)],544)):E("",!0)]),_:1})]))],32),n("div",Ix,[n("div",Sx,[ye[15]||(ye[15]=n("span",{class:"info-label"},"用户ID",-1)),n("span",xx,y(e.userData.id),1)]),n("div",Tx,[ye[16]||(ye[16]=n("span",{class:"info-label"},"注册时间",-1)),n("span",Ax,y(B(e.userData.createdAt)),1)])])]),n("div",Ex,[n("div",Rx,[ye[17]||(ye[17]=n("label",{class:"form-label"},"昵称",-1)),n("div",Ux,[m(_,{icon:"fluent:person-24-regular",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":ye[0]||(ye[0]=de=>l.value.nickName=de),type:"text",placeholder:"请输入昵称",class:"form-input"},null,512),[[Je,l.value.nickName]])])]),n("div",Dx,[ye[18]||(ye[18]=n("label",{class:"form-label"},"邮箱",-1)),n("div",Mx,[m(_,{icon:"fluent:mail-24-regular",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":ye[1]||(ye[1]=de=>l.value.email=de),type:"email",placeholder:"请输入邮箱",class:"form-input"},null,512),[[Je,l.value.email]])])]),n("div",Px,[ye[19]||(ye[19]=n("label",{class:"form-label"},"性别",-1)),m(Ls,{modelValue:l.value.gender,"onUpdate:modelValue":ye[2]||(ye[2]=de=>l.value.gender=de),options:G.value,placeholder:"请选择性别"},null,8,["modelValue","options"])]),n("div",Lx,[ye[20]||(ye[20]=n("label",{class:"form-label"},"年龄",-1)),n("div",Ox,[m(_,{icon:"mdi:calendar",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":ye[3]||(ye[3]=de=>l.value.age=de),type:"number",min:"0",max:"150",placeholder:"请输入年龄",class:"form-input"},null,512),[[Je,l.value.age,void 0,{number:!0}]])])]),n("div",Nx,[ye[21]||(ye[21]=n("label",{class:"form-label"},"经验值",-1)),n("div",Fx,[m(_,{icon:"mdi:star",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":ye[4]||(ye[4]=de=>l.value.exp=de),type:"number",min:"0",placeholder:"请输入经验值",class:"form-input"},null,512),[[Je,l.value.exp,void 0,{number:!0}]])])]),n("div",Bx,[ye[22]||(ye[22]=n("label",{class:"form-label"},"等级",-1)),n("div",Vx,[m(_,{icon:"mdi:trending-up",class:"input-icon"}),Be(n("input",{"onUpdate:modelValue":ye[5]||(ye[5]=de=>l.value.level=de),type:"number",min:"0",placeholder:"请输入等级",class:"form-input"},null,512),[[Je,l.value.level,void 0,{number:!0}]])])]),e.canEditRole?(d(),p("div",jx,[ye[23]||(ye[23]=n("label",{class:"form-label"},"角色",-1)),m(Ls,{modelValue:l.value.role,"onUpdate:modelValue":ye[6]||(ye[6]=de=>l.value.role=de),options:se.value,placeholder:"请选择角色"},null,8,["modelValue","options"])])):E("",!0),n("div",qx,[ye[24]||(ye[24]=n("label",{class:"form-label"},"状态",-1)),m(Ls,{modelValue:l.value.status,"onUpdate:modelValue":ye[7]||(ye[7]=de=>l.value.status=de),options:M.value,placeholder:"请选择状态"},null,8,["modelValue","options"])])]),n("div",Hx,[n("div",zx,[(d(!0),p(he,null,Re(l.value.titles,(de,Te)=>(d(),p("div",{key:Te,class:"title-tag"},[n("span",null,y(de),1),n("button",{type:"button",class:"remove-title-btn",onClick:Me=>X(Te)},[m(_,{icon:"mdi:close"})],8,Wx)]))),128)),n("div",Kx,[Be(n("input",{"onUpdate:modelValue":ye[8]||(ye[8]=de=>a.value=de),type:"text",placeholder:"添加称号",class:"title-input",onKeyup:Xs(V,["enter"])},null,544),[[Je,a.value]]),n("button",{type:"button",class:"add-title-btn",onClick:V,disabled:!a.value.trim()},[m(_,{icon:"mdi:plus"})],8,Gx)])])])]))]),n("div",Qx,[n("button",{class:"btn btn-outline",onClick:Pe}," 取消 "),n("button",{class:"btn btn-primary",onClick:Ne,disabled:e.loading}," 保存 ",8,Jx)])])])):E("",!0)]),_:1})])),m(mt,{name:"preview-fade"},{default:ft(()=>[h.value?(d(),p("div",{key:0,class:"avatar-preview-modal",onClick:ye[11]||(ye[11]=de=>h.value=!1)},[n("div",{class:"preview-content",onClick:ye[10]||(ye[10]=je(()=>{},["stop"]))},[n("img",{src:u.value||N.value,alt:"头像预览"},null,8,Zx),n("button",{class:"close-preview-btn",onClick:ye[9]||(ye[9]=de=>h.value=!1)},[m(_,{icon:"mdi:close"})])])])):E("",!0)]),_:1}),m(ls,{toasts:Y(w),onRemove:Y(q)},null,8,["toasts","onRemove"])],64))}}),Yx=Ge(Xx,[["__scopeId","data-v-bc3ad561"]]),e9={class:"post-edit-dialog"},t9={class:"dialog-header"},s9={class:"dialog-body"},n9={key:0,class:"loading-state"},o9={key:1,class:"post-form"},l9={key:0,class:"form-group author-info-section"},a9={class:"author-card"},i9={class:"author-avatar"},r9={class:"author-details"},c9={class:"author-name"},u9={key:0,class:"author-id"},d9={class:"form-group"},f9=["disabled"],p9={class:"form-group"},v9=["disabled"],m9={class:"form-group"},h9={key:0,class:"attachments-list"},g9=["onClick","disabled"],y9=["onClick"],b9={class:"attachment-name"},_9={class:"attachment-size"},w9={key:1,class:"no-attachments"},k9={class:"form-group"},$9={class:"attachment-upload"},C9=["disabled"],I9=["disabled"],S9=["disabled"],x9=["disabled"],T9={key:0,class:"upload-progress"},A9={class:"dialog-actions"},E9=["disabled"],R9=["disabled"],U9={key:0},D9={key:1},M9=ze({__name:"PostEditDialog",props:{visible:{type:Boolean},postData:{},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(e,{emit:t}){const s=e,o=t,l=Ft(),a=k({title:"",content:"",attachments:[]}),i=k(!1),r=k(!1),c=k(null),f=k(null),u=k(null);k("");const v=fe(()=>a.value.title.trim().length>0&&a.value.content.trim().length>0),g=O=>{if(O===0)return"0 B";const R=1024,F=["B","KB","MB","GB"],$=Math.floor(Math.log(O)/Math.log(R));return Math.round(O/Math.pow(R,$)*100)/100+" "+F[$]},h=()=>{s.postData?a.value={title:s.postData.title||"",content:s.postData.content||"",attachments:s.postData.attachments||[]}:a.value={title:"",content:"",attachments:[]}};st(()=>s.visible,O=>{O&&s.postData&&(console.log("对话框打开,初始化表单数据:",s.postData),h())}),st(()=>s.postData,O=>{s.visible&&O&&(console.log("postData变化更新表单数据:",O),h())},{deep:!0}),st(()=>s.loading,O=>{console.log("loading状态变化:",O)});const b=()=>{var O;(O=c.value)==null||O.click()},w=()=>{var O;(O=f.value)==null||O.click()},C=async O=>{var $,U,se;const R=O.target,F=($=R.files)==null?void 0:$[0];if(F){r.value=!0;try{const M=await oe.uploadImageAttachment(F);M.success&&M.attachmentId?(a.value.attachments.push({id:M.attachmentId,name:F.name,url:M.url||"",type:"image",size:F.size}),l.success("图片上传成功")):l.error(M.message||"图片上传失败")}catch(M){console.error("上传图片失败:",M),l.error(((se=(U=M.response)==null?void 0:U.data)==null?void 0:se.message)||M.message||"图片上传失败")}finally{r.value=!1,R&&(R.value="")}}},I=async O=>{var $,U,se;const R=O.target,F=($=R.files)==null?void 0:$[0];if(F){r.value=!0;try{const M=await oe.uploadFileAttachment(F);M.success&&M.attachmentId?(a.value.attachments.push({id:M.attachmentId,name:F.name,url:M.url||"",type:"file",size:F.size}),l.success("文件上传成功")):l.error(M.message||"文件上传失败")}catch(M){console.error("上传文件失败:",M),l.error(((se=(U=M.response)==null?void 0:U.data)==null?void 0:se.message)||M.message||"文件上传失败")}finally{r.value=!1,R&&(R.value="")}}},q=O=>{a.value.attachments=a.value.attachments.filter(R=>R.id!==O)},N=()=>{if(!v.value)return;const O=a.value.attachments.map(R=>R.id);o("confirm",{title:a.value.title.trim(),content:a.value.content.trim(),attachmentIds:O})},z=()=>{o("cancel")},Z=async O=>{if(O.type==="image"){if(O.id){const R=await oe.getAttachmentImage(O.id);R?u.value=R:l.error("图片加载失败")}}else await te(O)},W=()=>{u.value&&(URL.revokeObjectURL(u.value),u.value=null)},te=async O=>{try{const R=await oe.getAttachmentDownloadUrl(O.id);if(R){const F=document.createElement("a");F.href=R,F.download=O.name,F.target="_blank",document.body.appendChild(F),F.click(),document.body.removeChild(F),l.success("文件下载已开始")}else if(O.url){const F=document.createElement("a");F.href=O.url,F.download=O.name,F.target="_blank",document.body.appendChild(F),F.click(),document.body.removeChild(F),l.success("文件下载已开始")}else l.error("无法获取下载链接")}catch(R){console.error("下载文件失败:",R),l.error("下载文件失败: "+(R.message||"未知错误"))}};return(O,R)=>(d(),p(he,null,[(d(),Fe(Nt,{to:"body"},[m(mt,{name:"fade"},{default:ft(()=>{var F;return[e.visible?(d(),p("div",{key:0,class:"post-edit-dialog-overlay",onClick:je(z,["self"])},[n("div",e9,[n("div",t9,[R[2]||(R[2]=n("h3",{class:"dialog-title"},"编辑帖子",-1)),n("button",{class:"close-btn",onClick:z,type:"button"},[m(_,{icon:"mdi:close"})])]),n("div",s9,[s.loading?(d(),p("div",n9,[...R[3]||(R[3]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载帖子详情中...",-1)])])):(d(),p("div",o9,[(F=s.postData)!=null&&F.author?(d(),p("div",l9,[R[4]||(R[4]=n("label",{class:"form-label"},"发帖人",-1)),n("div",a9,[n("div",i9,[m(Tt,{"avatar-id":s.postData.author.avatar,"user-name":s.postData.author.name,width:36,height:36},null,8,["avatar-id","user-name"])]),n("div",r9,[n("div",c9,y(s.postData.author.name),1),s.postData.author.id?(d(),p("div",u9," ID: "+y(s.postData.author.id),1)):E("",!0)])])])):E("",!0),n("div",d9,[R[5]||(R[5]=n("label",{class:"form-label"},[be("标题 "),n("span",{class:"required"},"*")],-1)),Be(n("input",{"onUpdate:modelValue":R[0]||(R[0]=$=>a.value.title=$),type:"text",placeholder:"请输入帖子标题",class:"form-input",disabled:i.value},null,8,f9),[[Je,a.value.title]])]),n("div",p9,[R[6]||(R[6]=n("label",{class:"form-label"},[be("内容 "),n("span",{class:"required"},"*")],-1)),Be(n("textarea",{"onUpdate:modelValue":R[1]||(R[1]=$=>a.value.content=$),placeholder:"请输入帖子内容",class:"form-textarea",rows:"15",disabled:i.value},null,8,v9),[[Je,a.value.content]])]),n("div",m9,[R[8]||(R[8]=n("label",{class:"form-label"},"附件",-1)),a.value.attachments&&a.value.attachments.length>0?(d(),p("div",h9,[(d(!0),p(he,null,Re(a.value.attachments,$=>(d(),p("div",{key:$.id,class:$e(["attachment-item",{clickable:!0}])},[n("button",{class:"remove-attachment-btn-left",onClick:je(U=>q($.id),["stop"]),disabled:i.value,type:"button",title:"删除附件"},[m(_,{icon:"mdi:close"})],8,g9),n("div",{class:"attachment-info",onClick:je(U=>Z($),["stop"])},[m(_,{icon:$.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",b9,y($.name),1),n("span",_9,y(g($.size)),1),$.type==="image"?(d(),Fe(_,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(d(),Fe(_,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,y9)]))),128))])):(d(),p("div",w9,[...R[7]||(R[7]=[n("p",null,"暂无附件",-1)])]))]),n("div",k9,[R[12]||(R[12]=n("label",{class:"form-label"},"添加附件",-1)),n("div",$9,[n("input",{ref_key:"imageInputRef",ref:c,type:"file",accept:"image/*",onChange:C,class:"file-input",style:{display:"none"},disabled:i.value},null,40,C9),n("input",{ref_key:"fileInputRef",ref:f,type:"file",onChange:I,class:"file-input",style:{display:"none"},disabled:i.value},null,40,I9),n("button",{class:"btn btn-outline",onClick:b,disabled:i.value||r.value,type:"button"},[m(_,{icon:"mdi:image",class:"btn-icon"}),R[9]||(R[9]=be(" 添加图片 ",-1))],8,S9),n("button",{class:"btn btn-outline",onClick:w,disabled:i.value||r.value,type:"button"},[m(_,{icon:"mdi:file",class:"btn-icon"}),R[10]||(R[10]=be(" 添加文件 ",-1))],8,x9)]),r.value?(d(),p("div",T9,[...R[11]||(R[11]=[n("div",{class:"spinner-small"},null,-1),n("span",null,"上传中...",-1)])])):E("",!0)])]))]),n("div",A9,[n("button",{class:"btn btn-outline",onClick:z,disabled:i.value||r.value}," 取消 ",8,E9),n("button",{class:"btn btn-primary",onClick:N,disabled:!v.value||i.value||r.value},[i.value?(d(),p("span",U9,"保存中...")):(d(),p("span",D9,"保存"))],8,R9)])])])):E("",!0)]}),_:1})])),m(yl,{visible:!!u.value,"image-url":u.value,onClose:W},null,8,["visible","image-url"])],64))}}),P9=Ge(M9,[["__scopeId","data-v-0145a47d"]]);function L9(){const e=k(!1),t=k({title:"",fields:[],confirmText:"确认",cancelText:"取消"});let s=null;const o=i=>(t.value={...t.value,...i},e.value=!0,new Promise(r=>{s=r})),l=i=>{e.value=!1,s&&(s(i),s=null)},a=()=>{e.value=!1,s&&(s(null),s=null)};return{visible:fe(()=>e.value),config:fe(()=>t.value),show:o,handleConfirm:l,handleCancel:a}}const O9={class:"admin-panel-page"},N9={class:"page-container"},F9={class:"tabs-container"},B9={class:"tabs"},V9=["onClick"],j9={key:0,class:"tab-badge"},q9={class:"content-area"},H9={key:0,class:"tab-content"},z9={class:"section-header"},W9={class:"header-actions"},K9={class:"table-container"},G9={key:0,class:"loading-state"},Q9={key:1,class:"error-state"},J9={class:"data-table"},Z9={key:0},X9={colspan:"8",class:"empty-state"},Y9={class:"action-buttons"},eT=["onClick"],tT=["onClick"],sT=["onClick"],nT=["onClick"],oT=["onClick"],lT=["onClick"],aT=["onClick"],iT=["onClick"],rT={key:0,class:"pagination"},cT=["disabled"],uT=["disabled"],dT={key:1,class:"tab-content"},fT={class:"section-header"},pT={class:"header-actions"},vT={class:"table-container"},mT={key:0,class:"loading-state"},hT={key:1,class:"error-state"},gT={class:"data-table"},yT={key:0},bT={colspan:"8",class:"empty-state"},_T={class:"post-title-cell"},wT={class:"post-title"},kT={class:"action-buttons"},$T=["onClick"],CT=["onClick"],IT=["onClick"],ST={key:0,class:"pagination"},xT=["disabled"],TT={class:"pagination-info"},AT=["disabled"],ET={key:2,class:"tab-content"},RT={class:"section-header"},UT={class:"header-actions"},DT={class:"violations-list"},MT={key:0,class:"loading-state"},PT={key:1,class:"error-state"},LT={key:0,class:"empty-state"},OT={class:"violation-header"},NT={class:"violation-info"},FT={class:"violation-type"},BT={class:"violation-id"},VT={class:"violation-time"},jT={class:"violation-content"},qT={class:"violation-details"},HT={class:"detail-row"},zT={class:"detail-value"},WT={class:"detail-row"},KT={class:"detail-value"},GT={class:"detail-row"},QT={class:"detail-content"},JT={key:0,class:"detail-row"},ZT={class:"detail-content"},XT={key:0,class:"violation-actions"},YT=["onClick"],eA=["onClick"],tA={key:1,class:"pagination"},sA=["disabled"],nA={class:"pagination-info"},oA=["disabled"],lA={key:3,class:"tab-content"},aA={class:"sub-tabs"},iA={key:0,class:"sub-tab-badge"},rA={key:0,class:"sub-tab-content"},cA={class:"section-header"},uA={class:"header-actions"},dA={class:"table-container"},fA={class:"data-table"},pA={class:"forum-name-cell"},vA=["src","alt"],mA={key:1,class:"forum-icon-placeholder"},hA={class:"bundle-id"},gA={class:"action-buttons"},yA=["onClick"],bA=["onClick"],_A={key:0,class:"empty-state"},wA={key:1,class:"sub-tab-content"},kA={class:"section-header"},$A={class:"header-info"},CA={class:"header-actions"},IA={class:"table-container"},SA={class:"data-table"},xA={class:"forum-name-cell"},TA=["src","alt"],AA={key:1,class:"forum-icon-placeholder"},EA={class:"bundle-id"},RA={class:"action-buttons"},UA=["onClick"],DA=["onClick"],MA={key:0,class:"empty-state"},PA={key:4,class:"tab-content"},LA=ze({__name:"AdminPanel",setup(e){const t=k("users"),s=k(""),o=k(""),l=k("all"),a=k("all"),i=k(""),r=k("all"),c=[{value:"all",label:"全部",icon:"fluent-color:text-bullet-list-square-sparkle-32"},{value:"reported",label:"已举报",icon:"fluent-color:flag-24"},{value:"deleted",label:"已删除",icon:"fluent-color:cloud-dismiss-48"}],f=[{value:"all",label:"全部",icon:"fluent-color:text-bullet-list-square-sparkle-32"},{value:"pending",label:"待处理",icon:"fluent-color:clock-24"},{value:"resolved",label:"已处理",icon:"fluent-color:checkmark-circle-24"},{value:"rejected",label:"已驳回",icon:"fluent-color:dismiss-circle-24"}],u=[{value:"all",label:"全部",icon:"fluent-color:text-bullet-list-square-sparkle-32"},{value:"enabled",label:"已启用",icon:"fluent-color:checkmark-circle-24"},{value:"disabled",label:"已禁用",icon:"fluent-color:dismiss-circle-24"}],v=k([{id:"users",label:"用户管理",icon:"fluent-color:people-team-48",badge:null},{id:"posts",label:"帖子管理",icon:"fluent-color:notebook-32",badge:null},{id:"violations",label:"违规处理",icon:"fluent-color:person-warning-48",badge:null},{id:"forums",label:"讨论区管理",icon:"fluent-color:chat-bubbles-question-24",badge:null},{id:"settings",label:"系统设置",icon:"fluent-color:settings-24",badge:null}]),g=k([]),h=k(!1),b=k(""),w=k(1),C=k(20),I=k(0),q=fe(()=>Math.ceil(I.value/C.value)),N=Wt(),{toasts:z,success:Z,error:W,removeToast:te}=Ft(),O=$n(),R=L9(),{isQiuChenLy:F}=gl(),$=Xu(),U=po(),se=k(!1),M=k(null),G=k(!1),B=k(!1),V=k(null),X=k(!1);let pe=null;const Ne=()=>{pe&&clearTimeout(pe),pe=setTimeout(()=>{w.value=1,lt()},500)},Pe=k([]),Ee=k(!1),ye=k(""),de=k(1),Te=k(20),Me=k(0),K=fe(()=>Math.ceil(Me.value/Te.value)),ie=k([]),re=k([]),Ce=k("forums"),Le=k([]),T=k(!1),D=k(""),A=k(1),J=k(20),ce=k(0),x=fe(()=>Math.ceil(ce.value/J.value)),S=fe(()=>g.value),L=fe(()=>Pe.value),P=fe(()=>Le.value),ee=fe(()=>{let j=[...ie.value];if(i.value){const Q=i.value.toLowerCase();j=j.filter(H=>H.appName.toLowerCase().includes(Q)||H.bundleId.toLowerCase().includes(Q))}return r.value!=="all"&&(j=j.filter(Q=>r.value==="enabled"&&Q.enabled||r.value==="disabled"&&!Q.enabled)),j}),ue=j=>oe.getAppIconUrl(j),ve=fe(()=>re.value.filter(j=>j.status==="pending")),Ie=j=>{switch(j){case"pending":return"待处理";case"approved":return"已批准";case"rejected":return"已拒绝";default:return j}},Oe=j=>{switch(j){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},Ke=j=>{switch(j){case"active":return"正常";case"locked":return"锁定";case"banned":return"封禁";case"deleted":return"已删除";default:return j}},ge=j=>{switch(j){case"reported":return"已举报";case"deleted":return"已删除";default:return"正常"}},Xe=j=>{switch(j){case"post":return"帖子";case"reply":return"回复";case"nestedReply":return"楼中楼";default:return j}},yt=j=>{switch(j){case"pending":return"待处理";case"resolved":return"已处理";case"rejected":return"已驳回";default:return j}},pt=j=>new Date(j).toLocaleString("zh-CN"),lt=async()=>{h.value=!0,b.value="";try{const j=await oe.getUsers(w.value,C.value,s.value||void 0);j.users&&Array.isArray(j.users)?(g.value=j.users.map(Q=>{var H;return{id:Q.id||Q._id||((H=Q._id)==null?void 0:H.toString()),username:Q.username,nickName:Q.nickName,email:Q.email,avatar:Q.avatar||"",role:Q.role||(Q.roleWeight>=9999?"qiuchenly":Q.roleWeight>=90?"admin":"user"),roleWeight:Q.roleWeight,status:Q.status||"active",gender:Q.gender||"unknown",age:Q.age||0,exp:Q.exp||0,level:Q.level||0,titles:Q.titles||[],createdAt:Q.createdAt}}),I.value=j.total||0):b.value="加载用户列表失败"}catch(j){b.value=j.message||"加载用户列表失败",W(j.message||"加载用户列表失败",3e3)}finally{h.value=!1}},Se=async()=>{var Q,H;const j=await R.show({title:"添加用户",message:"请填写用户信息",fields:[{key:"username",label:"用户名",placeholder:"请输入用户名",type:"text",required:!0},{key:"password",label:"密码",placeholder:"请输入密码",type:"password",required:!0},{key:"email",label:"邮箱",placeholder:"请输入邮箱(可选)",type:"email",required:!1},{key:"nickName",label:"昵称",placeholder:"请输入昵称(可选)",type:"text",required:!1},{key:"role",label:"角色",type:"select",required:!1,defaultValue:"user",options:[{label:"普通用户",value:"user"},...F.value?[{label:"管理员",value:"admin"}]:[]]}]});if(j)try{const ne=await oe.addUser({username:j.username,password:j.password,email:j.email||void 0,nickName:j.nickName||void 0,role:j.role==="admin"?"admin":void 0});if(ne.success)Z("添加用户成功",2e3),lt();else{const we=ne.message||"添加用户失败";W(we,3e3),console.error("添加用户失败:",ne)}}catch(ne){const we=((H=(Q=ne.response)==null?void 0:Q.data)==null?void 0:H.message)||ne.message||"添加用户失败";W(we,3e3),console.error("添加用户异常:",ne)}},_e=async j=>{M.value={id:j.id,username:j.username,nickName:j.nickName,email:j.email,avatar:j.avatar||"",role:j.role,roleWeight:j.roleWeight,status:j.status,gender:j.gender||"unknown",age:j.age||0,exp:j.exp||0,level:j.level||0,titles:j.titles||[],createdAt:j.createdAt},se.value=!0},Ue=async j=>{var Q,H,ne,we,qe,Mt;if(M.value){G.value=!0;try{const Vt={};if(j.nickName!==void 0&&(Vt.nickName=j.nickName),j.email!==void 0&&(Vt.email=j.email),j.avatar!==void 0&&(Vt.avatar=j.avatar),j.gender!==void 0&&(Vt.gender=j.gender),j.age!==void 0&&(Vt.age=j.age),j.exp!==void 0&&(Vt.exp=j.exp),j.level!==void 0&&(Vt.level=j.level),j.titles!==void 0&&(Vt.titles=j.titles),j.status!==void 0){const Sn={active:"active",locked:"locked",banned:"banned"}[j.status]||j.status;try{await oe.setUserStatus(M.value.username,Sn)}catch($l){const sd=((H=(Q=$l.response)==null?void 0:Q.data)==null?void 0:H.message)||$l.message||"更新用户状态失败";W(sd,3e3),console.error("更新用户状态异常:",$l)}}if(j.role!==void 0&&F.value)try{await oe.upgradeUserRole(M.value.username,j.role)}catch(is){const Sn=((we=(ne=is.response)==null?void 0:ne.data)==null?void 0:we.message)||is.message||"更新用户角色失败";W(Sn,3e3),console.error("更新用户角色异常:",is)}if(Object.keys(Vt).length>0){const is=await oe.updateUser(M.value.id,Vt);if(is.success)Z("更新用户成功",2e3),lt(),se.value=!1,M.value=null;else{const Sn=is.message||"更新用户失败";W(Sn,3e3),console.error("更新用户失败:",is)}}else Z("更新用户成功",2e3),lt(),se.value=!1,M.value=null}catch(Vt){const is=((Mt=(qe=Vt.response)==null?void 0:qe.data)==null?void 0:Mt.message)||Vt.message||"更新用户失败";W(is,3e3),console.error("更新用户异常:",Vt)}finally{G.value=!1}}},Ve=()=>{se.value=!1,M.value=null},et=async j=>{var H,ne;if(await O.show({title:"删除用户",message:`确定要删除用户 ${j.username} 吗?此操作不可恢复!`,type:"danger",confirmText:"删除",cancelText:"取消"}))try{const we=await oe.deleteUser(j.username);if(we.success)Z("删除用户成功",2e3),lt();else{const qe=we.message||"删除用户失败";W(qe,3e3),console.error("删除用户失败:",we)}}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"删除用户失败";W(qe,3e3),console.error("删除用户异常:",we)}},ot=async j=>{var H,ne;if(await O.show({title:"锁定用户",message:`确定要锁定用户 ${j.username} 吗?锁定后用户将无法发表评论、点赞、收藏、分享等操作。`,type:"warning",confirmText:"锁定",cancelText:"取消"}))try{const we=await oe.setUserStatus(j.username,"locked");if(we.success)Z("锁定用户成功",2e3),lt();else{const qe=we.message||"锁定用户失败";W(qe,3e3),console.error("锁定用户失败:",we)}}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"锁定用户失败";W(qe,3e3),console.error("锁定用户异常:",we)}},tt=async j=>{var Q,H;try{const ne=await oe.setUserStatus(j.username,"active");if(ne.success)Z("解除锁定成功",2e3),lt();else{const we=ne.message||"解除锁定失败";W(we,3e3),console.error("解除锁定失败:",ne)}}catch(ne){const we=((H=(Q=ne.response)==null?void 0:Q.data)==null?void 0:H.message)||ne.message||"解除锁定失败";W(we,3e3),console.error("解除锁定异常:",ne)}},vs=async j=>{var H,ne;if(await O.show({title:"封禁用户",message:`确定要封禁用户 ${j.username} 吗封禁后用户将无法登录无法访问任何API接口。`,type:"danger",confirmText:"封禁",cancelText:"取消"}))try{const we=await oe.setUserStatus(j.username,"banned");if(we.success)Z("封禁用户成功",2e3),lt();else{const qe=we.message||"封禁用户失败";W(qe,3e3),console.error("封禁用户失败:",we)}}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"封禁用户失败";W(qe,3e3),console.error("封禁用户异常:",we)}},Rt=async j=>{var Q,H;try{const ne=await oe.setUserStatus(j.username,"active");if(ne.success)Z("解除封禁成功",2e3),lt();else{const we=ne.message||"解除封禁失败";W(we,3e3),console.error("解除封禁失败:",ne)}}catch(ne){const we=((H=(Q=ne.response)==null?void 0:Q.data)==null?void 0:H.message)||ne.message||"解除封禁失败";W(we,3e3),console.error("解除封禁异常:",ne)}},as=async j=>{var H,ne;if(await O.show({title:"提升用户权限",message:`确定要将用户 ${j.username} 提升为管理员吗?`,type:"warning",confirmText:"提升",cancelText:"取消"}))try{const we=await oe.upgradeUserRole(j.username,"admin");if(we.success)Z("提升用户权限成功",2e3),lt();else{const qe=we.message||"提升用户权限失败";W(qe,3e3),console.error("提升用户权限失败:",we)}}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"提升用户权限失败";W(qe,3e3),console.error("提升用户权限异常:",we)}},ms=async j=>{var H,ne;if(await O.show({title:"降级用户权限",message:`确定要将管理员 ${j.username} 降级为普通用户吗?`,type:"warning",confirmText:"降级",cancelText:"取消"}))try{const we=await oe.upgradeUserRole(j.username,"user");if(we.success)Z("降级用户权限成功",2e3),lt();else{const qe=we.message||"降级用户权限失败";W(qe,3e3),console.error("降级用户权限失败:",we)}}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"降级用户权限失败";W(qe,3e3),console.error("降级用户权限异常:",we)}},Bt=async()=>{var j,Q;Ee.value=!0,ye.value="";try{const H=await oe.getAdminPosts(de.value,Te.value,o.value||void 0,l.value);H.success&&H.data?(Pe.value=H.data.posts.map(ne=>{var we;return{id:ne.id,title:ne.title,author:typeof ne.author=="string"?ne.author:((we=ne.author)==null?void 0:we.name)||"-",forumName:ne.forumName||ne.bundleId||"-",bundleId:ne.bundleId,content:ne.content,attachments:ne.attachments||[],replyCount:ne.replyCount||0,publishTime:ne.publishTime,status:ne.status||"normal"}}),Me.value=H.data.total):ye.value=H.message||"加载帖子列表失败"}catch(H){console.error("加载帖子列表失败:",H),ye.value=((Q=(j=H.response)==null?void 0:j.data)==null?void 0:Q.message)||H.message||"加载帖子列表失败"}finally{Ee.value=!1}};st(l,()=>{de.value=1,Bt()});const Ut=j=>{j.bundleId?N.push(`/discussion/${j.bundleId}/post/${j.id}`):N.push("/discussion")},Vs=async j=>{var Q,H;if(V.value={id:j.id,bundleId:j.bundleId,title:j.title,content:j.content||"",attachments:j.attachments||[],author:typeof j.author=="string"?{id:"",name:j.author}:j.author},B.value=!0,X.value=!0,j.bundleId)try{const ne=await oe.getForumPost(j.bundleId,j.id,1,1);console.log("获取到的帖子详情:",ne),ne&&(V.value={id:j.id,bundleId:j.bundleId,title:ne.title||j.title,content:ne.content||j.content||"",attachments:ne.attachments||[],author:ne.author||(typeof j.author=="string"?{id:"",name:j.author}:j.author)},console.log("更新后的editingPost:",V.value))}catch(ne){console.error("获取帖子详情失败:",ne),W("获取帖子详情失败: "+(((H=(Q=ne.response)==null?void 0:Q.data)==null?void 0:H.message)||ne.message||"未知错误"),3e3)}finally{console.log("设置postEditLoading为false"),X.value=!1}else X.value=!1},Dt=async j=>{var Q,H;if(V.value){U.show("保存中...");try{const ne=await oe.updateAdminPost(V.value.id,j.title,j.content,j.attachmentIds);ne.success?(Z("编辑帖子成功",2e3),await Bt(),B.value=!1,V.value=null):W(ne.message||"编辑帖子失败",3e3)}catch(ne){W(((H=(Q=ne.response)==null?void 0:Q.data)==null?void 0:H.message)||ne.message||"编辑帖子失败",3e3)}finally{U.hide()}}},js=()=>{B.value=!1,V.value=null},xs=async j=>{var H,ne;if(await O.show({title:"删除帖子",message:`确定要删除帖子 "${j.title}" 吗?`,type:"danger",confirmText:"删除",cancelText:"取消"})){U.show("删除中...");try{const we=await oe.deleteAdminPost(j.id);we.success?(Z("删除帖子成功",2e3),await Bt()):W(we.message||"删除帖子失败",3e3)}catch(we){W(((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"删除帖子失败",3e3)}finally{U.hide()}}},In=async()=>{try{const j=await oe.getAdminViolations(1,1,"pending");if(j.success&&j.data){const Q=j.data.total||0,H=v.value.find(ne=>ne.id==="violations");H&&(H.badge=Q>0?String(Q):null)}}catch{}},Kt=async()=>{var j,Q;T.value=!0,D.value="";try{const H=await oe.getAdminViolations(A.value,J.value,a.value);H.success&&H.data?(Le.value=H.data.violations.map(ne=>({id:ne.id,type:ne.type,reportedUser:ne.reportedUser||ne.reporterNickname||"-",reportTypes:ne.reportTypes||[],content:ne.content||"-",comment:ne.comment,reportTime:ne.reportTime,status:ne.status||"pending"})),ce.value=H.data.total):D.value=H.message||"加载违规列表失败"}catch(H){console.error("加载违规列表失败:",H),D.value=((Q=(j=H.response)==null?void 0:j.data)==null?void 0:Q.message)||H.message||"加载违规列表失败"}finally{T.value=!1}};st(a,()=>{A.value=1,Kt()});const Ts=async(j,Q)=>{var we,qe;const H=Q==="resolved"?"确认违规":"驳回举报";if(await O.show({title:H,message:`确定要${H}吗?`,type:Q==="resolved"?"warning":"info",confirmText:H,cancelText:"取消"})){U.show("处理中...");try{const Mt=await oe.resolveViolation(j.id,Q);Mt.success?(Z(`${H}成功`,2e3),await Kt(),await In(),We()):W(Mt.message||`${H}失败`,3e3)}catch(Mt){W(((qe=(we=Mt.response)==null?void 0:we.data)==null?void 0:qe.message)||Mt.message||`${H}失败`,3e3)}finally{U.hide()}}},bl=()=>{console.log("审核设置")},_l=async j=>{var H,ne;const Q=ie.value.find(we=>we.bundleId===j);if(Q)try{const we=await oe.disableForum(j);we.success?(Q.enabled=!1,Q.updatedAt=new Date().toISOString(),Z("禁用讨论区成功",2e3),console.log("禁用讨论区:",j)):W(we.message||"禁用讨论区失败",3e3)}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"禁用讨论区失败";W(qe,3e3),console.error("禁用讨论区异常:",we)}},wl=async j=>{var H,ne;const Q=ie.value.find(we=>we.bundleId===j);if(Q)try{const we=await oe.enableForum(j);we.success?(Q.enabled=!0,Q.updatedAt=new Date().toISOString(),Z("启用讨论区成功",2e3),console.log("启用讨论区:",j)):W(we.message||"启用讨论区失败",3e3)}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"启用讨论区失败";W(qe,3e3),console.error("启用讨论区异常:",we)}},kl=async()=>{try{const j=await oe.getForumPermissions();if(j&&j.length>0)ie.value=j;else{const H=(await oe.getApps()).filter(ne=>ne.path&&ne.path.length>0);ie.value=H.map(ne=>({bundleId:ne.bundleId,appName:ne.name,enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}))}}catch(j){console.error("加载讨论区列表失败:",j),ie.value=[]}},me=k(0),ae=async()=>{try{const j=await oe.getForumRequests("all",1,1e3);re.value=j.requests,me.value=j.total}catch(j){console.error("加载申请列表失败:",j),re.value=[],me.value=0}},We=()=>{window.dispatchEvent(new CustomEvent("system-notifications-changed"))},Qe=async j=>{var H,ne;const Q=re.value.find(we=>we.id===j);if(Q)try{const we=await oe.processForumRequest(j,"approve");if(we.success){Q.status="approved";const qe=ie.value.find(Mt=>Mt.bundleId===Q.bundleId);qe?(qe.enabled=!0,qe.updatedAt=new Date().toISOString()):ie.value.push({bundleId:Q.bundleId,appName:Q.appName,enabled:!0,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),await ae(),We(),Z("批准申请成功",2e3),console.log("批准申请:",j)}else W(we.message||"批准申请失败",3e3)}catch(we){const qe=((ne=(H=we.response)==null?void 0:H.data)==null?void 0:ne.message)||we.message||"批准申请失败";W(qe,3e3),console.error("批准申请异常:",we)}},De=async(j,Q)=>{var ne,we;const H=re.value.find(qe=>qe.id===j);if(H)try{const qe=Q||"该应用暂不支持讨论区功能",Mt=await oe.processForumRequest(j,"reject",qe);Mt.success?(H.status="rejected",await ae(),We(),Z("拒绝申请成功",2e3),console.log("拒绝申请:",j)):W(Mt.message||"拒绝申请失败",3e3)}catch(qe){const Mt=((we=(ne=qe.response)==null?void 0:ne.data)==null?void 0:we.message)||qe.message||"拒绝申请失败";W(Mt,3e3),console.error("拒绝申请异常:",qe)}},ke=async()=>{for(const j of ve.value)await Qe(j.id)},xe=()=>{ae()};return rt(()=>{lt(),kl(),ae(),Bt(),Kt(),In(),window.addEventListener("forum-requests-changed",xe)}),Et(()=>{window.removeEventListener("forum-requests-changed",xe)}),(j,Q)=>(d(),p("div",O9,[n("div",N9,[Q[41]||(Q[41]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"管理员面板"),n("p",{class:"page-description"},"管理系统用户、帖子内容和违规处理")],-1)),n("div",F9,[n("div",B9,[(d(!0),p(he,null,Re(v.value,H=>(d(),p("button",{key:H.id,class:$e(["tab-button",{active:t.value===H.id}]),onClick:je(ne=>t.value=H.id,["stop"]),type:"button"},[m(_,{icon:H.icon,class:"tab-icon"},null,8,["icon"]),n("span",null,y(H.label),1),H.badge?(d(),p("span",j9,y(H.badge),1)):E("",!0)],10,V9))),128))])]),n("div",q9,[t.value==="users"?(d(),p("div",H9,[n("div",z9,[Q[15]||(Q[15]=n("h2",null,"用户管理",-1)),n("div",W9,[Be(n("input",{"onUpdate:modelValue":Q[0]||(Q[0]=H=>s.value=H),type:"text",placeholder:"搜索用户...",class:"search-input",onInput:Ne},null,544),[[Je,s.value]]),n("button",{class:"btn btn-primary",onClick:Se},[m(_,{icon:"mdi:plus",class:"btn-icon"}),Q[14]||(Q[14]=be(" 添加用户 ",-1))])])]),n("div",K9,[h.value?(d(),p("div",G9,[...Q[16]||(Q[16]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):b.value?(d(),p("div",Q9,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(b.value),1),n("button",{class:"btn btn-primary",onClick:lt},"重试")])):(d(),p(he,{key:2},[n("table",J9,[Q[18]||(Q[18]=n("thead",null,[n("tr",null,[n("th",null,"ID"),n("th",null,"用户名"),n("th",null,"昵称"),n("th",null,"邮箱"),n("th",null,"角色"),n("th",null,"注册时间"),n("th",null,"状态"),n("th",null,"操作")])],-1)),n("tbody",null,[S.value.length===0?(d(),p("tr",Z9,[n("td",X9,[m(_,{icon:"mdi:account-off"}),Q[17]||(Q[17]=n("p",null,"暂无用户数据",-1))])])):E("",!0),(d(!0),p(he,null,Re(S.value,H=>(d(),p("tr",{key:H.id},[n("td",null,y(H.id),1),n("td",null,y(H.username),1),n("td",null,y(H.nickName||"-"),1),n("td",null,y(H.email||"-"),1),n("td",null,[n("span",{class:$e(["role-badge",H.role])},y(Oe(H.role)),3)]),n("td",null,y(pt(H.createdAt)),1),n("td",null,[n("span",{class:$e(["status-badge",H.status])},y(Ke(H.status)),3)]),n("td",null,[n("div",Y9,[n("button",{class:"action-btn edit",onClick:ne=>_e(H),title:"编辑"},[m(_,{icon:"mdi:pencil"})],8,eT),n("button",{class:"action-btn delete",onClick:ne=>et(H),title:"删除"},[m(_,{icon:"mdi:delete"})],8,tT),H.status==="active"?(d(),p("button",{key:0,class:"action-btn lock",onClick:ne=>ot(H),title:"锁定"},[m(_,{icon:"mdi:lock"})],8,sT)):H.status==="locked"?(d(),p("button",{key:1,class:"action-btn unlock",onClick:ne=>tt(H),title:"解除锁定"},[m(_,{icon:"mdi:lock-open"})],8,nT)):E("",!0),H.status==="active"||H.status==="locked"?(d(),p("button",{key:2,class:"action-btn ban",onClick:ne=>vs(H),title:"封禁"},[m(_,{icon:"mdi:ban"})],8,oT)):E("",!0),H.status==="banned"?(d(),p("button",{key:3,class:"action-btn unban",onClick:ne=>Rt(H),title:"解除封禁"},[m(_,{icon:"mdi:check-circle"})],8,lT)):E("",!0),Y(F)&&H.role==="user"?(d(),p("button",{key:4,class:"action-btn upgrade",onClick:ne=>as(H),title:"提升为管理员"},[m(_,{icon:"mdi:arrow-up-circle"})],8,aT)):E("",!0),Y(F)&&H.role==="admin"?(d(),p("button",{key:5,class:"action-btn downgrade",onClick:ne=>ms(H),title:"降级为普通用户"},[m(_,{icon:"mdi:arrow-down-circle"})],8,iT)):E("",!0)])])]))),128))])]),q.value>1?(d(),p("div",rT,[n("button",{onClick:Q[1]||(Q[1]=H=>w.value>1&&(w.value--,lt())),disabled:w.value===1,class:"btn btn-sm"}," 上一页 ",8,cT),n("span",null,"第 "+y(w.value)+" 页,共 "+y(q.value)+" 页(共 "+y(I.value)+" 条)",1),n("button",{onClick:Q[2]||(Q[2]=H=>w.value<q.value&&(w.value++,lt())),disabled:w.value>=q.value,class:"btn btn-sm"}," 下一页 ",8,uT)])):E("",!0)],64))])])):E("",!0),t.value==="posts"?(d(),p("div",dT,[n("div",fT,[Q[19]||(Q[19]=n("h2",null,"帖子管理",-1)),n("div",pT,[Be(n("input",{"onUpdate:modelValue":Q[3]||(Q[3]=H=>o.value=H),type:"text",placeholder:"搜索帖子...",class:"search-input"},null,512),[[Je,o.value]]),m(Ls,{modelValue:l.value,"onUpdate:modelValue":Q[4]||(Q[4]=H=>l.value=H),options:c},null,8,["modelValue"])])]),n("div",vT,[Ee.value?(d(),p("div",mT,[...Q[20]||(Q[20]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):ye.value?(d(),p("div",hT,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(ye.value),1),n("button",{class:"btn btn-primary",onClick:Bt},"重试")])):(d(),p(he,{key:2},[n("table",gT,[Q[22]||(Q[22]=n("thead",null,[n("tr",null,[n("th",null,"ID"),n("th",null,"标题"),n("th",null,"作者"),n("th",null,"板块"),n("th",null,"回复数"),n("th",null,"发布时间"),n("th",null,"状态"),n("th",null,"操作")])],-1)),n("tbody",null,[L.value.length===0?(d(),p("tr",yT,[n("td",bT,[m(_,{icon:"mdi:file-document-outline"}),Q[21]||(Q[21]=n("p",null,"暂无帖子数据",-1))])])):E("",!0),(d(!0),p(he,null,Re(L.value,H=>(d(),p("tr",{key:H.id},[n("td",null,y(H.id),1),n("td",_T,[n("span",wT,y(H.title),1)]),n("td",null,y(H.author),1),n("td",null,y(H.forumName),1),n("td",null,y(H.replyCount),1),n("td",null,y(pt(H.publishTime)),1),n("td",null,[n("span",{class:$e(["status-badge",H.status])},y(ge(H.status)),3)]),n("td",null,[n("div",kT,[n("button",{class:"action-btn view",onClick:ne=>Ut(H),title:"查看"},[m(_,{icon:"mdi:eye"})],8,$T),n("button",{class:"action-btn edit",onClick:ne=>Vs(H),title:"编辑"},[m(_,{icon:"mdi:pencil"})],8,CT),n("button",{class:"action-btn delete",onClick:ne=>xs(H),title:"删除"},[m(_,{icon:"mdi:delete"})],8,IT)])])]))),128))])]),K.value>1?(d(),p("div",ST,[n("button",{class:"btn btn-secondary pagination-btn",disabled:de.value===1,onClick:Q[5]||(Q[5]=H=>{de.value--,Bt()})}," 上一页 ",8,xT),n("span",TT," 第 "+y(de.value)+" / "+y(K.value)+" 页,共 "+y(Me.value)+" 条 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:de.value>=K.value,onClick:Q[6]||(Q[6]=H=>{de.value++,Bt()})}," 下一页 ",8,AT)])):E("",!0)],64))])])):E("",!0),t.value==="violations"?(d(),p("div",ET,[n("div",RT,[Q[23]||(Q[23]=n("h2",null,"违规处理",-1)),n("div",UT,[m(Ls,{modelValue:a.value,"onUpdate:modelValue":Q[7]||(Q[7]=H=>a.value=H),options:f},null,8,["modelValue"])])]),n("div",DT,[T.value?(d(),p("div",MT,[...Q[24]||(Q[24]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):D.value?(d(),p("div",PT,[m(_,{icon:"mdi:alert-circle"}),n("p",null,y(D.value),1),n("button",{class:"btn btn-primary",onClick:Kt},"重试")])):(d(),p(he,{key:2},[P.value.length===0?(d(),p("div",LT,[m(_,{icon:"mdi:shield-check"}),Q[25]||(Q[25]=n("p",null,"暂无违规记录",-1))])):E("",!0),(d(!0),p(he,null,Re(P.value,H=>(d(),p("div",{key:H.id,class:"violation-item"},[n("div",OT,[n("div",NT,[n("span",FT,y(Xe(H.type)),1),n("span",BT,"#"+y(H.id),1),n("span",VT,y(pt(H.reportTime)),1)]),n("span",{class:$e(["violation-status",H.status])},y(yt(H.status)),3)]),n("div",jT,[n("div",qT,[n("div",HT,[Q[26]||(Q[26]=n("span",{class:"detail-label"},"被举报人:",-1)),n("span",zT,y(H.reportedUser),1)]),n("div",WT,[Q[27]||(Q[27]=n("span",{class:"detail-label"},"举报类型:",-1)),n("span",KT,y(H.reportTypes.join(", ")),1)]),n("div",GT,[Q[28]||(Q[28]=n("span",{class:"detail-label"},"被举报内容:",-1)),n("div",QT,y(H.content),1)]),H.comment?(d(),p("div",JT,[Q[29]||(Q[29]=n("span",{class:"detail-label"},"补充说明:",-1)),n("div",ZT,y(H.comment),1)])):E("",!0)]),H.status==="pending"?(d(),p("div",XT,[n("button",{class:"btn btn-danger",onClick:ne=>Ts(H,"resolved")},[m(_,{icon:"mdi:check",class:"btn-icon"}),Q[30]||(Q[30]=be(" 确认违规 ",-1))],8,YT),n("button",{class:"btn btn-secondary",onClick:ne=>Ts(H,"rejected")},[m(_,{icon:"mdi:close",class:"btn-icon"}),Q[31]||(Q[31]=be(" 驳回举报 ",-1))],8,eA)])):E("",!0)])]))),128)),x.value>1?(d(),p("div",tA,[n("button",{class:"btn btn-secondary pagination-btn",disabled:A.value===1,onClick:Q[8]||(Q[8]=H=>{A.value--,Kt()})}," 上一页 ",8,sA),n("span",nA," 第 "+y(A.value)+" / "+y(x.value)+" 页,共 "+y(ce.value)+" 条 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:A.value>=x.value,onClick:Q[9]||(Q[9]=H=>{A.value++,Kt()})}," 下一页 ",8,oA)])):E("",!0)],64))])])):E("",!0),t.value==="forums"?(d(),p("div",lA,[Q[38]||(Q[38]=n("div",{class:"section-header"},[n("h2",null,"讨论区管理")],-1)),n("div",aA,[n("button",{class:$e(["sub-tab-button",{active:Ce.value==="forums"}]),onClick:Q[10]||(Q[10]=H=>Ce.value="forums"),type:"button"},[m(_,{icon:"fluent-color:comment-multiple-28",class:"sub-tab-icon"}),Q[32]||(Q[32]=be(" 讨论区列表 ",-1))],2),n("button",{class:$e(["sub-tab-button",{active:Ce.value==="requests"}]),onClick:Q[11]||(Q[11]=H=>Ce.value="requests"),type:"button"},[m(_,{icon:"fluent-color:clipboard-text-edit-32",class:"sub-tab-icon"}),Q[33]||(Q[33]=be(" 申请开通 ",-1)),ve.value.length>0?(d(),p("span",iA,y(ve.value.length),1)):E("",!0)],2)]),Ce.value==="forums"?(d(),p("div",rA,[n("div",cA,[n("div",uA,[Be(n("input",{"onUpdate:modelValue":Q[12]||(Q[12]=H=>i.value=H),type:"text",placeholder:"搜索讨论区...",class:"search-input"},null,512),[[Je,i.value]]),m(Ls,{modelValue:r.value,"onUpdate:modelValue":Q[13]||(Q[13]=H=>r.value=H),options:u},null,8,["modelValue"])])]),n("div",dA,[n("table",fA,[Q[34]||(Q[34]=n("thead",null,[n("tr",null,[n("th",null,"应用名称"),n("th",null,"Bundle ID"),n("th",null,"帖子数"),n("th",null,"最后发帖时间"),n("th",null,"状态"),n("th",null,"操作")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(ee.value,H=>(d(),p("tr",{key:H.bundleId},[n("td",null,[n("div",pA,[ue(H.bundleId)?(d(),p("img",{key:0,src:ue(H.bundleId),alt:H.appName,class:"forum-icon"},null,8,vA)):(d(),p("div",mA,y(H.appName.charAt(0).toUpperCase()),1)),n("span",null,y(H.appName),1)])]),n("td",null,[n("code",hA,y(H.bundleId),1)]),n("td",null,y(H.postCount),1),n("td",null,y(H.lastPostTime?pt(H.lastPostTime):"-"),1),n("td",null,[n("span",{class:$e(["status-badge",H.enabled?"enabled":"disabled"])},y(H.enabled?"已启用":"已禁用"),3)]),n("td",null,[n("div",gA,[H.enabled?(d(),p("button",{key:0,class:"action-btn ban",onClick:ne=>_l(H.bundleId),title:"禁用讨论区"},[m(_,{icon:"mdi:ban"})],8,yA)):(d(),p("button",{key:1,class:"action-btn enable",onClick:ne=>wl(H.bundleId),title:"启用讨论区"},[m(_,{icon:"mdi:check-circle"})],8,bA))])])]))),128))])]),ee.value.length===0?(d(),p("div",_A,[m(_,{icon:"mdi:forum-outline",class:"empty-icon"}),Q[35]||(Q[35]=n("p",null,"没有找到讨论区",-1))])):E("",!0)])])):E("",!0),Ce.value==="requests"?(d(),p("div",wA,[n("div",kA,[n("div",$A,[n("span",null,"共 "+y(me.value)+" 条申请记录",1)]),n("div",CA,[ve.value.length>0?(d(),p("button",{key:0,class:"btn btn-primary",onClick:ke},[m(_,{icon:"mdi:check-all",class:"btn-icon"}),be(" 一键批准全部 ("+y(ve.value.length)+") ",1)])):E("",!0)])]),n("div",IA,[n("table",SA,[Q[36]||(Q[36]=n("thead",null,[n("tr",null,[n("th",null,"应用名称"),n("th",null,"Bundle ID"),n("th",null,"申请人"),n("th",null,"申请时间"),n("th",null,"状态"),n("th",null,"操作")])],-1)),n("tbody",null,[(d(!0),p(he,null,Re(re.value,H=>(d(),p("tr",{key:H.id},[n("td",null,[n("div",xA,[ue(H.bundleId)?(d(),p("img",{key:0,src:ue(H.bundleId),alt:H.appName,class:"forum-icon"},null,8,TA)):(d(),p("div",AA,y(H.appName.charAt(0).toUpperCase()),1)),n("span",null,y(H.appName),1)])]),n("td",null,[n("code",EA,y(H.bundleId),1)]),n("td",null,y(H.requesterName),1),n("td",null,y(pt(H.requestTime)),1),n("td",null,[n("span",{class:$e(["status-badge",H.status])},y(Ie(H.status)),3)]),n("td",null,[n("div",RA,[H.status==="pending"?(d(),p("button",{key:0,class:"action-btn enable",onClick:ne=>Qe(H.id),title:"批准申请"},[m(_,{icon:"mdi:check"})],8,UA)):E("",!0),H.status==="pending"?(d(),p("button",{key:1,class:"action-btn delete",onClick:ne=>De(H.id),title:"拒绝申请"},[m(_,{icon:"mdi:close"})],8,DA)):E("",!0)])])]))),128))])]),re.value.length===0?(d(),p("div",MA,[m(_,{icon:"mdi:file-document-outline",class:"empty-icon"}),Q[37]||(Q[37]=n("p",null,"暂无申请记录",-1))])):E("",!0)])])):E("",!0)])):E("",!0),t.value==="settings"?(d(),p("div",PA,[Q[40]||(Q[40]=n("div",{class:"section-header"},[n("h2",null,"系统设置")],-1)),n("div",{class:"settings-list"},[n("div",{class:"setting-item"},[Q[39]||(Q[39]=n("div",{class:"setting-info"},[n("h3",null,"内容审核设置"),n("p",null,"配置内容审核规则和自动处理")],-1)),n("button",{class:"btn btn-primary",onClick:bl}," 配置 ")])])])):E("",!0)])]),m(nn,{visible:Y(O).visible.value,title:Y(O).config.value.title||"",message:Y(O).config.value.message||"",type:Y(O).config.value.type,"confirm-text":Y(O).config.value.confirmText,"cancel-text":Y(O).config.value.cancelText,onConfirm:Y(O).handleConfirm,onCancel:Y(O).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(fx,{visible:Y(R).visible.value,title:Y(R).config.value.title||"",message:Y(R).config.value.message,fields:Y(R).config.value.fields||[],"confirm-text":Y(R).config.value.confirmText,"cancel-text":Y(R).config.value.cancelText,onConfirm:Y(R).handleConfirm,onCancel:Y(R).handleCancel},null,8,["visible","title","message","fields","confirm-text","cancel-text","onConfirm","onCancel"]),m(Yu,{visible:Y($).visible.value,title:Y($).config.value.title||"",message:Y($).config.value.message,type:Y($).config.value.type,"confirm-text":Y($).config.value.confirmText,onConfirm:Y($).handleConfirm},null,8,["visible","title","message","type","confirm-text","onConfirm"]),m(Yx,{visible:se.value,"user-data":M.value,"can-edit-role":Y(F),loading:G.value,onConfirm:Ue,onCancel:Ve},null,8,["visible","user-data","can-edit-role","loading"]),m(P9,{visible:B.value,"post-data":V.value,loading:X.value,onConfirm:Dt,onCancel:js},null,8,["visible","post-data","loading"]),m(ls,{toasts:Y(z),onRemove:Y(te)},null,8,["toasts","onRemove"])]))}}),OA=Ge(LA,[["__scopeId","data-v-c4a0d7b2"]]),NA={class:"notifications-page"},FA={class:"page-container"},BA={class:"tabs-container"},VA={class:"tabs"},jA=["onClick"],qA={key:0,class:"tab-badge"},HA={class:"content-area"},zA={key:0,class:"tab-content"},WA={class:"section-header"},KA={class:"header-actions"},GA=["disabled"],QA={class:"notifications-list"},JA={class:"notification-icon"},ZA={key:0,class:"unread-dot"},XA={class:"notification-content"},YA={class:"notification-header"},eE={class:"notification-title"},tE={class:"notification-time"},sE={class:"notification-body"},nE={class:"detail-content"},oE={key:0,class:"notification-expanded-details"},lE={key:0,class:"expanded-section"},aE={class:"detail-item"},iE={class:"detail-value"},rE={class:"detail-item"},cE={class:"detail-value"},uE={class:"detail-item"},dE={class:"detail-content"},fE={key:0,class:"detail-item"},pE={class:"detail-content admin-comment"},vE={key:1,class:"expanded-section"},mE={class:"detail-item"},hE={class:"detail-value"},gE={class:"detail-item"},yE={class:"detail-value"},bE={key:0,class:"detail-item"},_E={class:"detail-content"},wE={class:"notification-actions"},kE=["onClick"],$E={key:0,class:"empty-state"},CE={key:1,class:"tab-content"},IE={class:"notifications-list"},SE=["onClick"],xE={class:"notification-icon"},TE={class:"notification-content"},AE={class:"notification-header"},EE={class:"notification-title"},RE={class:"notification-time"},UE={class:"notification-body"},DE={class:"notification-details"},ME={class:"detail-content"},PE={key:0,class:"new-replies-badge"},LE={key:0,class:"empty-state"},OE={key:2,class:"tab-content"},NE={class:"section-header"},FE={class:"notifications-list"},BE={class:"notification-icon"},VE={key:0,class:"unread-dot"},jE={class:"notification-content"},qE={class:"notification-header"},HE={class:"notification-title"},zE={class:"user-name"},WE={class:"notification-time"},KE={class:"notification-body"},GE={class:"detail-content"},QE={key:0,class:"empty-state"},JE={key:3,class:"tab-content"},ZE={class:"section-header"},XE={class:"header-actions"},YE=["disabled"],eR={class:"notifications-list"},tR=["onClick"],sR={class:"notification-icon"},nR={key:0,class:"unread-dot"},oR={class:"notification-content"},lR={class:"notification-header"},aR={class:"notification-title"},iR={class:"user-name"},rR={key:0,class:"reply-to"},cR={key:1},uR={class:"notification-time"},dR={class:"notification-body"},fR={class:"notification-text"},pR={class:"notification-details"},vR={class:"detail-content"},mR={key:0,class:"empty-state"},hR=ze({__name:"Notifications",setup(e){const t=Wt(),s=k("system"),o=k(new Set),l=k([]),a=k([]),i=k([]),r=k(!1),c=k(!1),f=k(!1),u=k(!1),v=async()=>{u.value=!0;try{const B=await oe.getNotifications(1,100);B.success&&B.data?w.value=B.data.notifications.map(V=>({id:V.id,type:V.type,title:V.title,content:V.content,relatedId:V.relatedId,createTime:V.createTime,read:V.read,reportDetails:V.reportDetails,requestDetails:V.requestDetails})):w.value=[]}catch(B){console.error("加载系统通知失败:",B),w.value=[]}finally{u.value=!1}},g=async()=>{r.value=!0;try{const B=await oe.getMyReplies(1,100);B.success&&B.data?l.value=B.data.replies.map(V=>({id:V.id,postId:V.postId,postTitle:V.postTitle,content:V.content,replyTime:V.replyTime,hasNewReplies:V.hasNewReplies||!1,newReplyCount:V.newReplyCount||0})):l.value=[]}catch(B){console.error("加载我回复的列表失败:",B),l.value=[]}finally{r.value=!1}},h=async()=>{f.value=!0;try{const B=await oe.getRepliesToMe(1,100);B.success&&B.data?i.value=B.data.replies.map(V=>({id:V.id,postId:V.postId,postTitle:V.postTitle,userName:V.userName,replyToUserName:V.replyToUserName,content:V.content,replyTime:V.replyTime,read:V.read||!1})):i.value=[]}catch(B){console.error("加载回复我的列表失败:",B),i.value=[]}finally{f.value=!1}},b=async()=>{c.value=!0;try{const B=await oe.getMessageNotifications(10);B.success&&B.data?a.value=B.data.notifications.map(V=>({id:V.id,fromUserId:V.fromUserId,fromUserName:V.fromUserName,content:V.content,sendTime:V.sendTime,read:V.read||!1})):a.value=[]}catch(B){console.error("加载私信通知失败:",B),a.value=[]}finally{c.value=!1}},w=k([]),C=fe(()=>i.value.filter(B=>!B.read).length),I=fe(()=>w.value.filter(B=>!B.read).length),q=k(0),N=async()=>{try{const B=await oe.getUnreadMessageCount();B.success&&B.data&&(q.value=B.data.count||0)}catch(B){console.error("获取未读私信数量失败:",B),q.value=0}},z=fe(()=>[{id:"system",label:"系统通知",icon:"fluent-color:mail-alert-32",badge:I.value>0?String(I.value):null},{id:"myReplies",label:"我回复的",icon:"fluent-color:people-chat-48",badge:null},{id:"repliesToMe",label:"回复我的",icon:"fluent-color:pin-48",badge:C.value>0?String(C.value):null},{id:"messages",label:"私信",icon:"fluent-color:comment-multiple-32",badge:q.value>0?q.value>99?"99+":String(q.value):null}]),Z=async B=>{if(o.value.has(B))o.value.delete(B);else{o.value.add(B);const V=w.value.find(X=>X.id===B);if(V&&!V.read)try{await oe.markNotificationAsRead(B),V.read=!0}catch(X){console.error("标记通知为已读失败:",X)}}},W=B=>{const V=new Date(B),pe=new Date().getTime()-V.getTime(),Ne=Math.floor(pe/6e4),Pe=Math.floor(pe/36e5),Ee=Math.floor(pe/864e5);return Ne<1?"刚刚":Ne<60?`${Ne}分钟前`:Pe<24?`${Pe}小时前`:Ee<7?`${Ee}天前`:V.toLocaleDateString("zh-CN")},te=B=>{console.log("查看帖子",B)},O=async B=>{B.read=!0,console.log("查看回复",B)},R=async()=>{i.value.forEach(B=>{B.read=!0})},F=()=>{t.push("/messages")},$=B=>{switch(B){case"forum_request_approved":return"fluent-color:shield-checkmark-16";case"forum_request_rejected":return"fluent-color:calendar-cancel-16";case"report_processed":return"fluent-color:flag-48";default:return"mdi:bell"}},U=async()=>{try{(await oe.markAllNotificationsAsRead()).success&&w.value.forEach(V=>{V.read=!0})}catch(B){console.error("标记所有通知为已读失败:",B)}},se=()=>{v()},M=()=>{v(),g(),h(),b(),N()},G=()=>{s.value==="system"?v():s.value==="myReplies"?g():s.value==="repliesToMe"?h():s.value==="messages"&&b()};return st(s,()=>{G()}),rt(()=>{M();const B=setInterval(()=>{N()},5e3),V=setInterval(()=>{M()},3e4);window.addEventListener("system-notifications-changed",se);const X=()=>{N()};window.addEventListener("messages:conversations-updated",X);const pe=()=>{document.hidden||N()};document.addEventListener("visibilitychange",pe);const Ne=()=>{N()};window.addEventListener("focus",Ne),Et(()=>{clearInterval(V),clearInterval(B),window.removeEventListener("system-notifications-changed",se),window.removeEventListener("messages:conversations-updated",X),document.removeEventListener("visibilitychange",pe),window.removeEventListener("focus",Ne)})}),(B,V)=>(d(),p("div",NA,[n("div",FA,[V[20]||(V[20]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"消息通知"),n("p",{class:"page-description"},"查看你的举报处理、回复和互动通知")],-1)),n("div",BA,[n("div",VA,[(d(!0),p(he,null,Re(z.value,X=>(d(),p("button",{key:X.id,class:$e(["tab-button",{active:s.value===X.id}]),onClick:pe=>s.value=X.id},[m(_,{icon:X.icon,class:"tab-icon"},null,8,["icon"]),n("span",null,y(X.label),1),X.badge?(d(),p("span",qA,y(X.badge),1)):E("",!0)],10,jA))),128))])]),n("div",HA,[s.value==="system"?(d(),p("div",zA,[n("div",WA,[V[1]||(V[1]=n("h2",null,"系统通知",-1)),n("div",KA,[n("button",{class:"btn btn-secondary",onClick:U,disabled:I.value===0},[m(_,{icon:"mdi:check-all",class:"btn-icon"}),V[0]||(V[0]=be(" 全部标记为已读 ",-1))],8,GA)])]),n("div",QA,[(d(!0),p(he,null,Re(w.value,X=>{var pe;return d(),p("div",{key:X.id,class:$e(["notification-item system-notification",{unread:!X.read,[X.type]:!0,expanded:o.value.has(X.id)}])},[n("div",JA,[m(_,{icon:$(X.type),class:"icon"},null,8,["icon"]),X.read?E("",!0):(d(),p("span",ZA))]),n("div",XA,[n("div",YA,[n("h3",eE,y(X.title),1),n("span",tE,y(W(X.createTime)),1)]),n("div",sE,[n("div",nE,y(X.content),1),o.value.has(X.id)?(d(),p("div",oE,[X.type==="report_processed"&&X.reportDetails?(d(),p("div",lE,[n("div",aE,[V[2]||(V[2]=n("span",{class:"detail-label"},"被举报人:",-1)),n("span",iE,y(X.reportDetails.reportedUser),1)]),n("div",rE,[V[3]||(V[3]=n("span",{class:"detail-label"},"举报类型:",-1)),n("span",cE,y(((pe=X.reportDetails.reportTypes)==null?void 0:pe.join(", "))||"-"),1)]),n("div",uE,[V[4]||(V[4]=n("span",{class:"detail-label"},"被举报内容:",-1)),n("div",dE,y(X.reportDetails.content),1)]),X.reportDetails.adminComment?(d(),p("div",fE,[V[5]||(V[5]=n("span",{class:"detail-label"},"管理员回复:",-1)),n("div",pE,y(X.reportDetails.adminComment),1)])):E("",!0)])):E("",!0),(X.type==="forum_request_approved"||X.type==="forum_request_rejected")&&X.requestDetails?(d(),p("div",vE,[n("div",mE,[V[6]||(V[6]=n("span",{class:"detail-label"},"应用名称:",-1)),n("span",hE,y(X.requestDetails.appName),1)]),n("div",gE,[V[7]||(V[7]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",yE,[n("code",null,y(X.requestDetails.bundleId),1)])]),X.type==="forum_request_rejected"&&X.requestDetails.reason?(d(),p("div",bE,[V[8]||(V[8]=n("span",{class:"detail-label"},"拒绝原因:",-1)),n("div",_E,y(X.requestDetails.reason),1)])):E("",!0)])):E("",!0)])):E("",!0)]),n("div",wE,[n("button",{class:"expand-btn",onClick:je(Ne=>Z(X.id),["stop"])},[m(_,{icon:o.value.has(X.id)?"mdi:chevron-up":"mdi:chevron-down",class:"expand-icon"},null,8,["icon"]),n("span",null,y(o.value.has(X.id)?"收起":"展开"),1)],8,kE)])])],2)}),128)),w.value.length===0?(d(),p("div",$E,[m(_,{icon:"mdi:bell-off-outline",class:"empty-icon"}),V[9]||(V[9]=n("p",null,"暂无系统通知",-1))])):E("",!0)])])):E("",!0),s.value==="myReplies"?(d(),p("div",CE,[V[12]||(V[12]=n("div",{class:"section-header"},[n("h2",null,"我回复的"),n("p",{class:"section-description"},"查看你回复的帖子和回复")],-1)),n("div",IE,[(d(!0),p(he,null,Re(l.value,X=>(d(),p("div",{key:X.id,class:"notification-item",onClick:pe=>te(X.postId)},[n("div",xE,[m(_,{icon:"fluent-color:people-chat-48",class:"icon"})]),n("div",TE,[n("div",AE,[n("h3",EE,y(X.postTitle),1),n("span",RE,y(W(X.replyTime)),1)]),n("div",UE,[V[10]||(V[10]=n("p",{class:"notification-text"},"你的回复:",-1)),n("div",DE,[n("div",ME,y(X.content),1),X.hasNewReplies?(d(),p("div",PE,[m(_,{icon:"mdi:message-reply-text"}),n("span",null,"有 "+y(X.newReplyCount)+" 条新回复",1)])):E("",!0)])])])],8,SE))),128)),l.value.length===0?(d(),p("div",LE,[m(_,{icon:"mdi:reply-outline",class:"empty-icon"}),V[11]||(V[11]=n("p",null,"暂无回复记录",-1))])):E("",!0)])])):E("",!0),s.value==="messages"?(d(),p("div",OE,[n("div",NE,[V[14]||(V[14]=n("h2",null,"私信",-1)),n("button",{class:"btn btn-primary",onClick:F},[m(_,{icon:"fluent-color:comment-multiple-32",class:"btn-icon"}),V[13]||(V[13]=be(" 前往私信 ",-1))])]),n("div",FE,[(d(!0),p(he,null,Re(a.value,X=>(d(),p("div",{key:X.id,class:$e(["notification-item message-item",{unread:!X.read}]),onClick:F},[n("div",BE,[m(_,{icon:"fluent-color:comment-multiple-32",class:"icon"}),X.read?E("",!0):(d(),p("span",VE))]),n("div",jE,[n("div",qE,[n("h3",HE,[n("span",zE,y(X.fromUserName),1),V[15]||(V[15]=n("span",null,"发来私信",-1))]),n("span",WE,y(W(X.sendTime)),1)]),n("div",KE,[n("div",GE,y(X.content),1)])])],2))),128)),a.value.length===0?(d(),p("div",QE,[m(_,{icon:"fluent-color:comment-multiple-32",class:"empty-icon"}),V[16]||(V[16]=n("p",null,"暂无私信",-1))])):E("",!0)])])):E("",!0),s.value==="repliesToMe"?(d(),p("div",JE,[n("div",ZE,[V[18]||(V[18]=n("h2",null,"回复我的",-1)),n("div",XE,[n("button",{class:"btn btn-secondary",onClick:R,disabled:C.value===0},[m(_,{icon:"mdi:check-all",class:"btn-icon"}),V[17]||(V[17]=be(" 全部标记为已读 ",-1))],8,YE)])]),n("div",eR,[(d(!0),p(he,null,Re(i.value,X=>(d(),p("div",{key:X.id,class:$e(["notification-item",{unread:!X.read}]),onClick:pe=>O(X)},[n("div",sR,[m(_,{icon:"fluent-color:people-list-16",class:"icon"}),X.read?E("",!0):(d(),p("span",nR))]),n("div",oR,[n("div",lR,[n("h3",aR,[n("span",iR,y(X.userName),1),X.replyToUserName?(d(),p("span",rR," 回复了 @"+y(X.replyToUserName),1)):(d(),p("span",cR,"回复了你的帖子"))]),n("span",uR,y(W(X.replyTime)),1)]),n("div",dR,[n("p",fR,'在帖子"'+y(X.postTitle)+'"中:',1),n("div",pR,[n("div",vR,y(X.content),1)])])])],10,tR))),128)),i.value.length===0?(d(),p("div",mR,[m(_,{icon:"mdi:message-outline",class:"empty-icon"}),V[19]||(V[19]=n("p",null,"暂无回复通知",-1))])):E("",!0)])])):E("",!0)])])]))}}),gR=Ge(hR,[["__scopeId","data-v-31a8d3b0"]]),yR={class:"messages-page"},bR={class:"page-container"},_R={class:"page-header"},wR={class:"page-title"},kR={key:0,class:"title-badge"},$R={class:"messages-layout"},CR={class:"conversations-sidebar"},IR={class:"sidebar-header"},SR={class:"conversations-list"},xR=["onClick"],TR={class:"conversation-avatar"},AR={key:0,class:"unread-badge"},ER={class:"conversation-info"},RR={class:"conversation-header"},UR={class:"conversation-name"},DR={class:"conversation-time"},MR={class:"conversation-preview"},PR={class:"preview-text"},LR={key:0,class:"unread-indicator"},OR={key:0,class:"empty-conversations"},NR={class:"messages-content"},FR={key:0,class:"conversation-view"},BR={class:"conversation-header-bar"},VR={class:"header-user-info"},jR={class:"user-details"},qR={class:"user-name"},HR={class:"user-status"},zR={key:0,class:"status-badge blocked"},WR={key:1,class:"status-badge muted"},KR={key:2},GR={class:"header-actions-group"},QR={key:0,class:"message-avatar"},JR={class:"message-content-wrapper"},ZR={class:"message-content"},XR={class:"message-text"},YR={key:0,class:"message-attachments"},eU=["onClick"],tU={class:"attachment-name"},sU={class:"attachment-size"},nU={class:"message-time"},oU={key:1,class:"message-avatar"},lU={class:"message-input-area"},aU={key:0,class:"input-disabled-notice"},iU={key:1},rU={class:"input-toolbar"},cU=["disabled"],uU=["disabled"],dU=["onKeydown"],fU={key:2,class:"attachments-preview"},pU=["src"],vU=["onClick"],mU={class:"file-name"},hU=["onClick"],gU={key:3,class:"input-footer"},yU={class:"char-count"},bU=["disabled"],_U={key:1,class:"empty-conversation-view"},wU=ze({__name:"Messages",setup(e){const t=Wt(),s=Cn(),{toasts:o,error:l,removeToast:a}=Ft(),i=$n(),{show:r,hide:c}=po(),{user:f}=Ss(),u=k([]),v=k(!1),g=k(!1),h=k(null),b=k(""),w=k([]),C=k([]),I=k(null),q=k(null),N=k(null),z=k(null),Z=k(!1),W=k(null),te=k(!1),O=k(null),R=fe(()=>u.value.find(x=>x.id===h.value)||null),F=fe(()=>u.value.reduce((x,S)=>x+(S.unreadCount||0),0)),$=fe(()=>b.value.trim().length>0||w.value.length>0||C.value.length>0),U=async x=>{h.value=x;const S=u.value.find(L=>L.id===x);S&&(S.unreadCount=0,(!S.messages||S.messages.length===0)&&await M(x)),vt(()=>{J()})},se=async()=>{v.value=!0,r("加载会话列表...");try{const x=await oe.getConversations(1,100);x.success&&x.data?u.value=x.data.conversations.map(S=>({id:S.id,userId:S.userId,userName:S.userName,userAvatar:S.userAvatar||S.avatar,lastMessage:S.lastMessage,lastMessageTime:S.lastMessageTime,unreadCount:S.unreadCount||0,messages:[],blocked:S.blocked||!1,muted:S.muted||!1})):u.value=[]}catch(x){console.error("加载会话列表失败:",x),l("加载会话列表失败",2e3),u.value=[]}finally{v.value=!1,c()}window.dispatchEvent(new CustomEvent("messages:conversations-updated"))},M=async x=>{g.value=!0,r("加载消息...");try{const S=await oe.getConversationMessages(x,1,100);if(S.success&&S.data){const L=u.value.find(P=>P.id===x);L&&(L.messages=S.data.messages.map(P=>({id:P.id,content:P.content,sendTime:P.sendTime,sent:P.sent})))}}catch(S){console.error("加载消息列表失败:",S),l("加载消息列表失败",2e3)}finally{g.value=!1,c()}},G=()=>{console.log("新建会话")},B=async x=>{r("创建会话...");try{const S=await oe.getOrCreateConversationByUserId(x);if(S.success&&S.data){const{conversationId:L,userName:P}=S.data;if(u.value.find(ue=>ue.id===L))h.value=L,await U(L);else{let ue;try{const Ie=await oe.getUserInfo(x);Ie&&(ue=Ie.avatar)}catch(Ie){console.warn("获取用户信息失败:",Ie)}const ve={id:L,userId:x,userName:P,userAvatar:ue,lastMessage:"",lastMessageTime:new Date().toISOString(),unreadCount:0,messages:[],blocked:!1,muted:!1};u.value.unshift(ve),h.value=L,await U(L)}t.replace({path:"/messages",query:{}})}else l(S.message||"创建会话失败",2e3)}catch(S){console.error("创建会话失败:",S),l("创建会话失败",2e3)}finally{c()}},V=()=>{R.value&&(W.value={userId:R.value.userId,userName:R.value.userName,content:"",type:void 0},Z.value=!0,te.value=!1)},X=async()=>{if(R.value){r("设置拒收...");try{const x=await oe.setConversationMute(R.value.id,!0);x.success?(R.value.muted=!0,te.value=!1):l(x.message||"操作失败",2e3)}catch(x){console.error("设置拒收失败:",x),l("设置拒收失败",2e3)}finally{c()}}},pe=async()=>{if(R.value){r("取消拒收...");try{const x=await oe.setConversationMute(R.value.id,!1);x.success?(R.value.muted=!1,te.value=!1):l(x.message||"操作失败",2e3)}catch(x){console.error("取消拒收失败:",x),l("取消拒收失败",2e3)}finally{c()}}},Ne=async()=>{if(!R.value)return;if(await i.show({title:"拉黑用户",message:`确定要拉黑用户"${R.value.userName}"吗?拉黑后将无法接收该用户的消息。`,type:"warning",confirmText:"拉黑",cancelText:"取消"})){r("拉黑用户...");try{const S=await oe.setConversationBlock(R.value.id,!0);S.success?(R.value.blocked=!0,R.value.muted=!0,te.value=!1):l(S.message||"操作失败",2e3)}catch(S){console.error("拉黑用户失败:",S),l("拉黑用户失败",2e3)}finally{c()}}},Pe=async()=>{if(R.value){r("取消拉黑...");try{const x=await oe.setConversationBlock(R.value.id,!1);x.success?(R.value.blocked=!1,te.value=!1):l(x.message||"操作失败",2e3)}catch(x){console.error("取消拉黑失败:",x),l("取消拉黑失败",2e3)}finally{c()}}},Ee=x=>{const S=x.target;O.value&&!O.value.contains(S)&&(te.value=!1)},ye=async()=>{var S,L;if(!$.value||!R.value)return;if(w.value.length>0||C.value.length>0){l("附件功能暂未实现",2e3);return}const x=b.value.trim();if(x){r("发送消息...");try{const P=await oe.sendMessage(R.value.id,x);if(P.success&&P.data){const ee={id:P.data.messageId,content:P.data.content,sendTime:P.data.sendTime,sent:!0};R.value.messages.push(ee),R.value.lastMessage=x,R.value.lastMessageTime=P.data.sendTime,b.value="",w.value=[],C.value=[],vt(()=>{J()}),window.dispatchEvent(new CustomEvent("messages:conversations-updated"))}else l(P.message||"发送失败",2e3)}catch(P){console.error("发送消息失败:",P),l(((L=(S=P.response)==null?void 0:S.data)==null?void 0:L.message)||"发送消息失败",2e3)}finally{c()}}},de=()=>{var x;(x=I.value)==null||x.click()},Te=()=>{var x;(x=q.value)==null||x.click()},Me=x=>{const S=x.target,L=Array.from(S.files||[]),P=10*1024*1024;L.forEach(ee=>{if(w.value.length>=5)return;if(ee.size>P){l("图片大小不能超过10MB",2e3);return}const ue=new FileReader;ue.onload=ve=>{var Ie;w.value.push({file:ee,preview:(Ie=ve.target)==null?void 0:Ie.result})},ue.readAsDataURL(ee)}),S.value=""},K=x=>{const S=x.target,L=Array.from(S.files||[]),P=20*1024*1024;L.forEach(ee=>{if(!(C.value.length>=5)){if(ee.size>P){l("文件大小不能超过20MB",2e3);return}C.value.push({file:ee})}}),S.value=""},ie=x=>{w.value.splice(x,1)},re=x=>{C.value.splice(x,1)},Ce=x=>{x.type==="image"?z.value=x.url:Le(x)},Le=x=>{const S=document.createElement("a");S.href=x.url||"#",S.download=x.name,S.target="_blank",document.body.appendChild(S),S.click(),document.body.removeChild(S)},T=()=>{z.value=null},D=x=>{const S=new Date(x),P=new Date().getTime()-S.getTime(),ee=Math.floor(P/6e4),ue=Math.floor(P/36e5),ve=Math.floor(P/864e5);return ee<1?"刚刚":ee<60?`${ee}分钟前`:ue<24?`${ue}小时前`:ve<7?`${ve}天前`:S.toLocaleDateString("zh-CN")},A=x=>x<1024?`${x} B`:x<1024*1024?`${(x/1024).toFixed(1)} KB`:`${(x/(1024*1024)).toFixed(1)} MB`,J=()=>{N.value&&(N.value.scrollTop=N.value.scrollHeight)};let ce=null;return rt(async()=>{await se();const x=s.query.userId;x?await B(x):u.value.length>0&&(h.value=u.value[0].id,vt(()=>{J()})),document.addEventListener("click",Ee),ce=window.setInterval(async()=>{v.value=!0;try{const S=await oe.getConversations(1,100);S.success&&S.data&&(u.value=S.data.conversations.map(L=>{var P;return{id:L.id,userId:L.userId,userName:L.userName,userAvatar:L.userAvatar||L.avatar,lastMessage:L.lastMessage,lastMessageTime:L.lastMessageTime,unreadCount:L.unreadCount||0,messages:((P=u.value.find(ee=>ee.id===L.id))==null?void 0:P.messages)||[],blocked:L.blocked||!1,muted:L.muted||!1}}),window.dispatchEvent(new CustomEvent("messages:conversations-updated")))}catch(S){console.error("刷新会话列表失败:",S)}finally{v.value=!1}},5e3),document.addEventListener("visibilitychange",async()=>{document.hidden||await se()}),window.addEventListener("focus",async()=>{await se()})}),st(()=>s.query.userId,async x=>{x&&typeof x=="string"&&(u.value.length===0&&await se(),await B(x))}),Et(()=>{document.removeEventListener("click",Ee),ce!==null&&(clearInterval(ce),ce=null)}),(x,S)=>(d(),p(he,null,[n("div",yR,[n("div",bR,[n("div",_R,[n("h1",wR,[S[3]||(S[3]=be(" 私信 ",-1)),F.value>0?(d(),p("span",kR,y(F.value>99?"99+":F.value),1)):E("",!0)]),S[4]||(S[4]=n("p",{class:"page-description"},"与用户进行一对一私信交流",-1))]),n("div",$R,[n("div",CR,[n("div",IR,[S[6]||(S[6]=n("h2",null,"会话列表",-1)),n("button",{class:"new-conversation-btn",onClick:G},[m(_,{icon:"mdi:plus",class:"btn-icon"}),S[5]||(S[5]=be(" 新会话 ",-1))])]),n("div",SR,[(d(!0),p(he,null,Re(u.value,L=>(d(),p("div",{key:L.id,class:$e(["conversation-item",{active:h.value===L.id}]),onClick:P=>U(L.id)},[n("div",TR,[m(Tt,{"user-id":L.userId,"user-name":L.userName,width:40,height:40},null,8,["user-id","user-name"]),L.unreadCount>0?(d(),p("span",AR,y(L.unreadCount),1)):E("",!0)]),n("div",ER,[n("div",RR,[n("span",UR,y(L.userName),1),n("span",DR,y(D(L.lastMessageTime)),1)]),n("div",MR,[n("span",PR,y(L.lastMessage),1),L.unreadCount>0?(d(),p("span",LR)):E("",!0)])])],10,xR))),128)),u.value.length===0?(d(),p("div",OR,[m(_,{icon:"fluent-color:comment-multiple-32",class:"empty-icon"}),S[7]||(S[7]=n("p",null,"暂无会话",-1))])):E("",!0)])]),n("div",NR,[R.value?(d(),p("div",FR,[n("div",BR,[n("div",VR,[m(Tt,{"user-id":R.value.userId,"user-name":R.value.userName,width:40,height:40},null,8,["user-id","user-name"]),n("div",jR,[n("h3",qR,y(R.value.userName),1),n("span",HR,[R.value.blocked?(d(),p("span",zR,"已拉黑")):R.value.muted?(d(),p("span",WR,"已拒收")):(d(),p("span",KR,"在线"))])])]),n("div",GR,[n("button",{class:"header-action-btn report-btn",onClick:V},[m(_,{icon:"mdi:flag-outline"})]),n("div",{class:"more-actions-wrapper",ref_key:"moreActionsRef",ref:O},[n("button",{class:"header-action-btn",onClick:S[0]||(S[0]=L=>te.value=!te.value)},[m(_,{icon:"mdi:dots-vertical"})]),m(mt,{name:"menu-fade"},{default:ft(()=>[te.value?(d(),p("div",{key:0,class:"more-actions-menu",onClick:S[1]||(S[1]=je(()=>{},["stop"]))},[R.value.muted?(d(),p("div",{key:1,class:"menu-item",onClick:pe},[m(_,{icon:"mdi:bell-outline",class:"menu-icon"}),S[9]||(S[9]=n("span",null,"接收消息",-1))])):(d(),p("div",{key:0,class:"menu-item",onClick:X},[m(_,{icon:"mdi:bell-off-outline",class:"menu-icon"}),S[8]||(S[8]=n("span",null,"拒收消息",-1))])),R.value.blocked?(d(),p("div",{key:3,class:"menu-item",onClick:Pe},[m(_,{icon:"mdi:account-check-outline",class:"menu-icon"}),S[11]||(S[11]=n("span",null,"取消拉黑",-1))])):(d(),p("div",{key:2,class:"menu-item danger",onClick:Ne},[m(_,{icon:"mdi:block-helper",class:"menu-icon"}),S[10]||(S[10]=n("span",null,"拉黑用户",-1))]))])):E("",!0)]),_:1})],512)])]),n("div",{class:"messages-list",ref_key:"messagesListRef",ref:N},[(d(!0),p(he,null,Re(R.value.messages,L=>{var P,ee,ue,ve;return d(),p("div",{key:L.id,class:$e(["message-item",{sent:L.sent,received:!L.sent}])},[L.sent?E("",!0):(d(),p("div",QR,[m(Tt,{"user-id":R.value.userId,"user-name":R.value.userName,width:40,height:40},null,8,["user-id","user-name"])])),n("div",JR,[n("div",ZR,[n("p",XR,y(L.content),1),L.attachments&&L.attachments.length>0?(d(),p("div",YR,[(d(!0),p(he,null,Re(L.attachments,Ie=>(d(),p("div",{key:Ie.id,class:"attachment-item",onClick:Oe=>Ce(Ie)},[m(_,{icon:Ie.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",tU,y(Ie.name),1),n("span",sU,y(A(Ie.size)),1)],8,eU))),128))])):E("",!0),n("span",nU,y(D(L.sendTime)),1)])]),L.sent?(d(),p("div",oU,[m(Tt,{"user-id":((P=Y(f))==null?void 0:P.id)||((ee=Y(f))==null?void 0:ee._id),"user-name":((ue=Y(f))==null?void 0:ue.nickName)||((ve=Y(f))==null?void 0:ve.username)||"我",width:40,height:40},null,8,["user-id","user-name"])])):E("",!0)],2)}),128))],512),n("div",lU,[R.value.blocked||R.value.muted?(d(),p("div",aU,[m(_,{icon:R.value.blocked?"mdi:block-helper":"mdi:bell-off-outline",class:"notice-icon"},null,8,["icon"]),n("span",null,y(R.value.blocked?"该用户已被拉黑,无法发送消息":"已拒收该用户的消息"),1)])):(d(),p("div",iU,[n("div",rU,[n("button",{class:"toolbar-btn",onClick:de,disabled:w.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(_,{icon:"mdi:image-outline"})],8,cU),n("button",{class:"toolbar-btn",onClick:Te,disabled:C.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(_,{icon:"mdi:file-outline"})],8,uU)]),Be(n("textarea",{"onUpdate:modelValue":S[2]||(S[2]=L=>b.value=L),class:"message-textarea",placeholder:"输入消息...",rows:"3",maxlength:"2000",onKeydown:Xs(je(ye,["ctrl"]),["enter"])},null,40,dU),[[Je,b.value]])])),!R.value.blocked&&!R.value.muted&&(w.value.length>0||C.value.length>0)?(d(),p("div",fU,[(d(!0),p(he,null,Re(w.value,(L,P)=>(d(),p("div",{key:`img-${P}`,class:"attachment-preview-item"},[n("img",{src:L.preview,alt:"预览"},null,8,pU),n("button",{class:"remove-btn",onClick:ee=>ie(P)},[m(_,{icon:"mdi:close"})],8,vU)]))),128)),(d(!0),p(he,null,Re(C.value,(L,P)=>(d(),p("div",{key:`file-${P}`,class:"attachment-preview-item file"},[m(_,{icon:"mdi:file"}),n("span",mU,y(L.file.name),1),n("button",{class:"remove-btn",onClick:ee=>re(P)},[m(_,{icon:"mdi:close"})],8,hU)]))),128))])):E("",!0),!R.value.blocked&&!R.value.muted?(d(),p("div",gU,[n("span",yU,y(b.value.length)+"/2000",1),n("button",{class:"send-btn",onClick:ye,disabled:!$.value},[m(_,{icon:"mdi:send",class:"btn-icon"}),S[12]||(S[12]=be(" 发送 ",-1))],8,bU)])):E("",!0),n("input",{ref_key:"imageInput",ref:I,type:"file",accept:"image/*",multiple:"",onChange:Me,style:{display:"none"}},null,544),n("input",{ref_key:"fileInput",ref:q,type:"file",multiple:"",onChange:K,style:{display:"none"}},null,544)])])):(d(),p("div",_U,[m(_,{icon:"fluent-color:comment-multiple-32",class:"empty-icon"}),S[13]||(S[13]=n("p",null,"选择一个会话开始聊天",-1))]))])])]),m(yl,{visible:!!z.value,"image-url":z.value,onClose:T},null,8,["visible","image-url"])]),m(nn,{visible:Y(i).visible.value,title:Y(i).config.value.title||"",message:Y(i).config.value.message||"",type:Y(i).config.value.type,"confirm-text":Y(i).config.value.confirmText,"cancel-text":Y(i).config.value.cancelText,onConfirm:Y(i).handleConfirm,onCancel:Y(i).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(ls,{toasts:Y(o),onRemove:Y(a)},null,8,["toasts","onRemove"]),m(Qu)],64))}}),kU=Ge(wU,[["__scopeId","data-v-4b909d6b"]]),$U=[{path:"/",name:"Home",component:Y_},{path:"/apps",name:"Apps",component:C5},{path:"/official",name:"OfficialApps",component:H5},{path:"/app/:bundleId",name:"AppDetail",component:aC,props:!0},{path:"/downloads",name:"DownloadManager",component:zC},{path:"/settings",name:"Settings",component:B4},{path:"/profile",name:"Profile",component:s5,beforeEnter:async(e,t,s)=>{const{useAuth:o}=await Tr(async()=>{const{useAuth:a}=await Promise.resolve().then(()=>ag);return{useAuth:a}},void 0),{isLoggedIn:l}=o();l.value?s():s({path:"/",replace:!0})}},{path:"/new-features",name:"NewFeatures",component:f5},{path:"/discussion",name:"DiscussionForums",component:d6},{path:"/discussion/:bundleId",name:"DiscussionForum",component:oS,props:!0},{path:"/discussion/:bundleId/post/:postId",name:"PostDetail",component:ex,props:!0},{path:"/admin",name:"AdminPanel",component:OA,beforeEnter:async(e,t,s)=>{const{usePermission:o}=await Tr(async()=>{const{usePermission:a}=await Promise.resolve().then(()=>zy);return{usePermission:a}},void 0),{isAdmin:l}=o();l.value?s():s({path:"/",replace:!0})}},{path:"/notifications",name:"Notifications",component:gR},{path:"/messages",name:"Messages",component:kU}],CU=qy({history:yy(),routes:$U}),Ha=Up(vb);Ha.use(Lp());Ha.use(CU);Ha.mount("#app");