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

36 lines
552 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 a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function s(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function o(a){if(a.ep)return;a.ep=!0;const l=s(a);fetch(a.href,l)}})();/**
* @vue/shared v3.5.24
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function Jl(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const bt={},An=[],vs=()=>{},vc=()=>!1,$a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Zl=e=>e.startsWith("onUpdate:"),Dt=Object.assign,Xl=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Yd=Object.prototype.hasOwnProperty,ht=(e,t)=>Yd.call(e,t),et=Array.isArray,xn=e=>Ro(e)==="[object Map]",Bn=e=>Ro(e)==="[object Set]",xi=e=>Ro(e)==="[object Date]",lt=e=>typeof e=="function",xt=e=>typeof e=="string",ys=e=>typeof e=="symbol",gt=e=>e!==null&&typeof e=="object",mc=e=>(gt(e)||lt(e))&&lt(e.then)&&lt(e.catch),hc=Object.prototype.toString,Ro=e=>hc.call(e),ef=e=>Ro(e).slice(8,-1),gc=e=>Ro(e)==="[object Object]",Yl=e=>xt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,co=Jl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ca=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},tf=/-\w/g,us=Ca(e=>e.replace(tf,t=>t.slice(1).toUpperCase())),sf=/\B([A-Z])/g,tn=Ca(e=>e.replace(sf,"-$1").toLowerCase()),Ia=Ca(e=>e.charAt(0).toUpperCase()+e.slice(1)),sl=Ca(e=>e?`on${Ia(e)}`:""),Zs=(e,t)=>!Object.is(e,t),Zo=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},yc=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},Sa=e=>{const t=parseFloat(e);return isNaN(t)?e:t},nf=e=>{const t=xt(e)?Number(e):NaN;return isNaN(t)?e:t};let Ti;const Aa=()=>Ti||(Ti=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Lt(e){if(et(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],a=xt(o)?rf(o):Lt(o);if(a)for(const l in a)t[l]=a[l]}return t}else if(xt(e)||gt(e))return e}const of=/;(?![^(]*\))/g,af=/:([^]+)/,lf=/\/\*[^]*?\*\//g;function rf(e){const t={};return e.replace(lf,"").split(of).forEach(s=>{if(s){const o=s.split(af);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function $e(e){let t="";if(xt(e))t=e;else if(et(e))for(let s=0;s<e.length;s++){const o=$e(e[s]);o&&(t+=o+" ")}else if(gt(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const cf="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",uf=Jl(cf);function bc(e){return!!e||e===""}function df(e,t){if(e.length!==t.length)return!1;let s=!0;for(let o=0;s&&o<e.length;o++)s=gn(e[o],t[o]);return s}function gn(e,t){if(e===t)return!0;let s=xi(e),o=xi(t);if(s||o)return s&&o?e.getTime()===t.getTime():!1;if(s=ys(e),o=ys(t),s||o)return e===t;if(s=et(e),o=et(t),s||o)return s&&o?df(e,t):!1;if(s=gt(e),o=gt(t),s||o){if(!s||!o)return!1;const a=Object.keys(e).length,l=Object.keys(t).length;if(a!==l)return!1;for(const i in e){const r=e.hasOwnProperty(i),c=t.hasOwnProperty(i);if(r&&!c||!r&&c||!gn(e[i],t[i]))return!1}}return String(e)===String(t)}function ei(e,t){return e.findIndex(s=>gn(s,t))}const _c=e=>!!(e&&e.__v_isRef===!0),h=e=>xt(e)?e:e==null?"":et(e)||gt(e)&&(e.toString===hc||!lt(e.toString))?_c(e)?h(e.value):JSON.stringify(e,wc,2):String(e),wc=(e,t)=>_c(t)?wc(e,t.value):xn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,a],l)=>(s[nl(o,l)+" =>"]=a,s),{})}:Bn(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>nl(s))}:ys(t)?nl(t):gt(t)&&!et(t)&&!gc(t)?String(t):t,nl=(e,t="")=>{var s;return ys(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};function ff(e){return e==null?"initial":typeof e=="string"?e===""?" ":e:String(e)}/**
* @vue/reactivity v3.5.24
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Yt;class kc{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Yt,!t&&Yt&&(this.index=(Yt.scopes||(Yt.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=Yt;try{return Yt=this,t()}finally{Yt=s}}}on(){++this._on===1&&(this.prevScope=Yt,Yt=this)}off(){this._on>0&&--this._on===0&&(Yt=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 a=this.parent.scopes.pop();a&&a!==this&&(this.parent.scopes[this.index]=a,a.index=this.index)}this.parent=void 0}}}function pf(e){return new kc(e)}function vf(){return Yt}let _t;const ol=new WeakSet;class $c{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,Yt&&Yt.active&&Yt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ol.has(this)&&(ol.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ic(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ei(this),Sc(this);const t=_t,s=ms;_t=this,ms=!0;try{return this.fn()}finally{Ac(this),_t=t,ms=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ni(t);this.deps=this.depsTail=void 0,Ei(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ol.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Cl(this)&&this.run()}get dirty(){return Cl(this)}}let Cc=0,uo,fo;function Ic(e,t=!1){if(e.flags|=8,t){e.next=fo,fo=e;return}e.next=uo,uo=e}function ti(){Cc++}function si(){if(--Cc>0)return;if(fo){let t=fo;for(fo=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;uo;){let t=uo;for(uo=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 Sc(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ac(e){let t,s=e.depsTail,o=s;for(;o;){const a=o.prevDep;o.version===-1?(o===s&&(s=a),ni(o),mf(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=a}e.deps=t,e.depsTail=s}function Cl(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(xc(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function xc(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bo)||(e.globalVersion=bo,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Cl(e))))return;e.flags|=2;const t=e.dep,s=_t,o=ms;_t=e,ms=!0;try{Sc(e);const a=e.fn(e._value);(t.version===0||Zs(a,e._value))&&(e.flags|=128,e._value=a,t.version++)}catch(a){throw t.version++,a}finally{_t=s,ms=o,Ac(e),e.flags&=-3}}function ni(e,t=!1){const{dep:s,prevSub:o,nextSub:a}=e;if(o&&(o.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let l=s.computed.deps;l;l=l.nextDep)ni(l,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function mf(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let ms=!0;const Tc=[];function Vs(){Tc.push(ms),ms=!1}function Bs(){const e=Tc.pop();ms=e===void 0?!0:e}function Ei(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=_t;_t=void 0;try{t()}finally{_t=s}}}let bo=0;class hf{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 oi{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(!_t||!ms||_t===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==_t)s=this.activeLink=new hf(_t,this),_t.deps?(s.prevDep=_t.depsTail,_t.depsTail.nextDep=s,_t.depsTail=s):_t.deps=_t.depsTail=s,Ec(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=_t.depsTail,s.nextDep=void 0,_t.depsTail.nextDep=s,_t.depsTail=s,_t.deps===s&&(_t.deps=o)}return s}trigger(t){this.version++,bo++,this.notify(t)}notify(t){ti();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{si()}}}function Ec(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)Ec(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Il=new WeakMap,vn=Symbol(""),Sl=Symbol(""),_o=Symbol("");function Bt(e,t,s){if(ms&&_t){let o=Il.get(e);o||Il.set(e,o=new Map);let a=o.get(s);a||(o.set(s,a=new oi),a.map=o,a.key=s),a.track()}}function Ls(e,t,s,o,a,l){const i=Il.get(e);if(!i){bo++;return}const r=c=>{c&&c.trigger()};if(ti(),t==="clear")i.forEach(r);else{const c=et(e),d=c&&Yl(s);if(c&&s==="length"){const p=Number(o);i.forEach((v,g)=>{(g==="length"||g===_o||!ys(g)&&g>=p)&&r(v)})}else switch((s!==void 0||i.has(void 0))&&r(i.get(s)),d&&r(i.get(_o)),t){case"add":c?d&&r(i.get("length")):(r(i.get(vn)),xn(e)&&r(i.get(Sl)));break;case"delete":c||(r(i.get(vn)),xn(e)&&r(i.get(Sl)));break;case"set":xn(e)&&r(i.get(vn));break}}si()}function Cn(e){const t=ct(e);return t===e?t:(Bt(t,"iterate",_o),rs(e)?t:t.map(Ot))}function xa(e){return Bt(e=ct(e),"iterate",_o),e}const gf={__proto__:null,[Symbol.iterator](){return al(this,Symbol.iterator,Ot)},concat(...e){return Cn(this).concat(...e.map(t=>et(t)?Cn(t):t))},entries(){return al(this,"entries",e=>(e[1]=Ot(e[1]),e))},every(e,t){return Ds(this,"every",e,t,void 0,arguments)},filter(e,t){return Ds(this,"filter",e,t,s=>s.map(Ot),arguments)},find(e,t){return Ds(this,"find",e,t,Ot,arguments)},findIndex(e,t){return Ds(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ds(this,"findLast",e,t,Ot,arguments)},findLastIndex(e,t){return Ds(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ds(this,"forEach",e,t,void 0,arguments)},includes(...e){return ll(this,"includes",e)},indexOf(...e){return ll(this,"indexOf",e)},join(e){return Cn(this).join(e)},lastIndexOf(...e){return ll(this,"lastIndexOf",e)},map(e,t){return Ds(this,"map",e,t,void 0,arguments)},pop(){return Xn(this,"pop")},push(...e){return Xn(this,"push",e)},reduce(e,...t){return Ri(this,"reduce",e,t)},reduceRight(e,...t){return Ri(this,"reduceRight",e,t)},shift(){return Xn(this,"shift")},some(e,t){return Ds(this,"some",e,t,void 0,arguments)},splice(...e){return Xn(this,"splice",e)},toReversed(){return Cn(this).toReversed()},toSorted(e){return Cn(this).toSorted(e)},toSpliced(...e){return Cn(this).toSpliced(...e)},unshift(...e){return Xn(this,"unshift",e)},values(){return al(this,"values",Ot)}};function al(e,t,s){const o=xa(e),a=o[t]();return o!==e&&!rs(e)&&(a._next=a.next,a.next=()=>{const l=a._next();return l.done||(l.value=s(l.value)),l}),a}const yf=Array.prototype;function Ds(e,t,s,o,a,l){const i=xa(e),r=i!==e&&!rs(e),c=i[t];if(c!==yf[t]){const v=c.apply(e,l);return r?Ot(v):v}let d=s;i!==e&&(r?d=function(v,g){return s.call(this,Ot(v),g,e)}:s.length>2&&(d=function(v,g){return s.call(this,v,g,e)}));const p=c.call(i,d,o);return r&&a?a(p):p}function Ri(e,t,s,o){const a=xa(e);let l=s;return a!==e&&(rs(e)?s.length>3&&(l=function(i,r,c){return s.call(this,i,r,c,e)}):l=function(i,r,c){return s.call(this,i,Ot(r),c,e)}),a[t](l,...o)}function ll(e,t,s){const o=ct(e);Bt(o,"iterate",_o);const a=o[t](...s);return(a===-1||a===!1)&&ii(s[0])?(s[0]=ct(s[0]),o[t](...s)):a}function Xn(e,t,s=[]){Vs(),ti();const o=ct(e)[t].apply(e,s);return si(),Bs(),o}const bf=Jl("__proto__,__v_isRef,__isVue"),Rc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ys));function _f(e){ys(e)||(e=String(e));const t=ct(this);return Bt(t,"has",e),t.hasOwnProperty(e)}class Uc{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const a=this._isReadonly,l=this._isShallow;if(s==="__v_isReactive")return!a;if(s==="__v_isReadonly")return a;if(s==="__v_isShallow")return l;if(s==="__v_raw")return o===(a?l?Ef:Pc:l?Mc:Nc).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const i=et(t);if(!a){let c;if(i&&(c=gf[s]))return c;if(s==="hasOwnProperty")return _f}const r=Reflect.get(t,s,zt(t)?t:o);if((ys(s)?Rc.has(s):bf(s))||(a||Bt(t,"get",s),l))return r;if(zt(r)){const c=i&&Yl(s)?r:r.value;return a&&gt(c)?xl(c):c}return gt(r)?a?xl(r):Ta(r):r}}class Dc extends Uc{constructor(t=!1){super(!1,t)}set(t,s,o,a){let l=t[s];if(!this._isShallow){const c=Xs(l);if(!rs(o)&&!Xs(o)&&(l=ct(l),o=ct(o)),!et(t)&&zt(l)&&!zt(o))return c||(l.value=o),!0}const i=et(t)&&Yl(s)?Number(s)<t.length:ht(t,s),r=Reflect.set(t,s,o,zt(t)?t:a);return t===ct(a)&&(i?Zs(o,l)&&Ls(t,"set",s,o):Ls(t,"add",s,o)),r}deleteProperty(t,s){const o=ht(t,s);t[s];const a=Reflect.deleteProperty(t,s);return a&&o&&Ls(t,"delete",s,void 0),a}has(t,s){const o=Reflect.has(t,s);return(!ys(s)||!Rc.has(s))&&Bt(t,"has",s),o}ownKeys(t){return Bt(t,"iterate",et(t)?"length":vn),Reflect.ownKeys(t)}}class wf extends Uc{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const kf=new Dc,$f=new wf,Cf=new Dc(!0);const Al=e=>e,qo=e=>Reflect.getPrototypeOf(e);function If(e,t,s){return function(...o){const a=this.__v_raw,l=ct(a),i=xn(l),r=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,d=a[e](...o),p=s?Al:t?ca:Ot;return!t&&Bt(l,"iterate",c?Sl:vn),{next(){const{value:v,done:g}=d.next();return g?{value:v,done:g}:{value:r?[p(v[0]),p(v[1])]:p(v),done:g}},[Symbol.iterator](){return this}}}}function Ho(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Sf(e,t){const s={get(a){const l=this.__v_raw,i=ct(l),r=ct(a);e||(Zs(a,r)&&Bt(i,"get",a),Bt(i,"get",r));const{has:c}=qo(i),d=t?Al:e?ca:Ot;if(c.call(i,a))return d(l.get(a));if(c.call(i,r))return d(l.get(r));l!==i&&l.get(a)},get size(){const a=this.__v_raw;return!e&&Bt(ct(a),"iterate",vn),a.size},has(a){const l=this.__v_raw,i=ct(l),r=ct(a);return e||(Zs(a,r)&&Bt(i,"has",a),Bt(i,"has",r)),a===r?l.has(a):l.has(a)||l.has(r)},forEach(a,l){const i=this,r=i.__v_raw,c=ct(r),d=t?Al:e?ca:Ot;return!e&&Bt(c,"iterate",vn),r.forEach((p,v)=>a.call(l,d(p),d(v),i))}};return Dt(s,e?{add:Ho("add"),set:Ho("set"),delete:Ho("delete"),clear:Ho("clear")}:{add(a){!t&&!rs(a)&&!Xs(a)&&(a=ct(a));const l=ct(this);return qo(l).has.call(l,a)||(l.add(a),Ls(l,"add",a,a)),this},set(a,l){!t&&!rs(l)&&!Xs(l)&&(l=ct(l));const i=ct(this),{has:r,get:c}=qo(i);let d=r.call(i,a);d||(a=ct(a),d=r.call(i,a));const p=c.call(i,a);return i.set(a,l),d?Zs(l,p)&&Ls(i,"set",a,l):Ls(i,"add",a,l),this},delete(a){const l=ct(this),{has:i,get:r}=qo(l);let c=i.call(l,a);c||(a=ct(a),c=i.call(l,a)),r&&r.call(l,a);const d=l.delete(a);return c&&Ls(l,"delete",a,void 0),d},clear(){const a=ct(this),l=a.size!==0,i=a.clear();return l&&Ls(a,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(a=>{s[a]=If(a,e,t)}),s}function ai(e,t){const s=Sf(e,t);return(o,a,l)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?o:Reflect.get(ht(s,a)&&a in o?s:o,a,l)}const Af={get:ai(!1,!1)},xf={get:ai(!1,!0)},Tf={get:ai(!0,!1)};const Nc=new WeakMap,Mc=new WeakMap,Pc=new WeakMap,Ef=new WeakMap;function Rf(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Uf(e){return e.__v_skip||!Object.isExtensible(e)?0:Rf(ef(e))}function Ta(e){return Xs(e)?e:li(e,!1,kf,Af,Nc)}function Lc(e){return li(e,!1,Cf,xf,Mc)}function xl(e){return li(e,!0,$f,Tf,Pc)}function li(e,t,s,o,a){if(!gt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const l=Uf(e);if(l===0)return e;const i=a.get(e);if(i)return i;const r=new Proxy(e,l===2?o:s);return a.set(e,r),r}function Tn(e){return Xs(e)?Tn(e.__v_raw):!!(e&&e.__v_isReactive)}function Xs(e){return!!(e&&e.__v_isReadonly)}function rs(e){return!!(e&&e.__v_isShallow)}function ii(e){return e?!!e.__v_raw:!1}function ct(e){const t=e&&e.__v_raw;return t?ct(t):e}function Oc(e){return!ht(e,"__v_skip")&&Object.isExtensible(e)&&yc(e,"__v_skip",!0),e}const Ot=e=>gt(e)?Ta(e):e,ca=e=>gt(e)?xl(e):e;function zt(e){return e?e.__v_isRef===!0:!1}function k(e){return Fc(e,!1)}function wo(e){return Fc(e,!0)}function Fc(e,t){return zt(e)?e:new Df(e,t)}class Df{constructor(t,s){this.dep=new oi,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:ct(t),this._value=s?t:Ot(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||rs(t)||Xs(t);t=o?t:ct(t),Zs(t,s)&&(this._rawValue=t,this._value=o?t:Ot(t),this.dep.trigger())}}function Z(e){return zt(e)?e.value:e}const Nf={get:(e,t,s)=>t==="__v_raw"?e:Z(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const a=e[t];return zt(a)&&!zt(s)?(a.value=s,!0):Reflect.set(e,t,s,o)}};function Vc(e){return Tn(e)?e:new Proxy(e,Nf)}class Mf{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new oi(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bo-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&_t!==this)return Ic(this,!0),!0}get value(){const t=this.dep.track();return xc(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Pf(e,t,s=!1){let o,a;return lt(e)?o=e:(o=e.get,a=e.set),new Mf(o,a,s)}const zo={},ua=new WeakMap;let cn;function Lf(e,t=!1,s=cn){if(s){let o=ua.get(s);o||ua.set(s,o=[]),o.push(e)}}function Of(e,t,s=bt){const{immediate:o,deep:a,once:l,scheduler:i,augmentJob:r,call:c}=s,d=K=>a?K:rs(K)||a===!1||a===0?Os(K,1):Os(K);let p,v,g,_,w=!1,C=!1;if(zt(e)?(v=()=>e.value,w=rs(e)):Tn(e)?(v=()=>d(e),w=!0):et(e)?(C=!0,w=e.some(K=>Tn(K)||rs(K)),v=()=>e.map(K=>{if(zt(K))return K.value;if(Tn(K))return d(K);if(lt(K))return c?c(K,2):K()})):lt(e)?t?v=c?()=>c(e,2):e:v=()=>{if(g){Vs();try{g()}finally{Bs()}}const K=cn;cn=p;try{return c?c(e,3,[_]):e(_)}finally{cn=K}}:v=vs,t&&a){const K=v,W=a===!0?1/0:a;v=()=>Os(K(),W)}const $=vf(),A=()=>{p.stop(),$&&$.active&&Xl($.effects,p)};if(l&&t){const K=t;t=(...W)=>{K(...W),A()}}let x=C?new Array(e.length).fill(zo):zo;const M=K=>{if(!(!(p.flags&1)||!p.dirty&&!K))if(t){const W=p.run();if(a||w||(C?W.some((z,re)=>Zs(z,x[re])):Zs(W,x))){g&&g();const z=cn;cn=p;try{const re=[W,x===zo?void 0:C&&x[0]===zo?[]:x,_];x=W,c?c(t,3,re):t(...re)}finally{cn=z}}}else p.run()};return r&&r(M),p=new $c(v),p.scheduler=i?()=>i(M,!1):M,_=K=>Lf(K,!1,p),g=p.onStop=()=>{const K=ua.get(p);if(K){if(c)c(K,4);else for(const W of K)W();ua.delete(p)}},t?o?M(!0):x=p.run():i?i(M.bind(null,!0),!0):p.run(),A.pause=p.pause.bind(p),A.resume=p.resume.bind(p),A.stop=A,A}function Os(e,t=1/0,s){if(t<=0||!gt(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,zt(e))Os(e.value,t,s);else if(et(e))for(let o=0;o<e.length;o++)Os(e[o],t,s);else if(Bn(e)||xn(e))e.forEach(o=>{Os(o,t,s)});else if(gc(e)){for(const o in e)Os(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Os(e[o],t,s)}return e}/**
* @vue/runtime-core v3.5.24
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/function Uo(e,t,s,o){try{return o?e(...o):e()}catch(a){Ea(a,t,s)}}function bs(e,t,s,o){if(lt(e)){const a=Uo(e,t,s,o);return a&&mc(a)&&a.catch(l=>{Ea(l,t,s)}),a}if(et(e)){const a=[];for(let l=0;l<e.length;l++)a.push(bs(e[l],t,s,o));return a}}function Ea(e,t,s,o=!0){const a=t?t.vnode:null,{errorHandler:l,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||bt;if(t){let r=t.parent;const c=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;r;){const p=r.ec;if(p){for(let v=0;v<p.length;v++)if(p[v](e,c,d)===!1)return}r=r.parent}if(l){Vs(),Uo(l,null,10,[e,c,d]),Bs();return}}Ff(e,s,a,o,i)}function Ff(e,t,s,o=!0,a=!1){if(a)throw e;console.error(e)}const Zt=[];let xs=-1;const En=[];let Gs=null,In=0;const Bc=Promise.resolve();let da=null;function Ct(e){const t=da||Bc;return e?t.then(this?e.bind(this):e):t}function Vf(e){let t=xs+1,s=Zt.length;for(;t<s;){const o=t+s>>>1,a=Zt[o],l=ko(a);l<e||l===e&&a.flags&2?t=o+1:s=o}return t}function ri(e){if(!(e.flags&1)){const t=ko(e),s=Zt[Zt.length-1];!s||!(e.flags&2)&&t>=ko(s)?Zt.push(e):Zt.splice(Vf(t),0,e),e.flags|=1,jc()}}function jc(){da||(da=Bc.then(zc))}function qc(e){et(e)?En.push(...e):Gs&&e.id===-1?Gs.splice(In+1,0,e):e.flags&1||(En.push(e),e.flags|=1),jc()}function Ui(e,t,s=xs+1){for(;s<Zt.length;s++){const o=Zt[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Zt.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Hc(e){if(En.length){const t=[...new Set(En)].sort((s,o)=>ko(s)-ko(o));if(En.length=0,Gs){Gs.push(...t);return}for(Gs=t,In=0;In<Gs.length;In++){const s=Gs[In];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Gs=null,In=0}}const ko=e=>e.id==null?e.flags&2?-1:1/0:e.id;function zc(e){try{for(xs=0;xs<Zt.length;xs++){const t=Zt[xs];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Uo(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;xs<Zt.length;xs++){const t=Zt[xs];t&&(t.flags&=-2)}xs=-1,Zt.length=0,Hc(),da=null,(Zt.length||En.length)&&zc()}}let Vt=null,Wc=null;function fa(e){const t=Vt;return Vt=e,Wc=e&&e.type.__scopeId||null,t}function pt(e,t=Vt,s){if(!t||e._n)return e;const o=(...a)=>{o._d&&ma(-1);const l=fa(t);let i;try{i=e(...a)}finally{fa(l),o._d&&ma(1)}return i};return o._n=!0,o._c=!0,o._d=!0,o}function Qe(e,t){if(Vt===null)return e;const s=Pa(Vt),o=e.dirs||(e.dirs=[]);for(let a=0;a<t.length;a++){let[l,i,r,c=bt]=t[a];l&&(lt(l)&&(l={mounted:l,updated:l}),l.deep&&Os(i),o.push({dir:l,instance:s,value:i,oldValue:void 0,arg:r,modifiers:c}))}return e}function nn(e,t,s,o){const a=e.dirs,l=t&&t.dirs;for(let i=0;i<a.length;i++){const r=a[i];l&&(r.oldValue=l[i].value);let c=r.dir[o];c&&(Vs(),bs(c,s,8,[e.el,r,e,t]),Bs())}}const Kc=Symbol("_vte"),Gc=e=>e.__isTeleport,po=e=>e&&(e.disabled||e.disabled===""),Di=e=>e&&(e.defer||e.defer===""),Ni=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Mi=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Tl=(e,t)=>{const s=e&&e.to;return xt(s)?t?t(s):null:s},Qc={name:"Teleport",__isTeleport:!0,process(e,t,s,o,a,l,i,r,c,d){const{mc:p,pc:v,pbc:g,o:{insert:_,querySelector:w,createText:C,createComment:$}}=d,A=po(t.props);let{shapeFlag:x,children:M,dynamicChildren:K}=t;if(e==null){const W=t.el=C(""),z=t.anchor=C("");_(W,s,o),_(z,s,o);const re=(q,Q)=>{x&16&&p(M,q,Q,a,l,i,r,c)},V=()=>{const q=t.target=Tl(t.props,w),Q=Jc(q,t,C,_);q&&(i!=="svg"&&Ni(q)?i="svg":i!=="mathml"&&Mi(q)&&(i="mathml"),a&&a.isCE&&(a.ce._teleportTargets||(a.ce._teleportTargets=new Set)).add(q),A||(re(q,Q),Xo(t,!1)))};A&&(re(s,z),Xo(t,!0)),Di(t.props)?(t.el.__isMounted=!1,Qt(()=>{V(),delete t.el.__isMounted},l)):V()}else{if(Di(t.props)&&e.el.__isMounted===!1){Qt(()=>{Qc.process(e,t,s,o,a,l,i,r,c,d)},l);return}t.el=e.el,t.targetStart=e.targetStart;const W=t.anchor=e.anchor,z=t.target=e.target,re=t.targetAnchor=e.targetAnchor,V=po(e.props),q=V?s:z,Q=V?W:re;if(i==="svg"||Ni(z)?i="svg":(i==="mathml"||Mi(z))&&(i="mathml"),K?(g(e.dynamicChildren,K,q,a,l,i,r),fi(e,t,!0)):c||v(e,t,q,Q,a,l,i,r,!1),A)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Wo(t,s,W,d,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const E=t.target=Tl(t.props,w);E&&Wo(t,E,null,d,0)}else V&&Wo(t,z,re,d,1);Xo(t,A)}},remove(e,t,s,{um:o,o:{remove:a}},l){const{shapeFlag:i,children:r,anchor:c,targetStart:d,targetAnchor:p,target:v,props:g}=e;if(v&&(a(d),a(p)),l&&a(c),i&16){const _=l||!po(g);for(let w=0;w<r.length;w++){const C=r[w];o(C,t,s,_,!!C.dynamicChildren)}}},move:Wo,hydrate:Bf};function Wo(e,t,s,{o:{insert:o},m:a},l=2){l===0&&o(e.targetAnchor,t,s);const{el:i,anchor:r,shapeFlag:c,children:d,props:p}=e,v=l===2;if(v&&o(i,t,s),(!v||po(p))&&c&16)for(let g=0;g<d.length;g++)a(d[g],t,s,2);v&&o(r,t,s)}function Bf(e,t,s,o,a,l,{o:{nextSibling:i,parentNode:r,querySelector:c,insert:d,createText:p}},v){function g(C,$,A,x){$.anchor=v(i(C),$,r(C),s,o,a,l),$.targetStart=A,$.targetAnchor=x}const _=t.target=Tl(t.props,c),w=po(t.props);if(_){const C=_._lpa||_.firstChild;if(t.shapeFlag&16)if(w)g(e,t,C,C&&i(C));else{t.anchor=i(e);let $=C;for(;$;){if($&&$.nodeType===8){if($.data==="teleport start anchor")t.targetStart=$;else if($.data==="teleport anchor"){t.targetAnchor=$,_._lpa=t.targetAnchor&&i(t.targetAnchor);break}}$=i($)}t.targetAnchor||Jc(_,t,p,d),v(C&&i(C),t,_,s,o,a,l)}Xo(t,w)}else w&&t.shapeFlag&16&&g(e,t,e,i(e));return t.anchor&&i(t.anchor)}const Xt=Qc;function Xo(e,t){const s=e.ctx;if(s&&s.ut){let o,a;for(t?(o=e.el,a=e.anchor):(o=e.targetStart,a=e.targetAnchor);o&&o!==a;)o.nodeType===1&&o.setAttribute("data-v-owner",s.uid),o=o.nextSibling;s.ut()}}function Jc(e,t,s,o){const a=t.targetStart=s(""),l=t.targetAnchor=s("");return a[Kc]=l,e&&(o(a,e),o(l,e)),l}const Ps=Symbol("_leaveCb"),Ko=Symbol("_enterCb");function Zc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return vt(()=>{e.isMounted=!0}),jn(()=>{e.isUnmounting=!0}),e}const is=[Function,Array],Xc={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:is,onEnter:is,onAfterEnter:is,onEnterCancelled:is,onBeforeLeave:is,onLeave:is,onAfterLeave:is,onLeaveCancelled:is,onBeforeAppear:is,onAppear:is,onAfterAppear:is,onAppearCancelled:is},Yc=e=>{const t=e.subTree;return t.component?Yc(t.component):t},jf={name:"BaseTransition",props:Xc,setup(e,{slots:t}){const s=Ma(),o=Zc();return()=>{const a=t.default&&ci(t.default(),!0);if(!a||!a.length)return;const l=eu(a),i=ct(e),{mode:r}=i;if(o.isLeaving)return il(l);const c=Pi(l);if(!c)return il(l);let d=$o(c,i,o,s,v=>d=v);c.type!==jt&&yn(c,d);let p=s.subTree&&Pi(s.subTree);if(p&&p.type!==jt&&!dn(p,c)&&Yc(s).type!==jt){let v=$o(p,i,o,s);if(yn(p,v),r==="out-in"&&c.type!==jt)return o.isLeaving=!0,v.afterLeave=()=>{o.isLeaving=!1,s.job.flags&8||s.update(),delete v.afterLeave,p=void 0},il(l);r==="in-out"&&c.type!==jt?v.delayLeave=(g,_,w)=>{const C=tu(o,p);C[String(p.key)]=p,g[Ps]=()=>{_(),g[Ps]=void 0,delete d.delayedLeave,p=void 0},d.delayedLeave=()=>{w(),delete d.delayedLeave,p=void 0}}:p=void 0}else p&&(p=void 0);return l}}};function eu(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==jt){t=s;break}}return t}const qf=jf;function tu(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 $o(e,t,s,o,a){const{appear:l,mode:i,persisted:r=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:p,onEnterCancelled:v,onBeforeLeave:g,onLeave:_,onAfterLeave:w,onLeaveCancelled:C,onBeforeAppear:$,onAppear:A,onAfterAppear:x,onAppearCancelled:M}=t,K=String(e.key),W=tu(s,e),z=(q,Q)=>{q&&bs(q,o,9,Q)},re=(q,Q)=>{const E=Q[1];z(q,Q),et(q)?q.every(L=>L.length<=1)&&E():q.length<=1&&E()},V={mode:i,persisted:r,beforeEnter(q){let Q=c;if(!s.isMounted)if(l)Q=$||c;else return;q[Ps]&&q[Ps](!0);const E=W[K];E&&dn(e,E)&&E.el[Ps]&&E.el[Ps](),z(Q,[q])},enter(q){let Q=d,E=p,L=v;if(!s.isMounted)if(l)Q=A||d,E=x||p,L=M||v;else return;let X=!1;const O=q[Ko]=Y=>{X||(X=!0,Y?z(L,[q]):z(E,[q]),V.delayedLeave&&V.delayedLeave(),q[Ko]=void 0)};Q?re(Q,[q,O]):O()},leave(q,Q){const E=String(e.key);if(q[Ko]&&q[Ko](!0),s.isUnmounting)return Q();z(g,[q]);let L=!1;const X=q[Ps]=O=>{L||(L=!0,Q(),O?z(C,[q]):z(w,[q]),q[Ps]=void 0,W[E]===e&&delete W[E])};W[E]=e,_?re(_,[q,X]):X()},clone(q){const Q=$o(q,t,s,o,a);return a&&a(Q),Q}};return V}function il(e){if(Ra(e))return e=Ys(e),e.children=null,e}function Pi(e){if(!Ra(e))return Gc(e.type)&&e.children?eu(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&&lt(s.default))return s.default()}}function yn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,yn(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 ci(e,t=!1,s){let o=[],a=0;for(let l=0;l<e.length;l++){let i=e[l];const r=s==null?i.key:String(s)+String(i.key!=null?i.key:l);i.type===ge?(i.patchFlag&128&&a++,o=o.concat(ci(i.children,t,r))):(t||i.type!==jt)&&o.push(r!=null?Ys(i,{key:r}):i)}if(a>1)for(let l=0;l<o.length;l++)o[l].patchFlag=-2;return o}function Xe(e,t){return lt(e)?Dt({name:e.name},t,{setup:e}):e}function su(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const pa=new WeakMap;function vo(e,t,s,o,a=!1){if(et(e)){e.forEach((w,C)=>vo(w,t&&(et(t)?t[C]:t),s,o,a));return}if(Rn(o)&&!a){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&vo(e,t,s,o.component.subTree);return}const l=o.shapeFlag&4?Pa(o.component):o.el,i=a?null:l,{i:r,r:c}=e,d=t&&t.r,p=r.refs===bt?r.refs={}:r.refs,v=r.setupState,g=ct(v),_=v===bt?vc:w=>ht(g,w);if(d!=null&&d!==c){if(Li(t),xt(d))p[d]=null,_(d)&&(v[d]=null);else if(zt(d)){d.value=null;const w=t;w.k&&(p[w.k]=null)}}if(lt(c))Uo(c,r,12,[i,p]);else{const w=xt(c),C=zt(c);if(w||C){const $=()=>{if(e.f){const A=w?_(c)?v[c]:p[c]:c.value;if(a)et(A)&&Xl(A,l);else if(et(A))A.includes(l)||A.push(l);else if(w)p[c]=[l],_(c)&&(v[c]=p[c]);else{const x=[l];c.value=x,e.k&&(p[e.k]=x)}}else w?(p[c]=i,_(c)&&(v[c]=i)):C&&(c.value=i,e.k&&(p[e.k]=i))};if(i){const A=()=>{$(),pa.delete(e)};A.id=-1,pa.set(e,A),Qt(A,s)}else Li(e),$()}}}function Li(e){const t=pa.get(e);t&&(t.flags|=8,pa.delete(e))}Aa().requestIdleCallback;Aa().cancelIdleCallback;const Rn=e=>!!e.type.__asyncLoader,Ra=e=>e.type.__isKeepAlive;function Hf(e,t){nu(e,"a",t)}function zf(e,t){nu(e,"da",t)}function nu(e,t,s=qt){const o=e.__wdc||(e.__wdc=()=>{let a=s;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(Ua(t,o,s),s){let a=s.parent;for(;a&&a.parent;)Ra(a.parent.vnode)&&Wf(o,t,s,a),a=a.parent}}function Wf(e,t,s,o){const a=Ua(t,e,o,!0);Wt(()=>{Xl(o[t],a)},s)}function Ua(e,t,s=qt,o=!1){if(s){const a=s[e]||(s[e]=[]),l=t.__weh||(t.__weh=(...i)=>{Vs();const r=Do(s),c=bs(t,s,e,i);return r(),Bs(),c});return o?a.unshift(l):a.push(l),l}}const js=e=>(t,s=qt)=>{(!So||e==="sp")&&Ua(e,(...o)=>t(...o),s)},Kf=js("bm"),vt=js("m"),ou=js("bu"),au=js("u"),jn=js("bum"),Wt=js("um"),Gf=js("sp"),Qf=js("rtg"),Jf=js("rtc");function Zf(e,t=qt){Ua("ec",e,t)}const Xf="components";function lu(e,t){return ep(Xf,e,!0,t)||e}const Yf=Symbol.for("v-ndc");function ep(e,t,s=!0,o=!1){const a=Vt||qt;if(a){const l=a.type;{const r=Bp(l,!1);if(r&&(r===t||r===us(t)||r===Ia(us(t))))return l}const i=Oi(a[e]||l[e],t)||Oi(a.appContext[e],t);return!i&&o?l:i}}function Oi(e,t){return e&&(e[t]||e[us(t)]||e[Ia(us(t))])}function Ee(e,t,s,o){let a;const l=s,i=et(e);if(i||xt(e)){const r=i&&Tn(e);let c=!1,d=!1;r&&(c=!rs(e),d=Xs(e),e=xa(e)),a=new Array(e.length);for(let p=0,v=e.length;p<v;p++)a[p]=t(c?d?ca(Ot(e[p])):Ot(e[p]):e[p],p,void 0,l)}else if(typeof e=="number"){a=new Array(e);for(let r=0;r<e;r++)a[r]=t(r+1,r,void 0,l)}else if(gt(e))if(e[Symbol.iterator])a=Array.from(e,(r,c)=>t(r,c,void 0,l));else{const r=Object.keys(e);a=new Array(r.length);for(let c=0,d=r.length;c<d;c++){const p=r[c];a[c]=t(e[p],p,c,l)}}else a=[];return a}function Nn(e,t,s={},o,a){if(Vt.ce||Vt.parent&&Rn(Vt.parent)&&Vt.parent.ce){const d=Object.keys(s).length>0;return t!=="default"&&(s.name=t),u(),Ke(ge,null,[m("slot",s,o&&o())],d?-2:64)}let l=e[t];l&&l._c&&(l._d=!1),u();const i=l&&iu(l(s)),r=s.key||i&&i.key,c=Ke(ge,{key:(r&&!ys(r)?r:`_${t}`)+(!i&&o?"_fb":"")},i||(o?o():[]),i&&e._===1?64:-2);return l&&l._c&&(l._d=!0),c}function iu(e){return e.some(t=>Io(t)?!(t.type===jt||t.type===ge&&!iu(t.children)):!0)?e:null}const El=e=>e?Su(e)?Pa(e):El(e.parent):null,mo=Dt(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=>El(e.parent),$root:e=>El(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>cu(e),$forceUpdate:e=>e.f||(e.f=()=>{ri(e.update)}),$nextTick:e=>e.n||(e.n=Ct.bind(e.proxy)),$watch:e=>wp.bind(e)}),rl=(e,t)=>e!==bt&&!e.__isScriptSetup&&ht(e,t),tp={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:a,props:l,accessCache:i,type:r,appContext:c}=e;let d;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return o[t];case 2:return a[t];case 4:return s[t];case 3:return l[t]}else{if(rl(o,t))return i[t]=1,o[t];if(a!==bt&&ht(a,t))return i[t]=2,a[t];if((d=e.propsOptions[0])&&ht(d,t))return i[t]=3,l[t];if(s!==bt&&ht(s,t))return i[t]=4,s[t];Rl&&(i[t]=0)}}const p=mo[t];let v,g;if(p)return t==="$attrs"&&Bt(e.attrs,"get",""),p(e);if((v=r.__cssModules)&&(v=v[t]))return v;if(s!==bt&&ht(s,t))return i[t]=4,s[t];if(g=c.config.globalProperties,ht(g,t))return g[t]},set({_:e},t,s){const{data:o,setupState:a,ctx:l}=e;return rl(a,t)?(a[t]=s,!0):o!==bt&&ht(o,t)?(o[t]=s,!0):ht(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(l[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:a,propsOptions:l,type:i}},r){let c,d;return!!(s[r]||e!==bt&&r[0]!=="$"&&ht(e,r)||rl(t,r)||(c=l[0])&&ht(c,r)||ht(o,r)||ht(mo,r)||ht(a.config.globalProperties,r)||(d=i.__cssModules)&&d[r])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:ht(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Fi(e){return et(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Rl=!0;function sp(e){const t=cu(e),s=e.proxy,o=e.ctx;Rl=!1,t.beforeCreate&&Vi(t.beforeCreate,e,"bc");const{data:a,computed:l,methods:i,watch:r,provide:c,inject:d,created:p,beforeMount:v,mounted:g,beforeUpdate:_,updated:w,activated:C,deactivated:$,beforeDestroy:A,beforeUnmount:x,destroyed:M,unmounted:K,render:W,renderTracked:z,renderTriggered:re,errorCaptured:V,serverPrefetch:q,expose:Q,inheritAttrs:E,components:L,directives:X,filters:O}=t;if(d&&np(d,o,null),i)for(const ue in i){const oe=i[ue];lt(oe)&&(o[ue]=oe.bind(s))}if(a){const ue=a.call(s,s);gt(ue)&&(e.data=Ta(ue))}if(Rl=!0,l)for(const ue in l){const oe=l[ue],ke=lt(oe)?oe.bind(s,s):lt(oe.get)?oe.get.bind(s,s):vs,je=!lt(oe)&&lt(oe.set)?oe.set.bind(s):vs,ze=ve({get:ke,set:je});Object.defineProperty(o,ue,{enumerable:!0,configurable:!0,get:()=>ze.value,set:Re=>ze.value=Re})}if(r)for(const ue in r)ru(r[ue],o,s,ue);if(c){const ue=lt(c)?c.call(s):c;Reflect.ownKeys(ue).forEach(oe=>{Yo(oe,ue[oe])})}p&&Vi(p,e,"c");function ne(ue,oe){et(oe)?oe.forEach(ke=>ue(ke.bind(s))):oe&&ue(oe.bind(s))}if(ne(Kf,v),ne(vt,g),ne(ou,_),ne(au,w),ne(Hf,C),ne(zf,$),ne(Zf,V),ne(Jf,z),ne(Qf,re),ne(jn,x),ne(Wt,K),ne(Gf,q),et(Q))if(Q.length){const ue=e.exposed||(e.exposed={});Q.forEach(oe=>{Object.defineProperty(ue,oe,{get:()=>s[oe],set:ke=>s[oe]=ke,enumerable:!0})})}else e.exposed||(e.exposed={});W&&e.render===vs&&(e.render=W),E!=null&&(e.inheritAttrs=E),L&&(e.components=L),X&&(e.directives=X),q&&su(e)}function np(e,t,s=vs){et(e)&&(e=Ul(e));for(const o in e){const a=e[o];let l;gt(a)?"default"in a?l=hs(a.from||o,a.default,!0):l=hs(a.from||o):l=hs(a),zt(l)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>l.value,set:i=>l.value=i}):t[o]=l}}function Vi(e,t,s){bs(et(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function ru(e,t,s,o){let a=o.includes(".")?wu(s,o):()=>s[o];if(xt(e)){const l=t[e];lt(l)&&at(a,l)}else if(lt(e))at(a,e.bind(s));else if(gt(e))if(et(e))e.forEach(l=>ru(l,t,s,o));else{const l=lt(e.handler)?e.handler.bind(s):t[e.handler];lt(l)&&at(a,l,e)}}function cu(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:a,optionsCache:l,config:{optionMergeStrategies:i}}=e.appContext,r=l.get(t);let c;return r?c=r:!a.length&&!s&&!o?c=t:(c={},a.length&&a.forEach(d=>va(c,d,i,!0)),va(c,t,i)),gt(t)&&l.set(t,c),c}function va(e,t,s,o=!1){const{mixins:a,extends:l}=t;l&&va(e,l,s,!0),a&&a.forEach(i=>va(e,i,s,!0));for(const i in t)if(!(o&&i==="expose")){const r=op[i]||s&&s[i];e[i]=r?r(e[i],t[i]):t[i]}return e}const op={data:Bi,props:ji,emits:ji,methods:ro,computed:ro,beforeCreate:Gt,created:Gt,beforeMount:Gt,mounted:Gt,beforeUpdate:Gt,updated:Gt,beforeDestroy:Gt,beforeUnmount:Gt,destroyed:Gt,unmounted:Gt,activated:Gt,deactivated:Gt,errorCaptured:Gt,serverPrefetch:Gt,components:ro,directives:ro,watch:lp,provide:Bi,inject:ap};function Bi(e,t){return t?e?function(){return Dt(lt(e)?e.call(this,this):e,lt(t)?t.call(this,this):t)}:t:e}function ap(e,t){return ro(Ul(e),Ul(t))}function Ul(e){if(et(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Gt(e,t){return e?[...new Set([].concat(e,t))]:t}function ro(e,t){return e?Dt(Object.create(null),e,t):t}function ji(e,t){return e?et(e)&&et(t)?[...new Set([...e,...t])]:Dt(Object.create(null),Fi(e),Fi(t??{})):t}function lp(e,t){if(!e)return t;if(!t)return e;const s=Dt(Object.create(null),e);for(const o in t)s[o]=Gt(e[o],t[o]);return s}function uu(){return{app:null,config:{isNativeTag:vc,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 ip=0;function rp(e,t){return function(o,a=null){lt(o)||(o=Dt({},o)),a!=null&&!gt(a)&&(a=null);const l=uu(),i=new WeakSet,r=[];let c=!1;const d=l.app={_uid:ip++,_component:o,_props:a,_container:null,_context:l,_instance:null,version:qp,get config(){return l.config},set config(p){},use(p,...v){return i.has(p)||(p&&lt(p.install)?(i.add(p),p.install(d,...v)):lt(p)&&(i.add(p),p(d,...v))),d},mixin(p){return l.mixins.includes(p)||l.mixins.push(p),d},component(p,v){return v?(l.components[p]=v,d):l.components[p]},directive(p,v){return v?(l.directives[p]=v,d):l.directives[p]},mount(p,v,g){if(!c){const _=d._ceVNode||m(o,a);return _.appContext=l,g===!0?g="svg":g===!1&&(g=void 0),e(_,p,g),c=!0,d._container=p,p.__vue_app__=d,Pa(_.component)}},onUnmount(p){r.push(p)},unmount(){c&&(bs(r,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(p,v){return l.provides[p]=v,d},runWithContext(p){const v=Un;Un=d;try{return p()}finally{Un=v}}};return d}}let Un=null;function Yo(e,t){if(qt){let s=qt.provides;const o=qt.parent&&qt.parent.provides;o===s&&(s=qt.provides=Object.create(o)),s[e]=t}}function hs(e,t,s=!1){const o=Ma();if(o||Un){let a=Un?Un._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(a&&e in a)return a[e];if(arguments.length>1)return s&&lt(t)?t.call(o&&o.proxy):t}}const du={},fu=()=>Object.create(du),pu=e=>Object.getPrototypeOf(e)===du;function cp(e,t,s,o=!1){const a={},l=fu();e.propsDefaults=Object.create(null),vu(e,t,a,l);for(const i in e.propsOptions[0])i in a||(a[i]=void 0);s?e.props=o?a:Lc(a):e.type.props?e.props=a:e.props=l,e.attrs=l}function up(e,t,s,o){const{props:a,attrs:l,vnode:{patchFlag:i}}=e,r=ct(a),[c]=e.propsOptions;let d=!1;if((o||i>0)&&!(i&16)){if(i&8){const p=e.vnode.dynamicProps;for(let v=0;v<p.length;v++){let g=p[v];if(Da(e.emitsOptions,g))continue;const _=t[g];if(c)if(ht(l,g))_!==l[g]&&(l[g]=_,d=!0);else{const w=us(g);a[w]=Dl(c,r,w,_,e,!1)}else _!==l[g]&&(l[g]=_,d=!0)}}}else{vu(e,t,a,l)&&(d=!0);let p;for(const v in r)(!t||!ht(t,v)&&((p=tn(v))===v||!ht(t,p)))&&(c?s&&(s[v]!==void 0||s[p]!==void 0)&&(a[v]=Dl(c,r,v,void 0,e,!0)):delete a[v]);if(l!==r)for(const v in l)(!t||!ht(t,v))&&(delete l[v],d=!0)}d&&Ls(e.attrs,"set","")}function vu(e,t,s,o){const[a,l]=e.propsOptions;let i=!1,r;if(t)for(let c in t){if(co(c))continue;const d=t[c];let p;a&&ht(a,p=us(c))?!l||!l.includes(p)?s[p]=d:(r||(r={}))[p]=d:Da(e.emitsOptions,c)||(!(c in o)||d!==o[c])&&(o[c]=d,i=!0)}if(l){const c=ct(s),d=r||bt;for(let p=0;p<l.length;p++){const v=l[p];s[v]=Dl(a,c,v,d[v],e,!ht(d,v))}}return i}function Dl(e,t,s,o,a,l){const i=e[s];if(i!=null){const r=ht(i,"default");if(r&&o===void 0){const c=i.default;if(i.type!==Function&&!i.skipFactory&&lt(c)){const{propsDefaults:d}=a;if(s in d)o=d[s];else{const p=Do(a);o=d[s]=c.call(null,t),p()}}else o=c;a.ce&&a.ce._setProp(s,o)}i[0]&&(l&&!r?o=!1:i[1]&&(o===""||o===tn(s))&&(o=!0))}return o}const dp=new WeakMap;function mu(e,t,s=!1){const o=s?dp:t.propsCache,a=o.get(e);if(a)return a;const l=e.props,i={},r=[];let c=!1;if(!lt(e)){const p=v=>{c=!0;const[g,_]=mu(v,t,!0);Dt(i,g),_&&r.push(..._)};!s&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!l&&!c)return gt(e)&&o.set(e,An),An;if(et(l))for(let p=0;p<l.length;p++){const v=us(l[p]);qi(v)&&(i[v]=bt)}else if(l)for(const p in l){const v=us(p);if(qi(v)){const g=l[p],_=i[v]=et(g)||lt(g)?{type:g}:Dt({},g),w=_.type;let C=!1,$=!0;if(et(w))for(let A=0;A<w.length;++A){const x=w[A],M=lt(x)&&x.name;if(M==="Boolean"){C=!0;break}else M==="String"&&($=!1)}else C=lt(w)&&w.name==="Boolean";_[0]=C,_[1]=$,(C||ht(_,"default"))&&r.push(v)}}const d=[i,r];return gt(e)&&o.set(e,d),d}function qi(e){return e[0]!=="$"&&!co(e)}const ui=e=>e==="_"||e==="_ctx"||e==="$stable",di=e=>et(e)?e.map(Ts):[Ts(e)],fp=(e,t,s)=>{if(t._n)return t;const o=pt((...a)=>di(t(...a)),s);return o._c=!1,o},hu=(e,t,s)=>{const o=e._ctx;for(const a in e){if(ui(a))continue;const l=e[a];if(lt(l))t[a]=fp(a,l,o);else if(l!=null){const i=di(l);t[a]=()=>i}}},gu=(e,t)=>{const s=di(t);e.slots.default=()=>s},yu=(e,t,s)=>{for(const o in t)(s||!ui(o))&&(e[o]=t[o])},pp=(e,t,s)=>{const o=e.slots=fu();if(e.vnode.shapeFlag&32){const a=t._;a?(yu(o,t,s),s&&yc(o,"_",a,!0)):hu(t,o)}else t&&gu(e,t)},vp=(e,t,s)=>{const{vnode:o,slots:a}=e;let l=!0,i=bt;if(o.shapeFlag&32){const r=t._;r?s&&r===1?l=!1:yu(a,t,s):(l=!t.$stable,hu(t,a)),i=t}else t&&(gu(e,t),i={default:1});if(l)for(const r in a)!ui(r)&&i[r]==null&&delete a[r]},Qt=Tp;function mp(e){return hp(e)}function hp(e,t){const s=Aa();s.__VUE__=!0;const{insert:o,remove:a,patchProp:l,createElement:i,createText:r,createComment:c,setText:d,setElementText:p,parentNode:v,nextSibling:g,setScopeId:_=vs,insertStaticContent:w}=e,C=(P,R,S,J=null,ee=null,I=null,y=void 0,N=null,le=!!R.dynamicChildren)=>{if(P===R)return;P&&!dn(P,R)&&(J=ae(P),Re(P,ee,I,!0),P=null),R.patchFlag===-2&&(le=!1,R.dynamicChildren=null);const{type:ie,ref:Me,shapeFlag:Ie}=R;switch(ie){case Na:$(P,R,S,J);break;case jt:A(P,R,S,J);break;case ho:P==null&&x(R,S,J,y);break;case ge:L(P,R,S,J,ee,I,y,N,le);break;default:Ie&1?W(P,R,S,J,ee,I,y,N,le):Ie&6?X(P,R,S,J,ee,I,y,N,le):(Ie&64||Ie&128)&&ie.process(P,R,S,J,ee,I,y,N,le,De)}Me!=null&&ee?vo(Me,P&&P.ref,I,R||P,!R):Me==null&&P&&P.ref!=null&&vo(P.ref,null,I,P,!0)},$=(P,R,S,J)=>{if(P==null)o(R.el=r(R.children),S,J);else{const ee=R.el=P.el;R.children!==P.children&&d(ee,R.children)}},A=(P,R,S,J)=>{P==null?o(R.el=c(R.children||""),S,J):R.el=P.el},x=(P,R,S,J)=>{[P.el,P.anchor]=w(P.children,R,S,J,P.el,P.anchor)},M=({el:P,anchor:R},S,J)=>{let ee;for(;P&&P!==R;)ee=g(P),o(P,S,J),P=ee;o(R,S,J)},K=({el:P,anchor:R})=>{let S;for(;P&&P!==R;)S=g(P),a(P),P=S;a(R)},W=(P,R,S,J,ee,I,y,N,le)=>{if(R.type==="svg"?y="svg":R.type==="math"&&(y="mathml"),P==null)z(R,S,J,ee,I,y,N,le);else{const ie=P.el&&P.el._isVueCE?P.el:null;try{ie&&ie._beginPatch(),q(P,R,ee,I,y,N,le)}finally{ie&&ie._endPatch()}}},z=(P,R,S,J,ee,I,y,N)=>{let le,ie;const{props:Me,shapeFlag:Ie,transition:Le,dirs:He}=P;if(le=P.el=i(P.type,I,Me&&Me.is,Me),Ie&8?p(le,P.children):Ie&16&&V(P.children,le,null,J,ee,cl(P,I),y,N),He&&nn(P,null,J,"created"),re(le,P,P.scopeId,y,J),Me){for(const me in Me)me!=="value"&&!co(me)&&l(le,me,null,Me[me],I,J);"value"in Me&&l(le,"value",null,Me.value,I),(ie=Me.onVnodeBeforeMount)&&Is(ie,J,P)}He&&nn(P,null,J,"beforeMount");const Ge=gp(ee,Le);Ge&&Le.beforeEnter(le),o(le,R,S),((ie=Me&&Me.onVnodeMounted)||Ge||He)&&Qt(()=>{ie&&Is(ie,J,P),Ge&&Le.enter(le),He&&nn(P,null,J,"mounted")},ee)},re=(P,R,S,J,ee)=>{if(S&&_(P,S),J)for(let I=0;I<J.length;I++)_(P,J[I]);if(ee){let I=ee.subTree;if(R===I||$u(I.type)&&(I.ssContent===R||I.ssFallback===R)){const y=ee.vnode;re(P,y,y.scopeId,y.slotScopeIds,ee.parent)}}},V=(P,R,S,J,ee,I,y,N,le=0)=>{for(let ie=le;ie<P.length;ie++){const Me=P[ie]=N?Qs(P[ie]):Ts(P[ie]);C(null,Me,R,S,J,ee,I,y,N)}},q=(P,R,S,J,ee,I,y)=>{const N=R.el=P.el;let{patchFlag:le,dynamicChildren:ie,dirs:Me}=R;le|=P.patchFlag&16;const Ie=P.props||bt,Le=R.props||bt;let He;if(S&&on(S,!1),(He=Le.onVnodeBeforeUpdate)&&Is(He,S,R,P),Me&&nn(R,P,S,"beforeUpdate"),S&&on(S,!0),(Ie.innerHTML&&Le.innerHTML==null||Ie.textContent&&Le.textContent==null)&&p(N,""),ie?Q(P.dynamicChildren,ie,N,S,J,cl(R,ee),I):y||oe(P,R,N,null,S,J,cl(R,ee),I,!1),le>0){if(le&16)E(N,Ie,Le,S,ee);else if(le&2&&Ie.class!==Le.class&&l(N,"class",null,Le.class,ee),le&4&&l(N,"style",Ie.style,Le.style,ee),le&8){const Ge=R.dynamicProps;for(let me=0;me<Ge.length;me++){const Ze=Ge[me],ut=Ie[Ze],dt=Le[Ze];(dt!==ut||Ze==="value")&&l(N,Ze,ut,dt,ee,S)}}le&1&&P.children!==R.children&&p(N,R.children)}else!y&&ie==null&&E(N,Ie,Le,S,ee);((He=Le.onVnodeUpdated)||Me)&&Qt(()=>{He&&Is(He,S,R,P),Me&&nn(R,P,S,"updated")},J)},Q=(P,R,S,J,ee,I,y)=>{for(let N=0;N<R.length;N++){const le=P[N],ie=R[N],Me=le.el&&(le.type===ge||!dn(le,ie)||le.shapeFlag&198)?v(le.el):S;C(le,ie,Me,null,J,ee,I,y,!0)}},E=(P,R,S,J,ee)=>{if(R!==S){if(R!==bt)for(const I in R)!co(I)&&!(I in S)&&l(P,I,R[I],null,ee,J);for(const I in S){if(co(I))continue;const y=S[I],N=R[I];y!==N&&I!=="value"&&l(P,I,N,y,ee,J)}"value"in S&&l(P,"value",R.value,S.value,ee)}},L=(P,R,S,J,ee,I,y,N,le)=>{const ie=R.el=P?P.el:r(""),Me=R.anchor=P?P.anchor:r("");let{patchFlag:Ie,dynamicChildren:Le,slotScopeIds:He}=R;He&&(N=N?N.concat(He):He),P==null?(o(ie,S,J),o(Me,S,J),V(R.children||[],S,Me,ee,I,y,N,le)):Ie>0&&Ie&64&&Le&&P.dynamicChildren?(Q(P.dynamicChildren,Le,S,ee,I,y,N),(R.key!=null||ee&&R===ee.subTree)&&fi(P,R,!0)):oe(P,R,S,Me,ee,I,y,N,le)},X=(P,R,S,J,ee,I,y,N,le)=>{R.slotScopeIds=N,P==null?R.shapeFlag&512?ee.ctx.activate(R,S,J,y,le):O(R,S,J,ee,I,y,le):Y(P,R,le)},O=(P,R,S,J,ee,I,y)=>{const N=P.component=Pp(P,J,ee);if(Ra(P)&&(N.ctx.renderer=De),Lp(N,!1,y),N.asyncDep){if(ee&&ee.registerDep(N,ne,y),!P.el){const le=N.subTree=m(jt);A(null,le,R,S),P.placeholder=le.el}}else ne(N,P,R,S,ee,I,y)},Y=(P,R,S)=>{const J=R.component=P.component;if(Ap(P,R,S))if(J.asyncDep&&!J.asyncResolved){ue(J,R,S);return}else J.next=R,J.update();else R.el=P.el,J.vnode=R},ne=(P,R,S,J,ee,I,y)=>{const N=()=>{if(P.isMounted){let{next:Ie,bu:Le,u:He,parent:Ge,vnode:me}=P;{const St=bu(P);if(St){Ie&&(Ie.el=me.el,ue(P,Ie,y)),St.asyncDep.then(()=>{P.isUnmounted||N()});return}}let Ze=Ie,ut;on(P,!1),Ie?(Ie.el=me.el,ue(P,Ie,y)):Ie=me,Le&&Zo(Le),(ut=Ie.props&&Ie.props.onVnodeBeforeUpdate)&&Is(ut,Ge,Ie,me),on(P,!0);const dt=zi(P),kt=P.subTree;P.subTree=dt,C(kt,dt,v(kt.el),ae(kt),P,ee,I),Ie.el=dt.el,Ze===null&&xp(P,dt.el),He&&Qt(He,ee),(ut=Ie.props&&Ie.props.onVnodeUpdated)&&Qt(()=>Is(ut,Ge,Ie,me),ee)}else{let Ie;const{el:Le,props:He}=R,{bm:Ge,m:me,parent:Ze,root:ut,type:dt}=P,kt=Rn(R);on(P,!1),Ge&&Zo(Ge),!kt&&(Ie=He&&He.onVnodeBeforeMount)&&Is(Ie,Ze,R),on(P,!0);{ut.ce&&ut.ce._def.shadowRoot!==!1&&ut.ce._injectChildStyle(dt);const St=P.subTree=zi(P);C(null,St,S,J,P,ee,I),R.el=St.el}if(me&&Qt(me,ee),!kt&&(Ie=He&&He.onVnodeMounted)){const St=R;Qt(()=>Is(Ie,Ze,St),ee)}(R.shapeFlag&256||Ze&&Rn(Ze.vnode)&&Ze.vnode.shapeFlag&256)&&P.a&&Qt(P.a,ee),P.isMounted=!0,R=S=J=null}};P.scope.on();const le=P.effect=new $c(N);P.scope.off();const ie=P.update=le.run.bind(le),Me=P.job=le.runIfDirty.bind(le);Me.i=P,Me.id=P.uid,le.scheduler=()=>ri(Me),on(P,!0),ie()},ue=(P,R,S)=>{R.component=P;const J=P.vnode.props;P.vnode=R,P.next=null,up(P,R.props,J,S),vp(P,R.children,S),Vs(),Ui(P),Bs()},oe=(P,R,S,J,ee,I,y,N,le=!1)=>{const ie=P&&P.children,Me=P?P.shapeFlag:0,Ie=R.children,{patchFlag:Le,shapeFlag:He}=R;if(Le>0){if(Le&128){je(ie,Ie,S,J,ee,I,y,N,le);return}else if(Le&256){ke(ie,Ie,S,J,ee,I,y,N,le);return}}He&8?(Me&16&&We(ie,ee,I),Ie!==ie&&p(S,Ie)):Me&16?He&16?je(ie,Ie,S,J,ee,I,y,N,le):We(ie,ee,I,!0):(Me&8&&p(S,""),He&16&&V(Ie,S,J,ee,I,y,N,le))},ke=(P,R,S,J,ee,I,y,N,le)=>{P=P||An,R=R||An;const ie=P.length,Me=R.length,Ie=Math.min(ie,Me);let Le;for(Le=0;Le<Ie;Le++){const He=R[Le]=le?Qs(R[Le]):Ts(R[Le]);C(P[Le],He,S,null,ee,I,y,N,le)}ie>Me?We(P,ee,I,!0,!1,Ie):V(R,S,J,ee,I,y,N,le,Ie)},je=(P,R,S,J,ee,I,y,N,le)=>{let ie=0;const Me=R.length;let Ie=P.length-1,Le=Me-1;for(;ie<=Ie&&ie<=Le;){const He=P[ie],Ge=R[ie]=le?Qs(R[ie]):Ts(R[ie]);if(dn(He,Ge))C(He,Ge,S,null,ee,I,y,N,le);else break;ie++}for(;ie<=Ie&&ie<=Le;){const He=P[Ie],Ge=R[Le]=le?Qs(R[Le]):Ts(R[Le]);if(dn(He,Ge))C(He,Ge,S,null,ee,I,y,N,le);else break;Ie--,Le--}if(ie>Ie){if(ie<=Le){const He=Le+1,Ge=He<Me?R[He].el:J;for(;ie<=Le;)C(null,R[ie]=le?Qs(R[ie]):Ts(R[ie]),S,Ge,ee,I,y,N,le),ie++}}else if(ie>Le)for(;ie<=Ie;)Re(P[ie],ee,I,!0),ie++;else{const He=ie,Ge=ie,me=new Map;for(ie=Ge;ie<=Le;ie++){const U=R[ie]=le?Qs(R[ie]):Ts(R[ie]);U.key!=null&&me.set(U.key,ie)}let Ze,ut=0;const dt=Le-Ge+1;let kt=!1,St=0;const he=new Array(dt);for(ie=0;ie<dt;ie++)he[ie]=0;for(ie=He;ie<=Ie;ie++){const U=P[ie];if(ut>=dt){Re(U,ee,I,!0);continue}let F;if(U.key!=null)F=me.get(U.key);else for(Ze=Ge;Ze<=Le;Ze++)if(he[Ze-Ge]===0&&dn(U,R[Ze])){F=Ze;break}F===void 0?Re(U,ee,I,!0):(he[F-Ge]=ie+1,F>=St?St=F:kt=!0,C(U,R[F],S,null,ee,I,y,N,le),ut++)}const j=kt?yp(he):An;for(Ze=j.length-1,ie=dt-1;ie>=0;ie--){const U=Ge+ie,F=R[U],G=R[U+1],pe=U+1<Me?G.el||G.placeholder:J;he[ie]===0?C(null,F,S,pe,ee,I,y,N,le):kt&&(Ze<0||ie!==j[Ze]?ze(F,S,pe,2):Ze--)}}},ze=(P,R,S,J,ee=null)=>{const{el:I,type:y,transition:N,children:le,shapeFlag:ie}=P;if(ie&6){ze(P.component.subTree,R,S,J);return}if(ie&128){P.suspense.move(R,S,J);return}if(ie&64){y.move(P,R,S,De);return}if(y===ge){o(I,R,S);for(let Ie=0;Ie<le.length;Ie++)ze(le[Ie],R,S,J);o(P.anchor,R,S);return}if(y===ho){M(P,R,S);return}if(J!==2&&ie&1&&N)if(J===0)N.beforeEnter(I),o(I,R,S),Qt(()=>N.enter(I),ee);else{const{leave:Ie,delayLeave:Le,afterLeave:He}=N,Ge=()=>{P.ctx.isUnmounted?a(I):o(I,R,S)},me=()=>{I._isLeaving&&I[Ps](!0),Ie(I,()=>{Ge(),He&&He()})};Le?Le(I,Ge,me):me()}else o(I,R,S)},Re=(P,R,S,J=!1,ee=!1)=>{const{type:I,props:y,ref:N,children:le,dynamicChildren:ie,shapeFlag:Me,patchFlag:Ie,dirs:Le,cacheIndex:He}=P;if(Ie===-2&&(ee=!1),N!=null&&(Vs(),vo(N,null,S,P,!0),Bs()),He!=null&&(R.renderCache[He]=void 0),Me&256){R.ctx.deactivate(P);return}const Ge=Me&1&&Le,me=!Rn(P);let Ze;if(me&&(Ze=y&&y.onVnodeBeforeUnmount)&&Is(Ze,R,P),Me&6)Je(P.component,S,J);else{if(Me&128){P.suspense.unmount(S,J);return}Ge&&nn(P,null,R,"beforeUnmount"),Me&64?P.type.remove(P,R,S,De,J):ie&&!ie.hasOnce&&(I!==ge||Ie>0&&Ie&64)?We(ie,R,S,!1,!0):(I===ge&&Ie&384||!ee&&Me&16)&&We(le,R,S),J&&we(P)}(me&&(Ze=y&&y.onVnodeUnmounted)||Ge)&&Qt(()=>{Ze&&Is(Ze,R,P),Ge&&nn(P,null,R,"unmounted")},S)},we=P=>{const{type:R,el:S,anchor:J,transition:ee}=P;if(R===ge){Ne(S,J);return}if(R===ho){K(P);return}const I=()=>{a(S),ee&&!ee.persisted&&ee.afterLeave&&ee.afterLeave()};if(P.shapeFlag&1&&ee&&!ee.persisted){const{leave:y,delayLeave:N}=ee,le=()=>y(S,I);N?N(P.el,I,le):le()}else I()},Ne=(P,R)=>{let S;for(;P!==R;)S=g(P),a(P),P=S;a(R)},Je=(P,R,S)=>{const{bum:J,scope:ee,job:I,subTree:y,um:N,m:le,a:ie}=P;Hi(le),Hi(ie),J&&Zo(J),ee.stop(),I&&(I.flags|=8,Re(y,P,R,S)),N&&Qt(N,R),Qt(()=>{P.isUnmounted=!0},R)},We=(P,R,S,J=!1,ee=!1,I=0)=>{for(let y=I;y<P.length;y++)Re(P[y],R,S,J,ee)},ae=P=>{if(P.shapeFlag&6)return ae(P.component.subTree);if(P.shapeFlag&128)return P.suspense.next();const R=g(P.anchor||P.el),S=R&&R[Kc];return S?g(S):R};let xe=!1;const be=(P,R,S)=>{P==null?R._vnode&&Re(R._vnode,null,null,!0):C(R._vnode||null,P,R,null,null,null,S),R._vnode=P,xe||(xe=!0,Ui(),Hc(),xe=!1)},De={p:C,um:Re,m:ze,r:we,mt:O,mc:V,pc:oe,pbc:Q,n:ae,o:e};return{render:be,hydrate:void 0,createApp:rp(be)}}function cl({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 on({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function gp(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function fi(e,t,s=!1){const o=e.children,a=t.children;if(et(o)&&et(a))for(let l=0;l<o.length;l++){const i=o[l];let r=a[l];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=a[l]=Qs(a[l]),r.el=i.el),!s&&r.patchFlag!==-2&&fi(i,r)),r.type===Na&&r.patchFlag!==-1&&(r.el=i.el),r.type===jt&&!r.el&&(r.el=i.el)}}function yp(e){const t=e.slice(),s=[0];let o,a,l,i,r;const c=e.length;for(o=0;o<c;o++){const d=e[o];if(d!==0){if(a=s[s.length-1],e[a]<d){t[o]=a,s.push(o);continue}for(l=0,i=s.length-1;l<i;)r=l+i>>1,e[s[r]]<d?l=r+1:i=r;d<e[s[l]]&&(l>0&&(t[o]=s[l-1]),s[l]=o)}}for(l=s.length,i=s[l-1];l-- >0;)s[l]=i,i=t[i];return s}function bu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:bu(t)}function Hi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const bp=Symbol.for("v-scx"),_p=()=>hs(bp);function at(e,t,s){return _u(e,t,s)}function _u(e,t,s=bt){const{immediate:o,deep:a,flush:l,once:i}=s,r=Dt({},s),c=t&&o||!t&&l!=="post";let d;if(So){if(l==="sync"){const _=_p();d=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=vs,_.resume=vs,_.pause=vs,_}}const p=qt;r.call=(_,w,C)=>bs(_,p,w,C);let v=!1;l==="post"?r.scheduler=_=>{Qt(_,p&&p.suspense)}:l!=="sync"&&(v=!0,r.scheduler=(_,w)=>{w?_():ri(_)}),r.augmentJob=_=>{t&&(_.flags|=4),v&&(_.flags|=2,p&&(_.id=p.uid,_.i=p))};const g=Of(e,t,r);return So&&(d?d.push(g):c&&g()),g}function wp(e,t,s){const o=this.proxy,a=xt(e)?e.includes(".")?wu(o,e):()=>o[e]:e.bind(o,o);let l;lt(t)?l=t:(l=t.handler,s=t);const i=Do(this),r=_u(a,l.bind(o),s);return i(),r}function wu(e,t){const s=t.split(".");return()=>{let o=e;for(let a=0;a<s.length&&o;a++)o=o[s[a]];return o}}const kp=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${us(t)}Modifiers`]||e[`${tn(t)}Modifiers`];function $p(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||bt;let a=s;const l=t.startsWith("update:"),i=l&&kp(o,t.slice(7));i&&(i.trim&&(a=s.map(p=>xt(p)?p.trim():p)),i.number&&(a=s.map(Sa)));let r,c=o[r=sl(t)]||o[r=sl(us(t))];!c&&l&&(c=o[r=sl(tn(t))]),c&&bs(c,e,6,a);const d=o[r+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,bs(d,e,6,a)}}const Cp=new WeakMap;function ku(e,t,s=!1){const o=s?Cp:t.emitsCache,a=o.get(e);if(a!==void 0)return a;const l=e.emits;let i={},r=!1;if(!lt(e)){const c=d=>{const p=ku(d,t,!0);p&&(r=!0,Dt(i,p))};!s&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!l&&!r?(gt(e)&&o.set(e,null),null):(et(l)?l.forEach(c=>i[c]=null):Dt(i,l),gt(e)&&o.set(e,i),i)}function Da(e,t){return!e||!$a(t)?!1:(t=t.slice(2).replace(/Once$/,""),ht(e,t[0].toLowerCase()+t.slice(1))||ht(e,tn(t))||ht(e,t))}function zi(e){const{type:t,vnode:s,proxy:o,withProxy:a,propsOptions:[l],slots:i,attrs:r,emit:c,render:d,renderCache:p,props:v,data:g,setupState:_,ctx:w,inheritAttrs:C}=e,$=fa(e);let A,x;try{if(s.shapeFlag&4){const K=a||o,W=K;A=Ts(d.call(W,K,p,v,_,g,w)),x=r}else{const K=t;A=Ts(K.length>1?K(v,{attrs:r,slots:i,emit:c}):K(v,null)),x=t.props?r:Ip(r)}}catch(K){go.length=0,Ea(K,e,1),A=m(jt)}let M=A;if(x&&C!==!1){const K=Object.keys(x),{shapeFlag:W}=M;K.length&&W&7&&(l&&K.some(Zl)&&(x=Sp(x,l)),M=Ys(M,x,!1,!0))}return s.dirs&&(M=Ys(M,null,!1,!0),M.dirs=M.dirs?M.dirs.concat(s.dirs):s.dirs),s.transition&&yn(M,s.transition),A=M,fa($),A}const Ip=e=>{let t;for(const s in e)(s==="class"||s==="style"||$a(s))&&((t||(t={}))[s]=e[s]);return t},Sp=(e,t)=>{const s={};for(const o in e)(!Zl(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function Ap(e,t,s){const{props:o,children:a,component:l}=e,{props:i,children:r,patchFlag:c}=t,d=l.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return o?Wi(o,i,d):!!i;if(c&8){const p=t.dynamicProps;for(let v=0;v<p.length;v++){const g=p[v];if(i[g]!==o[g]&&!Da(d,g))return!0}}}else return(a||r)&&(!r||!r.$stable)?!0:o===i?!1:o?i?Wi(o,i,d):!0:!!i;return!1}function Wi(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let a=0;a<o.length;a++){const l=o[a];if(t[l]!==e[l]&&!Da(s,l))return!0}return!1}function xp({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 $u=e=>e.__isSuspense;function Tp(e,t){t&&t.pendingBranch?et(e)?t.effects.push(...e):t.effects.push(e):qc(e)}const ge=Symbol.for("v-fgt"),Na=Symbol.for("v-txt"),jt=Symbol.for("v-cmt"),ho=Symbol.for("v-stc"),go=[];let os=null;function u(e=!1){go.push(os=e?null:[])}function Ep(){go.pop(),os=go[go.length-1]||null}let Co=1;function ma(e,t=!1){Co+=e,e<0&&os&&t&&(os.hasOnce=!0)}function Cu(e){return e.dynamicChildren=Co>0?os||An:null,Ep(),Co>0&&os&&os.push(e),e}function f(e,t,s,o,a,l){return Cu(n(e,t,s,o,a,l,!0))}function Ke(e,t,s,o,a){return Cu(m(e,t,s,o,a,!0))}function Io(e){return e?e.__v_isVNode===!0:!1}function dn(e,t){return e.type===t.type&&e.key===t.key}const Iu=({key:e})=>e??null,ea=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?xt(e)||zt(e)||lt(e)?{i:Vt,r:e,k:t,f:!!s}:e:null);function n(e,t=null,s=null,o=0,a=null,l=e===ge?0:1,i=!1,r=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Iu(t),ref:t&&ea(t),scopeId:Wc,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:l,patchFlag:o,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Vt};return r?(pi(c,s),l&128&&e.normalize(c)):s&&(c.shapeFlag|=xt(s)?8:16),Co>0&&!i&&os&&(c.patchFlag>0||l&6)&&c.patchFlag!==32&&os.push(c),c}const m=Rp;function Rp(e,t=null,s=null,o=0,a=null,l=!1){if((!e||e===Yf)&&(e=jt),Io(e)){const r=Ys(e,t,!0);return s&&pi(r,s),Co>0&&!l&&os&&(r.shapeFlag&6?os[os.indexOf(e)]=r:os.push(r)),r.patchFlag=-2,r}if(jp(e)&&(e=e.__vccOpts),t){t=Up(t);let{class:r,style:c}=t;r&&!xt(r)&&(t.class=$e(r)),gt(c)&&(ii(c)&&!et(c)&&(c=Dt({},c)),t.style=Lt(c))}const i=xt(e)?1:$u(e)?128:Gc(e)?64:gt(e)?4:lt(e)?2:0;return n(e,t,s,o,a,i,l,!0)}function Up(e){return e?ii(e)||pu(e)?Dt({},e):e:null}function Ys(e,t,s=!1,o=!1){const{props:a,ref:l,patchFlag:i,children:r,transition:c}=e,d=t?Dp(a||{},t):a,p={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Iu(d),ref:t&&t.ref?s&&l?et(l)?l.concat(ea(t)):[l,ea(t)]:ea(t):l,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!==ge?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&&Ys(e.ssContent),ssFallback:e.ssFallback&&Ys(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&o&&yn(p,c.clone(p)),p}function Ce(e=" ",t=0){return m(Na,null,e,t)}function ha(e,t){const s=m(ho,null,e);return s.staticCount=t,s}function T(e="",t=!1){return t?(u(),Ke(jt,null,e)):m(jt,null,e)}function Ts(e){return e==null||typeof e=="boolean"?m(jt):et(e)?m(ge,null,e.slice()):Io(e)?Qs(e):m(Na,null,String(e))}function Qs(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ys(e)}function pi(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(et(t))s=16;else if(typeof t=="object")if(o&65){const a=t.default;a&&(a._c&&(a._d=!1),pi(e,a()),a._c&&(a._d=!0));return}else{s=32;const a=t._;!a&&!pu(t)?t._ctx=Vt:a===3&&Vt&&(Vt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else lt(t)?(t={default:t,_ctx:Vt},s=32):(t=String(t),o&64?(s=16,t=[Ce(t)]):s=8);e.children=t,e.shapeFlag|=s}function Dp(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const a in o)if(a==="class")t.class!==o.class&&(t.class=$e([t.class,o.class]));else if(a==="style")t.style=Lt([t.style,o.style]);else if($a(a)){const l=t[a],i=o[a];i&&l!==i&&!(et(l)&&l.includes(i))&&(t[a]=l?[].concat(l,i):i)}else a!==""&&(t[a]=o[a])}return t}function Is(e,t,s,o=null){bs(e,t,7,[s,o])}const Np=uu();let Mp=0;function Pp(e,t,s){const o=e.type,a=(t?t.appContext:e.appContext)||Np,l={uid:Mp++,vnode:e,type:o,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new kc(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:mu(o,a),emitsOptions:ku(o,a),emit:null,emitted:null,propsDefaults:bt,inheritAttrs:o.inheritAttrs,ctx:bt,data:bt,props:bt,attrs:bt,slots:bt,refs:bt,setupState:bt,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 l.ctx={_:l},l.root=t?t.root:l,l.emit=$p.bind(null,l),e.ce&&e.ce(l),l}let qt=null;const Ma=()=>qt||Vt;let ga,Nl;{const e=Aa(),t=(s,o)=>{let a;return(a=e[s])||(a=e[s]=[]),a.push(o),l=>{a.length>1?a.forEach(i=>i(l)):a[0](l)}};ga=t("__VUE_INSTANCE_SETTERS__",s=>qt=s),Nl=t("__VUE_SSR_SETTERS__",s=>So=s)}const Do=e=>{const t=qt;return ga(e),e.scope.on(),()=>{e.scope.off(),ga(t)}},Ki=()=>{qt&&qt.scope.off(),ga(null)};function Su(e){return e.vnode.shapeFlag&4}let So=!1;function Lp(e,t=!1,s=!1){t&&Nl(t);const{props:o,children:a}=e.vnode,l=Su(e);cp(e,o,l,t),pp(e,a,s||t);const i=l?Op(e,t):void 0;return t&&Nl(!1),i}function Op(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,tp);const{setup:o}=s;if(o){Vs();const a=e.setupContext=o.length>1?Vp(e):null,l=Do(e),i=Uo(o,e,0,[e.props,a]),r=mc(i);if(Bs(),l(),(r||e.sp)&&!Rn(e)&&su(e),r){if(i.then(Ki,Ki),t)return i.then(c=>{Gi(e,c)}).catch(c=>{Ea(c,e,0)});e.asyncDep=i}else Gi(e,i)}else Au(e)}function Gi(e,t,s){lt(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:gt(t)&&(e.setupState=Vc(t)),Au(e)}function Au(e,t,s){const o=e.type;e.render||(e.render=o.render||vs);{const a=Do(e);Vs();try{sp(e)}finally{Bs(),a()}}}const Fp={get(e,t){return Bt(e,"get",""),e[t]}};function Vp(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Fp),slots:e.slots,emit:e.emit,expose:t}}function Pa(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Vc(Oc(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in mo)return mo[s](e)},has(t,s){return s in t||s in mo}})):e.proxy}function Bp(e,t=!0){return lt(e)?e.displayName||e.name:e.name||t&&e.__name}function jp(e){return lt(e)&&"__vccOpts"in e}const ve=(e,t)=>Pf(e,t,So);function Ao(e,t,s){try{ma(-1);const o=arguments.length;return o===2?gt(t)&&!et(t)?Io(t)?m(e,null,[t]):m(e,t):m(e,null,t):(o>3?s=Array.prototype.slice.call(arguments,2):o===3&&Io(s)&&(s=[s]),m(e,t,s))}finally{ma(1)}}const qp="3.5.24";/**
* @vue/runtime-dom v3.5.24
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Ml;const Qi=typeof window<"u"&&window.trustedTypes;if(Qi)try{Ml=Qi.createPolicy("vue",{createHTML:e=>e})}catch{}const xu=Ml?e=>Ml.createHTML(e):e=>e,Hp="http://www.w3.org/2000/svg",zp="http://www.w3.org/1998/Math/MathML",Ms=typeof document<"u"?document:null,Ji=Ms&&Ms.createElement("template"),Wp={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 a=t==="svg"?Ms.createElementNS(Hp,e):t==="mathml"?Ms.createElementNS(zp,e):s?Ms.createElement(e,{is:s}):Ms.createElement(e);return e==="select"&&o&&o.multiple!=null&&a.setAttribute("multiple",o.multiple),a},createText:e=>Ms.createTextNode(e),createComment:e=>Ms.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ms.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,a,l){const i=s?s.previousSibling:t.lastChild;if(a&&(a===l||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),s),!(a===l||!(a=a.nextSibling)););else{Ji.innerHTML=xu(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const r=Ji.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]}},zs="transition",Yn="animation",Mn=Symbol("_vtc"),Tu={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},Eu=Dt({},Xc,Tu),Kp=e=>(e.displayName="Transition",e.props=Eu,e),It=Kp((e,{slots:t})=>Ao(qf,Ru(e),t)),an=(e,t=[])=>{et(e)?e.forEach(s=>s(...t)):e&&e(...t)},Zi=e=>e?et(e)?e.some(t=>t.length>1):e.length>1:!1;function Ru(e){const t={};for(const L in e)L in Tu||(t[L]=e[L]);if(e.css===!1)return t;const{name:s="v",type:o,duration:a,enterFromClass:l=`${s}-enter-from`,enterActiveClass:i=`${s}-enter-active`,enterToClass:r=`${s}-enter-to`,appearFromClass:c=l,appearActiveClass:d=i,appearToClass:p=r,leaveFromClass:v=`${s}-leave-from`,leaveActiveClass:g=`${s}-leave-active`,leaveToClass:_=`${s}-leave-to`}=e,w=Gp(a),C=w&&w[0],$=w&&w[1],{onBeforeEnter:A,onEnter:x,onEnterCancelled:M,onLeave:K,onLeaveCancelled:W,onBeforeAppear:z=A,onAppear:re=x,onAppearCancelled:V=M}=t,q=(L,X,O,Y)=>{L._enterCancelled=Y,Ks(L,X?p:r),Ks(L,X?d:i),O&&O()},Q=(L,X)=>{L._isLeaving=!1,Ks(L,v),Ks(L,_),Ks(L,g),X&&X()},E=L=>(X,O)=>{const Y=L?re:x,ne=()=>q(X,L,O);an(Y,[X,ne]),Xi(()=>{Ks(X,L?c:l),As(X,L?p:r),Zi(Y)||Yi(X,o,C,ne)})};return Dt(t,{onBeforeEnter(L){an(A,[L]),As(L,l),As(L,i)},onBeforeAppear(L){an(z,[L]),As(L,c),As(L,d)},onEnter:E(!1),onAppear:E(!0),onLeave(L,X){L._isLeaving=!0;const O=()=>Q(L,X);As(L,v),L._enterCancelled?(As(L,g),Pl(L)):(Pl(L),As(L,g)),Xi(()=>{L._isLeaving&&(Ks(L,v),As(L,_),Zi(K)||Yi(L,o,$,O))}),an(K,[L,O])},onEnterCancelled(L){q(L,!1,void 0,!0),an(M,[L])},onAppearCancelled(L){q(L,!0,void 0,!0),an(V,[L])},onLeaveCancelled(L){Q(L),an(W,[L])}})}function Gp(e){if(e==null)return null;if(gt(e))return[ul(e.enter),ul(e.leave)];{const t=ul(e);return[t,t]}}function ul(e){return nf(e)}function As(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.add(s)),(e[Mn]||(e[Mn]=new Set)).add(t)}function Ks(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const s=e[Mn];s&&(s.delete(t),s.size||(e[Mn]=void 0))}function Xi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Qp=0;function Yi(e,t,s,o){const a=e._endId=++Qp,l=()=>{a===e._endId&&o()};if(s!=null)return setTimeout(l,s);const{type:i,timeout:r,propCount:c}=Uu(e,t);if(!i)return o();const d=i+"end";let p=0;const v=()=>{e.removeEventListener(d,g),l()},g=_=>{_.target===e&&++p>=c&&v()};setTimeout(()=>{p<c&&v()},r+1),e.addEventListener(d,g)}function Uu(e,t){const s=window.getComputedStyle(e),o=w=>(s[w]||"").split(", "),a=o(`${zs}Delay`),l=o(`${zs}Duration`),i=er(a,l),r=o(`${Yn}Delay`),c=o(`${Yn}Duration`),d=er(r,c);let p=null,v=0,g=0;t===zs?i>0&&(p=zs,v=i,g=l.length):t===Yn?d>0&&(p=Yn,v=d,g=c.length):(v=Math.max(i,d),p=v>0?i>d?zs:Yn:null,g=p?p===zs?l.length:c.length:0);const _=p===zs&&/\b(?:transform|all)(?:,|$)/.test(o(`${zs}Property`).toString());return{type:p,timeout:v,propCount:g,hasTransform:_}}function er(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((s,o)=>tr(s)+tr(e[o])))}function tr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Pl(e){return(e?e.ownerDocument:document).body.offsetHeight}function Jp(e,t,s){const o=e[Mn];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const ya=Symbol("_vod"),Du=Symbol("_vsh"),gs={name:"show",beforeMount(e,{value:t},{transition:s}){e[ya]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):eo(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),eo(e,!0),o.enter(e)):o.leave(e,()=>{eo(e,!1)}):eo(e,t))},beforeUnmount(e,{value:t}){eo(e,t)}};function eo(e,t){e.style.display=t?e[ya]:"none",e[Du]=!t}const Nu=Symbol("");function Zp(e){const t=Ma();if(!t)return;const s=t.ut=(a=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(l=>ba(l,a))},o=()=>{const a=e(t.proxy);t.ce?ba(t.ce,a):Ll(t.subTree,a),s(a)};ou(()=>{qc(o)}),vt(()=>{at(o,vs,{flush:"post"});const a=new MutationObserver(o);a.observe(t.subTree.el.parentNode,{childList:!0}),Wt(()=>a.disconnect())})}function Ll(e,t){if(e.shapeFlag&128){const s=e.suspense;e=s.activeBranch,s.pendingBranch&&!s.isHydrating&&s.effects.push(()=>{Ll(s.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)ba(e.el,t);else if(e.type===ge)e.children.forEach(s=>Ll(s,t));else if(e.type===ho){let{el:s,anchor:o}=e;for(;s&&(ba(s,t),s!==o);)s=s.nextSibling}}function ba(e,t){if(e.nodeType===1){const s=e.style;let o="";for(const a in t){const l=ff(t[a]);s.setProperty(`--${a}`,l),o+=`--${a}: ${l};`}s[Nu]=o}}const Xp=/(?:^|;)\s*display\s*:/;function Yp(e,t,s){const o=e.style,a=xt(s);let l=!1;if(s&&!a){if(t)if(xt(t))for(const i of t.split(";")){const r=i.slice(0,i.indexOf(":")).trim();s[r]==null&&ta(o,r,"")}else for(const i in t)s[i]==null&&ta(o,i,"");for(const i in s)i==="display"&&(l=!0),ta(o,i,s[i])}else if(a){if(t!==s){const i=o[Nu];i&&(s+=";"+i),o.cssText=s,l=Xp.test(s)}}else t&&e.removeAttribute("style");ya in e&&(e[ya]=l?o.display:"",e[Du]&&(o.display="none"))}const sr=/\s*!important$/;function ta(e,t,s){if(et(s))s.forEach(o=>ta(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=ev(e,t);sr.test(s)?e.setProperty(tn(o),s.replace(sr,""),"important"):e[o]=s}}const nr=["Webkit","Moz","ms"],dl={};function ev(e,t){const s=dl[t];if(s)return s;let o=us(t);if(o!=="filter"&&o in e)return dl[t]=o;o=Ia(o);for(let a=0;a<nr.length;a++){const l=nr[a]+o;if(l in e)return dl[t]=l}return t}const or="http://www.w3.org/1999/xlink";function ar(e,t,s,o,a,l=uf(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(or,t.slice(6,t.length)):e.setAttributeNS(or,t,s):s==null||l&&!bc(s)?e.removeAttribute(t):e.setAttribute(t,l?"":ys(s)?String(s):s)}function lr(e,t,s,o,a){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?xu(s):s);return}const l=e.tagName;if(t==="value"&&l!=="PROGRESS"&&!l.includes("-")){const r=l==="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=bc(s):s==null&&r==="string"?(s="",i=!0):r==="number"&&(s=0,i=!0)}try{e[t]=s}catch{}i&&e.removeAttribute(a||t)}function Fs(e,t,s,o){e.addEventListener(t,s,o)}function tv(e,t,s,o){e.removeEventListener(t,s,o)}const ir=Symbol("_vei");function sv(e,t,s,o,a=null){const l=e[ir]||(e[ir]={}),i=l[t];if(o&&i)i.value=o;else{const[r,c]=nv(t);if(o){const d=l[t]=lv(o,a);Fs(e,r,d,c)}else i&&(tv(e,r,i,c),l[t]=void 0)}}const rr=/(?:Once|Passive|Capture)$/;function nv(e){let t;if(rr.test(e)){t={};let o;for(;o=e.match(rr);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):tn(e.slice(2)),t]}let fl=0;const ov=Promise.resolve(),av=()=>fl||(ov.then(()=>fl=0),fl=Date.now());function lv(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;bs(iv(o,s.value),t,5,[o])};return s.value=e,s.attached=av(),s}function iv(e,t){if(et(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>a=>!a._stopped&&o&&o(a))}else return t}const cr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,rv=(e,t,s,o,a,l)=>{const i=a==="svg";t==="class"?Jp(e,o,i):t==="style"?Yp(e,s,o):$a(t)?Zl(t)||sv(e,t,s,o,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):cv(e,t,o,i))?(lr(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ar(e,t,o,i,l,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!xt(o))?lr(e,us(t),o,l,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),ar(e,t,o,i))};function cv(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&cr(t)&&lt(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return cr(t)&&xt(s)?!1:t in e}const Mu=new WeakMap,Pu=new WeakMap,_a=Symbol("_moveCb"),ur=Symbol("_enterCb"),uv=e=>(delete e.props.mode,e),dv=uv({name:"TransitionGroup",props:Dt({},Eu,{tag:String,moveClass:String}),setup(e,{slots:t}){const s=Ma(),o=Zc();let a,l;return au(()=>{if(!a.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!mv(a[0].el,s.vnode.el,i)){a=[];return}a.forEach(fv),a.forEach(pv);const r=a.filter(vv);Pl(s.vnode.el),r.forEach(c=>{const d=c.el,p=d.style;As(d,i),p.transform=p.webkitTransform=p.transitionDuration="";const v=d[_a]=g=>{g&&g.target!==d||(!g||g.propertyName.endsWith("transform"))&&(d.removeEventListener("transitionend",v),d[_a]=null,Ks(d,i))};d.addEventListener("transitionend",v)}),a=[]}),()=>{const i=ct(e),r=Ru(i);let c=i.tag||ge;if(a=[],l)for(let d=0;d<l.length;d++){const p=l[d];p.el&&p.el instanceof Element&&(a.push(p),yn(p,$o(p,r,o,s)),Mu.set(p,{left:p.el.offsetLeft,top:p.el.offsetTop}))}l=t.default?ci(t.default()):[];for(let d=0;d<l.length;d++){const p=l[d];p.key!=null&&yn(p,$o(p,r,o,s))}return m(c,null,l)}}}),Lu=dv;function fv(e){const t=e.el;t[_a]&&t[_a](),t[ur]&&t[ur]()}function pv(e){Pu.set(e,{left:e.el.offsetLeft,top:e.el.offsetTop})}function vv(e){const t=Mu.get(e),s=Pu.get(e),o=t.left-s.left,a=t.top-s.top;if(o||a){const l=e.el.style;return l.transform=l.webkitTransform=`translate(${o}px,${a}px)`,l.transitionDuration="0s",e}}function mv(e,t,s){const o=e.cloneNode(),a=e[Mn];a&&a.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 l=t.nodeType===1?t:t.parentNode;l.appendChild(o);const{hasTransform:i}=Uu(o);return l.removeChild(o),i}const en=e=>{const t=e.props["onUpdate:modelValue"]||!1;return et(t)?s=>Zo(t,s):t};function hv(e){e.target.composing=!0}function dr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const cs=Symbol("_assign");function fr(e,t,s){return t&&(e=e.trim()),s&&(e=Sa(e)),e}const ot={created(e,{modifiers:{lazy:t,trim:s,number:o}},a){e[cs]=en(a);const l=o||a.props&&a.props.type==="number";Fs(e,t?"change":"input",i=>{i.target.composing||e[cs](fr(e.value,s,l))}),(s||l)&&Fs(e,"change",()=>{e.value=fr(e.value,s,l)}),t||(Fs(e,"compositionstart",hv),Fs(e,"compositionend",dr),Fs(e,"change",dr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:a,number:l}},i){if(e[cs]=en(i),e.composing)return;const r=(l||e.type==="number")&&!/^0\d/.test(e.value)?Sa(e.value):e.value,c=t??"";r!==c&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||a&&e.value.trim()===c)||(e.value=c))}},Ou={deep:!0,created(e,t,s){e[cs]=en(s),Fs(e,"change",()=>{const o=e._modelValue,a=Pn(e),l=e.checked,i=e[cs];if(et(o)){const r=ei(o,a),c=r!==-1;if(l&&!c)i(o.concat(a));else if(!l&&c){const d=[...o];d.splice(r,1),i(d)}}else if(Bn(o)){const r=new Set(o);l?r.add(a):r.delete(a),i(r)}else i(Fu(e,l))})},mounted:pr,beforeUpdate(e,t,s){e[cs]=en(s),pr(e,t,s)}};function pr(e,{value:t,oldValue:s},o){e._modelValue=t;let a;if(et(t))a=ei(t,o.props.value)>-1;else if(Bn(t))a=t.has(o.props.value);else{if(t===s)return;a=gn(t,Fu(e,!0))}e.checked!==a&&(e.checked=a)}const gv={created(e,{value:t},s){e.checked=gn(t,s.props.value),e[cs]=en(s),Fs(e,"change",()=>{e[cs](Pn(e))})},beforeUpdate(e,{value:t,oldValue:s},o){e[cs]=en(o),t!==s&&(e.checked=gn(t,o.props.value))}},vi={deep:!0,created(e,{value:t,modifiers:{number:s}},o){const a=Bn(t);Fs(e,"change",()=>{const l=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>s?Sa(Pn(i)):Pn(i));e[cs](e.multiple?a?new Set(l):l:l[0]),e._assigning=!0,Ct(()=>{e._assigning=!1})}),e[cs]=en(o)},mounted(e,{value:t}){vr(e,t)},beforeUpdate(e,t,s){e[cs]=en(s)},updated(e,{value:t}){e._assigning||vr(e,t)}};function vr(e,t){const s=e.multiple,o=et(t);if(!(s&&!o&&!Bn(t))){for(let a=0,l=e.options.length;a<l;a++){const i=e.options[a],r=Pn(i);if(s)if(o){const c=typeof r;c==="string"||c==="number"?i.selected=t.some(d=>String(d)===String(r)):i.selected=ei(t,r)>-1}else i.selected=t.has(r);else if(gn(Pn(i),t)){e.selectedIndex!==a&&(e.selectedIndex=a);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Pn(e){return"_value"in e?e._value:e.value}function Fu(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const yv={created(e,t,s){Go(e,t,s,null,"created")},mounted(e,t,s){Go(e,t,s,null,"mounted")},beforeUpdate(e,t,s,o){Go(e,t,s,o,"beforeUpdate")},updated(e,t,s,o){Go(e,t,s,o,"updated")}};function bv(e,t){switch(e){case"SELECT":return vi;case"TEXTAREA":return ot;default:switch(t){case"checkbox":return Ou;case"radio":return gv;default:return ot}}}function Go(e,t,s,o,a){const i=bv(e.tagName,s.props&&s.props.type)[a];i&&i(e,t,s,o)}const _v=["ctrl","shift","alt","meta"],wv={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)=>_v.some(s=>e[`${s}Key`]&&!t.includes(s))},Be=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(a,...l)=>{for(let i=0;i<t.length;i++){const r=wv[t[i]];if(r&&r(a,t))return}return e(a,...l)})},kv={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},mn=(e,t)=>{const s=e._withKeys||(e._withKeys={}),o=t.join(".");return s[o]||(s[o]=a=>{if(!("key"in a))return;const l=tn(a.key);if(t.some(i=>i===l||kv[i]===l))return e(a)})},$v=Dt({patchProp:rv},Wp);let mr;function Cv(){return mr||(mr=mp($v))}const Iv=(...e)=>{const t=Cv().createApp(...e),{mount:s}=t;return t.mount=o=>{const a=Av(o);if(!a)return;const l=t._component;!lt(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const i=s(a,!1,Sv(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),i},t};function Sv(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Av(e){return xt(e)?document.querySelector(e):e}/*!
* pinia v2.3.1
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/const xv=Symbol();var hr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(hr||(hr={}));function Tv(){const e=pf(!0),t=e.run(()=>k({}));let s=[],o=[];const a=Oc({install(l){a._a=l,l.provide(xv,a),l.config.globalProperties.$pinia=a,o.forEach(i=>s.push(i)),o=[]},use(l){return this._a?s.push(l):o.push(l),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return a}function Vu(e,t){return function(){return e.apply(t,arguments)}}const{toString:Ev}=Object.prototype,{getPrototypeOf:mi}=Object,{iterator:La,toStringTag:Bu}=Symbol,Oa=(e=>t=>{const s=Ev.call(t);return e[s]||(e[s]=s.slice(8,-1).toLowerCase())})(Object.create(null)),ws=e=>(e=e.toLowerCase(),t=>Oa(t)===e),Fa=e=>t=>typeof t===e,{isArray:qn}=Array,Ln=Fa("undefined");function No(e){return e!==null&&!Ln(e)&&e.constructor!==null&&!Ln(e.constructor)&&es(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const ju=ws("ArrayBuffer");function Rv(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&ju(e.buffer),t}const Uv=Fa("string"),es=Fa("function"),qu=Fa("number"),Mo=e=>e!==null&&typeof e=="object",Dv=e=>e===!0||e===!1,sa=e=>{if(Oa(e)!=="object")return!1;const t=mi(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Bu in e)&&!(La in e)},Nv=e=>{if(!Mo(e)||No(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Mv=ws("Date"),Pv=ws("File"),Lv=ws("Blob"),Ov=ws("FileList"),Fv=e=>Mo(e)&&es(e.pipe),Vv=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||es(e.append)&&((t=Oa(e))==="formdata"||t==="object"&&es(e.toString)&&e.toString()==="[object FormData]"))},Bv=ws("URLSearchParams"),[jv,qv,Hv,zv]=["ReadableStream","Request","Response","Headers"].map(ws),Wv=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Po(e,t,{allOwnKeys:s=!1}={}){if(e===null||typeof e>"u")return;let o,a;if(typeof e!="object"&&(e=[e]),qn(e))for(o=0,a=e.length;o<a;o++)t.call(null,e[o],o,e);else{if(No(e))return;const l=s?Object.getOwnPropertyNames(e):Object.keys(e),i=l.length;let r;for(o=0;o<i;o++)r=l[o],t.call(null,e[r],r,e)}}function Hu(e,t){if(No(e))return null;t=t.toLowerCase();const s=Object.keys(e);let o=s.length,a;for(;o-- >0;)if(a=s[o],t===a.toLowerCase())return a;return null}const fn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,zu=e=>!Ln(e)&&e!==fn;function Ol(){const{caseless:e,skipUndefined:t}=zu(this)&&this||{},s={},o=(a,l)=>{const i=e&&Hu(s,l)||l;sa(s[i])&&sa(a)?s[i]=Ol(s[i],a):sa(a)?s[i]=Ol({},a):qn(a)?s[i]=a.slice():(!t||!Ln(a))&&(s[i]=a)};for(let a=0,l=arguments.length;a<l;a++)arguments[a]&&Po(arguments[a],o);return s}const Kv=(e,t,s,{allOwnKeys:o}={})=>(Po(t,(a,l)=>{s&&es(a)?e[l]=Vu(a,s):e[l]=a},{allOwnKeys:o}),e),Gv=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Qv=(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)},Jv=(e,t,s,o)=>{let a,l,i;const r={};if(t=t||{},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),l=a.length;l-- >0;)i=a[l],(!o||o(i,e,t))&&!r[i]&&(t[i]=e[i],r[i]=!0);e=s!==!1&&mi(e)}while(e&&(!s||s(e,t))&&e!==Object.prototype);return t},Zv=(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},Xv=e=>{if(!e)return null;if(qn(e))return e;let t=e.length;if(!qu(t))return null;const s=new Array(t);for(;t-- >0;)s[t]=e[t];return s},Yv=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&mi(Uint8Array)),em=(e,t)=>{const o=(e&&e[La]).call(e);let a;for(;(a=o.next())&&!a.done;){const l=a.value;t.call(e,l[0],l[1])}},tm=(e,t)=>{let s;const o=[];for(;(s=e.exec(t))!==null;)o.push(s);return o},sm=ws("HTMLFormElement"),nm=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(s,o,a){return o.toUpperCase()+a}),gr=(({hasOwnProperty:e})=>(t,s)=>e.call(t,s))(Object.prototype),om=ws("RegExp"),Wu=(e,t)=>{const s=Object.getOwnPropertyDescriptors(e),o={};Po(s,(a,l)=>{let i;(i=t(a,l,e))!==!1&&(o[l]=i||a)}),Object.defineProperties(e,o)},am=e=>{Wu(e,(t,s)=>{if(es(e)&&["arguments","caller","callee"].indexOf(s)!==-1)return!1;const o=e[s];if(es(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+"'")})}})},lm=(e,t)=>{const s={},o=a=>{a.forEach(l=>{s[l]=!0})};return qn(e)?o(e):o(String(e).split(t)),s},im=()=>{},rm=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function cm(e){return!!(e&&es(e.append)&&e[Bu]==="FormData"&&e[La])}const um=e=>{const t=new Array(10),s=(o,a)=>{if(Mo(o)){if(t.indexOf(o)>=0)return;if(No(o))return o;if(!("toJSON"in o)){t[a]=o;const l=qn(o)?[]:{};return Po(o,(i,r)=>{const c=s(i,a+1);!Ln(c)&&(l[r]=c)}),t[a]=void 0,l}}return o};return s(e,0)},dm=ws("AsyncFunction"),fm=e=>e&&(Mo(e)||es(e))&&es(e.then)&&es(e.catch),Ku=((e,t)=>e?setImmediate:t?((s,o)=>(fn.addEventListener("message",({source:a,data:l})=>{a===fn&&l===s&&o.length&&o.shift()()},!1),a=>{o.push(a),fn.postMessage(s,"*")}))(`axios@${Math.random()}`,[]):s=>setTimeout(s))(typeof setImmediate=="function",es(fn.postMessage)),pm=typeof queueMicrotask<"u"?queueMicrotask.bind(fn):typeof process<"u"&&process.nextTick||Ku,vm=e=>e!=null&&es(e[La]),de={isArray:qn,isArrayBuffer:ju,isBuffer:No,isFormData:Vv,isArrayBufferView:Rv,isString:Uv,isNumber:qu,isBoolean:Dv,isObject:Mo,isPlainObject:sa,isEmptyObject:Nv,isReadableStream:jv,isRequest:qv,isResponse:Hv,isHeaders:zv,isUndefined:Ln,isDate:Mv,isFile:Pv,isBlob:Lv,isRegExp:om,isFunction:es,isStream:Fv,isURLSearchParams:Bv,isTypedArray:Yv,isFileList:Ov,forEach:Po,merge:Ol,extend:Kv,trim:Wv,stripBOM:Gv,inherits:Qv,toFlatObject:Jv,kindOf:Oa,kindOfTest:ws,endsWith:Zv,toArray:Xv,forEachEntry:em,matchAll:tm,isHTMLForm:sm,hasOwnProperty:gr,hasOwnProp:gr,reduceDescriptors:Wu,freezeMethods:am,toObjectSet:lm,toCamelCase:nm,noop:im,toFiniteNumber:rm,findKey:Hu,global:fn,isContextDefined:zu,isSpecCompliantForm:cm,toJSONObject:um,isAsyncFn:dm,isThenable:fm,setImmediate:Ku,asap:pm,isIterable:vm};function it(e,t,s,o,a){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),a&&(this.response=a,this.status=a.status?a.status:null)}de.inherits(it,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:de.toJSONObject(this.config),code:this.code,status:this.status}}});const Gu=it.prototype,Qu={};["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=>{Qu[e]={value:e}});Object.defineProperties(it,Qu);Object.defineProperty(Gu,"isAxiosError",{value:!0});it.from=(e,t,s,o,a,l)=>{const i=Object.create(Gu);de.toFlatObject(e,i,function(p){return p!==Error.prototype},d=>d!=="isAxiosError");const r=e&&e.message?e.message:"Error",c=t==null&&e?e.code:t;return it.call(i,r,c,s,o,a),e&&i.cause==null&&Object.defineProperty(i,"cause",{value:e,configurable:!0}),i.name=e&&e.name||"Error",l&&Object.assign(i,l),i};const mm=null;function Fl(e){return de.isPlainObject(e)||de.isArray(e)}function Ju(e){return de.endsWith(e,"[]")?e.slice(0,-2):e}function yr(e,t,s){return e?e.concat(t).map(function(a,l){return a=Ju(a),!s&&l?"["+a+"]":a}).join(s?".":""):t}function hm(e){return de.isArray(e)&&!e.some(Fl)}const gm=de.toFlatObject(de,{},null,function(t){return/^is[A-Z]/.test(t)});function Va(e,t,s){if(!de.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,s=de.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,function(C,$){return!de.isUndefined($[C])});const o=s.metaTokens,a=s.visitor||p,l=s.dots,i=s.indexes,c=(s.Blob||typeof Blob<"u"&&Blob)&&de.isSpecCompliantForm(t);if(!de.isFunction(a))throw new TypeError("visitor must be a function");function d(w){if(w===null)return"";if(de.isDate(w))return w.toISOString();if(de.isBoolean(w))return w.toString();if(!c&&de.isBlob(w))throw new it("Blob is not supported. Use a Buffer instead.");return de.isArrayBuffer(w)||de.isTypedArray(w)?c&&typeof Blob=="function"?new Blob([w]):Buffer.from(w):w}function p(w,C,$){let A=w;if(w&&!$&&typeof w=="object"){if(de.endsWith(C,"{}"))C=o?C:C.slice(0,-2),w=JSON.stringify(w);else if(de.isArray(w)&&hm(w)||(de.isFileList(w)||de.endsWith(C,"[]"))&&(A=de.toArray(w)))return C=Ju(C),A.forEach(function(M,K){!(de.isUndefined(M)||M===null)&&t.append(i===!0?yr([C],K,l):i===null?C:C+"[]",d(M))}),!1}return Fl(w)?!0:(t.append(yr($,C,l),d(w)),!1)}const v=[],g=Object.assign(gm,{defaultVisitor:p,convertValue:d,isVisitable:Fl});function _(w,C){if(!de.isUndefined(w)){if(v.indexOf(w)!==-1)throw Error("Circular reference detected in "+C.join("."));v.push(w),de.forEach(w,function(A,x){(!(de.isUndefined(A)||A===null)&&a.call(t,A,de.isString(x)?x.trim():x,C,g))===!0&&_(A,C?C.concat(x):[x])}),v.pop()}}if(!de.isObject(e))throw new TypeError("data must be an object");return _(e),t}function br(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(o){return t[o]})}function hi(e,t){this._pairs=[],e&&Va(e,this,t)}const Zu=hi.prototype;Zu.append=function(t,s){this._pairs.push([t,s])};Zu.toString=function(t){const s=t?function(o){return t.call(this,o,br)}:br;return this._pairs.map(function(a){return s(a[0])+"="+s(a[1])},"").join("&")};function ym(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Xu(e,t,s){if(!t)return e;const o=s&&s.encode||ym;de.isFunction(s)&&(s={serialize:s});const a=s&&s.serialize;let l;if(a?l=a(t,s):l=de.isURLSearchParams(t)?t.toString():new hi(t,s).toString(o),l){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+l}return e}class _r{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){de.forEach(this.handlers,function(o){o!==null&&t(o)})}}const Yu={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},bm=typeof URLSearchParams<"u"?URLSearchParams:hi,_m=typeof FormData<"u"?FormData:null,wm=typeof Blob<"u"?Blob:null,km={isBrowser:!0,classes:{URLSearchParams:bm,FormData:_m,Blob:wm},protocols:["http","https","file","blob","url","data"]},gi=typeof window<"u"&&typeof document<"u",Vl=typeof navigator=="object"&&navigator||void 0,$m=gi&&(!Vl||["ReactNative","NativeScript","NS"].indexOf(Vl.product)<0),Cm=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Im=gi&&window.location.href||"http://localhost",Sm=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:gi,hasStandardBrowserEnv:$m,hasStandardBrowserWebWorkerEnv:Cm,navigator:Vl,origin:Im},Symbol.toStringTag,{value:"Module"})),Ht={...Sm,...km};function Am(e,t){return Va(e,new Ht.classes.URLSearchParams,{visitor:function(s,o,a,l){return Ht.isNode&&de.isBuffer(s)?(this.append(o,s.toString("base64")),!1):l.defaultVisitor.apply(this,arguments)},...t})}function xm(e){return de.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Tm(e){const t={},s=Object.keys(e);let o;const a=s.length;let l;for(o=0;o<a;o++)l=s[o],t[l]=e[l];return t}function ed(e){function t(s,o,a,l){let i=s[l++];if(i==="__proto__")return!0;const r=Number.isFinite(+i),c=l>=s.length;return i=!i&&de.isArray(a)?a.length:i,c?(de.hasOwnProp(a,i)?a[i]=[a[i],o]:a[i]=o,!r):((!a[i]||!de.isObject(a[i]))&&(a[i]=[]),t(s,o,a[i],l)&&de.isArray(a[i])&&(a[i]=Tm(a[i])),!r)}if(de.isFormData(e)&&de.isFunction(e.entries)){const s={};return de.forEachEntry(e,(o,a)=>{t(xm(o),a,s,0)}),s}return null}function Em(e,t,s){if(de.isString(e))try{return(t||JSON.parse)(e),de.trim(e)}catch(o){if(o.name!=="SyntaxError")throw o}return(s||JSON.stringify)(e)}const Lo={transitional:Yu,adapter:["xhr","http","fetch"],transformRequest:[function(t,s){const o=s.getContentType()||"",a=o.indexOf("application/json")>-1,l=de.isObject(t);if(l&&de.isHTMLForm(t)&&(t=new FormData(t)),de.isFormData(t))return a?JSON.stringify(ed(t)):t;if(de.isArrayBuffer(t)||de.isBuffer(t)||de.isStream(t)||de.isFile(t)||de.isBlob(t)||de.isReadableStream(t))return t;if(de.isArrayBufferView(t))return t.buffer;if(de.isURLSearchParams(t))return s.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(l){if(o.indexOf("application/x-www-form-urlencoded")>-1)return Am(t,this.formSerializer).toString();if((r=de.isFileList(t))||o.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Va(r?{"files[]":t}:t,c&&new c,this.formSerializer)}}return l||a?(s.setContentType("application/json",!1),Em(t)):t}],transformResponse:[function(t){const s=this.transitional||Lo.transitional,o=s&&s.forcedJSONParsing,a=this.responseType==="json";if(de.isResponse(t)||de.isReadableStream(t))return t;if(t&&de.isString(t)&&(o&&!this.responseType||a)){const i=!(s&&s.silentJSONParsing)&&a;try{return JSON.parse(t,this.parseReviver)}catch(r){if(i)throw r.name==="SyntaxError"?it.from(r,it.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:Ht.classes.FormData,Blob:Ht.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};de.forEach(["delete","get","head","post","put","patch"],e=>{Lo.headers[e]={}});const Rm=de.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"]),Um=e=>{const t={};let s,o,a;return e&&e.split(`
`).forEach(function(i){a=i.indexOf(":"),s=i.substring(0,a).trim().toLowerCase(),o=i.substring(a+1).trim(),!(!s||t[s]&&Rm[s])&&(s==="set-cookie"?t[s]?t[s].push(o):t[s]=[o]:t[s]=t[s]?t[s]+", "+o:o)}),t},wr=Symbol("internals");function to(e){return e&&String(e).trim().toLowerCase()}function na(e){return e===!1||e==null?e:de.isArray(e)?e.map(na):String(e)}function Dm(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 Nm=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function pl(e,t,s,o,a){if(de.isFunction(o))return o.call(this,t,s);if(a&&(t=s),!!de.isString(t)){if(de.isString(o))return t.indexOf(o)!==-1;if(de.isRegExp(o))return o.test(t)}}function Mm(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,s,o)=>s.toUpperCase()+o)}function Pm(e,t){const s=de.toCamelCase(" "+t);["get","set","has"].forEach(o=>{Object.defineProperty(e,o+s,{value:function(a,l,i){return this[o].call(this,t,a,l,i)},configurable:!0})})}let ts=class{constructor(t){t&&this.set(t)}set(t,s,o){const a=this;function l(r,c,d){const p=to(c);if(!p)throw new Error("header name must be a non-empty string");const v=de.findKey(a,p);(!v||a[v]===void 0||d===!0||d===void 0&&a[v]!==!1)&&(a[v||c]=na(r))}const i=(r,c)=>de.forEach(r,(d,p)=>l(d,p,c));if(de.isPlainObject(t)||t instanceof this.constructor)i(t,s);else if(de.isString(t)&&(t=t.trim())&&!Nm(t))i(Um(t),s);else if(de.isObject(t)&&de.isIterable(t)){let r={},c,d;for(const p of t){if(!de.isArray(p))throw TypeError("Object iterator must return a key-value pair");r[d=p[0]]=(c=r[d])?de.isArray(c)?[...c,p[1]]:[c,p[1]]:p[1]}i(r,s)}else t!=null&&l(s,t,o);return this}get(t,s){if(t=to(t),t){const o=de.findKey(this,t);if(o){const a=this[o];if(!s)return a;if(s===!0)return Dm(a);if(de.isFunction(s))return s.call(this,a,o);if(de.isRegExp(s))return s.exec(a);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,s){if(t=to(t),t){const o=de.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 a=!1;function l(i){if(i=to(i),i){const r=de.findKey(o,i);r&&(!s||pl(o,o[r],r,s))&&(delete o[r],a=!0)}}return de.isArray(t)?t.forEach(l):l(t),a}clear(t){const s=Object.keys(this);let o=s.length,a=!1;for(;o--;){const l=s[o];(!t||pl(this,this[l],l,t,!0))&&(delete this[l],a=!0)}return a}normalize(t){const s=this,o={};return de.forEach(this,(a,l)=>{const i=de.findKey(o,l);if(i){s[i]=na(a),delete s[l];return}const r=t?Mm(l):String(l).trim();r!==l&&delete s[l],s[r]=na(a),o[r]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const s=Object.create(null);return de.forEach(this,(o,a)=>{o!=null&&o!==!1&&(s[a]=t&&de.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(a=>o.set(a)),o}static accessor(t){const o=(this[wr]=this[wr]={accessors:{}}).accessors,a=this.prototype;function l(i){const r=to(i);o[r]||(Pm(a,i),o[r]=!0)}return de.isArray(t)?t.forEach(l):l(t),this}};ts.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);de.reduceDescriptors(ts.prototype,({value:e},t)=>{let s=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(o){this[s]=o}}});de.freezeMethods(ts);function vl(e,t){const s=this||Lo,o=t||s,a=ts.from(o.headers);let l=o.data;return de.forEach(e,function(r){l=r.call(s,l,a.normalize(),t?t.status:void 0)}),a.normalize(),l}function td(e){return!!(e&&e.__CANCEL__)}function Hn(e,t,s){it.call(this,e??"canceled",it.ERR_CANCELED,t,s),this.name="CanceledError"}de.inherits(Hn,it,{__CANCEL__:!0});function sd(e,t,s){const o=s.config.validateStatus;!s.status||!o||o(s.status)?e(s):t(new it("Request failed with status code "+s.status,[it.ERR_BAD_REQUEST,it.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s))}function Lm(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Om(e,t){e=e||10;const s=new Array(e),o=new Array(e);let a=0,l=0,i;return t=t!==void 0?t:1e3,function(c){const d=Date.now(),p=o[l];i||(i=d),s[a]=c,o[a]=d;let v=l,g=0;for(;v!==a;)g+=s[v++],v=v%e;if(a=(a+1)%e,a===l&&(l=(l+1)%e),d-i<t)return;const _=p&&d-p;return _?Math.round(g*1e3/_):void 0}}function Fm(e,t){let s=0,o=1e3/t,a,l;const i=(d,p=Date.now())=>{s=p,a=null,l&&(clearTimeout(l),l=null),e(...d)};return[(...d)=>{const p=Date.now(),v=p-s;v>=o?i(d,p):(a=d,l||(l=setTimeout(()=>{l=null,i(a)},o-v)))},()=>a&&i(a)]}const wa=(e,t,s=3)=>{let o=0;const a=Om(50,250);return Fm(l=>{const i=l.loaded,r=l.lengthComputable?l.total:void 0,c=i-o,d=a(c),p=i<=r;o=i;const v={loaded:i,total:r,progress:r?i/r:void 0,bytes:c,rate:d||void 0,estimated:d&&r&&p?(r-i)/d:void 0,event:l,lengthComputable:r!=null,[t?"download":"upload"]:!0};e(v)},s)},kr=(e,t)=>{const s=e!=null;return[o=>t[0]({lengthComputable:s,total:e,loaded:o}),t[1]]},$r=e=>(...t)=>de.asap(()=>e(...t)),Vm=Ht.hasStandardBrowserEnv?((e,t)=>s=>(s=new URL(s,Ht.origin),e.protocol===s.protocol&&e.host===s.host&&(t||e.port===s.port)))(new URL(Ht.origin),Ht.navigator&&/(msie|trident)/i.test(Ht.navigator.userAgent)):()=>!0,Bm=Ht.hasStandardBrowserEnv?{write(e,t,s,o,a,l,i){if(typeof document>"u")return;const r=[`${e}=${encodeURIComponent(t)}`];de.isNumber(s)&&r.push(`expires=${new Date(s).toUTCString()}`),de.isString(o)&&r.push(`path=${o}`),de.isString(a)&&r.push(`domain=${a}`),l===!0&&r.push("secure"),de.isString(i)&&r.push(`SameSite=${i}`),document.cookie=r.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function jm(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function qm(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function nd(e,t,s){let o=!jm(t);return e&&(o||s==!1)?qm(e,t):t}const Cr=e=>e instanceof ts?{...e}:e;function bn(e,t){t=t||{};const s={};function o(d,p,v,g){return de.isPlainObject(d)&&de.isPlainObject(p)?de.merge.call({caseless:g},d,p):de.isPlainObject(p)?de.merge({},p):de.isArray(p)?p.slice():p}function a(d,p,v,g){if(de.isUndefined(p)){if(!de.isUndefined(d))return o(void 0,d,v,g)}else return o(d,p,v,g)}function l(d,p){if(!de.isUndefined(p))return o(void 0,p)}function i(d,p){if(de.isUndefined(p)){if(!de.isUndefined(d))return o(void 0,d)}else return o(void 0,p)}function r(d,p,v){if(v in t)return o(d,p);if(v in e)return o(void 0,d)}const c={url:l,method:l,data:l,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:(d,p,v)=>a(Cr(d),Cr(p),v,!0)};return de.forEach(Object.keys({...e,...t}),function(p){const v=c[p]||a,g=v(e[p],t[p],p);de.isUndefined(g)&&v!==r||(s[p]=g)}),s}const od=e=>{const t=bn({},e);let{data:s,withXSRFToken:o,xsrfHeaderName:a,xsrfCookieName:l,headers:i,auth:r}=t;if(t.headers=i=ts.from(i),t.url=Xu(nd(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),r&&i.set("Authorization","Basic "+btoa((r.username||"")+":"+(r.password?unescape(encodeURIComponent(r.password)):""))),de.isFormData(s)){if(Ht.hasStandardBrowserEnv||Ht.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(de.isFunction(s.getHeaders)){const c=s.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([p,v])=>{d.includes(p.toLowerCase())&&i.set(p,v)})}}if(Ht.hasStandardBrowserEnv&&(o&&de.isFunction(o)&&(o=o(t)),o||o!==!1&&Vm(t.url))){const c=a&&l&&Bm.read(l);c&&i.set(a,c)}return t},Hm=typeof XMLHttpRequest<"u",zm=Hm&&function(e){return new Promise(function(s,o){const a=od(e);let l=a.data;const i=ts.from(a.headers).normalize();let{responseType:r,onUploadProgress:c,onDownloadProgress:d}=a,p,v,g,_,w;function C(){_&&_(),w&&w(),a.cancelToken&&a.cancelToken.unsubscribe(p),a.signal&&a.signal.removeEventListener("abort",p)}let $=new XMLHttpRequest;$.open(a.method.toUpperCase(),a.url,!0),$.timeout=a.timeout;function A(){if(!$)return;const M=ts.from("getAllResponseHeaders"in $&&$.getAllResponseHeaders()),W={data:!r||r==="text"||r==="json"?$.responseText:$.response,status:$.status,statusText:$.statusText,headers:M,config:e,request:$};sd(function(re){s(re),C()},function(re){o(re),C()},W),$=null}"onloadend"in $?$.onloadend=A:$.onreadystatechange=function(){!$||$.readyState!==4||$.status===0&&!($.responseURL&&$.responseURL.indexOf("file:")===0)||setTimeout(A)},$.onabort=function(){$&&(o(new it("Request aborted",it.ECONNABORTED,e,$)),$=null)},$.onerror=function(K){const W=K&&K.message?K.message:"Network Error",z=new it(W,it.ERR_NETWORK,e,$);z.event=K||null,o(z),$=null},$.ontimeout=function(){let K=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const W=a.transitional||Yu;a.timeoutErrorMessage&&(K=a.timeoutErrorMessage),o(new it(K,W.clarifyTimeoutError?it.ETIMEDOUT:it.ECONNABORTED,e,$)),$=null},l===void 0&&i.setContentType(null),"setRequestHeader"in $&&de.forEach(i.toJSON(),function(K,W){$.setRequestHeader(W,K)}),de.isUndefined(a.withCredentials)||($.withCredentials=!!a.withCredentials),r&&r!=="json"&&($.responseType=a.responseType),d&&([g,w]=wa(d,!0),$.addEventListener("progress",g)),c&&$.upload&&([v,_]=wa(c),$.upload.addEventListener("progress",v),$.upload.addEventListener("loadend",_)),(a.cancelToken||a.signal)&&(p=M=>{$&&(o(!M||M.type?new Hn(null,e,$):M),$.abort(),$=null)},a.cancelToken&&a.cancelToken.subscribe(p),a.signal&&(a.signal.aborted?p():a.signal.addEventListener("abort",p)));const x=Lm(a.url);if(x&&Ht.protocols.indexOf(x)===-1){o(new it("Unsupported protocol "+x+":",it.ERR_BAD_REQUEST,e));return}$.send(l||null)})},Wm=(e,t)=>{const{length:s}=e=e?e.filter(Boolean):[];if(t||s){let o=new AbortController,a;const l=function(d){if(!a){a=!0,r();const p=d instanceof Error?d:this.reason;o.abort(p instanceof it?p:new Hn(p instanceof Error?p.message:p))}};let i=t&&setTimeout(()=>{i=null,l(new it(`timeout ${t} of ms exceeded`,it.ETIMEDOUT))},t);const r=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(d=>{d.unsubscribe?d.unsubscribe(l):d.removeEventListener("abort",l)}),e=null)};e.forEach(d=>d.addEventListener("abort",l));const{signal:c}=o;return c.unsubscribe=()=>de.asap(r),c}},Km=function*(e,t){let s=e.byteLength;if(s<t){yield e;return}let o=0,a;for(;o<s;)a=o+t,yield e.slice(o,a),o=a},Gm=async function*(e,t){for await(const s of Qm(e))yield*Km(s,t)},Qm=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()}},Ir=(e,t,s,o)=>{const a=Gm(e,t);let l=0,i,r=c=>{i||(i=!0,o&&o(c))};return new ReadableStream({async pull(c){try{const{done:d,value:p}=await a.next();if(d){r(),c.close();return}let v=p.byteLength;if(s){let g=l+=v;s(g)}c.enqueue(new Uint8Array(p))}catch(d){throw r(d),d}},cancel(c){return r(c),a.return()}},{highWaterMark:2})},Sr=64*1024,{isFunction:Qo}=de,Jm=(({Request:e,Response:t})=>({Request:e,Response:t}))(de.global),{ReadableStream:Ar,TextEncoder:xr}=de.global,Tr=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Zm=e=>{e=de.merge.call({skipUndefined:!0},Jm,e);const{fetch:t,Request:s,Response:o}=e,a=t?Qo(t):typeof fetch=="function",l=Qo(s),i=Qo(o);if(!a)return!1;const r=a&&Qo(Ar),c=a&&(typeof xr=="function"?(w=>C=>w.encode(C))(new xr):async w=>new Uint8Array(await new s(w).arrayBuffer())),d=l&&r&&Tr(()=>{let w=!1;const C=new s(Ht.origin,{body:new Ar,method:"POST",get duplex(){return w=!0,"half"}}).headers.has("Content-Type");return w&&!C}),p=i&&r&&Tr(()=>de.isReadableStream(new o("").body)),v={stream:p&&(w=>w.body)};a&&["text","arrayBuffer","blob","formData","stream"].forEach(w=>{!v[w]&&(v[w]=(C,$)=>{let A=C&&C[w];if(A)return A.call(C);throw new it(`Response type '${w}' is not supported`,it.ERR_NOT_SUPPORT,$)})});const g=async w=>{if(w==null)return 0;if(de.isBlob(w))return w.size;if(de.isSpecCompliantForm(w))return(await new s(Ht.origin,{method:"POST",body:w}).arrayBuffer()).byteLength;if(de.isArrayBufferView(w)||de.isArrayBuffer(w))return w.byteLength;if(de.isURLSearchParams(w)&&(w=w+""),de.isString(w))return(await c(w)).byteLength},_=async(w,C)=>{const $=de.toFiniteNumber(w.getContentLength());return $??g(C)};return async w=>{let{url:C,method:$,data:A,signal:x,cancelToken:M,timeout:K,onDownloadProgress:W,onUploadProgress:z,responseType:re,headers:V,withCredentials:q="same-origin",fetchOptions:Q}=od(w),E=t||fetch;re=re?(re+"").toLowerCase():"text";let L=Wm([x,M&&M.toAbortSignal()],K),X=null;const O=L&&L.unsubscribe&&(()=>{L.unsubscribe()});let Y;try{if(z&&d&&$!=="get"&&$!=="head"&&(Y=await _(V,A))!==0){let ze=new s(C,{method:"POST",body:A,duplex:"half"}),Re;if(de.isFormData(A)&&(Re=ze.headers.get("content-type"))&&V.setContentType(Re),ze.body){const[we,Ne]=kr(Y,wa($r(z)));A=Ir(ze.body,Sr,we,Ne)}}de.isString(q)||(q=q?"include":"omit");const ne=l&&"credentials"in s.prototype,ue={...Q,signal:L,method:$.toUpperCase(),headers:V.normalize().toJSON(),body:A,duplex:"half",credentials:ne?q:void 0};X=l&&new s(C,ue);let oe=await(l?E(X,Q):E(C,ue));const ke=p&&(re==="stream"||re==="response");if(p&&(W||ke&&O)){const ze={};["status","statusText","headers"].forEach(Je=>{ze[Je]=oe[Je]});const Re=de.toFiniteNumber(oe.headers.get("content-length")),[we,Ne]=W&&kr(Re,wa($r(W),!0))||[];oe=new o(Ir(oe.body,Sr,we,()=>{Ne&&Ne(),O&&O()}),ze)}re=re||"text";let je=await v[de.findKey(v,re)||"text"](oe,w);return!ke&&O&&O(),await new Promise((ze,Re)=>{sd(ze,Re,{data:je,headers:ts.from(oe.headers),status:oe.status,statusText:oe.statusText,config:w,request:X})})}catch(ne){throw O&&O(),ne&&ne.name==="TypeError"&&/Load failed|fetch/i.test(ne.message)?Object.assign(new it("Network Error",it.ERR_NETWORK,w,X),{cause:ne.cause||ne}):it.from(ne,ne&&ne.code,w,X)}}},Xm=new Map,ad=e=>{let t=e&&e.env||{};const{fetch:s,Request:o,Response:a}=t,l=[o,a,s];let i=l.length,r=i,c,d,p=Xm;for(;r--;)c=l[r],d=p.get(c),d===void 0&&p.set(c,d=r?new Map:Zm(t)),p=d;return d};ad();const yi={http:mm,xhr:zm,fetch:{get:ad}};de.forEach(yi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Er=e=>`- ${e}`,Ym=e=>de.isFunction(e)||e===null||e===!1;function eh(e,t){e=de.isArray(e)?e:[e];const{length:s}=e;let o,a;const l={};for(let i=0;i<s;i++){o=e[i];let r;if(a=o,!Ym(o)&&(a=yi[(r=String(o)).toLowerCase()],a===void 0))throw new it(`Unknown adapter '${r}'`);if(a&&(de.isFunction(a)||(a=a.get(t))))break;l[r||"#"+i]=a}if(!a){const i=Object.entries(l).map(([c,d])=>`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let r=s?i.length>1?`since :
`+i.map(Er).join(`
`):" "+Er(i[0]):"as no adapter specified";throw new it("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return a}const ld={getAdapter:eh,adapters:yi};function ml(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Hn(null,e)}function Rr(e){return ml(e),e.headers=ts.from(e.headers),e.data=vl.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ld.getAdapter(e.adapter||Lo.adapter,e)(e).then(function(o){return ml(e),o.data=vl.call(e,e.transformResponse,o),o.headers=ts.from(o.headers),o},function(o){return td(o)||(ml(e),o&&o.response&&(o.response.data=vl.call(e,e.transformResponse,o.response),o.response.headers=ts.from(o.response.headers))),Promise.reject(o)})}const id="1.13.2",Ba={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Ba[e]=function(o){return typeof o===e||"a"+(t<1?"n ":" ")+e}});const Ur={};Ba.transitional=function(t,s,o){function a(l,i){return"[Axios v"+id+"] Transitional option '"+l+"'"+i+(o?". "+o:"")}return(l,i,r)=>{if(t===!1)throw new it(a(i," has been removed"+(s?" in "+s:"")),it.ERR_DEPRECATED);return s&&!Ur[i]&&(Ur[i]=!0,console.warn(a(i," has been deprecated since v"+s+" and will be removed in the near future"))),t?t(l,i,r):!0}};Ba.spelling=function(t){return(s,o)=>(console.warn(`${o} is likely a misspelling of ${t}`),!0)};function th(e,t,s){if(typeof e!="object")throw new it("options must be an object",it.ERR_BAD_OPTION_VALUE);const o=Object.keys(e);let a=o.length;for(;a-- >0;){const l=o[a],i=t[l];if(i){const r=e[l],c=r===void 0||i(r,l,e);if(c!==!0)throw new it("option "+l+" must be "+c,it.ERR_BAD_OPTION_VALUE);continue}if(s!==!0)throw new it("Unknown option "+l,it.ERR_BAD_OPTION)}}const oa={assertOptions:th,validators:Ba},Ss=oa.validators;let hn=class{constructor(t){this.defaults=t||{},this.interceptors={request:new _r,response:new _r}}async request(t,s){try{return await this._request(t,s)}catch(o){if(o instanceof Error){let a={};Error.captureStackTrace?Error.captureStackTrace(a):a=new Error;const l=a.stack?a.stack.replace(/^.+\n/,""):"";try{o.stack?l&&!String(o.stack).endsWith(l.replace(/^.+\n.+\n/,""))&&(o.stack+=`
`+l):o.stack=l}catch{}}throw o}}_request(t,s){typeof t=="string"?(s=s||{},s.url=t):s=t||{},s=bn(this.defaults,s);const{transitional:o,paramsSerializer:a,headers:l}=s;o!==void 0&&oa.assertOptions(o,{silentJSONParsing:Ss.transitional(Ss.boolean),forcedJSONParsing:Ss.transitional(Ss.boolean),clarifyTimeoutError:Ss.transitional(Ss.boolean)},!1),a!=null&&(de.isFunction(a)?s.paramsSerializer={serialize:a}:oa.assertOptions(a,{encode:Ss.function,serialize:Ss.function},!0)),s.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?s.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:s.allowAbsoluteUrls=!0),oa.assertOptions(s,{baseUrl:Ss.spelling("baseURL"),withXsrfToken:Ss.spelling("withXSRFToken")},!0),s.method=(s.method||this.defaults.method||"get").toLowerCase();let i=l&&de.merge(l.common,l[s.method]);l&&de.forEach(["delete","get","head","post","put","patch","common"],w=>{delete l[w]}),s.headers=ts.concat(i,l);const r=[];let c=!0;this.interceptors.request.forEach(function(C){typeof C.runWhen=="function"&&C.runWhen(s)===!1||(c=c&&C.synchronous,r.unshift(C.fulfilled,C.rejected))});const d=[];this.interceptors.response.forEach(function(C){d.push(C.fulfilled,C.rejected)});let p,v=0,g;if(!c){const w=[Rr.bind(this),void 0];for(w.unshift(...r),w.push(...d),g=w.length,p=Promise.resolve(s);v<g;)p=p.then(w[v++],w[v++]);return p}g=r.length;let _=s;for(;v<g;){const w=r[v++],C=r[v++];try{_=w(_)}catch($){C.call(this,$);break}}try{p=Rr.call(this,_)}catch(w){return Promise.reject(w)}for(v=0,g=d.length;v<g;)p=p.then(d[v++],d[v++]);return p}getUri(t){t=bn(this.defaults,t);const s=nd(t.baseURL,t.url,t.allowAbsoluteUrls);return Xu(s,t.params,t.paramsSerializer)}};de.forEach(["delete","get","head","options"],function(t){hn.prototype[t]=function(s,o){return this.request(bn(o||{},{method:t,url:s,data:(o||{}).data}))}});de.forEach(["post","put","patch"],function(t){function s(o){return function(l,i,r){return this.request(bn(r||{},{method:t,headers:o?{"Content-Type":"multipart/form-data"}:{},url:l,data:i}))}}hn.prototype[t]=s(),hn.prototype[t+"Form"]=s(!0)});let sh=class rd{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let s;this.promise=new Promise(function(l){s=l});const o=this;this.promise.then(a=>{if(!o._listeners)return;let l=o._listeners.length;for(;l-- >0;)o._listeners[l](a);o._listeners=null}),this.promise.then=a=>{let l;const i=new Promise(r=>{o.subscribe(r),l=r}).then(a);return i.cancel=function(){o.unsubscribe(l)},i},t(function(l,i,r){o.reason||(o.reason=new Hn(l,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 rd(function(a){t=a}),cancel:t}}};function nh(e){return function(s){return e.apply(null,s)}}function oh(e){return de.isObject(e)&&e.isAxiosError===!0}const Bl={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Bl).forEach(([e,t])=>{Bl[t]=e});function cd(e){const t=new hn(e),s=Vu(hn.prototype.request,t);return de.extend(s,hn.prototype,t,{allOwnKeys:!0}),de.extend(s,t,null,{allOwnKeys:!0}),s.create=function(a){return cd(bn(e,a))},s}const Tt=cd(Lo);Tt.Axios=hn;Tt.CanceledError=Hn;Tt.CancelToken=sh;Tt.isCancel=td;Tt.VERSION=id;Tt.toFormData=Va;Tt.AxiosError=it;Tt.Cancel=Tt.CanceledError;Tt.all=function(t){return Promise.all(t)};Tt.spread=nh;Tt.isAxiosError=oh;Tt.mergeConfig=bn;Tt.AxiosHeaders=ts;Tt.formToJSON=e=>ed(de.isHTMLForm(e)?new FormData(e):e);Tt.getAdapter=ld.getAdapter;Tt.HttpStatusCode=Bl;Tt.default=Tt;const{Axios:VP,AxiosError:BP,CanceledError:jP,isCancel:qP,CancelToken:HP,VERSION:zP,all:WP,Cancel:KP,isAxiosError:GP,spread:QP,toFormData:JP,AxiosHeaders:ZP,HttpStatusCode:XP,formToJSON:YP,getAdapter:eL,mergeConfig:tL}=Tt,Pt=Tt.create({baseURL:"/api",timeout:12e4});Pt.interceptors.request.use(e=>{const t=localStorage.getItem("token");return t&&(e.headers.Authorization=`Bearer ${t}`),e});Pt.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=Tt.create({baseURL:"/api",timeout:12e4});Ae.interceptors.request.use(e=>{let t=e.url||"";if(e.params){const a=new URLSearchParams;for(const[i,r]of Object.entries(e.params))r!=null&&a.append(i,String(r));const l=a.toString();l&&(t+=(t.includes("?")?"&":"?")+l),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 ah(e){var a,l,i,r,c,d;const t=e;if(!t)return null;const s=((a=t.response)==null?void 0:a.status)&&t.response.status>=500,o=t.code==="ERR_NETWORK"||t.code==="ECONNREFUSED"||t.code==="ERR_CONNECTION_REFUSED"||((l=t.message)==null?void 0:l.includes("Network Error"))||((i=t.message)==null?void 0:i.includes("Connection refused"));if(s||o){let p="无法连接到后端服务,请确保服务已启动";return s&&(p=`服务器错误 (${(r=t.response)==null?void 0:r.status}): 内部服务器错误`),{isConnectionError:!0,message:p,code:t.code,requestUrl:(c=t.config)==null?void 0:c.url,statusCode:(d=t.response)==null?void 0:d.status}}return null}class te{static async getApps(){return(await Pt.get("/apps")).data}static async getApp(t){return(await Pt.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.permissions)?o.data.data.permissions:[]}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 Pt.post(`/apps/${t}/update`)).data}static async getConfig(){return(await Pt.get("/config")).data}static async getStatus(){return(await Pt.get("/status")).data}static async getStoreApps(){return(await Pt.get("/store/apps")).data}static async startDownload(t,s){return(await Pt.post("/download/start",{url:t,fileName:s})).data}static async pauseDownload(t){await Pt.post(`/download/${t}/pause`)}static async resumeDownload(t){await Pt.post(`/download/${t}/resume`)}static async getDownloadTask(t){return(await Pt.get(`/download/${t}`)).data}static async getAllDownloads(){return(await Pt.get("/downloads")).data}static async deleteDownload(t){await Pt.delete(`/download/${t}`)}static async openDownloadFile(t){await Pt.post(`/download/${t}/open`)}static async getAllSettings(){const t=await Pt.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 Pt.post("/settings",t)}static async validatePath(t){return(await Pt.get("/validate-path",{params:{path:t}})).data}static async login(t){var o,a;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),(a=s.data.data)!=null&&a.refreshToken&&localStorage.setItem("refreshToken",s.data.data.refreshToken),s.data}static async register(t){var o,a;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),(a=s.data.data)!=null&&a.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 a={};o&&o.trim()&&(a.search=o.trim());const i=(await Ae.get(`/api/v1/auth/users/${t}/${s}`,{params:a})).data.data||{};return{users:Array.isArray(i.users)?i.users:[],total:i.total||0}}static async getUsersForChat(t=1,s=50,o){const a={};o&&o.trim()&&(a.search=o.trim());const i=(await Ae.get(`/api/v1/users/list/${t}/${s}`,{params:a})).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 a={page:s,pageSize:o};t&&t!=="all"&&(a.status=t);const l=await Ae.get("/api/v1/forums/requests",{params:a});return l.data.success?Array.isArray(l.data.data)?{requests:l.data.data,total:l.data.data.length}:(i=l.data.data)!=null&&i.requests?{requests:l.data.data.requests,total:l.data.data.total||l.data.data.requests.length}:{requests:[],total:0}:{requests:[],total:0}}static async processForumRequest(t,s,o){const a={action:s};return o&&(a.reason=o),(await Ae.post(`/api/v1/forums/requests/${t}/process`,a)).data}static async checkUserRequestStatus(t){var s,o;try{const a=await Ae.get(`/api/v1/forums/requests/status/${t}`);return a.data.data||a.data}catch(a){return((s=a.response)==null?void 0:s.status)===401||((o=a.response)==null?void 0:o.status)===404?{hasRequest:!1}:(console.error("检查申请状态失败:",a),{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 a;return((a=(await Ae.get(`/api/v1/server/getDownloadUrl/${t}/${s}`)).data.data)==null?void 0:a.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,a;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),(a=s.data.data)!=null&&a.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(l=>{o.append("images",l)}),(await Ae.post(`/api/v1/appinfo/uploadImages/${t}`,o)).data}static async getImage(t,s,o,a){const l={};s!==void 0&&(l.quality=s),o!==void 0&&(l.width=o),a!==void 0&&(l.height=a);const r=(await Ae.get(`/api/v1/appinfo/app/getImage/${t}`,{params:l,responseType:"blob"})).data;return URL.createObjectURL(r)}static getImageUrl(t,s,o,a){const l=new URLSearchParams;s!==void 0&&l.append("quality",s.toString()),o!==void 0&&l.append("width",o.toString()),a!==void 0&&l.append("height",a.toString());const i=l.toString();return`/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,a="time"){const l=await Ae.get(`/api/v1/forums/${t}/posts`,{params:{page:s,pageSize:o,sortBy:a}});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,a=50){const l={};return o>1&&(l.replyPage=o),a!==50&&(l.replyPageSize=a),(await Ae.get(`/api/v1/forums/${t}/posts/${s}`,{params:l})).data.data||null}static async uploadImageAttachment(t,s){var o,a;try{const l=new FormData;l.append("image",t);const r=(await Ae.post("/api/v1/attachments/image",l,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:c=>{if(c.total&&s){const d=Math.round(c.loaded*100/c.total);s(d)}}})).data;return r.success&&r.data?{success:!0,attachmentId:r.data.attachmentId,url:r.data.url,message:r.message,data:r.data}:r}catch(l){return console.error("上传图片附件失败:",l),{success:!1,message:((a=(o=l.response)==null?void 0:o.data)==null?void 0:a.message)||l.message||"上传图片失败"}}}static async uploadFileAttachment(t,s){var o,a;try{const l=new FormData;l.append("file",t);const r=(await Ae.post("/api/v1/attachments/file",l,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:c=>{if(c.total&&s){const d=Math.round(c.loaded*100/c.total);s(d)}}})).data;return r.success&&r.data?{success:!0,attachmentId:r.data.attachmentId,url:r.data.url,message:r.message,data:r.data}:r}catch(l){return console.error("上传文件附件失败:",l),{success:!1,message:((a=(o=l.response)==null?void 0:o.data)==null?void 0:a.message)||l.message||"上传文件失败"}}}static async createForumPost(t,s,o,a){const l={title:s,content:o};return a&&a.length>0&&(l.attachmentIds=a),(await Ae.post(`/api/v1/forums/${t}/posts`,l)).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 a={};s&&(a.expiry=s);const l=await Ae.get(`/api/v1/attachments/${t}/download`,{params:a});return l.data.success&&((o=l.data.data)!=null&&o.url)?l.data.data.url:null}catch(a){return console.error("获取附件下载URL失败:",a),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,a,l,i){const r=new FormData;return r.append("title",o),r.append("content",a),l&&l.length>0&&l.forEach(d=>{r.append("images",d)}),i&&i.length>0&&i.forEach(d=>{r.append("files",d)}),(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 a=await Ae.post(`/api/v1/forums/${t}/posts/${s}/like`,{action:o});return a.data.success&&a.data.data?{success:!0,likeCount:a.data.data.likeCount,dislikeCount:a.data.data.dislikeCount,userLikeStatus:a.data.data.userLikeStatus}:{success:!1,likeCount:0,dislikeCount:0,userLikeStatus:null}}static async createForumReply(t,s,o,a,l,i){const r={content:o};return a&&(r.replyToUserId=a),l&&(r.replyToUserName=l),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,a,l,i,r){const c={content:a};return l&&(c.replyToUserId=l),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,a,l,i){const r=new FormData;return r.append("content",a),l&&l.length>0&&l.forEach(d=>{r.append("images",d)}),i&&i.length>0&&i.forEach(d=>{r.append("files",d)}),(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,a){return(await Ae.post(`/api/v1/forums/${t}/posts/${s}/replies/${o}/like`,{action:a})).data.data||{success:!1,likeCount:0,dislikeCount:0}}static async submitReport(t,s,o,a,l,i,r){const c={type:t,targetId:s,bundleId:o,postId:a,reportTypes:l,content:i};return r&&(c.comment=r),(await Ae.post("/api/v1/reports",c)).data}static async submitIssue(t,s,o,a,l,i,r,c,d,p){var v,g,_,w;try{console.log("开始上传截图,数量:",c.length);const C=[];for(let M=0;M<c.length;M++){const K=c[M];console.log(`上传截图 ${M+1}/${c.length}`);const W=await te.uploadImageAttachment(K);console.log("截图上传结果:",W);const z=W.attachmentId||((v=W.data)==null?void 0:v.attachmentId);if(W.success&&z)C.push(z),console.log(`截图 ${M+1} 上传成功:`,z);else throw console.error(`截图 ${M+1} 上传失败:`,W.message),new Error(W.message||`截图 ${M+1} 上传失败`)}console.log("开始上传文件,数量:",d.length);const $=[];for(let M=0;M<d.length;M++){const K=d[M];console.log(`上传文件 ${M+1}/${d.length}`);const W=await te.uploadFileAttachment(K);console.log("文件上传结果:",W);const z=W.attachmentId||((g=W.data)==null?void 0:g.attachmentId);if(W.success&&z)$.push(z),console.log(`文件 ${M+1} 上传成功:`,z);else throw console.error(`文件 ${M+1} 上传失败:`,W.message),new Error(W.message||`文件 ${M+1} 上传失败`)}console.log("所有附件上传完成,开始提交问题报告");const A={bundleId:t,appName:s,appVersion:o,osVersion:a,architecture:l,errorType:i,description:r,screenshotAttachmentIds:C,fileAttachmentIds:$,appIconId:p};console.log("提交问题报告数据:",{...A,description:r.substring(0,50)+"..."});const x=await Ae.post("/api/v1/issues",A);return console.log("问题报告提交成功:",x.data),x.data}catch(C){return console.error("提交问题报告失败:",C),{success:!1,message:((w=(_=C.response)==null?void 0:_.data)==null?void 0:w.message)||C.message||"提交问题报告失败"}}}static async getAdminPosts(t=1,s=20,o,a){const l={page:t,pageSize:s};return o&&(l.search=o),a&&a!=="all"&&(l.status=a),(await Ae.get("/api/v1/admin/posts",{params:l})).data}static async updateAdminPost(t,s,o,a){const l={title:s,content:o};return a!==void 0&&(l.attachmentIds=a),(await Ae.put(`/api/v1/admin/posts/${t}`,l)).data}static async deleteAdminPost(t){return(await Ae.delete(`/api/v1/admin/posts/${t}`)).data}static async getAdminViolations(t=1,s=20,o){const a={page:t,pageSize:s};return o&&o!=="all"&&(a.status=o),(await Ae.get("/api/v1/admin/violations",{params:a})).data}static async resolveViolation(t,s){return(await Ae.post(`/api/v1/admin/violations/${t}/resolve`,{status:s})).data}static async getAdminIssues(t=1,s=20,o){const a={page:t,pageSize:s};return o&&o!=="all"&&(a.status=o),(await Ae.get("/api/v1/admin/issues",{params:a})).data}static async resolveIssue(t,s,o){const a={status:s};return o&&(a.resolutionNote=o),(await Ae.post(`/api/v1/admin/issues/${t}/resolve`,a)).data}static async getMyIssues(t=1,s=20){const o={page:t,pageSize:s};return(await Ae.get("/api/v1/issues/my",{params:o})).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 a={page:t,pageSize:s};return o&&(a.unreadOnly="true"),(await Ae.get("/api/v1/notifications",{params:a})).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 a={page:s,pageSize:o};return(await Ae.get(`/api/v1/messages/conversations/${t}/messages`,{params:a})).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}static async getAppRatingStats(t){try{const s=await Ae.get(`/api/v1/apps/${t}/ratings/stats`);return s.data.success?s.data.data:null}catch(s){return console.error("获取评分统计失败:",s),null}}static async getUserAppRating(t){var s,o,a;try{const l=await Ae.get(`/api/v1/apps/${t}/ratings/user`);return l.data.success&&((s=l.data.data)!=null&&s.rating)?l.data.data.rating:null}catch(l){return((o=l.response)==null?void 0:o.status)===401||((a=l.response)==null?void 0:a.status)===404||console.error("获取用户评分失败:",l),null}}static async submitAppRating(t,s){return(await Ae.post(`/api/v1/apps/${t}/ratings`,{rating:s})).data}static async getAppComments(t,s=1,o=20){const a=await Ae.get(`/api/v1/apps/${t}/comments`,{params:{page:s,pageSize:o}});return a.data.success?a.data.data||{comments:[],total:0,page:s,pageSize:o}:{comments:[],total:0,page:s,pageSize:o}}static async createAppComment(t,s,o){return(await Ae.post(`/api/v1/apps/${t}/comments`,{content:s,imageAttachmentIds:o})).data}static async likeAppComment(t,s,o){const a=await Ae.post(`/api/v1/apps/${t}/comments/${s}/like`,{action:o});return a.data.success&&a.data.data?{success:!0,likeCount:a.data.data.likeCount,dislikeCount:a.data.data.dislikeCount,userLikeStatus:a.data.data.userLikeStatus}:{success:!1,likeCount:0,dislikeCount:0,userLikeStatus:null}}static async createAppCommentReply(t,s,o,a){return(await Ae.post(`/api/v1/apps/${t}/comments/${s}/replies`,{content:o,imageAttachmentIds:a})).data}static async createAppCommentNestedReply(t,s,o,a,l,i,r){return(await Ae.post(`/api/v1/apps/${t}/comments/${s}/replies/${o}/nested`,{content:a,replyToUserId:l,replyToUserName:i,imageAttachmentIds:r})).data}static async likeAppCommentReply(t,s,o,a){const l=await Ae.post(`/api/v1/apps/${t}/comments/${s}/replies/${o}/like`,{action:a});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}}}const ud=/^[a-z0-9]+(-[a-z0-9]+)*$/,ja=(e,t,s,o="")=>{const a=e.split(":");if(e.slice(0,1)==="@"){if(a.length<2||a.length>3)return null;o=a.shift().slice(1)}if(a.length>3||!a.length)return null;if(a.length>1){const r=a.pop(),c=a.pop(),d={provider:a.length>0?a[0]:o,prefix:c,name:r};return t&&!aa(d)?null:d}const l=a[0],i=l.split("-");if(i.length>1){const r={provider:o,prefix:i.shift(),name:i.join("-")};return t&&!aa(r)?null:r}if(s&&o===""){const r={provider:o,prefix:"",name:l};return t&&!aa(r,s)?null:r}return null},aa=(e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,dd=Object.freeze({left:0,top:0,width:16,height:16}),ka=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),qa=Object.freeze({...dd,...ka}),jl=Object.freeze({...qa,body:"",hidden:!1});function lh(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 Dr(e,t){const s=lh(e,t);for(const o in jl)o in ka?o in e&&!(o in s)&&(s[o]=ka[o]):o in t?s[o]=t[o]:o in e&&(s[o]=e[o]);return s}function ih(e,t){const s=e.icons,o=e.aliases||Object.create(null),a=Object.create(null);function l(i){if(s[i])return a[i]=[];if(!(i in a)){a[i]=null;const r=o[i]&&o[i].parent,c=r&&l(r);c&&(a[i]=[r].concat(c))}return a[i]}return Object.keys(s).concat(Object.keys(o)).forEach(l),a}function rh(e,t,s){const o=e.icons,a=e.aliases||Object.create(null);let l={};function i(r){l=Dr(o[r]||a[r],l)}return i(t),s.forEach(i),Dr(e,l)}function fd(e,t){const s=[];if(typeof e!="object"||typeof e.icons!="object")return s;e.not_found instanceof Array&&e.not_found.forEach(a=>{t(a,null),s.push(a)});const o=ih(e);for(const a in o){const l=o[a];l&&(t(a,rh(e,a,l)),s.push(a))}return s}const ch={provider:"",aliases:{},not_found:{},...dd};function hl(e,t){for(const s in t)if(s in e&&typeof e[s]!=typeof t[s])return!1;return!0}function pd(e){if(typeof e!="object"||e===null)return null;const t=e;if(typeof t.prefix!="string"||!e.icons||typeof e.icons!="object"||!hl(e,ch))return null;const s=t.icons;for(const a in s){const l=s[a];if(!a||typeof l.body!="string"||!hl(l,jl))return null}const o=t.aliases||Object.create(null);for(const a in o){const l=o[a],i=l.parent;if(!a||typeof i!="string"||!s[i]&&!o[i]||!hl(l,jl))return null}return t}const Nr=Object.create(null);function uh(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function On(e,t){const s=Nr[e]||(Nr[e]=Object.create(null));return s[t]||(s[t]=uh(e,t))}function vd(e,t){return pd(t)?fd(t,(s,o)=>{o?e.icons[s]=o:e.missing.add(s)}):[]}function dh(e,t,s){try{if(typeof s.body=="string")return e.icons[t]={...s},!0}catch{}return!1}let xo=!1;function md(e){return typeof e=="boolean"&&(xo=e),xo}function fh(e){const t=typeof e=="string"?ja(e,!0,xo):e;if(t){const s=On(t.provider,t.prefix),o=t.name;return s.icons[o]||(s.missing.has(o)?null:void 0)}}function ph(e,t){const s=ja(e,!0,xo);if(!s)return!1;const o=On(s.provider,s.prefix);return t?dh(o,s.name,t):(o.missing.add(s.name),!0)}function vh(e,t){if(typeof e!="object")return!1;if(typeof t!="string"&&(t=e.provider||""),xo&&!t&&!e.prefix){let a=!1;return pd(e)&&(e.prefix="",fd(e,(l,i)=>{ph(l,i)&&(a=!0)})),a}const s=e.prefix;if(!aa({prefix:s,name:"a"}))return!1;const o=On(t,s);return!!vd(o,e)}const hd=Object.freeze({width:null,height:null}),gd=Object.freeze({...hd,...ka}),mh=/(-?[0-9.]*[0-9]+[0-9.]*)/g,hh=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function Mr(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(mh);if(o===null||!o.length)return e;const a=[];let l=o.shift(),i=hh.test(l);for(;;){if(i){const r=parseFloat(l);isNaN(r)?a.push(l):a.push(Math.ceil(r*t*s)/s)}else a.push(l);if(l=o.shift(),l===void 0)return a.join("");i=!i}}function gh(e,t="defs"){let s="";const o=e.indexOf("<"+t);for(;o>=0;){const a=e.indexOf(">",o),l=e.indexOf("</"+t);if(a===-1||l===-1)break;const i=e.indexOf(">",l);if(i===-1)break;s+=e.slice(a+1,l).trim(),e=e.slice(0,o).trim()+e.slice(i+1)}return{defs:s,content:e}}function yh(e,t){return e?"<defs>"+e+"</defs>"+t:t}function bh(e,t,s){const o=gh(e);return yh(o.defs,t+o.content+s)}const _h=e=>e==="unset"||e==="undefined"||e==="none";function wh(e,t){const s={...qa,...e},o={...gd,...t},a={left:s.left,top:s.top,width:s.width,height:s.height};let l=s.body;[s,o].forEach(C=>{const $=[],A=C.hFlip,x=C.vFlip;let M=C.rotate;A?x?M+=2:($.push("translate("+(a.width+a.left).toString()+" "+(0-a.top).toString()+")"),$.push("scale(-1 1)"),a.top=a.left=0):x&&($.push("translate("+(0-a.left).toString()+" "+(a.height+a.top).toString()+")"),$.push("scale(1 -1)"),a.top=a.left=0);let K;switch(M<0&&(M-=Math.floor(M/4)*4),M=M%4,M){case 1:K=a.height/2+a.top,$.unshift("rotate(90 "+K.toString()+" "+K.toString()+")");break;case 2:$.unshift("rotate(180 "+(a.width/2+a.left).toString()+" "+(a.height/2+a.top).toString()+")");break;case 3:K=a.width/2+a.left,$.unshift("rotate(-90 "+K.toString()+" "+K.toString()+")");break}M%2===1&&(a.left!==a.top&&(K=a.left,a.left=a.top,a.top=K),a.width!==a.height&&(K=a.width,a.width=a.height,a.height=K)),$.length&&(l=bh(l,'<g transform="'+$.join(" ")+'">',"</g>"))});const i=o.width,r=o.height,c=a.width,d=a.height;let p,v;i===null?(v=r===null?"1em":r==="auto"?d:r,p=Mr(v,c/d)):(p=i==="auto"?c:i,v=r===null?Mr(p,d/c):r==="auto"?d:r);const g={},_=(C,$)=>{_h($)||(g[C]=$.toString())};_("width",p),_("height",v);const w=[a.left,a.top,c,d];return g.viewBox=w.join(" "),{attributes:g,viewBox:w,body:l}}const kh=/\sid="(\S+)"/g,$h="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);let Ch=0;function Ih(e,t=$h){const s=[];let o;for(;o=kh.exec(e);)s.push(o[1]);if(!s.length)return e;const a="suffix"+(Math.random()*16777216|Date.now()).toString(16);return s.forEach(l=>{const i=typeof t=="function"?t(l):t+(Ch++).toString(),r=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+r+')([")]|\\.[a-z])',"g"),"$1"+i+a+"$3")}),e=e.replace(new RegExp(a,"g"),""),e}const ql=Object.create(null);function Sh(e,t){ql[e]=t}function Hl(e){return ql[e]||ql[""]}function bi(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 _i=Object.create(null),so=["https://api.simplesvg.com","https://api.unisvg.com"],la=[];for(;so.length>0;)so.length===1||Math.random()>.5?la.push(so.shift()):la.push(so.pop());_i[""]=bi({resources:["https://api.iconify.design"].concat(la)});function Ah(e,t){const s=bi(t);return s===null?!1:(_i[e]=s,!0)}function wi(e){return _i[e]}const xh=()=>{let e;try{if(e=fetch,typeof e=="function")return e}catch{}};let Pr=xh();function Th(e,t){const s=wi(e);if(!s)return 0;let o;if(!s.maxURL)o=0;else{let a=0;s.resources.forEach(i=>{a=Math.max(a,i.length)});const l=t+".json?icons=";o=s.maxURL-a-s.path.length-l.length}return o}function Eh(e){return e===404}const Rh=(e,t,s)=>{const o=[],a=Th(e,t),l="icons";let i={type:l,provider:e,prefix:t,icons:[]},r=0;return s.forEach((c,d)=>{r+=c.length+1,r>=a&&d>0&&(o.push(i),i={type:l,provider:e,prefix:t,icons:[]},r=c.length),i.icons.push(c)}),o.push(i),o};function Uh(e){if(typeof e=="string"){const t=wi(e);if(t)return t.path}return"/"}const Dh=(e,t,s)=>{if(!Pr){s("abort",424);return}let o=Uh(t.provider);switch(t.type){case"icons":{const l=t.prefix,r=t.icons.join(","),c=new URLSearchParams({icons:r});o+=l+".json?"+c.toString();break}case"custom":{const l=t.uri;o+=l.slice(0,1)==="/"?l.slice(1):l;break}default:s("abort",400);return}let a=503;Pr(e+o).then(l=>{const i=l.status;if(i!==200){setTimeout(()=>{s(Eh(i)?"abort":"next",i)});return}return a=501,l.json()}).then(l=>{if(typeof l!="object"||l===null){setTimeout(()=>{l===404?s("abort",l):s("next",a)});return}setTimeout(()=>{s("success",l)})}).catch(()=>{s("next",a)})},Nh={prepare:Rh,send:Dh};function Mh(e){const t={loaded:[],missing:[],pending:[]},s=Object.create(null);e.sort((a,l)=>a.provider!==l.provider?a.provider.localeCompare(l.provider):a.prefix!==l.prefix?a.prefix.localeCompare(l.prefix):a.name.localeCompare(l.name));let o={provider:"",prefix:"",name:""};return e.forEach(a=>{if(o.name===a.name&&o.prefix===a.prefix&&o.provider===a.provider)return;o=a;const l=a.provider,i=a.prefix,r=a.name,c=s[l]||(s[l]=Object.create(null)),d=c[i]||(c[i]=On(l,i));let p;r in d.icons?p=t.loaded:i===""||d.missing.has(r)?p=t.missing:p=t.pending;const v={provider:l,prefix:i,name:r};p.push(v)}),t}function yd(e,t){e.forEach(s=>{const o=s.loaderCallbacks;o&&(s.loaderCallbacks=o.filter(a=>a.id!==t))})}function Ph(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,a=e.prefix;t.forEach(l=>{const i=l.icons,r=i.pending.length;i.pending=i.pending.filter(c=>{if(c.prefix!==a)return!0;const d=c.name;if(e.icons[d])i.loaded.push({provider:o,prefix:a,name:d});else if(e.missing.has(d))i.missing.push({provider:o,prefix:a,name:d});else return s=!0,!0;return!1}),i.pending.length!==r&&(s||yd([e],l.id),l.callback(i.loaded.slice(0),i.missing.slice(0),i.pending.slice(0),l.abort))})}))}let Lh=0;function Oh(e,t,s){const o=Lh++,a=yd.bind(null,s,o);if(!t.pending.length)return a;const l={id:o,icons:t,callback:e,abort:a};return s.forEach(i=>{(i.loaderCallbacks||(i.loaderCallbacks=[])).push(l)}),a}function Fh(e,t=!0,s=!1){const o=[];return e.forEach(a=>{const l=typeof a=="string"?ja(a,t,s):a;l&&o.push(l)}),o}var Vh={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function Bh(e,t,s,o){const a=e.resources.length,l=e.random?Math.floor(Math.random()*a):e.index;let i;if(e.random){let z=e.resources.slice(0);for(i=[];z.length>1;){const re=Math.floor(Math.random()*z.length);i.push(z[re]),z=z.slice(0,re).concat(z.slice(re+1))}i=i.concat(z)}else i=e.resources.slice(l).concat(e.resources.slice(0,l));const r=Date.now();let c="pending",d=0,p,v=null,g=[],_=[];typeof o=="function"&&_.push(o);function w(){v&&(clearTimeout(v),v=null)}function C(){c==="pending"&&(c="aborted"),w(),g.forEach(z=>{z.status==="pending"&&(z.status="aborted")}),g=[]}function $(z,re){re&&(_=[]),typeof z=="function"&&_.push(z)}function A(){return{startTime:r,payload:t,status:c,queriesSent:d,queriesPending:g.length,subscribe:$,abort:C}}function x(){c="failed",_.forEach(z=>{z(void 0,p)})}function M(){g.forEach(z=>{z.status==="pending"&&(z.status="aborted")}),g=[]}function K(z,re,V){const q=re!=="success";switch(g=g.filter(Q=>Q!==z),c){case"pending":break;case"failed":if(q||!e.dataAfterTimeout)return;break;default:return}if(re==="abort"){p=V,x();return}if(q){p=V,g.length||(i.length?W():x());return}if(w(),M(),!e.random){const Q=e.resources.indexOf(z.resource);Q!==-1&&Q!==e.index&&(e.index=Q)}c="completed",_.forEach(Q=>{Q(V)})}function W(){if(c!=="pending")return;w();const z=i.shift();if(z===void 0){if(g.length){v=setTimeout(()=>{w(),c==="pending"&&(M(),x())},e.timeout);return}x();return}const re={status:"pending",resource:z,callback:(V,q)=>{K(re,V,q)}};g.push(re),d++,v=setTimeout(W,e.rotate),s(z,t,re.callback)}return setTimeout(W),A}function bd(e){const t={...Vh,...e};let s=[];function o(){s=s.filter(r=>r().status==="pending")}function a(r,c,d){const p=Bh(t,r,c,(v,g)=>{o(),d&&d(v,g)});return s.push(p),p}function l(r){return s.find(c=>r(c))||null}return{query:a,find:l,setIndex:r=>{t.index=r},getIndex:()=>t.index,cleanup:o}}function Lr(){}const gl=Object.create(null);function jh(e){if(!gl[e]){const t=wi(e);if(!t)return;const s=bd(t),o={config:t,redundancy:s};gl[e]=o}return gl[e]}function qh(e,t,s){let o,a;if(typeof e=="string"){const l=Hl(e);if(!l)return s(void 0,424),Lr;a=l.send;const i=jh(e);i&&(o=i.redundancy)}else{const l=bi(e);if(l){o=bd(l);const i=e.resources?e.resources[0]:"",r=Hl(i);r&&(a=r.send)}}return!o||!a?(s(void 0,424),Lr):o.query(t,a,s)().abort}function Or(){}function Hh(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,Ph(e)}))}function zh(e){const t=[],s=[];return e.forEach(o=>{(o.match(ud)?t:s).push(o)}),{valid:t,invalid:s}}function no(e,t,s){function o(){const a=e.pendingIcons;t.forEach(l=>{a&&a.delete(l),e.icons[l]||e.missing.add(l)})}if(s&&typeof s=="object")try{if(!vd(e,s).length){o();return}}catch(a){console.error(a)}o(),Hh(e)}function Fr(e,t){e instanceof Promise?e.then(s=>{t(s)}).catch(()=>{t(null)}):t(e)}function Wh(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,a=e.iconsToLoad;if(delete e.iconsToLoad,!a||!a.length)return;const l=e.loadIcon;if(e.loadIcons&&(a.length>1||!l)){Fr(e.loadIcons(a,o,s),p=>{no(e,a,p)});return}if(l){a.forEach(p=>{const v=l(p,o,s);Fr(v,g=>{const _=g?{prefix:o,icons:{[p]:g}}:null;no(e,[p],_)})});return}const{valid:i,invalid:r}=zh(a);if(r.length&&no(e,r,null),!i.length)return;const c=o.match(ud)?Hl(s):null;if(!c){no(e,i,null);return}c.prepare(s,o,i).forEach(p=>{qh(s,p,v=>{no(e,p.icons,v)})})}))}const Kh=(e,t)=>{const s=Fh(e,!0,md()),o=Mh(s);if(!o.pending.length){let c=!0;return t&&setTimeout(()=>{c&&t(o.loaded,o.missing,o.pending,Or)}),()=>{c=!1}}const a=Object.create(null),l=[];let i,r;return o.pending.forEach(c=>{const{provider:d,prefix:p}=c;if(p===r&&d===i)return;i=d,r=p,l.push(On(d,p));const v=a[d]||(a[d]=Object.create(null));v[p]||(v[p]=[])}),o.pending.forEach(c=>{const{provider:d,prefix:p,name:v}=c,g=On(d,p),_=g.pendingIcons||(g.pendingIcons=new Set);_.has(v)||(_.add(v),a[d][p].push(v))}),l.forEach(c=>{const d=a[c.provider][c.prefix];d.length&&Wh(c,d)}),t?Oh(t,o,l):Or};function Gh(e,t){const s={...e};for(const o in t){const a=t[o],l=typeof a;o in hd?(a===null||a&&(l==="string"||l==="number"))&&(s[o]=a):l===typeof s[o]&&(s[o]=o==="rotate"?a%4:a)}return s}const Qh=/[\s,]+/;function Jh(e,t){t.split(Qh).forEach(s=>{switch(s.trim()){case"horizontal":e.hFlip=!0;break;case"vertical":e.vFlip=!0;break}})}function Zh(e,t=0){const s=e.replace(/^-?[0-9.]*/,"");function o(a){for(;a<0;)a+=4;return a%4}if(s===""){const a=parseInt(e);return isNaN(a)?0:o(a)}else if(s!==e){let a=0;switch(s){case"%":a=25;break;case"deg":a=90}if(a){let l=parseFloat(e.slice(0,e.length-s.length));return isNaN(l)?0:(l=l/a,l%1===0?o(l):0)}}return t}function Xh(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 Yh(e){return e.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/\s+/g," ")}function eg(e){return"data:image/svg+xml,"+Yh(e)}function tg(e){return'url("'+eg(e)+'")'}const Vr={...gd,inline:!1},sg={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},ng={display:"inline-block"},zl={backgroundColor:"currentColor"},_d={backgroundColor:"transparent"},Br={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},jr={webkitMask:zl,mask:zl,background:_d};for(const e in jr){const t=jr[e];for(const s in Br)t[e+s]=Br[s]}const ia={};["horizontal","vertical"].forEach(e=>{const t=e.slice(0,1)+"Flip";ia[e+"-flip"]=t,ia[e.slice(0,1)+"-flip"]=t,ia[e+"Flip"]=t});function qr(e){return e+(e.match(/^[-0-9.]+$/)?"px":"")}const Hr=(e,t)=>{const s=Gh(Vr,t),o={...sg},a=t.mode||"svg",l={},i=t.style,r=typeof i=="object"&&!(i instanceof Array)?i:{};for(let C in t){const $=t[C];if($!==void 0)switch(C){case"icon":case"style":case"onLoad":case"mode":case"ssr":break;case"inline":case"hFlip":case"vFlip":s[C]=$===!0||$==="true"||$===1;break;case"flip":typeof $=="string"&&Jh(s,$);break;case"color":l.color=$;break;case"rotate":typeof $=="string"?s[C]=Zh($):typeof $=="number"&&(s[C]=$);break;case"ariaHidden":case"aria-hidden":$!==!0&&$!=="true"&&delete o["aria-hidden"];break;default:{const A=ia[C];A?($===!0||$==="true"||$===1)&&(s[A]=!0):Vr[C]===void 0&&(o[C]=$)}}}const c=wh(e,s),d=c.attributes;if(s.inline&&(l.verticalAlign="-0.125em"),a==="svg"){o.style={...l,...r},Object.assign(o,d);let C=0,$=t.id;return typeof $=="string"&&($=$.replace(/-/g,"_")),o.innerHTML=Ih(c.body,$?()=>$+"ID"+C++:"iconifyVue"),Ao("svg",o)}const{body:p,width:v,height:g}=e,_=a==="mask"||(a==="bg"?!1:p.indexOf("currentColor")!==-1),w=Xh(p,{...d,width:v+"",height:g+""});return o.style={...l,"--svg":tg(w),width:qr(d.width),height:qr(d.height),...ng,..._?zl:_d,...r},Ao("span",o)};md(!0);Sh("",Nh);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"||!vh(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 a=t[s];if(typeof a!="object"||!a||a.resources===void 0)continue;Ah(s,a)||console.error(o)}catch{console.error(o)}}}}const og={...qa,body:""},ag=Xe((e,{emit:t})=>{const s=k(null);function o(){var d,p;s.value&&((p=(d=s.value).abort)==null||p.call(d),s.value=null)}const a=k(!!e.ssr),l=k(""),i=wo(null);function r(){const d=e.icon;if(typeof d=="object"&&d!==null&&typeof d.body=="string")return l.value="",{data:d};let p;if(typeof d!="string"||(p=ja(d,!1,!0))===null)return null;let v=fh(p);if(!v){const w=s.value;return(!w||w.name!==d)&&(v===null?s.value={name:d}:s.value={name:d,abort:Kh([p],c)}),null}o(),l.value!==d&&(l.value=d,Ct(()=>{t("load",d)}));const g=e.customise;if(g){v=Object.assign({},v);const w=g(v.body,p.name,p.prefix,p.provider);typeof w=="string"&&(v.body=w)}const _=["iconify"];return p.prefix!==""&&_.push("iconify--"+p.prefix),p.provider!==""&&_.push("iconify--"+p.provider),{data:v,classes:_}}function c(){var p;const d=r();d?d.data!==((p=i.value)==null?void 0:p.data)&&(i.value=d):i.value=null}return a.value?c():vt(()=>{a.value=!0,c()}),at(()=>e.icon,c),Wt(o),()=>{const d=i.value;if(!d)return Hr(og,e);let p=e;return d.classes&&(p={...e,class:d.classes.join(" ")}),Hr({...qa,...d.data},p)}},{props:["icon","mode","ssr","width","height","style","color","inline","rotate","hFlip","horizontalFlip","vFlip","verticalFlip","flip","id","ariaHidden","customise","title"],emits:["load"]}),b=Xe({__name:"IconifyIcon",props:{icon:{},className:{}},setup(e){return(t,s)=>(u(),Ke(Z(ag),{icon:e.icon,class:$e(e.className)},null,8,["icon","class"]))}});function wd(){const e=k("auto"),t=k(!1),s=ve(()=>e.value==="auto"?t.value:e.value==="dark"),o=()=>{if(typeof window<"u"){const _=window.matchMedia("(prefers-color-scheme: dark)");t.value=_.matches}};let a=null;const l=_=>{t.value=_.matches},i=()=>{if(typeof document<"u"){const _=document.documentElement;s.value?_.setAttribute("data-theme","dark"):_.removeAttribute("data-theme")}},r=_=>{typeof localStorage<"u"&&localStorage.setItem("hayaku-theme",_)},c=()=>{if(typeof localStorage<"u"){const _=localStorage.getItem("hayaku-theme");if(_&&["light","dark","auto"].includes(_))return _}return"auto"},d=()=>{e.value==="auto"?e.value="dark":e.value==="dark"?e.value="light":e.value="auto",r(e.value)},p=_=>{e.value=_,r(_)},v=()=>{e.value=c(),o(),typeof window<"u"&&(a=window.matchMedia("(prefers-color-scheme: dark)"),a.addEventListener("change",l)),i()},g=()=>{a&&a.removeEventListener("change",l)};return at(s,()=>{i()},{immediate:!0}),at(e,()=>{i()}),vt(()=>{v()}),Wt(()=>{g()}),{theme:e,isDark:s,toggleTheme:d,setTheme:p,systemPrefersDark:t}}const tt=(e,t)=>{const s=e.__vccOpts||e;for(const[o,a]of t)s[o]=a;return s};function zn(){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})),a=()=>{e.value=!1,s&&(s(!0),s=null)},l=()=>{e.value=!1,s&&(s(!1),s=null)};return{visible:ve(()=>e.value),config:ve(()=>t.value),show:o,handleConfirm:a,handleCancel:l}}const lg={key:0,class:"dialog-icon"},ig={class:"dialog-title"},rg={key:1,class:"dialog-message"},cg={class:"dialog-actions"},ug=Xe({__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,a=ve(()=>({info:"fluent-color:question-circle-24",warning:"fluent-color:warning-24",danger:"fluent-color:error-circle-24"})[s.type]),l=ve(()=>({info:"btn-primary",warning:"btn-warning",danger:"btn-error"})[s.type]),i=()=>{o("confirm")},r=()=>{o("cancel")};return(c,d)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"confirm-dialog-overlay",onClick:Be(r,["self"])},[n("div",{class:$e(["confirm-dialog",`type-${e.type}`])},[e.showIcon?(u(),f("div",lg,[m(b,{icon:a.value},null,8,["icon"])])):T("",!0),n("h3",ig,h(e.title),1),e.message?(u(),f("p",rg,h(e.message),1)):T("",!0),n("div",cg,[e.cancelText?(u(),f("button",{key:0,class:"btn btn-outline",onClick:r},h(e.cancelText),1)):T("",!0),n("button",{class:$e(["btn",l.value]),onClick:i},h(e.confirmText),3)])],2)])):T("",!0)]),_:1})]))}}),_n=tt(ug,[["__scopeId","data-v-ac939d46"]]);function Kt(){const e=k([]),t=(r,c="info",d=3e3,p=!0)=>{const v=`${Date.now()}-${Math.random()}`,g={id:v,message:r,type:c,duration:d,closable:p};return e.value.push(g),d>0&&setTimeout(()=>{s(v)},d),v},s=r=>{const c=e.value.findIndex(d=>d.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 dg={class:"toast-content"},fg={class:"toast-message"},pg=["onClick"],vg=Xe({__name:"Toast",props:{toasts:{}},emits:["remove"],setup(e,{emit:t}){const s=t,o=l=>{const i={success:"mdi:check-circle",error:"mdi:alert-circle",info:"mdi:information",warning:"mdi:alert"};return i[l]||i.info},a=l=>{s("remove",l)};return(l,i)=>(u(),Ke(Xt,{to:"body"},[m(Lu,{name:"toast",tag:"div",class:"toast-container"},{default:pt(()=>[(u(!0),f(ge,null,Ee(e.toasts,r=>(u(),f("div",{key:r.id,class:$e(["toast",`toast-${r.type}`])},[n("div",dg,[m(b,{icon:o(r.type),class:"toast-icon"},null,8,["icon"]),n("span",fg,h(r.message),1)]),r.closable?(u(),f("button",{key:0,class:"toast-close",onClick:c=>a(r.id)},[m(b,{icon:"mdi:close"})],8,pg)):T("",!0)],2))),128))]),_:1})]))}}),ds=tt(vg,[["__scopeId","data-v-8adff0c8"]]),mg={class:"setup-wizard"},hg={class:"wizard-card"},gg={class:"steps-indicator"},yg={key:0,class:"wizard-content step-1"},bg={class:"setting-group"},_g={class:"setting-label"},wg={class:"path-input-group"},kg={key:0,class:"setting-error"},$g={class:"quick-options"},Cg=["onClick"],Ig={key:1,class:"wizard-content step-2"},Sg={class:"setting-group"},Ag={class:"setting-label"},xg={class:"wizard-actions"},Tg=["disabled"],Eg=Xe({__name:"SetupWizard",emits:["complete"],setup(e,{emit:t}){const s=t,o=k(1),a=k(""),l=k(""),i=k(3),r=k(!0),c=k(!0),{visible:d,config:p,show:v,handleConfirm:g,handleCancel:_}=zn(),{toasts:w,error:C,removeToast:$}=Kt(),A=ve(()=>a.value.trim().length>0&&!l.value);vt(()=>{setTimeout(()=>{c.value=!1},100)});const x=[{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"}],M=()=>{if(l.value="",!!a.value.trim()){if(a.value.includes("~")){l.value="路径不能包含 ~ 符号,请使用完整路径(例如:/Users/你的用户名/Downloads/Hayaku/";return}if(!a.value.startsWith("/")){l.value="路径必须是绝对路径,以 / 开头";return}a.value.endsWith("/")||(l.value="路径必须以 / 结尾")}},K=async()=>{await v({title:"路径格式说明",message:"请输入完整的绝对路径(不能使用 ~ 符号),例如:/Users/你的用户名/Downloads/Hayaku/。注意:必须以 / 开头并以 / 结尾",type:"info",confirmText:"我知道了",cancelText:""})},W=()=>{g()},z=()=>{_()},re=async()=>{if(o.value<2&&a.value&&!l.value)try{const Q=await te.validatePath(a.value);if(!Q.exists){l.value="目录不存在,请选择有效的目录";return}if(!Q.isDirectory){l.value="所选路径不是目录";return}o.value++}catch(Q){console.error("验证路径失败:",Q),l.value="无法验证目录是否存在"}},V=()=>{o.value>1&&o.value--},q=async()=>{try{await te.updateSettings({download_path:a.value,concurrent_downloads:i.value.toString(),auto_check_update:r.value?"true":"false"}),s("complete")}catch(Q){console.error("保存配置失败:",Q),C("保存配置失败,请重试",4e3)}};return(Q,E)=>(u(),f("div",mg,[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),E[15]||(E[15]=ha('<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",hg,[E[14]||(E[14]=n("div",{class:"wizard-header"},[n("h1",{class:"wizard-title"},"欢迎使用"),n("p",{class:"wizard-subtitle"},"让我们先进行简单的配置")],-1)),n("div",gg,[n("div",{class:$e(["step",{active:o.value===1}])},[...E[2]||(E[2]=[n("div",{class:"step-circle"},"1",-1),n("span",null,"下载路径",-1)])],2),E[4]||(E[4]=n("div",{class:"step-line"},null,-1)),n("div",{class:$e(["step",{active:o.value===2}])},[...E[3]||(E[3]=[n("div",{class:"step-circle"},"2",-1),n("span",null,"偏好设置",-1)])],2)]),o.value===1?(u(),f("div",yg,[n("div",bg,[n("label",_g,[m(b,{icon:"mdi:folder-download"}),E[5]||(E[5]=Ce(" 输入默认下载位置 ",-1))]),n("div",wg,[Qe(n("input",{ref:"pathInputRef","onUpdate:modelValue":E[0]||(E[0]=L=>a.value=L),type:"text",class:"path-input",placeholder:"/Users/你的用户名/Downloads/Hayaku/",onInput:M},null,544),[[ot,a.value]]),n("button",{class:"browse-btn",onClick:K},[m(b,{icon:"mdi:help-circle"}),E[6]||(E[6]=Ce(" 帮助 ",-1))])]),E[7]||(E[7]=n("p",{class:"setting-hint"},"请输入完整的绝对路径,不能使用 ~ 符号",-1)),l.value?(u(),f("p",kg,h(l.value),1)):T("",!0)]),n("div",$g,[E[8]||(E[8]=n("p",{class:"quick-label"},"快速选择:",-1)),(u(),f(ge,null,Ee(x,L=>n("button",{key:L.value,class:"quick-option",onClick:X=>{a.value=L.value,M()}},[m(b,{icon:L.icon},null,8,["icon"]),Ce(" "+h(L.label),1)],8,Cg)),64))])])):o.value===2?(u(),f("div",Ig,[n("div",Sg,[n("label",Ag,[m(b,{icon:"mdi:download-multiple"}),E[9]||(E[9]=Ce(" 最大并发下载数 ",-1))]),Qe(n("select",{"onUpdate:modelValue":E[1]||(E[1]=L=>i.value=L),class:"setting-select"},[...E[10]||(E[10]=[n("option",{value:1},"1个较慢但稳定",-1),n("option",{value:3},"3个推荐",-1),n("option",{value:5},"5个快速",-1)])],512),[[vi,i.value]])])])):T("",!0),n("div",xg,[o.value>1?(u(),f("button",{key:0,class:"btn btn-secondary",onClick:V},[m(b,{icon:"mdi:arrow-left"}),E[11]||(E[11]=Ce(" 上一步 ",-1))])):T("",!0),o.value<2?(u(),f("button",{key:1,class:"btn btn-primary",onClick:re,disabled:!A.value},[E[12]||(E[12]=Ce(" 下一步 ",-1)),m(b,{icon:"mdi:arrow-right"})],8,Tg)):(u(),f("button",{key:2,class:"btn btn-primary btn-finish",onClick:q},[m(b,{icon:"mdi:check"}),E[13]||(E[13]=Ce(" 完成设置 ",-1))]))])]),m(_n,{visible:Z(d),title:Z(p).title,message:Z(p).message,type:Z(p).type,confirmText:Z(p).confirmText,cancelText:Z(p).cancelText,onConfirm:W,onCancel:z},null,8,["visible","title","message","type","confirmText","cancelText"]),m(ds,{toasts:Z(w),onRemove:Z($)},null,8,["toasts","onRemove"])]))}}),Rg=tt(Eg,[["__scopeId","data-v-e30f1f17"]]),Ug={class:"error-card"},Dg={class:"error-icon-container"},Ng={key:0,class:"error-details"},Mg={class:"detail-item"},Pg={class:"detail-value"},Lg={key:0,class:"detail-item detail-status"},Og={class:"tech-details"},Fg={key:0,class:"tech-content"},Vg={class:"tech-item"},Bg={class:"tech-value"},jg={class:"tech-item"},qg={class:"tech-value"},Hg={class:"tech-item"},zg={class:"tech-value"},Wg=Xe({__name:"ErrorPage",props:{errorMessage:{},errorCode:{},requestUrl:{},statusCode:{}},emits:["retry"],setup(e,{emit:t}){const{isDark:s}=wd(),o=t,a=k(!1),l=()=>{o("retry")},i=r=>r&&r>=500?"status-5xx":"";return(r,c)=>(u(),f("div",{class:$e(["error-page",{"light-theme":!Z(s)}])},[c[9]||(c[9]=ha('<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",Ug,[n("div",Dg,[m(b,{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?(u(),f("div",Ng,[n("div",Mg,[c[1]||(c[1]=n("span",{class:"detail-label"},"错误信息:",-1)),n("span",Pg,h(e.errorMessage),1)]),e.statusCode?(u(),f("div",Lg,[c[2]||(c[2]=n("span",{class:"detail-label"},"HTTP 状态:",-1)),n("span",{class:$e(["detail-value status-badge",i(e.statusCode)])},h(e.statusCode),3)])):T("",!0)])):T("",!0),n("button",{class:"retry-button",onClick:l},[m(b,{icon:"mdi:refresh",class:"retry-icon"}),c[3]||(c[3]=Ce(" 重试连接 ",-1))]),n("div",Og,[n("button",{class:"tech-toggle",onClick:c[0]||(c[0]=d=>a.value=!a.value)},[m(b,{icon:a.value?"mdi:chevron-up":"mdi:chevron-down",class:"toggle-icon"},null,8,["icon"]),Ce(" "+h(a.value?"隐藏":"显示")+"技术细节 ",1)]),a.value?(u(),f("div",Fg,[n("div",Vg,[c[4]||(c[4]=n("span",{class:"tech-label"},"错误代码:",-1)),n("code",Bg,h(e.errorCode||"N/A"),1)]),n("div",jg,[c[5]||(c[5]=n("span",{class:"tech-label"},"请求地址:",-1)),n("code",qg,h(e.requestUrl||"N/A"),1)]),n("div",Hg,[c[6]||(c[6]=n("span",{class:"tech-label"},"状态码:",-1)),n("code",zg,h(e.statusCode||"N/A"),1)])])):T("",!0)])])],2))}}),Kg=tt(Wg,[["__scopeId","data-v-97516c7f"]]),Gg={class:"brand-mini"},Qg={class:"mini-icon morphing-logo",viewBox:"0 0 134 78",xmlns:"http://www.w3.org/2000/svg"},Jg={class:"text-morph-container"},Zg=Xe({__name:"GpuBadge",setup(e){const t=["nvidia","amd","intel"],s=k(!1),o=k(!1),a=k(0),l=ve(()=>t[Math.min(a.value,t.length-1)]);return vt(()=>{s.value=!0,setTimeout(()=>{a.value=0},0),setTimeout(()=>{a.value=1},3e3),setTimeout(()=>{a.value=2},6e3),setTimeout(()=>{o.value=!0,setTimeout(()=>{s.value=!1},1e3)},9e3)}),(i,r)=>s.value?(u(),f("div",{key:0,class:$e(["gpu-badge",{visible:!o.value,fading:o.value}])},[n("div",{class:$e(["gpu-badge-content",l.value])},[n("div",Gg,[(u(),f("svg",Qg,[n("g",{class:$e(["logo-group nvidia-group",{active:l.value==="nvidia"}])},[...r[0]||(r[0]=[ha('<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:l.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:l.value==="intel"}])},[...r[2]||(r[2]=[ha('<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",Jg,[n("span",{class:$e(["morph-text",{active:l.value==="nvidia"}])},[...r[3]||(r[3]=[Ce(" NVIDIA ",-1),n("span",{class:"sub-brand-text"},"RTX",-1)])],2),n("span",{class:$e(["morph-text",{active:l.value==="amd"}])},[...r[4]||(r[4]=[Ce(" AMD ",-1),n("span",{class:"sub-brand-text"},"Radeon",-1)])],2),n("span",{class:$e(["morph-text",{active:l.value==="intel"}])},[...r[5]||(r[5]=[Ce(" Intel ",-1),n("span",{class:"sub-brand-text"},"CORE x Arc",-1)])],2)])])],2)],2)):T("",!0)}}),Xg=tt(Zg,[["__scopeId","data-v-730d2ac5"]]),ln=k(null),rn=k(!1),oo=k(!1);function Yg(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 zr(e){return{...e,role:Yg(e.role)}}function qs(){const e=async()=>{var r;const i=localStorage.getItem("token");if(!i){ln.value=null,rn.value=!1;return}try{const d=await te.getAuthStatus(),p=d.data;p&&d.success===!0?(ln.value=zr(p),rn.value=!0):(ln.value=null,rn.value=!1,localStorage.removeItem("token"),localStorage.removeItem("refreshToken"))}catch(c){console.error("检查登录状态失败:",c),((r=c.response)==null?void 0:r.status)===401?(ln.value=null,rn.value=!1,localStorage.removeItem("token"),localStorage.removeItem("refreshToken")):i||(ln.value=null,rn.value=!1)}},t=async i=>{var r,c,d;oo.value=!0;try{const p=await te.login(i);return p.success&&((r=p.data)!=null&&r.user)?(ln.value=zr(p.data.user),rn.value=!0,e().catch(()=>{}),{success:!0,message:p.message||"登录成功"}):{success:!1,message:p.message||"登录失败"}}catch(p){return{success:!1,message:((d=(c=p.response)==null?void 0:c.data)==null?void 0:d.message)||p.message||"登录失败"}}finally{oo.value=!1}},s=async i=>{var r,c;oo.value=!0;try{const d=await te.register(i);return d.success?(await e(),{success:!0,message:d.message||"注册成功"}):{success:!1,message:d.message||"注册失败"}}catch(d){return{success:!1,message:((c=(r=d.response)==null?void 0:r.data)==null?void 0:c.message)||d.message||"注册失败"}}finally{oo.value=!1}},o=async()=>{try{await te.logout(),await e()}catch(i){console.error("登出失败:",i),await e()}},a=ve(()=>ln.value),l=ve(()=>rn.value);return{user:a,isLoggedIn:l,loading:ve(()=>oo.value),login:t,register:s,logout:o,checkAuthStatus:e}}const e1=Object.freeze(Object.defineProperty({__proto__:null,useAuth:qs},Symbol.toStringTag,{value:"Module"})),t1={class:"dialog-header"},s1={class:"header-content"},n1={class:"header-icon-wrapper"},o1={class:"dialog-tabs"},a1={class:"dialog-content"},l1={class:"form-group"},i1={class:"form-label"},r1={class:"input-wrapper"},c1={class:"form-group"},u1={class:"form-label"},d1={class:"input-wrapper"},f1={key:0,class:"error-message"},p1=["disabled"],v1={key:1,class:"loading-spinner"},m1={class:"form-group"},h1={class:"form-label"},g1={class:"input-wrapper"},y1={class:"form-group"},b1={class:"form-label"},_1={class:"input-wrapper"},w1={class:"form-group"},k1={class:"form-label"},$1={class:"input-wrapper"},C1={class:"form-group"},I1={class:"form-label"},S1={class:"input-wrapper"},A1={key:0,class:"error-message"},x1=["disabled"],T1={key:1,class:"loading-spinner"},E1=Xe({__name:"LoginDialog",props:{show:{type:Boolean}},emits:["close","success"],setup(e,{emit:t}){const s=e,o=t,{login:a,register:l,loading:i}=qs(),{success:r}=Kt(),c=k("login"),d=k({username:"",password:""}),p=k({username:"",password:"",nickName:"",email:""}),v=k(""),g=k(""),_=()=>{o("close"),v.value="",g.value="",d.value={username:"",password:""},p.value={username:"",password:"",nickName:"",email:""}},w=async()=>{v.value="";const $=await a(d.value);$.success?(r("登录成功",2e3),o("success"),_()):v.value=$.message},C=async()=>{g.value="";const $=await l(p.value);$.success?(r("注册成功",2e3),o("success"),_()):g.value=$.message};return at(()=>s.show,$=>{$&&(c.value="login",v.value="",g.value="")}),($,A)=>(u(),Ke(It,{name:"dialog-fade"},{default:pt(()=>[e.show?(u(),f("div",{key:0,class:"login-overlay",onClick:Be(_,["self"])},[n("div",{class:"login-dialog",onClick:A[8]||(A[8]=Be(()=>{},["stop"]))},[n("div",t1,[n("div",s1,[n("div",n1,[m(b,{icon:"fluent-color:phone-laptop-16",class:"header-icon"})]),A[9]||(A[9]=n("h2",{class:"dialog-title"},"登录 / 注册",-1))]),n("button",{onClick:_,class:"close-button","aria-label":"关闭"},[m(b,{icon:"fluent-color:dismiss-circle-24",class:"close-icon"})])]),n("div",o1,[n("button",{class:$e(["tab-button",{active:c.value==="login"}]),onClick:A[0]||(A[0]=x=>c.value="login")},[m(b,{icon:"fluent-emoji-flat:backhand-index-pointing-right",class:"tab-icon"}),A[10]||(A[10]=n("span",null,"登录",-1))],2),n("button",{class:$e(["tab-button",{active:c.value==="register"}]),onClick:A[1]||(A[1]=x=>c.value="register")},[m(b,{icon:"fluent-color:person-add-24",class:"tab-icon"}),A[11]||(A[11]=n("span",null,"注册",-1))],2)]),n("div",a1,[c.value==="login"?(u(),f("form",{key:0,onSubmit:Be(w,["prevent"]),class:"login-form"},[n("div",l1,[n("label",i1,[m(b,{icon:"fluent-color:person-24",class:"label-icon"}),A[12]||(A[12]=n("span",null,"用户名",-1))]),n("div",r1,[m(b,{icon:"fluent-color:person-20",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[2]||(A[2]=x=>d.value.username=x),type:"text",class:"form-input",placeholder:"请输入用户名",required:"",autocomplete:"username"},null,512),[[ot,d.value.username]])])]),n("div",c1,[n("label",u1,[m(b,{icon:"fluent-color:lock-closed-24",class:"label-icon"}),A[13]||(A[13]=n("span",null,"密码",-1))]),n("div",d1,[m(b,{icon:"fluent-color:lock-closed-20",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[3]||(A[3]=x=>d.value.password=x),type:"password",class:"form-input",placeholder:"请输入密码",required:"",autocomplete:"current-password"},null,512),[[ot,d.value.password]])])]),v.value?(u(),f("div",f1,[m(b,{icon:"fluent-color:error-circle-24-filled",class:"error-icon"}),n("span",null,h(v.value),1)])):T("",!0),n("button",{type:"submit",class:"btn btn-primary",disabled:Z(i)},[Z(i)?(u(),f("div",v1)):(u(),Ke(b,{key:0,icon:"fluent-emoji-flat:backhand-index-pointing-right",class:"btn-icon"})),n("span",null,h(Z(i)?"登录中...":"登录"),1)],8,p1)],32)):T("",!0),c.value==="register"?(u(),f("form",{key:1,onSubmit:Be(C,["prevent"]),class:"login-form"},[n("div",m1,[n("label",h1,[m(b,{icon:"fluent-color:person-24",class:"label-icon"}),A[14]||(A[14]=n("span",null,"用户名",-1))]),n("div",g1,[m(b,{icon:"fluent-color:person-20",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[4]||(A[4]=x=>p.value.username=x),type:"text",class:"form-input",placeholder:"请输入用户名",required:"",autocomplete:"username"},null,512),[[ot,p.value.username]])])]),n("div",y1,[n("label",b1,[m(b,{icon:"fluent-color:lock-closed-24",class:"label-icon"}),A[15]||(A[15]=n("span",null,"密码",-1))]),n("div",_1,[m(b,{icon:"fluent-color:lock-closed-20",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[5]||(A[5]=x=>p.value.password=x),type:"password",class:"form-input",placeholder:"请输入密码",required:"",autocomplete:"new-password"},null,512),[[ot,p.value.password]])])]),n("div",w1,[n("label",k1,[m(b,{icon:"fluent-color:certificate-16",class:"label-icon"}),A[16]||(A[16]=n("span",null,"昵称(可选)",-1))]),n("div",$1,[m(b,{icon:"fluent-color:certificate-16",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[6]||(A[6]=x=>p.value.nickName=x),type:"text",class:"form-input",placeholder:"请输入昵称",autocomplete:"nickname"},null,512),[[ot,p.value.nickName]])])]),n("div",C1,[n("label",I1,[m(b,{icon:"fluent-color:mail-24",class:"label-icon"}),A[17]||(A[17]=n("span",null,"邮箱(可选)",-1))]),n("div",S1,[m(b,{icon:"fluent-color:mail-20",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":A[7]||(A[7]=x=>p.value.email=x),type:"email",class:"form-input",placeholder:"请输入邮箱",autocomplete:"email"},null,512),[[ot,p.value.email]])])]),g.value?(u(),f("div",A1,[m(b,{icon:"fluent-color:error-circle-24-filled",class:"error-icon"}),n("span",null,h(g.value),1)])):T("",!0),n("button",{type:"submit",class:"btn btn-primary",disabled:Z(i)},[Z(i)?(u(),f("div",T1)):(u(),Ke(b,{key:0,icon:"fluent-color:person-add-24",class:"btn-icon"})),n("span",null,h(Z(i)?"注册中...":"注册"),1)],8,x1)],32)):T("",!0)])])])):T("",!0)]),_:1}))}}),kd=tt(E1,[["__scopeId","data-v-34074855"]]),R1={class:"version-list-container"},U1={key:0,class:"empty"},D1={key:1},N1={class:"version-filters"},M1={class:"versions-list"},P1={class:"version-info"},L1={class:"version-number-wrapper"},O1={key:0,class:"version-tag beta-tag"},F1={key:1,class:"version-tag release-tag"},V1={class:"version-number"},B1={key:0,class:"version-full"},j1={key:0,class:"version-url"},q1=["onClick","disabled"],H1={key:"spinner",class:"spinner-small"},z1=Xe({__name:"VersionList",props:{bundleId:{default:""},versions:{default:()=>[]}},setup(e){const t=e,s=ve(()=>t.versions);k(!1),k("");const o=k([]),a=k([]),l=k("all"),{toasts:i,success:r,error:c,removeToast:d}=Kt(),p=ve(()=>l.value==="all"?s.value||[]:l.value==="release"?s.value.filter(g=>!g.beta):s.value.filter(g=>g.beta)),v=async(g,_)=>{if(!g.url){c("版本URL为空");return}o.value.push(_);try{await te.startDownload(g.url),r(`下载已启动: ${g.version}`,3e3),o.value=o.value.filter(w=>w!==_),a.value.push(_),setTimeout(()=>{a.value=a.value.filter(w=>w!==_)},2e3)}catch(w){console.error("启动下载失败:",w),c(`下载启动失败: ${g.version}`,4e3),setTimeout(()=>{o.value=o.value.filter(C=>C!==_)},300)}};return(g,_)=>(u(),f(ge,null,[n("div",R1,[s.value.length===0?(u(),f("div",U1,[m(b,{icon:"mdi:package-variant",class:"empty-icon"}),_[3]||(_[3]=n("p",null,"暂无可用版本",-1))])):(u(),f("div",D1,[n("div",N1,[n("button",{class:$e(["filter-btn",{active:l.value==="all"}]),onClick:_[0]||(_[0]=w=>l.value="all")}," 全部 ",2),n("button",{class:$e(["filter-btn",{active:l.value==="release"}]),onClick:_[1]||(_[1]=w=>l.value="release")}," 正式版 ",2),n("button",{class:$e(["filter-btn",{active:l.value==="beta"}]),onClick:_[2]||(_[2]=w=>l.value="beta")}," 测试版 ",2)]),n("div",M1,[(u(!0),f(ge,null,Ee(p.value,(w,C)=>(u(),f("div",{key:C,class:$e(["version-item",{downloading:o.value.includes(C)}])},[n("div",P1,[n("div",L1,[w.beta?(u(),f("span",O1,"测试版")):(u(),f("span",F1,"正式版")),n("span",V1,[Ce(h(w.version)+" ",1),w.fullVersion?(u(),f("span",B1," ("+h(w.fullVersion)+") ",1)):T("",!0)])]),w.url?(u(),f("span",j1,[m(b,{icon:"mdi:link",class:"url-icon"}),Ce(" "+h(w.url),1)])):T("",!0)]),n("button",{class:$e(["btn btn-sm",{"btn-primary":!o.value.includes(C)&&!a.value.includes(C),"btn-downloading":o.value.includes(C),"btn-success-state":a.value.includes(C)}]),onClick:$=>v(w,C),disabled:o.value.includes(C)||a.value.includes(C)},[m(It,{name:"fade",mode:"out-in"},{default:pt(()=>[!o.value.includes(C)&&!a.value.includes(C)?(u(),Ke(b,{key:"icon-download",icon:"mdi:download",class:"btn-icon"})):o.value.includes(C)?(u(),f("div",H1)):(u(),Ke(b,{key:"icon-success",icon:"mdi:check-circle",class:"btn-icon"}))]),_:2},1024),m(It,{name:"fade",mode:"out-in"},{default:pt(()=>[(u(),f("span",{key:o.value.includes(C)?"downloading":a.value.includes(C)?"success":"download"},h(o.value.includes(C)?"下载中...":a.value.includes(C)?"已启动":"下载"),1))]),_:2},1024)],10,q1)],2))),128))])]))]),m(ds,{toasts:Z(i),onRemove:Z(d)},null,8,["toasts","onRemove"])],64))}}),$d=tt(z1,[["__scopeId","data-v-9ee403b9"]]),W1={class:"dialog-header"},K1={class:"header-content"},G1={class:"app-info"},Q1={class:"app-icon-wrapper"},J1=["src","alt"],Z1={key:1,class:"app-icon-placeholder"},X1={class:"app-details"},Y1={class:"app-name"},ey={class:"app-bundle-id"},ty={class:"dialog-content"},sy=Xe({__name:"VersionSelectorDialog",props:{visible:{type:Boolean},app:{}},emits:["close"],setup(e,{emit:t}){const s=e,o=t,a=ve(()=>{var r;return(r=s.app)!=null&&r.hasIcon?te.getAppIconUrl(s.app.bundleId):null}),l=()=>{o("close")},i=r=>{r.target===r.currentTarget&&l()};return(r,c)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"dialog-fade"},{default:pt(()=>{var d,p;return[e.visible&&e.app?(u(),f("div",{key:0,class:"version-dialog-overlay",onClick:i},[n("div",{class:"version-dialog-container",onClick:c[0]||(c[0]=Be(()=>{},["stop"]))},[n("div",W1,[n("div",K1,[n("div",G1,[n("div",Q1,[a.value?(u(),f("img",{key:0,src:a.value,alt:e.app.name,class:"app-icon"},null,8,J1)):(u(),f("div",Z1,h(e.app.name.charAt(0).toUpperCase()),1))]),n("div",X1,[n("h2",Y1,h(e.app.name),1),n("p",ey,h(e.app.bundleId),1)])]),n("button",{class:"close-button",onClick:l,"aria-label":"关闭"},[m(b,{icon:"mdi:close"})])])]),n("div",ty,[e.app?(u(),Ke($d,{key:0,bundleId:e.app.bundleId,versions:((p=(d=e.app)==null?void 0:d.update)==null?void 0:p.versions)||[]},null,8,["bundleId","versions"])):T("",!0)])])])):T("",!0)]}),_:1})]))}}),ny=tt(sy,[["__scopeId","data-v-22d36606"]]),oy={class:"search-box"},ay=["placeholder"],ly={class:"search-actions"},iy=["disabled"],ry={key:0,class:"focus-indicator"},cy={class:"history-content"},uy={key:0,class:"history-section"},dy={class:"history-text"},fy={key:1,class:"history-section"},py={class:"history-header"},vy=["onClick"],my={class:"history-text"},hy=["onClick"],gy={key:2,class:"empty-history"},Wr="search_history",Jo=10,yy=Xe({__name:"SearchBox",props:{modelValue:{default:""},placeholder:{default:"搜索应用、游戏等"},width:{default:400}},emits:["update:modelValue","search","clear"],setup(e,{emit:t}){const s=e,o=t,a=k(s.modelValue),l=k(!1),i=k(null),r=k([]);let c=null,d=null;const p=ve(()=>l.value&&(a.value.trim()||r.value.length>0)),v=ve(()=>{if(!a.value.trim())return r.value.slice(0,Jo);const V=a.value.trim().toLowerCase();return r.value.filter(q=>q.toLowerCase().includes(V)).slice(0,Jo)}),g=()=>{try{const V=localStorage.getItem(Wr);V?r.value=JSON.parse(V):(r.value=["QQ","腾讯QQ","QQ邮箱","微信","QQ音乐","Photoshop","Lightroom","Final Cut Pro","Sketch","Sublime Text"],_())}catch(V){console.error("加载搜索历史失败:",V),r.value=[]}},_=()=>{try{localStorage.setItem(Wr,JSON.stringify(r.value))}catch(V){console.error("保存搜索历史失败:",V)}},w=V=>{if(!V.trim())return;const q=r.value.indexOf(V);q!==-1&&r.value.splice(q,1),r.value.unshift(V),r.value.length>Jo&&(r.value=r.value.slice(0,Jo)),_()},C=V=>{r.value.splice(V,1),_()},$=()=>{r.value=[],_()},A=V=>{a.value=V,o("update:modelValue",V),M()};at(()=>s.modelValue,V=>{a.value=V});const x=()=>{o("update:modelValue",a.value),c&&clearTimeout(c),c=window.setTimeout(()=>{a.value.trim()&&o("search",a.value.trim())},300)},M=()=>{var V;c&&clearTimeout(c),a.value.trim()&&(w(a.value.trim()),o("search",a.value.trim())),(V=i.value)==null||V.blur()},K=()=>{var V;a.value="",o("update:modelValue",""),o("clear"),(V=i.value)==null||V.focus()},W=()=>{d&&(clearTimeout(d),d=null),l.value=!0},z=()=>{d=window.setTimeout(()=>{l.value=!1},200)},re=()=>{var V;(V=i.value)==null||V.blur()};return vt(()=>{g()}),(V,q)=>(u(),f("div",oy,[n("div",{class:"search-wrapper",style:Lt({width:typeof s.width=="number"?`${s.width}px`:s.width})},[n("div",{class:$e(["search-container",{"is-focused":l.value}])},[Qe(n("input",{ref_key:"inputRef",ref:i,"onUpdate:modelValue":q[0]||(q[0]=Q=>a.value=Q),type:"text",class:"search-input",placeholder:e.placeholder,onInput:x,onKeydown:[mn(M,["enter"]),mn(re,["escape"])],onFocus:W,onBlur:z},null,40,ay),[[ot,a.value]]),n("div",ly,[a.value?(u(),f("button",{key:0,class:"action-button clear-button",onClick:K,onMousedown:q[1]||(q[1]=Be(()=>{},["prevent"]))},[m(b,{icon:"mdi:close-circle",class:"action-icon"})],32)):T("",!0),n("button",{class:"action-button search-button",disabled:!a.value.trim(),onClick:M,onMousedown:q[2]||(q[2]=Be(()=>{},["prevent"]))},[m(b,{icon:"mdi:magnify",class:"action-icon"})],40,iy)])],2),l.value?(u(),f("div",ry)):T("",!0),l.value&&p.value?(u(),f("div",{key:1,class:"history-dropdown",onMousedown:q[6]||(q[6]=Be(()=>{},["prevent"]))},[n("div",cy,[a.value.trim()?(u(),f("div",uy,[n("div",{class:"history-item suggestion-item",onClick:q[3]||(q[3]=Q=>A(a.value.trim()))},[m(b,{icon:"fluent-color:search-sparkle-24",class:"history-icon"}),n("span",dy,h(a.value.trim()),1)])])):T("",!0),r.value.length>0?(u(),f("div",fy,[n("div",py,[q[7]||(q[7]=n("span",{class:"history-title"},"历史搜索",-1)),n("button",{class:"clear-history-btn",onClick:$,onMousedown:q[4]||(q[4]=Be(()=>{},["prevent"]))}," 清除 ",32)]),(u(!0),f(ge,null,Ee(v.value,(Q,E)=>(u(),f("div",{key:E,class:"history-item",onClick:L=>A(Q)},[m(b,{icon:"fluent-color:clock-24",class:"history-icon"}),n("span",my,h(Q),1),n("button",{class:"delete-history-btn",onClick:Be(L=>C(E),["stop"]),onMousedown:q[5]||(q[5]=Be(()=>{},["prevent"]))},[m(b,{icon:"fluent-color:dismiss-circle-24",class:"delete-icon"})],40,hy)],8,vy))),128))])):T("",!0),!a.value.trim()&&r.value.length===0?(u(),f("div",gy,[m(b,{icon:"fluent-color:history-24",class:"empty-icon"}),q[8]||(q[8]=n("span",{class:"empty-text"},"暂无搜索历史",-1))])):T("",!0)])],32)):T("",!0)],4)]))}}),by=tt(yy,[["__scopeId","data-v-0fed5efb"]]),_y={class:"sidebar"},wy={key:0,class:"sidebar-group top-group"},ky=["onClick"],$y={class:"item-content"},Cy={key:1,class:"item-text"},Iy={key:0,class:"item-badge"},Sy={key:1,class:"sidebar-group bottom-group"},Ay=["onClick"],xy={class:"item-content"},Ty={key:1,class:"item-text"},Ey={key:0,class:"item-badge"},Ry=Xe({__name:"Sidebar",props:{items:{default:()=>[]},activeItem:{default:""}},emits:["item-click"],setup(e,{emit:t}){const s=e,o=t,a=ve(()=>s.items.filter(r=>!r.group||r.group==="top")),l=ve(()=>s.items.filter(r=>r.group==="bottom")),i=(r,c)=>{o("item-click",r,c)};return(r,c)=>(u(),f("div",_y,[a.value.length>0?(u(),f("div",wy,[(u(!0),f(ge,null,Ee(a.value,(d,p)=>(u(),f("div",{key:d.id||p,class:$e(["sidebar-item",{active:d.id===e.activeItem}]),onClick:v=>i(d,p)},[c[0]||(c[0]=n("div",{class:"item-indicator"},null,-1)),n("div",$y,[Nn(r.$slots,"item",{item:d,index:p},()=>[d.icon?(u(),Ke(b,{key:0,icon:d.icon,class:"item-icon"},null,8,["icon"])):T("",!0),d.label?(u(),f("span",Cy,h(d.label),1)):T("",!0)]),d.badge&&d.badge>0?(u(),f("span",Iy,h(d.badge>99?"99+":d.badge),1)):T("",!0)])],10,ky))),128))])):T("",!0),c[2]||(c[2]=n("div",{class:"sidebar-spacer"},null,-1)),l.value.length>0?(u(),f("div",Sy,[(u(!0),f(ge,null,Ee(l.value,(d,p)=>(u(),f("div",{key:d.id||`bottom-${p}`,class:$e(["sidebar-item",{active:d.id===e.activeItem}]),onClick:v=>i(d,a.value.length+p)},[c[1]||(c[1]=n("div",{class:"item-indicator"},null,-1)),n("div",xy,[Nn(r.$slots,"item",{item:d,index:a.value.length+p},()=>[d.icon?(u(),Ke(b,{key:0,icon:d.icon,class:"item-icon"},null,8,["icon"])):T("",!0),d.label?(u(),f("span",Ty,h(d.label),1)):T("",!0)]),d.badge&&d.badge>0?(u(),f("span",Ey,h(d.badge>99?"99+":d.badge),1)):T("",!0)])],10,Ay))),128))])):T("",!0)]))}}),Uy=tt(Ry,[["__scopeId","data-v-04e1a9dc"]]),yl=new Map;async function Cd(e,t){if(!e||e.trim()==="")return"";const s=`avatar-${e}`;if(yl.has(s))return yl.get(s);try{const o=await te.getImage(e,80,200,200);return o&&o.trim()!==""?(yl.set(s,o),o):""}catch(o){return console.error("获取用户头像图片失败:",o,"avatarId:",e),""}}const Dy=["src","alt"],Ny={key:1,class:"avatar-placeholder"},My=Xe({__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"),a=k(null),l=ve(()=>{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 te.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 Cd(v,o.value);s.value=g}catch(g){console.error("加载头像失败:",g),s.value=""}},c=()=>{s.value=""},d=async()=>{if(!(!t.onAvatarLoaded||!s.value))try{if(s.value.startsWith("blob:")){const w=await(await fetch(s.value)).blob();t.onAvatarLoaded(w);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)}},p=()=>{if(!o.value||o.value==="User")return"U";const v=o.value.charAt(0);return/[\u4e00-\u9fa5]/.test(v)?v:v.toUpperCase()};return at(()=>[t.avatarId,t.userId,t.userName],()=>{i()},{immediate:!0}),vt(()=>{i()}),(v,g)=>(u(),f("div",{class:$e(["avatar-wrapper",{small:e.size==="small",medium:e.size==="medium",large:e.size==="large"}]),style:Lt(l.value)},[s.value&&s.value.trim()!==""?(u(),f("img",{key:0,ref_key:"avatarImageRef",ref:a,src:s.value,alt:o.value||e.userName||"User",class:"avatar-image",onError:c,onLoad:d},null,40,Dy)):(u(),f("div",Ny,h(p()),1))],6))}}),Ft=tt(My,[["__scopeId","data-v-51ee3bf9"]]);/*!
* vue-router v4.6.3
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/const Sn=typeof document<"u";function Id(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Py(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Id(e.default)}const mt=Object.assign;function bl(e,t){const s={};for(const o in t){const a=t[o];s[o]=_s(a)?a.map(e):e(a)}return s}const yo=()=>{},_s=Array.isArray;function Kr(e,t){const s={};for(const o in e)s[o]=o in t?t[o]:e[o];return s}const Sd=/#/g,Ly=/&/g,Oy=/\//g,Fy=/=/g,Vy=/\?/g,Ad=/\+/g,By=/%5B/g,jy=/%5D/g,xd=/%5E/g,qy=/%60/g,Td=/%7B/g,Hy=/%7C/g,Ed=/%7D/g,zy=/%20/g;function ki(e){return e==null?"":encodeURI(""+e).replace(Hy,"|").replace(By,"[").replace(jy,"]")}function Wy(e){return ki(e).replace(Td,"{").replace(Ed,"}").replace(xd,"^")}function Wl(e){return ki(e).replace(Ad,"%2B").replace(zy,"+").replace(Sd,"%23").replace(Ly,"%26").replace(qy,"`").replace(Td,"{").replace(Ed,"}").replace(xd,"^")}function Ky(e){return Wl(e).replace(Fy,"%3D")}function Gy(e){return ki(e).replace(Sd,"%23").replace(Vy,"%3F")}function Qy(e){return Gy(e).replace(Oy,"%2F")}function To(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Jy=/\/$/,Zy=e=>e.replace(Jy,"");function _l(e,t,s="/"){let o,a={},l="",i="";const r=t.indexOf("#");let c=t.indexOf("?");return c=r>=0&&c>r?-1:c,c>=0&&(o=t.slice(0,c),l=t.slice(c,r>0?r:t.length),a=e(l.slice(1))),r>=0&&(o=o||t.slice(0,r),i=t.slice(r,t.length)),o=tb(o??t,s),{fullPath:o+l+i,path:o,query:a,hash:To(i)}}function Xy(e,t){const s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function Gr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Yy(e,t,s){const o=t.matched.length-1,a=s.matched.length-1;return o>-1&&o===a&&Fn(t.matched[o],s.matched[a])&&Rd(t.params,s.params)&&e(t.query)===e(s.query)&&t.hash===s.hash}function Fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Rd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(!eb(e[s],t[s]))return!1;return!0}function eb(e,t){return _s(e)?Qr(e,t):_s(t)?Qr(t,e):e===t}function Qr(e,t){return _s(t)?e.length===t.length&&e.every((s,o)=>s===t[o]):e.length===1&&e[0]===t}function tb(e,t){if(e.startsWith("/"))return e;if(!e)return t;const s=t.split("/"),o=e.split("/"),a=o[o.length-1];(a===".."||a===".")&&o.push("");let l=s.length-1,i,r;for(i=0;i<o.length;i++)if(r=o[i],r!==".")if(r==="..")l>1&&l--;else break;return s.slice(0,l).join("/")+"/"+o.slice(i).join("/")}const Ws={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Kl=function(e){return e.pop="pop",e.push="push",e}({}),wl=function(e){return e.back="back",e.forward="forward",e.unknown="",e}({});function sb(e){if(!e)if(Sn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Zy(e)}const nb=/^[^#]+#/;function ob(e,t){return e.replace(nb,"#")+t}function ab(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 Ha=()=>({left:window.scrollX,top:window.scrollY});function lb(e){let t;if("el"in e){const s=e.el,o=typeof s=="string"&&s.startsWith("#"),a=typeof s=="string"?o?document.getElementById(s.slice(1)):document.querySelector(s):s;if(!a)return;t=ab(a,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 Jr(e,t){return(history.state?history.state.position-t:-1)+e}const Gl=new Map;function ib(e,t){Gl.set(e,t)}function rb(e){const t=Gl.get(e);return Gl.delete(e),t}function cb(e){return typeof e=="string"||e&&typeof e=="object"}function Ud(e){return typeof e=="string"||typeof e=="symbol"}let At=function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e}({});const Dd=Symbol("");At.MATCHER_NOT_FOUND+"",At.NAVIGATION_GUARD_REDIRECT+"",At.NAVIGATION_ABORTED+"",At.NAVIGATION_CANCELLED+"",At.NAVIGATION_DUPLICATED+"";function Vn(e,t){return mt(new Error,{type:e,[Dd]:!0},t)}function Ns(e,t){return e instanceof Error&&Dd in e&&(t==null||!!(e.type&t))}const ub=["params","query","hash"];function db(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const s of ub)s in e&&(t[s]=e[s]);return JSON.stringify(t,null,2)}function fb(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;o<s.length;++o){const a=s[o].replace(Ad," "),l=a.indexOf("="),i=To(l<0?a:a.slice(0,l)),r=l<0?null:To(a.slice(l+1));if(i in t){let c=t[i];_s(c)||(c=t[i]=[c]),c.push(r)}else t[i]=r}return t}function Zr(e){let t="";for(let s in e){const o=e[s];if(s=Ky(s),o==null){o!==void 0&&(t+=(t.length?"&":"")+s);continue}(_s(o)?o.map(a=>a&&Wl(a)):[o&&Wl(o)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+s,a!=null&&(t+="="+a))})}return t}function pb(e){const t={};for(const s in e){const o=e[s];o!==void 0&&(t[s]=_s(o)?o.map(a=>a==null?null:""+a):o==null?o:""+o)}return t}const vb=Symbol(""),Xr=Symbol(""),za=Symbol(""),$i=Symbol(""),Ql=Symbol("");function ao(){let e=[];function t(o){return e.push(o),()=>{const a=e.indexOf(o);a>-1&&e.splice(a,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function Js(e,t,s,o,a,l=i=>i()){const i=o&&(o.enterCallbacks[a]=o.enterCallbacks[a]||[]);return()=>new Promise((r,c)=>{const d=g=>{g===!1?c(Vn(At.NAVIGATION_ABORTED,{from:s,to:t})):g instanceof Error?c(g):cb(g)?c(Vn(At.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&o.enterCallbacks[a]===i&&typeof g=="function"&&i.push(g),r())},p=l(()=>e.call(o&&o.instances[a],t,s,d));let v=Promise.resolve(p);e.length<3&&(v=v.then(d)),v.catch(g=>c(g))})}function kl(e,t,s,o,a=l=>l()){const l=[];for(const i of e)for(const r in i.components){let c=i.components[r];if(!(t!=="beforeRouteEnter"&&!i.instances[r]))if(Id(c)){const d=(c.__vccOpts||c)[t];d&&l.push(Js(d,s,o,i,r,a))}else{let d=c();l.push(()=>d.then(p=>{if(!p)throw new Error(`Couldn't resolve component "${r}" at "${i.path}"`);const v=Py(p)?p.default:p;i.mods[r]=p,i.components[r]=v;const g=(v.__vccOpts||v)[t];return g&&Js(g,s,o,i,r,a)()}))}}return l}function mb(e,t){const s=[],o=[],a=[],l=Math.max(t.matched.length,e.matched.length);for(let i=0;i<l;i++){const r=t.matched[i];r&&(e.matched.find(d=>Fn(d,r))?o.push(r):s.push(r));const c=e.matched[i];c&&(t.matched.find(d=>Fn(d,c))||a.push(c))}return[s,o,a]}/*!
* vue-router v4.6.3
* (c) 2025 Eduardo San Martin Morote
* @license MIT
*/let hb=()=>location.protocol+"//"+location.host;function Nd(e,t){const{pathname:s,search:o,hash:a}=t,l=e.indexOf("#");if(l>-1){let i=a.includes(e.slice(l))?e.slice(l).length:1,r=a.slice(i);return r[0]!=="/"&&(r="/"+r),Gr(r,"")}return Gr(s,e)+o+a}function gb(e,t,s,o){let a=[],l=[],i=null;const r=({state:g})=>{const _=Nd(e,location),w=s.value,C=t.value;let $=0;if(g){if(s.value=_,t.value=g,i&&i===w){i=null;return}$=C?g.position-C.position:0}else o(_);a.forEach(A=>{A(s.value,w,{delta:$,type:Kl.pop,direction:$?$>0?wl.forward:wl.back:wl.unknown})})};function c(){i=s.value}function d(g){a.push(g);const _=()=>{const w=a.indexOf(g);w>-1&&a.splice(w,1)};return l.push(_),_}function p(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(mt({},g.state,{scroll:Ha()}),"")}}function v(){for(const g of l)g();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",p),document.removeEventListener("visibilitychange",p)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",p),document.addEventListener("visibilitychange",p),{pauseListeners:c,listen:d,destroy:v}}function Yr(e,t,s,o=!1,a=!1){return{back:e,current:t,forward:s,replaced:o,position:window.history.length,scroll:a?Ha():null}}function yb(e){const{history:t,location:s}=window,o={value:Nd(e,s)},a={value:t.state};a.value||l(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(c,d,p){const v=e.indexOf("#"),g=v>-1?(s.host&&document.querySelector("base")?e:e.slice(v))+c:hb()+e+c;try{t[p?"replaceState":"pushState"](d,"",g),a.value=d}catch(_){console.error(_),s[p?"replace":"assign"](g)}}function i(c,d){l(c,mt({},t.state,Yr(a.value.back,c,a.value.forward,!0),d,{position:a.value.position}),!0),o.value=c}function r(c,d){const p=mt({},a.value,t.state,{forward:c,scroll:Ha()});l(p.current,p,!0),l(c,mt({},Yr(o.value,c,null),{position:p.position+1},d),!1),o.value=c}return{location:o,state:a,push:r,replace:i}}function bb(e){e=sb(e);const t=yb(e),s=gb(e,t.state,t.location,t.replace);function o(l,i=!0){i||s.pauseListeners(),history.go(l)}const a=mt({location:"",base:e,go:o,createHref:ob.bind(null,e)},t,s);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>t.state.value}),a}let pn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Ut=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Ut||{});const _b={type:pn.Static,value:""},wb=/[a-zA-Z0-9_]/;function kb(e){if(!e)return[[]];if(e==="/")return[[_b]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${s})/"${d}": ${_}`)}let s=Ut.Static,o=s;const a=[];let l;function i(){l&&a.push(l),l=[]}let r=0,c,d="",p="";function v(){d&&(s===Ut.Static?l.push({type:pn.Static,value:d}):s===Ut.Param||s===Ut.ParamRegExp||s===Ut.ParamRegExpEnd?(l.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),l.push({type:pn.Param,value:d,regexp:p,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),d="")}function g(){d+=c}for(;r<e.length;){if(c=e[r++],c==="\\"&&s!==Ut.ParamRegExp){o=s,s=Ut.EscapeNext;continue}switch(s){case Ut.Static:c==="/"?(d&&v(),i()):c===":"?(v(),s=Ut.Param):g();break;case Ut.EscapeNext:g(),s=o;break;case Ut.Param:c==="("?s=Ut.ParamRegExp:wb.test(c)?g():(v(),s=Ut.Static,c!=="*"&&c!=="?"&&c!=="+"&&r--);break;case Ut.ParamRegExp:c===")"?p[p.length-1]=="\\"?p=p.slice(0,-1)+c:s=Ut.ParamRegExpEnd:p+=c;break;case Ut.ParamRegExpEnd:v(),s=Ut.Static,c!=="*"&&c!=="?"&&c!=="+"&&r--,p="";break;default:t("Unknown state");break}}return s===Ut.ParamRegExp&&t(`Unfinished custom RegExp for param "${d}"`),v(),i(),a}const ec="[^/]+?",$b={sensitive:!1,strict:!1,start:!0,end:!0};var Jt=function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e}(Jt||{});const Cb=/[.+*?^${}()[\]/\\]/g;function Ib(e,t){const s=mt({},$b,t),o=[];let a=s.start?"^":"";const l=[];for(const d of e){const p=d.length?[]:[Jt.Root];s.strict&&!d.length&&(a+="/");for(let v=0;v<d.length;v++){const g=d[v];let _=Jt.Segment+(s.sensitive?Jt.BonusCaseSensitive:0);if(g.type===pn.Static)v||(a+="/"),a+=g.value.replace(Cb,"\\$&"),_+=Jt.Static;else if(g.type===pn.Param){const{value:w,repeatable:C,optional:$,regexp:A}=g;l.push({name:w,repeatable:C,optional:$});const x=A||ec;if(x!==ec){_+=Jt.BonusCustomRegExp;try{`${x}`}catch(K){throw new Error(`Invalid custom RegExp for param "${w}" (${x}): `+K.message)}}let M=C?`((?:${x})(?:/(?:${x}))*)`:`(${x})`;v||(M=$&&d.length<2?`(?:/${M})`:"/"+M),$&&(M+="?"),a+=M,_+=Jt.Dynamic,$&&(_+=Jt.BonusOptional),C&&(_+=Jt.BonusRepeatable),x===".*"&&(_+=Jt.BonusWildcard)}p.push(_)}o.push(p)}if(s.strict&&s.end){const d=o.length-1;o[d][o[d].length-1]+=Jt.BonusStrict}s.strict||(a+="/?"),s.end?a+="$":s.strict&&!a.endsWith("/")&&(a+="(?:/|$)");const i=new RegExp(a,s.sensitive?"":"i");function r(d){const p=d.match(i),v={};if(!p)return null;for(let g=1;g<p.length;g++){const _=p[g]||"",w=l[g-1];v[w.name]=_&&w.repeatable?_.split("/"):_}return v}function c(d){let p="",v=!1;for(const g of e){(!v||!p.endsWith("/"))&&(p+="/"),v=!1;for(const _ of g)if(_.type===pn.Static)p+=_.value;else if(_.type===pn.Param){const{value:w,repeatable:C,optional:$}=_,A=w in d?d[w]:"";if(_s(A)&&!C)throw new Error(`Provided param "${w}" is an array but it is not repeatable (* or + modifiers)`);const x=_s(A)?A.join("/"):A;if(!x)if($)g.length<2&&(p.endsWith("/")?p=p.slice(0,-1):v=!0);else throw new Error(`Missing required param "${w}"`);p+=x}}return p||"/"}return{re:i,score:o,keys:l,parse:r,stringify:c}}function Sb(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]===Jt.Static+Jt.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Jt.Static+Jt.Segment?1:-1:0}function Md(e,t){let s=0;const o=e.score,a=t.score;for(;s<o.length&&s<a.length;){const l=Sb(o[s],a[s]);if(l)return l;s++}if(Math.abs(a.length-o.length)===1){if(tc(o))return 1;if(tc(a))return-1}return a.length-o.length}function tc(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Ab={strict:!1,end:!0,sensitive:!1};function xb(e,t,s){const o=Ib(kb(e.path),s),a=mt(o,{record:e,parent:t,children:[],alias:[]});return t&&!a.record.aliasOf==!t.record.aliasOf&&t.children.push(a),a}function Tb(e,t){const s=[],o=new Map;t=Kr(Ab,t);function a(v){return o.get(v)}function l(v,g,_){const w=!_,C=nc(v);C.aliasOf=_&&_.record;const $=Kr(t,v),A=[C];if("alias"in v){const K=typeof v.alias=="string"?[v.alias]:v.alias;for(const W of K)A.push(nc(mt({},C,{components:_?_.record.components:C.components,path:W,aliasOf:_?_.record:C})))}let x,M;for(const K of A){const{path:W}=K;if(g&&W[0]!=="/"){const z=g.record.path,re=z[z.length-1]==="/"?"":"/";K.path=g.record.path+(W&&re+W)}if(x=xb(K,g,$),_?_.alias.push(x):(M=M||x,M!==x&&M.alias.push(x),w&&v.name&&!oc(x)&&i(v.name)),Pd(x)&&c(x),C.children){const z=C.children;for(let re=0;re<z.length;re++)l(z[re],x,_&&_.children[re])}_=_||x}return M?()=>{i(M)}:yo}function i(v){if(Ud(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=Ub(v,s);s.splice(g,0,v),v.record.name&&!oc(v)&&o.set(v.record.name,v)}function d(v,g){let _,w={},C,$;if("name"in v&&v.name){if(_=o.get(v.name),!_)throw Vn(At.MATCHER_NOT_FOUND,{location:v});$=_.record.name,w=mt(sc(g.params,_.keys.filter(M=>!M.optional).concat(_.parent?_.parent.keys.filter(M=>M.optional):[]).map(M=>M.name)),v.params&&sc(v.params,_.keys.map(M=>M.name))),C=_.stringify(w)}else if(v.path!=null)C=v.path,_=s.find(M=>M.re.test(C)),_&&(w=_.parse(C),$=_.record.name);else{if(_=g.name?o.get(g.name):s.find(M=>M.re.test(g.path)),!_)throw Vn(At.MATCHER_NOT_FOUND,{location:v,currentLocation:g});$=_.record.name,w=mt({},g.params,v.params),C=_.stringify(w)}const A=[];let x=_;for(;x;)A.unshift(x.record),x=x.parent;return{name:$,path:C,params:w,matched:A,meta:Rb(A)}}e.forEach(v=>l(v));function p(){s.length=0,o.clear()}return{addRoute:l,resolve:d,removeRoute:i,clearRoutes:p,getRoutes:r,getRecordMatcher:a}}function sc(e,t){const s={};for(const o of t)o in e&&(s[o]=e[o]);return s}function nc(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Eb(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 Eb(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 oc(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Rb(e){return e.reduce((t,s)=>mt(t,s.meta),{})}function Ub(e,t){let s=0,o=t.length;for(;s!==o;){const l=s+o>>1;Md(e,t[l])<0?o=l:s=l+1}const a=Db(e);return a&&(o=t.lastIndexOf(a,o-1)),o}function Db(e){let t=e;for(;t=t.parent;)if(Pd(t)&&Md(e,t)===0)return t}function Pd({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ac(e){const t=hs(za),s=hs($i),o=ve(()=>{const c=Z(e.to);return t.resolve(c)}),a=ve(()=>{const{matched:c}=o.value,{length:d}=c,p=c[d-1],v=s.matched;if(!p||!v.length)return-1;const g=v.findIndex(Fn.bind(null,p));if(g>-1)return g;const _=lc(c[d-2]);return d>1&&lc(p)===_&&v[v.length-1].path!==_?v.findIndex(Fn.bind(null,c[d-2])):g}),l=ve(()=>a.value>-1&&Ob(s.params,o.value.params)),i=ve(()=>a.value>-1&&a.value===s.matched.length-1&&Rd(s.params,o.value.params));function r(c={}){if(Lb(c)){const d=t[Z(e.replace)?"replace":"push"](Z(e.to)).catch(yo);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:o,href:ve(()=>o.value.href),isActive:l,isExactActive:i,navigate:r}}function Nb(e){return e.length===1?e[0]:e}const Mb=Xe({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:ac,setup(e,{slots:t}){const s=Ta(ac(e)),{options:o}=hs(za),a=ve(()=>({[ic(e.activeClass,o.linkActiveClass,"router-link-active")]:s.isActive,[ic(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:s.isExactActive}));return()=>{const l=t.default&&Nb(t.default(s));return e.custom?l:Ao("a",{"aria-current":s.isExactActive?e.ariaCurrentValue:null,href:s.href,onClick:s.navigate,class:a.value},l)}}}),Pb=Mb;function Lb(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 Ob(e,t){for(const s in t){const o=t[s],a=e[s];if(typeof o=="string"){if(o!==a)return!1}else if(!_s(a)||a.length!==o.length||o.some((l,i)=>l!==a[i]))return!1}return!0}function lc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ic=(e,t,s)=>e??t??s,Fb=Xe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:s}){const o=hs(Ql),a=ve(()=>e.route||o.value),l=hs(Xr,0),i=ve(()=>{let d=Z(l);const{matched:p}=a.value;let v;for(;(v=p[d])&&!v.components;)d++;return d}),r=ve(()=>a.value.matched[i.value]);Yo(Xr,ve(()=>i.value+1)),Yo(vb,r),Yo(Ql,a);const c=k();return at(()=>[c.value,r.value,e.name],([d,p,v],[g,_,w])=>{p&&(p.instances[v]=d,_&&_!==p&&d&&d===g&&(p.leaveGuards.size||(p.leaveGuards=_.leaveGuards),p.updateGuards.size||(p.updateGuards=_.updateGuards))),d&&p&&(!_||!Fn(p,_)||!g)&&(p.enterCallbacks[v]||[]).forEach(C=>C(d))},{flush:"post"}),()=>{const d=a.value,p=e.name,v=r.value,g=v&&v.components[p];if(!g)return rc(s.default,{Component:g,route:d});const _=v.props[p],w=_?_===!0?d.params:typeof _=="function"?_(d):_:null,$=Ao(g,mt({},w,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(v.instances[p]=null)},ref:c}));return rc(s.default,{Component:$,route:d})||$}}});function rc(e,t){if(!e)return null;const s=e(t);return s.length===1?s[0]:s}const Vb=Fb;function Bb(e){const t=Tb(e.routes,e),s=e.parseQuery||fb,o=e.stringifyQuery||Zr,a=e.history,l=ao(),i=ao(),r=ao(),c=wo(Ws);let d=Ws;Sn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=bl.bind(null,ae=>""+ae),v=bl.bind(null,Qy),g=bl.bind(null,To);function _(ae,xe){let be,De;return Ud(ae)?(be=t.getRecordMatcher(ae),De=xe):De=ae,t.addRoute(De,be)}function w(ae){const xe=t.getRecordMatcher(ae);xe&&t.removeRoute(xe)}function C(){return t.getRoutes().map(ae=>ae.record)}function $(ae){return!!t.getRecordMatcher(ae)}function A(ae,xe){if(xe=mt({},xe||c.value),typeof ae=="string"){const S=_l(s,ae,xe.path),J=t.resolve({path:S.path},xe),ee=a.createHref(S.fullPath);return mt(S,J,{params:g(J.params),hash:To(S.hash),redirectedFrom:void 0,href:ee})}let be;if(ae.path!=null)be=mt({},ae,{path:_l(s,ae.path,xe.path).path});else{const S=mt({},ae.params);for(const J in S)S[J]==null&&delete S[J];be=mt({},ae,{params:v(S)}),xe.params=v(xe.params)}const De=t.resolve(be,xe),qe=ae.hash||"";De.params=p(g(De.params));const P=Xy(o,mt({},ae,{hash:Wy(qe),path:De.path})),R=a.createHref(P);return mt({fullPath:P,hash:qe,query:o===Zr?pb(ae.query):ae.query||{}},De,{redirectedFrom:void 0,href:R})}function x(ae){return typeof ae=="string"?_l(s,ae,c.value.path):mt({},ae)}function M(ae,xe){if(d!==ae)return Vn(At.NAVIGATION_CANCELLED,{from:xe,to:ae})}function K(ae){return re(ae)}function W(ae){return K(mt(x(ae),{replace:!0}))}function z(ae,xe){const be=ae.matched[ae.matched.length-1];if(be&&be.redirect){const{redirect:De}=be;let qe=typeof De=="function"?De(ae,xe):De;return typeof qe=="string"&&(qe=qe.includes("?")||qe.includes("#")?qe=x(qe):{path:qe},qe.params={}),mt({query:ae.query,hash:ae.hash,params:qe.path!=null?{}:ae.params},qe)}}function re(ae,xe){const be=d=A(ae),De=c.value,qe=ae.state,P=ae.force,R=ae.replace===!0,S=z(be,De);if(S)return re(mt(x(S),{state:typeof S=="object"?mt({},qe,S.state):qe,force:P,replace:R}),xe||be);const J=be;J.redirectedFrom=xe;let ee;return!P&&Yy(o,De,be)&&(ee=Vn(At.NAVIGATION_DUPLICATED,{to:J,from:De}),ze(De,De,!0,!1)),(ee?Promise.resolve(ee):Q(J,De)).catch(I=>Ns(I)?Ns(I,At.NAVIGATION_GUARD_REDIRECT)?I:je(I):oe(I,J,De)).then(I=>{if(I){if(Ns(I,At.NAVIGATION_GUARD_REDIRECT))return re(mt({replace:R},x(I.to),{state:typeof I.to=="object"?mt({},qe,I.to.state):qe,force:P}),xe||J)}else I=L(J,De,!0,R,qe);return E(J,De,I),I})}function V(ae,xe){const be=M(ae,xe);return be?Promise.reject(be):Promise.resolve()}function q(ae){const xe=Ne.values().next().value;return xe&&typeof xe.runWithContext=="function"?xe.runWithContext(ae):ae()}function Q(ae,xe){let be;const[De,qe,P]=mb(ae,xe);be=kl(De.reverse(),"beforeRouteLeave",ae,xe);for(const S of De)S.leaveGuards.forEach(J=>{be.push(Js(J,ae,xe))});const R=V.bind(null,ae,xe);return be.push(R),We(be).then(()=>{be=[];for(const S of l.list())be.push(Js(S,ae,xe));return be.push(R),We(be)}).then(()=>{be=kl(qe,"beforeRouteUpdate",ae,xe);for(const S of qe)S.updateGuards.forEach(J=>{be.push(Js(J,ae,xe))});return be.push(R),We(be)}).then(()=>{be=[];for(const S of P)if(S.beforeEnter)if(_s(S.beforeEnter))for(const J of S.beforeEnter)be.push(Js(J,ae,xe));else be.push(Js(S.beforeEnter,ae,xe));return be.push(R),We(be)}).then(()=>(ae.matched.forEach(S=>S.enterCallbacks={}),be=kl(P,"beforeRouteEnter",ae,xe,q),be.push(R),We(be))).then(()=>{be=[];for(const S of i.list())be.push(Js(S,ae,xe));return be.push(R),We(be)}).catch(S=>Ns(S,At.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function E(ae,xe,be){r.list().forEach(De=>q(()=>De(ae,xe,be)))}function L(ae,xe,be,De,qe){const P=M(ae,xe);if(P)return P;const R=xe===Ws,S=Sn?history.state:{};be&&(De||R?a.replace(ae.fullPath,mt({scroll:R&&S&&S.scroll},qe)):a.push(ae.fullPath,qe)),c.value=ae,ze(ae,xe,be,R),je()}let X;function O(){X||(X=a.listen((ae,xe,be)=>{if(!Je.listening)return;const De=A(ae),qe=z(De,Je.currentRoute.value);if(qe){re(mt(qe,{replace:!0,force:!0}),De).catch(yo);return}d=De;const P=c.value;Sn&&ib(Jr(P.fullPath,be.delta),Ha()),Q(De,P).catch(R=>Ns(R,At.NAVIGATION_ABORTED|At.NAVIGATION_CANCELLED)?R:Ns(R,At.NAVIGATION_GUARD_REDIRECT)?(re(mt(x(R.to),{force:!0}),De).then(S=>{Ns(S,At.NAVIGATION_ABORTED|At.NAVIGATION_DUPLICATED)&&!be.delta&&be.type===Kl.pop&&a.go(-1,!1)}).catch(yo),Promise.reject()):(be.delta&&a.go(-be.delta,!1),oe(R,De,P))).then(R=>{R=R||L(De,P,!1),R&&(be.delta&&!Ns(R,At.NAVIGATION_CANCELLED)?a.go(-be.delta,!1):be.type===Kl.pop&&Ns(R,At.NAVIGATION_ABORTED|At.NAVIGATION_DUPLICATED)&&a.go(-1,!1)),E(De,P,R)}).catch(yo)}))}let Y=ao(),ne=ao(),ue;function oe(ae,xe,be){je(ae);const De=ne.list();return De.length?De.forEach(qe=>qe(ae,xe,be)):console.error(ae),Promise.reject(ae)}function ke(){return ue&&c.value!==Ws?Promise.resolve():new Promise((ae,xe)=>{Y.add([ae,xe])})}function je(ae){return ue||(ue=!ae,O(),Y.list().forEach(([xe,be])=>ae?be(ae):xe()),Y.reset()),ae}function ze(ae,xe,be,De){const{scrollBehavior:qe}=e;if(!Sn||!qe)return Promise.resolve();const P=!be&&rb(Jr(ae.fullPath,0))||(De||!be)&&history.state&&history.state.scroll||null;return Ct().then(()=>qe(ae,xe,P)).then(R=>R&&lb(R)).catch(R=>oe(R,ae,xe))}const Re=ae=>a.go(ae);let we;const Ne=new Set,Je={currentRoute:c,listening:!0,addRoute:_,removeRoute:w,clearRoutes:t.clearRoutes,hasRoute:$,getRoutes:C,resolve:A,options:e,push:K,replace:W,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:l.add,beforeResolve:i.add,afterEach:r.add,onError:ne.add,isReady:ke,install(ae){ae.component("RouterLink",Pb),ae.component("RouterView",Vb),ae.config.globalProperties.$router=Je,Object.defineProperty(ae.config.globalProperties,"$route",{enumerable:!0,get:()=>Z(c)}),Sn&&!we&&c.value===Ws&&(we=!0,K(a.location).catch(De=>{}));const xe={};for(const De in Ws)Object.defineProperty(xe,De,{get:()=>c.value[De],enumerable:!0});ae.provide(za,Je),ae.provide($i,Lc(xe)),ae.provide(Ql,c);const be=ae.unmount;Ne.add(ae),ae.unmount=function(){Ne.delete(ae),Ne.size<1&&(d=Ws,X&&X(),X=null,c.value=Ws,we=!1,ue=!1),be()}}};function We(ae){return ae.reduce((xe,be)=>xe.then(()=>q(be)),Promise.resolve())}return Je}function as(){return hs(za)}function Wn(e){return hs($i)}function Oo(){const{user:e,isLoggedIn:t}=qs(),s={user:10,admin:90,qiuchenly:9999},o=ve(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s.admin),a=ve(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s.qiuchenly),l=r=>!t.value||!e.value?!1:(e.value.roleWeight||0)>=s[r],i=ve(()=>!t.value||!e.value?!1:(e.value.roleWeight||0)<s.admin);return{isAdmin:o,isQiuChenLy:a,isUser:i,hasPermission:l}}const jb=Object.freeze(Object.defineProperty({__proto__:null,usePermission:Oo},Symbol.toStringTag,{value:"Module"})),lo=k({visible:!1,text:"加载中..."}),Kn=()=>({loadingState:lo,show:s=>{lo.value.visible=!0,lo.value.text=s||"加载中..."},hide:()=>{lo.value.visible=!1,lo.value.text="加载中..."}}),qb={key:0,class:"loading-overlay"},Hb={class:"loading-content"},zb=Xe({__name:"LoadingDialog",setup(e){const{loadingState:t}=Kn();return(s,o)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[Z(t).visible?(u(),f("div",qb,[n("div",Hb,[o[0]||(o[0]=n("div",{class:"spinner"},null,-1)),n("p",null,h(Z(t).text),1)])])):T("",!0)]),_:1})]))}}),Ld=tt(zb,[["__scopeId","data-v-b54fe5a1"]]),Wb={id:"app"},Kb={key:3,class:"app-layout"},Gb={class:"top-bar"},Qb={class:"top-bar-center"},Jb={class:"top-bar-right"},Zb={class:"user-avatar"},Xb={class:"user-menu-dropdown"},Yb={class:"menu-header"},e0={class:"user-info"},t0={class:"user-avatar-large"},s0={class:"user-details"},n0={class:"user-name"},o0={class:"user-email"},a0={class:"user-role"},l0={class:"main-content"},i0={class:"main-content-left"},r0={key:1,class:"item-text"},c0={class:"main-content-right"},u0=Xe({__name:"App",setup(e){const t=wo([]),s=wo([]),o=k(!1);wd();const{user:a,isLoggedIn:l,logout:i,checkAuthStatus:r}=qs(),{isAdmin:c,isQiuChenLy:d}=Oo(),p=zn(),v=k(!1),g=k(!1),_=k(null),w=as(),C=Wn(),$=k(C.query.search||"");at(()=>C.query.search,S=>{$.value=S||""});const A=S=>{S.trim()?C.path!=="/"?w.push({path:"/",query:{search:S.trim()}}):w.push({query:{...C.query,search:S.trim()}}):x()},x=()=>{if($.value="",C.path==="/"){const S={...C.query};delete S.search,w.push({query:S})}else w.push({path:"/",query:{}})},M=()=>{v.value=!0},K=S=>{_.value=S.detail,g.value=!0};vt(()=>{window.addEventListener("open-login-dialog",M),window.addEventListener("open-version-dialog",K)}),Wt(()=>{window.removeEventListener("open-login-dialog",M),window.removeEventListener("open-version-dialog",K)}),k(!0);const W=k(!1),z=k(!1),re=k(null),V=()=>{W.value=!1},q=()=>{z.value=!1,re.value=null,W.value=!1,Q()},Q=async()=>{try{(await te.getAllSettings()).download_path?(W.value=!1,z.value=!1,await r()):(W.value=!0,z.value=!1)}catch(S){console.error("检查设置状态失败:",S);const J=ah(S);J?(re.value=J,z.value=!0,W.value=!1):(W.value=!0,z.value=!1)}},E=ve(()=>{const S={total:t.value.length,injected:0,update:0,unsupported:0,store:0};for(const J of t.value)J.status==="injected"?S.injected++:J.status==="upgrade_available"?S.update++:J.status==="unsupported"&&S.unsupported++,J.update!==null&&S.store++;return S});ve(()=>E.value.total),ve(()=>E.value.injected),ve(()=>E.value.update),ve(()=>E.value.unsupported),ve(()=>E.value.store),ve(()=>{if(s.value.length===0)return 0;let S=0;for(const J of s.value)J.status==="downloading"&&S++;return S});const L=async()=>{try{t.value=await te.getApps(),o.value=!0}catch(S){console.error("加载应用列表失败:",S),o.value=!1}},X=async()=>{try{s.value=await te.getAllDownloads()}catch(S){console.error("加载下载列表失败:",S)}};let O=null,Y=null;const ne=()=>{const S=()=>{const J=s.value.some(ee=>ee.status==="downloading"||ee.status==="pending");O!==null&&(clearInterval(O),O=null),J?O=window.setInterval(X,2e3):O=window.setInterval(X,1e4),X()};S(),Y!==null&&clearInterval(Y),Y=window.setInterval(S,5e3)},ue=k(0),oe=k(null),ke=async()=>{if(!l.value){ue.value=0;return}try{const S=await te.getUnreadMessageCount();S.success&&S.data&&(ue.value=S.data.count||0)}catch(S){console.error("获取未读私信数量失败:",S),ue.value=0}};at(l,S=>{oe.value!==null&&(clearInterval(oe.value),oe.value=null),S?(ke(),oe.value=window.setInterval(()=>{ke()},5e3)):ue.value=0},{immediate:!0}),vt(()=>{r(),L(),X(),ne(),l.value&&(ke(),oe.value=window.setInterval(()=>{ke()},5e3)),document.addEventListener("visibilitychange",()=>{!document.hidden&&l.value&&ke()}),window.addEventListener("focus",()=>{l.value&&ke()}),window.addEventListener("messages:conversations-updated",()=>{l.value&&ke()})}),Wt(()=>{O!==null&&clearInterval(O),Y!==null&&clearInterval(Y),oe.value!==null&&(clearInterval(oe.value),oe.value=null)});const je=S=>{if(!S)return"用户";switch(S){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},ze=async()=>{await p.show({title:"登出确认",message:"确定要登出吗?",type:"warning",confirmText:"登出",cancelText:"取消"})&&(await i(),w.push("/"))},Re=()=>{},we=k(null),Ne=()=>a.value&&(a.value.nickName||a.value.username)||"用户",Je=()=>{v.value=!0},We=()=>{w.push("/profile")},ae=()=>{console.log("发送反馈")},xe=()=>{w.push("/settings")},be=k("apps"),De=ve(()=>be.value),qe=[{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:"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:"new",label:"新增功能",icon:"fluent-color:megaphone-loud-24",group:"top"},{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"}],P=ve(()=>qe.filter(J=>!J.adminOnly||c.value).map(J=>J.id==="notifications"?{...J,badge:ue.value>0?ue.value:void 0}:J)),R=(S,J)=>{console.log("点击了按钮:",S.label||S.id,"ID:",S.id,"索引:",J),be.value=S.id,S.id==="home"?w.push("/"):S.id==="apps"?w.push("/apps"):S.id==="official"?w.push("/official"):S.id==="downloads"?w.push("/downloads"):S.id==="settings"?w.push("/settings"):S.id==="new"?w.push("/new-features"):S.id==="discussion"?w.push("/discussion"):S.id==="admin"?w.push("/admin"):S.id==="notifications"?w.push("/notifications"):console.log("Sidebar item clicked:",S,J)};return at(()=>C.path,S=>{S==="/"||S==="/home"?be.value="home":S==="/apps"?be.value="apps":S==="/official"?be.value="official":S.startsWith("/downloads")?be.value="downloads":S.startsWith("/settings")?be.value="settings":S.startsWith("/new-features")?be.value="new":S.startsWith("/discussion")?be.value="discussion":S.startsWith("/admin")?be.value="admin":S.startsWith("/notifications")?be.value="notifications":S.startsWith("/messages")&&(be.value="")},{immediate:!0}),(S,J)=>{var I,y,N,le,ie,Me,Ie,Le,He,Ge;const ee=lu("router-view");return u(),f("div",Wb,[m(Xg),z.value?(u(),Ke(Kg,{key:1,onRetry:q,"error-message":(I=re.value)==null?void 0:I.message,"error-code":(y=re.value)==null?void 0:y.code,"request-url":(N=re.value)==null?void 0:N.requestUrl,"status-code":(le=re.value)==null?void 0:le.statusCode},null,8,["error-message","error-code","request-url","status-code"])):W.value?(u(),Ke(Rg,{key:2,onComplete:V})):(u(),f("div",Kb,[n("div",Gb,[J[12]||(J[12]=n("div",{class:"top-bar-left"},[n("div",{class:"brand-name"},"QiuChenly")],-1)),n("div",Qb,[m(by,{modelValue:$.value,"onUpdate:modelValue":J[0]||(J[0]=me=>$.value=me),onSearch:A,onClear:x},null,8,["modelValue"])]),n("div",Jb,[n("div",{class:"user-menu-wrapper",ref_key:"userMenuRef",ref:we},[n("div",Zb,[Z(l)?(u(),Ke(Ft,{key:1,userId:(ie=Z(a))==null?void 0:ie._id,width:36,height:36},null,8,["userId"])):(u(),Ke(b,{key:0,icon:"fluent-color:person-24",class:"avatar-icon"}))]),n("div",Xb,[Z(l)?(u(),f(ge,{key:1},[n("div",Yb,[n("div",e0,[n("div",t0,[m(Ft,{userId:(Me=Z(a))==null?void 0:Me._id,"user-name":Ne(),size:"large"},null,8,["userId","user-name"])]),n("div",s0,[n("div",n0,h(((Ie=Z(a))==null?void 0:Ie.nickName)||((Le=Z(a))==null?void 0:Le.username)||"用户"),1),n("div",o0,h(((He=Z(a))==null?void 0:He.email)||"未设置邮箱"),1),n("div",a0,h(je((Ge=Z(a))==null?void 0:Ge.role)),1)])])]),J[10]||(J[10]=n("div",{class:"menu-divider"},null,-1)),n("div",{class:"menu-item",onClick:We},[m(b,{icon:"fluent-color:person-24",class:"menu-icon"}),J[6]||(J[6]=n("span",{class:"menu-text"},"个人中心",-1))]),n("div",{class:"menu-item",onClick:ae},[m(b,{icon:"fluent-color:chat-24",class:"menu-icon"}),J[7]||(J[7]=n("span",{class:"menu-text"},"发送反馈",-1))]),n("div",{class:"menu-item",onClick:xe},[m(b,{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:ze},[m(b,{icon:"fluent-color:dismiss-circle-24",class:"menu-icon"}),J[9]||(J[9]=n("span",{class:"menu-text"},"登出",-1))])],64)):(u(),f(ge,{key:0},[n("div",{class:"menu-item",onClick:Je},[m(b,{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:ae},[m(b,{icon:"fluent-color:chat-24",class:"menu-icon"}),J[4]||(J[4]=n("span",{class:"menu-text"},"发送反馈",-1))]),n("div",{class:"menu-item",onClick:xe},[m(b,{icon:"fluent-color:settings-24",class:"menu-icon"}),J[5]||(J[5]=n("span",{class:"menu-text"},"存储设置",-1))])],64))])],512)])]),n("div",l0,[n("div",i0,[m(Uy,{items:P.value,"active-item":De.value,onItemClick:R},{item:pt(({item:me})=>[me.icon?(u(),Ke(b,{key:0,icon:me.icon,class:"item-icon"},null,8,["icon"])):T("",!0),me.label?(u(),f("span",r0,h(me.label),1)):T("",!0)]),_:1},8,["items","active-item"])]),n("div",c0,[m(ee)])])])),m(kd,{show:v.value,onClose:J[1]||(J[1]=me=>v.value=!1),onSuccess:Re},null,8,["show"]),m(ny,{visible:g.value,app:_.value,onClose:J[2]||(J[2]=me=>g.value=!1)},null,8,["visible","app"]),m(_n,{visible:Z(p).visible.value,title:Z(p).config.value.title||"",message:Z(p).config.value.message||"",type:Z(p).config.value.type,"confirm-text":Z(p).config.value.confirmText,"cancel-text":Z(p).config.value.cancelText,onConfirm:Z(p).handleConfirm,onCancel:Z(p).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(Ld)])}}}),d0=tt(u0,[["__scopeId","data-v-3658452c"]]),f0="modulepreload",p0=function(e){return"/"+e},cc={},uc=function(t,s,o){let a=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"));a=Promise.allSettled(s.map(c=>{if(c=p0(c),c in cc)return;cc[c]=!0;const d=c.endsWith(".css"),p=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${p}`))return;const v=document.createElement("link");if(v.rel=d?"stylesheet":f0,d||(v.as="script"),v.crossOrigin="",v.href=c,r&&v.setAttribute("nonce",r),document.head.appendChild(v),d)return new Promise((g,_)=>{v.addEventListener("load",g),v.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${c}`)))})}))}function l(i){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=i,window.dispatchEvent(r),!r.defaultPrevented)throw i}return a.then(i=>{for(const r of i||[])r.status==="rejected"&&l(r.reason);return t().catch(l)})},v0={class:"modal-header"},m0={class:"modal-title"},h0={class:"modal-body"},g0={class:"log-time"},y0={class:"log-message"},b0={key:0,class:"log-line loading"},_0={class:"modal-footer"},w0={class:"footer-status"},k0={key:0,class:"status-success"},$0={key:1,class:"status-error"},C0={key:2,class:"status-loading"},I0={class:"footer-actions"},S0=Xe({__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,a=k(null),l=()=>{a.value&&(a.value.scrollTop=a.value.scrollHeight)};at(()=>s.logs,async()=>{await Ct(),l()},{deep:!0,flush:"post"}),at(()=>s.loading,async()=>{await Ct(),l()});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=p=>p.level?`log-${p.level}`:"log-info",c=()=>{o("close")},d=()=>{s.canClose&&c()};return(p,v)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"modal"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"modal-overlay",onClick:d},[n("div",{class:"modal-container",onClick:v[0]||(v[0]=Be(()=>{},["stop"]))},[n("div",v0,[n("h2",m0,[m(b,{icon:i(),class:"modal-icon"},null,8,["icon"]),Ce(" "+h(e.title),1)]),e.canClose?(u(),f("button",{key:0,onClick:c,class:"modal-close","aria-label":"关闭"},[m(b,{icon:"mdi:close"})])):T("",!0)]),n("div",h0,[n("div",{ref_key:"logContainer",ref:a,class:"log-container"},[(u(!0),f(ge,null,Ee(e.logs,(g,_)=>(u(),f("div",{key:_,class:$e(["log-line",r(g)])},[n("span",g0,h(g.time),1),n("span",y0,h(g.message),1)],2))),128)),e.loading?(u(),f("div",b0,[...v[1]||(v[1]=[n("div",{class:"spinner-small"},null,-1),n("span",{class:"log-message"},"处理中...",-1)])])):T("",!0)],512)]),n("div",_0,[n("div",w0,[e.status==="success"?(u(),f("span",k0,[m(b,{icon:"mdi:check-circle"}),v[2]||(v[2]=Ce(" 操作成功 ",-1))])):e.status==="error"?(u(),f("span",$0,[m(b,{icon:"mdi:alert-circle"}),v[3]||(v[3]=Ce(" 操作失败 ",-1))])):e.loading?(u(),f("span",C0,[...v[4]||(v[4]=[n("div",{class:"spinner-small"},null,-1),Ce(" 处理中... ",-1)])])):T("",!0)]),n("div",I0,[e.canClose?(u(),f("button",{key:0,onClick:c,class:"btn btn-outline"}," 关闭 ")):T("",!0)])])])])):T("",!0)]),_:1})]))}}),Od=tt(S0,[["__scopeId","data-v-07320b59"]]);function A0(){const e=k(!1),t=k(""),s=k([]),o=k("idle");return{modalVisible:e,modalTitle:t,logs:s,modalStatus:o,addLog:(d,p="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:d,level:p})},showModal:d=>{t.value=d,s.value=[],o.value="loading",e.value=!0},hideModal:()=>{e.value=!1},setSuccess:()=>{o.value="success"},setError:()=>{o.value="error"}}}function Fd(e){const t=k(!1),{onRefresh:s}=e,{modalVisible:o,modalTitle:a,logs:l,modalStatus:i,addLog:r,showModal:c,hideModal:d,setSuccess:p,setError:v}=A0();return{updating:t,modalVisible:o,modalTitle:a,logs:l,modalStatus:i,handleUpdate:async w=>{t.value=!0,c(w.status==="injected"?"更新应用":"注入应用"),r(`开始处理应用: ${w.name}`),r(`Bundle ID: ${w.bundleId}`),r(`当前版本: ${w.version}`);try{r("正在连接到服务器...");const C=await te.updateApp(w.bundleId);C.logs&&C.logs.length>0&&C.logs.forEach($=>{r($,"info")}),C.success?(r("操作成功完成!","success"),p(),r("正在刷新应用状态..."),await s(),r("应用状态已更新","success")):(r(`操作失败: ${C.message}`,"error"),v())}catch(C){console.error("更新应用失败:",C),r(`网络错误: ${C}`,"error"),v()}finally{t.value=!1}},handleReinstall:async()=>{console.log("重新安装功能待实现")},hideModal:d}}const x0={key:0,class:"status-badge"},T0={key:0,class:"badge upgrade"},E0={key:1,class:"badge injected"},R0={class:"card-content"},U0={class:"app-icon-wrapper"},D0={class:"app-icon"},N0=["src","alt"],M0={class:"app-info"},P0={class:"app-name"},L0={key:0,class:"app-rating"},O0={class:"category-tag"},F0={key:1,class:"version-info"},V0={key:0,class:"version-item"},B0={class:"version-value"},j0={key:1,class:"version-item latest"},q0={class:"version-label"},H0={class:"version-value"},z0={key:2,class:"version-item bundle-id"},W0={class:"version-value bundle-id-value"},K0={key:2,class:"app-description"},G0={class:"app-actions"},Q0=["disabled","title"],J0={key:4,class:"button-tooltip"},Z0=Xe({__name:"AppCard",props:{app:{},mode:{default:"list"},showDescription:{type:Boolean,default:!1}},emits:["updated","openVersionDialog"],setup(e,{emit:t}){const s=e,o=t,a=as(),l=k(!1),i=k(!1),{toasts:r,warning:c,removeToast:d}=Kt(),p=ve(()=>s.app.hasIcon?te.getAppIconUrl(s.app.bundleId):null),{updating:v,modalVisible:g,modalTitle:_,logs:w,modalStatus:C,handleUpdate:$,handleReinstall:A,hideModal:x}=Fd({onRefresh:async()=>{try{const O=await te.getApp(s.app.bundleId);return o("updated",s.app.bundleId),O}catch(O){throw console.error("刷新应用状态失败:",O),O}}}),M=()=>{const O=s.app.bundleId.toLowerCase();return O.includes("social")||O.includes("chat")||O.includes("qq")||O.includes("wechat")?"社交":O.includes("music")||O.includes("video")||O.includes("player")?"娱乐":O.includes("design")||O.includes("photo")||O.includes("edit")?"设计":O.includes("tool")||O.includes("util")?"工具":"应用"},K=()=>`${s.app.name}是一款优秀的应用程序,提供丰富的功能和良好的用户体验。`,W=ve(()=>{const O=s.app.status==="upgrade_available",Y=s.app.update!==null&&s.app.update.hasUpdate===!0;return O||Y}),z=ve(()=>{var O;return s.app.path?!1:!((O=s.app.update)!=null&&O.versions)||s.app.update.versions.length===0}),re=()=>{var O;return v.value?"处理中...":s.app.path?W.value?"更新":s.app.status==="injected"?"已安装":s.app.status==="supported"?"一键激活":s.app.status==="unsupported"?"不支持":"一键激活":((O=s.app.update)!=null&&O.versions&&s.app.update.versions.length>0,"下载")},V=()=>!s.app.path&&z.value?"该应用暂无可用的下载版本":v.value?"正在处理中...":"",q=()=>!s.app.path&&z.value?"disabled":W.value?"warning":s.app.status==="injected"?"success":s.app.status==="supported"?"primary":s.app.status==="unsupported"?"disabled":"primary",Q=()=>{a.push(`/app/${s.app.bundleId}`)},E=()=>{var O,Y;if(!s.app.path){(O=s.app.update)!=null&&O.versions&&s.app.update.versions.length>0?window.dispatchEvent(new CustomEvent("open-version-dialog",{detail:s.app})):c("该应用暂无可用的下载版本",3e3);return}W.value&&((Y=s.app.update)!=null&&Y.versions)&&s.app.update.versions.length>0?window.dispatchEvent(new CustomEvent("open-version-dialog",{detail:s.app})):W.value||s.app.status==="supported"?$(s.app):s.app.status!=="injected"&&s.app.status!=="unsupported"&&A(s.app)},L=()=>{l.value=!0,i.value=!1},X=()=>{l.value=!1,i.value=!0};return(O,Y)=>{var ne;return u(),f("div",{class:$e(["app-card",[`mode-${e.mode}`]]),onClick:Q},[e.mode==="list"?(u(),f("div",x0,[W.value?(u(),f("div",T0,[...Y[0]||(Y[0]=[n("span",null,"可更新",-1)])])):e.app.status==="injected"?(u(),f("div",E0,[...Y[1]||(Y[1]=[n("span",null,"已注入",-1)])])):T("",!0)])):T("",!0),n("div",R0,[n("div",U0,[n("div",D0,[p.value?Qe((u(),f("img",{key:0,src:p.value,alt:e.app.name,onLoad:L,onError:X},null,40,N0)),[[gs,l.value&&!i.value]]):T("",!0),Qe(n("div",{class:"icon-placeholder"},h(e.app.name.charAt(0).toUpperCase()),513),[[gs,!p.value||!l.value||i.value]])])]),n("div",M0,[n("h3",P0,h(e.app.name),1),e.mode==="search"?(u(),f("div",L0,[m(b,{icon:"fluent-color:star-24",class:"star-icon"}),Y[2]||(Y[2]=n("span",null,"4.5",-1))])):T("",!0),n("div",O0,[n("span",null,h(M()),1)]),e.mode==="list"?(u(),f("div",F0,[e.app.path?(u(),f("div",V0,[Y[3]||(Y[3]=n("span",{class:"version-label"},"当前",-1)),n("span",B0,h(e.app.version||"未知"),1)])):T("",!0),(ne=e.app.update)!=null&&ne.latestVersion?(u(),f("div",j0,[n("span",q0,h(e.app.path?"最新":"版本"),1),n("span",H0,h(e.app.update.latestVersion),1)])):T("",!0),e.app.path?T("",!0):(u(),f("div",z0,[Y[4]||(Y[4]=n("span",{class:"version-label"},"包名",-1)),n("span",W0,h(e.app.bundleId),1)]))])):T("",!0),e.mode==="search"&&e.showDescription?(u(),f("div",K0,h(K()),1)):T("",!0)]),n("div",G0,[n("button",{class:$e(["action-button",q()]),onClick:Be(E,["stop"]),disabled:Z(v)||z.value,title:V()},[W.value?(u(),Ke(b,{key:0,icon:"mdi:arrow-down-circle",class:"button-icon"})):s.app.status==="supported"?(u(),Ke(b,{key:1,icon:"mdi:key",class:"button-icon"})):s.app.status==="injected"?(u(),Ke(b,{key:2,icon:"mdi:check-circle",class:"button-icon"})):s.app.path?T("",!0):(u(),Ke(b,{key:3,icon:"mdi:download",class:"button-icon"})),n("span",null,h(re()),1),z.value&&!s.app.path?(u(),f("span",J0," 该应用暂无可用的下载版本 ")):T("",!0)],10,Q0)])]),m(Od,{visible:Z(g),title:Z(_),logs:Z(w),loading:Z(v),status:Z(C),"can-close":Z(C)!=="loading",onClose:Z(x)},null,8,["visible","title","logs","loading","status","can-close","onClose"]),m(ds,{toasts:Z(r),onRemove:Z(d)},null,8,["toasts","onRemove"])],2)}}}),Eo=tt(Z0,[["__scopeId","data-v-052f9dd3"]]),X0={class:"carousel-wrapper"},Y0={class:"slide-background"},e_=["src"],t_={class:"slide-content"},s_={class:"content-wrapper"},n_={key:0,class:"app-icon-wrapper"},o_=["src","alt"],a_={class:"app-info"},l_={key:0,class:"app-price"},i_={class:"app-title"},r_={key:1,class:"app-description"},c_={class:"app-actions"},u_=["onClick"],d_=["onClick"],f_=["disabled"],p_=["disabled"],v_=["viewBox"],m_=["cx","cy","r"],h_=["d"],g_={key:3,class:"carousel-indicators"},y_=["onClick"],b_=Xe({__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,a=k(0);let l=!1;const i=k(0);let r=null,c=0;const d=k([]),p=k(!1),v=ve(()=>{const Y=s.progressSize,ne=24,ue=ne/2,oe=ne/2,ke=ne/2*.75;return{size:Y,viewBox:`0 0 ${ne} ${ne}`,centerX:ue,centerY:oe,radius:ke}}),g=Y=>Y.imageUrl?{backgroundImage:`url(${Y.imageUrl})`}:Y.imageId?{backgroundImage:`url(${te.getImageUrl(Y.imageId,80,1920,1080)})`}:{background:"linear-gradient(135deg, #0078d4 0%, #106ebe 100%)"},_=Y=>{var ne;if((ne=Y.app)!=null&&ne.bundleId)return te.getAppIconUrl(Y.app.bundleId)},w=Y=>{const ne=Y.target;ne.style.display="none"},C=(Y,ne)=>{o("action",Y,ne)},$=(Y=!1)=>{a.value<s.items.length-1?a.value++:a.value=0,Y||V(),K(),Ct(()=>{z()})},A=()=>{$(!1)},x=()=>{a.value>0?a.value--:a.value=s.items.length-1,V(),K(),Ct(()=>{z()})},M=Y=>{Y>=0&&Y<s.items.length&&(a.value=Y,V(),K(),Ct(()=>{z()}))},K=()=>{s.items[a.value]&&o("slideChange",a.value,s.items[a.value])},W=(Y,ne)=>{Y&&(d.value[ne]=Y)},z=()=>{Ct(()=>{d.value.forEach((Y,ne)=>{Y&&(ne===a.value?Y.play().catch(()=>{}):(Y.pause(),Y.currentTime=0))})})},re=()=>{const Y=v.value.centerX,ne=v.value.centerY,ue=v.value.radius;if(i.value<=0)return"";if(i.value>=100)return`M ${Y} ${ne} m -${ue} 0 a ${ue} ${ue} 0 1 1 ${ue*2} 0 a ${ue} ${ue} 0 1 1 -${ue*2} 0`;const ke=(i.value/100*360-90)*Math.PI/180,je=Y+ue*Math.cos(ke),ze=ne+ue*Math.sin(ke),Re=i.value>50?1:0,we=Y,Ne=ne-ue;return`M ${Y} ${ne} L ${we} ${Ne} A ${ue} ${ue} 0 ${Re} 1 ${je} ${ze} Z`},V=()=>{i.value=0,c=Date.now()},q=()=>{if(!s.autoPlay||l||s.items.length<=1)return;const ne=(Date.now()-c)/s.autoPlayInterval*100;ne>=100?(V(),$(!0)):i.value=ne},Q=()=>{p.value=!0,L()},E=()=>{p.value=!1,X()},L=()=>{l||(l=!0,r&&(clearInterval(r),r=null))},X=()=>{if(!l||!s.autoPlay||s.items.length<=1)return;l=!1;const Y=i.value/100*s.autoPlayInterval;c=Date.now()-Y,O(!1)},O=(Y=!1)=>{r&&clearInterval(r),Y&&V(),r=window.setInterval(()=>{l||q()},50)};return at(()=>s.items,()=>{a.value>=s.items.length&&(a.value=0),d.value=new Array(s.items.length).fill(null),s.autoPlay&&s.items.length>1&&O(!0),Ct(()=>{z()})},{immediate:!0}),at(()=>a.value,()=>{z()}),vt(()=>{s.autoPlay&&s.items.length>1&&O(!0),Ct(()=>{z()})}),Wt(()=>{r&&(clearInterval(r),r=null)}),(Y,ne)=>(u(),f("div",{class:"hero-carousel",onMouseenter:Q,onMouseleave:E},[n("div",X0,[n("div",{class:"carousel-container",style:Lt({transform:`translateX(-${a.value*100}%)`})},[(u(!0),f(ge,null,Ee(e.items,(ue,oe)=>(u(),f("div",{key:ue.id||oe,class:$e(["carousel-slide",{active:oe===a.value}])},[n("div",Y0,[ue.type==="video"&&ue.videoUrl?(u(),f("video",{key:0,ref_for:!0,ref:ke=>W(ke,oe),class:$e(["background-video",{active:oe===a.value}]),src:ue.videoUrl,muted:"",loop:"",playsinline:""},null,10,e_)):(u(),f("div",{key:1,class:"background-image",style:Lt(g(ue))},null,4)),ne[0]||(ne[0]=n("div",{class:"background-overlay"},null,-1))]),n("div",t_,[n("div",s_,[_(ue)?(u(),f("div",n_,[n("img",{src:_(ue),alt:ue.title,class:"app-icon",onError:w},null,40,o_)])):T("",!0),n("div",a_,[ue.price?(u(),f("div",l_,h(ue.price),1)):T("",!0),n("h2",i_,h(ue.title),1),ue.description?(u(),f("p",r_,h(ue.description),1)):T("",!0)]),n("div",c_,[ue.primaryAction?(u(),f("button",{key:0,class:"action-button primary",onClick:ke=>C("primary",ue)},h(ue.primaryAction.label),9,u_)):T("",!0),ue.secondaryAction?(u(),f("button",{key:1,class:"action-button secondary",onClick:ke=>C("secondary",ue)},h(ue.secondaryAction.label),9,d_)):T("",!0)])])])],2))),128))],4)]),e.items.length>1?(u(),f("button",{key:0,class:$e(["nav-arrow nav-arrow-left",{visible:p.value}]),onClick:x,disabled:a.value===0},[m(b,{icon:"mdi:triangle",class:"arrow-icon arrow-icon-left"})],10,f_)):T("",!0),e.items.length>1?(u(),f("button",{key:1,class:$e(["nav-arrow nav-arrow-right",{visible:p.value}]),onClick:A,disabled:a.value===e.items.length-1},[m(b,{icon:"mdi:triangle",class:"arrow-icon arrow-icon-right"})],10,p_)):T("",!0),e.items.length>1&&e.autoPlay?(u(),f("div",{key:2,class:"progress-indicator",style:Lt({width:`${v.value.size}px`,height:`${v.value.size}px`})},[(u(),f("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,m_),n("path",{class:"progress-bar",d:re(),fill:"white"},null,8,h_)],8,v_))],4)):T("",!0),e.items.length>1?(u(),f("div",g_,[(u(!0),f(ge,null,Ee(e.items,(ue,oe)=>(u(),f("button",{key:ue.id||oe,class:$e(["indicator",{active:oe===a.value}]),onClick:ke=>M(oe)},null,10,y_))),128))])):T("",!0)],32))}}),__=tt(b_,[["__scopeId","data-v-ed76f4a9"]]),w_={class:"right-sidebar"},k_={key:0,class:"featured-app-card"},$_={class:"featured-app-content"},C_={class:"featured-app-icon"},I_=["src","alt"],S_={class:"featured-app-info"},A_={key:0,class:"app-price"},x_={class:"app-name"},T_={key:1,class:"app-version"},E_={key:2,class:"app-description"},R_={class:"bottom-cards"},U_={key:0,class:"card image-viewer-card"},D_={class:"card-icon-container"},N_={class:"main-icon"},M_=["src"],P_={class:"format-icons"},L_={class:"card-title"},O_={key:1,class:"card entertainment-card"},F_={class:"app-icons-grid"},V_=["onClick"],B_=["src","alt"],j_={class:"card-title"},q_=Xe({__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,a=r=>{o("appClick",r)},l=()=>{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)=>(u(),f("div",w_,[e.featuredAppData?(u(),f("div",k_,[n("div",{class:"featured-app-background",style:Lt(l())},null,4),n("div",$_,[n("div",C_,[e.featuredAppData.iconUrl?(u(),f("img",{key:0,src:e.featuredAppData.iconUrl,alt:e.featuredAppData.name},null,8,I_)):(u(),Ke(b,{key:1,icon:"fluent-color:apps-24",class:"default-icon"}))]),n("div",S_,[e.featuredAppData.price?(u(),f("div",A_,h(e.featuredAppData.price),1)):T("",!0),n("div",x_,h(e.featuredAppData.name),1),e.featuredAppData.version?(u(),f("div",T_,h(e.featuredAppData.version),1)):T("",!0),e.featuredAppData.description?(u(),f("div",E_,h(e.featuredAppData.description),1)):T("",!0)])])])):T("",!0),n("div",R_,[e.imageViewerData?(u(),f("div",U_,[n("div",{class:"image-viewer-background",style:Lt(i())},null,4),n("div",D_,[n("div",N_,[e.imageViewerData.iconUrl?(u(),f("img",{key:0,src:e.imageViewerData.iconUrl,alt:"",class:"icon-image"},null,8,M_)):(u(),Ke(b,{key:1,icon:"fluent-color:image-24",class:"icon-large"}))]),n("div",P_,[(u(!0),f(ge,null,Ee(e.imageViewerData.tags,(d,p)=>(u(),f("span",{key:p,class:"format-tag"},h(d),1))),128))])]),n("div",L_,h(e.imageViewerData.title),1)])):T("",!0),e.entertainmentData?(u(),f("div",O_,[n("div",F_,[(u(!0),f(ge,null,Ee(e.entertainmentData.apps,(d,p)=>(u(),f("div",{class:"app-icon",key:p,onClick:Be(v=>a(d),["stop"])},[d.iconUrl?(u(),f("img",{key:0,src:d.iconUrl,alt:d.name,class:"app-icon-image"},null,8,B_)):(u(),Ke(b,{key:1,icon:"fluent-color:play-circle-24"}))],8,V_))),128))]),n("div",j_,h(e.entertainmentData.title),1)])):T("",!0)])]))}}),H_=tt(q_,[["__scopeId","data-v-b53155f3"]]),z_={class:"featured-scroll-wrapper"},W_={class:"featured-list"},K_=["onClick"],G_={class:"featured-icon-wrapper"},Q_=["src","alt"],J_={key:1,class:"featured-icon-placeholder"},Z_={class:"featured-name"},X_={class:"featured-category"},Y_={class:"category-tag"},e2=["onClick"],dc=400,t2=Xe({__name:"FeaturedApps",props:{apps:{}},emits:["appClick","action"],setup(e,{emit:t}){const s=e,o=t,a=k(null),l=k(!1),i=k(0),r=ve(()=>i.value>0),c=ve(()=>{if(!a.value)return!1;const M=a.value;return M.scrollWidth>M.clientWidth&&i.value<M.scrollWidth-M.clientWidth-1}),d=()=>{a.value&&(i.value=a.value.scrollLeft)},p=()=>{a.value&&a.value.scrollBy({left:-dc,behavior:"smooth"})},v=()=>{a.value&&a.value.scrollBy({left:dc,behavior:"smooth"})},g=M=>te.getAppIconUrl(M.bundleId),_=()=>{},w=M=>{const K=M.bundleId.toLowerCase();return K.includes("social")||K.includes("chat")||K.includes("qq")||K.includes("wechat")?"社交":K.includes("music")||K.includes("video")||K.includes("player")?"娱乐":K.includes("design")||K.includes("photo")||K.includes("edit")?"设计":K.includes("tool")||K.includes("util")?"工具":"应用"},C=M=>M.status==="upgrade_available"?"更新":M.status==="injected"?"已安装":(M.status==="supported","获取"),$=M=>{o("appClick",M)},A=M=>{o("action",M)};at(()=>s.apps,()=>{Ct(()=>{d()})},{immediate:!0});const x=()=>{Ct(()=>{d()})};return vt(()=>{Ct(()=>{d(),a.value&&a.value.addEventListener("scroll",d)}),window.addEventListener("resize",x)}),Wt(()=>{a.value&&a.value.removeEventListener("scroll",d),window.removeEventListener("resize",x)}),(M,K)=>(u(),f("div",{class:"featured-apps",onMouseenter:K[0]||(K[0]=W=>l.value=!0),onMouseleave:K[1]||(K[1]=W=>l.value=!1)},[K[2]||(K[2]=n("h3",{class:"section-title"},"推荐应用",-1)),n("div",z_,[n("div",{class:"featured-scroll",ref_key:"scrollContainer",ref:a},[n("div",W_,[(u(!0),f(ge,null,Ee(e.apps,W=>(u(),f("div",{key:W.bundleId,class:"featured-card",onClick:z=>$(W)},[n("div",G_,[g(W)?(u(),f("img",{key:0,src:g(W),alt:W.name,class:"featured-icon",onError:_},null,40,Q_)):(u(),f("div",J_,h(W.name.charAt(0).toUpperCase()),1))]),n("h4",Z_,h(W.name),1),n("div",X_,[n("span",Y_,h(w(W)),1)]),n("button",{class:"featured-button",onClick:Be(z=>A(W),["stop"])},h(C(W)),9,e2)],8,K_))),128))])],512),r.value?(u(),f("button",{key:0,class:$e(["scroll-button scroll-button-left",{visible:l.value}]),onClick:p},[m(b,{icon:"mdi:chevron-left"})],2)):T("",!0),c.value?(u(),f("button",{key:1,class:$e(["scroll-button scroll-button-right",{visible:l.value}]),onClick:v},[m(b,{icon:"mdi:chevron-right"})],2)):T("",!0)])],32))}}),s2=tt(t2,[["__scopeId","data-v-b2fac49e"]]),n2={class:"category-section"},o2={class:"category-content"},a2={class:"category-left"},l2={class:"featured-list"},i2=["onClick"],r2={class:"featured-large-icon-wrapper"},c2=["src","alt"],u2={key:1,class:"featured-large-icon-placeholder"},d2={class:"featured-large-info"},f2={class:"featured-large-name"},p2={class:"featured-large-desc"},v2=["onClick"],m2={class:"category-right"},h2={class:"category-grid"},g2=["onClick"],y2={class:"category-icon"},b2={class:"category-name"},_2=Xe({__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=d=>te.getAppIconUrl(d.bundleId),a=()=>{},l=d=>d.status==="upgrade_available"?"更新":d.status==="injected"?"已安装":(d.status==="supported","获取"),i=d=>{s("appClick",d)},r=d=>{s("action",d)},c=d=>{s("categoryClick",d)};return(d,p)=>(u(),f("div",n2,[n("div",o2,[n("div",a2,[p[0]||(p[0]=n("h3",{class:"section-title"},"特色应用",-1)),n("div",l2,[(u(!0),f(ge,null,Ee(e.featuredApps.slice(0,2),v=>(u(),f("div",{key:v.bundleId,class:"featured-large-card",onClick:g=>i(v)},[n("div",r2,[o(v)?(u(),f("img",{key:0,src:o(v),alt:v.name,class:"featured-large-icon",onError:a},null,40,c2)):(u(),f("div",u2,h(v.name.charAt(0).toUpperCase()),1))]),n("div",d2,[n("h4",f2,h(v.name),1),n("p",p2,h(v.bundleId),1),n("button",{class:"featured-large-button",onClick:Be(g=>r(v),["stop"])},h(l(v)),9,v2)])],8,i2))),128))])]),n("div",m2,[p[1]||(p[1]=n("h3",{class:"section-title"},"分类",-1)),n("div",h2,[(u(!0),f(ge,null,Ee(e.categories,v=>(u(),f("div",{key:v.id,class:"category-card",onClick:g=>c(v)},[n("div",y2,[m(b,{icon:v.icon},null,8,["icon"])]),n("span",b2,h(v.name),1)],8,g2))),128))])])])]))}}),w2=tt(_2,[["__scopeId","data-v-c6a81573"]]),k2={class:"select-selected"},$2=["onClick"],C2=Xe({__name:"CustomSelect",props:{modelValue:{},options:{},placeholder:{default:"请选择"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=t,a=k(!1),l=k(null),i=k(null),r=k({top:"0px",left:"0px",width:"200px"}),c=ve(()=>s.options.find(_=>_.value===s.modelValue)||null),d=()=>{!a.value||!l.value||Ct(()=>{const _=l.value.getBoundingClientRect(),w=s.options.length*48+16,C=window.innerHeight-_.bottom,$=_.top;let A=_.bottom+8,x=_.left,M=_.width;C<w&&$>C&&(A=_.top-w-8),x+M>window.innerWidth&&(x=window.innerWidth-M-16),x<16&&(x=16),A<16&&(A=16),A+w>window.innerHeight-16&&(A=window.innerHeight-w-16),r.value={top:`${A}px`,left:`${x}px`,width:`${M}px`}})},p=()=>{a.value=!a.value,a.value&&d()},v=_=>{o("update:modelValue",_),a.value=!1},g=_=>{const w=_.target;l.value&&l.value.contains(w)||i.value&&i.value.contains(w)||(a.value=!1)};return at(a,_=>{_?(d(),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d)):(window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d))}),vt(()=>{document.addEventListener("click",g)}),Wt(()=>{document.removeEventListener("click",g),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}),(_,w)=>{var C,$;return u(),f("div",{class:"custom-select-wrapper",ref_key:"wrapperRef",ref:l},[n("div",{class:$e(["custom-select",{open:a.value}]),onClick:p},[n("div",k2,[m(b,{icon:((C=c.value)==null?void 0:C.icon)||"",class:"select-icon"},null,8,["icon"]),n("span",null,h((($=c.value)==null?void 0:$.label)||e.placeholder),1),m(b,{icon:"fluent-color:chevron-down-24",class:$e(["select-arrow",{rotated:a.value}])},null,8,["class"])])],2),(u(),Ke(Xt,{to:"body"},[m(It,{name:"dropdown-fade"},{default:pt(()=>[a.value?(u(),f("div",{key:0,ref_key:"dropdownRef",ref:i,class:"select-dropdown",style:Lt(r.value),onClick:w[0]||(w[0]=Be(()=>{},["stop"]))},[(u(!0),f(ge,null,Ee(e.options,A=>(u(),f("div",{key:A.value,class:$e(["select-option",{active:e.modelValue===A.value}]),onClick:x=>v(A.value)},[m(b,{icon:A.icon,class:"option-icon"},null,8,["icon"]),n("span",null,h(A.label),1),e.modelValue===A.value?(u(),Ke(b,{key:0,icon:"fluent-color:checkmark-24",class:"option-check"})):T("",!0)],10,$2))),128))],4)):T("",!0)]),_:1})]))],512)}}}),Es=tt(C2,[["__scopeId","data-v-d18bbb86"]]),I2={class:"app-list"},S2={class:"search-header"},A2={class:"search-title"},x2={class:"search-filters"},T2={class:"filter-tags"},E2={key:0,class:"loading"},R2={key:1,class:"error"},U2={key:2,class:"empty"},D2={key:3,class:"apps-grid search-results-grid"},N2={class:"hero-section"},M2={class:"list-section"},P2={class:"list-header"},L2={class:"section-title"},O2={class:"section-description"},F2={key:0,class:"loading"},V2={key:1,class:"error"},B2={key:2,class:"empty"},j2={key:3,class:"apps-grid"},q2={class:"list-footer"},H2={class:"footer-stats"},z2={class:"stat-item"},W2={class:"stat-value"},K2={class:"stat-item"},G2={class:"stat-value"},Q2=Xe({__name:"AppList",setup(e){const t=Wn(),s=as(),o=wo([]),a=k(!0),l=k(""),i=ve(()=>t.query.search||""),r=ve(()=>!!i.value),c=[{id:"all",label:"所有分类"},{id:"app",label:"应用"},{id:"game",label:"游戏"},{id:"mobile",label:"移动应用"}],d=k("all"),p=[{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=ve(()=>o.value.filter(O=>O.status==="injected"||O.status==="upgrade_available").slice(0,5)),g=ve(()=>{const O={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"}},Y=v.value.map(ne=>{var je,ze;const ue=((je=ne.update)==null?void 0:je.imageId)||[],oe=ue.length>0?ue[0]:void 0,ke=ue.length>1;return{id:ne.bundleId,type:ke?"video":"image",imageId:oe,videoUrl:ke&&ue[1]?te.getImageUrl(ue[1],80,1920,1080):void 0,title:ne.name,description:(ze=ne.update)!=null&&ze.latestVersion?`版本 ${ne.update.latestVersion}`:`版本 ${ne.version}`,price:"",primaryAction:{label:ne.status==="upgrade_available"?"查看详情":ne.status==="injected"?"已安装":"获取",action:"view",route:`/app/${ne.bundleId}`},secondaryAction:ne.status==="upgrade_available"?{label:"更新",action:"update"}:void 0,app:ne}});return[O,...Y]}),_=ve(()=>o.value.length===0?{title:"App精选",apps:[]}:{title:"App精选",apps:[...o.value].sort(()=>Math.random()-.5).slice(0,6).map(ue=>({iconUrl:ue.hasIcon?te.getAppIconUrl(ue.bundleId):void 0,name:ue.name,bundleId:ue.bundleId,...ue}))}),w=[["专业级应用,为您提供卓越的使用体验。","功能强大,界面简洁,操作便捷。","让您的工作和生活更加高效。"],["精心设计的应用,满足您的各种需求。","稳定可靠,性能优异,值得信赖。","为您带来全新的使用感受。"],["功能丰富,设计精美,体验流畅。","无论是工作还是娱乐,都能轻松应对。","让您的数字生活更加精彩。"],["强大的功能,简洁的界面,出色的性能。","为您提供专业级的解决方案。","让每一次使用都成为享受。"],["创新设计,卓越性能,完美体验。","满足您的专业需求和个人喜好。","让您的设备发挥最大潜力。"],["功能全面,操作简单,效果出色。","无论是新手还是专家都能轻松上手。","为您的工作和生活增添便利。"]],C=O=>{let Y=0;for(let ne=0;ne<O.length;ne++){const ue=O.charCodeAt(ne);Y=(Y<<5)-Y+ue,Y=Y&Y}return Math.abs(Y)},$=O=>{const Y=C(O),ne=Y%w.length,ue=w[ne],oe=Y%2+2;return ue.slice(0,oe).join(" ")},A=ve(()=>{var oe,ke;if(o.value.length===0)return;const O=v.value[0]||o.value.find(je=>je.update!==null)||o.value[0];if(!O)return;const Y=O.hasIcon?te.getAppIconUrl(O.bundleId):void 0,ne=(oe=O.update)!=null&&oe.imageId&&O.update.imageId.length>0?te.getImageUrl(O.update.imageId[0],80,800,600):void 0,ue=$(O.bundleId);return{name:O.name,iconUrl:Y,version:((ke=O.update)==null?void 0:ke.latestVersion)||O.version,description:ue,price:"",screenshotUrl:ne}}),x=ve(()=>{var ke,je;if(o.value.length===0)return;const O=o.value.find(ze=>ze.update!==null)||o.value[0];if(!O)return;const Y=O.hasIcon?te.getAppIconUrl(O.bundleId):void 0,ne=(ke=O.update)!=null&&ke.imageId&&O.update.imageId.length>0?te.getImageUrl(O.update.imageId[0],80,800,600):void 0,ue=["JPG","PNG","GIF","HEIC","BMP","WEBP","TIFF","SVG","ICO","RAW","PSD","PDF"];let oe;if((je=O.update)!=null&&je.category&&O.update.category.length>0)oe=O.update.category;else{const ze=[...ue].sort(()=>Math.random()-.5),Re=Math.floor(Math.random()*2)+4;oe=ze.slice(0,Re)}return{title:O.name,iconUrl:Y,tags:oe.slice(0,6),backgroundUrl:ne}}),M=ve(()=>{let O=[...o.value];if(r.value&&i.value){const Y=i.value.toLowerCase();O=O.filter(ne=>ne.name.toLowerCase().includes(Y)||ne.bundleId.toLowerCase().includes(Y))}if(r.value&&d.value!=="all")switch(d.value){case"injected":O=O.filter(Y=>Y.status==="injected");break;case"update":O=O.filter(Y=>Y.status==="upgrade_available");break;case"store":O=O.filter(Y=>Y.update!==null);break}else if(!r.value){const Y=t.query.filter;if(Y)switch(Y){case"injected":O=O.filter(ne=>ne.status==="injected");break;case"update":O=O.filter(ne=>ne.status==="upgrade_available");break;case"unsupported":O=O.filter(ne=>ne.status==="unsupported");break;case"store":O=O.filter(ne=>ne.update!==null);break}}return O.sort((Y,ne)=>Y.name.localeCompare(ne.name)),O}),K=()=>{switch(t.query.filter){case"injected":return"已注入应用";case"update":return"可更新应用";case"unsupported":return"不支持的应用";case"store":return"应用商店";default:return"所有应用"}},W=()=>{switch(t.query.filter){case"store":return"浏览和下载应用更新版本";case"injected":return"已成功注入的应用列表";case"update":return"有新版本可用的应用";case"unsupported":return"当前版本不支持的应用";default:return"系统中所有已安装的应用"}},z=async()=>{a.value=!0,l.value="";try{const O=await te.getApps();o.value=O}catch(O){console.error("加载应用列表失败:",O),l.value="加载应用列表失败,请检查服务是否运行",o.value=[]}finally{a.value=!1}},re=async O=>{console.log(`应用 ${O} 已更新`),await z()},V=O=>{s.push(`/app/${O.bundleId}`)},q=O=>{console.log("应用操作:",O)},Q=O=>{if(O.bundleId){const Y=o.value.find(ne=>ne.bundleId===O.bundleId);Y?V(Y):s.push(`/app/${O.bundleId}`)}},E=(O,Y)=>{const ne=O==="primary"?Y.primaryAction:Y.secondaryAction;ne&&(ne.route?s.push(ne.route):ne.url?window.open(ne.url,"_blank"):ne.action==="update"&&Y.app&&console.log("更新应用:",Y.app))},L=(O,Y)=>{console.log("轮播切换到:",O,Y.title)},X=O=>{console.log("分类点击:",O)};return vt(()=>{z()}),(O,Y)=>(u(),f("div",I2,[r.value?(u(),f(ge,{key:0},[n("div",S2,[n("h2",A2,'"'+h(i.value)+'"',1)]),n("div",x2,[n("div",T2,[(u(),f(ge,null,Ee(c,ne=>n("button",{key:ne.id,class:"filter-tag"},h(ne.label),1)),64))]),m(Es,{modelValue:d.value,"onUpdate:modelValue":Y[0]||(Y[0]=ne=>d.value=ne),options:p},null,8,["modelValue"])]),a.value?(u(),f("div",E2,[...Y[1]||(Y[1]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):l.value?(u(),f("div",R2,[n("p",null,h(l.value),1),n("button",{onClick:z,class:"btn btn-primary"},"重试")])):M.value.length===0?(u(),f("div",U2,[m(b,{icon:"fluent-color:apps-24",class:"empty-icon"}),Y[2]||(Y[2]=n("p",null,"没有找到应用",-1)),Y[3]||(Y[3]=n("p",{class:"empty-hint"},"尝试调整搜索条件或筛选器",-1))])):(u(),f("div",D2,[(u(!0),f(ge,null,Ee(M.value,ne=>(u(),Ke(Eo,{key:ne.bundleId,app:ne,mode:"search","show-description":!0,onUpdated:re},null,8,["app"]))),128))]))],64)):(u(),f(ge,{key:1},[n("div",N2,[g.value.length>0?(u(),Ke(__,{key:0,items:g.value,"auto-play":!0,"auto-play-interval":5e3,onAction:E,onSlideChange:L},null,8,["items"])):T("",!0),m(H_,{"entertainment-data":_.value,"image-viewer-data":x.value,"featured-app-data":A.value,onAppClick:Q},null,8,["entertainment-data","image-viewer-data","featured-app-data"])]),v.value.length>0?(u(),Ke(s2,{key:0,apps:v.value,onAppClick:V,onAction:q},null,8,["apps"])):T("",!0),v.value.length>0?(u(),Ke(w2,{key:1,"featured-apps":v.value.slice(0,2),onAppClick:V,onAction:q,onCategoryClick:X},null,8,["featured-apps"])):T("",!0),n("div",M2,[n("div",P2,[n("h2",L2,h(K()),1),n("p",O2,h(W()),1)]),a.value?(u(),f("div",F2,[...Y[4]||(Y[4]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):l.value?(u(),f("div",V2,[n("p",null,h(l.value),1),n("button",{onClick:z,class:"btn btn-primary"},"重试")])):M.value.length===0?(u(),f("div",B2,[m(b,{icon:"fluent-color:apps-24",class:"empty-icon"}),Y[5]||(Y[5]=n("p",null,"没有找到应用",-1)),Y[6]||(Y[6]=n("p",{class:"empty-hint"},"尝试调整筛选器",-1))])):(u(),f("div",j2,[(u(!0),f(ge,null,Ee(M.value,ne=>(u(),Ke(Eo,{key:ne.bundleId,app:ne,mode:"list",onUpdated:re},null,8,["app"]))),128))])),n("div",q2,[n("div",H2,[n("span",z2,[Y[7]||(Y[7]=n("span",{class:"stat-label"},"总计:",-1)),n("span",W2,h(o.value.length),1)]),n("span",K2,[Y[8]||(Y[8]=n("span",{class:"stat-label"},"显示:",-1)),n("span",G2,h(M.value.length),1)])])])])],64))]))}}),J2=tt(Q2,[["__scopeId","data-v-920f0a59"]]),Z2={class:"dialog-header"},X2={class:"dialog-tabs"},Y2={class:"dialog-content"},ew={class:"tab-content"},tw={class:"upload-card"},sw={class:"card-header"},nw={class:"card-badge"},ow={class:"card-body"},aw={key:1,class:"screenshots-grid"},lw=["src","alt"],iw=["onClick"],rw={key:0,class:"thumbnail-badge"},cw={class:"thumbnail-number"},uw={class:"tab-content"},dw={class:"form-card"},fw={class:"card-header"},pw={class:"card-body"},vw={class:"app-header-section"},mw={class:"icon-section"},hw={class:"app-icon-display"},gw=["src","alt"],yw={class:"icon-upload-control"},bw={key:0,class:"icon-status"},_w={class:"name-section"},ww={class:"form-group"},kw={class:"form-group"},$w={class:"form-group"},Cw={class:"form-group"},Iw={class:"form-group"},Sw={class:"checkbox-label"},Aw={class:"tab-content"},xw={class:"form-card"},Tw={class:"card-header"},Ew={class:"card-body"},Rw={class:"array-field"},Uw={class:"field-header"},Dw={key:0,class:"empty-state"},Nw={key:1,class:"array-items"},Mw=["onUpdate:modelValue","placeholder"],Pw=["onClick"],Lw={class:"array-field"},Ow={class:"field-header"},Fw={key:0,class:"empty-state"},Vw={key:1,class:"array-items"},Bw=["onUpdate:modelValue"],jw=["onClick"],qw={class:"array-field"},Hw={class:"field-header"},zw={key:0,class:"empty-state"},Ww={key:1,class:"array-items"},Kw=["onUpdate:modelValue"],Gw=["onClick"],Qw={class:"array-field"},Jw={class:"field-header"},Zw={key:0,class:"empty-state"},Xw={key:1,class:"array-items"},Yw=["onUpdate:modelValue"],ek=["onClick"],tk={class:"array-field"},sk={class:"field-header"},nk={key:0,class:"empty-state"},ok={key:1,class:"array-items"},ak=["onUpdate:modelValue"],lk=["onClick"],ik={class:"array-field"},rk={class:"field-header"},ck={key:0,class:"empty-state"},uk={key:1,class:"array-items"},dk=["onUpdate:modelValue"],fk=["onClick"],pk={key:0,class:"upload-progress-bar"},vk={class:"progress-info"},mk={class:"progress-text"},hk={class:"progress-percent"},gk={class:"progress-bar"},yk={key:1,class:"error-banner"},bk={class:"dialog-footer"},_k=["disabled"],wk=["disabled"],kk=Xe({__name:"AppInfoUploadDialog",props:{visible:{type:Boolean},app:{}},emits:["close","success"],setup(e,{emit:t}){const s=e,o=t,a=k("images"),l=k(null),i=k(null),r=k({bundleId:"",appName:"",appVersion:"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1}),c=k(null),d=k([]),p=k(!1),v=k(0),g=k(""),_=k(""),w=ve(()=>!p.value&&r.value.appName.trim()!=="");ve(()=>c.value?c.value.thumbnailUrl||c.value.preview:"");const C=ve(()=>c.value&&c.value.preview?c.value.preview:s.app?te.getAppIconUrl(s.app.bundleId):"");at(()=>s.app,Q=>{Q&&(r.value.bundleId=Q.bundleId,r.value.appName=Q.name,r.value.appVersion=Q.version)},{immediate:!0}),at(()=>s.visible,Q=>{Q&&(a.value="images")});const $=()=>{var Q;(Q=l.value)==null||Q.click()},A=Q=>{var O;const L=(O=Q.target.files)==null?void 0:O[0];if(!L)return;const X=new FileReader;X.onload=Y=>{var ue;const ne=(ue=Y.target)==null?void 0:ue.result;c.value={file:L,preview:ne}},X.readAsDataURL(L)},x=()=>{var Q;(Q=i.value)==null||Q.click()},M=Q=>{const L=Q.target.files;if(!L)return;const X=5-d.value.length;Array.from(L).slice(0,X).forEach(Y=>{const ne=new FileReader;ne.onload=ue=>{var oe;d.value.push({file:Y,preview:(oe=ue.target)==null?void 0:oe.result})},ne.readAsDataURL(Y)}),i.value&&(i.value.value="")},K=Q=>{d.value.splice(Q,1)},W=Q=>{const E=r.value[Q];Array.isArray(E)&&E.push("")},z=(Q,E)=>{const L=r.value[Q];Array.isArray(L)&&L.splice(E,1)},re=async()=>{var Q,E;if(w.value){_.value="",p.value=!0,v.value=0,g.value="准备上传...";try{let L="",X=null;if(c.value&&c.value.file)X=c.value.file;else if(s.app){g.value="正在获取应用图标...",v.value=5;try{const ke=te.getAppIconUrl(s.app.bundleId),je=await fetch(ke);if(!je.ok)throw new Error("获取应用图标失败");const ze=await je.blob();X=new File([ze],`${s.app.bundleId}.png`,{type:ze.type||"image/png"})}catch(ke){throw new Error(`获取应用图标失败: ${ke.message||"未知错误"}`)}}else throw new Error("请先选择应用图标或确保当前应用存在");if(!X)throw new Error("无法获取图标文件");g.value="正在上传图标...",v.value=10;const O=await te.uploadImage("icon",X);if(!O.success||!((Q=O.data)!=null&&Q.fileId))throw new Error(O.message||"上传图标失败");L=O.data.fileId,v.value=30,g.value="正在上传截图...";const Y=[];for(let ke=0;ke<d.value.length;ke++){const je=d.value[ke];v.value=30+ke/d.value.length*30,g.value=`正在上传截图 ${ke+1}/${d.value.length}...`;const ze=await te.uploadImage("appImage",je.file);ze.success&&((E=ze.data)!=null&&E.fileId)?Y.push(ze.data.fileId):console.warn(`截图 ${ke+1} 上传失败:`,ze.message)}v.value=60,g.value="正在提交应用信息...";const ne=new Date().toISOString(),ue={bundleId:r.value.bundleId,appName:r.value.appName.trim(),appVersion:r.value.appVersion,iconId:L,imageId:Y,description:r.value.description.trim(),permissions:r.value.permissions.filter(ke=>ke.trim()!==""),releaseDate:ne,updateDate:ne,compatibility:r.value.compatibility.filter(ke=>ke.trim()!==""),architecture:r.value.architecture.filter(ke=>ke.trim()!==""),language:r.value.language.filter(ke=>ke.trim()!==""),category:r.value.category.filter(ke=>ke.trim()!==""),developer:r.value.developer.filter(ke=>ke.trim()!==""),isDMCAed:r.value.isDMCAed};v.value=80;const oe=await te.uploadAppInfo(ue);if(!oe.success)throw new Error(oe.message||"上传应用信息失败");v.value=100,g.value="上传成功!",setTimeout(()=>{o("success"),V()},500)}catch(L){_.value=L.message||"上传失败,请重试",console.error("上传失败:",L)}finally{p.value=!1}}},V=()=>{var Q,E,L;p.value||(o("close"),r.value={bundleId:((Q=s.app)==null?void 0:Q.bundleId)||"",appName:((E=s.app)==null?void 0:E.name)||"",appVersion:((L=s.app)==null?void 0:L.version)||"",description:"",permissions:[],compatibility:[],architecture:[],language:[],category:[],developer:[],isDMCAed:!1},c.value=null,d.value=[],_.value="",v.value=0,g.value="",a.value="images")},q=Q=>{Q.target===Q.currentTarget&&!p.value&&V()};return(Q,E)=>e.visible?(u(),f("div",{key:0,class:"dialog-overlay",onClick:q},[n("div",{class:"dialog-container",onClick:E[14]||(E[14]=Be(()=>{},["stop"]))},[n("div",Z2,[E[15]||(E[15]=n("h2",{class:"dialog-title"},"上传应用信息",-1)),n("button",{class:"dialog-close",onClick:V},[m(b,{icon:"mdi:close"})])]),n("div",X2,[n("button",{class:$e(["tab-button",{active:a.value==="images"}]),onClick:E[0]||(E[0]=L=>a.value="images")},[m(b,{icon:"mdi:image",class:"tab-icon"}),E[16]||(E[16]=Ce(" 图片 ",-1))],2),n("button",{class:$e(["tab-button",{active:a.value==="basic"}]),onClick:E[1]||(E[1]=L=>a.value="basic")},[m(b,{icon:"mdi:information",class:"tab-icon"}),E[17]||(E[17]=Ce(" 基本信息 ",-1))],2),n("button",{class:$e(["tab-button",{active:a.value==="details"}]),onClick:E[2]||(E[2]=L=>a.value="details")},[m(b,{icon:"mdi:format-list-bulleted",class:"tab-icon"}),E[18]||(E[18]=Ce(" 详细信息 ",-1))],2)]),n("div",Y2,[Qe(n("div",ew,[n("div",tw,[n("div",sw,[m(b,{icon:"mdi:image-multiple",class:"card-icon"}),E[19]||(E[19]=n("h3",null,"应用截图",-1)),n("span",nw,h(d.value.length)+"/5",1)]),n("div",ow,[n("input",{ref_key:"screenshotInput",ref:i,type:"file",accept:"image/*",multiple:"",onChange:M,class:"file-input",style:{display:"none"}},null,544),d.value.length===0?(u(),f("div",{key:0,class:"upload-area",onClick:x},[m(b,{icon:"mdi:image-multiple-outline",class:"upload-icon"}),E[20]||(E[20]=n("p",{class:"upload-text"},"点击选择截图",-1)),E[21]||(E[21]=n("p",{class:"upload-hint"},"最多可选择5张图片",-1))])):(u(),f("div",aw,[(u(!0),f(ge,null,Ee(d.value,(L,X)=>(u(),f("div",{key:X,class:"thumbnail-box"},[n("img",{src:L.thumbnailUrl||L.preview,alt:`截图${X+1}`},null,8,lw),n("button",{onClick:O=>K(X),class:"thumbnail-remove"},[m(b,{icon:"mdi:close"})],8,iw),L.fileId?(u(),f("div",rw,[m(b,{icon:"mdi:check-circle"})])):T("",!0),n("div",cw,h(X+1),1)]))),128)),d.value.length<5?(u(),f("div",{key:0,class:"thumbnail-box add-more",onClick:x},[m(b,{icon:"mdi:plus",class:"add-icon"}),E[22]||(E[22]=n("p",null,"添加更多",-1))])):T("",!0)]))])])],512),[[gs,a.value==="images"]]),Qe(n("div",uw,[n("div",dw,[n("div",fw,[m(b,{icon:"mdi:information",class:"card-icon"}),E[23]||(E[23]=n("h3",null,"基本信息",-1))]),n("div",pw,[n("div",vw,[n("div",mw,[n("div",hw,[n("img",{src:C.value,alt:r.value.appName||"应用图标"},null,8,gw)]),n("div",yw,[n("input",{ref_key:"iconInput",ref:l,type:"file",accept:"image/*",onChange:A,class:"file-input",style:{display:"none"}},null,544),n("button",{onClick:$,class:"btn-icon-upload"},[m(b,{icon:"mdi:image-edit",class:"btn-icon"}),Ce(" "+h(c.value?"更换图标":"上传图标"),1)]),c.value?(u(),f("div",bw,[m(b,{icon:"mdi:check-circle",class:"status-icon success"}),E[24]||(E[24]=n("span",null,"已选择图标",-1))])):T("",!0)])]),n("div",_w,[n("div",ww,[E[25]||(E[25]=n("label",{class:"form-label"},[Ce(" 应用名称 "),n("span",{class:"required"},"*")],-1)),Qe(n("input",{"onUpdate:modelValue":E[3]||(E[3]=L=>r.value.appName=L),type:"text",placeholder:"请输入应用名称",required:"",class:"form-input"},null,512),[[ot,r.value.appName]])]),n("div",kw,[E[26]||(E[26]=n("label",{class:"form-label"},"版本号",-1)),Qe(n("input",{"onUpdate:modelValue":E[4]||(E[4]=L=>r.value.appVersion=L),type:"text",readonly:"",class:"form-input readonly-input"},null,512),[[ot,r.value.appVersion]])])])]),n("div",$w,[E[27]||(E[27]=n("label",{class:"form-label"},"Bundle ID",-1)),Qe(n("input",{"onUpdate:modelValue":E[5]||(E[5]=L=>r.value.bundleId=L),type:"text",readonly:"",class:"form-input readonly-input"},null,512),[[ot,r.value.bundleId]])]),n("div",Cw,[E[28]||(E[28]=n("label",{class:"form-label"},"应用描述",-1)),Qe(n("textarea",{"onUpdate:modelValue":E[6]||(E[6]=L=>r.value.description=L),placeholder:"请输入应用描述...",rows:"5",class:"form-textarea"},null,512),[[ot,r.value.description]])]),n("div",Iw,[n("label",Sw,[Qe(n("input",{"onUpdate:modelValue":E[7]||(E[7]=L=>r.value.isDMCAed=L),type:"checkbox"},null,512),[[Ou,r.value.isDMCAed]]),E[29]||(E[29]=n("span",null,"是否被DMCA",-1))])])])])],512),[[gs,a.value==="basic"]]),Qe(n("div",Aw,[n("div",xw,[n("div",Tw,[m(b,{icon:"mdi:format-list-bulleted",class:"card-icon"}),E[30]||(E[30]=n("h3",null,"详细信息",-1))]),n("div",Ew,[n("div",Rw,[n("div",Uw,[E[32]||(E[32]=n("label",null,"权限列表",-1)),n("button",{onClick:E[8]||(E[8]=L=>W("permissions")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[31]||(E[31]=Ce(" 添加 ",-1))])]),r.value.permissions.length===0?(u(),f("div",Dw,[m(b,{icon:"mdi:shield-off",class:"empty-icon"}),E[33]||(E[33]=n("p",null,"暂无权限信息",-1))])):(u(),f("div",Nw,[(u(!0),f(ge,null,Ee(r.value.permissions,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.permissions[X]=O,type:"text",placeholder:`权限 ${X+1}`},null,8,Mw),[[ot,r.value.permissions[X]]]),n("button",{onClick:O=>z("permissions",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,Pw)]))),128))]))]),n("div",Lw,[n("div",Ow,[E[35]||(E[35]=n("label",null,"系统兼容性",-1)),n("button",{onClick:E[9]||(E[9]=L=>W("compatibility")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[34]||(E[34]=Ce(" 添加 ",-1))])]),r.value.compatibility.length===0?(u(),f("div",Fw,[m(b,{icon:"mdi:desktop-classic",class:"empty-icon"}),E[36]||(E[36]=n("p",null,"暂无兼容性信息",-1))])):(u(),f("div",Vw,[(u(!0),f(ge,null,Ee(r.value.compatibility,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.compatibility[X]=O,type:"text",placeholder:"例如: macOS 10.15"},null,8,Bw),[[ot,r.value.compatibility[X]]]),n("button",{onClick:O=>z("compatibility",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,jw)]))),128))]))]),n("div",qw,[n("div",Hw,[E[38]||(E[38]=n("label",null,"系统架构",-1)),n("button",{onClick:E[10]||(E[10]=L=>W("architecture")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[37]||(E[37]=Ce(" 添加 ",-1))])]),r.value.architecture.length===0?(u(),f("div",zw,[m(b,{icon:"mdi:cpu-64-bit",class:"empty-icon"}),E[39]||(E[39]=n("p",null,"暂无架构信息",-1))])):(u(),f("div",Ww,[(u(!0),f(ge,null,Ee(r.value.architecture,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.architecture[X]=O,type:"text",placeholder:"例如: x86_64, arm64"},null,8,Kw),[[ot,r.value.architecture[X]]]),n("button",{onClick:O=>z("architecture",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,Gw)]))),128))]))]),n("div",Qw,[n("div",Jw,[E[41]||(E[41]=n("label",null,"支持语言",-1)),n("button",{onClick:E[11]||(E[11]=L=>W("language")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[40]||(E[40]=Ce(" 添加 ",-1))])]),r.value.language.length===0?(u(),f("div",Zw,[m(b,{icon:"mdi:translate",class:"empty-icon"}),E[42]||(E[42]=n("p",null,"暂无语言信息",-1))])):(u(),f("div",Xw,[(u(!0),f(ge,null,Ee(r.value.language,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.language[X]=O,type:"text",placeholder:"例如: English, Chinese"},null,8,Yw),[[ot,r.value.language[X]]]),n("button",{onClick:O=>z("language",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,ek)]))),128))]))]),n("div",tk,[n("div",sk,[E[44]||(E[44]=n("label",null,"应用分类",-1)),n("button",{onClick:E[12]||(E[12]=L=>W("category")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[43]||(E[43]=Ce(" 添加 ",-1))])]),r.value.category.length===0?(u(),f("div",nk,[m(b,{icon:"mdi:folder",class:"empty-icon"}),E[45]||(E[45]=n("p",null,"暂无分类信息",-1))])):(u(),f("div",ok,[(u(!0),f(ge,null,Ee(r.value.category,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.category[X]=O,type:"text",placeholder:"例如: Productivity, Games"},null,8,ak),[[ot,r.value.category[X]]]),n("button",{onClick:O=>z("category",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,lk)]))),128))]))]),n("div",ik,[n("div",rk,[E[47]||(E[47]=n("label",null,"开发者",-1)),n("button",{onClick:E[13]||(E[13]=L=>W("developer")),class:"btn-icon-text"},[m(b,{icon:"mdi:plus"}),E[46]||(E[46]=Ce(" 添加 ",-1))])]),r.value.developer.length===0?(u(),f("div",ck,[m(b,{icon:"mdi:account",class:"empty-icon"}),E[48]||(E[48]=n("p",null,"暂无开发者信息",-1))])):(u(),f("div",uk,[(u(!0),f(ge,null,Ee(r.value.developer,(L,X)=>(u(),f("div",{key:X,class:"array-item-row"},[Qe(n("input",{"onUpdate:modelValue":O=>r.value.developer[X]=O,type:"text",placeholder:"例如: Apple Inc."},null,8,dk),[[ot,r.value.developer[X]]]),n("button",{onClick:O=>z("developer",X),class:"btn-icon-danger"},[m(b,{icon:"mdi:delete"})],8,fk)]))),128))]))])])])],512),[[gs,a.value==="details"]]),p.value?(u(),f("div",pk,[n("div",vk,[m(b,{icon:"mdi:cloud-upload",class:"progress-icon"}),n("span",mk,h(g.value),1),n("span",hk,h(v.value)+"%",1)]),n("div",gk,[n("div",{class:"progress-fill",style:Lt({width:`${v.value}%`})},null,4)])])):T("",!0),_.value?(u(),f("div",yk,[m(b,{icon:"mdi:alert-circle",class:"error-icon"}),n("span",null,h(_.value),1)])):T("",!0)]),n("div",bk,[n("button",{onClick:V,class:"btn btn-secondary",disabled:p.value}," 取消 ",8,_k),n("button",{onClick:re,class:"btn btn-primary",disabled:p.value||!w.value},[p.value?(u(),Ke(b,{key:0,icon:"mdi:loading",class:"btn-icon spinning"})):T("",!0),Ce(" "+h(p.value?"上传中...":"确认上传"),1)],8,wk)])])])):T("",!0)}}),$k=tt(kk,[["__scopeId","data-v-6f782ff2"]]),Ck={class:"app-recommendations"},Ik={class:"recommendations-header"},Sk={key:0,class:"loading"},Ak={key:1,class:"error"},xk={key:2,class:"empty"},Tk={key:3,class:"recommendations-list"},Ek=["onClick"],Rk={class:"app-icon-small"},Uk=["src","alt"],Dk={key:1,class:"icon-placeholder-small"},Nk={class:"app-info-small"},Mk={class:"app-name-small"},Pk=["onClick"],Lk=Xe({__name:"AppRecommendations",props:{currentBundleId:{}},setup(e){const t=e,s=as(),o=k([]),a=k(!0),l=k(""),i=async()=>{a.value=!0,l.value="";try{const _=[...(await te.getApps()).filter(w=>w.bundleId!==t.currentBundleId)].sort(()=>Math.random()-.5);o.value=_.slice(0,4)}catch(v){console.error("加载推荐应用失败:",v),l.value="加载推荐应用失败"}finally{a.value=!1}},r=v=>te.getAppIconUrl(v),c=v=>{s.push(`/app/${v.bundleId}`).then(()=>{window.location.reload()})},d=v=>{s.push(`/app/${v.bundleId}`).then(()=>{window.location.reload()})},p=v=>{const g=v.target;g.style.display="none";const _=g.nextElementSibling;_&&(_.style.display="flex")};return vt(()=>{i()}),(v,g)=>(u(),f("div",Ck,[n("div",Ik,[g[0]||(g[0]=n("h2",null,"发现更多",-1)),m(b,{icon:"fluent-color:arrow-right-24"})]),a.value?(u(),f("div",Sk,[...g[1]||(g[1]=[n("div",{class:"spinner"},null,-1)])])):l.value?(u(),f("div",Ak,[n("p",null,h(l.value),1)])):o.value.length===0?(u(),f("div",xk,[...g[2]||(g[2]=[n("p",null,"暂无推荐应用",-1)])])):(u(),f("div",Tk,[(u(!0),f(ge,null,Ee(o.value,_=>(u(),f("div",{key:_.bundleId,class:"recommendation-item",onClick:w=>c(_)},[n("div",Rk,[_.hasIcon?(u(),f("img",{key:0,src:r(_.bundleId),alt:_.name,onError:p},null,40,Uk)):(u(),f("div",Dk,h(_.name.charAt(0).toUpperCase()),1))]),n("div",Nk,[n("h3",Mk,h(_.name),1),n("button",{class:"download-btn",onClick:Be(w=>d(_),["stop"])}," 免费下载 ",8,Pk)])],8,Ek))),128))]))]))}}),Ok=tt(Lk,[["__scopeId","data-v-c58086a4"]]);var ps=(e=>(e.PENDING="pending",e.APPROVED="approved",e.REJECTED="rejected",e))(ps||{});const un={pornography:{label:"涉黄",icon:"mdi:eye-off-outline",colorClass:"type-pornography"},fraud:{label:"诈骗",icon:"mdi:shield-alert-outline",colorClass:"type-fraud"},malicious_drainage:{label:"恶意引流",icon:"mdi:link-variant-off",colorClass:"type-drainage"},abuse:{label:"侮辱谩骂",icon:"mdi:emoticon-angry-outline",colorClass:"type-abuse"},trolling:{label:"引战",icon:"mdi:fire",colorClass:"type-trolling"},against_values:{label:"不符合社会核心主义价值观",icon:"mdi:flag-outline",colorClass:"type-values"}};function Vd(e){return un[e]||{label:e,icon:"mdi:help-circle-outline",colorClass:""}}function Bd(e){return Vd(e).label}function jd(e){return Vd(e).colorClass}const Fk={class:"image-container"},Vk=["src","alt"],Bk={key:1,class:"loading-state"},jk={key:2,class:"error-state"},qk={key:2,class:"image-info"},Hk={class:"image-index"},zk={key:0,class:"image-size"},Wk=Xe({__name:"ImagePreviewModal",props:{visible:{type:Boolean},imageUrl:{default:null},images:{default:()=>[]},imagesInfo:{default:()=>[]},initialIndex:{default:0},showNavigation:{type:Boolean,default:!0},showInfo:{type:Boolean,default:!0}},emits:["close","indexChange"],setup(e,{emit:t}){const s=e,o=t,a=k(s.initialIndex),l=k(null),i=k(!1),r=k(!1),c=ve(()=>s.imagesInfo&&s.imagesInfo.length>0?s.imagesInfo.map(x=>x.url):s.images&&s.images.length>0?s.images:s.imageUrl?[s.imageUrl]:[]),d=ve(()=>{if(s.imagesInfo&&s.imagesInfo.length>0){const x=s.imagesInfo[a.value];return x==null?void 0:x.size}}),p=x=>x?x<1024?`${x} B`:x<1024*1024?`${(x/1024).toFixed(1)} KB`:`${(x/(1024*1024)).toFixed(1)} MB`:"",v=()=>{if(c.value.length===0){l.value=null;return}const x=c.value[a.value];if(!x){r.value=!0,l.value=null;return}i.value=!1,r.value=!1,l.value=x},g=()=>{a.value>0&&(a.value--,o("indexChange",a.value))},_=()=>{a.value<c.value.length-1&&(a.value++,o("indexChange",a.value))},w=()=>{o("close")},C=x=>{x.key==="Escape"?w():x.key==="ArrowLeft"?g():x.key==="ArrowRight"&&_()},$=()=>{r.value=!1},A=()=>{r.value=!0,l.value=null};return at(()=>s.visible,x=>{x?(a.value=s.initialIndex,v(),Ct(()=>{const M=document.querySelector(".image-preview-modal");M&&M.focus()})):(l.value=null,i.value=!1,r.value=!1)},{immediate:!0}),at(a,()=>{v()}),at(()=>s.images,()=>{s.visible&&v()}),vt(()=>{s.visible&&v()}),(x,M)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"preview-fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"image-preview-modal",onClick:w,onKeydown:C,tabindex:"-1"},[n("div",{class:"preview-content",onClick:M[0]||(M[0]=Be(()=>{},["stop"]))},[e.showNavigation&&a.value>0?(u(),f("button",{key:0,class:"nav-btn prev-btn",onClick:Be(g,["stop"]),title:"上一张 (←)"},[m(b,{icon:"mdi:chevron-left"})])):T("",!0),n("div",Fk,[l.value?(u(),f("img",{key:0,src:l.value,alt:`图片 ${a.value+1}`,onLoad:$,onError:A},null,40,Vk)):i.value?(u(),f("div",Bk,[...M[1]||(M[1]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):r.value?(u(),f("div",jk,[m(b,{icon:"mdi:image-broken"}),M[2]||(M[2]=n("p",null,"图片加载失败",-1))])):T("",!0)]),e.showNavigation&&a.value<c.value.length-1?(u(),f("button",{key:1,class:"nav-btn next-btn",onClick:Be(_,["stop"]),title:"下一张 (→)"},[m(b,{icon:"mdi:chevron-right"})])):T("",!0),n("button",{class:"close-preview-btn",onClick:Be(w,["stop"]),title:"关闭 (ESC)"},[m(b,{icon:"mdi:close"})]),e.showInfo&&c.value.length>0?(u(),f("div",qk,[n("span",Hk,h(a.value+1)+" / "+h(c.value.length),1),d.value?(u(),f("span",zk,h(p(d.value)),1)):T("",!0)])):T("",!0)])],32)):T("",!0)]),_:1})]))}}),Gn=tt(Wk,[["__scopeId","data-v-ba76c315"]]),Kk={key:0,class:"image-list"},Gk=["onClick"],Qk={class:"image-wrapper"},Jk=["src","alt","onError"],Zk={key:1,class:"image-error"},Xk={key:0,class:"image-index"},Yk=Xe({__name:"ImageList",props:{images:{},showIndex:{type:Boolean,default:!1},columns:{default:3},maxWidth:{default:void 0}},emits:["imageClick"],setup(e,{emit:t}){Zp(c=>({v7d5d96be:c.columns,d79a8c5a:l.value}));const s=e,o=t,a=k(new Map),l=ve(()=>s.maxWidth?`${s.maxWidth}px`:"none"),i=c=>{const d=s.images[c];o("imageClick",c,d)},r=c=>{a.value.set(c,!0)};return(c,d)=>e.images.length>0?(u(),f("div",Kk,[(u(!0),f(ge,null,Ee(e.images,(p,v)=>(u(),f("div",{key:v,class:"image-item",onClick:g=>i(v)},[n("div",Qk,[p&&!a.value.has(v)?(u(),f("img",{key:0,src:p,alt:`图片 ${v+1}`,onError:g=>r(v)},null,40,Jk)):T("",!0),a.value.has(v)?(u(),f("div",Zk,[m(b,{icon:"mdi:image-broken"}),d[0]||(d[0]=n("span",null,"加载失败",-1))])):T("",!0)]),e.showIndex?(u(),f("div",Xk,h(v+1)+"/"+h(e.images.length),1)):T("",!0)],8,Gk))),128))])):T("",!0)}}),Dn=tt(Yk,[["__scopeId","data-v-77a5a861"]]),e$={class:"reply-item"},t$={class:"reply-avatar"},s$={class:"reply-content-wrapper"},n$={class:"reply-header"},o$={key:1,class:"replyer-name"},a$={key:2,class:"reply-to-name"},l$={key:3,class:"reply-to-name"},i$={class:"reply-date"},r$={class:"reply-text"},c$={class:"reply-actions"},u$={key:0,class:"nested-replies-list"},d$=Xe({__name:"ReplyItem",props:{reply:{},showReplyButton:{type:Boolean,default:!0}},emits:["like","dislike","reply","nestedLike","nestedDislike","userHover","userLeave"],setup(e,{emit:t}){const s=t,o=()=>{s("like")},a=()=>{s("dislike")},l=()=>{s("reply")},i=d=>{s("nestedLike",d)},r=d=>{s("nestedDislike",d)},c=d=>{try{const p=new Date(d),g=new Date().getTime()-p.getTime(),_=Math.floor(g/(1e3*60)),w=Math.floor(g/(1e3*60*60)),C=Math.floor(g/(1e3*60*60*24));return _<1?"刚刚":_<60?`${_}分钟前`:w<24?`${w}小时前`:C<30?`${C}天前`:C<365?`${Math.floor(C/30)}个月前`:`${Math.floor(C/365)}年前`}catch{return d}};return(d,p)=>{const v=lu("ReplyItem",!0);return u(),f("div",e$,[n("div",t$,[m(Ft,{"avatar-id":e.reply.userAvatar,"user-name":e.reply.userName,size:"small"},null,8,["avatar-id","user-name"])]),n("div",s$,[n("div",n$,[e.reply.userId?(u(),f("span",{key:0,class:"replyer-name clickable",onMouseenter:p[0]||(p[0]=Be(g=>d.$emit("userHover",g,e.reply.userId,e.reply.userName,e.reply.userAvatar),["stop"])),onMouseleave:p[1]||(p[1]=Be(g=>d.$emit("userLeave"),["stop"]))},h(e.reply.userName),33)):(u(),f("span",o$,h(e.reply.userName),1)),e.reply.replyToUserName&&e.reply.replyToUserId?(u(),f("span",a$,[p[6]||(p[6]=Ce(" 回复 ",-1)),n("span",{class:"reply-to-name-clickable clickable",onMouseenter:p[2]||(p[2]=Be(g=>d.$emit("userHover",g,e.reply.replyToUserId,e.reply.replyToUserName,e.reply.replyToUserAvatar),["stop"])),onMouseleave:p[3]||(p[3]=Be(g=>d.$emit("userLeave"),["stop"]))}," @"+h(e.reply.replyToUserName),33)])):e.reply.replyToUserName?(u(),f("span",l$," 回复 @"+h(e.reply.replyToUserName),1)):T("",!0),n("span",i$,h(c(e.reply.date)),1)]),n("p",r$,h(e.reply.content),1),n("div",c$,[n("button",{class:$e(["action-btn small",{active:e.reply.userLikeStatus==="liked"}]),onClick:o},[m(b,{icon:e.reply.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(e.reply.likeCount),1)],2),n("button",{class:$e(["action-btn small",{active:e.reply.userLikeStatus==="disliked"}]),onClick:a},[m(b,{icon:e.reply.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(e.reply.dislikeCount),1)],2),e.showReplyButton?(u(),f("button",{key:0,class:"action-btn small reply-btn",onClick:l},[m(b,{icon:"mdi:reply-outline",class:"action-icon"}),p[7]||(p[7]=n("span",null,"回复",-1))])):T("",!0)]),Nn(d.$slots,"nested-reply-form",{},void 0),e.reply.nestedReplies&&e.reply.nestedReplies.length>0?(u(),f("div",u$,[(u(!0),f(ge,null,Ee(e.reply.nestedReplies,g=>(u(),Ke(v,{key:g.id,reply:g,"show-reply-button":!1,onLike:_=>i(g.id),onDislike:_=>r(g.id),onUserHover:p[4]||(p[4]=(_,w,C,$)=>s("userHover",_,w,C,$)),onUserLeave:p[5]||(p[5]=_=>s("userLeave"))},{"nested-reply-form":pt(({replyId:_})=>[Nn(d.$slots,"nested-reply-form",{replyId:_},void 0,!0)]),_:3},8,["reply","onLike","onDislike"]))),128))])):T("",!0)])])}}}),f$=tt(d$,[["__scopeId","data-v-682f95a5"]]),p$={class:"comment-form"},v$={class:"form-avatar"},m$={class:"form-content"},h$={key:0,class:"reply-to-hint"},g$=["placeholder","rows","maxlength"],y$={class:"form-actions"},b$={class:"image-upload-area"},_$=["disabled"],w$={key:0,class:"image-count"},k$={class:"form-buttons"},$$=["disabled"],C$={key:1,class:"image-preview-list"},I$=["src","alt"],S$=["onClick"],A$={key:0,class:"image-error"},x$=Xe({__name:"CommentForm",props:{userAvatar:{},userName:{},isReply:{type:Boolean,default:!1},replyToUserName:{},modelValue:{},placeholder:{default:"写下你的想法..."},maxImages:{default:5},avatarSize:{default:"medium"},submitText:{default:"发表评论"}},emits:["update:modelValue","submit","cancel"],setup(e,{expose:t,emit:s}){const o=e,a=s,l=ve({get:()=>o.modelValue||"",set:C=>a("update:modelValue",C)}),i=k(null),r=k([]),c=ve(()=>l.value.trim().length>0||r.value.length>0),d=ve(()=>o.placeholder?o.placeholder:o.isReply&&o.replyToUserName?`回复 @${o.replyToUserName}...`:o.isReply?"写下你的回复...":"写下你的想法..."),p=()=>{var C;(C=i.value)==null||C.click()},v=C=>{const $=C.target,A=$.files;if(!A)return;const x=10*1024*1024,M=o.maxImages||5;Array.from(A).forEach(K=>{if(r.value.length>=M)return;if(!K.type.startsWith("image/")){r.value.push({file:K,preview:"",error:"只能上传图片文件"});return}if(K.size>x){r.value.push({file:K,preview:"",error:"图片大小不能超过10MB"});return}const W=new FileReader;W.onload=z=>{var V;const re=r.value.findIndex(q=>q.file===K);re!==-1&&(r.value[re].preview=(V=z.target)==null?void 0:V.result)},W.readAsDataURL(K),r.value.push({file:K,preview:""})}),$&&($.value="")},g=C=>{r.value.splice(C,1)},_=()=>{if(!c.value)return;const C=r.value.filter($=>!$.error).map($=>$.file);a("submit",l.value.trim(),C)},w=()=>{a("cancel")};return t({clear:()=>{l.value="",r.value=[]}}),(C,$)=>(u(),f("div",{class:$e(["comment-form-container",{"reply-mode":e.isReply}])},[n("div",p$,[n("div",v$,[m(Ft,{"avatar-id":e.userAvatar,"user-name":e.userName,size:e.avatarSize},null,8,["avatar-id","user-name","size"])]),n("div",m$,[e.replyToUserName?(u(),f("div",h$," 回复 @"+h(e.replyToUserName),1)):T("",!0),Qe(n("textarea",{"onUpdate:modelValue":$[0]||($[0]=A=>l.value=A),class:"comment-textarea",placeholder:d.value,rows:e.isReply?2:3,maxlength:e.isReply?500:1e3},null,8,g$),[[ot,l.value]]),n("div",y$,[n("div",b$,[n("input",{ref_key:"imageInput",ref:i,type:"file",accept:"image/*",multiple:"",onChange:v,style:{display:"none"}},null,544),n("button",{class:"upload-image-btn",onClick:p,disabled:r.value.length>=e.maxImages},[m(b,{icon:"fluent-color:image-24",class:"btn-icon"}),$[1]||($[1]=Ce(" 添加图片 ",-1))],8,_$),r.value.length>0?(u(),f("span",w$," 已选择 "+h(r.value.length)+"/"+h(e.maxImages),1)):T("",!0)]),n("div",k$,[e.isReply?(u(),f("button",{key:0,class:"cancel-btn",onClick:w}," 取消 ")):T("",!0),n("button",{class:"submit-btn",onClick:_,disabled:!c.value},[m(b,{icon:(e.isReply,"fluent-color:chat-24"),class:"btn-icon"},null,8,["icon"]),Ce(" "+h(e.submitText),1)],8,$$)])]),r.value.length>0?(u(),f("div",C$,[(u(!0),f(ge,null,Ee(r.value,(A,x)=>(u(),f("div",{key:x,class:"image-preview-item"},[n("img",{src:A.preview,alt:`预览图 ${x+1}`},null,8,I$),n("button",{class:"remove-image-btn",onClick:M=>g(x)},[m(b,{icon:"mdi:close"})],8,S$),A.error?(u(),f("div",A$,h(A.error),1)):T("",!0)]))),128))])):T("",!0)])])],2))}}),$l=tt(x$,[["__scopeId","data-v-5dfa960a"]]),T$={class:"avatar-background"},E$={class:"background-avatar-blur"},R$=["src"],U$={class:"card-content"},D$={class:"content-layout"},N$={class:"avatar-wrapper"},M$={class:"user-info"},P$={class:"user-name"},L$={class:"action-buttons"},O$=Xe({__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,a=k(null),l=k(null),i=k(""),r=$=>{i.value&&i.value.startsWith("blob:")&&URL.revokeObjectURL(i.value),i.value=URL.createObjectURL($)},c=ve(()=>s.position?l.value?{left:`${l.value.x}px`,top:`${l.value.y}px`}:{left:`${s.position.x}px`,top:`${s.position.y}px`}:{}),d=()=>{if(!s.position||!a.value)return;const $=a.value.getBoundingClientRect(),A=$.width||260,x=$.height||240,M=16;let K=s.position.x,W=s.position.y;const z=window.innerWidth,re=window.innerHeight;K+A>z-M&&(K=z-A-M),K<M&&(K=M),W+x>re-M&&(s.position.y-M>=x?W=s.position.y-x-8:W=re-x-M),W<M&&(W=M),l.value={x:K,y:W}};at(()=>[s.visible,s.position],()=>{l.value=null,s.visible&&s.position&&Ct(()=>{d()})},{immediate:!0});const p=k(null),v=()=>{p.value&&(clearTimeout(p.value),p.value=null),o("close")},g=()=>{p.value&&(clearTimeout(p.value),p.value=null),o("mouseEnter")},_=()=>{p.value=window.setTimeout(()=>{v()},300)},w=()=>{o("sendMessage",s.userId,s.userName),v()},C=()=>{o("blockUser",s.userId,s.userName),v()};return jn(()=>{i.value&&i.value.startsWith("blob:")&&URL.revokeObjectURL(i.value)}),at(()=>s.visible,$=>{!$&&i.value&&i.value.startsWith("blob:")&&(URL.revokeObjectURL(i.value),i.value="")}),($,A)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"card-fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"card-overlay",onClick:v},[n("div",{ref_key:"cardContainerRef",ref:a,class:"card-container",style:Lt(c.value),onClick:A[0]||(A[0]=Be(()=>{},["stop"])),onMouseenter:g,onMouseleave:_},[n("div",T$,[n("div",E$,[i.value?(u(),f("img",{key:0,src:i.value,alt:"",class:"background-image"},null,8,R$)):T("",!0)]),A[1]||(A[1]=n("div",{class:"background-overlay"},null,-1))]),n("div",U$,[n("div",D$,[n("div",N$,[m(Ft,{size:"large",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"]),A[2]||(A[2]=n("div",{class:"online-indicator"},null,-1))]),n("div",M$,[n("div",P$,h(e.userName),1)])]),n("div",L$,[n("button",{class:"action-btn message-btn",onClick:w},[m(b,{icon:"fluent-color:comment-multiple-32",class:"btn-icon"}),A[3]||(A[3]=n("span",null,"私信",-1))]),n("button",{class:"action-btn block-btn",onClick:C},[m(b,{icon:"mdi:block-helper",class:"btn-icon"}),A[4]||(A[4]=n("span",null,"拉黑",-1))])])])],36)])):T("",!0)]),_:1})]))}}),Ci=tt(O$,[["__scopeId","data-v-e3708e1e"]]);function F$(){const e=k(!1),t=k(void 0),s=k(""),o=k(""),a=k(void 0),l=k(null),i=k(null),r=ve(()=>a.value);return{showUserMenu:e,userMenuPosition:t,selectedUserId:s,selectedUserName:o,userAvatarId:r,handleAuthorHover:(g,_,w,C)=>{l.value&&clearTimeout(l.value),s.value=_,o.value=w,C&&C.trim()!==""?a.value=C:a.value=void 0,l.value=window.setTimeout(()=>{const $=g.target.getBoundingClientRect();t.value={x:$.left-100,y:$.bottom+8},e.value=!0},200)},handleAuthorLeave:()=>{l.value&&(clearTimeout(l.value),l.value=null),i.value&&(clearTimeout(i.value),i.value=null),i.value=window.setTimeout(()=>{e.value&&(e.value=!1)},200)},handleCardMouseEnter:()=>{i.value&&(clearTimeout(i.value),i.value=null)},handleCloseUserMenu:()=>{l.value&&(clearTimeout(l.value),l.value=null),i.value&&(clearTimeout(i.value),i.value=null),e.value=!1,a.value=void 0}}}function qd(){const e=k(!1),t=k({title:"",type:"info",confirmText:"确定"});let s=null;const o=l=>(t.value={...t.value,...l},e.value=!0,new Promise(i=>{s=i})),a=()=>{e.value=!1,s&&(s(),s=null)};return{visible:ve(()=>e.value),config:ve(()=>t.value),show:o,handleConfirm:a}}const V$={key:0,class:"dialog-icon"},B$={class:"dialog-title"},j$={key:1,class:"dialog-message"},q$={class:"dialog-actions"},H$=Xe({__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,a=ve(()=>({info:"fluent-color:info-24",success:"fluent-color:checkmark-circle-24",warning:"fluent-color:warning-24",error:"fluent-color:error-circle-24"})[s.type]),l=ve(()=>({info:"btn-primary",success:"btn-success",warning:"btn-warning",error:"btn-error"})[s.type]),i=()=>{o("confirm")};return(r,c)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"alert-dialog-overlay",onClick:Be(i,["self"])},[n("div",{class:$e(["alert-dialog",`type-${e.type}`])},[e.showIcon?(u(),f("div",V$,[m(b,{icon:a.value},null,8,["icon"])])):T("",!0),n("h3",B$,h(e.title),1),e.message?(u(),f("p",j$,h(e.message),1)):T("",!0),n("div",q$,[n("button",{class:$e(["btn",l.value]),onClick:i},h(e.confirmText),3)])],2)])):T("",!0)]),_:1})]))}}),Hd=tt(H$,[["__scopeId","data-v-df63f188"]]),z$={class:"comments-section"},W$={class:"comments-header"},K$={class:"header-actions"},G$={key:0,class:"comments-count"},Q$={key:3,class:"request-status"},J$={key:0,class:"comments-list"},Z$={class:"comment-avatar"},X$={class:"comment-content-wrapper"},Y$={class:"comment-header"},e3=["onMouseenter"],t3={key:1,class:"commenter-name"},s3={class:"comment-date"},n3={class:"comment-text"},o3={class:"comment-actions"},a3=["onClick"],l3=["onClick"],i3=["onClick"],r3={key:0,class:"reply-count"},c3={key:2,class:"replies-list"},u3={key:1,class:"no-comments"},d3=Xe({__name:"CommentsSection",props:{bundleId:{},comments:{}},emits:["submitComment","likeComment","dislikeComment","likeReply","dislikeReply","submitReply"],setup(e,{emit:t}){const s=e,o=t,{isLoggedIn:a,user:l}=qs(),i=as(),{error:r}=Kt(),c=qd(),d=ve(()=>{var R,S;return((R=l.value)==null?void 0:R.nickName)||((S=l.value)==null?void 0:S.username)||"游客"}),p=ve(()=>a.value),v=k(!1),g=k(!1),_=k(""),w=async()=>{if(!s.bundleId){g.value=!1;return}try{const R=await te.checkUserRequestStatus(s.bundleId);g.value=R.hasRequest&&R.status===ps.PENDING}catch(R){console.error("检查申请状态失败:",R),g.value=!1}},C=async()=>{if(!s.bundleId){v.value=!1;return}try{if(v.value=await te.checkForumEnabled(s.bundleId),v.value){const R=await te.getForumPermission(s.bundleId);_.value=(R==null?void 0:R.appName)||s.bundleId,g.value=!1}else{try{const R=await te.getForumPermission(s.bundleId);_.value=(R==null?void 0:R.appName)||s.bundleId}catch{try{const S=await te.getApp(s.bundleId);_.value=S.name}catch{_.value=s.bundleId}}await w()}}catch(R){console.error("检查讨论区权限失败:",R),v.value=!1,await w()}},$=()=>{s.bundleId&&i.push(`/discussion/${s.bundleId}`)},A=async()=>{var R,S;if(!(!s.bundleId||g.value))try{let J=_.value||s.bundleId;if(!_.value)try{const I=await te.getApp(s.bundleId);J=I.name,_.value=I.name}catch{}const ee=await te.requestForumOpen(s.bundleId,J);ee.success?(g.value=!0,await c.show({title:"申请成功",message:"讨论区开通申请已提交,等待管理员审核",type:"success"})):await c.show({title:"申请失败",message:ee.message||"申请失败,请稍后重试",type:"error"})}catch(J){console.error("申请开通失败:",J),await c.show({title:"申请失败",message:((S=(R=J.response)==null?void 0:R.data)==null?void 0:S.message)||J.message||"申请失败,请稍后重试",type:"error"})}};at(()=>s.bundleId,()=>{C()},{immediate:!0}),vt(()=>{C()});const x=ve(()=>s.comments||[]),M=k(""),K=k(null),W=k(null),z=k(""),{showUserMenu:re,userMenuPosition:V,selectedUserId:q,selectedUserName:Q,userAvatarId:E,handleAuthorHover:L,handleAuthorLeave:X,handleCardMouseEnter:O,handleCloseUserMenu:Y}=F$(),ne=async(R,S)=>{if(!p.value){r("请先登录",2e3);return}o("submitComment",R,S),M.value=""},ue=R=>{if(!p.value){r("请先登录",2e3);return}o("likeComment",R)},oe=R=>{if(!p.value){r("请先登录",2e3);return}o("dislikeComment",R)},ke=(R,S)=>{if(!p.value){r("请先登录",2e3);return}o("likeReply",R,S)},je=(R,S)=>{if(!p.value){r("请先登录",2e3);return}o("dislikeReply",R,S)},ze=R=>{if(!p.value){r("请先登录",2e3);return}K.value===R&&!W.value?(K.value=null,z.value=""):(K.value=R,W.value=null)},Re=(R,S,J,ee)=>{var I;if(!p.value){r("请先登录",2e3);return}K.value===R&&((I=W.value)==null?void 0:I.id)===S?(K.value=null,W.value=null,z.value=""):(K.value=R,W.value={id:S,userId:J,userName:ee})},we=()=>{K.value=null,W.value=null,z.value=""},Ne=(R,S,J,ee,I,y)=>{var N,le,ie;o("submitReply",R,S,J,ee||((N=W.value)==null?void 0:N.id),I||((le=W.value)==null?void 0:le.userId),y||((ie=W.value)==null?void 0:ie.userName)),z.value="",K.value=null,W.value=null},Je=k([]),We=k(0),ae=k(!1),xe=(R,S)=>{S&&S.length>0?(Je.value=S,We.value=S.indexOf(R),We.value===-1&&(We.value=0)):(Je.value=[R],We.value=0),ae.value=!0},be=()=>{ae.value=!1,Je.value=[],We.value=0},De=(R,S)=>{i.push(`/messages?userId=${R}&userName=${encodeURIComponent(S)}`)},qe=(R,S)=>{console.log("拉黑用户:",R,S),console.log(`已拉黑用户:${S}`)},P=R=>{try{const S=new Date(R),ee=new Date().getTime()-S.getTime(),I=Math.floor(ee/(1e3*60)),y=Math.floor(ee/(1e3*60*60)),N=Math.floor(ee/(1e3*60*60*24));return I<1?"刚刚":I<60?`${I}分钟前`:y<24?`${y}小时前`:N<30?`${N}天前`:N<365?`${Math.floor(N/30)}个月前`:`${Math.floor(N/365)}年前`}catch{return R}};return(R,S)=>{var J;return u(),f(ge,null,[n("div",z$,[n("div",W$,[S[8]||(S[8]=n("h2",{class:"section-title"},"大家都在说",-1)),n("div",K$,[x.value.length>0?(u(),f("span",G$,h(x.value.length)+"条评论 ",1)):T("",!0),v.value?(u(),f("button",{key:1,class:"goto-forum-btn",onClick:$},[m(b,{icon:"mdi:forum-outline",class:"btn-icon"}),S[5]||(S[5]=Ce(" 跳转到讨论区 ",-1))])):g.value?g.value?(u(),f("span",Q$,[m(b,{icon:"mdi:clock-outline",class:"status-icon"}),S[7]||(S[7]=Ce(" 等待申请结果中 ",-1))])):T("",!0):(u(),f("button",{key:2,class:"request-forum-btn",onClick:A},[m(b,{icon:"mdi:forum-plus-outline",class:"btn-icon"}),S[6]||(S[6]=Ce(" 申请开通讨论区 ",-1))]))])]),m($l,{"user-avatar":(J=Z(l))==null?void 0:J.avatar,"user-name":d.value,modelValue:M.value,"onUpdate:modelValue":S[0]||(S[0]=ee=>M.value=ee),"max-images":5,"submit-text":"发表评论",placeholder:"写下你的想法...",onSubmit:ne},null,8,["user-avatar","user-name","modelValue"]),x.value.length>0?(u(),f("div",J$,[(u(!0),f(ge,null,Ee(x.value,ee=>{var I;return u(),f("div",{key:ee.id,class:"comment-item"},[n("div",Z$,[m(Ft,{"avatar-id":ee.userAvatar,"user-name":ee.userName,size:"medium"},null,8,["avatar-id","user-name"])]),n("div",X$,[n("div",Y$,[ee.userId?(u(),f("span",{key:0,class:"commenter-name clickable",onMouseenter:Be(y=>Z(L)(y,ee.userId,ee.userName,ee.userAvatar),["stop"]),onMouseleave:S[1]||(S[1]=Be((...y)=>Z(X)&&Z(X)(...y),["stop"]))},h(ee.userName),41,e3)):(u(),f("span",t3,h(ee.userName),1)),n("span",s3,h(P(ee.date)),1)]),n("p",n3,h(ee.content),1),ee.images&&ee.images.length>0?(u(),Ke(Dn,{key:0,images:ee.images,"show-index":!1,columns:3,"max-width":150,onImageClick:(y,N)=>xe(N,ee.images)},null,8,["images","onImageClick"])):T("",!0),n("div",o3,[n("button",{class:$e(["action-btn",{active:ee.userLikeStatus==="liked"}]),onClick:y=>ue(ee.id)},[m(b,{icon:ee.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(ee.likeCount),1)],10,a3),n("button",{class:$e(["action-btn",{active:ee.userLikeStatus==="disliked"}]),onClick:y=>oe(ee.id)},[m(b,{icon:ee.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(ee.dislikeCount),1)],10,l3),n("button",{class:"action-btn reply-btn",onClick:y=>ze(ee.id)},[m(b,{icon:"mdi:reply-outline",class:"action-icon"}),S[9]||(S[9]=n("span",null,"回复",-1)),ee.replyCount?(u(),f("span",r3," ("+h(ee.replyCount)+") ",1)):T("",!0)],8,i3)]),K.value===ee.id&&!W.value?(u(),Ke($l,{key:1,"user-avatar":(I=Z(l))==null?void 0:I.avatar,"user-name":d.value,modelValue:z.value,"onUpdate:modelValue":S[2]||(S[2]=y=>z.value=y),"is-reply":!0,"max-images":3,"submit-text":"发表回复",placeholder:"写下你的回复...",onSubmit:(y,N)=>Ne(ee.id,y,N),onCancel:we},null,8,["user-avatar","user-name","modelValue","onSubmit"])):T("",!0),ee.replies&&ee.replies.length>0?(u(),f("div",c3,[(u(!0),f(ge,null,Ee(ee.replies,y=>(u(),Ke(f$,{key:y.id,reply:y,onLike:N=>ke(ee.id,y.id),onDislike:N=>je(ee.id,y.id),onReply:N=>Re(ee.id,y.id,y.userId||"",y.userName),onNestedLike:N=>ke(ee.id,N),onNestedDislike:N=>je(ee.id,N),onUserHover:Z(L),onUserLeave:Z(X)},{"nested-reply-form":pt(({replyId:N})=>{var le,ie;return[K.value===ee.id&&((le=W.value)==null?void 0:le.id)===N?(u(),Ke($l,{key:0,"user-avatar":(ie=Z(l))==null?void 0:ie.avatar,"user-name":d.value,modelValue:z.value,"onUpdate:modelValue":S[3]||(S[3]=Me=>z.value=Me),"is-reply":!0,"max-images":3,"reply-to-user-name":y.userName,"submit-text":"发表回复",onSubmit:(Me,Ie)=>Ne(ee.id,Me,Ie,N,y.userId||"",y.userName),onCancel:we},null,8,["user-avatar","user-name","modelValue","reply-to-user-name","onSubmit"])):T("",!0)]}),_:2},1032,["reply","onLike","onDislike","onReply","onNestedLike","onNestedDislike","onUserHover","onUserLeave"]))),128))])):T("",!0)])])}),128))])):(u(),f("div",u3,[m(b,{icon:"mdi:comment-multiple-outline",class:"no-comments-icon"}),S[10]||(S[10]=n("p",null,"还没有评论,快来发表第一条吧!",-1))])),m(Gn,{visible:ae.value,images:Je.value,"initial-index":We.value,"show-navigation":Je.value.length>1,"show-info":!1,onClose:be,onIndexChange:S[4]||(S[4]=ee=>We.value=ee)},null,8,["visible","images","initial-index","show-navigation"]),m(Ci,{visible:Z(re),"user-id":Z(q),"user-name":Z(Q),"avatar-id":Z(E),position:Z(V),onClose:Z(Y),onSendMessage:De,onBlockUser:qe,onMouseEnter:Z(O)},null,8,["visible","user-id","user-name","avatar-id","position","onClose","onMouseEnter"])]),m(Hd,{visible:Z(c).visible.value,title:Z(c).config.value.title||"",message:Z(c).config.value.message,type:Z(c).config.value.type,"confirm-text":Z(c).config.value.confirmText,onConfirm:Z(c).handleConfirm},null,8,["visible","title","message","type","confirm-text","onConfirm"])],64)}}}),f3=tt(d3,[["__scopeId","data-v-d388ddec"]]),p3={class:"dialog-header"},v3={class:"dialog-title"},m3={class:"dialog-content"},h3={class:"info-section"},g3={class:"info-grid"},y3={class:"info-item"},b3={class:"info-value"},_3={class:"info-item"},w3={class:"info-value"},k3={class:"info-item"},$3={class:"info-value"},C3={class:"info-item"},I3={class:"info-value"},S3={class:"info-item"},A3={class:"info-value"},x3={class:"form-section"},T3={class:"section-title"},E3={class:"error-type-grid"},R3=["onClick"],U3={class:"type-label"},D3={class:"form-section"},N3={class:"section-title"},M3={class:"char-count"},P3={class:"form-section"},L3={class:"section-title"},O3={class:"upload-area"},F3={key:0,class:"screenshots-list"},V3=["src","alt"],B3=["onClick"],j3={key:0,class:"screenshot-error"},q3={class:"form-section"},H3={class:"section-title"},z3={class:"upload-area"},W3={key:0,class:"files-list"},K3={class:"file-name"},G3={class:"file-size"},Q3=["onClick"],J3={class:"dialog-footer"},Z3=["disabled"],X3=Xe({__name:"ReportIssueDialog",props:{visible:{type:Boolean},appInfo:{}},emits:["close","submit"],setup(e,{emit:t}){const s=e,o=t,a=[{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"}],l=k(""),i=k(""),r=k([]),c=k([]),d=k(null),p=k(null),v=ve(()=>{const re=navigator.userAgent;let V="未知",q="未知";if(re.includes("Mac OS X")){const Q=re.match(/Mac OS X (\d+[._]\d+)/);Q?V=`macOS ${Q[1].replace("_",".")}`:V="macOS"}else if(re.includes("Windows")){const Q=re.match(/Windows NT (\d+\.\d+)/);Q?V=`Windows ${Q[1]}`:V="Windows"}else re.includes("Linux")&&(V="Linux");return navigator.platform.includes("Intel")||navigator.platform.includes("x86")?q="x86_64":navigator.platform.includes("ARM")||navigator.platform.includes("Apple")?q="ARM64":q=navigator.platform||"未知",{osVersion:V,architecture:q}}),g=ve(()=>l.value!==""&&i.value.trim().length>0),_=()=>{var re;(re=d.value)==null||re.click()},w=re=>{const V=re.target,q=V.files;if(!q)return;const Q=10*1024*1024;Array.from(q).forEach(E=>{if(!E.type.startsWith("image/")){r.value.push({file:E,preview:"",error:"只能上传图片文件"});return}if(E.size>Q){r.value.push({file:E,preview:"",error:"图片大小不能超过10MB"});return}const L=new FileReader;L.onload=X=>{var Y;const O=r.value.findIndex(ne=>ne.file===E);O!==-1&&(r.value[O].preview=(Y=X.target)==null?void 0:Y.result)},L.readAsDataURL(E),r.value.push({file:E,preview:""})}),V&&(V.value="")},C=re=>{r.value.splice(re,1)},$=()=>{var re;(re=p.value)==null||re.click()},A=re=>{const V=re.target,q=V.files;q&&(Array.from(q).forEach(Q=>{c.value.push(Q)}),V&&(V.value=""))},x=re=>{c.value.splice(re,1)},M=re=>{if(re===0)return"0 B";const V=1024,q=["B","KB","MB","GB"],Q=Math.floor(Math.log(re)/Math.log(V));return Math.round(re/Math.pow(V,Q)*100)/100+" "+q[Q]},K=()=>{o("close")},W=()=>{K()},z=()=>{if(!g.value||!s.appInfo)return;const re={appName:s.appInfo.name,appVersion:s.appInfo.version,bundleId:s.appInfo.bundleId,osVersion:v.value.osVersion,architecture:v.value.architecture,errorType:l.value,description:i.value.trim(),screenshots:r.value.filter(V=>!V.error).map(V=>V.file),files:c.value};o("submit",re)};return at(()=>s.visible,re=>{re||(l.value="",i.value="",r.value=[],c.value=[])}),(re,V)=>(u(),Ke(It,{name:"dialog-fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"report-issue-dialog-overlay",onClick:W},[n("div",{class:"report-issue-dialog",onClick:V[1]||(V[1]=Be(()=>{},["stop"]))},[n("div",p3,[n("h2",v3,[m(b,{icon:"mdi:alert-circle",class:"title-icon"}),V[2]||(V[2]=Ce(" 报告问题 ",-1))]),n("button",{class:"close-btn",onClick:K},[m(b,{icon:"mdi:close"})])]),n("div",m3,[n("div",h3,[V[8]||(V[8]=n("h3",{class:"section-title"},"应用信息",-1)),n("div",g3,[n("div",y3,[V[3]||(V[3]=n("span",{class:"info-label"},"应用名称",-1)),n("span",b3,h(e.appInfo.name),1)]),n("div",_3,[V[4]||(V[4]=n("span",{class:"info-label"},"版本",-1)),n("span",w3,h(e.appInfo.version),1)]),n("div",k3,[V[5]||(V[5]=n("span",{class:"info-label"},"包名",-1)),n("span",$3,h(e.appInfo.bundleId),1)]),n("div",C3,[V[6]||(V[6]=n("span",{class:"info-label"},"系统版本",-1)),n("span",I3,h(v.value.osVersion),1)]),n("div",S3,[V[7]||(V[7]=n("span",{class:"info-label"},"架构",-1)),n("span",A3,h(v.value.architecture),1)])])]),n("div",x3,[n("h3",T3,[m(b,{icon:"mdi:tag-outline",class:"section-icon"}),V[9]||(V[9]=Ce(" 错误类型 ",-1)),V[10]||(V[10]=n("span",{class:"required"},"*",-1))]),n("div",E3,[(u(),f(ge,null,Ee(a,q=>n("button",{key:q.value,class:$e(["error-type-btn",{active:l.value===q.value}]),onClick:Q=>l.value=q.value},[m(b,{icon:q.icon,class:"type-icon"},null,8,["icon"]),n("span",U3,h(q.label),1)],10,R3)),64))])]),n("div",D3,[n("h3",N3,[m(b,{icon:"mdi:text-box-outline",class:"section-icon"}),V[11]||(V[11]=Ce(" 问题描述 ",-1)),V[12]||(V[12]=n("span",{class:"required"},"*",-1))]),Qe(n("textarea",{"onUpdate:modelValue":V[0]||(V[0]=q=>i.value=q),class:"description-textarea",placeholder:"请详细描述遇到的问题,包括操作步骤、预期结果和实际结果...",rows:"6",maxlength:"2000"},null,512),[[ot,i.value]]),n("div",M3,h(i.value.length)+"/2000",1)]),n("div",P3,[n("h3",L3,[m(b,{icon:"mdi:image-outline",class:"section-icon"}),V[13]||(V[13]=Ce(" 报错截图 ",-1))]),n("div",O3,[n("input",{ref_key:"screenshotInput",ref:d,type:"file",accept:"image/*",multiple:"",onChange:w,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:_},[m(b,{icon:"fluent-color:image-24",class:"upload-icon"}),V[14]||(V[14]=n("span",null,"选择截图",-1))]),V[15]||(V[15]=n("span",{class:"upload-hint"},"支持多张图片单张最大10MB",-1))]),r.value.length>0?(u(),f("div",F3,[(u(!0),f(ge,null,Ee(r.value,(q,Q)=>(u(),f("div",{key:Q,class:"screenshot-item"},[n("img",{src:q.preview,alt:`截图 ${Q+1}`},null,8,V3),n("button",{class:"remove-screenshot-btn",onClick:E=>C(Q)},[m(b,{icon:"mdi:close"})],8,B3),q.error?(u(),f("div",j3,h(q.error),1)):T("",!0)]))),128))])):T("",!0)]),n("div",q3,[n("h3",H3,[m(b,{icon:"mdi:file-upload-outline",class:"section-icon"}),V[16]||(V[16]=Ce(" 报告文件 ",-1))]),n("div",z3,[n("input",{ref_key:"fileInput",ref:p,type:"file",multiple:"",onChange:A,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:$},[m(b,{icon:"mdi:file-upload-outline",class:"upload-icon"}),V[17]||(V[17]=n("span",null,"选择文件",-1))]),V[18]||(V[18]=n("span",{class:"upload-hint"},"可上传日志文件、配置文件等",-1))]),c.value.length>0?(u(),f("div",W3,[(u(!0),f(ge,null,Ee(c.value,(q,Q)=>(u(),f("div",{key:Q,class:"file-item"},[m(b,{icon:"mdi:file-document-outline",class:"file-icon"}),n("span",K3,h(q.name),1),n("span",G3,h(M(q.size)),1),n("button",{class:"remove-file-btn",onClick:E=>x(Q)},[m(b,{icon:"mdi:close"})],8,Q3)]))),128))])):T("",!0)])]),n("div",J3,[n("button",{class:"cancel-btn",onClick:K},"取消"),n("button",{class:"submit-btn",onClick:z,disabled:!g.value},[m(b,{icon:"mdi:send",class:"btn-icon"}),V[19]||(V[19]=Ce(" 提交报告 ",-1))],8,Z3)])])])):T("",!0)]),_:1}))}}),Y3=tt(X3,[["__scopeId","data-v-2b498d31"]]),eC={class:"info-tooltip-wrapper"},tC=Xe({__name:"InfoTooltip",props:{position:{default:"bottom"},maxWidth:{default:"600px"}},setup(e){const t=e,s=ve(()=>({maxWidth:t.maxWidth}));return(o,a)=>(u(),f("div",eC,[Nn(o.$slots,"trigger",{},()=>[m(b,{icon:"mdi:information-outline",class:"info-trigger-icon"})]),n("div",{class:"info-tooltip-content",style:Lt(s.value)},[Nn(o.$slots,"default",{},void 0)],4)]))}}),sC=tt(tC,[["__scopeId","data-v-8db7c0cc"]]),nC={class:"app-detail-page"},oC={key:0,class:"loading-container"},aC={key:1,class:"error-container"},lC={key:2,class:"detail-layout"},iC={class:"back-section"},rC={class:"main-content"},cC={class:"content-left"},uC={class:"app-header-section"},dC={class:"app-icon-container"},fC=["src","alt"],pC={key:1,class:"icon-loading"},vC={key:2,class:"icon-placeholder"},mC={class:"app-info-main"},hC={class:"app-info-section"},gC={class:"app-name"},yC={class:"app-meta-row"},bC={key:0,class:"rating-info"},_C={class:"rating-value"},wC={key:0,class:"rating-count"},kC={key:1,class:"category-separator"},$C={key:2,class:"category-badge"},CC={class:"app-version-info"},IC={class:"version-text"},SC={key:0,class:"bundle-version-text"},AC={key:1,class:"injection-info"},xC={class:"app-detail-info"},TC={class:"detail-info-row"},EC={class:"detail-value"},RC={class:"detail-info-row"},UC={class:"detail-value"},DC={class:"description-compact"},NC={class:"description-text"},MC={class:"app-actions-compact"},PC=["disabled"],LC=["disabled"],OC=["disabled"],FC={key:0,class:"screenshots-section"},VC={class:"section-header"},BC={class:"view-all-btn"},jC={class:"screenshots-grid"},qC=["src","alt"],HC={key:1,class:"description-section"},zC={class:"description-content"},WC={key:0},KC={key:1},GC={class:"rating-section"},QC={key:0,class:"rating-overview"},JC={class:"rating-summary"},ZC={class:"rating-main"},XC={class:"rating-number"},YC={class:"rating-count"},e4={class:"rating-distribution"},t4={class:"bar-star-number"},s4={class:"bar-container"},n4={class:"bar-value"},o4={class:"app-info-card"},a4={key:0,class:"info-card-item highlight full-width"},l4={class:"info-icon-wrapper update"},i4={class:"info-content"},r4={class:"info-value update-value"},c4={class:"features-developer-column"},u4={key:0,class:"info-card-item features-item"},d4={class:"info-icon-wrapper"},f4={class:"info-content"},p4={class:"features-tags"},v4={key:1,class:"info-card-item developer-item"},m4={class:"info-icon-wrapper"},h4={class:"info-content"},g4={class:"info-value"},y4={class:"info-card-grid"},b4={key:0,class:"info-card-item"},_4={class:"info-icon-wrapper"},w4={class:"info-content"},k4={class:"info-value"},$4={key:1,class:"info-card-item"},C4={class:"info-icon-wrapper"},I4={class:"info-content"},S4={class:"info-value"},A4={key:2,class:"info-card-item"},x4={class:"info-icon-wrapper"},T4={class:"info-content"},E4={class:"info-value"},R4={key:3,class:"info-card-item"},U4={class:"info-icon-wrapper"},D4={class:"info-content"},N4={class:"info-value"},M4={key:1,class:"no-rating"},P4={key:3,class:"rating-input-section"},L4={class:"star-rating-input"},O4=["onClick","onMouseenter"],F4={key:0,class:"star-rating-tooltip"},V4={key:0,class:"rating-submit-section"},B4={key:2,class:"versions-section"},j4={class:"content-right"},q4={key:0,class:"sticky-header"},H4={class:"sticky-header-content"},z4={class:"sticky-icon"},W4=["src","alt"],K4={key:1,class:"sticky-icon-placeholder"},G4={class:"sticky-info"},Q4={class:"sticky-app-name"},J4={class:"sticky-developer"},Z4={class:"sticky-meta"},X4={class:"sticky-version"},Y4={key:0,class:"sticky-bundle-version"},e5={key:1,class:"sticky-injection"},t5={key:2,class:"sticky-update"},s5={key:3,class:"sticky-rating"},n5={class:"sticky-right"},o5={class:"sticky-actions"},a5=["disabled"],l5=["disabled"],i5=["disabled"],r5={class:"sticky-provider"},c5=Xe({__name:"AppDetail",setup(e){const t=Wn(),s=as(),{isLoggedIn:o}=qs(),{success:a,error:l}=Kt(),{show:i,hide:r}=Kn(),c=k(null),d=k(!0),p=k(""),v=k(!1),g=k(!1),_=k(!1),w=k(!1),C=k(!1),$=k([]),A=k(0),x=k(0),M=k(null),K=k([]),W=ve(()=>c.value?(c.value.description||ae()).length>200:!1),z=k(null),re=he=>{const U=he.target.scrollTop||window.pageYOffset||document.documentElement.scrollTop;C.value=U>200};vt(async()=>{await E(),await Ct();const he=document.querySelector(".main-content-right");if(he){z.value=he,he.addEventListener("scroll",re,{passive:!0});let j=null;const U=()=>{if(!C.value)return;const G=document.querySelector(".sticky-header");if(G&&he){const pe=he.getBoundingClientRect();G.style.top=`${pe.top+40}px`;const Pe=pe.width,Ve=Pe*.6;G.style.left=`${pe.left+(Pe-Ve)/2}px`,G.style.width=`${Ve}px`}};at(C,()=>{C.value&&Ct(()=>{U()})}),U(),j=()=>{U()},window.addEventListener("resize",j,{passive:!0});const F=()=>{U()};he.addEventListener("scroll",F,{passive:!0}),K.value.push(()=>{j&&window.removeEventListener("resize",j),he.removeEventListener("scroll",F)})}else window.addEventListener("scroll",re,{passive:!0})}),Wt(()=>{z.value?z.value.removeEventListener("scroll",re):window.removeEventListener("scroll",re),K.value.forEach(he=>he()),K.value=[]});const V=k(!0),q=k(!1),Q=k(!1),E=async()=>{d.value=!0,p.value="";const he=t.params.bundleId;if(!he){p.value="应用 ID 不存在",d.value=!1;return}try{const j=await te.getApp(he);c.value=j,c.value.rating||(c.value.rating=4.1,c.value.ratingCount=661),c.value.description||(c.value.description=ae()),c.value.category||(c.value.category=Je()),(!c.value.reviews||c.value.reviews.length===0)&&(c.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}]),(!c.value.features||c.value.features.length===0)&&(c.value.features=["AI智能搜索","深度思考模式","高效信息获取","多端协同"]),await Ge(),V.value=c.value.hasIcon!==!1,q.value=!1,Q.value=!1,c.value.hasIcon===!1&&(V.value=!1,Q.value=!0),await N(),o.value&&await le()}catch(j){console.error("加载应用详情失败:",j),p.value="加载应用详情失败,请检查网络连接"}finally{d.value=!1}},{updating:L,modalVisible:X,modalTitle:O,logs:Y,modalStatus:ne,handleUpdate:ue,handleReinstall:oe,hideModal:ke}=Fd({onRefresh:async()=>{await E()}}),je=()=>c.value&&c.value.hasIcon!==!1?te.getAppIconUrl(c.value.bundleId):"",ze=()=>{c.value&&ue(c.value)},Re=async()=>{if(!(!c.value||!c.value.bundleId))try{if(!(await fetch(`/api/apps/${c.value.bundleId}/open`,{method:"POST"})).ok)throw new Error("打开应用失败")}catch(he){console.error("打开应用失败:",he)}},we=()=>{s.back()},Ne=()=>{s.push("/")},Je=()=>{if(!c.value)return"应用";const he=c.value.bundleId.toLowerCase();return he.includes("social")||he.includes("chat")||he.includes("qq")||he.includes("wechat")?"社交":he.includes("music")||he.includes("video")||he.includes("player")?"娱乐":he.includes("design")||he.includes("photo")||he.includes("edit")?"设计":he.includes("tool")||he.includes("util")?"实用程序与工具":"应用"},We=()=>{if(!c.value)return"";const he=c.value.bundleId.split(".");return he.length>=2?he[1].charAt(0).toUpperCase()+he[1].slice(1)+" 公司":""},ae=()=>c.value?`${c.value.name}是一款优秀的应用程序,提供丰富的功能和良好的用户体验。`:"",xe=ve(()=>{if(M.value&&M.value.distribution.length>0)return M.value.distribution;if(!c.value||!c.value.ratingCount)return[];const he=c.value.ratingCount,j=[];for(let U=5;U>=1;U--){let F=0;U===5?F=Math.round(he*.4):U===4?F=Math.round(he*.3):U===3?F=Math.round(he*.15):U===2?F=Math.round(he*.1):F=he-j.reduce((G,pe)=>G+pe.count,0),j.push({stars:U,count:F,percentage:F/he*100})}return j}),be=()=>{var he,j;navigator.share?navigator.share({title:(he=c.value)==null?void 0:he.name,text:`查看 ${(j=c.value)==null?void 0:j.name} 应用详情`,url:window.location.href}).catch(()=>{}):(navigator.clipboard.writeText(window.location.href),a("链接已复制到剪贴板",2e3))},De=()=>{_.value=!0},qe=()=>{_.value=!1},P=async he=>{var j;if(!he||!c.value){l("提交失败:缺少必要信息",3e3);return}if(!o.value){l("请先登录后再提交问题报告",3e3),_.value=!1,g.value=!0;return}i("正在提交问题报告...");try{let U;if(c.value&&c.value.hasIcon!==!1)try{const G=je();if(G){const pe=await fetch(G);if(pe.ok){const Pe=await pe.blob(),Ve=new File([Pe],`${c.value.bundleId}.png`,{type:Pe.type||"image/png"}),Ue=await te.uploadImage("icon",Ve);Ue.success&&((j=Ue.data)!=null&&j.fileId)?(U=Ue.data.fileId,console.log("应用图标上传成功:",U)):console.warn("应用图标上传失败:",Ue.message)}}}catch(G){console.warn("上传应用图标失败:",G)}console.log("开始提交问题报告,截图数量:",(he.screenshots||[]).length,"文件数量:",(he.files||[]).length);const F=await te.submitIssue(he.bundleId,he.appName,he.appVersion,he.osVersion,he.architecture,he.errorType,he.description,he.screenshots||[],he.files||[],U);r(),console.log("问题报告提交结果:",F),F.success?(_.value=!1,setTimeout(()=>{a("问题报告已提交,感谢您的反馈!",3e3)},100)):l(F.message||"提交失败,请稍后重试",3e3)}catch(U){r(),console.error("提交问题报告失败:",U),l(U.message||"提交失败,请稍后重试",3e3)}},R=()=>{V.value=!1,q.value=!0,Q.value=!1},S=he=>{V.value=!1,q.value=!1,Q.value=!0;const j=he.target;j&&(j.style.display="none"),c.value&&(c.value.hasIcon=!1)};at(()=>t.params.bundleId,async(he,j)=>{he&&he!==j&&await E()},{immediate:!1});const J=async()=>{await E()},ee=()=>{g.value=!0},I=()=>{g.value=!1},y=async()=>{g.value=!1,await N()},N=async()=>{var he;if((he=c.value)!=null&&he.bundleId)try{const j=await te.getAppRatingStats(c.value.bundleId);j&&(M.value=j,c.value&&(c.value.rating=j.averageRating,c.value.ratingCount=j.totalCount))}catch(j){console.error("加载评分统计失败:",j)}},le=async()=>{var he;if(!(!((he=c.value)!=null&&he.bundleId)||!o.value))try{const j=await te.getUserAppRating(c.value.bundleId);j&&(A.value=j)}catch(j){console.error("加载用户评分失败:",j)}},ie=he=>{if(!o.value){g.value=!0;return}A.value=he},Me=async()=>{var he;if(!(!((he=c.value)!=null&&he.bundleId)||!o.value||A.value===0))try{i("正在提交评分..."),await te.submitAppRating(c.value.bundleId,A.value),r(),a("评分提交成功",2e3),await N()}catch(j){r(),l(j.message||"提交评分失败",3e3)}},Ie=k(new Map),Le=async he=>{for(const j of he)if(!Ie.value.has(j))try{const U=await te.getAttachmentImage(j);U&&Ie.value.set(j,U)}catch(U){console.warn(`预加载图片失败 ${j}:`,U)}},He=he=>{const j=[];for(const U of he){const F=Ie.value.get(U);F&&j.push(F)}return j},Ge=async()=>{var he;if((he=c.value)!=null&&he.bundleId)try{const j=await te.getAppComments(c.value.bundleId);if(j.comments){const U=[];j.comments.forEach(F=>{F.imageAttachmentIds&&F.imageAttachmentIds.length>0&&U.push(...F.imageAttachmentIds),(F.replies||[]).forEach(G=>{G.imageAttachmentIds&&G.imageAttachmentIds.length>0&&U.push(...G.imageAttachmentIds),(G.nestedReplies||[]).forEach(pe=>{pe.imageAttachmentIds&&pe.imageAttachmentIds.length>0&&U.push(...pe.imageAttachmentIds)})})}),U.length>0&&await Le(U),$.value=j.comments.map(F=>({id:F._id||F.id,userId:F.userId,userName:F.userName,userAvatar:F.userAvatar,content:F.content,imageAttachmentIds:F.imageAttachmentIds||[],images:He(F.imageAttachmentIds||[]),date:F.date,likeCount:F.likeCount||0,dislikeCount:F.dislikeCount||0,userLikeStatus:F.userLikeStatus||null,replyCount:F.replyCount||0,replies:(F.replies||[]).map(G=>{var pe,Pe,Ve,Ue,Ye,ft;return{id:G._id||G.id,userName:G.userName,userAvatar:G.userAvatar,userId:((pe=G.replyUser)==null?void 0:pe.id)||G.userId,content:G.content,imageAttachmentIds:G.imageAttachmentIds||[],images:He(G.imageAttachmentIds||[]),date:G.date,likeCount:G.likeCount||0,dislikeCount:G.dislikeCount||0,userLikeStatus:G.userLikeStatus||null,replyToUserName:((Pe=G.replyTo)==null?void 0:Pe.userName)||G.replyToUserName,replyToUserId:((Ve=G.replyToUser)==null?void 0:Ve.id)||((Ue=G.replyTo)==null?void 0:Ue.userId),replyToUserAvatar:((Ye=G.replyToUser)==null?void 0:Ye.avatar)||((ft=G.replyTo)==null?void 0:ft.userAvatar),nestedReplies:(G.nestedReplies||[]).map(rt=>{var yt,fs,Nt,ks,Mt,$s;return{id:rt._id||rt.id,userName:rt.userName,userAvatar:rt.userAvatar,userId:((yt=rt.replyUser)==null?void 0:yt.id)||rt.userId,content:rt.content,imageAttachmentIds:rt.imageAttachmentIds||[],images:He(rt.imageAttachmentIds||[]),date:rt.date,likeCount:rt.likeCount||0,dislikeCount:rt.dislikeCount||0,userLikeStatus:rt.userLikeStatus||null,replyToUserName:((fs=rt.replyTo)==null?void 0:fs.userName)||rt.replyToUserName,replyToUserId:((Nt=rt.replyToUser)==null?void 0:Nt.id)||((ks=rt.replyTo)==null?void 0:ks.userId),replyToUserAvatar:((Mt=rt.replyToUser)==null?void 0:Mt.avatar)||(($s=rt.replyTo)==null?void 0:$s.userAvatar)}})}})}))}else $.value=[]}catch(j){console.error("加载评论失败:",j),$.value=[]}},me=async(he,j)=>{var U;if(!((U=c.value)!=null&&U.bundleId)||!o.value){l("请先登录",2e3);return}try{i("正在提交评论...");let F=[];if(j&&j.length>0)for(const pe of j){const Pe=await te.uploadImageAttachment(pe);Pe.success&&Pe.attachmentId&&F.push(Pe.attachmentId)}const G=await te.createAppComment(c.value.bundleId,he,F.length>0?F:void 0);r(),G.success?(a("评论发表成功",2e3),await Ge()):l(G.message||"提交评论失败",3e3)}catch(F){r(),console.error("提交评论失败:",F),l(F.message||"提交评论失败",3e3)}},Ze=async he=>{var j;if(!((j=c.value)!=null&&j.bundleId)||!o.value){l("请先登录",2e3);return}try{const U=$.value.find(Pe=>Pe.id===he),G=(U==null?void 0:U.userLikeStatus)==="liked"?"cancel":"like",pe=await te.likeAppComment(c.value.bundleId,he,G);pe.success&&U&&(U.likeCount=pe.likeCount,U.dislikeCount=pe.dislikeCount,U.userLikeStatus=pe.userLikeStatus)}catch(U){console.error("点赞评论失败:",U),l(U.message||"操作失败",3e3)}},ut=async he=>{var j;if(!((j=c.value)!=null&&j.bundleId)||!o.value){l("请先登录",2e3);return}try{const U=$.value.find(Pe=>Pe.id===he),G=(U==null?void 0:U.userLikeStatus)==="disliked"?"cancel":"dislike",pe=await te.likeAppComment(c.value.bundleId,he,G);pe.success&&U&&(U.likeCount=pe.likeCount,U.dislikeCount=pe.dislikeCount,U.userLikeStatus=pe.userLikeStatus)}catch(U){console.error("点踩评论失败:",U),l(U.message||"操作失败",3e3)}},dt=async(he,j)=>{var U,F;if(!((U=c.value)!=null&&U.bundleId)||!o.value){l("请先登录",2e3);return}try{const G=$.value.find(Ye=>Ye.id===he),pe=(F=G==null?void 0:G.replies)==null?void 0:F.find(Ye=>Ye.id===j),Ve=(pe==null?void 0:pe.userLikeStatus)==="liked"?"cancel":"like",Ue=await te.likeAppCommentReply(c.value.bundleId,he,j,Ve);Ue.success&&pe&&(pe.likeCount=Ue.likeCount,pe.dislikeCount=Ue.dislikeCount,pe.userLikeStatus=Ue.userLikeStatus)}catch(G){console.error("点赞回复失败:",G),l(G.message||"操作失败",3e3)}},kt=async(he,j)=>{var U,F;if(!((U=c.value)!=null&&U.bundleId)||!o.value){l("请先登录",2e3);return}try{const G=$.value.find(Ye=>Ye.id===he),pe=(F=G==null?void 0:G.replies)==null?void 0:F.find(Ye=>Ye.id===j),Ve=(pe==null?void 0:pe.userLikeStatus)==="disliked"?"cancel":"dislike",Ue=await te.likeAppCommentReply(c.value.bundleId,he,j,Ve);Ue.success&&pe&&(pe.likeCount=Ue.likeCount,pe.dislikeCount=Ue.dislikeCount,pe.userLikeStatus=Ue.userLikeStatus)}catch(G){console.error("点踩回复失败:",G),l(G.message||"操作失败",3e3)}},St=async(he,j,U,F,G,pe)=>{var Pe;if(!((Pe=c.value)!=null&&Pe.bundleId)||!o.value){l("请先登录",2e3);return}try{i("正在提交回复...");let Ve=[];if(U&&U.length>0)for(const Ye of U){const ft=await te.uploadImageAttachment(Ye);ft.success&&ft.attachmentId&&Ve.push(ft.attachmentId)}let Ue;F&&G&&pe?Ue=await te.createAppCommentNestedReply(c.value.bundleId,he,F,j,G,pe,Ve.length>0?Ve:void 0):Ue=await te.createAppCommentReply(c.value.bundleId,he,j,Ve.length>0?Ve:void 0),r(),Ue.success?(a("回复发表成功",2e3),await Ge()):l(Ue.message||"提交回复失败",3e3)}catch(Ve){r(),console.error("提交回复失败:",Ve),l(Ve.message||"提交回复失败",3e3)}};return(he,j)=>{var U,F;return u(),f("div",nC,[d.value?(u(),f("div",oC,[...j[5]||(j[5]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用详情...",-1)])])):p.value?(u(),f("div",aC,[n("p",null,h(p.value),1),n("button",{onClick:E,class:"btn btn-primary"},"重试")])):c.value?(u(),f("div",lC,[n("div",iC,[n("button",{onClick:we,class:"back-btn"},[m(b,{icon:"mdi:arrow-left",class:"btn-icon"}),j[6]||(j[6]=Ce(" 返回 ",-1))]),n("button",{onClick:Ne,class:"home-btn"},[m(b,{icon:"fluent-color:home-32",class:"btn-icon"}),j[7]||(j[7]=Ce(" 首页 ",-1))])]),n("div",rC,[n("div",cC,[n("div",uC,[n("div",dC,[c.value.hasIcon!==!1&&je()?(u(),f("img",{key:0,src:je(),alt:c.value.name,class:$e({"icon-hidden":V.value}),onLoad:R,onError:S},null,42,fC)):T("",!0),V.value&&c.value.hasIcon!==!1?(u(),f("div",pC,[...j[8]||(j[8]=[n("div",{class:"spinner"},null,-1)])])):T("",!0),Q.value||c.value.hasIcon===!1?(u(),f("div",vC,h(c.value.name.charAt(0).toUpperCase()),1)):T("",!0)]),n("div",mC,[n("div",hC,[n("h1",gC,h(c.value.name),1),n("div",yC,[c.value.rating!==void 0?(u(),f("div",bC,[n("span",_C,h(c.value.rating.toFixed(1)),1),m(b,{icon:"fluent-color:star-24",class:"star-icon"}),c.value.ratingCount?(u(),f("span",wC,h(c.value.ratingCount)+"个评级 ",1)):T("",!0)])):T("",!0),c.value.category||Je()?(u(),f("span",kC,"·")):T("",!0),c.value.category||Je()?(u(),f("span",$C,h(c.value.category||Je()),1)):T("",!0)]),n("div",CC,[n("span",IC,"版本 "+h(c.value.version),1),c.value.bundleVersion?(u(),f("span",SC," ("+h(c.value.bundleVersion)+") ",1)):T("",!0),c.value.injection&&c.value.injection.version?(u(),f("span",AC," · 已注入 "+h(c.value.injection.version),1)):T("",!0),m(sC,{"max-width":"350px"},{trigger:pt(()=>[m(b,{icon:"mdi:information-outline",class:"info-trigger-icon"})]),default:pt(()=>[n("div",xC,[n("div",TC,[j[9]||(j[9]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",EC,h(c.value.bundleId),1)]),n("div",RC,[j[10]||(j[10]=n("span",{class:"detail-label"},"路径:",-1)),n("span",UC,h(c.value.path),1)])])]),_:1})]),n("div",DC,[n("p",NC,h(c.value.description||ae()),1),W.value?(u(),f("button",{key:0,class:"expand-btn-inline",onClick:j[0]||(j[0]=G=>w.value=!w.value)},h(w.value?"收起":"详细显示"),1)):T("",!0)]),n("div",MC,[c.value.status==="upgrade_available"?(u(),f("button",{key:0,class:"install-btn-compact btn-primary",onClick:ze,disabled:Z(L)},[m(b,{icon:"mdi:update",class:"btn-icon"}),Ce(" "+h(Z(L)?"更新中...":"更新"),1)],8,PC)):c.value.status==="supported"?(u(),f("button",{key:1,class:"install-btn-compact btn-primary",onClick:ze,disabled:Z(L)},[m(b,{icon:"mdi:power",class:"btn-icon"}),Ce(" "+h(Z(L)?"处理中...":"激活"),1)],8,LC)):c.value.status==="injected"?(u(),f("button",{key:2,class:"install-btn-compact btn-success",onClick:Re},[m(b,{icon:"mdi:open-in-app",class:"btn-icon"}),j[11]||(j[11]=Ce(" 打开 ",-1))])):(u(),f("button",{key:3,class:"install-btn-compact btn-secondary",onClick:j[1]||(j[1]=(...G)=>Z(oe)&&Z(oe)(...G)),disabled:Z(L)},[m(b,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),Ce(" "+h(Z(L)?"处理中...":"重新安装"),1)],8,OC)),n("button",{class:"report-btn-compact",onClick:De},[m(b,{icon:"mdi:alert-circle-outline",class:"btn-icon"}),j[12]||(j[12]=Ce(" 报告问题 ",-1))]),n("button",{class:"share-btn-compact",onClick:be},[m(b,{icon:"fluent-color:share-ios-24"})])]),j[13]||(j[13]=n("div",{class:"provider-info-compact"}," 将进行下载和安装 ",-1))])])]),c.value.screenshots&&c.value.screenshots.length>0?(u(),f("div",FC,[n("div",VC,[j[15]||(j[15]=n("h2",null,"屏幕截图",-1)),n("button",BC,[j[14]||(j[14]=Ce(" 查看全部 ",-1)),m(b,{icon:"fluent-color:arrow-right-24"})])]),n("div",jC,[(u(!0),f(ge,null,Ee(c.value.screenshots.slice(0,2),(G,pe)=>(u(),f("div",{key:pe,class:"screenshot-item"},[n("img",{src:G,alt:`${c.value.name} 截图 ${pe+1}`},null,8,qC)]))),128))])])):T("",!0),w.value?(u(),f("div",HC,[j[16]||(j[16]=n("h2",{class:"section-title"},"描述",-1)),n("div",zC,[c.value.description?(u(),f("p",WC,h(c.value.description),1)):(u(),f("p",KC,h(ae()),1))])])):T("",!0),n("div",GC,[j[27]||(j[27]=n("div",{class:"rating-header"},[n("h2",{class:"section-title"},"评分")],-1)),M.value||c.value.rating!==void 0?(u(),f("div",QC,[n("div",JC,[n("div",ZC,[n("span",XC,h((((U=M.value)==null?void 0:U.averageRating)||c.value.rating||0).toFixed(1)),1),n("span",YC,h(((F=M.value)==null?void 0:F.totalCount)||c.value.ratingCount||0)+"个评分",1)]),n("div",e4,[(u(!0),f(ge,null,Ee(xe.value,(G,pe)=>(u(),f("div",{key:pe,class:"rating-bar-item"},[n("span",t4,h(5-pe),1),m(b,{icon:"fluent-color:star-16",class:"bar-star-icon"}),n("div",s4,[n("div",{class:"bar-fill",style:Lt({width:`${G.percentage}%`})},null,4)]),n("span",n4,h(G.count),1)]))),128))]),n("div",o4,[c.value.update&&c.value.update.latestVersion&&c.value.update.latestVersion!==c.value.version?(u(),f("div",a4,[n("div",l4,[m(b,{icon:"mdi:arrow-up-circle",class:"info-icon"})]),n("div",i4,[j[17]||(j[17]=n("span",{class:"info-label"},"最新版本",-1)),n("span",r4,h(c.value.update.latestVersion),1)])])):T("",!0),n("div",c4,[c.value.features&&c.value.features.length>0?(u(),f("div",u4,[n("div",d4,[m(b,{icon:"mdi:sparkles",class:"info-icon"})]),n("div",f4,[j[18]||(j[18]=n("span",{class:"info-label"},"功能亮点",-1)),n("div",p4,[(u(!0),f(ge,null,Ee(c.value.features,(G,pe)=>(u(),f("span",{key:pe,class:"feature-tag"},h(G),1))),128))])])])):T("",!0),c.value.developer||We()?(u(),f("div",v4,[n("div",m4,[m(b,{icon:"mdi:account",class:"info-icon"})]),n("div",h4,[j[19]||(j[19]=n("span",{class:"info-label"},"开发者",-1)),n("span",g4,h(c.value.developer||We()),1)])])):T("",!0)]),n("div",y4,[$.value.length>0?(u(),f("div",b4,[n("div",_4,[m(b,{icon:"fluent-color:comment-multiple-16",class:"info-icon"})]),n("div",w4,[j[20]||(j[20]=n("span",{class:"info-label"},"用户评论",-1)),n("span",k4,h($.value.length)+"条",1)])])):T("",!0),M.value&&M.value.totalCount>0?(u(),f("div",$4,[n("div",C4,[m(b,{icon:"fluent-color:star-16",class:"info-icon"})]),n("div",I4,[j[21]||(j[21]=n("span",{class:"info-label"},"总评分",-1)),n("span",S4,h(M.value.totalCount)+"个",1)])])):T("",!0),c.value.update&&c.value.update.versions&&c.value.update.versions.length>0?(u(),f("div",A4,[n("div",x4,[m(b,{icon:"mdi:history",class:"info-icon"})]),n("div",T4,[j[22]||(j[22]=n("span",{class:"info-label"},"历史版本",-1)),n("span",E4,h(c.value.update.versions.length)+"个",1)])])):T("",!0),c.value.screenshots&&c.value.screenshots.length>0?(u(),f("div",R4,[n("div",U4,[m(b,{icon:"mdi:image-multiple",class:"info-icon"})]),n("div",D4,[j[23]||(j[23]=n("span",{class:"info-label"},"截图",-1)),n("span",N4,h(c.value.screenshots.length)+"张",1)])])):T("",!0)])])])])):(u(),f("div",M4,[...j[24]||(j[24]=[n("p",null,"暂无评分",-1)])])),Z(o)?T("",!0):(u(),f("button",{key:2,class:"login-to-review-btn",onClick:ee},[m(b,{icon:"fluent-color:comment-multiple-16",class:"btn-icon"}),j[25]||(j[25]=Ce(" 登录以进行评分或评价 ",-1))])),Z(o)?(u(),f("div",P4,[j[26]||(j[26]=n("div",{class:"rating-input-label"},"为这个应用评分",-1)),n("div",L4,[(u(),f(ge,null,Ee(5,G=>n("button",{key:G,class:$e(["star-btn",{active:A.value>=G,hover:x.value>=G}]),onClick:pe=>ie(G),onMouseenter:pe=>x.value=G,onMouseleave:j[2]||(j[2]=pe=>x.value=0)},[m(b,{icon:"fluent-color:star-24"}),x.value===G?(u(),f("span",F4,h(G)+"分",1)):T("",!0)],42,O4)),64))]),A.value>0?(u(),f("div",V4,[n("button",{class:"submit-rating-btn",onClick:Me}," 提交评分 ")])):T("",!0)])):T("",!0)]),m(f3,{"bundle-id":c.value.bundleId,comments:$.value,onSubmitComment:me,onLikeComment:Ze,onDislikeComment:ut,onLikeReply:dt,onDislikeReply:kt,onSubmitReply:St},null,8,["bundle-id","comments"]),c.value.update&&c.value.update.versions&&c.value.update.versions.length>0?(u(),f("div",B4,[j[28]||(j[28]=n("h2",{class:"section-title"},"可用版本",-1)),m($d,{bundleId:c.value.bundleId,versions:c.value.update.versions},null,8,["bundleId","versions"])])):T("",!0)]),n("div",j4,[m(Ok,{"current-bundle-id":c.value.bundleId},null,8,["current-bundle-id"])])]),m(Od,{visible:Z(X),title:Z(O),logs:Z(Y),loading:Z(L),status:Z(ne),"can-close":Z(ne)!=="loading",onClose:Z(ke)},null,8,["visible","title","logs","loading","status","can-close","onClose"]),m($k,{visible:v.value,app:c.value,onClose:j[3]||(j[3]=G=>v.value=!1),onSuccess:J},null,8,["visible","app"]),m(kd,{show:g.value,onClose:I,onSuccess:y},null,8,["show"]),m(Y3,{visible:_.value,"app-info":c.value,onClose:qe,onSubmit:P},null,8,["visible","app-info"])])):T("",!0),m(It,{name:"sticky-header"},{default:pt(()=>[C.value&&c.value?(u(),f("div",q4,[n("div",H4,[n("div",z4,[c.value.hasIcon!==!1&&je()?(u(),f("img",{key:0,src:je(),alt:c.value.name,onError:S},null,40,W4)):(u(),f("div",K4,h(c.value.name.charAt(0).toUpperCase()),1))]),n("div",G4,[n("h2",Q4,h(c.value.name),1),n("p",J4,h(c.value.developer||We()),1),n("div",Z4,[n("span",X4,"版本 "+h(c.value.version),1),c.value.bundleVersion?(u(),f("span",Y4," ("+h(c.value.bundleVersion)+") ",1)):T("",!0),c.value.injection&&c.value.injection.version?(u(),f("span",e5," · 已注入 "+h(c.value.injection.version),1)):T("",!0),c.value.update&&c.value.update.latestVersion&&c.value.update.latestVersion!==c.value.version?(u(),f("span",t5," · 最新 "+h(c.value.update.latestVersion),1)):T("",!0),c.value.rating!==void 0?(u(),f("span",s5,[Ce(" · "+h(c.value.rating.toFixed(1))+" ",1),m(b,{icon:"fluent-color:star-16",class:"sticky-star-icon"})])):T("",!0)])]),n("div",n5,[n("div",o5,[c.value.status==="upgrade_available"?(u(),f("button",{key:0,class:"sticky-install-btn btn-primary",onClick:ze,disabled:Z(L)},[m(b,{icon:"mdi:update",class:"btn-icon"}),Ce(" "+h(Z(L)?"更新中...":"更新"),1)],8,a5)):c.value.status==="supported"?(u(),f("button",{key:1,class:"sticky-install-btn btn-primary",onClick:ze,disabled:Z(L)},[m(b,{icon:"mdi:power",class:"btn-icon"}),Ce(" "+h(Z(L)?"处理中...":"激活"),1)],8,l5)):c.value.status==="injected"?(u(),f("button",{key:2,class:"sticky-install-btn btn-success",onClick:Re},[m(b,{icon:"mdi:open-in-app",class:"btn-icon"}),j[29]||(j[29]=Ce(" 打开 ",-1))])):(u(),f("button",{key:3,class:"sticky-install-btn btn-secondary",onClick:j[4]||(j[4]=(...G)=>Z(oe)&&Z(oe)(...G)),disabled:Z(L)},[m(b,{icon:"fluent-color:arrow-sync-24",class:"btn-icon"}),Ce(" "+h(Z(L)?"处理中...":"重新安装"),1)],8,i5))]),n("div",r5,[n("span",null,"由 "+h(c.value.developer||We())+" 提供和更新",1),j[30]||(j[30]=n("span",null,"·将进行下载和安装",-1))])])])])):T("",!0)]),_:1})])}}}),u5=tt(c5,[["__scopeId","data-v-bd1fa0f0"]]);function ra(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 d5(e){return e<=0?"--":`${ra(e)}/s`}function f5(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 fc(e){return e<0?"0.00%":e>=100?"100.00%":`${e.toFixed(2)}%`}const p5={class:"download-manager"},v5={class:"filter-bar"},m5=["onClick"],h5={class:"filter-count"},g5={class:"recent-updates-section"},y5={class:"download-list"},b5={key:0,class:"empty-state"},_5={class:"item-icon"},w5={class:"item-content"},k5={class:"item-name-row"},$5={class:"item-name"},C5={class:"item-meta-row"},I5={class:"item-type"},S5={key:0,class:"item-progress-section"},A5={class:"progress-bar"},x5={class:"progress-info"},T5={class:"progress-text"},E5={class:"progress-stats"},R5={class:"progress-speed"},U5={class:"progress-time"},D5={key:1,class:"item-progress-section"},N5={class:"progress-info"},M5={class:"progress-stats"},P5={key:2,class:"item-error"},L5={class:"item-right"},O5={key:0,class:"item-status-text"},F5={class:"item-actions"},V5=["onClick"],B5={class:"btn-more-wrapper"},j5=["onClick"],q5=["onClick"],H5=["onClick"],z5=["onClick"],W5=["onClick"],K5=Xe({__name:"DownloadManager",setup(e){const t=k([]),s=k("all");let o=null;const a=k(!1),l=k({title:"",message:"",type:"warning",confirmText:"确认",cancelText:"取消"});let i=null;const r=k(!1),c=k(null),d=[{label:"全部",value:"all"},{label:"下载中",value:"downloading"},{label:"已完成",value:"completed"},{label:"已暂停",value:"paused"},{label:"失败",value:"error"}],p=ve(()=>s.value==="all"?t.value:t.value.filter(E=>E.status===s.value)),v=E=>E==="all"?t.value.length:t.value.filter(L=>L.status===E).length,g=E=>({pending:"等待中",downloading:"下载中",paused:"已暂停",completed:"应用",error:"失败"})[E]||"下载任务",_=E=>({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"})[E.status]||"fluent-color:document-24",w=E=>{if(E.status==="downloading")return"下载中";if(E.status==="completed"&&E.updateTime){const L=new Date(E.updateTime*1e3),O=new Date().getTime()-L.getTime();if(Math.floor(O/(1e3*60*60*24))===0)return"今天更新";{const ne=L.getFullYear(),ue=String(L.getMonth()+1).padStart(2,"0"),oe=String(L.getDate()).padStart(2,"0");return`已于${ne}/${ue}/${oe}更新`}}return""},C=(E,L)=>{var X;L==null||L.stopPropagation(),r.value&&((X=c.value)==null?void 0:X.id)===E.id?(r.value=!1,c.value=null):(c.value=E,r.value=!0)},$=E=>{const L=E.target;r.value&&!L.closest(".menu-popup")&&!L.closest(".btn-more")&&(r.value=!1,c.value=null)};vt(()=>{A(),o=setInterval(A,1e3),document.addEventListener("click",$)}),Wt(()=>{o&&clearInterval(o),document.removeEventListener("click",$)});const A=async()=>{try{t.value=await te.getAllDownloads()}catch(E){console.error("加载下载列表失败:",E)}},x=()=>{A()},M=async E=>{try{await te.pauseDownload(E),await A()}catch(L){console.error("暂停下载失败:",L)}},K=async E=>{try{await te.resumeDownload(E),await A()}catch(L){console.error("继续下载失败:",L)}},W=(E,L,X="warning")=>(r.value=!1,c.value=null,new Promise(O=>{l.value={title:E,message:L,type:X,confirmText:"确认",cancelText:"取消"},a.value=!0,i=O})),z=()=>{a.value=!1,i&&(i(!0),i=null)},re=()=>{a.value=!1,i&&(i(!1),i=null)},V=async E=>{if(await W("删除下载任务","确定要删除这个下载任务吗?","danger"))try{await te.deleteDownload(E),await A()}catch(X){console.error("删除下载失败:",X)}},q=async E=>{if(await W("重新下载",`确定要重新下载 "${E.fileName}" 吗?这将删除并重新下载该文件。`,"warning"))try{await te.deleteDownload(E.id),await te.startDownload(E.url,E.fileName),await A()}catch(X){console.error("重新下载失败:",X)}},Q=async E=>{try{await te.openDownloadFile(E)}catch(L){console.error("打开文件失败:",L)}};return(E,L)=>(u(),f("div",p5,[n("div",{class:"page-header"},[L[2]||(L[2]=n("div",{class:"header-content"},[n("h1",{class:"page-title"},"更新和下载"),n("p",{class:"page-subtitle"},' 通过单击"检查更新"、"全部更新"或"更新"下载并安装应用更新 ')],-1)),n("button",{class:"btn-check-updates",onClick:x}," 检查更新 ")]),n("div",v5,[(u(),f(ge,null,Ee(d,X=>n("button",{key:X.value,class:$e(["filter-btn",{active:s.value===X.value}]),onClick:O=>s.value=X.value},[Ce(h(X.label)+" ",1),n("span",h5,h(v(X.value)),1)],10,m5)),64))]),n("div",g5,[L[13]||(L[13]=n("h2",{class:"section-title"},"最近的更新",-1)),n("div",y5,[p.value.length===0?(u(),f("div",b5,[m(b,{icon:"fluent-color:cloud-24",class:"empty-icon"}),L[3]||(L[3]=n("p",{class:"empty-text"},"暂无下载任务",-1))])):T("",!0),(u(!0),f(ge,null,Ee(p.value,X=>{var O;return u(),f("div",{key:X.id,class:"download-item"},[n("div",_5,[m(b,{icon:_(X),class:"icon"},null,8,["icon"])]),n("div",w5,[n("div",k5,[n("span",$5,h(X.fileName),1)]),n("div",C5,[L[4]||(L[4]=n("span",{class:"item-publisher"},"下载任务",-1)),L[5]||(L[5]=n("span",{class:"item-separator"},"•",-1)),n("span",I5,h(g(X.status)),1)]),X.status==="downloading"?(u(),f("div",S5,[n("div",A5,[n("div",{class:"progress-fill",style:Lt({width:Z(fc)(X.progress*100)})},null,4)]),n("div",x5,[n("span",T5,h(Z(fc)(X.progress*100)),1),n("span",E5,h(Z(ra)(X.downloadedSize))+" / "+h(Z(ra)(X.totalSize)),1),n("span",R5,h(Z(d5)(X.downloadSpeed)),1),n("span",U5," 剩余 "+h(Z(f5)(X.remainingTime)),1)])])):X.status==="completed"?(u(),f("div",D5,[L[7]||(L[7]=n("div",{class:"progress-bar"},[n("div",{class:"progress-fill completed",style:{width:"100%"}})],-1)),n("div",N5,[L[6]||(L[6]=n("span",{class:"progress-text"},"100%",-1)),n("span",M5,h(Z(ra)(X.totalSize)),1)])])):T("",!0),X.errorMsg?(u(),f("div",P5,[m(b,{icon:"fluent-color:error-circle-24",class:"error-icon"}),Ce(" "+h(X.errorMsg),1)])):T("",!0)]),n("div",L5,[w(X)?(u(),f("div",O5,h(w(X)),1)):T("",!0),n("div",F5,[X.status==="completed"?(u(),f("button",{key:0,class:"btn-action btn-open",onClick:Y=>Q(X.id)},[m(b,{icon:"mdi:folder-open",class:"btn-icon"}),L[8]||(L[8]=Ce(" 打开 ",-1))],8,V5)):T("",!0),n("div",B5,[n("button",{class:"btn-more",onClick:Be(Y=>C(X,Y),["stop"])},[m(b,{icon:"mdi:dots-vertical"})],8,j5),r.value&&((O=c.value)==null?void 0:O.id)===X.id?(u(),f("div",{key:0,class:"menu-popup",onClick:L[0]||(L[0]=Be(()=>{},["stop"]))},[X.status==="downloading"?(u(),f("button",{key:0,class:"menu-item",onClick:Be(Y=>{M(X.id),r.value=!1},["stop"])},[m(b,{icon:"fluent-color:clock-24"}),L[9]||(L[9]=Ce(" 暂停 ",-1))],8,q5)):T("",!0),X.status==="paused"?(u(),f("button",{key:1,class:"menu-item",onClick:Be(Y=>{K(X.id),r.value=!1},["stop"])},[m(b,{icon:"fluent-color:arrow-sync-24"}),L[10]||(L[10]=Ce(" 继续 ",-1))],8,H5)):T("",!0),X.status==="completed"||X.status==="error"?(u(),f("button",{key:2,class:"menu-item",onClick:Be(Y=>{q(X),r.value=!1},["stop"])},[m(b,{icon:"fluent-color:arrow-sync-24"}),L[11]||(L[11]=Ce(" 重新下载 ",-1))],8,z5)):T("",!0),n("button",{class:"menu-item danger",onClick:Be(Y=>{V(X.id),r.value=!1},["stop"])},[m(b,{icon:"fluent-color:dismiss-circle-24"}),L[12]||(L[12]=Ce(" 删除 ",-1))],8,W5)])):T("",!0)])])])])}),128))])]),m(_n,{visible:a.value,title:l.value.title,message:l.value.message,type:l.value.type,"confirm-text":l.value.confirmText,"cancel-text":l.value.cancelText,onConfirm:z,onCancel:re,"onUpdate:visible":L[1]||(L[1]=X=>a.value=X)},null,8,["visible","title","message","type","confirm-text","cancel-text"])]))}}),G5=tt(K5,[["__scopeId","data-v-4d7bba9e"]]),Q5={class:"slider-wrapper"},J5=["value","min","max","step"],Z5={class:"slider-value"},X5=Xe({__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,a=ve(()=>s.suffix?`${s.modelValue} ${s.suffix}`:s.modelValue.toString()),l=ve(()=>{let c=s.modelValue;return c<s.min?c=s.min:c>s.max&&(c=s.max),c}),i=ve(()=>{const d=(l.value-s.min)/(s.max-s.min)*100;return{"--progress-percent":`${Math.max(0,Math.min(100,d))}%`}}),r=c=>{const d=c.target;o("update:modelValue",Number(d.value))};return(c,d)=>(u(),f("div",Q5,[n("input",{value:l.value,type:"range",class:"setting-slider",style:Lt(i.value),min:e.min,max:e.max,step:e.step,onInput:r},null,44,J5),n("div",Z5,h(a.value),1)]))}}),io=tt(X5,[["__scopeId","data-v-0979b282"]]),Y5={class:"toggle-wrapper"},e8=["checked"],t8={class:"toggle-slider"},s8={key:0,class:"toggle-text"},n8=Xe({__name:"Toggle",props:{modelValue:{type:Boolean},showLabel:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const s=t,o=a=>{const l=a.target;s("update:modelValue",l.checked)};return(a,l)=>(u(),f("label",Y5,[n("input",{checked:e.modelValue,type:"checkbox",class:"toggle-input",onChange:o},null,40,e8),n("span",t8,[e.showLabel?(u(),f("span",s8,h(e.modelValue?"开":"关"),1)):T("",!0)])]))}}),o8=tt(n8,[["__scopeId","data-v-c85b3e46"]]),a8={class:"settings-page"},l8={class:"settings-container"},i8={class:"settings-list"},r8={class:"setting-item"},c8={class:"setting-icon"},u8={class:"setting-content"},d8={class:"setting-input-wrapper"},f8={key:0,class:"setting-error"},p8={class:"setting-item"},v8={class:"setting-icon"},m8={class:"setting-content"},h8={class:"setting-item"},g8={class:"setting-icon"},y8={class:"setting-content"},b8={class:"setting-item"},_8={class:"setting-icon"},w8={class:"setting-item"},k8={class:"setting-icon"},$8={class:"setting-content"},C8={class:"setting-item"},I8={class:"setting-icon"},S8={class:"setting-content"},A8={class:"setting-item"},x8={class:"setting-icon"},T8={class:"setting-content"},E8={class:"setting-description"},R8={class:"setting-item"},U8={class:"setting-icon"},D8={class:"setting-content"},N8={class:"theme-options"},M8={class:"settings-actions"},P8=["disabled"],L8=["disabled"],O8={class:"about-section"},F8={class:"about-icon"},V8={class:"version-info"},B8={key:0,class:"about-details"},j8={class:"detail-section"},q8={class:"detail-content"},H8={class:"detail-item"},z8={class:"detail-value"},W8=Xe({__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,proxy_max_connections:10}),s=ve(()=>(t.value.cpu_cores||4)*2),o=k(""),a=k(!1),l=k(!1),{toasts:i,success:r,error:c,removeToast:d}=Kt(),p=zn(),v=new Date().toLocaleDateString("zh-CN",{year:"numeric",month:"long",day:"numeric"}),g=()=>{l.value=!l.value},_=async()=>{try{const A=await te.getAllSettings();A.cpu_cores&&(t.value.cpu_cores=A.cpu_cores),t.value={download_path:A.download_path??"",auto_check_update:A.auto_check_update??!0,concurrent_downloads:A.concurrent_downloads??3,theme:A.theme??"auto",update_check_interval:A.update_check_interval??10,update_check_threads:A.update_check_threads??16,download_concurrent_threads:A.download_concurrent_threads??16,proxy_max_connections:A.proxy_max_connections??10,cpu_cores:A.cpu_cores}}catch(A){console.error("加载设置失败:",A),c("加载设置失败",4e3)}},w=async()=>{var x;const A=(x=t.value.download_path)==null?void 0:x.trim();if(!A){o.value="";return}try{const M=await te.validatePath(A);M.exists?M.isDirectory?o.value="":o.value="路径不是目录":o.value="路径不存在"}catch{o.value="验证路径失败"}},C=async()=>{if(!o.value){a.value=!0;try{const A={};t.value.download_path!==void 0&&(A.download_path=t.value.download_path),t.value.auto_check_update!==void 0&&(A.auto_check_update=t.value.auto_check_update),t.value.concurrent_downloads!==void 0&&(A.concurrent_downloads=t.value.concurrent_downloads),t.value.theme!==void 0&&(A.theme=t.value.theme),t.value.update_check_interval!==void 0&&(A.update_check_interval=t.value.update_check_interval),t.value.update_check_threads!==void 0&&(A.update_check_threads=t.value.update_check_threads),t.value.download_concurrent_threads!==void 0&&(A.download_concurrent_threads=t.value.download_concurrent_threads),t.value.proxy_max_connections!==void 0&&(A.proxy_max_connections=t.value.proxy_max_connections),await te.updateSettings(A),r("设置已保存",3e3)}catch(A){console.error("保存设置失败:",A),c("保存设置失败",4e3)}finally{a.value=!1}}},$=async()=>{await p.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,proxy_max_connections:10},o.value="")};return vt(()=>{_()}),(A,x)=>(u(),f("div",a8,[n("div",l8,[x[37]||(x[37]=n("h1",{class:"page-title"},"设置",-1)),n("div",i8,[n("div",r8,[n("div",c8,[m(b,{icon:"fluent-color:document-folder-24"})]),n("div",u8,[x[10]||(x[10]=n("h3",{class:"setting-title"},"下载路径",-1)),x[11]||(x[11]=n("p",{class:"setting-description"}," 请输入完整的绝对路径,不能使用 ~ 符号 ",-1)),n("div",d8,[m(b,{icon:"fluent-color:document-folder-24",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":x[0]||(x[0]=M=>t.value.download_path=M),type:"text",class:"setting-input",placeholder:"/Users/你的用户名/Downloads/Hayaku/",onInput:w},null,544),[[ot,t.value.download_path]])]),o.value?(u(),f("p",f8,[m(b,{icon:"fluent-color:error-circle-24",class:"error-icon"}),Ce(" "+h(o.value),1)])):T("",!0)])]),n("div",p8,[n("div",v8,[m(b,{icon:"fluent-color:send-24"})]),n("div",m8,[x[12]||(x[12]=n("h3",{class:"setting-title"},"最大并发下载数",-1)),x[13]||(x[13]=n("p",{class:"setting-description"},"同时进行的下载任务数量",-1)),m(io,{modelValue:t.value.concurrent_downloads,"onUpdate:modelValue":x[1]||(x[1]=M=>t.value.concurrent_downloads=M),min:1,max:16,step:1},null,8,["modelValue"])])]),n("div",h8,[n("div",g8,[m(b,{icon:"fluent-color:link-multiple-24"})]),n("div",y8,[x[14]||(x[14]=n("h3",{class:"setting-title"},"下载并发线程数",-1)),x[15]||(x[15]=n("p",{class:"setting-description"}," 每个下载任务使用的并发线程数默认16 ",-1)),m(io,{modelValue:t.value.download_concurrent_threads,"onUpdate:modelValue":x[2]||(x[2]=M=>t.value.download_concurrent_threads=M),min:1,max:64,step:1},null,8,["modelValue"])])]),n("div",b8,[n("div",_8,[m(b,{icon:"fluent-color:arrow-sync-24"})]),x[16]||(x[16]=n("div",{class:"setting-content"},[n("h3",{class:"setting-title"},"自动检查更新"),n("p",{class:"setting-description"},"是否在后台自动检查应用更新")],-1)),m(o8,{modelValue:t.value.auto_check_update,"onUpdate:modelValue":x[3]||(x[3]=M=>t.value.auto_check_update=M)},null,8,["modelValue"])]),n("div",w8,[n("div",k8,[m(b,{icon:"fluent-color:clock-24"})]),n("div",$8,[x[17]||(x[17]=n("h3",{class:"setting-title"},"更新检查间隔(分钟)",-1)),x[18]||(x[18]=n("p",{class:"setting-description"}," 后台自动检查更新的时间间隔默认10分钟 ",-1)),m(io,{modelValue:t.value.update_check_interval,"onUpdate:modelValue":x[4]||(x[4]=M=>t.value.update_check_interval=M),min:1,max:1440,step:1,suffix:"分钟"},null,8,["modelValue"])])]),n("div",C8,[n("div",I8,[m(b,{icon:"fluent-color:link-multiple-24"})]),n("div",S8,[x[19]||(x[19]=n("h3",{class:"setting-title"},"更新检查并发线程数",-1)),x[20]||(x[20]=n("p",{class:"setting-description"}," 同时检查更新的URL数量默认16 ",-1)),m(io,{modelValue:t.value.update_check_threads,"onUpdate:modelValue":x[5]||(x[5]=M=>t.value.update_check_threads=M),min:1,max:64,step:1},null,8,["modelValue"])])]),n("div",A8,[n("div",x8,[m(b,{icon:"fluent-color:wifi-20"})]),n("div",T8,[x[21]||(x[21]=n("h3",{class:"setting-title"},"网络请求并发线程数",-1)),n("p",E8," 同时处理的网络请求数量默认10最大"+h(s.value)+" ",1),(u(),Ke(io,{modelValue:t.value.proxy_max_connections,"onUpdate:modelValue":x[6]||(x[6]=M=>t.value.proxy_max_connections=M),min:1,max:s.value,step:1,key:`proxy-${s.value}-${t.value.proxy_max_connections}`},null,8,["modelValue","max"]))])]),n("div",R8,[n("div",U8,[m(b,{icon:"fluent-color:options-24"})]),n("div",D8,[x[25]||(x[25]=n("h3",{class:"setting-title"},"主题",-1)),x[26]||(x[26]=n("p",{class:"setting-description"},"选择应用主题",-1)),n("div",N8,[n("button",{class:$e(["theme-option",{active:t.value.theme==="light"}]),onClick:x[7]||(x[7]=M=>t.value.theme="light")},[m(b,{icon:"fluent-color:weather-sunny-low-24"}),x[22]||(x[22]=n("span",null,"浅色",-1))],2),n("button",{class:$e(["theme-option",{active:t.value.theme==="dark"}]),onClick:x[8]||(x[8]=M=>t.value.theme="dark")},[m(b,{icon:"fluent-emoji-flat:crescent-moon"}),x[23]||(x[23]=n("span",null,"深色",-1))],2),n("button",{class:$e(["theme-option",{active:t.value.theme==="auto"}]),onClick:x[9]||(x[9]=M=>t.value.theme="auto")},[m(b,{icon:"fluent-emoji-flat:a-button-blood-type"}),x[24]||(x[24]=n("span",null,"自动",-1))],2)])])])]),n("div",M8,[n("button",{class:"btn btn-secondary",onClick:$,disabled:a.value},[m(b,{icon:"fluent-color:arrow-sync-24"}),x[27]||(x[27]=Ce(" 重置为默认值 ",-1))],8,P8),n("button",{class:"btn btn-primary",onClick:C,disabled:a.value},[m(b,{icon:"fluent-color:document-add-24"}),Ce(" "+h(a.value?"保存中...":"保存设置"),1)],8,L8)]),n("div",O8,[x[36]||(x[36]=n("h2",{class:"section-title"},"关于",-1)),n("div",{class:"about-item",onClick:g},[n("div",F8,[m(b,{icon:"fluent-color:apps-24"})]),x[29]||(x[29]=n("div",{class:"about-content"},[n("h3",{class:"about-title"},"秋城落叶 应用商店"),n("p",{class:"about-description"},"由 QiuChenly 发布")],-1)),n("div",V8,[x[28]||(x[28]=n("span",{class:"version-text"},"测试版 0.1 Beta",-1)),m(b,{icon:"mdi:chevron-down",class:$e(["version-arrow",{expanded:l.value}])},null,8,["class"])])]),m(It,{name:"slide-down"},{default:pt(()=>[l.value?(u(),f("div",B8,[n("div",j8,[x[35]||(x[35]=n("h4",{class:"detail-title"},"个人信息",-1)),n("div",q8,[x[31]||(x[31]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"开发者:"),n("span",{class:"detail-value"},"QiuChenly")],-1)),x[32]||(x[32]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"邮箱:"),n("span",{class:"detail-value"},"qiuchenly@outlook.com")],-1)),x[33]||(x[33]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"GitHub"),n("span",{class:"detail-value"},"github.com/QiuChenly")],-1)),x[34]||(x[34]=n("div",{class:"detail-item"},[n("span",{class:"detail-label"},"版本:"),n("span",{class:"detail-value"},"测试版 0.1 Beta")],-1)),n("div",H8,[x[30]||(x[30]=n("span",{class:"detail-label"},"构建日期:",-1)),n("span",z8,h(Z(v)),1)])])])])):T("",!0)]),_:1})])]),m(ds,{toasts:Z(i),onRemove:Z(d)},null,8,["toasts","onRemove"]),m(_n,{visible:Z(p).visible.value,title:Z(p).config.value.title||"",message:Z(p).config.value.message||"",type:Z(p).config.value.type,"confirm-text":Z(p).config.value.confirmText,"cancel-text":Z(p).config.value.cancelText,onConfirm:Z(p).handleConfirm,onCancel:Z(p).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"])]))}}),K8=tt(W8,[["__scopeId","data-v-f9b2ec46"]]),G8={class:"profile-page"},Q8={class:"profile-content"},J8={class:"info-card"},Z8={class:"card-header"},X8={class:"card-content"},Y8={class:"info-item"},eI={class:"value"},tI={class:"info-item"},sI={class:"value"},nI={class:"info-item"},oI={class:"value"},aI={class:"info-item"},lI={class:"info-item"},iI={key:0,class:"admin-section"},rI={class:"section-header"},cI={class:"table-container"},uI={class:"table-header"},dI={class:"search-box"},fI={key:0,class:"loading"},pI={key:1,class:"error"},vI={key:2,class:"data-table"},mI={class:"actions"},hI=["onClick"],gI={key:3,class:"pagination"},yI=["disabled"],bI=["disabled"],_I={key:1,class:"admin-section"},wI={class:"section-header"},kI={class:"tabs"},$I={key:0,class:"table-container"},CI={class:"table-header"},II={key:0,class:"loading"},SI={key:1,class:"error"},AI={key:2,class:"data-table"},xI={class:"actions"},TI=["onClick"],EI={key:1,class:"table-container"},RI={class:"table-header"},UI={key:0,class:"loading"},DI={key:1,class:"error"},NI={key:2,class:"data-table"},MI={class:"actions"},PI=["onClick"],LI={key:3,class:"pagination"},OI=["disabled"],FI=["disabled"],VI={key:2,class:"admin-section"},BI={class:"section-header"},jI={class:"tabs"},qI={class:"table-container"},HI={class:"table-header"},zI={key:0,class:"loading"},WI={key:1,class:"error"},KI={key:2,class:"data-table"},GI={key:3,class:"pagination"},QI=["disabled"],JI=["disabled"],ZI={class:"modal-dialog"},XI={class:"modal-header"},YI={class:"modal-content"},e6={class:"form-group"},t6=["value"],s6={class:"form-group"},n6={class:"form-group"},o6={class:"form-group"},a6=["value"],l6={class:"modal-footer"},i6=["disabled"],r6=Xe({__name:"Profile",setup(e){const{user:t}=qs(),{isQiuChenLy:s}=Oo(),{toasts:o,success:a,error:l,info:i,removeToast:r}=Kt(),c=zn(),d=k("files"),p=k([]),v=k(!1),g=k(""),_=k([]),w=k(!1),C=k(""),$=k(1),A=k(20),x=k(1),M=k("all"),K=k([]),W=k(!1),z=k(""),re=k(1),V=k(20),q=k(1),Q=k([]),E=k(!1),L=k(""),X=k(1),O=k(20),Y=k(1),ne=k(""),ue=k(!1),oe=k(null),ke=k({bundleId:"",version:""}),je=k(!1),ze=ve(()=>{if(!ne.value)return Q.value;const I=ne.value.toLowerCase();return Q.value.filter(y=>y.bundleId&&y.bundleId.toLowerCase().includes(I)||y.appName&&y.appName.toLowerCase().includes(I))}),Re=I=>{if(!I)return"用户";switch(I){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},we=I=>{switch(I){case"admin":return"role-admin";case"qiuchenly":return"role-super";default:return"role-user"}},Ne=async()=>{v.value=!0,g.value="";try{const I=await te.getFiles();I.success&&I.data?p.value=Array.isArray(I.data)?I.data:[]:g.value=I.message||"加载文件列表失败"}catch(I){g.value=I.message||"加载文件列表失败"}finally{v.value=!1}},Je=async()=>{w.value=!0,C.value="";try{const I=await te.getBinds($.value,A.value);I.success&&I.data?(_.value=I.data.binds||I.data.list||I.data||[],x.value=Math.ceil((I.data.total||0)/A.value)):C.value=I.message||"加载绑定列表失败"}catch(I){C.value=I.message||"加载绑定列表失败"}finally{w.value=!1}},We=async()=>{var I;if(!ke.value.bundleId||!ke.value.version){l("请填写Bundle ID和版本",2e3);return}if(!((I=oe.value)!=null&&I.name)){l("文件信息不完整",2e3);return}je.value=!0;try{const y=await te.bindFile({bundleId:ke.value.bundleId,version:ke.value.version,fileId:oe.value.name});y.success?(a("文件绑定成功",2e3),ue.value=!1,Je()):l(y.message||"绑定失败",3e3)}catch(y){l(y.message||"绑定失败",3e3)}finally{je.value=!1}},ae=async I=>{if(await c.show({title:"删除绑定",message:`确定要删除绑定 "${I.bundleId} ${I.version}" 吗?`,type:"danger",confirmText:"删除",cancelText:"取消"}))try{const N=I._id||I.id;if(!N){l("绑定ID不存在",2e3);return}const le=await te.deleteBind(N);le.success?(a("绑定删除成功",2e3),Je()):l(le.message||"删除失败",3e3)}catch(N){l(N.message||"删除失败",3e3)}},xe=I=>{if(!I)return"0 B";const y=1024,N=["B","KB","MB","GB"],le=Math.floor(Math.log(I)/Math.log(y));return Math.round(I/Math.pow(y,le)*100)/100+" "+N[le]},be=I=>{if(!I)return"-";try{return(I instanceof Date?I:new Date(I)).toLocaleString("zh-CN")}catch{return String(I)}},De=I=>{var le;if(!I)return"-";const y=(le=I.split(".").pop())==null?void 0:le.toLowerCase();return{dmg:"DMG镜像",pkg:"安装包",zip:"压缩包",tar:"压缩包",gz:"压缩包",app:"应用程序"}[y||""]||(y==null?void 0:y.toUpperCase())||"未知"},qe=async()=>{W.value=!0,z.value="";try{const I=await te.getOperationLogs(re.value,V.value);if(I.success&&I.data){K.value=I.data.logs||I.data.list||I.data||[];const y=I.data.total||I.data.count||K.value.length;q.value=Math.ceil(y/V.value)}else z.value=I.message||"加载操作日志失败"}catch(I){z.value=I.message||"加载操作日志失败"}finally{W.value=!1}},P=async()=>{W.value=!0,z.value="";try{const I=await te.getMyOperationLogs(re.value,V.value);if(I.success&&I.data){K.value=I.data.logs||I.data.list||I.data||[];const y=I.data.total||I.data.count||K.value.length;q.value=Math.ceil(y/V.value)}else z.value=I.message||"加载操作日志失败"}catch(I){z.value=I.message||"加载操作日志失败"}finally{W.value=!1}},R=I=>({UPLOAD_APP_INFO:"上传应用信息",UPLOAD_IMAGE:"上传图片",BIND_FILE:"绑定文件",DELETE_BIND:"删除绑定",DELETE_USER:"删除用户",UPGRADE_USER:"升级用户",SET_USER_STATUS:"设置用户状态"})[String(I)]||String(I),S=async()=>{if(s.value){E.value=!0,L.value="";try{const I=await te.getAppInfoAll(X.value,O.value);if(I.success&&I.data){let y=[];Array.isArray(I.data)?y=I.data:I.data.list&&Array.isArray(I.data.list)?y=I.data.list:I.data.apps&&Array.isArray(I.data.apps)&&(y=I.data.apps),Q.value=y;const N=I.data.total||I.data.count||y.length;Y.value=Math.ceil(N/O.value)}else L.value=I.message||"加载App列表失败"}catch(I){L.value=I.message||"加载App列表失败"}finally{E.value=!1}}},J=I=>{const y=[`Bundle ID: ${I.bundleId}`,`名称: ${I.appName||"未设置"}`,`版本: ${I.appVersion||"未设置"}`,`描述: ${I.description||"无描述"}`].join(`
`);i(y,5e3)},ee=I=>{oe.value=I,ke.value={bundleId:"",version:""},ue.value=!0,Q.value.length===0&&!E.value&&S()};return vt(()=>{s.value&&(Ne(),Je(),qe())}),(I,y)=>{var N,le,ie,Me,Ie,Le,He,Ge;return u(),f("div",G8,[y[49]||(y[49]=n("div",{class:"profile-header"},[n("h1",null,"个人中心"),n("p",{class:"subtitle"},"管理您的账户和系统设置")],-1)),n("div",Q8,[n("div",J8,[n("div",Z8,[m(b,{icon:"mdi:account-circle",class:"card-icon"}),y[18]||(y[18]=n("h2",null,"用户信息",-1))]),n("div",X8,[n("div",Y8,[y[19]||(y[19]=n("span",{class:"label"},"用户名:",-1)),n("span",eI,h((N=Z(t))==null?void 0:N.username),1)]),n("div",tI,[y[20]||(y[20]=n("span",{class:"label"},"昵称:",-1)),n("span",sI,h(((le=Z(t))==null?void 0:le.nickName)||"未设置"),1)]),n("div",nI,[y[21]||(y[21]=n("span",{class:"label"},"邮箱:",-1)),n("span",oI,h(((ie=Z(t))==null?void 0:ie.email)||"未设置"),1)]),n("div",aI,[y[22]||(y[22]=n("span",{class:"label"},"角色:",-1)),n("span",{class:$e(["value role-badge",we((Me=Z(t))==null?void 0:Me.role)])},h(Re((Ie=Z(t))==null?void 0:Ie.role)),3)]),n("div",lI,[y[23]||(y[23]=n("span",{class:"label"},"状态:",-1)),n("span",{class:$e(["value status-badge",((Le=Z(t))==null?void 0:Le.status)==="active"?"active":"inactive"])},h(((He=Z(t))==null?void 0:He.status)==="active"?"正常":"禁用"),3)])])]),Z(s)?(u(),f("div",iI,[n("div",rI,[m(b,{icon:"mdi:apps",class:"section-icon"}),y[24]||(y[24]=n("h2",null,"App管理",-1))]),n("div",cI,[n("div",uI,[n("div",dI,[m(b,{icon:"mdi:magnify"}),Qe(n("input",{"onUpdate:modelValue":y[0]||(y[0]=me=>ne.value=me),type:"text",placeholder:"搜索Bundle ID或应用名称...",onInput:S},null,544),[[ot,ne.value]])]),n("button",{onClick:S,class:"btn btn-primary"},[m(b,{icon:"mdi:refresh"}),y[25]||(y[25]=Ce(" 刷新 ",-1))])]),E.value?(u(),f("div",fI,[...y[26]||(y[26]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):L.value?(u(),f("div",pI,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(L.value),1)])):(u(),f("table",vI,[y[27]||(y[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,[(u(!0),f(ge,null,Ee(ze.value,me=>(u(),f("tr",{key:me._id||me.id||me.bundleId},[n("td",null,h(me.bundleId),1),n("td",null,h(me.appName||"-"),1),n("td",null,h(me.appVersion||"-"),1),n("td",null,h((me.description||"").substring(0,50))+h(me.description&&me.description.length>50?"...":""),1),n("td",mI,[n("button",{onClick:Ze=>J(me),class:"btn-icon",title:"查看详情"},[m(b,{icon:"mdi:eye"})],8,hI)])]))),128))])])),Q.value.length>0?(u(),f("div",gI,[n("button",{onClick:y[1]||(y[1]=me=>X.value>1&&(X.value--,S())),disabled:X.value===1,class:"btn btn-sm"}," 上一页 ",8,yI),n("span",null,"第 "+h(X.value)+" 页,共 "+h(Y.value)+" 页",1),n("button",{onClick:y[2]||(y[2]=me=>X.value<Y.value&&(X.value++,S())),disabled:X.value>=Y.value,class:"btn btn-sm"}," 下一页 ",8,bI)])):T("",!0)])])):T("",!0),Z(s)?(u(),f("div",_I,[n("div",wI,[m(b,{icon:"mdi:file-document",class:"section-icon"}),y[28]||(y[28]=n("h2",null,"文件管理",-1))]),n("div",kI,[n("button",{class:$e(["tab-button",{active:d.value==="files"}]),onClick:y[3]||(y[3]=me=>d.value="files")},[m(b,{icon:"mdi:file"}),y[29]||(y[29]=Ce(" 文件列表 ",-1))],2),n("button",{class:$e(["tab-button",{active:d.value==="binds"}]),onClick:y[4]||(y[4]=me=>d.value="binds")},[m(b,{icon:"mdi:link"}),y[30]||(y[30]=Ce(" 文件绑定 ",-1))],2)]),d.value==="files"?(u(),f("div",$I,[n("div",CI,[n("button",{onClick:Ne,class:"btn btn-primary"},[m(b,{icon:"mdi:refresh"}),y[31]||(y[31]=Ce(" 刷新 ",-1))])]),v.value?(u(),f("div",II,[...y[32]||(y[32]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):g.value?(u(),f("div",SI,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(g.value),1)])):(u(),f("table",AI,[y[33]||(y[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,[(u(!0),f(ge,null,Ee(p.value,(me,Ze)=>(u(),f("tr",{key:me.name||Ze},[n("td",null,h(me.name),1),n("td",null,h(xe(me.size)),1),n("td",null,h(De(me.name)),1),n("td",null,h(be(me.lastModified)),1),n("td",xI,[n("button",{onClick:ut=>ee(me),class:"btn-icon",title:"绑定到应用"},[m(b,{icon:"mdi:link"})],8,TI)])]))),128))])]))])):T("",!0),d.value==="binds"?(u(),f("div",EI,[n("div",RI,[n("button",{onClick:Je,class:"btn btn-primary"},[m(b,{icon:"mdi:refresh"}),y[34]||(y[34]=Ce(" 刷新 ",-1))])]),w.value?(u(),f("div",UI,[...y[35]||(y[35]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):C.value?(u(),f("div",DI,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(C.value),1)])):(u(),f("table",NI,[y[36]||(y[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,[(u(!0),f(ge,null,Ee(_.value,me=>(u(),f("tr",{key:me._id||me.id},[n("td",null,h(me.bundleId),1),n("td",null,h(me.version),1),n("td",null,h(me.fileId),1),n("td",null,h(be(me.createdAt)),1),n("td",MI,[n("button",{onClick:Ze=>ae(me),class:"btn-icon danger",title:"删除绑定"},[m(b,{icon:"mdi:delete"})],8,PI)])]))),128))])])),_.value.length>0?(u(),f("div",LI,[n("button",{onClick:y[5]||(y[5]=me=>$.value>1&&($.value--,Je())),disabled:$.value===1,class:"btn btn-sm"}," 上一页 ",8,OI),n("span",null,"第 "+h($.value)+" 页,共 "+h(x.value)+" 页",1),n("button",{onClick:y[6]||(y[6]=me=>$.value<x.value&&($.value++,Je())),disabled:$.value>=x.value,class:"btn btn-sm"}," 下一页 ",8,FI)])):T("",!0)])):T("",!0)])):T("",!0),Z(s)?(u(),f("div",VI,[n("div",BI,[m(b,{icon:"mdi:file-document-outline",class:"section-icon"}),y[37]||(y[37]=n("h2",null,"操作日志",-1))]),n("div",jI,[n("button",{class:$e(["tab-button",{active:M.value==="all"}]),onClick:y[7]||(y[7]=me=>{M.value="all",qe()})},[m(b,{icon:"mdi:file-document-multiple"}),y[38]||(y[38]=Ce(" 所有日志 ",-1))],2),n("button",{class:$e(["tab-button",{active:M.value==="my"}]),onClick:y[8]||(y[8]=me=>{M.value="my",P()})},[m(b,{icon:"mdi:account"}),y[39]||(y[39]=Ce(" 我的日志 ",-1))],2)]),n("div",qI,[n("div",HI,[n("button",{onClick:y[9]||(y[9]=me=>M.value==="all"?qe():P()),class:"btn btn-primary"},[m(b,{icon:"mdi:refresh"}),y[40]||(y[40]=Ce(" 刷新 ",-1))])]),W.value?(u(),f("div",zI,[...y[41]||(y[41]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):z.value?(u(),f("div",WI,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(z.value),1)])):(u(),f("table",KI,[y[42]||(y[42]=n("thead",null,[n("tr",null,[n("th",null,"操作类型"),n("th",null,"用户"),n("th",null,"路径"),n("th",null,"时间")])],-1)),n("tbody",null,[(u(!0),f(ge,null,Ee(K.value,me=>{var Ze;return u(),f("tr",{key:me._id||me.id},[n("td",null,h(R(me.operationType)),1),n("td",null,h(((Ze=me.userId)==null?void 0:Ze.username)||me.userId||"-"),1),n("td",null,h(me.path||"-"),1),n("td",null,h(be(me.createdAt)),1)])}),128))])])),K.value.length>0?(u(),f("div",GI,[n("button",{onClick:y[10]||(y[10]=me=>re.value>1&&(re.value--,M.value==="all"?qe():P())),disabled:re.value===1,class:"btn btn-sm"}," 上一页 ",8,QI),n("span",null,"第 "+h(re.value)+" 页,共 "+h(q.value)+" 页",1),n("button",{onClick:y[11]||(y[11]=me=>re.value<q.value&&(re.value++,M.value==="all"?qe():P())),disabled:re.value>=q.value,class:"btn btn-sm"}," 下一页 ",8,JI)])):T("",!0)])])):T("",!0),ue.value?(u(),f("div",{key:3,class:"modal-overlay",onClick:y[17]||(y[17]=Be(me=>ue.value=!1,["self"]))},[n("div",ZI,[n("div",XI,[y[43]||(y[43]=n("h3",null,"绑定文件到应用",-1)),n("button",{onClick:y[12]||(y[12]=me=>ue.value=!1),class:"close-btn"},[m(b,{icon:"mdi:close"})])]),n("div",YI,[n("div",e6,[y[45]||(y[45]=n("label",null,"选择应用:",-1)),Qe(n("select",{"onUpdate:modelValue":y[13]||(y[13]=me=>ke.value.bundleId=me),class:"form-select"},[y[44]||(y[44]=n("option",{value:""},"请选择应用",-1)),(u(!0),f(ge,null,Ee(Q.value,me=>(u(),f("option",{key:me.bundleId,value:me.bundleId},h(me.appName||me.bundleId)+" ("+h(me.appVersion||"未知版本")+") ",9,t6))),128))],512),[[vi,ke.value.bundleId]])]),n("div",s6,[y[46]||(y[46]=n("label",null,"Bundle ID (或手动输入):",-1)),Qe(n("input",{"onUpdate:modelValue":y[14]||(y[14]=me=>ke.value.bundleId=me),type:"text",placeholder:"com.example.app"},null,512),[[ot,ke.value.bundleId]])]),n("div",n6,[y[47]||(y[47]=n("label",null,"版本:",-1)),Qe(n("input",{"onUpdate:modelValue":y[15]||(y[15]=me=>ke.value.version=me),type:"text",placeholder:"1.0.0"},null,512),[[ot,ke.value.version]])]),n("div",o6,[y[48]||(y[48]=n("label",null,"文件:",-1)),n("input",{value:(Ge=oe.value)==null?void 0:Ge.name,type:"text",disabled:""},null,8,a6)])]),n("div",l6,[n("button",{onClick:y[16]||(y[16]=me=>ue.value=!1),class:"btn btn-secondary"},"取消"),n("button",{onClick:We,class:"btn btn-primary",disabled:je.value},h(je.value?"绑定中...":"确认绑定"),9,i6)])])])):T("",!0)]),m(_n,{visible:Z(c).visible.value,title:Z(c).config.value.title||"",message:Z(c).config.value.message||"",type:Z(c).config.value.type,"confirm-text":Z(c).config.value.confirmText,"cancel-text":Z(c).config.value.cancelText,onConfirm:Z(c).handleConfirm,onCancel:Z(c).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(ds,{toasts:Z(o),onRemove:Z(r)},null,8,["toasts","onRemove"])])}}}),c6=tt(r6,[["__scopeId","data-v-fceef32a"]]),u6={class:"new-features-page"},d6={class:"features-container"},f6={class:"features-list"},p6={class:"feature-header"},v6={class:"feature-title"},m6={class:"feature-description"},h6={key:0,class:"feature-action"},g6=["onClick"],y6=Xe({__name:"NewFeatures",setup(e){const t=as(),s=k([{title:"应用详情页面优化",type:"feature",description:"应用详情页面全面优化,图标添加了加载动画,提供更好的视觉反馈。移除了应用头部卡片的背景和阴影,界面更加简洁。开发者信息现在单独显示在功能亮点下方,布局更加清晰。功能亮点以标签样式展示,每个功能项都有独立的标签,视觉效果更美观。"},{title:"应用列表显示优化",type:"fix",description:"修复了「所有应用」页面只显示配置中的应用的问题。现在会显示系统中所有已安装的应用,包括不在配置中的应用。不在配置中的应用会显示为「不支持」状态,虽然没有注入和更新功能,但仍然可以查看基本信息。"},{title:"应用详情页面可访问性提升",type:"fix",description:"修复了不在配置中的应用无法访问详情页面的问题。现在即使应用不在支持列表中,也可以正常查看应用详情、图标等基本信息,提升了应用的可用性。"},{title:"卡片边框优化",type:"fix",description:"优化了应用详情页面的卡片边框显示。应用头部卡片移除了边框,界面更加简洁。其他卡片(评分、评论、描述等)保持边框,确保在暗色模式下有足够的对比度,提升可读性。"},{title:"私信新会话功能",type:"feature",description:"私信界面新增了「新会话」功能,现在你可以浏览用户列表并选择用户开始聊天。用户列表支持搜索功能,可以按用户名或昵称快速查找。界面设计简洁美观,显示用户头像、昵称等基本信息。",action:{type:"button",label:"前往私信",route:"/messages"}},{title:"新会话数据刷新优化",type:"fix",description:"修复了新会话界面数据不刷新的问题。现在每次打开新会话时都会自动刷新用户列表,确保显示的是最新数据。"},{title:"网络请求性能大幅提升",type:"feature",description:"现在多个网络请求可以同时处理,不再需要等待前一个请求完成。无论是加载应用列表、检查更新还是其他操作,响应速度都显著提升。你可以在设置页面中调整「网络请求并发线程数」,系统会根据你的 CPU 核心数自动设置合理的最大值。",action:{type:"button",label:"前往设置",route:"/settings"}},{title:"可自定义网络请求并发数",type:"feature",description:"新增了网络请求并发线程数的配置选项,你可以根据网络环境和设备性能灵活调整。配置会立即生效,无需重启应用,让你能够获得最佳的请求处理速度。",action:{type:"button",label:"前往设置",route:"/settings"}},{title:"应用稳定性提升",type:"fix",description:"修复了多线程环境下可能导致的崩溃问题,提升了应用的稳定性和可靠性。"},{title:"设置页面显示优化",type:"fix",description:"修复了设置页面中滑块条显示不正确的问题,现在能够正确显示配置的实际值。"},{title:"系统通知功能",type:"feature",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=a=>{a.route?t.push(a.route):a.url&&window.open(a.url,"_blank")};return(a,l)=>(u(),f("div",u6,[n("div",d6,[l[0]||(l[0]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"QiuChenly 应用商店中的新增功能"),n("p",{class:"page-subtitle"}," 我们很高兴分享改进,为你提供更好的 QiuChenly 应用商店。 ")],-1)),n("div",f6,[(u(!0),f(ge,null,Ee(s.value,(i,r)=>(u(),f("div",{key:r,class:$e(["feature-item",{"feature-type-new":!i.type||i.type==="feature","feature-type-fix":i.type==="fix"}])},[n("div",p6,[n("h2",v6,h(i.title),1),n("span",{class:$e(["new-badge",{"badge-feature":!i.type||i.type==="feature","badge-fix":i.type==="fix"}])},h(i.type==="fix"?"修复":"新"),3)]),n("p",m6,h(i.description),1),i.action?(u(),f("div",h6,[i.action.type==="button"?(u(),f("button",{key:0,class:"action-button",onClick:c=>o(i.action)},h(i.action.label),9,g6)):T("",!0)])):T("",!0)],2))),128))])])]))}}),b6=tt(y6,[["__scopeId","data-v-f15ce114"]]),_6={class:"apps-page"},w6={class:"page-container"},k6={key:0,class:"loading"},$6={key:1,class:"error"},C6={key:2,class:"empty"},I6={key:3,class:"apps-grid"},S6={key:4,class:"list-footer"},A6={class:"footer-stats"},x6={class:"stat-item"},T6={class:"stat-value"},E6=Xe({__name:"Apps",setup(e){const t=k([]),s=k(!0),o=k(""),a=async()=>{s.value=!0,o.value="";try{const i=await te.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}},l=async i=>{console.log(`应用 ${i} 已更新`),await a()};return vt(()=>{a()}),(i,r)=>(u(),f("div",_6,[n("div",w6,[r[4]||(r[4]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"所有应用"),n("p",{class:"page-description"},"系统中所有已安装的应用")],-1)),s.value?(u(),f("div",k6,[...r[0]||(r[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):o.value?(u(),f("div",$6,[n("p",null,h(o.value),1),n("button",{onClick:a,class:"btn btn-primary"},"重试")])):t.value.length===0?(u(),f("div",C6,[m(b,{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))])):(u(),f("div",I6,[(u(!0),f(ge,null,Ee(t.value,c=>(u(),Ke(Eo,{key:c.bundleId,app:c,mode:"list",onUpdated:l},null,8,["app"]))),128))])),t.value.length>0?(u(),f("div",S6,[n("div",A6,[n("span",x6,[r[3]||(r[3]=n("span",{class:"stat-label"},"总计:",-1)),n("span",T6,h(t.value.length),1)])])])):T("",!0)])]))}}),R6=tt(E6,[["__scopeId","data-v-3d91182b"]]),U6={class:"official-apps-page"},D6={class:"page-container"},N6={key:0,class:"loading"},M6={key:1,class:"error"},P6={key:2,class:"empty"},L6={key:3},O6={key:0,class:"app-section"},F6={class:"apps-grid"},V6={key:1,class:"app-section"},B6={class:"apps-grid"},j6={key:4,class:"list-footer"},q6={class:"footer-stats"},H6={class:"stat-item"},z6={class:"stat-value"},W6={class:"stat-item"},K6={class:"stat-value"},G6={class:"stat-item"},Q6={class:"stat-value"},J6=Xe({__name:"OfficialApps",setup(e){const t=k([]),s=k(!0),o=k(""),a=ve(()=>t.value.sort((d,p)=>d.name.localeCompare(p.name))),l=ve(()=>a.value.filter(d=>d.path&&d.path.length>0)),i=ve(()=>a.value.filter(d=>!d.path||d.path.length===0)),r=async()=>{s.value=!0,o.value="";try{const d=await te.getStoreApps();t.value=d}catch(d){console.error("加载应用列表失败:",d),o.value="加载应用列表失败,请检查服务是否运行",t.value=[]}finally{s.value=!1}},c=async d=>{console.log(`应用 ${d} 已更新`),await r()};return vt(()=>{r()}),(d,p)=>(u(),f("div",U6,[n("div",D6,[p[8]||(p[8]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"来自官方"),n("p",{class:"page-description"},"浏览和下载经过 QiuChenly 认证的可信来源应用")],-1)),s.value?(u(),f("div",N6,[...p[0]||(p[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载应用中...",-1)])])):o.value?(u(),f("div",M6,[n("p",null,h(o.value),1),n("button",{onClick:r,class:"btn btn-primary"},"重试")])):a.value.length===0?(u(),f("div",P6,[m(b,{icon:"fluent-color:shield-checkmark-24",class:"empty-icon"}),p[1]||(p[1]=n("p",null,"没有找到来自官方的应用",-1)),p[2]||(p[2]=n("p",{class:"empty-hint"},"当前没有可用的应用更新",-1))])):(u(),f("div",L6,[l.value.length>0?(u(),f("div",O6,[p[3]||(p[3]=n("h3",{class:"section-title"},"已安装的应用",-1)),n("div",F6,[(u(!0),f(ge,null,Ee(l.value,v=>(u(),Ke(Eo,{key:v.bundleId,app:v,mode:"list",onUpdated:c},null,8,["app"]))),128))])])):T("",!0),i.value.length>0?(u(),f("div",V6,[p[4]||(p[4]=n("h3",{class:"section-title"},"未在此Mac上安装",-1)),n("div",B6,[(u(!0),f(ge,null,Ee(i.value,v=>(u(),Ke(Eo,{key:v.bundleId,app:v,mode:"list",onUpdated:c},null,8,["app"]))),128))])])):T("",!0)])),a.value.length>0?(u(),f("div",j6,[n("div",q6,[n("span",H6,[p[5]||(p[5]=n("span",{class:"stat-label"},"总计:",-1)),n("span",z6,h(a.value.length),1)]),n("span",W6,[p[6]||(p[6]=n("span",{class:"stat-label"},"已安装:",-1)),n("span",K6,h(l.value.length),1)]),n("span",G6,[p[7]||(p[7]=n("span",{class:"stat-label"},"未安装:",-1)),n("span",Q6,h(i.value.length),1)])])])):T("",!0)])]))}}),Z6=tt(J6,[["__scopeId","data-v-7fd628ad"]]),X6={class:"discussion-forums-page"},Y6={class:"page-container"},eS={key:0,class:"loading"},tS={key:1,class:"error"},sS={key:2,class:"empty"},nS={key:3,class:"forums-grid"},oS=["onClick"],aS={class:"forum-icon-wrapper"},lS={class:"forum-icon"},iS=["src","alt","onLoad","onError"],rS={class:"forum-info"},cS={class:"forum-name"},uS={class:"forum-bundle-id"},dS={key:0,class:"forum-stats"},fS={class:"stat-item"},pS={class:"stat-item"},vS={key:1,class:"forum-status-disabled"},mS=["onClick","disabled"],hS={key:4,class:"list-footer"},gS={class:"footer-stats"},yS={class:"stat-item"},bS={class:"stat-value"},_S=Xe({__name:"DiscussionForums",setup(e){const t=as(),s=k([]),o=k(!0),a=k(""),l=k(new Map),i=Kt(),r=async()=>{try{const w=await te.getForumPermissions();l.value.clear(),w.forEach(C=>{l.value.set(C.bundleId,C)})}catch(w){console.error("加载讨论区权限失败:",w),l.value.clear()}},c=async()=>{o.value=!0,a.value="";try{const C=(await te.getApps()).filter(K=>K.path&&K.path.length>0),$=C.map(K=>K.bundleId),A=await te.getForumPermissionsBatch($),x=new Map;A.forEach(K=>{x.set(K.bundleId,K)});const M=C.map(K=>{const W=x.get(K.bundleId);return{bundleId:K.bundleId,name:K.name,iconUrl:te.getAppIconUrl(K.bundleId),iconLoaded:!1,iconError:!1,enabled:!!W,requested:!1,todayPostCount:(W==null?void 0:W.todayPostCount)??0,totalPostCount:(W==null?void 0:W.totalPostCount)??0}});s.value=M,s.value.sort((K,W)=>K.name.localeCompare(W.name)),await g()}catch(w){console.error("加载应用列表失败:",w),a.value="加载应用列表失败,请检查服务是否运行",s.value=[]}finally{o.value=!1}},d=w=>{const C=s.value.find($=>$.bundleId===w);C&&(C.iconLoaded=!0)},p=w=>{const C=s.value.find($=>$.bundleId===w);C&&(C.iconError=!0,C.iconLoaded=!0)},v=w=>{const C=s.value.find($=>$.bundleId===w);C&&C.enabled&&t.push(`/discussion/${w}`)},g=async()=>{const C=s.value.filter($=>!$.enabled).map(async $=>{try{const A=await te.checkUserRequestStatus($.bundleId);$.requested=A.hasRequest&&A.status===ps.PENDING}catch(A){console.error(`检查讨论区 ${$.bundleId} 申请状态失败:`,A),$.requested=!1}});await Promise.all(C)},_=async w=>{var $,A;const C=s.value.find(x=>x.bundleId===w);if(!(!C||C.requested))try{const x=await te.requestForumOpen(w,C.name);x.success?(C.requested=!0,i.success("申请提交成功,等待管理员审核")):i.error(x.message||"申请失败,请稍后重试")}catch(x){console.error("申请开放失败:",x);const M=((A=($=x.response)==null?void 0:$.data)==null?void 0:A.message)||x.message||"申请失败,请稍后重试";i.error(M)}};return vt(async()=>{await r(),await c()}),(w,C)=>(u(),f(ge,null,[n("div",X6,[n("div",Y6,[C[4]||(C[4]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"讨论区"),n("p",{class:"page-description"},"浏览和参与已安装应用的讨论")],-1)),o.value?(u(),f("div",eS,[...C[0]||(C[0]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载板块中...",-1)])])):a.value?(u(),f("div",tS,[n("p",null,h(a.value),1),n("button",{onClick:c,class:"btn btn-primary"},"重试")])):s.value.length===0?(u(),f("div",sS,[m(b,{icon:"fluent-color:chat-bubbles-question-24",class:"empty-icon"}),C[1]||(C[1]=n("p",null,"没有找到讨论板块",-1)),C[2]||(C[2]=n("p",{class:"empty-hint"},"系统中没有已安装的应用",-1))])):(u(),f("div",nS,[(u(!0),f(ge,null,Ee(s.value,$=>(u(),f("div",{key:$.bundleId,class:$e(["forum-card",{disabled:!$.enabled}]),onClick:A=>$.enabled?v($.bundleId):null},[n("div",aS,[n("div",lS,[$.iconUrl?Qe((u(),f("img",{key:0,src:$.iconUrl,alt:$.name,onLoad:A=>d($.bundleId),onError:A=>p($.bundleId)},null,40,iS)),[[gs,$.iconLoaded&&!$.iconError]]):T("",!0),Qe(n("div",{class:"icon-placeholder"},h($.name.charAt(0).toUpperCase()),513),[[gs,!$.iconUrl||!$.iconLoaded||$.iconError]])])]),n("div",rS,[n("h3",cS,h($.name),1),n("p",uS,h($.bundleId),1),$.enabled&&($.todayPostCount!==void 0||$.totalPostCount!==void 0)?(u(),f("div",dS,[n("span",fS,[m(b,{icon:"fluent-color:news-28",class:"stat-icon"}),n("span",null,"今日发帖:"+h($.todayPostCount??0),1)]),n("span",pS,[m(b,{icon:"fluent-color:reward-24",class:"stat-icon"}),n("span",null,"总发帖数:"+h($.totalPostCount??0),1)])])):T("",!0),$.enabled?T("",!0):(u(),f("p",vS,"未开放")),$.enabled?T("",!0):(u(),f("button",{key:2,class:"request-open-btn",onClick:Be(A=>_($.bundleId),["stop"]),disabled:$.requested},h($.requested?"等待申请结果中":"申请开放"),9,mS))])],10,oS))),128))])),s.value.length>0?(u(),f("div",hS,[n("div",gS,[n("span",yS,[C[3]||(C[3]=n("span",{class:"stat-label"},"总计:",-1)),n("span",bS,h(s.value.length),1)])])])):T("",!0)])]),m(ds,{toasts:Z(i).toasts.value,onRemove:Z(i).removeToast},null,8,["toasts","onRemove"])],64))}}),wS=tt(_S,[["__scopeId","data-v-62d30533"]]),kS={class:"dialog-header"},$S={class:"header-icon"},CS={class:"dialog-content"},IS={class:"report-info-section"},SS={class:"section-title"},AS={class:"info-grid"},xS={class:"info-row"},TS={class:"info-value"},ES={class:"info-row"},RS={class:"info-value"},US={class:"info-row full-width"},DS={class:"info-content"},NS={class:"report-type-section"},MS={class:"section-title"},PS={class:"report-types"},LS=["onClick"],OS={class:"type-label"},FS={class:"report-comment-section"},VS={class:"section-title"},BS={class:"char-count"},jS={class:"dialog-footer"},qS=["disabled"],HS=Xe({__name:"ReportDialog",props:{visible:{type:Boolean,default:!1},reportInfo:{default:null}},emits:["close","submit"],setup(e,{emit:t}){const s=e,o=t,a=[{value:"pornography",...un.pornography},{value:"fraud",...un.fraud},{value:"malicious_drainage",...un.malicious_drainage},{value:"abuse",...un.abuse},{value:"trolling",...un.trolling},{value:"against_values",...un.against_values}],l=k([]),i=k("");at(()=>s.visible,p=>{p&&(l.value=[],i.value="")});const r=p=>{const v=l.value.indexOf(p);v>-1?l.value.splice(v,1):l.value.push(p)},c=()=>{o("close")},d=()=>{l.value.length===0||!s.reportInfo||o("submit",l.value,i.value,s.reportInfo)};return(p,v)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"dialog-fade"},{default:pt(()=>{var g,_,w;return[e.visible?(u(),f("div",{key:0,class:"dialog-overlay",onClick:Be(c,["self"])},[n("div",{class:"dialog-container",onClick:v[1]||(v[1]=Be(()=>{},["stop"]))},[n("div",kS,[n("div",$S,[m(b,{icon:"mdi:flag"})]),v[2]||(v[2]=n("h2",{class:"dialog-title"},"举报内容",-1)),n("button",{class:"dialog-close",onClick:c,"aria-label":"关闭"},[m(b,{icon:"mdi:close"})])]),n("div",CS,[n("div",IS,[n("div",SS,[m(b,{icon:"mdi:information-outline",class:"title-icon"}),v[3]||(v[3]=n("span",null,"被举报信息",-1))]),n("div",AS,[n("div",xS,[v[4]||(v[4]=n("span",{class:"info-label"},"用户ID",-1)),n("span",TS,h(((g=e.reportInfo)==null?void 0:g.userId)||"-"),1)]),n("div",ES,[v[5]||(v[5]=n("span",{class:"info-label"},"用户昵称",-1)),n("span",RS,h(((_=e.reportInfo)==null?void 0:_.userName)||"-"),1)]),n("div",US,[v[6]||(v[6]=n("span",{class:"info-label"},"内容",-1)),n("div",DS,h(((w=e.reportInfo)==null?void 0:w.content)||"-"),1)])])]),n("div",NS,[n("div",MS,[m(b,{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",PS,[(u(),f(ge,null,Ee(a,C=>n("button",{key:C.value,type:"button",class:$e(["report-type-btn",{active:l.value.includes(C.value)}]),onClick:$=>r(C.value)},[m(b,{icon:C.icon,class:"type-icon"},null,8,["icon"]),n("span",OS,h(C.label),1),l.value.includes(C.value)?(u(),Ke(b,{key:0,icon:"mdi:check-circle",class:"check-icon"})):T("",!0)],10,LS)),64))])]),n("div",FS,[n("div",VS,[m(b,{icon:"mdi:comment-text-outline",class:"title-icon"}),v[9]||(v[9]=n("span",null,"补充说明(可选)",-1))]),Qe(n("textarea",{"onUpdate:modelValue":v[0]||(v[0]=C=>i.value=C),class:"comment-textarea",placeholder:"请详细描述举报原因,帮助我们更好地处理...",rows:"4",maxlength:"500"},null,512),[[ot,i.value]]),n("div",BS,h(i.value.length)+"/500",1)])]),n("div",jS,[n("button",{class:"btn btn-secondary",onClick:c},"取消"),n("button",{class:"btn btn-primary",onClick:d,disabled:l.value.length===0},[m(b,{icon:"mdi:send",class:"btn-icon"}),v[10]||(v[10]=Ce(" 提交举报 ",-1))],8,qS)])])])):T("",!0)]}),_:1})]))}}),zd=tt(HS,[["__scopeId","data-v-0628add9"]]),zS={class:"upload-progress-dialog"},WS={class:"dialog-header"},KS={class:"dialog-content"},GS={class:"progress-info"},QS={class:"progress-text"},JS={class:"progress-bar-container"},ZS={class:"progress-bar"},XS={class:"progress-percent"},YS={key:0,class:"error-message"},eA={class:"dialog-footer"},tA=Xe({__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,a=()=>{s.cancellable&&!s.completed&&o("cancel")},l=()=>{o("close")};return(i,r)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"upload-progress-overlay",onClick:Be(a,["self"])},[n("div",zS,[n("div",WS,[n("h3",null,h(e.title),1),e.cancellable?(u(),f("button",{key:0,class:"close-btn",onClick:a},[m(b,{icon:"mdi:close"})])):T("",!0)]),n("div",KS,[n("div",GS,[m(b,{icon:"mdi:cloud-upload",class:"progress-icon"}),n("span",QS,h(e.statusText),1)]),n("div",JS,[n("div",ZS,[n("div",{class:"progress-fill",style:Lt({width:`${e.progress}%`})},null,4)]),n("span",XS,h(e.progress)+"%",1)]),e.error?(u(),f("div",YS,[m(b,{icon:"mdi:alert-circle",class:"error-icon"}),n("span",null,h(e.error),1)])):T("",!0)]),n("div",eA,[e.cancellable&&!e.completed?(u(),f("button",{key:0,class:"btn btn-secondary",onClick:a}," 取消 ")):T("",!0),e.completed||e.error?(u(),f("button",{key:1,class:"btn btn-primary",onClick:l}," 确定 ")):T("",!0)])])])):T("",!0)]),_:1})]))}}),sA=tt(tA,[["__scopeId","data-v-e6e5d333"]]),nA={class:"discussion-forum-page"},oA={class:"page-container"},aA={class:"page-header"},lA={class:"header-buttons"},iA={key:0,class:"header-content"},rA={class:"app-header"},cA={class:"app-icon-wrapper"},uA={class:"app-icon"},dA=["src","alt"],fA={class:"app-title-info"},pA={class:"page-title"},vA={class:"page-description"},mA={key:0,class:"forum-stats"},hA={class:"stat-item"},gA={class:"stat-item"},yA={key:1,class:"header-content"},bA={key:0,class:"loading"},_A={key:1,class:"error"},wA={key:2,class:"discussion-content"},kA={class:"create-post-section"},$A={class:"section-header"},CA={class:"sort-selector"},IA={key:0,class:"post-form-container"},SA={class:"post-form-header"},AA={class:"post-form"},xA={class:"form-row"},TA={class:"form-row"},EA={class:"form-actions"},RA={class:"upload-area"},UA=["disabled"],DA=["disabled"],NA={key:0,class:"upload-count"},MA=["disabled"],PA={key:0,class:"attachment-preview-list"},LA=["src"],OA=["onClick"],FA={key:0,class:"attachment-error"},VA={class:"file-name"},BA={class:"file-size"},jA=["onClick"],qA={key:0,class:"attachment-error"},HA={key:0,class:"posts-list"},zA=["onClick"],WA={class:"post-header"},KA={class:"post-title"},GA={class:"post-meta"},QA=["onMouseenter"],JA={class:"author-avatar"},ZA={class:"post-author clickable"},XA={class:"post-time"},YA={class:"post-content-preview"},ex={class:"post-footer"},tx={class:"post-stats"},sx={class:"stat-item"},nx={class:"post-actions"},ox=["onClick","disabled"],ax=["onClick","disabled"],lx=["onClick"],ix={key:1,class:"empty-discussion"},rx=Xe({__name:"DiscussionForum",setup(e){const t=as(),s=Wn(),o=Kt(),a=Kn(),l=k(null),i=k(!0),r=k(""),c=k(!1),d=k(!1),p=k([]),v=k(null),g=k("time"),_=[{value:"time",label:"按时间",icon:"fluent-color:clock-24"},{value:"lastReply",label:"按最后回复",icon:"fluent-color:mail-clock-32"}],w=k(null),C=k(""),$=k(""),A=k([]),x=k([]),M=k(null),K=k(null),W=k(!1),z=k(!1),re=k(null),V=k(!1),q=k(void 0),Q=k(""),E=k(""),L=k(""),X=k(null),O=ve(()=>s.params.bundleId),Y=ve(()=>l.value?te.getAppIconUrl(l.value.bundleId):""),ne=async U=>{try{const F=await te.getForumPermission(U);F?v.value=F:v.value={bundleId:U,appName:"",enabled:!1,postCount:0,todayPostCount:0,totalPostCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}catch(F){console.error("加载讨论区权限失败:",F),v.value={bundleId:U,appName:"",enabled:!1,postCount:0,todayPostCount:0,totalPostCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}},ue=async()=>{if(O.value)try{const U=await te.getForumPosts(O.value,1,20,g.value);p.value=U.posts||[]}catch(U){console.error("加载帖子列表失败:",U),p.value=[]}},oe=()=>{ue()},ke=async()=>{if(!O.value){r.value="无效的应用标识符",i.value=!1;return}i.value=!0,r.value="";try{if(await ne(O.value),!v.value||!v.value.enabled){r.value="该讨论区暂未开放,请等待管理员启用",i.value=!1;return}l.value=await te.getApp(O.value),c.value=!1,d.value=!1,await ue()}catch(U){console.error("加载应用信息失败:",U),r.value="加载应用信息失败,请检查服务是否运行",l.value=null}finally{i.value=!1}},je=()=>{t.push("/discussion")},ze=()=>{t.push("/")},Re=U=>{t.push(`/discussion/${O.value}/post/${U}`)},we=U=>U.length<=150?U:U.substring(0,150)+"...",Ne=async U=>{var Pe,Ve;const F=p.value.find(Ue=>Ue.id===U);if(!F||!O.value||w.value===U)return;const pe=F.userLikeStatus==="liked"?"cancel":"like";w.value=U,a.show(pe==="cancel"?"取消点赞中...":"点赞中...");try{const Ue=await te.likeForumPost(O.value,U,pe);Ue.success?(F.userLikeStatus=Ue.userLikeStatus,F.likeCount=Ue.likeCount,F.dislikeCount=Ue.dislikeCount,pe==="cancel"?o.success("已取消点赞"):o.success("点赞成功")):o.error(Ue.message||"点赞失败")}catch(Ue){console.error("点赞失败:",Ue),o.error(((Ve=(Pe=Ue.response)==null?void 0:Pe.data)==null?void 0:Ve.message)||Ue.message||"点赞失败")}finally{w.value=null,a.hide()}},Je=async U=>{var Pe,Ve;const F=p.value.find(Ue=>Ue.id===U);if(!F||!O.value||w.value===U)return;const pe=F.userLikeStatus==="disliked"?"cancel":"dislike";w.value=U,a.show(pe==="cancel"?"取消点踩中...":"点踩中...");try{const Ue=await te.likeForumPost(O.value,U,pe);Ue.success?(F.userLikeStatus=Ue.userLikeStatus,F.likeCount=Ue.likeCount,F.dislikeCount=Ue.dislikeCount,pe==="cancel"?o.success("已取消点踩"):o.success("点踩成功")):o.error(Ue.message||"点踩失败")}catch(Ue){console.error("点踩失败:",Ue),o.error(((Ve=(Pe=Ue.response)==null?void 0:Pe.data)==null?void 0:Ve.message)||Ue.message||"点踩失败")}finally{w.value=null,a.hide()}},We=ve(()=>C.value.trim().length>0&&($.value.trim().length>0||A.value.length>0||x.value.length>0)),ae=()=>{var U;(U=M.value)==null||U.click()},xe=()=>{var U;(U=K.value)==null||U.click()},be=U=>{const F=U.target,G=Array.from(F.files||[]),pe=10*1024*1024;G.forEach(Pe=>{if(A.value.length>=5)return;if(Pe.size>pe){A.value.push({file:Pe,preview:"",error:"图片大小不能超过10MB"});return}const Ve=new FileReader;Ve.onload=Ue=>{var ft;const Ye=A.value.findIndex(rt=>rt.file===Pe);Ye>=0&&(A.value[Ye].preview=(ft=Ue.target)==null?void 0:ft.result)},Ve.readAsDataURL(Pe),A.value.push({file:Pe,preview:""})}),F.value=""},De=U=>{const F=U.target,G=Array.from(F.files||[]),pe=20*1024*1024;G.forEach(Pe=>{if(!(x.value.length>=5)){if(Pe.size>pe){x.value.push({file:Pe,error:"文件大小不能超过20MB"});return}x.value.push({file:Pe})}}),F.value=""},qe=U=>{A.value.splice(U,1)},P=U=>{x.value.splice(U,1)},R=k(!1),S=k(0),J=k("正在上传..."),ee=k(""),I=async()=>{var U,F,G,pe,Pe,Ve,Ue,Ye;if(!(!We.value||!O.value)){R.value=!0,S.value=0,J.value="正在上传文件...",ee.value="";try{const ft=[],rt=A.value.length+x.value.length;let yt=0;for(let Nt=0;Nt<A.value.length;Nt++){const ks=A.value[Nt];J.value=`正在上传图片 ${Nt+1}/${A.value.length}...`;const Mt=await te.uploadImageAttachment(ks.file,$s=>{const sn=$s/100;S.value=Math.round((yt+sn)/rt*100)});if(Mt.success&&((U=Mt.data)!=null&&U.attachmentId))ft.push(Mt.data.attachmentId),yt++;else throw new Error(Mt.message||((F=Mt.data)==null?void 0:F.message)||"图片上传失败")}for(let Nt=0;Nt<x.value.length;Nt++){const ks=x.value[Nt];J.value=`正在上传文件 ${Nt+1}/${x.value.length}...`;const Mt=await te.uploadFileAttachment(ks.file,$s=>{const sn=$s/100;S.value=Math.round((yt+sn)/rt*100)});if(Mt.success&&((G=Mt.data)!=null&&G.attachmentId))ft.push(Mt.data.attachmentId),yt++;else throw new Error(Mt.message||((pe=Mt.data)==null?void 0:pe.message)||"文件上传失败")}J.value="正在发布帖子...",S.value=90;const fs=await te.createForumPost(O.value,C.value.trim(),$.value.trim(),ft.length>0?ft:void 0);fs.success&&((Pe=fs.data)!=null&&Pe.postId)?(S.value=100,J.value="发布成功!",await new Promise(Nt=>setTimeout(Nt,500)),await ue(),C.value="",$.value="",A.value=[],x.value=[],W.value=!1,R.value=!1,o.success("帖子发布成功")):(ee.value=fs.message||((Ve=fs.data)==null?void 0:Ve.message)||"发帖失败,请稍后重试",J.value="发布失败")}catch(ft){console.error("发帖异常:",ft),ee.value=((Ye=(Ue=ft.response)==null?void 0:Ue.data)==null?void 0:Ye.message)||ft.message||"发帖失败,请稍后重试",J.value="发布失败"}}},y=()=>{R.value=!1,S.value=0,ee.value=""},N=()=>{R.value=!1,S.value=0,ee.value=""},le=()=>{W.value=!1},ie=U=>{const F=p.value.find(G=>G.id===U);F&&(re.value={userId:F.author,userName:F.author,content:F.content,type:"post",postId:F.id},z.value=!0)},Me=async(U,F,G)=>{var pe,Pe;if(!(!O.value||!G.type||!G.postId)){a.show("提交举报中...");try{let Ve="";if(G.type==="post"?Ve=G.postId:(G.type==="reply"||G.type==="nestedReply")&&(Ve=G.replyId||""),!Ve){console.error("无法确定举报目标ID");return}const Ue=await te.submitReport(G.type,Ve,O.value,G.postId,U,G.content,F||void 0);Ue.success?(z.value=!1,o.success("举报提交成功")):o.error(Ue.message||"举报失败")}catch(Ve){console.error("举报异常:",Ve),o.error(((Pe=(pe=Ve.response)==null?void 0:pe.data)==null?void 0:Pe.message)||Ve.message||"举报失败")}finally{a.hide()}}},Ie=U=>typeof U.author=="object"&&U.author!==null?U.author.id||"":typeof U.author=="string"?U.author:"",Le=U=>{if(typeof U.author=="object"&&U.author!==null){const F=U.author;return F.nickName||F.username||""}return typeof U.author=="string"?U.author:""},He=async U=>{try{const F=await te.getUserInfo(U);if(F&&F.avatar)return await Cd(F.avatar,F.nickName||F.username)}catch(F){console.error("获取用户信息失败:",F)}return""},Ge=async(U,F,G)=>{X.value&&clearTimeout(X.value),Q.value=F,E.value=G,L.value="",He(F).then(pe=>{pe?L.value=pe:L.value=G?`https://ui-avatars.com/api/?name=${encodeURIComponent(G)}&background=random&size=200`:"https://ui-avatars.com/api/?name=User&background=random&size=200"}),X.value=window.setTimeout(()=>{const pe=U.target.getBoundingClientRect();q.value={x:pe.left-100,y:pe.bottom+8},V.value=!0},200)},me=k(null),Ze=()=>{X.value&&(clearTimeout(X.value),X.value=null),me.value&&(clearTimeout(me.value),me.value=null),me.value=window.setTimeout(()=>{V.value&&(V.value=!1)},200)},ut=()=>{me.value&&(clearTimeout(me.value),me.value=null)},dt=()=>{X.value&&(clearTimeout(X.value),X.value=null),me.value&&(clearTimeout(me.value),me.value=null),V.value=!1,L.value=""},kt=(U,F)=>{t.push(`/messages?userId=${U}&userName=${encodeURIComponent(F)}`)},St=(U,F)=>{console.log("拉黑用户:",U,F),console.log(`已拉黑用户:${F}`)},he=U=>{const F=new Date(U),pe=new Date().getTime()-F.getTime(),Pe=Math.floor(pe/(1e3*60)),Ve=Math.floor(pe/(1e3*60*60)),Ue=Math.floor(pe/(1e3*60*60*24));return Pe<60?`${Pe}分钟前`:Ve<24?`${Ve}小时前`:Ue<7?`${Ue}天前`:F.toLocaleDateString("zh-CN")},j=U=>U<1024?`${U} B`:U<1024*1024?`${(U/1024).toFixed(1)} KB`:`${(U/(1024*1024)).toFixed(1)} MB`;return vt(()=>{ke()}),(U,F)=>(u(),f("div",nA,[n("div",oA,[n("div",aA,[n("div",lA,[n("button",{class:"back-button",onClick:je},[m(b,{icon:"mdi:arrow-left",class:"back-icon"}),F[7]||(F[7]=n("span",null,"返回讨论区",-1))]),n("button",{class:"home-button",onClick:ze},[m(b,{icon:"fluent-color:home-48",class:"home-icon"}),F[8]||(F[8]=n("span",null,"首页",-1))])]),l.value?(u(),f("div",iA,[n("div",rA,[n("div",cA,[n("div",uA,[Y.value?Qe((u(),f("img",{key:0,src:Y.value,alt:l.value.name,onLoad:F[0]||(F[0]=G=>c.value=!0),onError:F[1]||(F[1]=G=>d.value=!0)},null,40,dA)),[[gs,c.value&&!d.value]]):T("",!0),Qe(n("div",{class:"icon-placeholder"},h(l.value.name.charAt(0).toUpperCase()),513),[[gs,!Y.value||!c.value||d.value]])])]),n("div",fA,[n("h1",pA,h(l.value.name),1),n("p",vA,h(l.value.bundleId),1),v.value?(u(),f("div",mA,[n("span",hA,[m(b,{icon:"fluent-color:news-28",class:"stat-icon"}),n("span",null,"今日发帖:"+h(v.value.todayPostCount??0),1)]),n("span",gA,[m(b,{icon:"fluent-color:reward-24",class:"stat-icon"}),n("span",null,"总发帖数:"+h(v.value.totalPostCount??0),1)])])):T("",!0)])])])):(u(),f("div",yA,[...F[9]||(F[9]=[n("h1",{class:"page-title"},"讨论区",-1)])]))]),i.value?(u(),f("div",bA,[...F[10]||(F[10]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):r.value?(u(),f("div",_A,[n("p",null,h(r.value),1),n("button",{onClick:ke,class:"btn btn-primary"},"重试")])):l.value?(u(),f("div",wA,[n("div",kA,[n("div",$A,[W.value?T("",!0):(u(),f("button",{key:0,class:"create-post-btn",onClick:F[2]||(F[2]=G=>W.value=!0)},[m(b,{icon:"mdi:plus",class:"btn-icon"}),F[11]||(F[11]=n("span",null,"发帖",-1))])),n("div",CA,[F[12]||(F[12]=n("label",{class:"sort-label"},"排序方式:",-1)),m(Es,{modelValue:g.value,"onUpdate:modelValue":[F[3]||(F[3]=G=>g.value=G),oe],options:_},null,8,["modelValue"])])])]),m(It,{name:"post-form-slide"},{default:pt(()=>[W.value?(u(),f("div",IA,[n("div",SA,[F[13]||(F[13]=n("h3",null,"发布新帖子",-1)),n("button",{class:"close-form-btn",onClick:le},[m(b,{icon:"mdi:close"})])]),n("div",AA,[n("div",xA,[Qe(n("input",{"onUpdate:modelValue":F[4]||(F[4]=G=>C.value=G),class:"post-title-input",placeholder:"请输入帖子标题...",maxlength:"100"},null,512),[[ot,C.value]])]),n("div",TA,[Qe(n("textarea",{"onUpdate:modelValue":F[5]||(F[5]=G=>$.value=G),class:"post-content-input",placeholder:"写下你想说的...",rows:"4",maxlength:"2000"},null,512),[[ot,$.value]])]),n("div",EA,[n("div",RA,[n("input",{ref_key:"postImageInput",ref:M,type:"file",accept:"image/*",multiple:"",onChange:be,style:{display:"none"}},null,544),n("input",{ref_key:"postFileInput",ref:K,type:"file",multiple:"",onChange:De,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:ae,disabled:A.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(b,{icon:"mdi:image-outline",class:"btn-icon"}),F[14]||(F[14]=Ce(" 图片 ",-1))],8,UA),n("button",{class:"upload-btn",onClick:xe,disabled:x.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(b,{icon:"mdi:file-outline",class:"btn-icon"}),F[15]||(F[15]=Ce(" 文件 ",-1))],8,DA),A.value.length>0||x.value.length>0?(u(),f("span",NA,h(A.value.length+x.value.length)+" 个附件 ",1)):T("",!0)]),n("button",{class:"submit-post-btn",onClick:I,disabled:!We.value},[m(b,{icon:"mdi:send",class:"btn-icon"}),F[16]||(F[16]=Ce(" 发布帖子 ",-1))],8,MA)]),A.value.length>0||x.value.length>0?(u(),f("div",PA,[(u(!0),f(ge,null,Ee(A.value,(G,pe)=>(u(),f("div",{key:`post-img-${pe}`,class:"attachment-preview-item"},[n("img",{src:G.preview,alt:"预览图"},null,8,LA),n("button",{class:"remove-attachment-btn",onClick:Pe=>qe(pe)},[m(b,{icon:"mdi:close"})],8,OA),G.error?(u(),f("div",FA,h(G.error),1)):T("",!0)]))),128)),(u(!0),f(ge,null,Ee(x.value,(G,pe)=>(u(),f("div",{key:`post-file-${pe}`,class:"attachment-preview-item file"},[m(b,{icon:"mdi:file",class:"file-icon"}),n("span",VA,h(G.file.name),1),n("span",BA,h(j(G.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:Pe=>P(pe)},[m(b,{icon:"mdi:close"})],8,jA),G.error?(u(),f("div",qA,h(G.error),1)):T("",!0)]))),128))])):T("",!0)])])):T("",!0)]),_:1}),p.value.length>0?(u(),f("div",HA,[(u(!0),f(ge,null,Ee(p.value,G=>(u(),f("div",{key:G.id,class:"post-card",onClick:pe=>Re(G.id)},[n("div",WA,[n("h3",KA,h(G.title),1),n("div",GA,[n("div",{class:"author-wrapper",onMouseenter:Be(pe=>Ge(pe,Ie(G),Le(G)),["stop"]),onMouseleave:Be(Ze,["stop"])},[n("div",JA,[m(Ft,{"avatar-id":G.authorAvatar||(typeof G.author=="object"&&G.author!==null?G.author.avatar:void 0),"user-name":Le(G),size:"small"},null,8,["avatar-id","user-name"]),F[17]||(F[17]=n("div",{class:"online-indicator"},null,-1))]),n("span",ZA,h(Le(G)),1)],40,QA),n("span",XA,h(he(G.publishTime)),1)])]),n("div",YA,[n("p",null,h(we(G.content)),1)]),n("div",ex,[n("div",tx,[n("span",sx,[m(b,{icon:"mdi:comment-outline",class:"stat-icon"}),n("span",null,h(G.replyCount)+" 回复",1)])]),n("div",nx,[n("button",{class:$e(["action-btn",{active:G.userLikeStatus==="liked"}]),onClick:Be(pe=>Ne(G.id),["stop"]),disabled:w.value===G.id},[m(b,{icon:G.userLikeStatus==="liked"?"mdi:thumb-up":"mdi:thumb-up-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(G.likeCount),1)],10,ox),n("button",{class:$e(["action-btn",{active:G.userLikeStatus==="disliked"}]),onClick:Be(pe=>Je(G.id),["stop"]),disabled:w.value===G.id},[m(b,{icon:G.userLikeStatus==="disliked"?"mdi:thumb-down":"mdi:thumb-down-outline",class:"action-icon"},null,8,["icon"]),n("span",null,h(G.dislikeCount),1)],10,ax),n("button",{class:"action-btn report-btn",onClick:Be(pe=>ie(G.id),["stop"])},[m(b,{icon:"mdi:flag-outline",class:"action-icon"}),F[18]||(F[18]=n("span",null,"举报",-1))],8,lx)])])],8,zA))),128))])):(u(),f("div",ix,[m(b,{icon:"fluent-color:chat-bubbles-question-24",class:"empty-icon"}),F[19]||(F[19]=n("p",null,"暂无讨论内容",-1)),F[20]||(F[20]=n("p",{class:"empty-hint"},"还没有人发布帖子",-1))]))])):T("",!0)]),m(zd,{visible:z.value,"report-info":re.value,onClose:F[6]||(F[6]=G=>z.value=!1),onSubmit:Me},null,8,["visible","report-info"]),m(Ci,{visible:V.value,"user-id":Q.value,"user-name":E.value,"avatar-url":L.value,position:q.value,onClose:dt,onSendMessage:kt,onBlockUser:St,onMouseEnter:ut},null,8,["visible","user-id","user-name","avatar-url","position"]),m(sA,{visible:R.value,progress:S.value,title:J.value,"status-text":J.value,error:ee.value,completed:S.value===100&&!ee.value,cancellable:S.value<100&&!ee.value,onCancel:y,onClose:N},null,8,["visible","progress","title","status-text","error","completed","cancellable"]),m(ds,{toasts:Z(o).toasts.value,onRemove:Z(o).removeToast},null,8,["toasts","onRemove"])]))}}),cx=tt(rx,[["__scopeId","data-v-cca2a5d5"]]),ux={class:"post-detail-page"},dx={class:"page-container"},fx={class:"page-header"},px={class:"header-buttons"},vx={key:0,class:"loading"},mx={key:1,class:"error"},hx={key:2,class:"post-detail-content"},gx={key:0,class:"forum-breadcrumb"},yx={class:"forum-icon-wrapper"},bx={class:"forum-icon"},_x=["src","alt"],wx={class:"forum-name"},kx={class:"post-breadcrumb-title"},$x={class:"post-main"},Cx={class:"post-header"},Ix={class:"post-title"},Sx={class:"post-meta"},Ax={class:"author-avatar"},xx={class:"post-author clickable"},Tx={class:"post-time"},Ex={class:"post-content"},Rx={key:0,class:"post-attachments"},Ux={key:0,class:"post-images"},Dx={key:1,class:"post-files"},Nx=["onClick"],Mx={class:"attachment-name"},Px={class:"attachment-size"},Lx={class:"post-actions"},Ox=["disabled"],Fx=["disabled"],Vx={class:"replies-section"},Bx={class:"replies-header"},jx={class:"reply-form-container"},qx={class:"reply-form"},Hx={class:"form-avatar"},zx={class:"form-content"},Wx={class:"form-actions"},Kx={class:"upload-area"},Gx=["disabled"],Qx=["disabled"],Jx={key:0,class:"upload-count"},Zx=["disabled"],Xx={key:0,class:"attachment-preview-list"},Yx=["src"],e7=["onClick"],t7={key:0,class:"attachment-error"},s7={class:"file-name"},n7={class:"file-size"},o7=["onClick"],a7={key:0,class:"attachment-error"},l7={key:0,class:"replies-list"},i7={class:"reply-avatar"},r7={class:"reply-content-wrapper"},c7={class:"reply-header"},u7=["onMouseenter"],d7={class:"reply-author clickable"},f7={key:1,class:"reply-to"},p7=["onMouseenter"],v7={class:"reply-time"},m7={class:"reply-content"},h7={key:0,class:"reply-attachments"},g7={key:0,class:"reply-images"},y7={key:1,class:"reply-files"},b7=["onClick"],_7={class:"attachment-name"},w7={class:"attachment-size"},k7={class:"reply-actions"},$7=["onClick"],C7=["onClick"],I7={key:0,class:"nested-reply-form"},S7={class:"form-content"},A7=["placeholder"],x7={class:"form-actions"},T7={class:"upload-area"},E7=["disabled"],R7=["disabled"],U7={class:"nested-reply-actions"},D7=["onClick","disabled"],N7={key:0,class:"attachment-preview-list"},M7=["src"],P7=["onClick"],L7={class:"file-name"},O7={class:"file-size"},F7=["onClick"],V7={key:1,class:"nested-replies"},B7={class:"nested-reply-avatar"},j7={class:"nested-reply-content-wrapper"},q7={class:"nested-reply-header"},H7=["onMouseenter"],z7={class:"nested-reply-author clickable"},W7={key:0,class:"reply-to"},K7=["onMouseenter","onClick"],G7={class:"nested-reply-time"},Q7={class:"nested-reply-content"},J7={key:0,class:"reply-attachments"},Z7={key:0,class:"reply-images"},X7={key:1,class:"reply-files"},Y7=["onClick"],eT={class:"attachment-name"},tT={class:"attachment-size"},sT={class:"nested-reply-actions"},nT=["onClick"],oT=["onClick"],aT={key:1,class:"replies-pagination"},lT=["disabled"],iT={class:"pagination-info"},rT=["disabled"],cT={key:2,class:"empty-replies"},uT=Xe({__name:"PostDetail",setup(e){const t=as(),s=Wn(),o=Kt(),a=Kn(),{user:l}=qs(),i=k(null),r=k(null),c=k(!0),d=k(""),p=k(!1),v=k([]),g=k([]),_=k(0),w=k(!1),C=k(!1),$=k(new Map),A=k(1),x=k(50),M=k(0),K=ve(()=>Math.ceil(M.value/x.value)),W=ve(()=>s.params.bundleId),z=ve(()=>s.params.postId),re=ve(()=>r.value?te.getAppIconUrl(r.value.bundleId):""),V=k(""),q=k([]),Q=k([]),E=k(null),L=k(null),X=k(null),O=k(null),Y=k(null),ne=k(""),ue=k(!1),oe=k(!1),ke=k([]),je=k([]),ze=k(null),Re=k(null),we=k(!1),Ne=k(null),Je=k(!1),We=k(void 0),ae=k(""),xe=k(""),be=k(void 0),De=k(null),qe=k(null),P=ve(()=>be.value),R=ve(()=>q.value||[]),S=ve(()=>Q.value||[]),J=ve(()=>ke.value||[]),ee=ve(()=>je.value||[]),I=async fe=>{try{const se=await te.getForumPermission(fe);return se||{bundleId:fe,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}catch(se){return console.error("加载讨论区权限失败:",se),{bundleId:fe,appName:"",enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}}},y=async()=>{if(!z.value||!W.value){d.value="无效的帖子ID或应用ID",c.value=!1;return}c.value=!0,d.value="";try{const fe=await I(W.value);if(!fe||!fe.enabled){d.value="该讨论区暂未开放,请等待管理员启用",c.value=!1;return}try{r.value=await te.getApp(W.value),w.value=!1,C.value=!1}catch(se){console.error("加载应用信息失败:",se)}try{const se=await te.getForumPost(W.value,z.value,A.value,x.value);if(se){if(i.value=se,se.replyTotal!==void 0&&(M.value=se.replyTotal),se.replyPage!==void 0&&(A.value=se.replyPage),se.attachments&&he(se.attachments).catch(Oe=>{console.warn("预加载帖子图片失败:",Oe)}),se.replies){for(const Oe of se.replies)if(Oe.attachments&&he(Oe.attachments).catch(Fe=>{console.warn("预加载回帖图片失败:",Fe)}),Oe.nestedReplies)for(const Fe of Oe.nestedReplies)Fe.attachments&&he(Fe.attachments).catch(Te=>{console.warn("预加载楼中楼回复图片失败:",Te)})}}else d.value="帖子不存在"}catch(se){console.error("加载帖子失败:",se),d.value="加载帖子失败",i.value=null}}catch(fe){console.error("加载帖子失败:",fe),d.value="加载帖子失败",i.value=null}finally{c.value=!1}},N=async()=>{if(!(!W.value||!z.value||!i.value))try{const fe=await te.getForumPost(W.value,z.value,A.value,x.value);if(fe&&(i.value.replies=fe.replies,i.value.replyCount=fe.replyCount,fe.replyTotal!==void 0&&(M.value=fe.replyTotal),fe.replyPage!==void 0&&(A.value=fe.replyPage),fe.replies)){for(const se of fe.replies)if(se.attachments&&he(se.attachments).catch(Oe=>{console.warn("预加载回帖图片失败:",Oe)}),se.nestedReplies)for(const Oe of se.nestedReplies)Oe.attachments&&he(Oe.attachments).catch(Fe=>{console.warn("预加载楼中楼回复图片失败:",Fe)})}}catch(fe){console.error("刷新回复列表失败:",fe)}},le=async fe=>{if(!(!W.value||!z.value)){A.value=fe;try{const se=await te.getForumPost(W.value,z.value,A.value,x.value);if(se&&i.value){if(i.value.replies=se.replies,se.replyTotal!==void 0&&(M.value=se.replyTotal),se.replies){for(const Fe of se.replies)if(Fe.attachments&&he(Fe.attachments).catch(Te=>{console.warn("预加载回帖图片失败:",Te)}),Fe.nestedReplies)for(const Te of Fe.nestedReplies)Te.attachments&&he(Te.attachments).catch(_e=>{console.warn("预加载楼中楼回复图片失败:",_e)})}const Oe=document.querySelector(".replies-section");Oe&&Oe.scrollIntoView({behavior:"smooth",block:"start"})}}catch(se){console.error("加载回复分页失败:",se),o.error("加载回复失败")}}},ie=()=>{t.push(`/discussion/${W.value}`)},Me=()=>{t.push("/")},Ie=async()=>{var Oe,Fe;if(!i.value||!W.value||!z.value)return;const se=i.value.userLikeStatus==="liked"?"cancel":"like";a.show(se==="cancel"?"取消点赞中...":"点赞中...");try{const Te=await te.likeForumPost(W.value,z.value,se);Te.success&&i.value?(i.value.userLikeStatus=Te.userLikeStatus,i.value.likeCount=Te.likeCount,i.value.dislikeCount=Te.dislikeCount,se==="cancel"?o.success("已取消点赞"):o.success("点赞成功")):o.error(Te.message||"点赞失败")}catch(Te){console.error("点赞失败:",Te),o.error(((Fe=(Oe=Te.response)==null?void 0:Oe.data)==null?void 0:Fe.message)||Te.message||"点赞失败")}finally{a.hide()}},Le=async()=>{var Oe,Fe;if(!i.value||!W.value||!z.value)return;const se=i.value.userLikeStatus==="disliked"?"cancel":"dislike";a.show(se==="cancel"?"取消点踩中...":"点踩中...");try{const Te=await te.likeForumPost(W.value,z.value,se);Te.success&&i.value?(i.value.userLikeStatus=Te.userLikeStatus,i.value.likeCount=Te.likeCount,i.value.dislikeCount=Te.dislikeCount,se==="cancel"?o.success("已取消点踩"):o.success("点踩成功")):o.error(Te.message||"点踩失败")}catch(Te){console.error("点踩失败:",Te),o.error(((Fe=(Oe=Te.response)==null?void 0:Oe.data)==null?void 0:Fe.message)||Te.message||"点踩失败")}finally{a.hide()}},He=fe=>{const se=new Date(fe),Fe=new Date().getTime()-se.getTime(),Te=Math.floor(Fe/(1e3*60)),_e=Math.floor(Fe/(1e3*60*60)),Se=Math.floor(Fe/(1e3*60*60*24));return Te<60?`${Te}分钟前`:_e<24?`${_e}小时前`:Se<7?`${Se}天前`:se.toLocaleDateString("zh-CN")},Ge=fe=>fe<1024?`${fe} B`:fe<1024*1024?`${(fe/1024).toFixed(1)} KB`:`${(fe/(1024*1024)).toFixed(1)} MB`,me=fe=>fe.filter(se=>se.type==="image"),Ze=fe=>fe.filter(se=>se.type!=="image"),ut=fe=>{var se,Oe;return typeof fe=="string"?fe:fe&&typeof fe=="object"?((se=fe._id)==null?void 0:se.toString())||((Oe=fe.id)==null?void 0:Oe.toString())||fe.toString():String(fe)},dt=fe=>{const se=me(fe),Oe=[];for(const Fe of se){const Te=ut(Fe),_e=$.value.get(Te);_e&&Oe.push(_e)}return Oe},kt=fe=>fe.attachments?dt(fe.attachments):[],St=fe=>fe.attachments?dt(fe.attachments):[],he=async fe=>{const se=me(fe);for(const Oe of se){const Fe=ut(Oe);if(!$.value.has(Fe))try{const Te=await te.getAttachmentImage(Fe);Te&&$.value.set(Fe,Te)}catch(Te){console.warn(`预加载图片失败 ${Fe}:`,Te)}}},j=async(fe,se)=>{const Oe=me(fe),Fe=[];for(const Te of Oe){const _e=ut(Te);let Se=$.value.get(_e);if(!Se)try{Se=await te.getAttachmentImage(_e),Se&&$.value.set(_e,Se)}catch(nt){console.warn(`加载图片失败 ${_e}:`,nt);continue}Se&&Fe.push({url:Se,size:Te.size})}Fe.length>0&&(v.value=Fe.map(Te=>Te.url),g.value=Fe,_.value=Math.min(se,Fe.length-1),p.value=!0)},U=async(fe,se)=>{fe.attachments&&await j(fe.attachments,se)},F=async(fe,se)=>{fe.attachments&&await j(fe.attachments,se)},G=async fe=>{fe.type!=="image"&&Pe(fe)},pe=()=>{p.value=!1,v.value=[],g.value=[],_.value=0},Pe=fe=>{const se=document.createElement("a");se.href=fe.url||"#",se.download=fe.name,se.target="_blank",document.body.appendChild(se),se.click(),document.body.removeChild(se)},Ve=ve(()=>V.value.trim().length>0||q.value.length>0||Q.value.length>0),Ue=ve(()=>ne.value.trim().length>0||ke.value.length>0||je.value.length>0),Ye=()=>{var fe;(fe=E.value)==null||fe.click()},ft=()=>{var fe;(fe=L.value)==null||fe.click()},rt=()=>{var fe;(fe=ze.value)==null||fe.click()},yt=()=>{var fe;(fe=Re.value)==null||fe.click()},fs=fe=>{const se=fe.target,Oe=Array.from(se.files||[]),Fe=10*1024*1024;Oe.forEach(Te=>{if(q.value.length>=5)return;if(Te.size>Fe){q.value.push({file:Te,preview:"",error:"图片大小不能超过10MB"});return}const _e=new FileReader;_e.onload=Se=>{var $t;const nt=q.value.findIndex(ss=>ss.file===Te);nt>=0&&(q.value[nt].preview=($t=Se.target)==null?void 0:$t.result)},_e.readAsDataURL(Te),q.value.push({file:Te,preview:""})}),se.value=""},Nt=fe=>{const se=fe.target,Oe=Array.from(se.files||[]),Fe=20*1024*1024;Oe.forEach(Te=>{if(!(Q.value.length>=5)){if(Te.size>Fe){Q.value.push({file:Te,error:"文件大小不能超过20MB"});return}Q.value.push({file:Te})}}),se.value=""},ks=fe=>{const se=fe.target,Oe=Array.from(se.files||[]),Fe=10*1024*1024;Oe.forEach(Te=>{if(ke.value.length>=3)return;if(Te.size>Fe){ke.value.push({file:Te,preview:"",error:"图片大小不能超过10MB"});return}const _e=new FileReader;_e.onload=Se=>{var $t;const nt=ke.value.findIndex(ss=>ss.file===Te);nt>=0&&(ke.value[nt].preview=($t=Se.target)==null?void 0:$t.result)},_e.readAsDataURL(Te),ke.value.push({file:Te,preview:""})}),se.value=""},Mt=fe=>{const se=fe.target,Oe=Array.from(se.files||[]),Fe=20*1024*1024;Oe.forEach(Te=>{if(!(je.value.length>=3)){if(Te.size>Fe){je.value.push({file:Te,error:"文件大小不能超过20MB"});return}je.value.push({file:Te})}}),se.value=""},$s=fe=>{q.value.splice(fe,1)},sn=fe=>{Q.value.splice(fe,1)},Wa=fe=>{ke.value.splice(fe,1)},Ka=fe=>{je.value.splice(fe,1)},Ga=async()=>{var fe,se,Oe,Fe;if(!(!Ve.value||!i.value||!W.value||!z.value||ue.value)){ue.value=!0,a.show("发表回复中...");try{const Te=[],_e=q.value.length+Q.value.length;let Se=0;for(let $t=0;$t<q.value.length;$t++){const ss=q.value[$t],wt=await te.uploadImageAttachment(ss.file);if(wt.success&&((fe=wt.data)!=null&&fe.attachmentId))Te.push(wt.data.attachmentId),Se++;else throw new Error(wt.message||((se=wt.data)==null?void 0:se.message)||"图片上传失败")}for(let $t=0;$t<Q.value.length;$t++){const ss=Q.value[$t],wt=await te.uploadFileAttachment(ss.file);if(wt.success&&((Oe=wt.data)!=null&&Oe.attachmentId))Te.push(wt.data.attachmentId),Se++;else throw new Error(wt.message||((Fe=wt.data)==null?void 0:Fe.message)||"文件上传失败")}const nt=await te.createForumReply(W.value,z.value,V.value.trim(),void 0,void 0,Te.length>0?Te:void 0);nt.success?(await N(),V.value="",q.value=[],Q.value=[],o.success("回复成功"),setTimeout(()=>{const $t=document.querySelector(".replies-section");$t&&$t.scrollIntoView({behavior:"smooth",block:"start"})},100)):(console.error("回复失败:",nt.message),o.error(nt.message||"回复失败"))}catch(Te){console.error("回复异常:",Te),o.error(Te.message||"回复失败")}finally{ue.value=!1,a.hide()}}},Qn=(fe,se,Oe)=>{var Fe,Te;if(X.value===fe)X.value=null,O.value=null,Y.value=null,ne.value="",ke.value=[],je.value=[];else if(X.value=fe,se&&Oe)O.value=se,Y.value=Oe;else{const _e=(Te=(Fe=i.value)==null?void 0:Fe.replies)==null?void 0:Te.find(Se=>Se.id===fe);_e&&(O.value=_e.replyUser.id,Y.value=_e.replyUser.nickName||_e.replyUser.username)}},Fo=()=>{X.value=null,O.value=null,Y.value=null,ne.value="",ke.value=[],je.value=[]},Rs=async fe=>{var Oe,Fe,Te,_e,Se;if(!(!Ue.value||!i.value||!W.value||!z.value||oe.value||!((Oe=i.value.replies)!=null&&Oe.find(nt=>nt.id===fe)))){oe.value=!0,a.show("发送回复中...");try{const nt=[];let $t=0;for(let wt=0;wt<ke.value.length;wt++){const $n=ke.value[wt],ns=await te.uploadImageAttachment($n.file);if(ns.success&&((Fe=ns.data)!=null&&Fe.attachmentId))nt.push(ns.data.attachmentId),$t++;else throw new Error(ns.message||((Te=ns.data)==null?void 0:Te.message)||"图片上传失败")}for(let wt=0;wt<je.value.length;wt++){const $n=je.value[wt],ns=await te.uploadFileAttachment($n.file);if(ns.success&&((_e=ns.data)!=null&&_e.attachmentId))nt.push(ns.data.attachmentId),$t++;else throw new Error(ns.message||((Se=ns.data)==null?void 0:Se.message)||"文件上传失败")}const ss=await te.createNestedReply(W.value,z.value,fe,ne.value.trim(),O.value||void 0,Y.value||void 0,nt.length>0?nt:void 0);ss.success?(await N(),Fo(),o.success("回复成功"),setTimeout(()=>{const wt=document.querySelector(`[data-reply-id="${fe}"]`);wt&&wt.scrollIntoView({behavior:"smooth",block:"nearest"})},100)):(console.error("楼中楼回复失败:",ss.message),o.error(ss.message||"回复失败"))}catch(nt){console.error("楼中楼回复异常:",nt),o.error(nt.message||"回复失败")}finally{oe.value=!1,a.hide()}}},Qa=()=>{i.value&&(Ne.value={userId:Jn(i.value),userName:wn(i.value),content:i.value.content,type:"post",postId:i.value.id},we.value=!0)},Ja=fe=>{var Oe;if(!i.value)return;const se=(Oe=i.value.replies)==null?void 0:Oe.find(Fe=>Fe.id===fe);se&&(Ne.value={userId:se.replyUser.id,userName:se.replyUser.nickName||se.replyUser.username,content:se.content,type:"reply",postId:i.value.id,replyId:se.id},we.value=!0)},Za=(fe,se)=>{var Te,_e;if(!i.value)return;const Oe=(Te=i.value.replies)==null?void 0:Te.find(Se=>Se.id===fe);if(!Oe)return;const Fe=(_e=Oe.nestedReplies)==null?void 0:_e.find(Se=>Se.id===se);Fe&&(Ne.value={userId:Fe.replyUser.id,userName:Fe.replyUser.nickName||Fe.replyUser.username,content:Fe.content,type:"nestedReply",postId:i.value.id,replyId:se},we.value=!0)},Xa=async(fe,se,Oe)=>{var Fe,Te;if(!(!W.value||!z.value||!Oe.type)){a.show("提交举报中...");try{let _e="";if(Oe.type==="post"?_e=Oe.postId||z.value:(Oe.type==="reply"||Oe.type==="nestedReply")&&(_e=Oe.replyId||""),!_e){console.error("无法确定举报目标ID");return}const Se=await te.submitReport(Oe.type,_e,W.value,z.value,fe,Oe.content,se||void 0);Se.success?(we.value=!1,o.success("举报提交成功")):o.error(Se.message||"举报失败")}catch(_e){console.error("举报异常:",_e),o.error(((Te=(Fe=_e.response)==null?void 0:Fe.data)==null?void 0:Te.message)||_e.message||"举报失败")}finally{a.hide()}}},Jn=fe=>typeof fe.author=="object"&&fe.author!==null?fe.author.id||"":typeof fe.author=="string"?fe.author:"",wn=fe=>{if(typeof fe.author=="object"&&fe.author!==null){const se=fe.author;return se.nickName||se.username||""}return typeof fe.author=="string"?fe.author:""},ls=async(fe,se,Oe,Fe)=>{De.value&&clearTimeout(De.value),ae.value=se,xe.value=Oe,Fe&&Fe.trim()!==""?be.value=Fe:be.value=void 0,De.value=window.setTimeout(()=>{const Te=fe.target.getBoundingClientRect();We.value={x:Te.left-100,y:Te.bottom+8},Je.value=!0},200)},Hs=()=>{De.value&&(clearTimeout(De.value),De.value=null),qe.value&&(clearTimeout(qe.value),qe.value=null),qe.value=window.setTimeout(()=>{Je.value&&(Je.value=!1)},200)},kn=()=>{qe.value&&(clearTimeout(qe.value),qe.value=null)},Vo=()=>{De.value&&(clearTimeout(De.value),De.value=null),qe.value&&(clearTimeout(qe.value),qe.value=null),Je.value=!1,be.value=void 0},Us=(fe,se)=>{t.push(`/messages?userId=${fe}&userName=${encodeURIComponent(se)}`)},Bo=(fe,se)=>{console.log("拉黑用户:",fe,se),console.log(`已拉黑用户:${se}`)};return vt(()=>{y()}),jn(()=>{$.value.forEach(fe=>{fe.startsWith("blob:")&&URL.revokeObjectURL(fe)}),$.value.clear()}),(fe,se)=>{var Oe,Fe,Te;return u(),f("div",ux,[n("div",dx,[n("div",fx,[n("div",px,[n("button",{class:"back-button",onClick:ie},[m(b,{icon:"mdi:arrow-left",class:"back-icon"}),se[10]||(se[10]=n("span",null,"返回讨论区",-1))]),n("button",{class:"home-button",onClick:Me},[m(b,{icon:"fluent-color:home-48",class:"home-icon"}),se[11]||(se[11]=n("span",null,"首页",-1))])])]),c.value?(u(),f("div",vx,[...se[12]||(se[12]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):d.value?(u(),f("div",mx,[n("p",null,h(d.value),1),n("button",{onClick:y,class:"btn btn-primary"},"重试")])):i.value?(u(),f("div",hx,[r.value?(u(),f("div",gx,[n("div",{class:"forum-info",onClick:ie},[n("div",yx,[n("div",bx,[re.value?Qe((u(),f("img",{key:0,src:re.value,alt:r.value.name,onLoad:se[0]||(se[0]=_e=>w.value=!0),onError:se[1]||(se[1]=_e=>C.value=!0)},null,40,_x)),[[gs,w.value&&!C.value]]):T("",!0),Qe(n("div",{class:"icon-placeholder"},h(r.value.name.charAt(0).toUpperCase()),513),[[gs,!re.value||!w.value||C.value]])])]),n("span",wx,h(r.value.name),1),m(b,{icon:"mdi:chevron-right",class:"breadcrumb-separator"})]),n("span",kx,h(i.value.title),1)])):T("",!0),n("div",$x,[n("div",Cx,[n("h1",Ix,h(i.value.title),1),n("div",Sx,[n("div",{class:"author-wrapper",onMouseenter:se[2]||(se[2]=Be(_e=>ls(_e,Jn(i.value),wn(i.value)),["stop"])),onMouseleave:Be(Hs,["stop"])},[n("div",Ax,[m(Ft,{userId:Jn(i.value),width:"36px",height:"36px"},null,8,["userId"]),se[13]||(se[13]=n("div",{class:"online-indicator"},null,-1))]),n("span",xx,h(wn(i.value)),1)],32),n("span",Tx,h(He(i.value.publishTime)),1)])]),n("div",Ex,[n("p",null,h(i.value.content),1),i.value.attachments&&i.value.attachments.length>0?(u(),f("div",Rx,[me(i.value.attachments).length>0?(u(),f("div",Ux,[m(Dn,{images:dt(i.value.attachments),"show-index":!1,columns:4,"max-width":120,onImageClick:se[3]||(se[3]=_e=>j(i.value.attachments,_e))},null,8,["images"])])):T("",!0),Ze(i.value.attachments).length>0?(u(),f("div",Dx,[(u(!0),f(ge,null,Ee(Ze(i.value.attachments),_e=>(u(),f("div",{key:_e.id,class:$e(["attachment-item",{clickable:!0}]),onClick:Se=>G(_e)},[m(b,{icon:"mdi:file",class:"attachment-icon"}),n("span",Mx,h(_e.name),1),n("span",Px,h(Ge(_e.size)),1),m(b,{icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"})],8,Nx))),128))])):T("",!0)])):T("",!0)]),n("div",Lx,[n("button",{class:$e(["action-btn",{active:i.value.userLikeStatus==="liked"}]),onClick:Ie,disabled:Z(a).loadingState.visible},[m(b,{icon:"mdi:thumb-up",class:"action-icon"}),n("span",null,h(i.value.likeCount),1)],10,Ox),n("button",{class:$e(["action-btn",{active:i.value.userLikeStatus==="disliked"}]),onClick:Le,disabled:Z(a).loadingState.visible},[m(b,{icon:"mdi:thumb-down",class:"action-icon"}),n("span",null,h(i.value.dislikeCount),1)],10,Fx),n("button",{class:"action-btn report-btn",onClick:Qa},[m(b,{icon:"mdi:flag-outline",class:"action-icon"}),se[14]||(se[14]=n("span",null,"举报",-1))])])]),n("div",Vx,[n("div",Bx,[n("h2",null,"回帖 ("+h(i.value.replyCount)+")",1)]),n("div",jx,[n("div",qx,[n("div",Hx,[m(Ft,{userId:(Oe=Z(l))==null?void 0:Oe._id,"user-name":((Fe=Z(l))==null?void 0:Fe.nickName)||((Te=Z(l))==null?void 0:Te.username)||"我",width:"36px",height:"36px"},null,8,["userId","user-name"])]),n("div",zx,[Qe(n("textarea",{"onUpdate:modelValue":se[4]||(se[4]=_e=>V.value=_e),class:"reply-textarea",placeholder:"写下你的回复...",rows:"3",maxlength:"1000"},null,512),[[ot,V.value]]),n("div",Wx,[n("div",Kx,[n("input",{ref_key:"imageInput",ref:E,type:"file",accept:"image/*",multiple:"",onChange:fs,style:{display:"none"}},null,544),n("input",{ref_key:"fileInput",ref:L,type:"file",multiple:"",onChange:Nt,style:{display:"none"}},null,544),n("button",{class:"upload-btn",onClick:Ye,disabled:R.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(b,{icon:"mdi:image-outline",class:"btn-icon"}),se[15]||(se[15]=Ce(" 图片 ",-1))],8,Gx),n("button",{class:"upload-btn",onClick:ft,disabled:S.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(b,{icon:"mdi:file-outline",class:"btn-icon"}),se[16]||(se[16]=Ce(" 文件 ",-1))],8,Qx),R.value.length>0||S.value.length>0?(u(),f("span",Jx,h(R.value.length+S.value.length)+" 个附件 ",1)):T("",!0)]),n("button",{class:"submit-reply-btn",onClick:Ga,disabled:!Ve.value||ue.value},[m(b,{icon:ue.value?"mdi:loading":"mdi:send",class:$e(["btn-icon",{spinning:ue.value}])},null,8,["icon","class"]),Ce(" "+h(ue.value?"发表中...":"发表回复"),1)],8,Zx)]),R.value.length>0||S.value.length>0?(u(),f("div",Xx,[(u(!0),f(ge,null,Ee(R.value,(_e,Se)=>(u(),f("div",{key:`img-${Se}`,class:"attachment-preview-item"},[n("img",{src:_e.preview,alt:"预览图"},null,8,Yx),n("button",{class:"remove-attachment-btn",onClick:nt=>$s(Se)},[m(b,{icon:"mdi:close"})],8,e7),_e.error?(u(),f("div",t7,h(_e.error),1)):T("",!0)]))),128)),(u(!0),f(ge,null,Ee(S.value,(_e,Se)=>(u(),f("div",{key:`file-${Se}`,class:"attachment-preview-item file"},[m(b,{icon:"mdi:file",class:"file-icon"}),n("span",s7,h(_e.file.name),1),n("span",n7,h(Ge(_e.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:nt=>sn(Se)},[m(b,{icon:"mdi:close"})],8,o7),_e.error?(u(),f("div",a7,h(_e.error),1)):T("",!0)]))),128))])):T("",!0)])])]),i.value.replies&&i.value.replies.length>0?(u(),f("div",l7,[(u(!0),f(ge,null,Ee(i.value.replies,_e=>(u(),f("div",{key:_e.id,class:"reply-item"},[n("div",i7,[m(Ft,{"avatar-id":_e.replyUser.avatar,"user-name":_e.replyUser.nickName||_e.replyUser.username,userId:_e.replyUser.id,size:"medium"},null,8,["avatar-id","user-name","userId"]),se[17]||(se[17]=n("div",{class:"online-indicator"},null,-1))]),n("div",r7,[n("div",c7,[n("div",{class:"author-wrapper",onMouseenter:Be(Se=>ls(Se,_e.replyUser.id,_e.replyUser.nickName||_e.replyUser.username,_e.replyUser.avatar),["stop"]),onMouseleave:Be(Hs,["stop"])},[n("span",d7,h(_e.replyUser.nickName||_e.replyUser.username),1),_e.replyUser.role==="admin"||_e.replyUser.role==="qiuchenly"?(u(),f("span",{key:0,class:$e(["role-tag",{"role-admin":_e.replyUser.role==="admin","role-qiuchenly":_e.replyUser.role==="qiuchenly"}])},h(_e.replyUser.role==="admin"?"管理员":"qiuchenly"),3)):T("",!0),_e.replyToUser?(u(),f("span",f7,[se[18]||(se[18]=Ce(" 回复了 ",-1)),n("span",{class:"reply-to-name clickable",onMouseenter:Be(Se=>ls(Se,_e.replyToUser.id,_e.replyToUser.nickName||_e.replyToUser.username,_e.replyToUser.avatar),["stop"]),onMouseleave:Be(Hs,["stop"])}," @"+h(_e.replyToUser.nickName||_e.replyToUser.username),41,p7)])):T("",!0)],40,u7),n("span",v7,h(He(_e.date)),1)]),n("div",m7,[n("p",null,h(_e.content),1),_e.attachments&&_e.attachments.length>0?(u(),f("div",h7,[me(_e.attachments).length>0?(u(),f("div",g7,[m(Dn,{images:kt(_e),"show-index":!1,columns:4,"max-width":120,onImageClick:Se=>U(_e,Se)},null,8,["images","onImageClick"])])):T("",!0),Ze(_e.attachments).length>0?(u(),f("div",y7,[(u(!0),f(ge,null,Ee(Ze(_e.attachments),Se=>(u(),f("div",{key:Se.id,class:$e(["attachment-item",{clickable:!0}]),onClick:nt=>G(Se)},[m(b,{icon:"mdi:file",class:"attachment-icon"}),n("span",_7,h(Se.name),1),n("span",w7,h(Ge(Se.size)),1),m(b,{icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"})],8,b7))),128))])):T("",!0)])):T("",!0)]),n("div",k7,[n("button",{class:"action-btn small",onClick:Se=>Qn(_e.id)},[m(b,{icon:"mdi:reply-outline",class:"action-icon"}),se[19]||(se[19]=n("span",null,"回复",-1))],8,$7),n("button",{class:"action-btn small report-btn",onClick:Se=>Ja(_e.id)},[m(b,{icon:"mdi:flag-outline",class:"action-icon"}),se[20]||(se[20]=n("span",null,"举报",-1))],8,C7)]),X.value===_e.id?(u(),f("div",I7,[se[23]||(se[23]=n("div",{class:"form-avatar"},[n("div",{class:"avatar-placeholder"},"我")],-1)),n("div",S7,[Qe(n("textarea",{"onUpdate:modelValue":se[5]||(se[5]=Se=>ne.value=Se),class:"reply-textarea",placeholder:`回复 ${Y.value||_e.replyUser.nickName||_e.replyUser.username}:`,rows:"2",maxlength:"500"},null,8,A7),[[ot,ne.value]]),n("div",x7,[n("div",T7,[n("input",{ref_for:!0,ref_key:"nestedImageInput",ref:ze,type:"file",accept:"image/*",multiple:"",onChange:ks,style:{display:"none"}},null,544),n("input",{ref_for:!0,ref_key:"nestedFileInput",ref:Re,type:"file",multiple:"",onChange:Mt,style:{display:"none"}},null,544),n("button",{class:"upload-btn small",onClick:rt,disabled:J.value.length>=3},[m(b,{icon:"mdi:image-outline",class:"btn-icon"}),se[21]||(se[21]=Ce(" 图片 ",-1))],8,E7),n("button",{class:"upload-btn small",onClick:yt,disabled:ee.value.length>=3},[m(b,{icon:"mdi:file-outline",class:"btn-icon"}),se[22]||(se[22]=Ce(" 文件 ",-1))],8,R7)]),n("div",U7,[n("button",{class:"cancel-btn",onClick:Fo}," 取消 "),n("button",{class:"submit-reply-btn small",onClick:Se=>Rs(_e.id),disabled:!Ue.value||oe.value},[m(b,{icon:oe.value?"mdi:loading":"mdi:send",class:$e(["btn-icon",{spinning:oe.value}])},null,8,["icon","class"]),Ce(" "+h(oe.value?"发送中...":"发送"),1)],8,D7)])]),J.value.length>0||ee.value.length>0?(u(),f("div",N7,[(u(!0),f(ge,null,Ee(J.value,(Se,nt)=>(u(),f("div",{key:`nested-img-${nt}`,class:"attachment-preview-item"},[n("img",{src:Se.preview,alt:"预览图"},null,8,M7),n("button",{class:"remove-attachment-btn",onClick:$t=>Wa(nt)},[m(b,{icon:"mdi:close"})],8,P7)]))),128)),(u(!0),f(ge,null,Ee(ee.value,(Se,nt)=>(u(),f("div",{key:`nested-file-${nt}`,class:"attachment-preview-item file"},[m(b,{icon:"mdi:file",class:"file-icon"}),n("span",L7,h(Se.file.name),1),n("span",O7,h(Ge(Se.file.size)),1),n("button",{class:"remove-attachment-btn",onClick:$t=>Ka(nt)},[m(b,{icon:"mdi:close"})],8,F7)]))),128))])):T("",!0)])])):T("",!0),_e.nestedReplies&&_e.nestedReplies.length>0?(u(),f("div",V7,[(u(!0),f(ge,null,Ee(_e.nestedReplies,Se=>(u(),f("div",{key:Se.id,class:"nested-reply-item"},[n("div",B7,[m(Ft,{"avatar-id":Se.replyUser.avatar,"user-name":Se.replyUser.nickName||Se.replyUser.username,userId:Se.replyUser.id,size:"small"},null,8,["avatar-id","user-name","userId"]),se[24]||(se[24]=n("div",{class:"online-indicator"},null,-1))]),n("div",j7,[n("div",q7,[n("div",{class:"author-wrapper",onMouseenter:Be(nt=>ls(nt,Se.replyUser.id,Se.replyUser.nickName||Se.replyUser.username,Se.replyUser.avatar),["stop"]),onMouseleave:Be(Hs,["stop"])},[n("span",z7,h(Se.replyUser.nickName||Se.replyUser.username),1),Se.replyUser.role==="admin"||Se.replyUser.role==="qiuchenly"?(u(),f("span",{key:0,class:$e(["role-tag",{"role-admin":Se.replyUser.role==="admin","role-qiuchenly":Se.replyUser.role==="qiuchenly"}])},h(Se.replyUser.role==="admin"?"管理员":"qiuchenly"),3)):T("",!0)],40,H7),Se.replyToUser?(u(),f("span",W7,[se[25]||(se[25]=Ce(" 回复 ",-1)),n("span",{class:"reply-to-name clickable",onMouseenter:Be(nt=>ls(nt,Se.replyToUser.id,Se.replyToUser.nickName||Se.replyToUser.username,Se.replyToUser.avatar),["stop"]),onMouseleave:Be(Hs,["stop"]),onClick:Be(nt=>Qn(_e.id,Se.replyToUser.id,Se.replyToUser.nickName||Se.replyToUser.username),["stop"])}," @"+h(Se.replyToUser.nickName||Se.replyToUser.username),41,K7)])):T("",!0),n("span",G7,h(He(Se.date)),1)]),n("div",Q7,[n("p",null,h(Se.content),1),Se.attachments&&Se.attachments.length>0?(u(),f("div",J7,[me(Se.attachments).length>0?(u(),f("div",Z7,[m(Dn,{images:St(Se),"show-index":!1,columns:4,"max-width":120,onImageClick:nt=>F(Se,nt)},null,8,["images","onImageClick"])])):T("",!0),Ze(Se.attachments).length>0?(u(),f("div",X7,[(u(!0),f(ge,null,Ee(Ze(Se.attachments),nt=>(u(),f("div",{key:nt.id,class:$e(["attachment-item",{clickable:!0}]),onClick:$t=>G(nt)},[m(b,{icon:"mdi:file",class:"attachment-icon"}),n("span",eT,h(nt.name),1),n("span",tT,h(Ge(nt.size)),1),m(b,{icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"})],8,Y7))),128))])):T("",!0)])):T("",!0),n("div",sT,[n("button",{class:"action-btn small",onClick:nt=>Qn(_e.id,Se.replyUser.id,Se.replyUser.nickName||Se.replyUser.username)},[m(b,{icon:"mdi:reply-outline",class:"action-icon"}),se[26]||(se[26]=n("span",null,"回复",-1))],8,nT),n("button",{class:"action-btn small report-btn",onClick:nt=>Za(_e.id,Se.id)},[m(b,{icon:"mdi:flag-outline",class:"action-icon"}),se[27]||(se[27]=n("span",null,"举报",-1))],8,oT)])])])]))),128))])):T("",!0)])]))),128))])):T("",!0),i.value.replies&&i.value.replies.length>0&&K.value>1?(u(),f("div",aT,[n("button",{class:"btn btn-secondary pagination-btn",disabled:A.value===1,onClick:se[6]||(se[6]=_e=>le(A.value-1))}," 上一页 ",8,lT),n("span",iT," 第 "+h(A.value)+" / "+h(K.value)+" 页,共 "+h(M.value)+" 条回复 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:A.value>=K.value,onClick:se[7]||(se[7]=_e=>le(A.value+1))}," 下一页 ",8,rT)])):T("",!0),!i.value.replies||i.value.replies.length===0?(u(),f("div",cT,[...se[28]||(se[28]=[n("p",null,"还没有回帖,快来抢沙发吧!",-1)])])):T("",!0)])])):T("",!0)]),m(Gn,{visible:p.value,"images-info":g.value,"initial-index":_.value,"show-navigation":!0,"show-info":!0,onClose:pe,onIndexChange:se[8]||(se[8]=_e=>_.value=_e)},null,8,["visible","images-info","initial-index"]),m(zd,{visible:we.value,"report-info":Ne.value,onClose:se[9]||(se[9]=_e=>we.value=!1),onSubmit:Xa},null,8,["visible","report-info"]),m(Ci,{visible:Je.value,"user-id":ae.value,"user-name":xe.value,"avatar-id":P.value,position:We.value,onClose:Vo,onSendMessage:Us,onBlockUser:Bo,onMouseEnter:kn},null,8,["visible","user-id","user-name","avatar-id","position"]),m(ds,{toasts:Z(o).toasts.value,onRemove:Z(o).removeToast},null,8,["toasts","onRemove"])])}}}),dT=tt(uT,[["__scopeId","data-v-2619ebfc"]]),fT={class:"input-dialog"},pT={class:"dialog-header"},vT={class:"dialog-title"},mT={class:"dialog-body"},hT={key:0,class:"dialog-message"},gT={key:0,class:"input-label"},yT=["onUpdate:modelValue","placeholder","required","rows"],bT=["onUpdate:modelValue","type","placeholder","required"],_T={class:"dialog-actions"},wT=["disabled"],kT=Xe({__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,a=k({}),l=k([]),i=g=>g.map(_=>({value:_.value,label:_.label,icon:r(_.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=ve(()=>s.fields.every(g=>{const _=a.value[g.key]||"";return g.required&&!_.trim()?!1:g.validator?g.validator(_):!0})),d=()=>{const g={};s.fields.forEach(_=>{g[_.key]=_.value!==void 0?_.value:_.defaultValue||""}),a.value=g};at(()=>s.visible,g=>{g&&(d(),Ct(()=>{l.value[0]&&l.value[0].focus()}))}),at(()=>s.fields,()=>{s.visible&&d()},{deep:!0});const p=()=>{c.value&&o("confirm",{...a.value})},v=()=>{o("cancel")};return(g,_)=>(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"input-dialog-overlay",onClick:Be(v,["self"])},[n("div",fT,[n("div",pT,[n("h3",vT,h(e.title),1),n("button",{class:"close-btn",onClick:v,type:"button"},[m(b,{icon:"mdi:close"})])]),n("div",mT,[e.message?(u(),f("p",hT,h(e.message),1)):T("",!0),(u(!0),f(ge,null,Ee(e.fields,(w,C)=>(u(),f("div",{class:"input-group",key:C},[w.label?(u(),f("label",gT,h(w.label),1)):T("",!0),w.type==="select"?(u(),Ke(Es,{key:1,modelValue:a.value[w.key],"onUpdate:modelValue":$=>a.value[w.key]=$,options:i(w.options||[]),placeholder:w.placeholder||"请选择",class:"input-select"},null,8,["modelValue","onUpdate:modelValue","options","placeholder"])):w.type==="textarea"?Qe((u(),f("textarea",{key:2,"onUpdate:modelValue":$=>a.value[w.key]=$,placeholder:w.placeholder,required:w.required,class:"input-field textarea-field",rows:w.rows||10,onKeyup:mn(v,["esc"]),ref_for:!0,ref:$=>{$&&C===0&&(l.value[0]=$)}},null,40,yT)),[[ot,a.value[w.key]]]):Qe((u(),f("input",{key:3,"onUpdate:modelValue":$=>a.value[w.key]=$,type:w.type||"text",placeholder:w.placeholder,required:w.required,class:"input-field",onKeyup:[mn(p,["enter"]),mn(v,["esc"])],ref_for:!0,ref:$=>{$&&C===0&&(l.value[0]=$)}},null,40,bT)),[[yv,a.value[w.key]]])]))),128))]),n("div",_T,[e.cancelText?(u(),f("button",{key:0,class:"btn btn-outline",onClick:v},h(e.cancelText),1)):T("",!0),n("button",{class:"btn btn-primary",onClick:p,disabled:!c.value},h(e.confirmText),9,wT)])])])):T("",!0)]),_:1})]))}}),pc=tt(kT,[["__scopeId","data-v-87e827f6"]]),$T={class:"user-edit-dialog"},CT={class:"dialog-header"},IT={class:"dialog-body"},ST={key:0,class:"loading-state"},AT={key:1,class:"user-form"},xT={class:"user-header-section"},TT=["src"],ET={key:1,class:"avatar-placeholder"},RT=["disabled"],UT=["disabled"],DT=["disabled"],NT={key:1,class:"avatar-menu-item uploading"},MT={class:"readonly-info"},PT={class:"info-item"},LT={class:"info-value"},OT={class:"info-item"},FT={class:"info-value"},VT={class:"form-grid"},BT={class:"form-item"},jT={class:"input-with-icon"},qT={class:"form-item"},HT={class:"input-with-icon"},zT={class:"form-item"},WT={class:"form-item"},KT={class:"input-with-icon"},GT={class:"form-item"},QT={class:"input-with-icon"},JT={class:"form-item"},ZT={class:"input-with-icon"},XT={key:0,class:"form-item"},YT={class:"form-item"},eE={class:"titles-section"},tE={class:"titles-list"},sE=["onClick"],nE={class:"add-title-input"},oE=["disabled"],aE={class:"dialog-actions"},lE=["disabled"],iE=["src"],rE=Xe({__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,a=k({nickName:"",email:"",avatar:"",gender:"unknown",age:0,exp:0,level:0,role:"user",status:"active",titles:[]}),l=k(""),i=k(null),r=k(null),c=k(null),d=k(null),p=k(""),v=k(!1),g=k(!1),_=k(!1),w=k(null),{toasts:C,success:$,error:A,removeToast:x}=Kt(),M=k(""),K=async()=>{if(a.value.avatar){if(a.value.avatar.startsWith("http://")||a.value.avatar.startsWith("https://")){M.value=a.value.avatar;return}try{const Re=await te.getImage(a.value.avatar,80,200,200);M.value&&M.value.startsWith("blob:")&&URL.revokeObjectURL(M.value),M.value=Re}catch(Re){console.error("获取头像失败:",Re),M.value=""}}else M.value&&M.value.startsWith("blob:")&&URL.revokeObjectURL(M.value),M.value=""},W=()=>{var Re;(Re=i.value)==null||Re.click()},z=async Re=>{var ae;const Ne=(ae=Re.target.files)==null?void 0:ae[0];if(!Ne)return;if(!Ne.type.startsWith("image/")){A("请选择图片文件",2e3);return}const Je=10*1024*1024;if(Ne.size>Je){A("图片大小不能超过10MB",2e3);return}const We=new FileReader;We.onload=xe=>{var be;p.value=(be=xe.target)==null?void 0:be.result},We.readAsDataURL(Ne),d.value=Ne,await re(Ne)},re=async Re=>{var we,Ne,Je;v.value=!0;try{const We=await te.uploadImage("icon",Re);if(We.success&&((we=We.data)!=null&&we.fileId))a.value.avatar=We.data.fileId,$("头像上传成功",2e3);else throw new Error(We.message||"上传头像失败")}catch(We){console.error("上传头像失败:",We);const ae=((Je=(Ne=We.response)==null?void 0:Ne.data)==null?void 0:Je.message)||We.message||"上传头像失败";A(ae,3e3),d.value=null,p.value=""}finally{v.value=!1}},V=()=>{d.value=null,p.value="",a.value.avatar="",i.value&&(i.value.value=""),g.value=!1},q=()=>{w.value&&(clearTimeout(w.value),w.value=null),g.value=!0},Q=()=>{(p.value||M.value)&&(_.value=!0,g.value=!1)},E=Re=>{const we=Re.relatedTarget;we&&c.value&&c.value.contains(we)||(w.value&&clearTimeout(w.value),w.value=window.setTimeout(()=>{g.value=!1},200))},L=()=>{if(!g.value||!r.value||!c.value)return;const Re=r.value.getBoundingClientRect(),we=c.value,Ne=52,Je=we.offsetHeight;let We=Re.right+12,ae=Re.top;We+Ne>window.innerWidth-20&&(We=Re.left-Ne-12),ae+Je>window.innerHeight-20&&(ae=window.innerHeight-Je-20),We<20&&(We=20),ae<20&&(ae=20),we.style.left=`${We}px`,we.style.top=`${ae}px`};at(g,Re=>{Re&&Ct(()=>{L()})});const X=ve(()=>[{value:"user",label:"普通用户",icon:"mdi:account"},{value:"admin",label:"管理员",icon:"mdi:shield-account"}]),O=ve(()=>[{value:"active",label:"正常",icon:"mdi:check-circle"},{value:"locked",label:"锁定",icon:"mdi:lock"},{value:"banned",label:"封禁",icon:"mdi:ban"}]),Y=ve(()=>[{value:"unknown",label:"未知",icon:"mdi:help-circle"},{value:"male",label:"男",icon:"mdi:gender-male"},{value:"female",label:"女",icon:"mdi:gender-female"}]),ne=Re=>Re?new Date(Re).toLocaleString("zh-CN"):"未知",ue=()=>{var we;const Re=l.value.trim();Re&&!((we=a.value.titles)!=null&&we.includes(Re))&&(a.value.titles||(a.value.titles=[]),a.value.titles.push(Re),l.value="")},oe=Re=>{a.value.titles&&a.value.titles.splice(Re,1)},ke=()=>{var Re;s.userData&&(a.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]:[]},d.value=null,p.value="",g.value=!1,(Re=s.userData)!=null&&Re.avatar?K():(M.value&&M.value.startsWith("blob:")&&URL.revokeObjectURL(M.value),M.value=""))};vt(()=>{window.addEventListener("scroll",L,!0),window.addEventListener("resize",L)}),Wt(()=>{window.removeEventListener("scroll",L,!0),window.removeEventListener("resize",L),w.value&&clearTimeout(w.value),M.value&&M.value.startsWith("blob:")&&URL.revokeObjectURL(M.value)}),at(()=>s.visible,Re=>{Re&&(ke(),l.value="")});const je=()=>{o("confirm",a.value)},ze=()=>{o("cancel")};return(Re,we)=>(u(),f(ge,null,[(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>[e.visible?(u(),f("div",{key:0,class:"user-edit-dialog-overlay",onClick:Be(ze,["self"])},[n("div",$T,[n("div",CT,[we[12]||(we[12]=n("h3",{class:"dialog-title"},"编辑用户信息",-1)),n("button",{class:"close-btn",onClick:ze,type:"button"},[m(b,{icon:"mdi:close"})])]),n("div",IT,[e.loading?(u(),f("div",ST,[...we[13]||(we[13]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载用户信息中...",-1)])])):(u(),f("div",AT,[n("div",xT,[n("div",{class:"avatar-section",onMouseenter:q,onMouseleave:E},[n("div",{ref_key:"avatarPreviewRef",ref:r,class:"avatar-preview"},[p.value||M.value?(u(),f("img",{key:0,src:p.value||M.value,alt:"头像预览",class:"avatar-image"},null,8,TT)):(u(),f("div",ET,[m(b,{icon:"mdi:account",class:"placeholder-icon"})]))],512),n("input",{ref_key:"avatarInputRef",ref:i,type:"file",accept:"image/*",onChange:z,class:"file-input",style:{display:"none"}},null,544),(u(),Ke(Xt,{to:"body"},[m(It,{name:"avatar-menu-fade"},{default:pt(()=>[g.value?(u(),f("div",{key:0,ref_key:"avatarMenuRef",ref:c,class:"avatar-menu",onMouseenter:q,onMouseleave:E},[n("button",{type:"button",class:"avatar-menu-item",onClick:Q,disabled:!p.value&&!M.value,title:"预览"},[m(b,{icon:"fluent:eye-24-regular"})],8,RT),n("button",{type:"button",class:"avatar-menu-item",onClick:W,disabled:v.value,title:"更换"},[m(b,{icon:"fluent:image-edit-24-regular"})],8,UT),d.value||a.value.avatar?(u(),f("button",{key:0,type:"button",class:"avatar-menu-item danger",onClick:V,disabled:v.value,title:"清除"},[m(b,{icon:"fluent:delete-24-regular"})],8,DT)):T("",!0),v.value?(u(),f("div",NT,[...we[14]||(we[14]=[n("div",{class:"spinner-small"},null,-1)])])):T("",!0)],544)):T("",!0)]),_:1})]))],32),n("div",MT,[n("div",PT,[we[15]||(we[15]=n("span",{class:"info-label"},"用户ID",-1)),n("span",LT,h(e.userData.id),1)]),n("div",OT,[we[16]||(we[16]=n("span",{class:"info-label"},"注册时间",-1)),n("span",FT,h(ne(e.userData.createdAt)),1)])])]),n("div",VT,[n("div",BT,[we[17]||(we[17]=n("label",{class:"form-label"},"昵称",-1)),n("div",jT,[m(b,{icon:"fluent:person-24-regular",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":we[0]||(we[0]=Ne=>a.value.nickName=Ne),type:"text",placeholder:"请输入昵称",class:"form-input"},null,512),[[ot,a.value.nickName]])])]),n("div",qT,[we[18]||(we[18]=n("label",{class:"form-label"},"邮箱",-1)),n("div",HT,[m(b,{icon:"fluent:mail-24-regular",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":we[1]||(we[1]=Ne=>a.value.email=Ne),type:"email",placeholder:"请输入邮箱",class:"form-input"},null,512),[[ot,a.value.email]])])]),n("div",zT,[we[19]||(we[19]=n("label",{class:"form-label"},"性别",-1)),m(Es,{modelValue:a.value.gender,"onUpdate:modelValue":we[2]||(we[2]=Ne=>a.value.gender=Ne),options:Y.value,placeholder:"请选择性别"},null,8,["modelValue","options"])]),n("div",WT,[we[20]||(we[20]=n("label",{class:"form-label"},"年龄",-1)),n("div",KT,[m(b,{icon:"mdi:calendar",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":we[3]||(we[3]=Ne=>a.value.age=Ne),type:"number",min:"0",max:"150",placeholder:"请输入年龄",class:"form-input"},null,512),[[ot,a.value.age,void 0,{number:!0}]])])]),n("div",GT,[we[21]||(we[21]=n("label",{class:"form-label"},"经验值",-1)),n("div",QT,[m(b,{icon:"mdi:star",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":we[4]||(we[4]=Ne=>a.value.exp=Ne),type:"number",min:"0",placeholder:"请输入经验值",class:"form-input"},null,512),[[ot,a.value.exp,void 0,{number:!0}]])])]),n("div",JT,[we[22]||(we[22]=n("label",{class:"form-label"},"等级",-1)),n("div",ZT,[m(b,{icon:"mdi:trending-up",class:"input-icon"}),Qe(n("input",{"onUpdate:modelValue":we[5]||(we[5]=Ne=>a.value.level=Ne),type:"number",min:"0",placeholder:"请输入等级",class:"form-input"},null,512),[[ot,a.value.level,void 0,{number:!0}]])])]),e.canEditRole?(u(),f("div",XT,[we[23]||(we[23]=n("label",{class:"form-label"},"角色",-1)),m(Es,{modelValue:a.value.role,"onUpdate:modelValue":we[6]||(we[6]=Ne=>a.value.role=Ne),options:X.value,placeholder:"请选择角色"},null,8,["modelValue","options"])])):T("",!0),n("div",YT,[we[24]||(we[24]=n("label",{class:"form-label"},"状态",-1)),m(Es,{modelValue:a.value.status,"onUpdate:modelValue":we[7]||(we[7]=Ne=>a.value.status=Ne),options:O.value,placeholder:"请选择状态"},null,8,["modelValue","options"])])]),n("div",eE,[n("div",tE,[(u(!0),f(ge,null,Ee(a.value.titles,(Ne,Je)=>(u(),f("div",{key:Je,class:"title-tag"},[n("span",null,h(Ne),1),n("button",{type:"button",class:"remove-title-btn",onClick:We=>oe(Je)},[m(b,{icon:"mdi:close"})],8,sE)]))),128)),n("div",nE,[Qe(n("input",{"onUpdate:modelValue":we[8]||(we[8]=Ne=>l.value=Ne),type:"text",placeholder:"添加称号",class:"title-input",onKeyup:mn(ue,["enter"])},null,544),[[ot,l.value]]),n("button",{type:"button",class:"add-title-btn",onClick:ue,disabled:!l.value.trim()},[m(b,{icon:"mdi:plus"})],8,oE)])])])]))]),n("div",aE,[n("button",{class:"btn btn-outline",onClick:ze}," 取消 "),n("button",{class:"btn btn-primary",onClick:je,disabled:e.loading}," 保存 ",8,lE)])])])):T("",!0)]),_:1})])),m(It,{name:"preview-fade"},{default:pt(()=>[_.value?(u(),f("div",{key:0,class:"avatar-preview-modal",onClick:we[11]||(we[11]=Ne=>_.value=!1)},[n("div",{class:"preview-content",onClick:we[10]||(we[10]=Be(()=>{},["stop"]))},[n("img",{src:p.value||M.value,alt:"头像预览"},null,8,iE),n("button",{class:"close-preview-btn",onClick:we[9]||(we[9]=Ne=>_.value=!1)},[m(b,{icon:"mdi:close"})])])])):T("",!0)]),_:1}),m(ds,{toasts:Z(C),onRemove:Z(x)},null,8,["toasts","onRemove"])],64))}}),cE=tt(rE,[["__scopeId","data-v-bc3ad561"]]),uE={class:"post-edit-dialog"},dE={class:"dialog-header"},fE={class:"dialog-body"},pE={key:0,class:"loading-state"},vE={key:1,class:"post-form"},mE={key:0,class:"form-group author-info-section"},hE={class:"author-card"},gE={class:"author-avatar"},yE={class:"author-details"},bE={class:"author-name"},_E={key:0,class:"author-id"},wE={class:"form-group"},kE=["disabled"],$E={class:"form-group"},CE=["disabled"],IE={class:"form-group"},SE={key:0,class:"attachments-list"},AE=["onClick","disabled"],xE=["onClick"],TE={class:"attachment-name"},EE={class:"attachment-size"},RE={key:1,class:"no-attachments"},UE={class:"form-group"},DE={class:"attachment-upload"},NE=["disabled"],ME=["disabled"],PE=["disabled"],LE=["disabled"],OE={key:0,class:"upload-progress"},FE={class:"dialog-actions"},VE=["disabled"],BE=["disabled"],jE={key:0},qE={key:1},HE=Xe({__name:"PostEditDialog",props:{visible:{type:Boolean},postData:{},loading:{type:Boolean,default:!1}},emits:["confirm","cancel"],setup(e,{emit:t}){const s=e,o=t,a=Kt(),l=k({title:"",content:"",attachments:[]}),i=k(!1),r=k(!1),c=k(null),d=k(null),p=k(null);k("");const v=ve(()=>l.value.title.trim().length>0&&l.value.content.trim().length>0),g=V=>{if(V===0)return"0 B";const q=1024,Q=["B","KB","MB","GB"],E=Math.floor(Math.log(V)/Math.log(q));return Math.round(V/Math.pow(q,E)*100)/100+" "+Q[E]},_=()=>{s.postData?l.value={title:s.postData.title||"",content:s.postData.content||"",attachments:s.postData.attachments||[]}:l.value={title:"",content:"",attachments:[]}};at(()=>s.visible,V=>{V&&s.postData&&(console.log("对话框打开,初始化表单数据:",s.postData),_())}),at(()=>s.postData,V=>{s.visible&&V&&(console.log("postData变化更新表单数据:",V),_())},{deep:!0}),at(()=>s.loading,V=>{console.log("loading状态变化:",V)});const w=()=>{var V;(V=c.value)==null||V.click()},C=()=>{var V;(V=d.value)==null||V.click()},$=async V=>{var E,L,X;const q=V.target,Q=(E=q.files)==null?void 0:E[0];if(Q){r.value=!0;try{const O=await te.uploadImageAttachment(Q);O.success&&O.attachmentId?(l.value.attachments.push({id:O.attachmentId,name:Q.name,url:O.url||"",type:"image",size:Q.size}),a.success("图片上传成功")):a.error(O.message||"图片上传失败")}catch(O){console.error("上传图片失败:",O),a.error(((X=(L=O.response)==null?void 0:L.data)==null?void 0:X.message)||O.message||"图片上传失败")}finally{r.value=!1,q&&(q.value="")}}},A=async V=>{var E,L,X;const q=V.target,Q=(E=q.files)==null?void 0:E[0];if(Q){r.value=!0;try{const O=await te.uploadFileAttachment(Q);O.success&&O.attachmentId?(l.value.attachments.push({id:O.attachmentId,name:Q.name,url:O.url||"",type:"file",size:Q.size}),a.success("文件上传成功")):a.error(O.message||"文件上传失败")}catch(O){console.error("上传文件失败:",O),a.error(((X=(L=O.response)==null?void 0:L.data)==null?void 0:X.message)||O.message||"文件上传失败")}finally{r.value=!1,q&&(q.value="")}}},x=V=>{l.value.attachments=l.value.attachments.filter(q=>q.id!==V)},M=()=>{if(!v.value)return;const V=l.value.attachments.map(q=>q.id);o("confirm",{title:l.value.title.trim(),content:l.value.content.trim(),attachmentIds:V})},K=()=>{o("cancel")},W=async V=>{if(V.type==="image"){if(V.id){const q=await te.getAttachmentImage(V.id);q?p.value=q:a.error("图片加载失败")}}else await re(V)},z=()=>{p.value&&(URL.revokeObjectURL(p.value),p.value=null)},re=async V=>{try{const q=await te.getAttachmentDownloadUrl(V.id);if(q){const Q=document.createElement("a");Q.href=q,Q.download=V.name,Q.target="_blank",document.body.appendChild(Q),Q.click(),document.body.removeChild(Q),a.success("文件下载已开始")}else if(V.url){const Q=document.createElement("a");Q.href=V.url,Q.download=V.name,Q.target="_blank",document.body.appendChild(Q),Q.click(),document.body.removeChild(Q),a.success("文件下载已开始")}else a.error("无法获取下载链接")}catch(q){console.error("下载文件失败:",q),a.error("下载文件失败: "+(q.message||"未知错误"))}};return(V,q)=>(u(),f(ge,null,[(u(),Ke(Xt,{to:"body"},[m(It,{name:"fade"},{default:pt(()=>{var Q;return[e.visible?(u(),f("div",{key:0,class:"post-edit-dialog-overlay",onClick:Be(K,["self"])},[n("div",uE,[n("div",dE,[q[2]||(q[2]=n("h3",{class:"dialog-title"},"编辑帖子",-1)),n("button",{class:"close-btn",onClick:K,type:"button"},[m(b,{icon:"mdi:close"})])]),n("div",fE,[s.loading?(u(),f("div",pE,[...q[3]||(q[3]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载帖子详情中...",-1)])])):(u(),f("div",vE,[(Q=s.postData)!=null&&Q.author?(u(),f("div",mE,[q[4]||(q[4]=n("label",{class:"form-label"},"发帖人",-1)),n("div",hE,[n("div",gE,[m(Ft,{"avatar-id":s.postData.author.avatar,"user-name":s.postData.author.name,width:36,height:36},null,8,["avatar-id","user-name"])]),n("div",yE,[n("div",bE,h(s.postData.author.name),1),s.postData.author.id?(u(),f("div",_E," ID: "+h(s.postData.author.id),1)):T("",!0)])])])):T("",!0),n("div",wE,[q[5]||(q[5]=n("label",{class:"form-label"},[Ce("标题 "),n("span",{class:"required"},"*")],-1)),Qe(n("input",{"onUpdate:modelValue":q[0]||(q[0]=E=>l.value.title=E),type:"text",placeholder:"请输入帖子标题",class:"form-input",disabled:i.value},null,8,kE),[[ot,l.value.title]])]),n("div",$E,[q[6]||(q[6]=n("label",{class:"form-label"},[Ce("内容 "),n("span",{class:"required"},"*")],-1)),Qe(n("textarea",{"onUpdate:modelValue":q[1]||(q[1]=E=>l.value.content=E),placeholder:"请输入帖子内容",class:"form-textarea",rows:"15",disabled:i.value},null,8,CE),[[ot,l.value.content]])]),n("div",IE,[q[8]||(q[8]=n("label",{class:"form-label"},"附件",-1)),l.value.attachments&&l.value.attachments.length>0?(u(),f("div",SE,[(u(!0),f(ge,null,Ee(l.value.attachments,E=>(u(),f("div",{key:E.id,class:$e(["attachment-item",{clickable:!0}])},[n("button",{class:"remove-attachment-btn-left",onClick:Be(L=>x(E.id),["stop"]),disabled:i.value,type:"button",title:"删除附件"},[m(b,{icon:"mdi:close"})],8,AE),n("div",{class:"attachment-info",onClick:Be(L=>W(E),["stop"])},[m(b,{icon:E.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",TE,h(E.name),1),n("span",EE,h(g(E.size)),1),E.type==="image"?(u(),Ke(b,{key:0,icon:"mdi:eye-outline",class:"attachment-action-icon",title:"预览图片"})):(u(),Ke(b,{key:1,icon:"mdi:download",class:"attachment-action-icon",title:"下载文件"}))],8,xE)]))),128))])):(u(),f("div",RE,[...q[7]||(q[7]=[n("p",null,"暂无附件",-1)])]))]),n("div",UE,[q[12]||(q[12]=n("label",{class:"form-label"},"添加附件",-1)),n("div",DE,[n("input",{ref_key:"imageInputRef",ref:c,type:"file",accept:"image/*",onChange:$,class:"file-input",style:{display:"none"},disabled:i.value},null,40,NE),n("input",{ref_key:"fileInputRef",ref:d,type:"file",onChange:A,class:"file-input",style:{display:"none"},disabled:i.value},null,40,ME),n("button",{class:"btn btn-outline",onClick:w,disabled:i.value||r.value,type:"button"},[m(b,{icon:"mdi:image",class:"btn-icon"}),q[9]||(q[9]=Ce(" 添加图片 ",-1))],8,PE),n("button",{class:"btn btn-outline",onClick:C,disabled:i.value||r.value,type:"button"},[m(b,{icon:"mdi:file",class:"btn-icon"}),q[10]||(q[10]=Ce(" 添加文件 ",-1))],8,LE)]),r.value?(u(),f("div",OE,[...q[11]||(q[11]=[n("div",{class:"spinner-small"},null,-1),n("span",null,"上传中...",-1)])])):T("",!0)])]))]),n("div",FE,[n("button",{class:"btn btn-outline",onClick:K,disabled:i.value||r.value}," 取消 ",8,VE),n("button",{class:"btn btn-primary",onClick:M,disabled:!v.value||i.value||r.value},[i.value?(u(),f("span",jE,"保存中...")):(u(),f("span",qE,"保存"))],8,BE)])])])):T("",!0)]}),_:1})])),m(Gn,{visible:!!p.value,"image-url":p.value,onClose:z},null,8,["visible","image-url"])],64))}}),zE=tt(HE,[["__scopeId","data-v-0145a47d"]]);function WE(){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})),a=i=>{e.value=!1,s&&(s(i),s=null)},l=()=>{e.value=!1,s&&(s(null),s=null)};return{visible:ve(()=>e.value),config:ve(()=>t.value),show:o,handleConfirm:a,handleCancel:l}}const KE={class:"admin-panel-page"},GE={class:"page-container"},QE={class:"tabs-container"},JE={class:"tabs"},ZE=["onClick"],XE={key:0,class:"tab-badge"},YE={class:"content-area"},e9={key:0,class:"tab-content"},t9={class:"section-header"},s9={class:"header-actions"},n9={class:"table-container"},o9={key:0,class:"loading-state"},a9={key:1,class:"error-state"},l9={class:"data-table"},i9={key:0},r9={colspan:"8",class:"empty-state"},c9={class:"action-buttons"},u9=["onClick"],d9=["onClick"],f9=["onClick"],p9=["onClick"],v9=["onClick"],m9=["onClick"],h9=["onClick"],g9=["onClick"],y9={key:0,class:"pagination"},b9=["disabled"],_9=["disabled"],w9={key:1,class:"tab-content"},k9={class:"section-header"},$9={class:"header-actions"},C9={class:"table-container"},I9={key:0,class:"loading-state"},S9={key:1,class:"error-state"},A9={class:"data-table"},x9={key:0},T9={colspan:"8",class:"empty-state"},E9={class:"post-title-cell"},R9={class:"post-title"},U9={class:"action-buttons"},D9=["onClick"],N9=["onClick"],M9=["onClick"],P9={key:0,class:"pagination"},L9=["disabled"],O9={class:"pagination-info"},F9=["disabled"],V9={key:2,class:"tab-content"},B9={class:"section-header"},j9={class:"header-actions"},q9={class:"violations-list"},H9={key:0,class:"loading-state"},z9={key:1,class:"error-state"},W9={key:0,class:"empty-state"},K9={class:"violation-header"},G9={class:"violation-info"},Q9={class:"violation-type"},J9={class:"violation-id"},Z9={class:"violation-time"},X9={class:"violation-content"},Y9={class:"violation-details"},eR={class:"detail-row"},tR={class:"detail-value"},sR={key:0,class:"detail-row"},nR={class:"detail-value"},oR={class:"detail-row"},aR={class:"report-types-tags"},lR={class:"detail-row"},iR={class:"detail-content"},rR={key:1,class:"detail-row"},cR={class:"detail-content"},uR={key:0,class:"violation-actions"},dR=["onClick"],fR=["onClick"],pR={key:1,class:"pagination"},vR=["disabled"],mR={class:"pagination-info"},hR=["disabled"],gR={key:3,class:"tab-content"},yR={class:"section-header"},bR={class:"header-actions"},_R={class:"violations-list"},wR={key:0,class:"loading-state"},kR={key:1,class:"error-state"},$R={key:0,class:"empty-state"},CR={class:"violation-header"},IR={class:"violation-info"},SR={class:"violation-id"},AR={class:"violation-time"},xR={class:"violation-content"},TR={class:"violation-details"},ER={class:"detail-row"},RR={class:"detail-value-with-icon"},UR=["src","alt"],DR={key:1,class:"app-icon-placeholder-small"},NR={class:"detail-row"},MR={class:"detail-value"},PR={class:"detail-row"},LR={class:"detail-row"},OR={class:"detail-value"},FR={class:"detail-row"},VR={class:"detail-value"},BR={class:"detail-row"},jR={class:"detail-value"},qR={class:"detail-row"},HR={class:"detail-content"},zR={key:0,class:"detail-row"},WR={key:1,class:"detail-row"},KR={class:"attachments-list"},GR=["onClick"],QR={class:"attachment-name"},JR={key:2,class:"detail-row"},ZR={class:"detail-content"},XR={key:3,class:"detail-row"},YR={class:"detail-value"},eU={key:0,class:"violation-actions"},tU=["onClick"],sU=["onClick"],nU={key:1,class:"pagination"},oU=["disabled"],aU={class:"pagination-info"},lU=["disabled"],iU={key:4,class:"tab-content"},rU={class:"sub-tabs"},cU={key:0,class:"sub-tab-badge"},uU={key:0,class:"sub-tab-content"},dU={class:"section-header"},fU={class:"header-actions"},pU={class:"table-container"},vU={class:"data-table"},mU={class:"forum-name-cell"},hU=["src","alt"],gU={key:1,class:"forum-icon-placeholder"},yU={class:"bundle-id"},bU={class:"action-buttons"},_U=["onClick"],wU=["onClick"],kU={key:0,class:"empty-state"},$U={key:1,class:"sub-tab-content"},CU={class:"section-header"},IU={class:"header-info"},SU={class:"header-actions"},AU={class:"table-container"},xU={class:"data-table"},TU={class:"forum-name-cell"},EU=["src","alt"],RU={key:1,class:"forum-icon-placeholder"},UU={class:"bundle-id"},DU={class:"action-buttons"},NU=["onClick"],MU=["onClick"],PU={key:0,class:"empty-state"},LU={key:5,class:"tab-content"},OU=Xe({__name:"AdminPanel",setup(e){const t=k("users"),s=k(""),o=k(""),a=k("all"),l=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"}],d=[{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"}],p=[{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:"issues",label:"问题管理",icon:"fluent-color:person-feedback-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([]),_=k(!1),w=k(""),C=k(1),$=k(20),A=k(0),x=ve(()=>Math.ceil(A.value/$.value)),M=as(),{toasts:K,success:W,error:z,removeToast:re}=Kt(),V=zn(),q=WE(),{isQiuChenLy:Q}=Oo(),E=qd(),L=Kn(),X=k(!1),O=k(null),Y=k(!1),ne=k(!1),ue=k(null),oe=k(!1);let ke=null;const je=()=>{ke&&clearTimeout(ke),ke=setTimeout(()=>{C.value=1,yt()},500)},ze=k([]),Re=k(!1),we=k(""),Ne=k(1),Je=k(20),We=k(0),ae=ve(()=>Math.ceil(We.value/Je.value)),xe=k([]),be=k([]),De=k("forums"),qe=k([]),P=k(!1),R=k(""),S=k(1),J=k(20),ee=k(0),I=ve(()=>Math.ceil(ee.value/J.value)),y=k([]),N=k(!1),le=k(""),ie=k(1),Me=k(20),Ie=k(0),Le=ve(()=>Math.ceil(Ie.value/Me.value)),He=k("all"),Ge=k(!1),me=k(null),Ze=k(""),ut=k("resolved"),dt=k(new Map),kt=ve(()=>g.value),St=ve(()=>ze.value),he=ve(()=>qe.value),j=ve(()=>y.value),U=ve(()=>{let H=[...xe.value];if(i.value){const B=i.value.toLowerCase();H=H.filter(D=>D.appName.toLowerCase().includes(B)||D.bundleId.toLowerCase().includes(B))}return r.value!=="all"&&(H=H.filter(B=>r.value==="enabled"&&B.enabled||r.value==="disabled"&&!B.enabled)),H}),F=H=>te.getAppIconUrl(H),G=ve(()=>be.value.filter(H=>H.status===ps.PENDING)),pe=H=>{switch(H){case ps.PENDING:return"待处理";case ps.APPROVED:return"已批准";case ps.REJECTED:return"已拒绝";default:return H}},Pe=H=>{switch(H){case"admin":return"管理员";case"qiuchenly":return"超级管理员";default:return"用户"}},Ve=H=>{switch(H){case"active":return"正常";case"locked":return"锁定";case"banned":return"封禁";case"deleted":return"已删除";default:return H}},Ue=H=>{switch(H){case"reported":return"已举报";case"deleted":return"已删除";default:return"正常"}},Ye=H=>{switch(H){case"post":return"帖子";case"reply":return"回复";case"nestedReply":return"楼中楼";default:return H}},ft=H=>{switch(H){case"pending":return"待处理";case"resolved":return"已处理";case"rejected":return"已驳回";default:return H}},rt=H=>new Date(H).toLocaleString("zh-CN"),yt=async()=>{_.value=!0,w.value="";try{const H=await te.getUsers(C.value,$.value,s.value||void 0);H.users&&Array.isArray(H.users)?(g.value=H.users.map(B=>{var D;return{id:B.id||B._id||((D=B._id)==null?void 0:D.toString()),username:B.username,nickName:B.nickName,email:B.email,avatar:B.avatar||"",role:B.role||(B.roleWeight>=9999?"qiuchenly":B.roleWeight>=90?"admin":"user"),roleWeight:B.roleWeight,status:B.status||"active",gender:B.gender||"unknown",age:B.age||0,exp:B.exp||0,level:B.level||0,titles:B.titles||[],createdAt:B.createdAt}}),A.value=H.total||0):w.value="加载用户列表失败"}catch(H){w.value=H.message||"加载用户列表失败",z(H.message||"加载用户列表失败",3e3)}finally{_.value=!1}},fs=async()=>{var B,D;const H=await q.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"},...Q.value?[{label:"管理员",value:"admin"}]:[]]}]});if(H)try{const ce=await te.addUser({username:H.username,password:H.password,email:H.email||void 0,nickName:H.nickName||void 0,role:H.role==="admin"?"admin":void 0});if(ce.success)W("添加用户成功",2e3),yt();else{const ye=ce.message||"添加用户失败";z(ye,3e3),console.error("添加用户失败:",ce)}}catch(ce){const ye=((D=(B=ce.response)==null?void 0:B.data)==null?void 0:D.message)||ce.message||"添加用户失败";z(ye,3e3),console.error("添加用户异常:",ce)}},Nt=async H=>{O.value={id:H.id,username:H.username,nickName:H.nickName,email:H.email,avatar:H.avatar||"",role:H.role,roleWeight:H.roleWeight,status:H.status,gender:H.gender||"unknown",age:H.age||0,exp:H.exp||0,level:H.level||0,titles:H.titles||[],createdAt:H.createdAt},X.value=!0},ks=async H=>{var B,D,ce,ye,st,Et;if(O.value){Y.value=!0;try{const Rt={};if(H.nickName!==void 0&&(Rt.nickName=H.nickName),H.email!==void 0&&(Rt.email=H.email),H.avatar!==void 0&&(Rt.avatar=H.avatar),H.gender!==void 0&&(Rt.gender=H.gender),H.age!==void 0&&(Rt.age=H.age),H.exp!==void 0&&(Rt.exp=H.exp),H.level!==void 0&&(Rt.level=H.level),H.titles!==void 0&&(Rt.titles=H.titles),H.status!==void 0){const Zn={active:"active",locked:"locked",banned:"banned"}[H.status]||H.status;try{await te.setUserStatus(O.value.username,Zn)}catch(tl){const Xd=((D=(B=tl.response)==null?void 0:B.data)==null?void 0:D.message)||tl.message||"更新用户状态失败";z(Xd,3e3),console.error("更新用户状态异常:",tl)}}if(H.role!==void 0&&Q.value)try{await te.upgradeUserRole(O.value.username,H.role)}catch(Cs){const Zn=((ye=(ce=Cs.response)==null?void 0:ce.data)==null?void 0:ye.message)||Cs.message||"更新用户角色失败";z(Zn,3e3),console.error("更新用户角色异常:",Cs)}if(Object.keys(Rt).length>0){const Cs=await te.updateUser(O.value.id,Rt);if(Cs.success)W("更新用户成功",2e3),yt(),X.value=!1,O.value=null;else{const Zn=Cs.message||"更新用户失败";z(Zn,3e3),console.error("更新用户失败:",Cs)}}else W("更新用户成功",2e3),yt(),X.value=!1,O.value=null}catch(Rt){const Cs=((Et=(st=Rt.response)==null?void 0:st.data)==null?void 0:Et.message)||Rt.message||"更新用户失败";z(Cs,3e3),console.error("更新用户异常:",Rt)}finally{Y.value=!1}}},Mt=()=>{X.value=!1,O.value=null},$s=async H=>{var D,ce;if(await V.show({title:"删除用户",message:`确定要删除用户 ${H.username} 吗?此操作不可恢复!`,type:"danger",confirmText:"删除",cancelText:"取消"}))try{const ye=await te.deleteUser(H.username);if(ye.success)W("删除用户成功",2e3),yt();else{const st=ye.message||"删除用户失败";z(st,3e3),console.error("删除用户失败:",ye)}}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"删除用户失败";z(st,3e3),console.error("删除用户异常:",ye)}},sn=async H=>{var D,ce;if(await V.show({title:"锁定用户",message:`确定要锁定用户 ${H.username} 吗?锁定后用户将无法发表评论、点赞、收藏、分享等操作。`,type:"warning",confirmText:"锁定",cancelText:"取消"}))try{const ye=await te.setUserStatus(H.username,"locked");if(ye.success)W("锁定用户成功",2e3),yt();else{const st=ye.message||"锁定用户失败";z(st,3e3),console.error("锁定用户失败:",ye)}}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"锁定用户失败";z(st,3e3),console.error("锁定用户异常:",ye)}},Wa=async H=>{var B,D;try{const ce=await te.setUserStatus(H.username,"active");if(ce.success)W("解除锁定成功",2e3),yt();else{const ye=ce.message||"解除锁定失败";z(ye,3e3),console.error("解除锁定失败:",ce)}}catch(ce){const ye=((D=(B=ce.response)==null?void 0:B.data)==null?void 0:D.message)||ce.message||"解除锁定失败";z(ye,3e3),console.error("解除锁定异常:",ce)}},Ka=async H=>{var D,ce;if(await V.show({title:"封禁用户",message:`确定要封禁用户 ${H.username} 吗封禁后用户将无法登录无法访问任何API接口。`,type:"danger",confirmText:"封禁",cancelText:"取消"}))try{const ye=await te.setUserStatus(H.username,"banned");if(ye.success)W("封禁用户成功",2e3),yt();else{const st=ye.message||"封禁用户失败";z(st,3e3),console.error("封禁用户失败:",ye)}}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"封禁用户失败";z(st,3e3),console.error("封禁用户异常:",ye)}},Ga=async H=>{var B,D;try{const ce=await te.setUserStatus(H.username,"active");if(ce.success)W("解除封禁成功",2e3),yt();else{const ye=ce.message||"解除封禁失败";z(ye,3e3),console.error("解除封禁失败:",ce)}}catch(ce){const ye=((D=(B=ce.response)==null?void 0:B.data)==null?void 0:D.message)||ce.message||"解除封禁失败";z(ye,3e3),console.error("解除封禁异常:",ce)}},Qn=async H=>{var D,ce;if(await V.show({title:"提升用户权限",message:`确定要将用户 ${H.username} 提升为管理员吗?`,type:"warning",confirmText:"提升",cancelText:"取消"}))try{const ye=await te.upgradeUserRole(H.username,"admin");if(ye.success)W("提升用户权限成功",2e3),yt();else{const st=ye.message||"提升用户权限失败";z(st,3e3),console.error("提升用户权限失败:",ye)}}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"提升用户权限失败";z(st,3e3),console.error("提升用户权限异常:",ye)}},Fo=async H=>{var D,ce;if(await V.show({title:"降级用户权限",message:`确定要将管理员 ${H.username} 降级为普通用户吗?`,type:"warning",confirmText:"降级",cancelText:"取消"}))try{const ye=await te.upgradeUserRole(H.username,"user");if(ye.success)W("降级用户权限成功",2e3),yt();else{const st=ye.message||"降级用户权限失败";z(st,3e3),console.error("降级用户权限失败:",ye)}}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"降级用户权限失败";z(st,3e3),console.error("降级用户权限异常:",ye)}},Rs=async()=>{var H,B;Re.value=!0,we.value="";try{const D=await te.getAdminPosts(Ne.value,Je.value,o.value||void 0,a.value);D.success&&D.data?(ze.value=D.data.posts.map(ce=>{var ye;return{id:ce.id,title:ce.title,author:typeof ce.author=="string"?ce.author:((ye=ce.author)==null?void 0:ye.name)||"-",forumName:ce.forumName||ce.bundleId||"-",bundleId:ce.bundleId,content:ce.content,attachments:ce.attachments||[],replyCount:ce.replyCount||0,publishTime:ce.publishTime,status:ce.status||"normal"}}),We.value=D.data.total):we.value=D.message||"加载帖子列表失败"}catch(D){console.error("加载帖子列表失败:",D),we.value=((B=(H=D.response)==null?void 0:H.data)==null?void 0:B.message)||D.message||"加载帖子列表失败"}finally{Re.value=!1}};at(a,()=>{Ne.value=1,Rs()});const Qa=H=>{H.bundleId?M.push(`/discussion/${H.bundleId}/post/${H.id}`):M.push("/discussion")},Ja=async H=>{var B,D;if(ue.value={id:H.id,bundleId:H.bundleId,title:H.title,content:H.content||"",attachments:H.attachments||[],author:typeof H.author=="string"?{id:"",name:H.author}:H.author},ne.value=!0,oe.value=!0,H.bundleId)try{const ce=await te.getForumPost(H.bundleId,H.id,1,1);console.log("获取到的帖子详情:",ce),ce&&(ue.value={id:H.id,bundleId:H.bundleId,title:ce.title||H.title,content:ce.content||H.content||"",attachments:ce.attachments||[],author:ce.author||(typeof H.author=="string"?{id:"",name:H.author}:H.author)},console.log("更新后的editingPost:",ue.value))}catch(ce){console.error("获取帖子详情失败:",ce),z("获取帖子详情失败: "+(((D=(B=ce.response)==null?void 0:B.data)==null?void 0:D.message)||ce.message||"未知错误"),3e3)}finally{console.log("设置postEditLoading为false"),oe.value=!1}else oe.value=!1},Za=async H=>{var B,D;if(ue.value){L.show("保存中...");try{const ce=await te.updateAdminPost(ue.value.id,H.title,H.content,H.attachmentIds);ce.success?(W("编辑帖子成功",2e3),await Rs(),ne.value=!1,ue.value=null):z(ce.message||"编辑帖子失败",3e3)}catch(ce){z(((D=(B=ce.response)==null?void 0:B.data)==null?void 0:D.message)||ce.message||"编辑帖子失败",3e3)}finally{L.hide()}}},Xa=()=>{ne.value=!1,ue.value=null},Jn=async H=>{var D,ce;if(await V.show({title:"删除帖子",message:`确定要删除帖子 "${H.title}" 吗?`,type:"danger",confirmText:"删除",cancelText:"取消"})){L.show("删除中...");try{const ye=await te.deleteAdminPost(H.id);ye.success?(W("删除帖子成功",2e3),await Rs()):z(ye.message||"删除帖子失败",3e3)}catch(ye){z(((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"删除帖子失败",3e3)}finally{L.hide()}}},wn=async()=>{try{const H=await te.getAdminViolations(1,1,"pending");if(H.success&&H.data){const B=H.data.total||0,D=v.value.find(ce=>ce.id==="violations");D&&(D.badge=B>0?String(B):null)}}catch{}},ls=async()=>{var H,B;P.value=!0,R.value="";try{const D=await te.getAdminViolations(S.value,J.value,l.value);D.success&&D.data?(qe.value=D.data.violations.map(ce=>({id:ce.id,type:ce.type,reportedUser:ce.reportedUser||ce.reporterNickname||"-",reportTypes:ce.reportTypes||[],content:ce.content||"-",comment:ce.comment,reportTime:ce.reportTime,status:ce.status||"pending"})),ee.value=D.data.total):R.value=D.message||"加载违规列表失败"}catch(D){console.error("加载违规列表失败:",D),R.value=((B=(H=D.response)==null?void 0:H.data)==null?void 0:B.message)||D.message||"加载违规列表失败"}finally{P.value=!1}};at(l,()=>{S.value=1,ls()});const Hs=async(H,B)=>{var ye,st;const D=B==="resolved"?"确认违规":"驳回举报";if(await V.show({title:D,message:`确定要${D}吗?`,type:B==="resolved"?"warning":"info",confirmText:D,cancelText:"取消"})){L.show("处理中...");try{const Et=await te.resolveViolation(H.id,B);Et.success?(W(`${D}成功`,2e3),await ls(),await wn(),el()):z(Et.message||`${D}失败`,3e3)}catch(Et){z(((st=(ye=Et.response)==null?void 0:ye.data)==null?void 0:st.message)||Et.message||`${D}失败`,3e3)}finally{L.hide()}}},kn=k(new Map),Vo=H=>{const B=kn.value.get(H.id);if(!B)return[];const D=[];if(H.screenshotAttachmentIds&&H.screenshotAttachmentIds.length>0)for(const ce of H.screenshotAttachmentIds){const ye=fe(ce),st=B.get(ye);st&&D.push(st)}return D},Us=async()=>{var H,B;N.value=!0,le.value="";try{const D=await te.getAdminIssues(ie.value,Me.value,He.value);if(D.success&&D.data){y.value=D.data.issues||[],Ie.value=D.data.total||0;for(const ce of y.value){if(ce.appIconId&&!dt.value.has(ce.id))try{const ye=await te.getImage(ce.appIconId);dt.value.set(ce.id,ye)}catch(ye){console.warn(`加载问题 ${ce.id} 的图标失败:`,ye)}if(ce.screenshotAttachmentIds&&ce.screenshotAttachmentIds.length>0){const ye=new Map;for(const st of ce.screenshotAttachmentIds){const Et=fe(st);try{const Rt=await te.getAttachmentImage(Et);Rt&&ye.set(Et,Rt)}catch(Rt){console.warn(`加载问题 ${ce.id} 的截图 ${Et} 失败:`,Rt)}}ye.size>0&&kn.value.set(ce.id,ye)}}}else le.value=D.message||"加载问题列表失败"}catch(D){console.error("加载问题列表失败:",D),le.value=((B=(H=D.response)==null?void 0:H.data)==null?void 0:B.message)||D.message||"加载问题列表失败"}finally{N.value=!1}},Bo=H=>dt.value.get(H),fe=H=>{var B,D;return typeof H=="string"?H:H&&typeof H=="object"?((B=H._id)==null?void 0:B.toString())||((D=H.id)==null?void 0:D.toString())||H.toString():String(H)},se=k([]),Oe=k(0),Fe=k(!1),Te=(H,B)=>{const D=Vo(H);se.value=D,Oe.value=B,Fe.value=!0},_e=()=>{Fe.value=!1,se.value=[]},Se=async H=>{try{const B=fe(H),D=await te.getAttachment(B);if(!D){z("获取文件信息失败",2e3);return}const ce=await te.getAttachmentDownloadUrl(B);if(!ce){z("获取下载链接失败",2e3);return}const ye=document.createElement("a");ye.href=ce,ye.download=D.name,ye.target="_blank",document.body.appendChild(ye),ye.click(),document.body.removeChild(ye)}catch(B){console.error("下载文件失败:",B),z("下载文件失败",2e3)}};at(He,()=>{ie.value=1,Us()});const nt=H=>{switch(H){case"crash":return"打开崩溃";case"crack_failed":return"破解失效";case"update_request":return"请求更新";case"unexpected_error":return"意外错误";default:return H}},$t=H=>{switch(H){case"pending":return"待处理";case"resolved":return"已解决";case"rejected":return"已驳回";default:return H}},ss=H=>{var B;return H?typeof H=="string"?H:typeof H=="object"&&(H.name||H.id||((B=H._id)==null?void 0:B.toString()))||"-":"-"},wt=H=>{var B;return!H||typeof H=="string"?null:typeof H=="object"&&(H.id||((B=H._id)==null?void 0:B.toString()))||null},$n=(H,B)=>{me.value=H,ut.value=B,Ze.value="",Ge.value=!0},ns=async()=>{var H,B;if(me.value){L.show("处理中...");try{const D=await te.resolveIssue(me.value.id,ut.value,Ze.value.trim()||void 0);D.success?(W(`问题已${ut.value==="resolved"?"标记为已解决":"驳回"}`,2e3),Ge.value=!1,me.value=null,Ze.value="",await Us()):z(D.message||"处理问题失败",3e3)}catch(D){z(((B=(H=D.response)==null?void 0:H.data)==null?void 0:B.message)||D.message||"处理问题失败",3e3)}finally{L.hide()}}},Wd=()=>{console.log("审核设置")},Kd=async H=>{var D,ce;const B=xe.value.find(ye=>ye.bundleId===H);if(B)try{const ye=await te.disableForum(H);ye.success?(B.enabled=!1,B.updatedAt=new Date().toISOString(),W("禁用讨论区成功",2e3),console.log("禁用讨论区:",H)):z(ye.message||"禁用讨论区失败",3e3)}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"禁用讨论区失败";z(st,3e3),console.error("禁用讨论区异常:",ye)}},Gd=async H=>{var D,ce;const B=xe.value.find(ye=>ye.bundleId===H);if(B)try{const ye=await te.enableForum(H);ye.success?(B.enabled=!0,B.updatedAt=new Date().toISOString(),W("启用讨论区成功",2e3),console.log("启用讨论区:",H)):z(ye.message||"启用讨论区失败",3e3)}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"启用讨论区失败";z(st,3e3),console.error("启用讨论区异常:",ye)}},Qd=async()=>{try{const H=await te.getForumPermissions();if(H&&H.length>0)xe.value=H;else{const D=(await te.getApps()).filter(ce=>ce.path&&ce.path.length>0);xe.value=D.map(ce=>({bundleId:ce.bundleId,appName:ce.name,enabled:!1,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}))}}catch(H){console.error("加载讨论区列表失败:",H),xe.value=[]}},Ya=k(0),jo=async()=>{try{const H=await te.getForumRequests("all",1,1e3);be.value=H.requests,Ya.value=H.total}catch(H){console.error("加载申请列表失败:",H),be.value=[],Ya.value=0}},el=()=>{window.dispatchEvent(new CustomEvent("system-notifications-changed"))},Si=async H=>{var D,ce;const B=be.value.find(ye=>ye.id===H);if(B)try{const ye=await te.processForumRequest(H,"approve");if(ye.success){B.status=ps.APPROVED;const st=xe.value.find(Et=>Et.bundleId===B.bundleId);st?(st.enabled=!0,st.updatedAt=new Date().toISOString()):xe.value.push({bundleId:B.bundleId,appName:B.appName,enabled:!0,postCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),await jo(),el(),W("批准申请成功",2e3),console.log("批准申请:",H)}else z(ye.message||"批准申请失败",3e3)}catch(ye){const st=((ce=(D=ye.response)==null?void 0:D.data)==null?void 0:ce.message)||ye.message||"批准申请失败";z(st,3e3),console.error("批准申请异常:",ye)}},Jd=async(H,B)=>{var ce,ye;const D=be.value.find(st=>st.id===H);if(D)try{const st=B||"该应用暂不支持讨论区功能",Et=await te.processForumRequest(H,"reject",st);Et.success?(D.status=ps.REJECTED,await jo(),el(),W("拒绝申请成功",2e3),console.log("拒绝申请:",H)):z(Et.message||"拒绝申请失败",3e3)}catch(st){const Et=((ye=(ce=st.response)==null?void 0:ce.data)==null?void 0:ye.message)||st.message||"拒绝申请失败";z(Et,3e3),console.error("拒绝申请异常:",st)}},Zd=async()=>{for(const H of G.value)await Si(H.id)},Ai=()=>{jo()};return at(t,H=>{H==="issues"&&Us()}),vt(()=>{yt(),Qd(),jo(),Rs(),ls(),wn(),window.addEventListener("forum-requests-changed",Ai),t.value==="issues"&&Us()}),Wt(()=>{window.removeEventListener("forum-requests-changed",Ai)}),jn(()=>{dt.value.forEach(H=>{H.startsWith("blob:")&&URL.revokeObjectURL(H)}),dt.value.clear(),kn.value.forEach(H=>{H.forEach(B=>{B.startsWith("blob:")&&URL.revokeObjectURL(B)}),H.clear()}),kn.value.clear()}),(H,B)=>(u(),f("div",KE,[n("div",GE,[B[64]||(B[64]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"管理员面板"),n("p",{class:"page-description"},"管理系统用户、帖子内容和违规处理")],-1)),n("div",QE,[n("div",JE,[(u(!0),f(ge,null,Ee(v.value,D=>(u(),f("button",{key:D.id,class:$e(["tab-button",{active:t.value===D.id}]),onClick:Be(ce=>t.value=D.id,["stop"]),type:"button"},[m(b,{icon:D.icon,class:"tab-icon"},null,8,["icon"]),n("span",null,h(D.label),1),D.badge?(u(),f("span",XE,h(D.badge),1)):T("",!0)],10,ZE))),128))])]),n("div",YE,[t.value==="users"?(u(),f("div",e9,[n("div",t9,[B[21]||(B[21]=n("h2",null,"用户管理",-1)),n("div",s9,[Qe(n("input",{"onUpdate:modelValue":B[0]||(B[0]=D=>s.value=D),type:"text",placeholder:"搜索用户...",class:"search-input",onInput:je},null,544),[[ot,s.value]]),n("button",{class:"btn btn-primary",onClick:fs},[m(b,{icon:"mdi:plus",class:"btn-icon"}),B[20]||(B[20]=Ce(" 添加用户 ",-1))])])]),n("div",n9,[_.value?(u(),f("div",o9,[...B[22]||(B[22]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):w.value?(u(),f("div",a9,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(w.value),1),n("button",{class:"btn btn-primary",onClick:yt},"重试")])):(u(),f(ge,{key:2},[n("table",l9,[B[24]||(B[24]=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,[kt.value.length===0?(u(),f("tr",i9,[n("td",r9,[m(b,{icon:"mdi:account-off"}),B[23]||(B[23]=n("p",null,"暂无用户数据",-1))])])):T("",!0),(u(!0),f(ge,null,Ee(kt.value,D=>(u(),f("tr",{key:D.id},[n("td",null,h(D.id),1),n("td",null,h(D.username),1),n("td",null,h(D.nickName||"-"),1),n("td",null,h(D.email||"-"),1),n("td",null,[n("span",{class:$e(["role-badge",D.role])},h(Pe(D.role)),3)]),n("td",null,h(rt(D.createdAt)),1),n("td",null,[n("span",{class:$e(["status-badge",D.status])},h(Ve(D.status)),3)]),n("td",null,[n("div",c9,[n("button",{class:"action-btn edit",onClick:ce=>Nt(D),title:"编辑"},[m(b,{icon:"mdi:pencil"})],8,u9),n("button",{class:"action-btn delete",onClick:ce=>$s(D),title:"删除"},[m(b,{icon:"mdi:delete"})],8,d9),D.status==="active"?(u(),f("button",{key:0,class:"action-btn lock",onClick:ce=>sn(D),title:"锁定"},[m(b,{icon:"mdi:lock"})],8,f9)):D.status==="locked"?(u(),f("button",{key:1,class:"action-btn unlock",onClick:ce=>Wa(D),title:"解除锁定"},[m(b,{icon:"mdi:lock-open"})],8,p9)):T("",!0),D.status==="active"||D.status==="locked"?(u(),f("button",{key:2,class:"action-btn ban",onClick:ce=>Ka(D),title:"封禁"},[m(b,{icon:"mdi:ban"})],8,v9)):T("",!0),D.status==="banned"?(u(),f("button",{key:3,class:"action-btn unban",onClick:ce=>Ga(D),title:"解除封禁"},[m(b,{icon:"mdi:check-circle"})],8,m9)):T("",!0),Z(Q)&&D.role==="user"?(u(),f("button",{key:4,class:"action-btn upgrade",onClick:ce=>Qn(D),title:"提升为管理员"},[m(b,{icon:"mdi:arrow-up-circle"})],8,h9)):T("",!0),Z(Q)&&D.role==="admin"?(u(),f("button",{key:5,class:"action-btn downgrade",onClick:ce=>Fo(D),title:"降级为普通用户"},[m(b,{icon:"mdi:arrow-down-circle"})],8,g9)):T("",!0)])])]))),128))])]),x.value>1?(u(),f("div",y9,[n("button",{onClick:B[1]||(B[1]=D=>C.value>1&&(C.value--,yt())),disabled:C.value===1,class:"btn btn-sm"}," 上一页 ",8,b9),n("span",null,"第 "+h(C.value)+" 页,共 "+h(x.value)+" 页(共 "+h(A.value)+" 条)",1),n("button",{onClick:B[2]||(B[2]=D=>C.value<x.value&&(C.value++,yt())),disabled:C.value>=x.value,class:"btn btn-sm"}," 下一页 ",8,_9)])):T("",!0)],64))])])):T("",!0),t.value==="posts"?(u(),f("div",w9,[n("div",k9,[B[25]||(B[25]=n("h2",null,"帖子管理",-1)),n("div",$9,[Qe(n("input",{"onUpdate:modelValue":B[3]||(B[3]=D=>o.value=D),type:"text",placeholder:"搜索帖子...",class:"search-input"},null,512),[[ot,o.value]]),m(Es,{modelValue:a.value,"onUpdate:modelValue":B[4]||(B[4]=D=>a.value=D),options:c},null,8,["modelValue"])])]),n("div",C9,[Re.value?(u(),f("div",I9,[...B[26]||(B[26]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):we.value?(u(),f("div",S9,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(we.value),1),n("button",{class:"btn btn-primary",onClick:Rs},"重试")])):(u(),f(ge,{key:2},[n("table",A9,[B[28]||(B[28]=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,[St.value.length===0?(u(),f("tr",x9,[n("td",T9,[m(b,{icon:"mdi:file-document-outline"}),B[27]||(B[27]=n("p",null,"暂无帖子数据",-1))])])):T("",!0),(u(!0),f(ge,null,Ee(St.value,D=>(u(),f("tr",{key:D.id},[n("td",null,h(D.id),1),n("td",E9,[n("span",R9,h(D.title),1)]),n("td",null,h(D.author),1),n("td",null,h(D.forumName),1),n("td",null,h(D.replyCount),1),n("td",null,h(rt(D.publishTime)),1),n("td",null,[n("span",{class:$e(["status-badge",D.status])},h(Ue(D.status)),3)]),n("td",null,[n("div",U9,[n("button",{class:"action-btn view",onClick:ce=>Qa(D),title:"查看"},[m(b,{icon:"mdi:eye"})],8,D9),n("button",{class:"action-btn edit",onClick:ce=>Ja(D),title:"编辑"},[m(b,{icon:"mdi:pencil"})],8,N9),n("button",{class:"action-btn delete",onClick:ce=>Jn(D),title:"删除"},[m(b,{icon:"mdi:delete"})],8,M9)])])]))),128))])]),ae.value>1?(u(),f("div",P9,[n("button",{class:"btn btn-secondary pagination-btn",disabled:Ne.value===1,onClick:B[5]||(B[5]=D=>{Ne.value--,Rs()})}," 上一页 ",8,L9),n("span",O9," 第 "+h(Ne.value)+" / "+h(ae.value)+" 页,共 "+h(We.value)+" 条 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:Ne.value>=ae.value,onClick:B[6]||(B[6]=D=>{Ne.value++,Rs()})}," 下一页 ",8,F9)])):T("",!0)],64))])])):T("",!0),t.value==="violations"?(u(),f("div",V9,[n("div",B9,[B[29]||(B[29]=n("h2",null,"违规处理",-1)),n("div",j9,[m(Es,{modelValue:l.value,"onUpdate:modelValue":B[7]||(B[7]=D=>l.value=D),options:d},null,8,["modelValue"])])]),n("div",q9,[P.value?(u(),f("div",H9,[...B[30]||(B[30]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):R.value?(u(),f("div",z9,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(R.value),1),n("button",{class:"btn btn-primary",onClick:ls},"重试")])):(u(),f(ge,{key:2},[he.value.length===0?(u(),f("div",W9,[m(b,{icon:"mdi:shield-check"}),B[31]||(B[31]=n("p",null,"暂无违规记录",-1))])):T("",!0),(u(!0),f(ge,null,Ee(he.value,D=>(u(),f("div",{key:D.id,class:"violation-item"},[n("div",K9,[n("div",G9,[n("span",Q9,h(Ye(D.type)),1),n("span",J9,"#"+h(D.id),1),n("span",Z9,h(rt(D.reportTime)),1)]),n("span",{class:$e(["violation-status",D.status])},h(ft(D.status)),3)]),n("div",X9,[n("div",Y9,[n("div",eR,[B[32]||(B[32]=n("span",{class:"detail-label"},"被举报人:",-1)),n("span",tR,h(ss(D.reportedUser)),1)]),wt(D.reportedUser)?(u(),f("div",sR,[B[33]||(B[33]=n("span",{class:"detail-label"},"用户ID:",-1)),n("span",nR,[n("code",null,h(wt(D.reportedUser)),1)])])):T("",!0),n("div",oR,[B[34]||(B[34]=n("span",{class:"detail-label"},"举报类型:",-1)),n("div",aR,[(u(!0),f(ge,null,Ee(D.reportTypes,ce=>(u(),f("span",{key:ce,class:$e(["report-type-tag",Z(jd)(ce)])},h(Z(Bd)(ce)),3))),128))])]),n("div",lR,[B[35]||(B[35]=n("span",{class:"detail-label"},"被举报内容:",-1)),n("div",iR,h(D.content),1)]),D.comment?(u(),f("div",rR,[B[36]||(B[36]=n("span",{class:"detail-label"},"补充说明:",-1)),n("div",cR,h(D.comment),1)])):T("",!0)]),D.status==="pending"?(u(),f("div",uR,[n("button",{class:"btn btn-danger",onClick:ce=>Hs(D,"resolved")},[m(b,{icon:"mdi:check",class:"btn-icon"}),B[37]||(B[37]=Ce(" 确认违规 ",-1))],8,dR),n("button",{class:"btn btn-secondary",onClick:ce=>Hs(D,"rejected")},[m(b,{icon:"mdi:close",class:"btn-icon"}),B[38]||(B[38]=Ce(" 驳回举报 ",-1))],8,fR)])):T("",!0)])]))),128)),I.value>1?(u(),f("div",pR,[n("button",{class:"btn btn-secondary pagination-btn",disabled:S.value===1,onClick:B[8]||(B[8]=D=>{S.value--,ls()})}," 上一页 ",8,vR),n("span",mR," 第 "+h(S.value)+" / "+h(I.value)+" 页,共 "+h(ee.value)+" 条 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:S.value>=I.value,onClick:B[9]||(B[9]=D=>{S.value++,ls()})}," 下一页 ",8,hR)])):T("",!0)],64))])])):T("",!0),t.value==="issues"?(u(),f("div",gR,[n("div",yR,[B[39]||(B[39]=n("h2",null,"问题管理",-1)),n("div",bR,[m(Es,{modelValue:He.value,"onUpdate:modelValue":B[10]||(B[10]=D=>He.value=D),options:d},null,8,["modelValue"])])]),n("div",_R,[N.value?(u(),f("div",wR,[...B[40]||(B[40]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载中...",-1)])])):le.value?(u(),f("div",kR,[m(b,{icon:"mdi:alert-circle"}),n("p",null,h(le.value),1),n("button",{class:"btn btn-primary",onClick:Us},"重试")])):(u(),f(ge,{key:2},[j.value.length===0?(u(),f("div",$R,[m(b,{icon:"mdi:bug-check"}),B[41]||(B[41]=n("p",null,"暂无问题报告",-1))])):T("",!0),(u(!0),f(ge,null,Ee(j.value,D=>(u(),f("div",{key:D.id,class:"violation-item"},[n("div",CR,[n("div",IR,[n("span",{class:$e(["violation-type",`issue-type-${D.errorType}`])},h(nt(D.errorType)),3),n("span",SR,"#"+h(D.id),1),n("span",AR,h(rt(D.submitTime)),1)]),n("span",{class:$e(["violation-status",D.status])},h($t(D.status)),3)]),n("div",xR,[n("div",TR,[n("div",ER,[B[42]||(B[42]=n("span",{class:"detail-label"},"应用:",-1)),n("div",RR,[D.appIconId&&Bo(D.id)?(u(),f("img",{key:0,src:Bo(D.id),alt:D.appName,class:"app-icon-small"},null,8,UR)):(u(),f("div",DR,h(D.appName.charAt(0).toUpperCase()),1)),n("span",null,h(D.appName)+" ("+h(D.appVersion)+")",1)])]),n("div",NR,[B[43]||(B[43]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",MR,h(D.bundleId),1)]),n("div",PR,[B[44]||(B[44]=n("span",{class:"detail-label"},"问题类型:",-1)),n("span",{class:$e(["detail-value issue-type-badge",`issue-type-${D.errorType}`])},h(nt(D.errorType)),3)]),n("div",LR,[B[45]||(B[45]=n("span",{class:"detail-label"},"系统信息:",-1)),n("span",OR,h(D.osVersion)+" ("+h(D.architecture)+")",1)]),n("div",FR,[B[46]||(B[46]=n("span",{class:"detail-label"},"提交用户:",-1)),n("span",VR,h(D.userName),1)]),n("div",BR,[B[47]||(B[47]=n("span",{class:"detail-label"},"提交时间:",-1)),n("span",jR,h(rt(D.submitTime)),1)]),n("div",qR,[B[48]||(B[48]=n("span",{class:"detail-label"},"问题描述:",-1)),n("div",HR,h(D.content),1)]),D.screenshotAttachmentIds&&D.screenshotAttachmentIds.length>0?(u(),f("div",zR,[B[49]||(B[49]=n("span",{class:"detail-label"},"截图:",-1)),m(Dn,{images:Vo(D),"show-index":!1,columns:4,"max-width":80,onImageClick:ce=>Te(D,ce)},null,8,["images","onImageClick"])])):T("",!0),D.fileAttachmentIds&&D.fileAttachmentIds.length>0?(u(),f("div",WR,[B[50]||(B[50]=n("span",{class:"detail-label"},"文件:",-1)),n("div",KR,[(u(!0),f(ge,null,Ee(D.fileAttachmentIds,(ce,ye)=>(u(),f("div",{key:`file-${ye}`,class:"attachment-item",onClick:st=>Se(ce)},[m(b,{icon:"mdi:file",class:"attachment-icon"}),n("span",QR,"文件 "+h(ye+1),1),m(b,{icon:"mdi:download",class:"attachment-action-icon",title:"下载"})],8,GR))),128))])])):T("",!0),D.resolutionNote?(u(),f("div",JR,[B[51]||(B[51]=n("span",{class:"detail-label"},"处理说明:",-1)),n("div",ZR,h(D.resolutionNote),1)])):T("",!0),D.processedAt?(u(),f("div",XR,[B[52]||(B[52]=n("span",{class:"detail-label"},"处理时间:",-1)),n("span",YR,h(rt(D.processedAt)),1)])):T("",!0)]),D.status==="pending"?(u(),f("div",eU,[n("button",{class:"btn btn-primary",onClick:ce=>$n(D,"resolved")},[m(b,{icon:"mdi:check",class:"btn-icon"}),B[53]||(B[53]=Ce(" 标记为已解决 ",-1))],8,tU),n("button",{class:"btn btn-secondary",onClick:ce=>$n(D,"rejected")},[m(b,{icon:"mdi:close",class:"btn-icon"}),B[54]||(B[54]=Ce(" 驳回 ",-1))],8,sU)])):T("",!0)])]))),128)),Le.value>1?(u(),f("div",nU,[n("button",{class:"btn btn-secondary pagination-btn",disabled:ie.value===1,onClick:B[11]||(B[11]=D=>{ie.value--,Us()})}," 上一页 ",8,oU),n("span",aU," 第 "+h(ie.value)+" / "+h(Le.value)+" 页,共 "+h(Ie.value)+" 条 ",1),n("button",{class:"btn btn-secondary pagination-btn",disabled:ie.value>=Le.value,onClick:B[12]||(B[12]=D=>{ie.value++,Us()})}," 下一页 ",8,lU)])):T("",!0)],64))])])):T("",!0),t.value==="forums"?(u(),f("div",iU,[B[61]||(B[61]=n("div",{class:"section-header"},[n("h2",null,"讨论区管理")],-1)),n("div",rU,[n("button",{class:$e(["sub-tab-button",{active:De.value==="forums"}]),onClick:B[13]||(B[13]=D=>De.value="forums"),type:"button"},[m(b,{icon:"fluent-color:comment-multiple-28",class:"sub-tab-icon"}),B[55]||(B[55]=Ce(" 讨论区列表 ",-1))],2),n("button",{class:$e(["sub-tab-button",{active:De.value==="requests"}]),onClick:B[14]||(B[14]=D=>De.value="requests"),type:"button"},[m(b,{icon:"fluent-color:clipboard-text-edit-32",class:"sub-tab-icon"}),B[56]||(B[56]=Ce(" 申请开通 ",-1)),G.value.length>0?(u(),f("span",cU,h(G.value.length),1)):T("",!0)],2)]),De.value==="forums"?(u(),f("div",uU,[n("div",dU,[n("div",fU,[Qe(n("input",{"onUpdate:modelValue":B[15]||(B[15]=D=>i.value=D),type:"text",placeholder:"搜索讨论区...",class:"search-input"},null,512),[[ot,i.value]]),m(Es,{modelValue:r.value,"onUpdate:modelValue":B[16]||(B[16]=D=>r.value=D),options:p},null,8,["modelValue"])])]),n("div",pU,[n("table",vU,[B[57]||(B[57]=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,[(u(!0),f(ge,null,Ee(U.value,D=>(u(),f("tr",{key:D.bundleId},[n("td",null,[n("div",mU,[F(D.bundleId)?(u(),f("img",{key:0,src:F(D.bundleId),alt:D.appName,class:"forum-icon"},null,8,hU)):(u(),f("div",gU,h(D.appName.charAt(0).toUpperCase()),1)),n("span",null,h(D.appName),1)])]),n("td",null,[n("code",yU,h(D.bundleId),1)]),n("td",null,h(D.postCount),1),n("td",null,h(D.lastPostTime?rt(D.lastPostTime):"-"),1),n("td",null,[n("span",{class:$e(["status-badge",D.enabled?"enabled":"disabled"])},h(D.enabled?"已启用":"已禁用"),3)]),n("td",null,[n("div",bU,[D.enabled?(u(),f("button",{key:0,class:"action-btn ban",onClick:ce=>Kd(D.bundleId),title:"禁用讨论区"},[m(b,{icon:"mdi:ban"})],8,_U)):(u(),f("button",{key:1,class:"action-btn enable",onClick:ce=>Gd(D.bundleId),title:"启用讨论区"},[m(b,{icon:"mdi:check-circle"})],8,wU))])])]))),128))])]),U.value.length===0?(u(),f("div",kU,[m(b,{icon:"mdi:forum-outline",class:"empty-icon"}),B[58]||(B[58]=n("p",null,"没有找到讨论区",-1))])):T("",!0)])])):T("",!0),De.value==="requests"?(u(),f("div",$U,[n("div",CU,[n("div",IU,[n("span",null,"共 "+h(Ya.value)+" 条申请记录",1)]),n("div",SU,[G.value.length>0?(u(),f("button",{key:0,class:"btn btn-primary",onClick:Zd},[m(b,{icon:"mdi:check-all",class:"btn-icon"}),Ce(" 一键批准全部 ("+h(G.value.length)+") ",1)])):T("",!0)])]),n("div",AU,[n("table",xU,[B[59]||(B[59]=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,[(u(!0),f(ge,null,Ee(be.value,D=>(u(),f("tr",{key:D.id},[n("td",null,[n("div",TU,[F(D.bundleId)?(u(),f("img",{key:0,src:F(D.bundleId),alt:D.appName,class:"forum-icon"},null,8,EU)):(u(),f("div",RU,h(D.appName.charAt(0).toUpperCase()),1)),n("span",null,h(D.appName),1)])]),n("td",null,[n("code",UU,h(D.bundleId),1)]),n("td",null,h(D.requesterName),1),n("td",null,h(rt(D.requestTime)),1),n("td",null,[n("span",{class:$e(["status-badge",D.status])},h(pe(D.status)),3)]),n("td",null,[n("div",DU,[D.status===Z(ps).PENDING?(u(),f("button",{key:0,class:"action-btn enable",onClick:ce=>Si(D.id),title:"批准申请"},[m(b,{icon:"mdi:check"})],8,NU)):T("",!0),D.status===Z(ps).PENDING?(u(),f("button",{key:1,class:"action-btn delete",onClick:ce=>Jd(D.id),title:"拒绝申请"},[m(b,{icon:"mdi:close"})],8,MU)):T("",!0)])])]))),128))])]),be.value.length===0?(u(),f("div",PU,[m(b,{icon:"mdi:file-document-outline",class:"empty-icon"}),B[60]||(B[60]=n("p",null,"暂无申请记录",-1))])):T("",!0)])])):T("",!0)])):T("",!0),t.value==="settings"?(u(),f("div",LU,[B[63]||(B[63]=n("div",{class:"section-header"},[n("h2",null,"系统设置")],-1)),n("div",{class:"settings-list"},[n("div",{class:"setting-item"},[B[62]||(B[62]=n("div",{class:"setting-info"},[n("h3",null,"内容审核设置"),n("p",null,"配置内容审核规则和自动处理")],-1)),n("button",{class:"btn btn-primary",onClick:Wd}," 配置 ")])])])):T("",!0)])]),m(_n,{visible:Z(V).visible.value,title:Z(V).config.value.title||"",message:Z(V).config.value.message||"",type:Z(V).config.value.type,"confirm-text":Z(V).config.value.confirmText,"cancel-text":Z(V).config.value.cancelText,onConfirm:Z(V).handleConfirm,onCancel:Z(V).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(pc,{visible:Z(q).visible.value,title:Z(q).config.value.title||"",message:Z(q).config.value.message,fields:Z(q).config.value.fields||[],"confirm-text":Z(q).config.value.confirmText,"cancel-text":Z(q).config.value.cancelText,onConfirm:Z(q).handleConfirm,onCancel:Z(q).handleCancel},null,8,["visible","title","message","fields","confirm-text","cancel-text","onConfirm","onCancel"]),m(Hd,{visible:Z(E).visible.value,title:Z(E).config.value.title||"",message:Z(E).config.value.message,type:Z(E).config.value.type,"confirm-text":Z(E).config.value.confirmText,onConfirm:Z(E).handleConfirm},null,8,["visible","title","message","type","confirm-text","onConfirm"]),m(cE,{visible:X.value,"user-data":O.value,"can-edit-role":Z(Q),loading:Y.value,onConfirm:ks,onCancel:Mt},null,8,["visible","user-data","can-edit-role","loading"]),m(zE,{visible:ne.value,"post-data":ue.value,loading:oe.value,onConfirm:Za,onCancel:Xa},null,8,["visible","post-data","loading"]),m(pc,{visible:Ge.value,title:ut.value==="resolved"?"标记为已解决":"驳回问题",message:`确定要${ut.value==="resolved"?"标记为已解决":"驳回"}这个问题吗?`,fields:[{key:"resolutionNote",label:"处理说明(可选)",placeholder:"请输入处理说明...",type:"textarea",required:!1,defaultValue:Ze.value,rows:5}],"confirm-text":"确认","cancel-text":"取消",onConfirm:B[17]||(B[17]=async D=>{Ze.value=D.resolutionNote||"",await ns()}),onCancel:B[18]||(B[18]=()=>{Ge.value=!1,me.value=null,Ze.value=""})},null,8,["visible","title","message","fields"]),m(ds,{toasts:Z(K),onRemove:Z(re)},null,8,["toasts","onRemove"]),m(Gn,{visible:Fe.value,images:se.value,"initial-index":Oe.value,"show-navigation":!0,"show-info":!0,onClose:_e,onIndexChange:B[19]||(B[19]=D=>Oe.value=D)},null,8,["visible","images","initial-index"])]))}}),FU=tt(OU,[["__scopeId","data-v-88efc15a"]]),VU={class:"notifications-page"},BU={class:"page-container"},jU={class:"tabs-container"},qU={class:"tabs"},HU=["onClick"],zU={key:0,class:"tab-badge"},WU={class:"content-area"},KU={key:0,class:"tab-content"},GU={class:"section-header"},QU={class:"header-actions"},JU=["disabled"],ZU={class:"notifications-list"},XU={class:"notification-icon"},YU={key:0,class:"unread-dot"},eD={class:"notification-content"},tD={class:"notification-header"},sD={class:"notification-title"},nD={class:"notification-time"},oD={class:"notification-body"},aD={class:"detail-content"},lD={key:0,class:"notification-expanded-details"},iD={key:0,class:"expanded-section"},rD={class:"detail-item"},cD={class:"detail-value"},uD={class:"detail-item"},dD={class:"detail-value"},fD={class:"detail-item"},pD={class:"detail-value"},vD={class:"detail-item"},mD={class:"detail-content"},hD={class:"detail-item"},gD={class:"detail-value"},yD={key:0,class:"detail-item"},bD={class:"detail-content admin-comment"},_D={key:1,class:"expanded-section"},wD={class:"detail-item"},kD={class:"detail-value"},$D={class:"detail-item"},CD={class:"report-types-tags"},ID={class:"detail-item"},SD={class:"detail-content"},AD={key:0,class:"detail-item"},xD={class:"detail-content admin-comment"},TD={key:2,class:"expanded-section"},ED={class:"detail-item"},RD={class:"detail-value"},UD={class:"detail-item"},DD={class:"detail-value"},ND={key:0,class:"detail-item"},MD={class:"detail-content"},PD={class:"notification-actions"},LD=["onClick"],OD={key:0,class:"empty-state"},FD={key:1,class:"tab-content"},VD={class:"notifications-list"},BD={key:0,class:"loading-state issues-loading"},jD={key:1,class:"empty-state"},qD={class:"notification-icon"},HD=["src","alt"],zD={key:1,class:"app-icon-placeholder"},WD={class:"notification-content"},KD={class:"notification-header"},GD={class:"notification-title"},QD={class:"notification-time"},JD={class:"notification-body"},ZD={class:"issue-type"},XD={class:"issue-type-value"},YD={class:"detail-content"},eN={key:0,class:"notification-expanded-details"},tN={class:"expanded-section"},sN={class:"detail-item"},nN={class:"detail-value"},oN={class:"detail-item"},aN={class:"detail-value"},lN={key:0,class:"detail-item"},iN={key:1,class:"detail-item"},rN={class:"attachments-list"},cN=["onClick"],uN={class:"attachment-name"},dN={key:2,class:"detail-item"},fN={class:"detail-content admin-comment"},pN={key:3,class:"detail-item"},vN={class:"detail-value"},mN={class:"notification-actions"},hN=["onClick"],gN={key:2,class:"tab-content"},yN={class:"notifications-list"},bN=["onClick"],_N={class:"notification-icon"},wN={class:"notification-content"},kN={class:"notification-header"},$N={class:"notification-title"},CN={class:"notification-time"},IN={class:"notification-body"},SN={class:"notification-details"},AN={class:"detail-content"},xN={key:0,class:"new-replies-badge"},TN={key:0,class:"empty-state"},EN={key:3,class:"tab-content"},RN={class:"section-header"},UN={class:"notifications-list"},DN={class:"notification-icon"},NN={key:0,class:"unread-dot"},MN={class:"notification-content"},PN={class:"notification-header"},LN={class:"notification-title"},ON={class:"user-name"},FN={class:"notification-time"},VN={class:"notification-body"},BN={class:"detail-content"},jN={key:0,class:"empty-state"},qN={key:4,class:"tab-content"},HN={class:"section-header"},zN={class:"header-actions"},WN=["disabled"],KN={class:"notifications-list"},GN=["onClick"],QN={class:"notification-icon"},JN={key:0,class:"unread-dot"},ZN={class:"notification-content"},XN={class:"notification-header"},YN={class:"notification-title"},eM={class:"user-name"},tM={key:0,class:"reply-to"},sM={key:1},nM={class:"notification-time"},oM={class:"notification-body"},aM={class:"notification-text"},lM={class:"notification-details"},iM={class:"detail-content"},rM={key:0,class:"empty-state"},cM=Xe({__name:"Notifications",setup(e){const t=as(),{toasts:s,showError:o,showSuccess:a,showWarning:l,removeToast:i}=Kt(),r=k("system"),c=k(new Set),d=k([]),p=k([]),v=k([]),g=k([]),_=k(!1),w=k(!1),C=k(!1),$=k(!1),A=k(new Map),x=k(!1),M=async()=>{x.value=!0;try{const I=await te.getNotifications(1,100);I.success&&I.data?je.value=I.data.notifications.map(y=>({id:y.id,type:y.type,title:y.title,content:y.content,relatedId:y.relatedId,createTime:y.createTime,read:y.read,reportDetails:y.reportDetails,requestDetails:y.requestDetails,issueDetails:y.issueDetails})):je.value=[]}catch(I){console.error("加载系统通知失败:",I),je.value=[]}finally{x.value=!1}},K=async()=>{_.value=!0;try{const I=await te.getMyReplies(1,100);I.success&&I.data?d.value=I.data.replies.map(y=>({id:y.id,postId:y.postId,postTitle:y.postTitle,content:y.content,replyTime:y.replyTime,hasNewReplies:y.hasNewReplies||!1,newReplyCount:y.newReplyCount||0})):d.value=[]}catch(I){console.error("加载我回复的列表失败:",I),d.value=[]}finally{_.value=!1}},W=async()=>{C.value=!0;try{const I=await te.getRepliesToMe(1,100);I.success&&I.data?v.value=I.data.replies.map(y=>({id:y.id,postId:y.postId,postTitle:y.postTitle,userName:y.userName,replyToUserName:y.replyToUserName,content:y.content,replyTime:y.replyTime,read:y.read||!1})):v.value=[]}catch(I){console.error("加载回复我的列表失败:",I),v.value=[]}finally{C.value=!1}},z=async()=>{w.value=!0;try{const I=await te.getMessageNotifications(10);I.success&&I.data?p.value=I.data.notifications.map(y=>({id:y.id,fromUserId:y.fromUserId,fromUserName:y.fromUserName,content:y.content,sendTime:y.sendTime,read:y.read||!1})):p.value=[]}catch(I){console.error("加载私信通知失败:",I),p.value=[]}finally{w.value=!1}},re=async()=>{var I,y;$.value=!0;try{const N=await te.getMyIssues(1,100);if(N.success&&N.data){g.value=N.data.issues||[];for(const le of g.value){if(le.appIconId&&!A.value.has(le.id))try{const ie=await te.getImage(le.appIconId);A.value.set(le.id,ie)}catch(ie){console.warn(`加载问题 ${le.id} 的图标失败:`,ie)}if(le.screenshotAttachmentIds&&le.screenshotAttachmentIds.length>0){const ie=new Map;for(const Me of le.screenshotAttachmentIds){const Ie=q(Me);try{const Le=await te.getAttachmentImage(Ie);Le&&ie.set(Ie,Le)}catch(Le){console.warn(`加载问题 ${le.id} 的截图 ${Ie} 失败:`,Le)}}ie.size>0&&Q.value.set(le.id,ie)}}}else g.value=[],N.message&&o(N.message,3e3)}catch(N){console.error("加载问题报告失败:",N),g.value=[],o(((y=(I=N.response)==null?void 0:I.data)==null?void 0:y.message)||N.message||"加载问题报告失败",3e3)}finally{$.value=!1}},V=I=>A.value.get(I),q=I=>{var y,N;return typeof I=="string"?I:I&&typeof I=="object"?((y=I._id)==null?void 0:y.toString())||((N=I.id)==null?void 0:N.toString())||I.toString():String(I)},Q=k(new Map),E=I=>{const y=Q.value.get(I.id);if(!y)return[];const N=[];if(I.screenshotAttachmentIds&&I.screenshotAttachmentIds.length>0)for(const le of I.screenshotAttachmentIds){const ie=q(le),Me=y.get(ie);Me&&N.push(Me)}return N},L=k([]),X=k(0),O=k(!1),Y=(I,y)=>{const N=E(I);L.value=N,X.value=y,O.value=!0},ne=()=>{O.value=!1,L.value=[]},ue=async I=>{try{const y=q(I),N=await te.getAttachment(y);if(!N){console.error("获取文件信息失败");return}const le=await te.getAttachmentDownloadUrl(y);if(!le){console.error("获取下载链接失败");return}const ie=document.createElement("a");ie.href=le,ie.download=N.name,ie.target="_blank",document.body.appendChild(ie),ie.click(),document.body.removeChild(ie)}catch(y){console.error("下载文件失败:",y)}},oe=I=>{switch(I){case"pending":return"待处理";case"resolved":return"已解决";case"rejected":return"已驳回";default:return I}},ke=I=>{switch(I){case"crash":return"打开崩溃";case"crack_failed":return"破解失效";case"update_request":return"请求更新";case"unexpected_error":return"意外错误";default:return I}},je=k([]),ze=ve(()=>v.value.filter(I=>!I.read).length),Re=ve(()=>je.value.filter(I=>!I.read).length),we=k(0),Ne=async()=>{try{const I=await te.getUnreadMessageCount();I.success&&I.data&&(we.value=I.data.count||0)}catch(I){console.error("获取未读私信数量失败:",I),we.value=0}},Je=ve(()=>[{id:"system",label:"系统通知",icon:"fluent-color:mail-alert-32",badge:Re.value>0?String(Re.value):null},{id:"myReplies",label:"我回复的",icon:"fluent-color:people-chat-48",badge:null},{id:"repliesToMe",label:"回复我的",icon:"fluent-color:pin-48",badge:ze.value>0?String(ze.value):null},{id:"messages",label:"私信",icon:"fluent-color:comment-multiple-32",badge:we.value>0?we.value>99?"99+":String(we.value):null},{id:"issues",label:"问题报告",icon:"fluent-color:person-feedback-48",badge:null}]),We=async I=>{if(c.value.has(I))c.value.delete(I);else{c.value.add(I);const y=je.value.find(N=>N.id===I);if(y&&!y.read)try{await te.markNotificationAsRead(I),y.read=!0}catch(N){console.error("标记通知为已读失败:",N)}}},ae=I=>{const y=new Date(I),le=new Date().getTime()-y.getTime(),ie=Math.floor(le/6e4),Me=Math.floor(le/36e5),Ie=Math.floor(le/864e5);return ie<1?"刚刚":ie<60?`${ie}分钟前`:Me<24?`${Me}小时前`:Ie<7?`${Ie}天前`:y.toLocaleDateString("zh-CN")},xe=I=>{console.log("查看帖子",I)},be=async I=>{I.read=!0,console.log("查看回复",I)},De=async()=>{v.value.forEach(I=>{I.read=!0})},qe=()=>{t.push("/messages")},P=I=>{switch(I){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";case"issue_processed":return"fluent-color:person-feedback-48";default:return"mdi:bell"}},R=async()=>{try{(await te.markAllNotificationsAsRead()).success&&je.value.forEach(y=>{y.read=!0})}catch(I){console.error("标记所有通知为已读失败:",I)}},S=()=>{M()},J=()=>{M(),re(),K(),W(),z(),Ne()},ee=()=>{r.value==="system"?M():r.value==="issues"?re():r.value==="myReplies"?K():r.value==="repliesToMe"?W():r.value==="messages"&&z()};return at(r,()=>{ee()}),vt(()=>{J();const I=setInterval(()=>{Ne()},5e3),y=setInterval(()=>{J()},3e4);window.addEventListener("system-notifications-changed",S);const N=()=>{Ne()};window.addEventListener("messages:conversations-updated",N);const le=()=>{document.hidden||Ne()};document.addEventListener("visibilitychange",le);const ie=()=>{Ne()};window.addEventListener("focus",ie),Wt(()=>{clearInterval(y),clearInterval(I),window.removeEventListener("system-notifications-changed",S),window.removeEventListener("messages:conversations-updated",N),document.removeEventListener("visibilitychange",le),window.removeEventListener("focus",ie)})}),jn(()=>{A.value.forEach(I=>{I.startsWith("blob:")&&URL.revokeObjectURL(I)}),A.value.clear(),Q.value.forEach(I=>{I.forEach(y=>{y.startsWith("blob:")&&URL.revokeObjectURL(y)}),I.clear()}),Q.value.clear()}),(I,y)=>(u(),f("div",VU,[n("div",BU,[y[37]||(y[37]=n("div",{class:"page-header"},[n("h1",{class:"page-title"},"消息通知"),n("p",{class:"page-description"},"查看你的举报处理、回复和互动通知")],-1)),n("div",jU,[n("div",qU,[(u(!0),f(ge,null,Ee(Je.value,N=>(u(),f("button",{key:N.id,class:$e(["tab-button",{active:r.value===N.id}]),onClick:le=>r.value=N.id},[m(b,{icon:N.icon,class:"tab-icon"},null,8,["icon"]),n("span",null,h(N.label),1),N.badge?(u(),f("span",zU,h(N.badge),1)):T("",!0)],10,HU))),128))])]),n("div",WU,[r.value==="system"?(u(),f("div",KU,[n("div",GU,[y[2]||(y[2]=n("h2",null,"系统通知",-1)),n("div",QU,[n("button",{class:"btn btn-secondary",onClick:R,disabled:Re.value===0},[m(b,{icon:"mdi:check-all",class:"btn-icon"}),y[1]||(y[1]=Ce(" 全部标记为已读 ",-1))],8,JU)])]),n("div",ZU,[(u(!0),f(ge,null,Ee(je.value,N=>(u(),f("div",{key:N.id,class:$e(["notification-item system-notification",{unread:!N.read,[N.type]:!0,expanded:c.value.has(N.id)}])},[n("div",XU,[m(b,{icon:P(N.type),class:"icon"},null,8,["icon"]),N.read?T("",!0):(u(),f("span",YU))]),n("div",eD,[n("div",tD,[n("h3",sD,h(N.title),1),n("span",nD,h(ae(N.createTime)),1)]),n("div",oD,[n("div",aD,h(N.content),1),c.value.has(N.id)?(u(),f("div",lD,[N.type==="issue_processed"&&N.issueDetails?(u(),f("div",iD,[n("div",rD,[y[3]||(y[3]=n("span",{class:"detail-label"},"应用:",-1)),n("span",cD,h(N.issueDetails.appName)+" ("+h(N.issueDetails.appVersion)+")",1)]),n("div",uD,[y[4]||(y[4]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",dD,[n("code",null,h(N.issueDetails.bundleId),1)])]),n("div",fD,[y[5]||(y[5]=n("span",{class:"detail-label"},"问题类型:",-1)),n("span",pD,h(N.issueDetails.errorTypeText||ke(N.issueDetails.errorType)),1)]),n("div",vD,[y[6]||(y[6]=n("span",{class:"detail-label"},"问题描述:",-1)),n("div",mD,h(N.issueDetails.content),1)]),n("div",hD,[y[7]||(y[7]=n("span",{class:"detail-label"},"处理状态:",-1)),n("span",gD,h(N.issueDetails.status==="resolved"?"已解决":"已驳回"),1)]),N.issueDetails.resolutionNote?(u(),f("div",yD,[y[8]||(y[8]=n("span",{class:"detail-label"},"处理说明:",-1)),n("div",bD,h(N.issueDetails.resolutionNote),1)])):T("",!0)])):T("",!0),N.type==="report_processed"&&N.reportDetails?(u(),f("div",_D,[n("div",wD,[y[9]||(y[9]=n("span",{class:"detail-label"},"被举报人:",-1)),n("span",kD,h(N.reportDetails.reportedUser),1)]),n("div",$D,[y[10]||(y[10]=n("span",{class:"detail-label"},"举报类型:",-1)),n("div",CD,[(u(!0),f(ge,null,Ee(N.reportDetails.reportTypes||[],le=>(u(),f("span",{key:le,class:$e(["report-type-tag",Z(jd)(le)])},h(Z(Bd)(le)),3))),128))])]),n("div",ID,[y[11]||(y[11]=n("span",{class:"detail-label"},"被举报内容:",-1)),n("div",SD,h(N.reportDetails.content),1)]),N.reportDetails.adminComment?(u(),f("div",AD,[y[12]||(y[12]=n("span",{class:"detail-label"},"管理员回复:",-1)),n("div",xD,h(N.reportDetails.adminComment),1)])):T("",!0)])):T("",!0),(N.type==="forum_request_approved"||N.type==="forum_request_rejected")&&N.requestDetails?(u(),f("div",TD,[n("div",ED,[y[13]||(y[13]=n("span",{class:"detail-label"},"应用名称:",-1)),n("span",RD,h(N.requestDetails.appName),1)]),n("div",UD,[y[14]||(y[14]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",DD,[n("code",null,h(N.requestDetails.bundleId),1)])]),N.type==="forum_request_rejected"&&N.requestDetails.reason?(u(),f("div",ND,[y[15]||(y[15]=n("span",{class:"detail-label"},"拒绝原因:",-1)),n("div",MD,h(N.requestDetails.reason),1)])):T("",!0)])):T("",!0)])):T("",!0)]),n("div",PD,[n("button",{class:"expand-btn",onClick:Be(le=>We(N.id),["stop"])},[m(b,{icon:c.value.has(N.id)?"mdi:chevron-up":"mdi:chevron-down",class:"expand-icon"},null,8,["icon"]),n("span",null,h(c.value.has(N.id)?"收起":"展开"),1)],8,LD)])])],2))),128)),je.value.length===0?(u(),f("div",OD,[m(b,{icon:"mdi:bell-off-outline",class:"empty-icon"}),y[16]||(y[16]=n("p",null,"暂无系统通知",-1))])):T("",!0)])])):T("",!0),r.value==="issues"?(u(),f("div",FD,[y[26]||(y[26]=n("div",{class:"section-header"},[n("h2",null,"问题报告"),n("p",{class:"section-description"},"查看你提交的问题报告和处理状态")],-1)),n("div",VD,[$.value?(u(),f("div",BD,[...y[17]||(y[17]=[n("div",{class:"spinner"},null,-1),n("p",null,"加载问题报告中...",-1)])])):g.value.length===0?(u(),f("div",jD,[m(b,{icon:"mdi:bug-check",class:"empty-icon"}),y[18]||(y[18]=n("p",null,"暂无问题报告",-1))])):(u(!0),f(ge,{key:2},Ee(g.value,N=>(u(),f("div",{key:N.id,class:$e(["notification-item issue-item",{expanded:c.value.has(N.id)}])},[n("div",qD,[N.appIconId&&V(N.id)?(u(),f("img",{key:0,src:V(N.id),alt:N.appName,class:"app-icon"},null,8,HD)):(u(),f("div",zD,h(N.appName.charAt(0).toUpperCase()),1))]),n("div",WD,[n("div",KD,[n("h3",GD,h(N.appName)+" ("+h(N.appVersion)+")",1),n("span",QD,h(ae(N.submitTime)),1)]),n("div",JD,[n("div",{class:$e(["issue-status",N.status])},[m(b,{icon:N.status==="resolved"?"mdi:check-circle":N.status==="rejected"?"mdi:close-circle":"mdi:clock-outline",class:"status-icon"},null,8,["icon"]),n("span",null,h(oe(N.status)),1)],2),n("div",ZD,[y[19]||(y[19]=n("span",{class:"issue-type-label"},"问题类型:",-1)),n("span",XD,h(ke(N.errorType)),1)]),n("div",YD,h(N.content),1),c.value.has(N.id)?(u(),f("div",eN,[n("div",tN,[n("div",sN,[y[20]||(y[20]=n("span",{class:"detail-label"},"Bundle ID:",-1)),n("span",nN,[n("code",null,h(N.bundleId),1)])]),n("div",oN,[y[21]||(y[21]=n("span",{class:"detail-label"},"系统信息:",-1)),n("span",aN,h(N.osVersion)+" ("+h(N.architecture)+")",1)]),N.screenshotAttachmentIds&&N.screenshotAttachmentIds.length>0?(u(),f("div",lN,[y[22]||(y[22]=n("span",{class:"detail-label"},"截图:",-1)),m(Dn,{images:E(N),"show-index":!1,columns:4,"max-width":80,onImageClick:le=>Y(N,le)},null,8,["images","onImageClick"])])):T("",!0),N.fileAttachmentIds&&N.fileAttachmentIds.length>0?(u(),f("div",iN,[y[23]||(y[23]=n("span",{class:"detail-label"},"文件:",-1)),n("div",rN,[(u(!0),f(ge,null,Ee(N.fileAttachmentIds,(le,ie)=>(u(),f("div",{key:`file-${ie}`,class:"attachment-item",onClick:Me=>ue(le)},[m(b,{icon:"mdi:file",class:"attachment-icon"}),n("span",uN,"文件 "+h(ie+1),1),m(b,{icon:"mdi:download",class:"attachment-action-icon",title:"下载"})],8,cN))),128))])])):T("",!0),N.resolutionNote?(u(),f("div",dN,[y[24]||(y[24]=n("span",{class:"detail-label"},"处理说明:",-1)),n("div",fN,h(N.resolutionNote),1)])):T("",!0),N.processedAt?(u(),f("div",pN,[y[25]||(y[25]=n("span",{class:"detail-label"},"处理时间:",-1)),n("span",vN,h(ae(N.processedAt)),1)])):T("",!0)])])):T("",!0)]),n("div",mN,[n("button",{class:"expand-btn",onClick:Be(le=>We(N.id),["stop"])},[m(b,{icon:c.value.has(N.id)?"mdi:chevron-up":"mdi:chevron-down",class:"expand-icon"},null,8,["icon"]),n("span",null,h(c.value.has(N.id)?"收起":"展开"),1)],8,hN)])])],2))),128))])])):T("",!0),r.value==="myReplies"?(u(),f("div",gN,[y[29]||(y[29]=n("div",{class:"section-header"},[n("h2",null,"我回复的"),n("p",{class:"section-description"},"查看你回复的帖子和回复")],-1)),n("div",yN,[(u(!0),f(ge,null,Ee(d.value,N=>(u(),f("div",{key:N.id,class:"notification-item",onClick:le=>xe(N.postId)},[n("div",_N,[m(b,{icon:"fluent-color:people-chat-48",class:"icon"})]),n("div",wN,[n("div",kN,[n("h3",$N,h(N.postTitle),1),n("span",CN,h(ae(N.replyTime)),1)]),n("div",IN,[y[27]||(y[27]=n("p",{class:"notification-text"},"你的回复:",-1)),n("div",SN,[n("div",AN,h(N.content),1),N.hasNewReplies?(u(),f("div",xN,[m(b,{icon:"mdi:message-reply-text"}),n("span",null,"有 "+h(N.newReplyCount)+" 条新回复",1)])):T("",!0)])])])],8,bN))),128)),d.value.length===0?(u(),f("div",TN,[m(b,{icon:"mdi:reply-outline",class:"empty-icon"}),y[28]||(y[28]=n("p",null,"暂无回复记录",-1))])):T("",!0)])])):T("",!0),r.value==="messages"?(u(),f("div",EN,[n("div",RN,[y[31]||(y[31]=n("h2",null,"私信",-1)),n("button",{class:"btn btn-primary",onClick:qe},[m(b,{icon:"fluent-color:comment-multiple-32",class:"btn-icon"}),y[30]||(y[30]=Ce(" 前往私信 ",-1))])]),n("div",UN,[(u(!0),f(ge,null,Ee(p.value,N=>(u(),f("div",{key:N.id,class:$e(["notification-item message-item",{unread:!N.read}]),onClick:qe},[n("div",DN,[m(b,{icon:"fluent-color:comment-multiple-32",class:"icon"}),N.read?T("",!0):(u(),f("span",NN))]),n("div",MN,[n("div",PN,[n("h3",LN,[n("span",ON,h(N.fromUserName),1),y[32]||(y[32]=n("span",null,"发来私信",-1))]),n("span",FN,h(ae(N.sendTime)),1)]),n("div",VN,[n("div",BN,h(N.content),1)])])],2))),128)),p.value.length===0?(u(),f("div",jN,[m(b,{icon:"fluent-color:comment-multiple-32",class:"empty-icon"}),y[33]||(y[33]=n("p",null,"暂无私信",-1))])):T("",!0)])])):T("",!0),r.value==="repliesToMe"?(u(),f("div",qN,[n("div",HN,[y[35]||(y[35]=n("h2",null,"回复我的",-1)),n("div",zN,[n("button",{class:"btn btn-secondary",onClick:De,disabled:ze.value===0},[m(b,{icon:"mdi:check-all",class:"btn-icon"}),y[34]||(y[34]=Ce(" 全部标记为已读 ",-1))],8,WN)])]),n("div",KN,[(u(!0),f(ge,null,Ee(v.value,N=>(u(),f("div",{key:N.id,class:$e(["notification-item",{unread:!N.read}]),onClick:le=>be(N)},[n("div",QN,[m(b,{icon:"fluent-color:people-list-16",class:"icon"}),N.read?T("",!0):(u(),f("span",JN))]),n("div",ZN,[n("div",XN,[n("h3",YN,[n("span",eM,h(N.userName),1),N.replyToUserName?(u(),f("span",tM," 回复了 @"+h(N.replyToUserName),1)):(u(),f("span",sM,"回复了你的帖子"))]),n("span",nM,h(ae(N.replyTime)),1)]),n("div",oM,[n("p",aM,'在帖子"'+h(N.postTitle)+'"中:',1),n("div",lM,[n("div",iM,h(N.content),1)])])])],10,GN))),128)),v.value.length===0?(u(),f("div",rM,[m(b,{icon:"mdi:message-outline",class:"empty-icon"}),y[36]||(y[36]=n("p",null,"暂无回复通知",-1))])):T("",!0)])])):T("",!0)])]),m(Gn,{visible:O.value,images:L.value,"initial-index":X.value,"show-navigation":!0,"show-info":!0,onClose:ne,onIndexChange:y[0]||(y[0]=N=>X.value=N)},null,8,["visible","images","initial-index"]),m(ds,{toasts:Z(s),onRemove:Z(i)},null,8,["toasts","onRemove"])]))}}),uM=tt(cM,[["__scopeId","data-v-f45bee74"]]),dM={class:"messages-page"},fM={class:"page-container"},pM={class:"page-header"},vM={class:"page-title"},mM={key:0,class:"title-badge"},hM={class:"messages-layout"},gM={class:"conversations-sidebar"},yM={class:"sidebar-header"},bM={class:"conversations-list"},_M={key:0,class:"conversations-loading"},wM=["onClick"],kM={class:"conversation-avatar"},$M={key:0,class:"unread-badge"},CM={class:"conversation-info"},IM={class:"conversation-header"},SM={class:"conversation-name"},AM={class:"conversation-time"},xM={class:"conversation-preview"},TM={class:"preview-text"},EM={key:0,class:"unread-indicator"},RM={key:2,class:"empty-conversations"},UM={class:"messages-content"},DM={key:0,class:"user-selection-view"},NM={class:"selection-header"},MM={class:"selection-search"},PM={class:"search-input-wrapper"},LM={class:"user-list-container"},OM={key:0,class:"users-loading"},FM={key:1,class:"users-error"},VM={key:2,class:"users-empty"},BM={key:3,class:"users-list"},jM=["onClick"],qM={class:"user-item-info"},HM={class:"user-item-name"},zM={key:0,class:"user-item-username"},WM={key:1,class:"user-item-username"},KM={key:1,class:"empty-conversation-view"},GM={key:2,class:"conversation-view"},QM={class:"conversation-header-bar"},JM={class:"header-user-info"},ZM={class:"user-details"},XM={class:"user-name"},YM={class:"user-status"},eP={key:0,class:"status-badge blocked"},tP={key:1,class:"status-badge muted"},sP={key:2},nP={class:"header-actions-group"},oP={key:0,class:"messages-loading"},aP={key:0,class:"message-avatar"},lP={class:"message-content-wrapper"},iP={class:"message-content"},rP={class:"message-text"},cP={key:0,class:"message-attachments"},uP=["onClick"],dP={class:"attachment-name"},fP={class:"attachment-size"},pP={class:"message-footer"},vP={class:"message-time"},mP={key:0,class:"message-status sending"},hP={key:1,class:"message-status sent"},gP={key:2,class:"message-status failed"},yP={key:1,class:"message-avatar"},bP={class:"message-input-area"},_P={key:0,class:"input-disabled-notice"},wP={key:1},kP={class:"input-toolbar"},$P=["disabled"],CP=["disabled"],IP=["onKeydown"],SP={key:2,class:"attachments-preview"},AP=["src"],xP=["onClick"],TP={class:"file-name"},EP=["onClick"],RP={key:3,class:"input-footer"},UP={class:"char-count"},DP=["disabled"],NP=Xe({__name:"Messages",setup(e){const t=as(),s=Wn(),{toasts:o,error:a,removeToast:l}=Kt(),i=zn(),{show:r,hide:c}=Kn(),{user:d}=qs(),{isAdmin:p}=Oo(),v=k([]),g=k(!1),_=k(!1),w=k(null),C=k(""),$=k([]),A=k([]),x=k(null),M=k(null),K=k(null),W=k(null),z=k(!1),re=k(null),V=k(!1),q=k(null),Q=k(!1),E=k(""),L=k([]),X=k(!1),O=k(""),Y=k(1),ne=k(50),ue=k(0),oe=ve(()=>v.value.find(j=>j.id===w.value)||null),ke=ve(()=>v.value.reduce((j,U)=>j+(U.unreadCount||0),0)),je=ve(()=>C.value.trim().length>0||$.value.length>0||A.value.length>0),ze=async j=>{Q.value=!1,w.value=j;const U=v.value.find(F=>F.id===j);U&&(U.unreadCount=0,(!U.messages||U.messages.length===0)&&await we(j)),Ct(()=>{dt()})},Re=async(j=!1)=>{!j&&v.value.length===0&&(g.value=!0);try{const U=await te.getConversations(1,100);if(U.success&&U.data){const F=U.data.conversations.map(Ye=>{var ft;return{id:Ye.id,userId:Ye.userId,userName:Ye.userName,userAvatar:Ye.userAvatar||Ye.avatar,lastMessage:Ye.lastMessage,lastMessageTime:Ye.lastMessageTime,unreadCount:Ye.unreadCount||0,messages:((ft=v.value.find(rt=>rt.id===Ye.id))==null?void 0:ft.messages)||[],blocked:Ye.blocked||!1,muted:Ye.muted||!1}}),G=new Map(v.value.map(Ye=>[Ye.id,Ye])),pe=F.filter(Ye=>!G.has(Ye.id)&&Ye.lastMessage&&Ye.lastMessage.trim().length>0),Pe=F.filter(Ye=>!G.has(Ye.id)&&(!Ye.lastMessage||Ye.lastMessage.trim().length===0)),Ve=[],Ue=[];F.forEach(Ye=>{const ft=G.get(Ye.id);if(ft){const rt=ft.lastMessageTime!==Ye.lastMessageTime&&Ye.lastMessage&&Ye.lastMessage.trim().length>0,yt=ft.unreadCount!==Ye.unreadCount;rt||yt?Ve.push({...Ye,messages:ft.messages||[]}):Ue.push(ft)}}),v.value.length===0?v.value=F:v.value=[...Ve,...pe,...Ue,...Pe]}else j||(v.value=[])}catch(U){console.error("加载会话列表失败:",U),j||(a("加载会话列表失败",2e3),v.value=[])}finally{g.value=!1}window.dispatchEvent(new CustomEvent("messages:conversations-updated"))},we=async j=>{_.value=!0;try{const U=await te.getConversationMessages(j,1,100);if(U.success&&U.data){const F=v.value.find(G=>G.id===j);F&&(F.messages=U.data.messages.map(G=>({id:G.id,content:G.content,sendTime:G.sendTime,sent:G.sent,status:G.sent?"sent":void 0,attachments:G.attachments})))}}catch(U){console.error("加载消息列表失败:",U),a("加载消息列表失败",2e3)}finally{_.value=!1}},Ne=()=>{Q.value=!0,w.value=null,E.value="",Y.value=1,We()},Je=()=>{Q.value=!1,E.value="",Y.value=1},We=async()=>{X.value=!0,O.value="";try{const j=await te.getUsersForChat(Y.value,ne.value,E.value||void 0);j.users&&Array.isArray(j.users)?(L.value=j.users.map(U=>{var F;return{id:U.id||U._id||((F=U._id)==null?void 0:F.toString()),username:U.username||"",nickName:U.nickName||"",avatar:U.avatar||"",age:U.age}}),ue.value=j.total||0):O.value="加载用户列表失败"}catch(j){console.error("加载用户列表失败:",j),O.value=j.message||"加载用户列表失败"}finally{X.value=!1}},ae=()=>{clearTimeout(ae.timer),ae.timer=setTimeout(()=>{Y.value=1,We()},300)},xe=()=>{E.value="",Y.value=1,We()},be=ve(()=>{if(!E.value.trim())return L.value;const j=E.value.toLowerCase();return L.value.filter(U=>U.username&&U.username.toLowerCase().includes(j)||U.nickName&&U.nickName.toLowerCase().includes(j))}),De=async j=>{Je(),await qe(j.id)},qe=async j=>{r("创建会话...");try{const U=await te.getOrCreateConversationByUserId(j);if(U.success&&U.data){const{conversationId:F,userName:G}=U.data;if(v.value.find(Pe=>Pe.id===F))w.value=F,await ze(F);else{let Pe;try{const Ue=await te.getUserInfo(j);Ue&&(Pe=Ue.avatar)}catch(Ue){console.warn("获取用户信息失败:",Ue)}const Ve={id:F,userId:j,userName:G,userAvatar:Pe,lastMessage:"",lastMessageTime:new Date().toISOString(),unreadCount:0,messages:[],blocked:!1,muted:!1};v.value.push(Ve),w.value=F,await ze(F)}t.replace({path:"/messages",query:{}})}else a(U.message||"创建会话失败",2e3)}catch(U){console.error("创建会话失败:",U),a("创建会话失败",2e3)}finally{c()}},P=()=>{oe.value&&(re.value={userId:oe.value.userId,userName:oe.value.userName,content:"",type:void 0},z.value=!0,V.value=!1)},R=async()=>{if(oe.value){r("设置拒收...");try{const j=await te.setConversationMute(oe.value.id,!0);j.success?(oe.value.muted=!0,V.value=!1):a(j.message||"操作失败",2e3)}catch(j){console.error("设置拒收失败:",j),a("设置拒收失败",2e3)}finally{c()}}},S=async()=>{if(oe.value){r("取消拒收...");try{const j=await te.setConversationMute(oe.value.id,!1);j.success?(oe.value.muted=!1,V.value=!1):a(j.message||"操作失败",2e3)}catch(j){console.error("取消拒收失败:",j),a("取消拒收失败",2e3)}finally{c()}}},J=async()=>{if(!oe.value)return;if(await i.show({title:"拉黑用户",message:`确定要拉黑用户"${oe.value.userName}"吗?拉黑后将无法接收该用户的消息。`,type:"warning",confirmText:"拉黑",cancelText:"取消"})){r("拉黑用户...");try{const U=await te.setConversationBlock(oe.value.id,!0);U.success?(oe.value.blocked=!0,oe.value.muted=!0,V.value=!1):a(U.message||"操作失败",2e3)}catch(U){console.error("拉黑用户失败:",U),a("拉黑用户失败",2e3)}finally{c()}}},ee=async()=>{if(oe.value){r("取消拉黑...");try{const j=await te.setConversationBlock(oe.value.id,!1);j.success?(oe.value.blocked=!1,V.value=!1):a(j.message||"操作失败",2e3)}catch(j){console.error("取消拉黑失败:",j),a("取消拉黑失败",2e3)}finally{c()}}},I=j=>{const U=j.target;q.value&&!q.value.contains(U)&&(V.value=!1)},y=async()=>{var G,pe;if(!je.value||!oe.value)return;if($.value.length>0||A.value.length>0){a("附件功能暂未实现",2e3);return}const j=C.value.trim();if(!j)return;const U=`temp-${Date.now()}-${Math.random()}`,F={id:U,content:j,sendTime:new Date().toISOString(),sent:!0,status:"sending"};oe.value.messages.push(F),C.value="",$.value=[],A.value=[],Ct(()=>{dt()});try{const Pe=await te.sendMessage(oe.value.id,j);if(Pe.success&&Pe.data){const Ve=oe.value.messages.findIndex(Ue=>Ue.id===U);Ve!==-1&&(oe.value.messages[Ve]={id:Pe.data.messageId,content:Pe.data.content,sendTime:Pe.data.sendTime,sent:!0,status:"sent"}),oe.value.lastMessage=j,oe.value.lastMessageTime=Pe.data.sendTime,window.dispatchEvent(new CustomEvent("messages:conversations-updated"))}else{const Ve=oe.value.messages.findIndex(Ue=>Ue.id===U);Ve!==-1&&(oe.value.messages[Ve].status="failed"),a(Pe.message||"发送失败",2e3)}}catch(Pe){console.error("发送消息失败:",Pe);const Ve=oe.value.messages.findIndex(Ue=>Ue.id===U);Ve!==-1&&(oe.value.messages[Ve].status="failed"),a(((pe=(G=Pe.response)==null?void 0:G.data)==null?void 0:pe.message)||"发送消息失败",2e3)}},N=()=>{var j;(j=x.value)==null||j.click()},le=()=>{var j;(j=M.value)==null||j.click()},ie=j=>{const U=j.target,F=Array.from(U.files||[]),G=10*1024*1024;F.forEach(pe=>{if($.value.length>=5)return;if(pe.size>G){a("图片大小不能超过10MB",2e3);return}const Pe=new FileReader;Pe.onload=Ve=>{var Ue;$.value.push({file:pe,preview:(Ue=Ve.target)==null?void 0:Ue.result})},Pe.readAsDataURL(pe)}),U.value=""},Me=j=>{const U=j.target,F=Array.from(U.files||[]),G=20*1024*1024;F.forEach(pe=>{if(!(A.value.length>=5)){if(pe.size>G){a("文件大小不能超过20MB",2e3);return}A.value.push({file:pe})}}),U.value=""},Ie=j=>{$.value.splice(j,1)},Le=j=>{A.value.splice(j,1)},He=j=>{j.type==="image"?W.value=j.url:Ge(j)},Ge=j=>{const U=document.createElement("a");U.href=j.url||"#",U.download=j.name,U.target="_blank",document.body.appendChild(U),U.click(),document.body.removeChild(U)},me=()=>{W.value=null},Ze=j=>{const U=new Date(j),G=new Date().getTime()-U.getTime(),pe=Math.floor(G/6e4),Pe=Math.floor(G/36e5),Ve=Math.floor(G/864e5);return pe<1?"刚刚":pe<60?`${pe}分钟前`:Pe<24?`${Pe}小时前`:Ve<7?`${Ve}天前`:U.toLocaleDateString("zh-CN")},ut=j=>j<1024?`${j} B`:j<1024*1024?`${(j/1024).toFixed(1)} KB`:`${(j/(1024*1024)).toFixed(1)} MB`,dt=()=>{K.value&&(K.value.scrollTop=K.value.scrollHeight)};let kt=null;const St=async()=>{document.hidden||await Re(!0)},he=async()=>{await Re(!0)};return vt(async()=>{await Re();const j=s.query.userId;j&&await qe(j),document.addEventListener("click",I),kt=window.setInterval(async()=>{await Re(!0)},5e3),document.addEventListener("visibilitychange",St),window.addEventListener("focus",he)}),at(()=>s.query.userId,async j=>{j&&typeof j=="string"&&(v.value.length===0&&await Re(),await qe(j))}),Wt(()=>{document.removeEventListener("click",I),document.removeEventListener("visibilitychange",St),window.removeEventListener("focus",he),kt!==null&&(clearInterval(kt),kt=null)}),(j,U)=>(u(),f(ge,null,[n("div",dM,[n("div",fM,[n("div",pM,[n("h1",vM,[U[4]||(U[4]=Ce(" 私信 ",-1)),ke.value>0?(u(),f("span",mM,h(ke.value>99?"99+":ke.value),1)):T("",!0)]),U[5]||(U[5]=n("p",{class:"page-description"},"与用户进行一对一私信交流",-1))]),n("div",hM,[n("div",gM,[n("div",yM,[U[7]||(U[7]=n("h2",null,"会话列表",-1)),n("button",{class:"new-conversation-btn",onClick:Ne},[m(b,{icon:"mdi:plus",class:"btn-icon"}),U[6]||(U[6]=Ce(" 新会话 ",-1))])]),n("div",bM,[g.value&&v.value.length===0?(u(),f("div",_M,[m(b,{icon:"mdi:loading",class:"loading-icon spinning"}),U[8]||(U[8]=n("span",null,"加载会话列表...",-1))])):(u(),Ke(Lu,{key:1,name:"conversation-list",tag:"div",class:"conversations-transition-wrapper"},{default:pt(()=>[(u(!0),f(ge,null,Ee(v.value,F=>(u(),f("div",{key:F.id,class:$e(["conversation-item",{active:w.value===F.id}]),onClick:G=>ze(F.id)},[n("div",kM,[m(Ft,{"user-id":F.userId,"user-name":F.userName,width:40,height:40},null,8,["user-id","user-name"]),F.unreadCount>0?(u(),f("span",$M,h(F.unreadCount),1)):T("",!0)]),n("div",CM,[n("div",IM,[n("span",SM,h(F.userName),1),n("span",AM,h(Ze(F.lastMessageTime)),1)]),n("div",xM,[n("span",TM,h(F.lastMessage),1),F.unreadCount>0?(u(),f("span",EM)):T("",!0)])])],10,wM))),128))]),_:1})),!g.value&&v.value.length===0?(u(),f("div",RM,[m(b,{icon:"fluent-color:comment-multiple-32",class:"empty-icon"}),U[9]||(U[9]=n("p",null,"暂无会话",-1))])):T("",!0)])]),n("div",UM,[Q.value?(u(),f("div",DM,[n("div",NM,[U[10]||(U[10]=n("h2",null,"选择用户开始聊天",-1)),n("button",{class:"close-btn",onClick:Je},[m(b,{icon:"mdi:close"})])]),n("div",MM,[n("div",PM,[m(b,{icon:"mdi:magnify",class:"search-icon"}),Qe(n("input",{"onUpdate:modelValue":U[0]||(U[0]=F=>E.value=F),type:"text",placeholder:"搜索用户名或昵称...",class:"search-input",onInput:ae},null,544),[[ot,E.value]]),E.value?(u(),f("button",{key:0,class:"clear-search-btn",onClick:xe},[m(b,{icon:"mdi:close-circle"})])):T("",!0)])]),n("div",LM,[X.value?(u(),f("div",OM,[m(b,{icon:"mdi:loading",class:"loading-icon spinning"}),U[11]||(U[11]=n("span",null,"加载用户列表...",-1))])):O.value?(u(),f("div",FM,[m(b,{icon:"mdi:alert-circle",class:"error-icon"}),n("p",null,h(O.value),1),n("button",{class:"retry-btn",onClick:We},"重试")])):be.value.length===0?(u(),f("div",VM,[m(b,{icon:"mdi:account-off",class:"empty-icon"}),n("p",null,h(E.value?"未找到匹配的用户":"暂无用户"),1)])):(u(),f("div",BM,[(u(!0),f(ge,null,Ee(be.value,F=>(u(),f("div",{key:F.id,class:"user-item",onClick:G=>De(F)},[m(Ft,{"user-id":F.id,"user-name":F.nickName||F.username,width:48,height:48},null,8,["user-id","user-name"]),n("div",qM,[n("div",HM,h(F.nickName||F.username||"未知用户"),1),F.username?(u(),f("div",zM,"@"+h(F.username),1)):F.age?(u(),f("div",WM,"年龄: "+h(F.age),1)):T("",!0)]),m(b,{icon:"mdi:chevron-right",class:"chevron-icon"})],8,jM))),128))]))])])):oe.value?(u(),f("div",GM,[n("div",QM,[n("div",JM,[m(Ft,{"user-id":oe.value.userId,"user-name":oe.value.userName,width:40,height:40},null,8,["user-id","user-name"]),n("div",ZM,[n("h3",XM,h(oe.value.userName),1),n("span",YM,[oe.value.blocked?(u(),f("span",eP,"已拉黑")):oe.value.muted?(u(),f("span",tP,"已拒收")):(u(),f("span",sP,"在线"))])])]),n("div",nP,[n("button",{class:"header-action-btn report-btn",onClick:P},[m(b,{icon:"mdi:flag-outline"})]),n("div",{class:"more-actions-wrapper",ref_key:"moreActionsRef",ref:q},[n("button",{class:"header-action-btn",onClick:U[1]||(U[1]=F=>V.value=!V.value)},[m(b,{icon:"mdi:dots-vertical"})]),m(It,{name:"menu-fade"},{default:pt(()=>[V.value?(u(),f("div",{key:0,class:"more-actions-menu",onClick:U[2]||(U[2]=Be(()=>{},["stop"]))},[oe.value.muted?(u(),f("div",{key:1,class:"menu-item",onClick:S},[m(b,{icon:"mdi:bell-outline",class:"menu-icon"}),U[14]||(U[14]=n("span",null,"接收消息",-1))])):(u(),f("div",{key:0,class:"menu-item",onClick:R},[m(b,{icon:"mdi:bell-off-outline",class:"menu-icon"}),U[13]||(U[13]=n("span",null,"拒收消息",-1))])),oe.value.blocked?(u(),f("div",{key:3,class:"menu-item",onClick:ee},[m(b,{icon:"mdi:account-check-outline",class:"menu-icon"}),U[16]||(U[16]=n("span",null,"取消拉黑",-1))])):(u(),f("div",{key:2,class:"menu-item danger",onClick:J},[m(b,{icon:"mdi:block-helper",class:"menu-icon"}),U[15]||(U[15]=n("span",null,"拉黑用户",-1))]))])):T("",!0)]),_:1})],512)])]),n("div",{class:"messages-list",ref_key:"messagesListRef",ref:K},[_.value?(u(),f("div",oP,[m(b,{icon:"mdi:loading",class:"loading-icon spinning"}),U[17]||(U[17]=n("span",null,"加载消息...",-1))])):(u(!0),f(ge,{key:1},Ee(oe.value.messages,F=>{var G,pe,Pe,Ve;return u(),f("div",{key:F.id,class:$e(["message-item",{sent:F.sent,received:!F.sent}])},[F.sent?T("",!0):(u(),f("div",aP,[m(Ft,{"user-id":oe.value.userId,"user-name":oe.value.userName,width:40,height:40},null,8,["user-id","user-name"])])),n("div",lP,[n("div",iP,[n("p",rP,h(F.content),1),F.attachments&&F.attachments.length>0?(u(),f("div",cP,[(u(!0),f(ge,null,Ee(F.attachments,Ue=>(u(),f("div",{key:Ue.id,class:"attachment-item",onClick:Ye=>He(Ue)},[m(b,{icon:Ue.type==="image"?"mdi:image":"mdi:file",class:"attachment-icon"},null,8,["icon"]),n("span",dP,h(Ue.name),1),n("span",fP,h(ut(Ue.size)),1)],8,uP))),128))])):T("",!0),n("div",pP,[n("span",vP,h(Ze(F.sendTime)),1),F.sent&&F.status==="sending"?(u(),f("span",mP,[m(b,{icon:"mdi:loading",class:"status-icon spinning"})])):F.sent&&F.status==="sent"?(u(),f("span",hP,[m(b,{icon:"mdi:check-circle",class:"status-icon"})])):F.sent&&F.status==="failed"?(u(),f("span",gP,[m(b,{icon:"mdi:alert-circle",class:"status-icon",title:"发送失败"})])):T("",!0)])])]),F.sent?(u(),f("div",yP,[m(Ft,{"user-id":((G=Z(d))==null?void 0:G.id)||((pe=Z(d))==null?void 0:pe._id),"user-name":((Pe=Z(d))==null?void 0:Pe.nickName)||((Ve=Z(d))==null?void 0:Ve.username)||"我",width:40,height:40},null,8,["user-id","user-name"])])):T("",!0)],2)}),128))],512),n("div",bP,[oe.value.blocked||oe.value.muted?(u(),f("div",_P,[m(b,{icon:oe.value.blocked?"mdi:block-helper":"mdi:bell-off-outline",class:"notice-icon"},null,8,["icon"]),n("span",null,h(oe.value.blocked?"该用户已被拉黑,无法发送消息":"已拒收该用户的消息"),1)])):(u(),f("div",wP,[n("div",kP,[n("button",{class:"toolbar-btn",onClick:N,disabled:$.value.length>=5,title:"添加图片最多5张每张10M以内"},[m(b,{icon:"mdi:image-outline"})],8,$P),n("button",{class:"toolbar-btn",onClick:le,disabled:A.value.length>=5,title:"添加文件最多5个每个20M以内"},[m(b,{icon:"mdi:file-outline"})],8,CP)]),Qe(n("textarea",{"onUpdate:modelValue":U[3]||(U[3]=F=>C.value=F),class:"message-textarea",placeholder:"输入消息...",rows:"3",maxlength:"2000",onKeydown:mn(Be(y,["ctrl"]),["enter"])},null,40,IP),[[ot,C.value]])])),!oe.value.blocked&&!oe.value.muted&&($.value.length>0||A.value.length>0)?(u(),f("div",SP,[(u(!0),f(ge,null,Ee($.value,(F,G)=>(u(),f("div",{key:`img-${G}`,class:"attachment-preview-item"},[n("img",{src:F.preview,alt:"预览"},null,8,AP),n("button",{class:"remove-btn",onClick:pe=>Ie(G)},[m(b,{icon:"mdi:close"})],8,xP)]))),128)),(u(!0),f(ge,null,Ee(A.value,(F,G)=>(u(),f("div",{key:`file-${G}`,class:"attachment-preview-item file"},[m(b,{icon:"mdi:file"}),n("span",TP,h(F.file.name),1),n("button",{class:"remove-btn",onClick:pe=>Le(G)},[m(b,{icon:"mdi:close"})],8,EP)]))),128))])):T("",!0),!oe.value.blocked&&!oe.value.muted?(u(),f("div",RP,[n("span",UP,h(C.value.length)+"/2000",1),n("button",{class:"send-btn",onClick:y,disabled:!je.value},[m(b,{icon:"mdi:send",class:"btn-icon"}),U[18]||(U[18]=Ce(" 发送 ",-1))],8,DP)])):T("",!0),n("input",{ref_key:"imageInput",ref:x,type:"file",accept:"image/*",multiple:"",onChange:ie,style:{display:"none"}},null,544),n("input",{ref_key:"fileInput",ref:M,type:"file",multiple:"",onChange:Me,style:{display:"none"}},null,544)])])):(u(),f("div",KM,[m(b,{icon:"fluent-color:chat-32",class:"empty-icon"}),U[12]||(U[12]=n("p",{class:"empty-text"},"选择一个会话开始聊天",-1))]))])])]),m(Gn,{visible:!!W.value,"image-url":W.value,onClose:me},null,8,["visible","image-url"])]),m(_n,{visible:Z(i).visible.value,title:Z(i).config.value.title||"",message:Z(i).config.value.message||"",type:Z(i).config.value.type,"confirm-text":Z(i).config.value.confirmText,"cancel-text":Z(i).config.value.cancelText,onConfirm:Z(i).handleConfirm,onCancel:Z(i).handleCancel},null,8,["visible","title","message","type","confirm-text","cancel-text","onConfirm","onCancel"]),m(ds,{toasts:Z(o),onRemove:Z(l)},null,8,["toasts","onRemove"]),m(Ld)],64))}}),MP=tt(NP,[["__scopeId","data-v-962d7d00"]]),PP=[{path:"/",name:"Home",component:J2},{path:"/apps",name:"Apps",component:R6},{path:"/official",name:"OfficialApps",component:Z6},{path:"/app/:bundleId",name:"AppDetail",component:u5,props:!0},{path:"/downloads",name:"DownloadManager",component:G5},{path:"/settings",name:"Settings",component:K8},{path:"/profile",name:"Profile",component:c6,beforeEnter:async(e,t,s)=>{const{useAuth:o}=await uc(async()=>{const{useAuth:l}=await Promise.resolve().then(()=>e1);return{useAuth:l}},void 0),{isLoggedIn:a}=o();a.value?s():s({path:"/",replace:!0})}},{path:"/new-features",name:"NewFeatures",component:b6},{path:"/discussion",name:"DiscussionForums",component:wS},{path:"/discussion/:bundleId",name:"DiscussionForum",component:cx,props:!0},{path:"/discussion/:bundleId/post/:postId",name:"PostDetail",component:dT,props:!0},{path:"/admin",name:"AdminPanel",component:FU,beforeEnter:async(e,t,s)=>{const{usePermission:o}=await uc(async()=>{const{usePermission:l}=await Promise.resolve().then(()=>jb);return{usePermission:l}},void 0),{isAdmin:a}=o();a.value?s():s({path:"/",replace:!0})}},{path:"/notifications",name:"Notifications",component:uM},{path:"/messages",name:"Messages",component:MP}],LP=Bb({history:bb(),routes:PP}),Ii=Iv(d0);Ii.use(Tv());Ii.use(LP);Ii.mount("#app");