import{g as ha,u as wa,e as Ie,b as kt,h as ma,m as va,i as ga,j as Ut,k as pa,V as rn,l as ba,n as ya,p as Ht,d as on,o as xa,q as Sa,r as ka,_ as un,a as _a,c as Ca,f as $t}from"./VTextarea-C8XXR9eK.js";import{aq as Va,p as X,m as _t,ar as Ct,x as Be,as as Ue,a3 as ye,g as fe,Q as we,S as Vt,f as E,at as nt,t as Y,j as ve,k as a,au as Fe,av as Tt,aw as Ta,s as be,r as de,ax as dn,T as q,ay as Da,az as Pa,H as oe,V as ee,aA as Ne,aB as cn,a8 as Pe,aC as Ia,u as fn,ad as Ge,aD as bt,X as hn,e as Dt,a9 as Te,z as $e,w as at,aE as Ea,aF as He,aG as je,aH as st,aI as Pt,L as Aa,h as La,ac as wn,aJ as Ba,l as Se,N as Fa,ai as ze,aK as Na,a5 as mn,J as S,W as vn,aL as Oa,aM as zt,aN as gn,aO as pn,aP as Ma,_ as ge,aQ as bn,Z as W,an as It,aR as Ra,F as re,D as j,B as me,E as u,K as ne,G as ue,A as Z,$ as z,am as ja,aS as tt,ap as yn,ao as yt,I as ot,aT as Kt,aU as xn,aV as Ua,aW as Ha,aX as $a,aY as Wt,a1 as Gt,aZ as za,aj as Ka,a as Sn,aa as Xe,a_ as Wa,n as kn,a$ as Ga,o as Qa,v as qa,y as Ja,b0 as Qt,b1 as Ya,b2 as Xa,b3 as Za,b4 as lt,b5 as Ze,b6 as es,b7 as Et,b8 as et,a6 as vt,C as Ke,b9 as ts,ba as ns,bb as as}from"./index-8poTKozu.js";import{u as ss,c as ke,d as se,a as Le,m as ls,h as is,f as ce,g as Ve,e as ie,V as At,i as _n}from"./VList-Cry1xU1c.js";import{h as Lt,a as Oe,b as De,i as Bt,V as Ee,l as Ft,g as We,e as he,k as Cn,f as rs,d as os}from"./VRow-NdBw-Mb_.js";import{V as us,a as ds,b as cs,c as fs,d as hs}from"./VExpansionPanels-DVSVH1dW.js";import"./ssrBoot-pSHlH0et.js";function qt(e,t,n){return Object.keys(e).filter(s=>Va(s)&&s.endsWith(t)).reduce((s,l)=>(s[l.slice(0,-t.length)]=r=>e[l](r,n(r)),s),{})}const Vn=Symbol.for("vuetify:selection-control-group"),Tn=X({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:ye,trueIcon:ye,ripple:{type:[Boolean,Object],default:!0},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:Ue},...Be(),...Ct(),..._t()},"SelectionControlGroup"),ws=X({...Tn({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");fe()({name:"VSelectionControlGroup",props:ws(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const s=we(e,"modelValue"),l=Vt(),r=E(()=>e.id||`v-selection-control-group-${l}`),i=E(()=>e.name||r.value),o=new Set;return Fe(Vn,{modelValue:s,forceUpdate:()=>{o.forEach(c=>c())},onForceUpdate:c=>{o.add(c),Tt(()=>{o.delete(c)})}}),nt({[e.defaultsTarget]:{color:Y(e,"color"),disabled:Y(e,"disabled"),density:Y(e,"density"),error:Y(e,"error"),inline:Y(e,"inline"),modelValue:s,multiple:E(()=>!!e.multiple||e.multiple==null&&Array.isArray(s.value)),name:i,falseIcon:Y(e,"falseIcon"),trueIcon:Y(e,"trueIcon"),readonly:Y(e,"readonly"),ripple:Y(e,"ripple"),type:Y(e,"type"),valueComparator:Y(e,"valueComparator")}}),ve(()=>{var c;return a("div",{class:["v-selection-control-group",{"v-selection-control-group--inline":e.inline},e.class],style:e.style,role:e.type==="radio"?"radiogroup":void 0},[(c=n.default)==null?void 0:c.call(n)])}),{}}});const Nt=X({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...Be(),...Tn()},"VSelectionControl");function ms(e){const t=Ne(Vn,void 0),{densityClasses:n}=cn(e),s=we(e,"modelValue"),l=E(()=>e.trueValue!==void 0?e.trueValue:e.value!==void 0?e.value:!0),r=E(()=>e.falseValue!==void 0?e.falseValue:!1),i=E(()=>!!e.multiple||e.multiple==null&&Array.isArray(s.value)),o=E({get(){const v=t?t.modelValue.value:s.value;return i.value?Pe(v).some(p=>e.valueComparator(p,l.value)):e.valueComparator(v,l.value)},set(v){if(e.readonly)return;const p=v?l.value:r.value;let x=p;i.value&&(x=v?[...Pe(s.value),p]:Pe(s.value).filter(b=>!e.valueComparator(b,l.value))),t?t.modelValue.value=x:s.value=x}}),{textColorClasses:c,textColorStyles:h}=Ia(E(()=>{if(!(e.error||e.disabled))return o.value?e.color:e.baseColor})),{backgroundColorClasses:f,backgroundColorStyles:m}=fn(E(()=>o.value&&!e.error&&!e.disabled?e.color:e.baseColor)),g=E(()=>o.value?e.trueIcon:e.falseIcon);return{group:t,densityClasses:n,trueValue:l,falseValue:r,model:o,textColorClasses:c,textColorStyles:h,backgroundColorClasses:f,backgroundColorStyles:m,icon:g}}const it=fe()({name:"VSelectionControl",directives:{Ripple:Ta},inheritAttrs:!1,props:Nt(),emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:n,slots:s}=t;const{group:l,densityClasses:r,icon:i,model:o,textColorClasses:c,textColorStyles:h,backgroundColorClasses:f,backgroundColorStyles:m,trueValue:g}=ms(e),v=Vt(),p=be(!1),x=be(!1),b=de(),_=E(()=>e.id||`input-${v}`),w=E(()=>!e.disabled&&!e.readonly);l==null||l.onForceUpdate(()=>{b.value&&(b.value.checked=o.value)});function C(H){w.value&&(p.value=!0,bt(H.target,":focus-visible")!==!1&&(x.value=!0))}function I(){p.value=!1,x.value=!1}function A(H){H.stopPropagation()}function Q(H){if(!w.value){b.value&&(b.value.checked=o.value);return}e.readonly&&l&&Ge(()=>l.forceUpdate()),o.value=H.target.checked}return ve(()=>{var M,P;const H=s.label?s.label({label:e.label,props:{for:_.value}}):e.label,[D,y]=dn(n),B=a("input",q({ref:b,checked:o.value,disabled:!!e.disabled,id:_.value,onBlur:I,onFocus:C,onInput:Q,"aria-disabled":!!e.disabled,"aria-label":e.label,type:e.type,value:g.value,name:e.name,"aria-checked":e.type==="checkbox"?o.value:void 0},y),null);return a("div",q({class:["v-selection-control",{"v-selection-control--dirty":o.value,"v-selection-control--disabled":e.disabled,"v-selection-control--error":e.error,"v-selection-control--focused":p.value,"v-selection-control--focus-visible":x.value,"v-selection-control--inline":e.inline},r.value,e.class]},D,{style:e.style}),[a("div",{class:["v-selection-control__wrapper",c.value],style:h.value},[(M=s.default)==null?void 0:M.call(s,{backgroundColorClasses:f,backgroundColorStyles:m}),Da(a("div",{class:["v-selection-control__input"]},[((P=s.input)==null?void 0:P.call(s,{model:o,textColorClasses:c,textColorStyles:h,backgroundColorClasses:f,backgroundColorStyles:m,inputNode:B,icon:i.value,props:{onFocus:C,onBlur:I,id:_.value}}))??a(oe,null,[i.value&&a(ee,{key:"icon",icon:i.value},null),B])]),[[Pa("ripple"),e.ripple&&[!e.disabled&&!e.readonly,null,["center","circle"]]]])]),H&&a(ha,{for:_.value,onClick:A},{default:()=>[H]})])}),{isFocused:p,input:b}}}),vs=X({indeterminate:Boolean,indeterminateIcon:{type:ye,default:"$checkboxIndeterminate"},...Nt({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),ut=fe()({name:"VCheckboxBtn",props:vs(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{slots:n}=t;const s=we(e,"indeterminate"),l=we(e,"modelValue");function r(c){s.value&&(s.value=!1)}const i=E(()=>s.value?e.indeterminateIcon:e.falseIcon),o=E(()=>s.value?e.indeterminateIcon:e.trueIcon);return ve(()=>{const c=hn(it.filterProps(e),["modelValue"]);return a(it,q(c,{modelValue:l.value,"onUpdate:modelValue":[h=>l.value=h,r],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:o.value,"aria-checked":s.value?"mixed":void 0}),n)}),{}}}),gs=X({renderless:Boolean,...Be()},"VVirtualScrollItem"),ps=fe()({name:"VVirtualScrollItem",inheritAttrs:!1,props:gs(),emits:{"update:height":e=>!0},setup(e,t){let{attrs:n,emit:s,slots:l}=t;const{resizeRef:r,contentRect:i}=Dt(void 0,"border");Te(()=>{var o;return(o=i.value)==null?void 0:o.height},o=>{o!=null&&s("update:height",o)}),ve(()=>{var o,c;return e.renderless?a(oe,null,[(o=l.default)==null?void 0:o.call(l,{itemRef:r})]):a("div",q({ref:r,class:["v-virtual-scroll__item",e.class],style:e.style},n),[(c=l.default)==null?void 0:c.call(l)])})}}),bs=-1,ys=1,gt=100,xs=X({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function Ss(e,t){const n=$e(),s=be(0);at(()=>{s.value=parseFloat(e.itemHeight||0)});const l=be(0),r=be(Math.ceil((parseInt(e.height)||n.height.value)/(s.value||16))||1),i=be(0),o=be(0),c=de(),h=de();let f=0;const{resizeRef:m,contentRect:g}=Dt();at(()=>{m.value=c.value});const v=E(()=>{var d;return c.value===document.documentElement?n.height.value:((d=g.value)==null?void 0:d.height)||parseInt(e.height)||0}),p=E(()=>!!(c.value&&h.value&&v.value&&s.value));let x=Array.from({length:t.value.length}),b=Array.from({length:t.value.length});const _=be(0);let w=-1;function C(d){return x[d]||s.value}const I=Ea(()=>{const d=performance.now();b[0]=0;const $=t.value.length;for(let k=1;k<=$-1;k++)b[k]=(b[k-1]||0)+C(k-1);_.value=Math.max(_.value,performance.now()-d)},_),A=Te(p,d=>{d&&(A(),f=h.value.offsetTop,I.immediate(),V(),~w&&Ge(()=>{st&&window.requestAnimationFrame(()=>{U(w),w=-1})}))});Tt(()=>{I.clear()});function Q(d,$){const k=x[d],O=s.value;s.value=O?Math.min(s.value,$):$,(k!==$||O!==s.value)&&(x[d]=$,I())}function H(d){return d=He(d,0,t.value.length-1),b[d]||0}function D(d){return ks(b,d)}let y=0,B=0,M=0;Te(v,(d,$)=>{$&&(V(),d<$&&requestAnimationFrame(()=>{B=0,V()}))});let P=-1;function J(){if(!c.value||!h.value)return;const d=c.value.scrollTop,$=performance.now();$-M>500?(B=Math.sign(d-y),f=h.value.offsetTop):B=d-y,y=d,M=$,window.clearTimeout(P),P=window.setTimeout(ae,500),V()}function ae(){!c.value||!h.value||(B=0,M=0,window.clearTimeout(P),V())}let F=-1;function V(){cancelAnimationFrame(F),F=requestAnimationFrame(N)}function N(){if(!c.value||!v.value)return;const d=y-f,$=Math.sign(B),k=Math.max(0,d-gt),O=He(D(k),0,t.value.length),R=d+v.value+gt,K=He(D(R)+1,O+1,t.value.length);if(($!==bs||Or.value)){const L=H(l.value)-H(O),G=H(K)-H(r.value);Math.max(L,G)>gt?(l.value=O,r.value=K):(O<=0&&(l.value=O),K>=t.value.length&&(r.value=K))}i.value=H(l.value),o.value=H(t.value.length)-H(r.value)}function U(d){const $=H(d);!c.value||d&&!$?w=d:c.value.scrollTop=$}const T=E(()=>t.value.slice(l.value,r.value).map((d,$)=>{const k=$+l.value;return{raw:d,index:k,key:je(d,e.itemKey,k)}}));return Te(t,()=>{x=Array.from({length:t.value.length}),b=Array.from({length:t.value.length}),I.immediate(),V()},{deep:1}),{calculateVisibleItems:V,containerRef:c,markerRef:h,computedItems:T,paddingTop:i,paddingBottom:o,scrollToIndex:U,handleScroll:J,handleScrollend:ae,handleItemResize:Q}}function ks(e,t){let n=e.length-1,s=0,l=0,r=null,i=-1;if(e[n]>1,r=e[l],r>t)n=l-1;else if(r[]},renderless:Boolean,...xs(),...Be(),...Fa()},"VVirtualScroll"),Cs=fe()({name:"VVirtualScroll",props:_s(),setup(e,t){let{slots:n}=t;const s=Pt("VVirtualScroll"),{dimensionStyles:l}=Aa(e),{calculateVisibleItems:r,containerRef:i,markerRef:o,handleScroll:c,handleScrollend:h,handleItemResize:f,scrollToIndex:m,paddingTop:g,paddingBottom:v,computedItems:p}=Ss(e,Y(e,"items"));return La(()=>e.renderless,()=>{function x(){var w,C;const _=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";i.value===document.documentElement?(document[_]("scroll",c,{passive:!0}),document[_]("scrollend",h)):((w=i.value)==null||w[_]("scroll",c,{passive:!0}),(C=i.value)==null||C[_]("scrollend",h))}wn(()=>{i.value=Ba(s.vnode.el,!0),x(!0)}),Tt(x)}),ve(()=>{const x=p.value.map(b=>a(ps,{key:b.key,renderless:e.renderless,"onUpdate:height":_=>f(b.index,_)},{default:_=>{var w;return(w=n.default)==null?void 0:w.call(n,{item:b.raw,index:b.index,..._})}}));return e.renderless?a(oe,null,[a("div",{ref:o,class:"v-virtual-scroll__spacer",style:{paddingTop:Se(g.value)}},null),x,a("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:Se(v.value)}},null)]):a("div",{ref:i,class:["v-virtual-scroll",e.class],onScrollPassive:c,onScrollend:h,style:[l.value,e.style]},[a("div",{ref:o,class:"v-virtual-scroll__container",style:{paddingTop:Se(g.value),paddingBottom:Se(v.value)}},[x])])}),{calculateVisibleItems:r,scrollToIndex:m}}});function Vs(e,t){const n=be(!1);let s;function l(o){cancelAnimationFrame(s),n.value=!0,s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{n.value=!1})})}async function r(){await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>{if(n.value){const c=Te(n,()=>{c(),o()})}else o()})}async function i(o){var f,m;if(o.key==="Tab"&&((f=t.value)==null||f.focus()),!["PageDown","PageUp","Home","End"].includes(o.key))return;const c=(m=e.value)==null?void 0:m.$el;if(!c)return;(o.key==="Home"||o.key==="End")&&c.scrollTo({top:o.key==="Home"?0:c.scrollHeight,behavior:"smooth"}),await r();const h=c.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(o.key==="PageDown"||o.key==="Home"){const g=c.getBoundingClientRect().top;for(const v of h)if(v.getBoundingClientRect().top>=g){v.focus();break}}else{const g=c.getBoundingClientRect().bottom;for(const v of[...h].reverse())if(v.getBoundingClientRect().bottom<=g){v.focus();break}}}return{onScrollPassive:l,onKeydown:i}}const Ts=X({chips:Boolean,closableChips:Boolean,closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"},eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuIcon:{type:ye,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,...ls({itemChildren:!1})},"Select"),Ds=X({...Ts(),...hn(va({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...Oa({transition:{component:ma}})},"VSelect"),Ot=fe()({name:"VSelect",props:Ds(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0},setup(e,t){let{slots:n}=t;const{t:s}=ze(),l=de(),r=de(),i=de(),{items:o,transformIn:c,transformOut:h}=ss(e),f=we(e,"modelValue",[],T=>c(T===null?[null]:Pe(T)),T=>{const d=h(T);return e.multiple?d:d[0]??null}),m=E(()=>typeof e.counterValue=="function"?e.counterValue(f.value):typeof e.counterValue=="number"?e.counterValue:f.value.length),g=wa(e),v=E(()=>f.value.map(T=>T.value)),p=be(!1);let x="",b;const _=E(()=>e.hideSelected?o.value.filter(T=>!f.value.some(d=>(e.valueComparator||Ue)(d,T))):o.value),w=E(()=>e.hideNoData&&!_.value.length||g.isReadonly.value||g.isDisabled.value),C=we(e,"menu"),I=E({get:()=>C.value,set:T=>{var d;C.value&&!T&&((d=r.value)!=null&&d.ΨopenChildren.size)||T&&w.value||(C.value=T)}}),A=E(()=>I.value?e.closeText:e.openText),Q=E(()=>{var T;return{...e.menuProps,activatorProps:{...((T=e.menuProps)==null?void 0:T.activatorProps)||{},"aria-haspopup":"listbox"}}}),H=de(),D=Vs(H,l);function y(T){e.openOnClear&&(I.value=!0)}function B(){w.value||(I.value=!I.value)}function M(T){zt(T)&&P(T)}function P(T){var O,R;if(!T.key||g.isReadonly.value)return;["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(T.key)&&T.preventDefault(),["Enter","ArrowDown"," "].includes(T.key)&&(I.value=!0),["Escape","Tab"].includes(T.key)&&(I.value=!1),T.key==="Home"?(O=H.value)==null||O.focus("first"):T.key==="End"&&((R=H.value)==null||R.focus("last"));const d=1e3;if(!zt(T))return;const $=performance.now();$-b>d&&(x=""),x+=T.key.toLowerCase(),b=$;const k=o.value.find(K=>K.title.toLowerCase().startsWith(x));if(k!==void 0){f.value=[k];const K=_.value.indexOf(k);st&&window.requestAnimationFrame(()=>{var L;K>=0&&((L=i.value)==null||L.scrollToIndex(K))})}}function J(T){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!T.props.disabled)if(e.multiple){const $=f.value.findIndex(O=>(e.valueComparator||Ue)(O.value,T.value)),k=d??!~$;if(~$){const O=k?[...f.value,T]:[...f.value];O.splice($,1),f.value=O}else k&&(f.value=[...f.value,T])}else{const $=d!==!1;f.value=$?[T]:[],Ge(()=>{I.value=!1})}}function ae(T){var d;(d=H.value)!=null&&d.$el.contains(T.relatedTarget)||(I.value=!1)}function F(){var T;e.eager&&((T=i.value)==null||T.calculateVisibleItems())}function V(){var T;p.value&&((T=l.value)==null||T.focus())}function N(T){p.value=!0}function U(T){if(T==null)f.value=[];else if(bt(l.value,":autofill")||bt(l.value,":-webkit-autofill")){const d=o.value.find($=>$.title===T);d&&J(d)}else l.value&&(l.value.value="")}return Te(I,()=>{if(!e.hideSelected&&I.value&&f.value.length){const T=_.value.findIndex(d=>f.value.some($=>(e.valueComparator||Ue)($.value,d.value)));st&&window.requestAnimationFrame(()=>{var d;T>=0&&((d=i.value)==null||d.scrollToIndex(T))})}}),Te(()=>e.items,(T,d)=>{I.value||p.value&&!d.length&&T.length&&(I.value=!0)}),ve(()=>{const T=!!(e.chips||n.chip),d=!!(!e.hideNoData||_.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),$=f.value.length>0,k=Ie.filterProps(e),O=$||!p.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder;return a(Ie,q({ref:l},k,{modelValue:f.value.map(R=>R.props.value).join(", "),"onUpdate:modelValue":U,focused:p.value,"onUpdate:focused":R=>p.value=R,validationValue:f.externalValue,counterValue:m.value,dirty:$,class:["v-select",{"v-select--active-menu":I.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":f.value.length,"v-select--selection-slot":!!n.selection},e.class],style:e.style,inputmode:"none",placeholder:O,"onClick:clear":y,"onMousedown:control":B,onBlur:ae,onKeydown:P,"aria-label":s(A.value),title:s(A.value)}),{...n,default:()=>a(oe,null,[a(kt,q({ref:r,modelValue:I.value,"onUpdate:modelValue":R=>I.value=R,activator:"parent",contentClass:"v-select__content",disabled:w.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:F,onAfterLeave:V},Q.value),{default:()=>[d&&a(ke,q({ref:H,selected:v.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:R=>R.preventDefault(),onKeydown:M,onFocusin:N,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},D,e.listProps),{default:()=>{var R,K,L;return[(R=n["prepend-item"])==null?void 0:R.call(n),!_.value.length&&!e.hideNoData&&(((K=n["no-data"])==null?void 0:K.call(n))??a(se,{key:"no-data",title:s(e.noDataText)},null)),a(Cs,{ref:i,renderless:!0,items:_.value,itemKey:"value"},{default:G=>{var Ce;let{item:te,index:xe,itemRef:le}=G;const _e=q(te.props,{ref:le,key:te.value,onClick:()=>J(te,null)});return((Ce=n.item)==null?void 0:Ce.call(n,{item:te,index:xe,props:_e}))??a(se,q(_e,{role:"option"}),{prepend:Re=>{let{isSelected:Ae}=Re;return a(oe,null,[e.multiple&&!e.hideSelected?a(ut,{key:te.value,modelValue:Ae,ripple:!1,tabindex:"-1"},null):void 0,te.props.prependAvatar&&a(Lt,{image:te.props.prependAvatar},null),te.props.prependIcon&&a(ee,{icon:te.props.prependIcon},null)])}})}}),(L=n["append-item"])==null?void 0:L.call(n)]}})]}),f.value.map((R,K)=>{function L(le){le.stopPropagation(),le.preventDefault(),J(R,!1)}const G={"onClick:close":L,onKeydown(le){le.key!=="Enter"&&le.key!==" "||(le.preventDefault(),le.stopPropagation(),L(le))},onMousedown(le){le.preventDefault(),le.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},te=T?!!n.chip:!!n.selection,xe=te?Na(T?n.chip({item:R,index:K,props:G}):n.selection({item:R,index:K})):void 0;if(!(te&&!xe))return a("div",{key:R.value,class:"v-select__selection"},[T?n.chip?a(mn,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:R.title}}},{default:()=>[xe]}):a(Le,q({key:"chip",closable:e.closableChips,size:"small",text:R.title,disabled:R.props.disabled},G),null):xe??a("span",{class:"v-select__selection-text"},[R.title,e.multiple&&K!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:n,slots:s}=t;const l=we(e,"indeterminate"),r=we(e,"modelValue"),{loaderClasses:i}=gn(e),{isFocused:o,focus:c,blur:h}=ga(e),f=de(),m=st&&window.matchMedia("(forced-colors: active)").matches,g=E(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),v=Vt(),p=E(()=>e.id||`switch-${v}`);function x(){l.value&&(l.value=!1)}function b(_){var w,C;_.stopPropagation(),_.preventDefault(),(C=(w=f.value)==null?void 0:w.input)==null||C.click()}return ve(()=>{const[_,w]=dn(n),C=Ut.filterProps(e),I=it.filterProps(e);return a(Ut,q({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":l.value},i.value,e.class]},_,C,{modelValue:r.value,"onUpdate:modelValue":A=>r.value=A,id:p.value,focused:o.value,style:e.style}),{...s,default:A=>{let{id:Q,messagesId:H,isDisabled:D,isReadonly:y,isValid:B}=A;const M={model:r,isValid:B};return a(it,q({ref:f},I,{modelValue:r.value,"onUpdate:modelValue":[P=>r.value=P,x],id:Q.value,"aria-describedby":H.value,type:"checkbox","aria-checked":l.value?"mixed":void 0,disabled:D.value,readonly:y.value,onFocus:c,onBlur:h},w),{...s,default:P=>{let{backgroundColorClasses:J,backgroundColorStyles:ae}=P;return a("div",{class:["v-switch__track",m?void 0:J.value],style:ae.value,onClick:b},[s["track-true"]&&a("div",{key:"prepend",class:"v-switch__track-true"},[s["track-true"](M)]),s["track-false"]&&a("div",{key:"append",class:"v-switch__track-false"},[s["track-false"](M)])])},input:P=>{let{inputNode:J,icon:ae,backgroundColorClasses:F,backgroundColorStyles:V}=P;return a(oe,null,[J,a("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":ae||e.loading},e.inset||m?void 0:F.value],style:e.inset?void 0:V.value},[s.thumb?a(mn,{defaults:{VIcon:{icon:ae,size:"x-small"}}},{default:()=>[s.thumb({...M,icon:ae})]}):a(is,null,{default:()=>[e.loading?a(pn,{name:"v-switch",active:!0,color:B.value===!1?void 0:g.value},{default:N=>s.loader?s.loader(N):a(Ma,{active:N.isActive,color:N.color,indeterminate:!0,size:"16",width:"2"},null)}):ae&&a(ee,{key:String(ae),icon:ae,size:"x-small"},null)]})])])}})}})}),{}}}),Is={name:"SettingItem",props:{settingKey:{type:String,required:!0},icon:{type:String,default:null},disabled:{type:Boolean,default:!1},title:{type:String,default:null},description:{type:String,default:null}},data(){return{localValue:null,definition:null,type:null,selectOptions:[],hasOptions:!1,minValue:0,maxValue:100,stepValue:1,showSnackbar:!1,snackbarText:"",fontFamilies:[{title:"Arial",value:"Arial, sans-serif"},{title:"Calibri",value:"Calibri, sans-serif"},{title:"Cambria",value:"Cambria, serif"},{title:"Consolas",value:"Consolas, monospace"},{title:"Courier New",value:"Courier New, monospace"},{title:"Georgia",value:"Georgia, serif"},{title:"Helvetica",value:"Helvetica, sans-serif"},{title:"Segoe UI",value:"Segoe UI, sans-serif"},{title:"Times New Roman",value:"Times New Roman, serif"},{title:"Trebuchet MS",value:"Trebuchet MS, sans-serif"},{title:"Verdana",value:"Verdana, sans-serif"},{title:"Monospace",value:"monospace"},{title:"Sans-serif",value:"sans-serif"},{title:"Serif",value:"serif"}],displayValueMappings:{"display.emptySubjectDisplay":{card:"卡片",button:"按钮"},"theme.mode":{light:"浅色",dark:"深色"},"server.provider":{server:"远程服务器",indexedDB:"本地存储"}},defaultIcons:{boolean:"mdi-toggle-switch-outline",number:"mdi-numeric",string:"mdi-form-textbox"}}},computed:{displayTitle(){if(this.title)return this.title;if(this.definition&&this.definition.description)return this.definition.description;const e=this.settingKey.split(".");return e[e.length-1]},displayDescription(){return this.description?this.description:this.settingKey},isFontFamily(){return this.settingKey.toLowerCase().includes("fontfamily")||this.settingKey.toLowerCase().includes("font.family")},isDefaultValue(){return this.definition?typeof this.localValue=="object"&&this.localValue!==null?JSON.stringify(this.localValue)===JSON.stringify(this.definition.default):this.localValue===this.definition.default:!0},settingIcon(){return this.icon?this.icon:this.definition&&this.definition.icon?this.definition.icon:this.defaultIcons[this.type]||"mdi-cog-outline"}},created(){this.loadSetting()},methods:{loadSetting(){if(this.definition=Ra(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=W(this.settingKey),this.type==="string"){if(this.isFontFamily)this.selectOptions=this.fontFamilies,this.hasOptions=!0;else if(this.settingKey in this.displayValueMappings){const e=this.displayValueMappings[this.settingKey];this.selectOptions=Object.entries(e).map(([t,n])=>({title:n,value:t})),this.hasOptions=!0}else if(this.definition.validate){const t=this.definition.validate.toString().match(/\[(.*?)\]/);if(t){const s=t[1].split(",").map(l=>{const r=l.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(r)||r,value:r}});s.length>0&&(this.selectOptions=s,this.hasOptions=!0)}}}if(this.type==="number"&&this.definition.validate){const e=this.definition.validate.toString(),t=e.match(/value\s*>=\s*(\d+)/);t&&(this.minValue=Number(t[1]));const n=e.match(/value\s*<=\s*(\d+)/);n&&(this.maxValue=Number(n[1]));const s=this.maxValue-this.minValue;s>100?this.stepValue=10:s>20?this.stepValue=5:s>10?this.stepValue=2:this.stepValue=1}},getDisplayValue(e){return this.settingKey in this.displayValueMappings&&this.displayValueMappings[this.settingKey][e]||e},updateSetting(e){let t=e;this.type==="boolean"?t=!!e:this.type==="number"&&(t=Number(e),tthis.maxValue&&(t=this.maxValue)),It(this.settingKey,t)?this.$emit("update",this.settingKey,t):(this.localValue=W(this.settingKey),this.$emit("error",this.settingKey))},adjustValue(e){if(this.type!=="number")return;const t=this.localValue+e;t>=this.minValue&&t<=this.maxValue&&(this.localValue=t,this.updateSetting(t))},copySettingId(){navigator.clipboard.writeText(this.settingKey).then(()=>{this.showSnackbarMessage("设置ID已复制到剪贴板")}).catch(e=>{console.error("复制失败:",e)})},copySettingValue(){let e="";typeof this.localValue=="object"&&this.localValue!==null?e=JSON.stringify(this.localValue):e=String(this.localValue),navigator.clipboard.writeText(e).then(()=>{this.showSnackbarMessage("设置值已复制到剪贴板")}).catch(t=>{console.error("复制失败:",t)})},resetToDefault(){this.definition&&(bn(this.settingKey),this.localValue=W(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(e){this.snackbarText=e,this.showSnackbar=!0}}},Es={class:"text-caption text-grey-darken-1"},As={class:"d-flex flex-column flex-sm-row align-center"},Ls={key:0,class:"me-2"},Bs={key:2,class:"d-flex align-center"},Fs={key:0,class:"px-4 pb-2 pt-0"};function Ns(e,t,n,s,l,r){return j(),re(oe,null,[a(se,{class:"setting-item",disabled:n.disabled},{prepend:u(()=>[a(ee,{icon:r.settingIcon},null,8,["icon"])]),append:u(()=>[ue("div",As,[l.type!=="string"||l.hasOptions?(j(),re("div",Ls,[l.type==="boolean"?(j(),Z(xt,{key:0,modelValue:l.localValue,"onUpdate:modelValue":[t[0]||(t[0]=i=>l.localValue=i),r.updateSetting],density:"comfortable","hide-details":"",disabled:n.disabled},null,8,["modelValue","disabled","onUpdate:modelValue"])):l.type==="string"&&l.hasOptions?(j(),Z(Ot,{key:1,modelValue:l.localValue,"onUpdate:modelValue":[t[1]||(t[1]=i=>l.localValue=i),r.updateSetting],items:l.selectOptions,density:"compact","hide-details":"",disabled:n.disabled,class:"setting-select",variant:"outlined","bg-color":"surface","item-title":"title","item-value":"value"},null,8,["modelValue","items","disabled","onUpdate:modelValue"])):l.type==="number"?(j(),re("div",Bs,[a(z,{icon:"mdi-minus",size:"small",variant:"text",disabled:n.disabled||l.localValue<=l.minValue,onClick:t[2]||(t[2]=i=>r.adjustValue(-l.stepValue))},null,8,["disabled"]),a(Ie,{modelValue:l.localValue,"onUpdate:modelValue":[t[3]||(t[3]=i=>l.localValue=i),r.updateSetting],modelModifiers:{number:!0},type:"number",density:"compact","hide-details":"",min:l.minValue,max:l.maxValue,step:l.stepValue,disabled:n.disabled,class:"mx-2 setting-number-field",style:{width:"80px"},variant:"outlined","bg-color":"surface"},null,8,["modelValue","min","max","step","disabled","onUpdate:modelValue"]),a(z,{icon:"mdi-plus",size:"small",variant:"text",disabled:n.disabled||l.localValue>=l.maxValue,onClick:t[4]||(t[4]=i=>r.adjustValue(l.stepValue))},null,8,["disabled"])])):me("",!0)])):me("",!0),a(kt,{location:"bottom"},{activator:u(({props:i})=>[a(z,q({icon:"mdi-dots-vertical",size:"small",variant:"text"},i,{class:"ml-2",disabled:n.disabled}),null,16,["disabled"])]),default:u(()=>[a(ke,{density:"compact"},{default:u(()=>[a(se,{onClick:r.copySettingId},{prepend:u(()=>[a(ee,{icon:"mdi-key",size:"small"})]),default:u(()=>[a(ce,null,{default:u(()=>t[7]||(t[7]=[S("复制设置ID")])),_:1})]),_:1},8,["onClick"]),a(se,{onClick:r.copySettingValue},{prepend:u(()=>[a(ee,{icon:"mdi-content-copy",size:"small"})]),default:u(()=>[a(ce,null,{default:u(()=>t[8]||(t[8]=[S("复制设置值")])),_:1})]),_:1},8,["onClick"]),a(ie),a(se,{onClick:r.resetToDefault,disabled:r.isDefaultValue},{prepend:u(()=>[a(ee,{icon:"mdi-restore",size:"small"})]),default:u(()=>[a(ce,null,{default:u(()=>t[9]||(t[9]=[S("重置为默认值")])),_:1})]),_:1},8,["onClick","disabled"])]),_:1})]),_:1})])]),default:u(()=>[a(ce,{class:"text-wrap"},{default:u(()=>[S(ne(r.displayTitle),1)]),_:1}),a(Ve,{class:"d-flex align-center text-wrap"},{default:u(()=>[ue("span",Es,ne(n.settingKey),1)]),_:1})]),_:1},8,["disabled"]),l.type==="string"&&!l.hasOptions?(j(),re("div",Fs,[a(Ie,{modelValue:l.localValue,"onUpdate:modelValue":[t[5]||(t[5]=i=>l.localValue=i),r.updateSetting],density:"compact","hide-details":"",disabled:n.disabled,class:"setting-text-field mt-1",variant:"outlined","bg-color":"surface"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):me("",!0),a(ja,{modelValue:l.showSnackbar,"onUpdate:modelValue":t[6]||(t[6]=i=>l.showSnackbar=i),timeout:2e3,color:"success",location:"top"},{default:u(()=>[S(ne(l.snackbarText),1)]),_:1},8,["modelValue"])],64)}const Me=ge(Is,[["render",Ns],["__scopeId","data-v-d5f17fb4"]]),Os={name:"SettingsExplorer",components:{SettingItem:Me},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return W("developer.enabled")},allSettings(){var t;const e=[];for(const[n,s]of Object.entries(yt))this.searchQuery&&!n.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((t=s.description)!=null&&t.toLowerCase().includes(this.searchQuery.toLowerCase()))||e.push({key:n,...s});return e},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=yn(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=tt()},onSettingUpdate(e,t){this.$emit("update",e,t),this.updateCurrentSettings()},onSettingError(e){this.$emit("error",e)},copySettingsToClipboard(){navigator.clipboard.writeText(JSON.stringify(this.currentSettings)).then(()=>{this.$emit("message",{type:"success",text:"设置已复制到剪贴板"})}).catch(e=>{console.error("复制到剪贴板失败:",e),this.$emit("message",{type:"error",text:"复制到剪贴板失败"})})}}},Ms={class:"settings-explorer"},Rs={class:"settings-json"};function js(e,t,n,s,l,r){const i=Me;return j(),re("div",Ms,[ue("div",null,[a(Ie,{modelValue:l.searchQuery,"onUpdate:modelValue":t[0]||(t[0]=o=>l.searchQuery=o),label:"搜索设置","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"comfortable",class:"mb-4"},null,8,["modelValue"]),a(ke,null,{default:u(()=>[(j(!0),re(oe,null,ot(r.allSettings,o=>(j(),re("div",{key:o.key},[(j(),Z(i,{key:o.key,"setting-key":o.key,disabled:o.requireDeveloper&&!r.isDeveloperMode,onUpdate:r.onSettingUpdate,onError:r.onSettingError},null,8,["setting-key","disabled","onUpdate","onError"])),a(ie,{class:"my-2"})]))),128))]),_:1}),a(Ee,{border:""},{default:u(()=>[a(Oe,{class:"text-subtitle-1"},{default:u(()=>t[1]||(t[1]=[S("当前配置")])),_:1}),a(De,null,{default:u(()=>[ue("pre",Rs,ne(r.formattedSettings),1)]),_:1}),a(Bt,null,{default:u(()=>[a(At),a(z,{onClick:r.copySettingsToClipboard},{default:u(()=>[t[3]||(t[3]=S(" 复制到剪贴板 ")),a(ee,{right:""},{default:u(()=>t[2]||(t[2]=[S("mdi-content-copy")])),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const Dn=ge(Os,[["render",js],["__scopeId","data-v-da09fd0e"]]),Us="Classworks",Hs="module",$s="0.0.0",zs={dev:"vite --host",build:"vite build",preview:"vite preview",lint:"eslint . --fix"},Ks={"@mdi/font":"7.4.47",axios:"^1.8.4",idb:"^8.0.2","pinyin-pro":"^3.26.0","roboto-fontface":"*","typewriter-effect":"^2.21.0",vue:"^3.4.31",vuetify:"^3.8.0"},Ws={"@eslint/js":"^9.14.0","@vite-pwa/assets-generator":"^1.0.0","@vitejs/plugin-vue":"^5.2.3",eslint:"^9.14.0","eslint-plugin-import":"^2.29.1","eslint-plugin-n":"^16.6.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^6.4.0","eslint-plugin-vue":"^9.30.0",pinia:"^3.0.1",sass:"1.86.3","sass-embedded":"^1.86.3","unplugin-auto-import":"^19.1.2","unplugin-fonts":"^1.3.1","unplugin-vue-components":"^28.4.1","unplugin-vue-router":"^0.12.0",vite:"^5.4.17","vite-plugin-pwa":"^1.0.0","vite-plugin-vue-layouts":"^0.11.0","vite-plugin-vuetify":"^2.1.1","vue-router":"^4.5.0"},Jt={name:Us,private:!0,type:Hs,version:$s,scripts:zs,dependencies:Ks,devDependencies:Ws},Gs={name:"AboutCard",setup(){const e=de([]),t=de(!1),n=()=>{try{const l={...Jt.dependencies||{},...Jt.devDependencies||{}},r=Object.entries(l).map(([i,o])=>({name:i,version:o.replace(/[\^~]/g,""),description:s(i)}));e.value=r}catch(l){console.error("加载依赖信息失败:",l),e.value=[]}},s=l=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[l]||"";return wn(()=>{n()}),{Dependencies:e,showDeps:t}}},Qs={class:"d-flex flex-column align-start"},qs={class:"d-flex gap-2 flex-wrap mb-6"},Js={class:"text-caption text-medium-emphasis"};function Ys(e,t,n,s,l,r){return j(),Z(Ee,{border:""},{default:u(()=>[a(Ft,null,{prepend:u(()=>[a(ee,{icon:"mdi-information",size:"large",class:"mr-2"})]),default:u(()=>[a(Oe,{class:"text-h6"},{default:u(()=>t[3]||(t[3]=[S("关于")])),_:1})]),_:1}),a(De,null,{default:u(()=>[a(We,null,{default:u(()=>[a(he,{cols:"12",md:"8",class:"mx-auto"},{default:u(()=>[ue("div",Qs,[a(Lt,{size:"120",class:"mb-4"},{default:u(()=>[a(Cn,{src:"https://github.com/SunWuyuan.png",alt:"Sunwuyuan"})]),_:1}),t[20]||(t[20]=ue("h2",{class:"text-h5 mb-2"},"Classworks",-1)),t[21]||(t[21]=ue("p",{class:"text-body-1 mb-4"},"适用于班级大屏的作业板小工具",-1)),ue("div",qs,[a(z,{color:"red",variant:"tonal",href:"https://github.com/ClassworksDev/Classworks/issues",target:"_blank","prepend-icon":"mdi-bug"},{default:u(()=>t[4]||(t[4]=[S(" 报告问题 ")])),_:1}),a(z,{color:"primary",variant:"tonal",href:"https://qm.qq.com/q/qNBX4ZZVeg",target:"_blank","prepend-icon":"mdi-qqchat"},{default:u(()=>t[5]||(t[5]=[S(" QQ 群 ")])),_:1}),a(z,{variant:"text",href:"https://github.com/ClassworksDev/Classworks",target:"_blank","prepend-icon":"mdi-github"},{default:u(()=>t[6]||(t[6]=[S(" 前端 ")])),_:1}),a(z,{variant:"text",href:"https://github.com/ClassworksDev/ClassworksServer",target:"_blank","prepend-icon":"mdi-github"},{default:u(()=>t[7]||(t[7]=[S(" 后端 ")])),_:1})]),a(ie,{class:"mb-4 w-100"}),t[22]||(t[22]=ue("h3",{class:"text-h6 mb-2"},"备注与致谢",-1)),a(ke,{class:"mb-4 bg-transparent"},{default:u(()=>[a(se,{href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>t[8]||(t[8]=[S(" 本项目受到 HomeworkBoard 的启发而开发 ")])),_:1}),a(Ve,null,{default:u(()=>t[9]||(t[9]=[S(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ")])),_:1})]),_:1}),a(se,{href:"https://hlyun.org",target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>t[10]||(t[10]=[S(" Classworks 由"),ue("strong",null,"厚浪云",-1),S("提供 ")])),_:1}),a(Ve,null,{default:u(()=>t[11]||(t[11]=[S(" 长江后浪推前浪 浮事新人换旧人 ")])),_:1})]),_:1}),a(se,{href:"https://zerocat.houlangs.com",target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>t[12]||(t[12]=[S(" 感谢 ZeroCat 社区的开发者们 ")])),_:1}),a(Ve,null,{default:u(()=>t[13]||(t[13]=[S(" 新一代,开源,编程社区 ")])),_:1})]),_:1}),a(ie,{class:"ma-1"}),a(se,{href:"https://github.com/HUSX100/IslandCaller",target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>t[14]||(t[14]=[S(" 本项目与 IslandCaller 没有从属关系 ")])),_:1}),a(Ve,null,{default:u(()=>t[15]||(t[15]=[S(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ")])),_:1})]),_:1}),a(se,{href:"https://classisland.tech",target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>t[16]||(t[16]=[S(" 本项目与 ClassIsland 没有从属关系 ")])),_:1}),a(Ve,null,{default:u(()=>t[17]||(t[17]=[S(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ")])),_:1})]),_:1})]),_:1}),a(z,{variant:"text",class:"mb-4","prepend-icon":"mdi-package-variant",onClick:t[0]||(t[0]=i=>s.showDeps=!0)},{default:u(()=>t[18]||(t[18]=[S(" 查看使用的第三方库 ")])),_:1}),a(rn,{modelValue:s.showDeps,"onUpdate:modelValue":t[2]||(t[2]=i=>s.showDeps=i),transition:"dialog-bottom-transition",fullscreen:""},{default:u(()=>[a(Ee,null,{default:u(()=>[a(ba,null,{default:u(()=>[a(z,{icon:"mdi-close",onClick:t[1]||(t[1]=i=>s.showDeps=!1)}),a(ya,null,{default:u(()=>t[19]||(t[19]=[S("使用的第三方库")])),_:1}),a(At)]),_:1}),a(De,null,{default:u(()=>[a(ke,null,{default:u(()=>[(j(!0),re(oe,null,ot(s.Dependencies,i=>(j(),Z(se,{key:i.name,href:"https://www.npmjs.com/package/"+i.name,target:"_blank","append-icon":"mdi-link"},{default:u(()=>[a(ce,null,{default:u(()=>[S(ne(i.name),1)]),_:2},1024),a(Ve,null,{default:u(()=>[S(" v"+ne(i.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),ue("p",Js," Copyright © "+ne(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const Pn=ge(Gs,[["render",Ys]]),Xs={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function Zs(e,t,n,s,l,r){return j(),Z(Ee,{elevation:"2",class:"settings-card rounded-lg"},{default:u(()=>[a(Ft,null,{prepend:u(()=>[a(ee,{icon:n.icon,size:"large",class:"mr-2"},null,8,["icon"])]),default:u(()=>[a(Oe,{class:"text-h6"},{default:u(()=>[S(ne(n.title),1)]),_:1})]),_:1}),a(De,null,{default:u(()=>[n.loading?(j(),Z(xn,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):me("",!0),Kt(e.$slots,"default",{},void 0,!0)]),_:3}),e.$slots.actions?(j(),Z(Bt,{key:0,class:"pa-4"},{default:u(()=>[Kt(e.$slots,"actions",{},void 0,!0)]),_:3})):me("",!0)]),_:3})}const pe=ge(Xs,[["render",Zs],["__scopeId","data-v-3e8918ff"]]);var el=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function tl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var In={exports:{}};(function(e,t){(function(n,s){e.exports=s()})(typeof self<"u"?self:el,()=>(()=>{var n={75:function(i){(function(){var o,c,h,f,m,g;typeof performance<"u"&&performance!==null&&performance.now?i.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(i.exports=function(){return(o()-m)/1e6},c=process.hrtime,f=(o=function(){var v;return 1e9*(v=c())[0]+v[1]})(),g=1e9*process.uptime(),m=f-g):Date.now?(i.exports=function(){return Date.now()-h},h=Date.now()):(i.exports=function(){return new Date().getTime()-h},h=new Date().getTime())}).call(this)},4087:(i,o,c)=>{for(var h=c(75),f=typeof window>"u"?c.g:window,m=["moz","webkit"],g="AnimationFrame",v=f["request"+g],p=f["cancel"+g]||f["cancelRequest"+g],x=0;!v&&x{var o=i&&i.__esModule?()=>i.default:()=>i;return l.d(o,{a:o}),o},l.d=(i,o)=>{for(var c in o)l.o(o,c)&&!l.o(i,c)&&Object.defineProperty(i,c,{enumerable:!0,get:o[c]})},l.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),l.o=(i,o)=>Object.prototype.hasOwnProperty.call(i,o);var r={};return(()=>{l.d(r,{default:()=>ae});var i=l(4087),o=l.n(i);const c=function(F){return new RegExp(/<[a-z][\s\S]*>/i).test(F)},h=function(F,V){return Math.floor(Math.random()*(V-F+1))+F};var f="TYPE_CHARACTER",m="REMOVE_CHARACTER",g="REMOVE_ALL",v="REMOVE_LAST_VISIBLE_NODE",p="PAUSE_FOR",x="CALL_FUNCTION",b="ADD_HTML_TAG_ELEMENT",_="CHANGE_DELETE_SPEED",w="CHANGE_DELAY",C="CHANGE_CURSOR",I="PASTE_STRING",A="HTML_TAG";function Q(F){return Q=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(V){return typeof V}:function(V){return V&&typeof Symbol=="function"&&V.constructor===Symbol&&V!==Symbol.prototype?"symbol":typeof V},Q(F)}function H(F,V){var N=Object.keys(F);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(F);V&&(U=U.filter(function(T){return Object.getOwnPropertyDescriptor(F,T).enumerable})),N.push.apply(N,U)}return N}function D(F){for(var V=1;VF.length)&&(V=F.length);for(var N=0,U=new Array(V);N1&&arguments[1]!==void 0?arguments[1]:null;if(c(k))return d.typeOutHTMLString(k,O);if(k){var R=(d.options||{}).stringSplitter,K=typeof R=="function"?R(k):k.split("");d.typeCharacters(K,O)}return d}),P(this,"pasteString",function(k){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return c(k)?d.typeOutHTMLString(k,O,!0):(k&&d.addEventToQueue(I,{character:k,node:O}),d)}),P(this,"typeOutHTMLString",function(k){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,R=arguments.length>2?arguments[2]:void 0,K=function(xe){var le=document.createElement("div");return le.innerHTML=xe,le.childNodes}(k);if(K.length>0)for(var L=0;L0&&arguments[0]!==void 0?arguments[0]:"natural";return d.addEventToQueue(g,{speed:k}),d}),P(this,"changeDeleteSpeed",function(k){if(!k)throw new Error("Must provide new delete speed");return d.addEventToQueue(_,{speed:k}),d}),P(this,"changeDelay",function(k){if(!k)throw new Error("Must provide new delay");return d.addEventToQueue(w,{delay:k}),d}),P(this,"changeCursor",function(k){if(!k)throw new Error("Must provide new cursor");return d.addEventToQueue(C,{cursor:k}),d}),P(this,"deleteChars",function(k){if(!k)throw new Error("Must provide amount of characters to delete");for(var O=0;O1&&arguments[1]!==void 0?arguments[1]:null;if(!k||!Array.isArray(k))throw new Error("Characters must be an array");return k.forEach(function(R){d.addEventToQueue(f,{character:R,node:O})}),d}),P(this,"removeCharacters",function(k){if(!k||!Array.isArray(k))throw new Error("Characters must be an array");return k.forEach(function(){d.addEventToQueue(m)}),d}),P(this,"addEventToQueue",function(k,O){var R=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return d.addEventToStateProperty(k,O,R,"eventQueue")}),P(this,"addReverseCalledEvent",function(k,O){var R=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return d.options.loop?d.addEventToStateProperty(k,O,R,"reverseCalledEvents"):d}),P(this,"addEventToStateProperty",function(k,O){var R=arguments.length>2&&arguments[2]!==void 0&&arguments[2],K=arguments.length>3?arguments[3]:void 0,L={eventName:k,eventArgs:O||{}};return d.state[K]=R?[L].concat(y(d.state[K])):[].concat(y(d.state[K]),[L]),d}),P(this,"runEventLoop",function(){d.state.lastFrameTime||(d.state.lastFrameTime=Date.now());var k=Date.now(),O=k-d.state.lastFrameTime;if(!d.state.eventQueue.length){if(!d.options.loop)return;d.state.eventQueue=y(d.state.calledEvents),d.state.calledEvents=[],d.options=D({},d.state.initialOptions)}if(d.state.eventLoop=o()(d.runEventLoop),!d.state.eventLoopPaused){if(d.state.pauseUntil){if(k({typewriter:null,sourceWriter:null,currentQuote:Zt,hasClicked:!1}),mounted(){this.initTypewriters()},methods:{initTypewriters(){this.typewriter=new Yt(this.$refs.typewriter,en.main),this.sourceWriter=new Yt(this.$refs.sourceWriter,en.source),this.typeQuote(Zt)},typeQuote(e){this.typewriter.deleteAll(30).typeString(e.text).start(),e.author&&this.sourceWriter.deleteAll(20).typeString(e.author).start()},async handleClick(){this.hasClicked||(this.hasClicked=!0),await this.copyToClipboard(),this.currentQuote=this.getRandomQuote(),this.typeQuote(this.currentQuote)},getRandomQuote(){return Xt.quotes[Math.floor(Math.random()*Xt.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:e,author:t,contributor:n,link:s}=this.currentQuote,l=[e,t&&`作者:${t}`,n&&`贡献者:${n}`,(s||n)&&`来源:${s||`https://github.com/${n}`}`].filter(Boolean);try{await navigator.clipboard.writeText(l.join(` `))}catch(r){console.error("复制失败:",r)}}},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(e=>e==null?void 0:e.stop())}},ll={ref:"typewriter",class:"typewriter-text"},il={ref:"sourceWriter",class:"source-text"};function rl(e,t,n,s,l,r){const i=pe;return j(),Z(i,{border:"",title:"回声洞",icon:"mdi-thought-bubble",onClick:r.handleClick},{default:u(()=>[a(De,null,{default:u(()=>[ue("div",ll,null,512),ue("div",il,null,512)]),_:1}),a(Ua,{name:"fade"},{default:u(()=>{var o;return[(o=e.currentQuote)!=null&&o.contributor?(j(),Z(Le,{key:0,class:"contributor"},{default:u(()=>[a(Lt,{start:""},{default:u(()=>[a(Cn,{src:`https://github.com/${e.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),S(" "+ne(e.currentQuote.contributor),1)]),_:1})):me("",!0)]}),_:1})]),_:1},8,["onClick"])}const En=ge(sl,[["render",rl],["__scopeId","data-v-5c15976c"]]),ol={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},ul={class:"warning-container"};function dl(e,t,n,s,l,r){return j(),re("div",ul,[n.show?(j(),Z(Le,{key:0,color:"warning",size:"small",class:"warning-chip"},{default:u(()=>[S(ne(n.message),1)]),_:1})):me("",!0)])}const An=ge(ol,[["render",dl],["__scopeId","data-v-0668f179"]]),cl=X({disabled:Boolean,modelValue:{type:Boolean,default:null},...$a()},"VHover"),fl=fe()({name:"VHover",props:cl(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const s=we(e,"modelValue"),{runOpenDelay:l,runCloseDelay:r}=Ha(e,i=>!e.disabled&&(s.value=i));return()=>{var i;return(i=n.default)==null?void 0:i.call(n,{isHovering:s.value,props:{onMouseenter:l,onMouseleave:r}})}}}),hl={name:"StudentListCard",components:{UnsavedWarning:An},props:{modelValue:{type:Object,required:!0,default:()=>({list:[],text:"",advanced:!1})},loading:Boolean,error:String,isMobile:Boolean,unsavedChanges:Boolean},data(){return{newStudentName:"",editState:{index:-1,name:""}}},emits:["update:modelValue","save","reload"],computed:{text:{get(){return this.modelValue.text},set(e){this.handleTextInput(e)}}},methods:{toggleAdvanced(){const e=!this.modelValue.advanced;this.updateModelValue({advanced:e,text:e?this.modelValue.list.join(` `):this.modelValue.text,list:this.modelValue.list})},updateModelValue(e){this.$emit("update:modelValue",{...this.modelValue,...e})},addStudent(){const e=this.newStudentName.trim();if(!e||this.modelValue.list.includes(e))return;const t=[...this.modelValue.list,e];this.updateModelValue({list:t,text:t.join(` `)}),this.newStudentName=""},removeStudent(e){const t=this.modelValue.list.filter((n,s)=>s!==e);this.updateModelValue({list:t,text:t.join(` `)})},moveStudent(e,t){const n=[...this.modelValue.list];let s;if(t==="top"?s=0:t==="up"?s=e-1:s=e+1,s>=0&&sn.trim()).filter(n=>n);this.updateModelValue({text:e,list:t})},sortStudentsByPinyin(){const e=[...this.modelValue.list].sort((t,n)=>{const s=Ht(t,{toneType:"none",mode:"surname"}),l=Ht(n,{toneType:"none",mode:"surname"});return s.localeCompare(l)});this.updateModelValue({list:e,text:e.join(` `)})}}},wl={key:0},ml=["onClick"],vl={key:1,class:"pt-2"};function gl(e,t,n,s,l,r){const i=An;return j(),Z(Ee,{border:"",color:n.unsavedChanges?"warning-subtle":void 0,class:Gt({"unsaved-changes":n.unsavedChanges})},{default:u(()=>[a(Ft,null,{prepend:u(()=>[a(ee,{icon:"mdi-account-group",size:"large",class:"mr-2"})]),append:u(()=>[a(i,{show:n.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),a(z,{"prepend-icon":"mdi-sort-alphabetical-variant",variant:"text",class:"mr-2",onClick:r.sortStudentsByPinyin,disabled:n.modelValue.list.length===0},{default:u(()=>t[6]||(t[6]=[S(" 按姓名首字母排序 ")])),_:1},8,["onClick","disabled"]),a(z,{color:n.modelValue.advanced?"primary":void 0,variant:"text","prepend-icon":"mdi-code-braces",onClick:r.toggleAdvanced},{default:u(()=>[S(ne(n.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:u(()=>[a(Oe,{class:"text-h6"},{default:u(()=>t[5]||(t[5]=[S("学生列表")])),_:1})]),_:1}),a(De,null,{default:u(()=>[n.loading?(j(),Z(xn,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):me("",!0),n.error?(j(),Z(us,{key:1,type:"error",variant:"tonal",closable:"",class:"mb-4"},{default:u(()=>[S(ne(n.error),1)]),_:1})):me("",!0),a(_n,null,{default:u(()=>[n.modelValue.advanced?(j(),re("div",vl,[a(on,{modelValue:r.text,"onUpdate:modelValue":t[2]||(t[2]=o=>r.text=o),label:"批量编辑学生列表",placeholder:"每行输入一个学生姓名",hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行","persistent-hint":"",variant:"outlined",rows:"10",onInput:r.handleTextInput},null,8,["modelValue","onInput"])])):(j(),re("div",wl,[a(We,{class:"mb-6"},{default:u(()=>[a(he,{cols:"12",sm:"6",md:"4"},{default:u(()=>[a(Ie,{modelValue:l.newStudentName,"onUpdate:modelValue":t[0]||(t[0]=o=>l.newStudentName=o),label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined","hide-details":"",class:"mb-4",onKeyup:Wt(r.addStudent,["enter"])},{append:u(()=>[a(z,{icon:"mdi-plus",variant:"text",color:"primary",disabled:!l.newStudentName.trim(),onClick:r.addStudent},null,8,["disabled","onClick"])]),_:1},8,["modelValue","onKeyup"])]),_:1})]),_:1}),a(We,null,{default:u(()=>[(j(!0),re(oe,null,ot(n.modelValue.list,(o,c)=>(j(),Z(he,{key:c,cols:"12",sm:"6",md:"4",lg:"3"},{default:u(()=>[a(fl,null,{default:u(({isHovering:h,props:f})=>[a(Ee,q({ref_for:!0},f,{elevation:n.isMobile?1:h?4:1,class:"student-card",border:""}),{default:u(()=>[a(De,{class:"d-flex align-center pa-3"},{default:u(()=>[a(kt,{location:"bottom","open-on-hover":!n.isMobile},{activator:u(({props:m})=>[a(z,q({variant:"tonal",size:"small",class:"mr-3 font-weight-medium",ref_for:!0},m),{default:u(()=>[S(ne(c+1),1)]),_:2},1040)]),default:u(()=>[a(ke,{density:"compact",nav:""},{default:u(()=>[a(se,{"prepend-icon":"mdi-arrow-up-bold",disabled:c===0,onClick:m=>r.moveStudent(c,"top")},{default:u(()=>t[7]||(t[7]=[S(" 置顶 ")])),_:2},1032,["disabled","onClick"]),a(ie),a(se,{"prepend-icon":"mdi-arrow-up",disabled:c===0,onClick:m=>r.moveStudent(c,"up")},{default:u(()=>t[8]||(t[8]=[S(" 上移 ")])),_:2},1032,["disabled","onClick"]),a(se,{"prepend-icon":"mdi-arrow-down",disabled:c===n.modelValue.list.length-1,onClick:m=>r.moveStudent(c,"down")},{default:u(()=>t[9]||(t[9]=[S(" 下移 ")])),_:2},1032,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),l.editState.index===c?(j(),Z(Ie,{key:0,modelValue:l.editState.name,"onUpdate:modelValue":t[1]||(t[1]=m=>l.editState.name=m),density:"compact",variant:"underlined","hide-details":"",class:"flex-grow-1",autofocus:"",onKeyup:Wt(r.saveEdit,["enter"]),onBlur:r.saveEdit},null,8,["modelValue","onKeyup","onBlur"])):(j(),re("span",{key:1,class:"text-body-1 flex-grow-1",onClick:m=>r.handleClick(c,o)},ne(o),9,ml)),ue("div",{class:Gt(["d-flex gap-1 action-buttons",{"opacity-100":h||n.isMobile}])},[a(z,{icon:"mdi-pencil",variant:"text",color:"primary",size:"small",onClick:m=>r.startEdit(c,o)},null,8,["onClick"]),a(z,{icon:"mdi-delete",variant:"text",color:"error",size:"small",onClick:m=>r.removeStudent(c)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),a(We,{class:"mt-6"},{default:u(()=>[a(he,{cols:"12",class:"d-flex gap-2"},{default:u(()=>[a(z,{color:"primary","prepend-icon":"mdi-content-save",size:"large",loading:n.loading,disabled:n.loading,onClick:t[3]||(t[3]=o=>e.$emit("save"))},{default:u(()=>t[10]||(t[10]=[S(" 保存名单 ")])),_:1},8,["loading","disabled"]),a(z,{color:"error",variant:"outlined","prepend-icon":"mdi-refresh",size:"large",loading:n.loading,disabled:n.loading,onClick:t[4]||(t[4]=o=>e.$emit("reload"))},{default:u(()=>t[11]||(t[11]=[S(" 重载名单 ")])),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["color","class"])}const Ln=ge(hl,[["render",gl],["__scopeId","data-v-9de1f8ce"]]);function pl(){const e=de([]);za(()=>e.value=[]);function t(n,s){e.value[s]=n}return{refs:e,updateRef:t}}const bl=X({activeColor:String,start:{type:[Number,String],default:1},modelValue:{type:Number,default:e=>e.start},disabled:Boolean,length:{type:[Number,String],default:1,validator:e=>e%1===0},totalVisible:[Number,String],firstIcon:{type:ye,default:"$first"},prevIcon:{type:ye,default:"$prev"},nextIcon:{type:ye,default:"$next"},lastIcon:{type:ye,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean,...Ja(),...Be(),...Ct(),...qa(),...Qa(),...Ga(),...kn({tag:"nav"}),..._t(),...Wa({variant:"text"})},"VPagination"),tn=fe()({name:"VPagination",props:bl(),emits:{"update:modelValue":e=>!0,first:e=>!0,prev:e=>!0,next:e=>!0,last:e=>!0},setup(e,t){let{slots:n,emit:s}=t;const l=we(e,"modelValue"),{t:r,n:i}=ze(),{isRtl:o}=Ka(),{themeClasses:c}=Sn(e),{width:h}=$e(),f=be(-1);nt(void 0,{scoped:!0});const{resizeRef:m}=Dt(D=>{if(!D.length)return;const{target:y,contentRect:B}=D[0],M=y.querySelector(".v-pagination__list > *");if(!M)return;const P=B.width,J=M.offsetWidth+parseFloat(getComputedStyle(M).marginRight)*2;f.value=x(P,J)}),g=E(()=>parseInt(e.length,10)),v=E(()=>parseInt(e.start,10)),p=E(()=>e.totalVisible!=null?parseInt(e.totalVisible,10):f.value>=0?f.value:x(h.value,58));function x(D,y){const B=e.showFirstLastPage?5:3;return Math.max(0,Math.floor(Number(((D-y*B)/y).toFixed(2))))}const b=E(()=>{if(g.value<=0||isNaN(g.value)||g.value>Number.MAX_SAFE_INTEGER)return[];if(p.value<=0)return[];if(p.value===1)return[l.value];if(g.value<=p.value)return Xe(g.value,v.value);const D=p.value%2===0,y=D?p.value/2:Math.floor(p.value/2),B=D?y:y+1,M=g.value-y;if(B-l.value>=0)return[...Xe(Math.max(1,p.value-1),v.value),e.ellipsis,g.value];if(l.value-M>=(D?1:0)){const P=p.value-1,J=g.value-P+v.value;return[v.value,e.ellipsis,...Xe(P,J)]}else{const P=Math.max(1,p.value-2),J=P===1?l.value:l.value-Math.ceil(P/2)+v.value;return[v.value,e.ellipsis,...Xe(P,J),e.ellipsis,g.value]}});function _(D,y,B){D.preventDefault(),l.value=y,B&&s(B,y)}const{refs:w,updateRef:C}=pl();nt({VPaginationBtn:{color:Y(e,"color"),border:Y(e,"border"),density:Y(e,"density"),size:Y(e,"size"),variant:Y(e,"variant"),rounded:Y(e,"rounded"),elevation:Y(e,"elevation")}});const I=E(()=>b.value.map((D,y)=>{const B=M=>C(M,y);if(typeof D=="string")return{isActive:!1,key:`ellipsis-${y}`,page:D,props:{ref:B,ellipsis:!0,icon:!0,disabled:!0}};{const M=D===l.value;return{isActive:M,key:D,page:i(D),props:{ref:B,ellipsis:!1,icon:!0,disabled:!!e.disabled||Number(e.length)<2,color:M?e.activeColor:e.color,"aria-current":M,"aria-label":r(M?e.currentPageAriaLabel:e.pageAriaLabel,D),onClick:P=>_(P,D)}}}})),A=E(()=>{const D=!!e.disabled||l.value<=v.value,y=!!e.disabled||l.value>=v.value+g.value-1;return{first:e.showFirstLastPage?{icon:o.value?e.lastIcon:e.firstIcon,onClick:B=>_(B,v.value,"first"),disabled:D,"aria-label":r(e.firstAriaLabel),"aria-disabled":D}:void 0,prev:{icon:o.value?e.nextIcon:e.prevIcon,onClick:B=>_(B,l.value-1,"prev"),disabled:D,"aria-label":r(e.previousAriaLabel),"aria-disabled":D},next:{icon:o.value?e.prevIcon:e.nextIcon,onClick:B=>_(B,l.value+1,"next"),disabled:y,"aria-label":r(e.nextAriaLabel),"aria-disabled":y},last:e.showFirstLastPage?{icon:o.value?e.firstIcon:e.lastIcon,onClick:B=>_(B,v.value+g.value-1,"last"),disabled:y,"aria-label":r(e.lastAriaLabel),"aria-disabled":y}:void 0}});function Q(){var y;const D=l.value-v.value;(y=w.value[D])==null||y.$el.focus()}function H(D){D.key===Qt.left&&!e.disabled&&l.value>Number(e.start)?(l.value=l.value-1,Ge(Q)):D.key===Qt.right&&!e.disabled&&l.valuea(e.tag,{ref:m,class:["v-pagination",c.value,e.class],style:e.style,role:"navigation","aria-label":r(e.ariaLabel),onKeydown:H,"data-test":"v-pagination-root"},{default:()=>[a("ul",{class:"v-pagination__list"},[e.showFirstLastPage&&a("li",{key:"first",class:"v-pagination__first","data-test":"v-pagination-first"},[n.first?n.first(A.value.first):a(z,q({_as:"VPaginationBtn"},A.value.first),null)]),a("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[n.prev?n.prev(A.value.prev):a(z,q({_as:"VPaginationBtn"},A.value.prev),null)]),I.value.map((D,y)=>a("li",{key:D.key,class:["v-pagination__item",{"v-pagination__item--is-active":D.isActive}],"data-test":"v-pagination-item"},[n.item?n.item(D):a(z,q({_as:"VPaginationBtn"},D.props),{default:()=>[D.page]})])),a("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[n.next?n.next(A.value.next):a(z,q({_as:"VPaginationBtn"},A.value.next),null)]),e.showFirstLastPage&&a("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[n.last?n.last(A.value.last):a(z,q({_as:"VPaginationBtn"},A.value.last),null)])])]})),{}}}),yl=X({page:{type:[Number,String],default:1},itemsPerPage:{type:[Number,String],default:10}},"DataTable-paginate"),Bn=Symbol.for("vuetify:data-table-pagination");function xl(e){const t=we(e,"page",void 0,s=>Number(s??1)),n=we(e,"itemsPerPage",void 0,s=>Number(s??10));return{page:t,itemsPerPage:n}}function Sl(e){const{page:t,itemsPerPage:n,itemsLength:s}=e,l=E(()=>n.value===-1?0:n.value*(t.value-1)),r=E(()=>n.value===-1?s.value:Math.min(s.value,l.value+n.value)),i=E(()=>n.value===-1||s.value===0?1:Math.ceil(s.value/n.value));Te([t,i],()=>{t.value>i.value&&(t.value=i.value)});function o(g){n.value=g,t.value=1}function c(){t.value=He(t.value+1,1,i.value)}function h(){t.value=He(t.value-1,1,i.value)}function f(g){t.value=He(g,1,i.value)}const m={page:t,itemsPerPage:n,startIndex:l,stopIndex:r,pageCount:i,itemsLength:s,nextPage:c,prevPage:h,setPage:f,setItemsPerPage:o};return Fe(Bn,m),m}function kl(){const e=Ne(Bn);if(!e)throw new Error("Missing pagination!");return e}function _l(e){const t=Pt("usePaginatedItems"),{items:n,startIndex:s,stopIndex:l,itemsPerPage:r}=e,i=E(()=>r.value<=0?n.value:n.value.slice(s.value,l.value));return Te(i,o=>{t.emit("update:currentItems",o)},{immediate:!0}),{paginatedItems:i}}const Fn=X({prevIcon:{type:ye,default:"$prev"},nextIcon:{type:ye,default:"$next"},firstIcon:{type:ye,default:"$first"},lastIcon:{type:ye,default:"$last"},itemsPerPageText:{type:String,default:"$vuetify.dataFooter.itemsPerPageText"},pageText:{type:String,default:"$vuetify.dataFooter.pageText"},firstPageLabel:{type:String,default:"$vuetify.dataFooter.firstPage"},prevPageLabel:{type:String,default:"$vuetify.dataFooter.prevPage"},nextPageLabel:{type:String,default:"$vuetify.dataFooter.nextPage"},lastPageLabel:{type:String,default:"$vuetify.dataFooter.lastPage"},itemsPerPageOptions:{type:Array,default:()=>[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"},{value:-1,title:"$vuetify.dataFooter.itemsPerPageAll"}]},showCurrentPage:Boolean},"VDataTableFooter"),nn=fe()({name:"VDataTableFooter",props:Fn(),setup(e,t){let{slots:n}=t;const{t:s}=ze(),{page:l,pageCount:r,startIndex:i,stopIndex:o,itemsLength:c,itemsPerPage:h,setItemsPerPage:f}=kl(),m=E(()=>e.itemsPerPageOptions.map(g=>typeof g=="number"?{value:g,title:g===-1?s("$vuetify.dataFooter.itemsPerPageAll"):String(g)}:{...g,title:isNaN(Number(g.title))?s(g.title):g.title}));return ve(()=>{var v;const g=tn.filterProps(e);return a("div",{class:"v-data-table-footer"},[(v=n.prepend)==null?void 0:v.call(n),a("div",{class:"v-data-table-footer__items-per-page"},[a("span",null,[s(e.itemsPerPageText)]),a(Ot,{items:m.value,modelValue:h.value,"onUpdate:modelValue":p=>f(Number(p)),density:"compact",variant:"outlined","hide-details":!0},null)]),a("div",{class:"v-data-table-footer__info"},[a("div",null,[s(e.pageText,c.value?i.value+1:0,o.value,c.value)])]),a("div",{class:"v-data-table-footer__pagination"},[a(tn,q({modelValue:l.value,"onUpdate:modelValue":p=>l.value=p,density:"comfortable","first-aria-label":e.firstPageLabel,"last-aria-label":e.lastPageLabel,length:r.value,"next-aria-label":e.nextPageLabel,"previous-aria-label":e.prevPageLabel,rounded:!0,"show-first-last-page":!0,"total-visible":e.showCurrentPage?1:0,variant:"plain"},g),null)])])}),{}}}),rt=Ya({align:{type:String,default:"start"},fixed:Boolean,fixedOffset:[Number,String],height:[Number,String],lastFixed:Boolean,noPadding:Boolean,tag:String,width:[Number,String],maxWidth:[Number,String],nowrap:Boolean},(e,t)=>{let{slots:n}=t;const s=e.tag??"td";return a(s,{class:["v-data-table__td",{"v-data-table-column--fixed":e.fixed,"v-data-table-column--last-fixed":e.lastFixed,"v-data-table-column--no-padding":e.noPadding,"v-data-table-column--nowrap":e.nowrap},`v-data-table-column--align-${e.align}`],style:{height:Se(e.height),width:Se(e.width),maxWidth:Se(e.maxWidth),left:Se(e.fixedOffset||null)}},{default:()=>{var l;return[(l=n.default)==null?void 0:l.call(n)]}})}),Cl=X({headers:Array},"DataTable-header"),Nn=Symbol.for("vuetify:data-table-headers"),On={title:"",sortable:!1},Vl={...On,width:48};function Tl(){const t=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(n=>({element:n,priority:0}));return{enqueue:(n,s)=>{let l=!1;for(let r=0;rs){t.splice(r,0,{element:n,priority:s}),l=!0;break}l||t.push({element:n,priority:s})},size:()=>t.length,count:()=>{let n=0;if(!t.length)return 0;const s=Math.floor(t[0].priority);for(let l=0;lt.shift()}}function St(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];if(!e.children)t.push(e);else for(const n of e.children)St(n,t);return t}function Mn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;for(const n of e)n.key&&t.add(n.key),n.children&&Mn(n.children,t);return t}function Dl(e){if(e.key){if(e.key==="data-table-group")return On;if(["data-table-expand","data-table-select"].includes(e.key))return Vl}}function Mt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.children?Math.max(t,...e.children.map(n=>Mt(n,t+1))):t}function Pl(e){let t=!1;function n(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(r)if(i&&(r.fixed=!0),r.fixed)if(r.children)for(let o=r.children.length-1;o>=0;o--)n(r.children[o],!0);else t?isNaN(Number(r.width))?Za(`Multiple fixed columns should have a static width (key: ${r.key})`):r.minWidth=Math.max(Number(r.width)||0,Number(r.minWidth)||0):r.lastFixed=!0,t=!0;else if(r.children)for(let o=r.children.length-1;o>=0;o--)n(r.children[o]);else t=!1}for(let r=e.length-1;r>=0;r--)n(e[r]);function s(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!r)return i;if(r.children){r.fixedOffset=i;for(const o of r.children)i=s(o,i)}else r.fixed&&(r.fixedOffset=i,i+=parseFloat(r.width||"0")||0);return i}let l=0;for(const r of e)l=s(r,l)}function Il(e,t){const n=[];let s=0;const l=Tl(e);for(;l.size()>0;){let i=l.count();const o=[];let c=1;for(;i>0;){const{element:h,priority:f}=l.dequeue(),m=t-s-Mt(h);if(o.push({...h,rowspan:m??1,colspan:h.children?St(h).length:1}),h.children)for(const g of h.children){const v=f%1+c/Math.pow(10,s+2);l.enqueue(g,s+m+v)}c+=1,i-=1}s+=1,n.push(o)}return{columns:e.map(i=>St(i)).flat(),headers:n}}function Rn(e){const t=[];for(const n of e){const s={...Dl(n),...n},l=s.key??(typeof s.value=="string"?s.value:null),r=s.value??l??null,i={...s,key:l,value:r,sortable:s.sortable??(s.key!=null||!!s.sort),children:s.children?Rn(s.children):void 0};t.push(i)}return t}function El(e,t){const n=de([]),s=de([]),l=de({}),r=de({}),i=de({});at(()=>{var x,b,_;const h=(e.headers||Object.keys(e.items[0]??{}).map(w=>({key:w,title:Xa(w)}))).slice(),f=Mn(h);(x=t==null?void 0:t.groupBy)!=null&&x.value.length&&!f.has("data-table-group")&&h.unshift({key:"data-table-group",title:"Group"}),(b=t==null?void 0:t.showSelect)!=null&&b.value&&!f.has("data-table-select")&&h.unshift({key:"data-table-select"}),(_=t==null?void 0:t.showExpand)!=null&&_.value&&!f.has("data-table-expand")&&h.push({key:"data-table-expand"});const m=Rn(h);Pl(m);const g=Math.max(...m.map(w=>Mt(w)))+1,v=Il(m,g);n.value=v.headers,s.value=v.columns;const p=v.headers.flat(1);for(const w of p)w.key&&(w.sortable&&(w.sort&&(l.value[w.key]=w.sort),w.sortRaw&&(r.value[w.key]=w.sortRaw)),w.filter&&(i.value[w.key]=w.filter))});const o={headers:n,columns:s,sortFunctions:l,sortRawFunctions:r,filterFunctions:i};return Fe(Nn,o),o}function dt(){const e=Ne(Nn);if(!e)throw new Error("Missing headers!");return e}const Al={showSelectAll:!1,allSelected:()=>[],select:e=>{var s;let{items:t,value:n}=e;return new Set(n?[(s=t[0])==null?void 0:s.value]:[])},selectAll:e=>{let{selected:t}=e;return t}},jn={showSelectAll:!0,allSelected:e=>{let{currentPage:t}=e;return t},select:e=>{let{items:t,value:n,selected:s}=e;for(const l of t)n?s.add(l.value):s.delete(l.value);return s},selectAll:e=>{let{value:t,currentPage:n,selected:s}=e;return jn.select({items:n,value:t,selected:s})}},Un={showSelectAll:!0,allSelected:e=>{let{allItems:t}=e;return t},select:e=>{let{items:t,value:n,selected:s}=e;for(const l of t)n?s.add(l.value):s.delete(l.value);return s},selectAll:e=>{let{value:t,allItems:n,selected:s}=e;return Un.select({items:n,value:t,selected:s})}},Ll=X({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:{type:Function,default:Ue}},"DataTable-select"),Hn=Symbol.for("vuetify:data-table-selection");function Bl(e,t){let{allItems:n,currentPage:s}=t;const l=we(e,"modelValue",e.modelValue,w=>new Set(Pe(w).map(C=>{var I;return((I=n.value.find(A=>e.valueComparator(C,A.value)))==null?void 0:I.value)??C})),w=>[...w.values()]),r=E(()=>n.value.filter(w=>w.selectable)),i=E(()=>s.value.filter(w=>w.selectable)),o=E(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;switch(e.selectStrategy){case"single":return Al;case"all":return Un;case"page":default:return jn}}),c=be(null);function h(w){return Pe(w).every(C=>l.value.has(C.value))}function f(w){return Pe(w).some(C=>l.value.has(C.value))}function m(w,C){const I=o.value.select({items:w,value:C,selected:new Set(l.value)});l.value=I}function g(w,C,I){const A=[];if(C=C??s.value.findIndex(Q=>Q.value===w.value),e.selectStrategy!=="single"&&(I!=null&&I.shiftKey)&&c.value!==null){const[Q,H]=[c.value,C].sort((D,y)=>D-y);A.push(...s.value.slice(Q,H+1))}else A.push(w),c.value=C;m(A,!h([w]))}function v(w){const C=o.value.selectAll({value:w,allItems:r.value,currentPage:i.value,selected:new Set(l.value)});l.value=C}const p=E(()=>l.value.size>0),x=E(()=>{const w=o.value.allSelected({allItems:r.value,currentPage:i.value});return!!w.length&&h(w)}),b=E(()=>o.value.showSelectAll),_={toggleSelect:g,select:m,selectAll:v,isSelected:h,isSomeSelected:f,someSelected:p,allSelected:x,showSelectAll:b,lastSelectedIndex:c,selectStrategy:o};return Fe(Hn,_),_}function ct(){const e=Ne(Hn);if(!e)throw new Error("Missing selection!");return e}const Fl=X({sortBy:{type:Array,default:()=>[]},customKeySort:Object,multiSort:Boolean,mustSort:Boolean},"DataTable-sort"),$n=Symbol.for("vuetify:data-table-sort");function Nl(e){const t=we(e,"sortBy"),n=Y(e,"mustSort"),s=Y(e,"multiSort");return{sortBy:t,mustSort:n,multiSort:s}}function Ol(e){const{sortBy:t,mustSort:n,multiSort:s,page:l}=e,r=c=>{if(c.key==null)return;let h=t.value.map(m=>({...m}))??[];const f=h.find(m=>m.key===c.key);f?f.order==="desc"?n.value&&h.length===1?f.order="asc":h=h.filter(m=>m.key!==c.key):f.order="desc":s.value?h.push({key:c.key,order:"asc"}):h=[{key:c.key,order:"asc"}],t.value=h,l&&(l.value=1)};function i(c){return!!t.value.find(h=>h.key===c.key)}const o={sortBy:t,toggleSort:r,isSorted:i};return Fe($n,o),o}function zn(){const e=Ne($n);if(!e)throw new Error("Missing sort!");return e}function Ml(e,t,n,s){const l=ze();return{sortedItems:E(()=>{var i,o;return n.value.length?Rl(t.value,n.value,l.current.value,{transform:s==null?void 0:s.transform,sortFunctions:{...e.customKeySort,...(i=s==null?void 0:s.sortFunctions)==null?void 0:i.value},sortRawFunctions:(o=s==null?void 0:s.sortRawFunctions)==null?void 0:o.value}):t.value})}}function Rl(e,t,n,s){const l=new Intl.Collator(n,{sensitivity:"accent",usage:"sort"});return e.map(i=>[i,s!=null&&s.transform?s.transform(i):i]).sort((i,o)=>{var c,h;for(let f=0;fw!=null?w.toString().toLocaleLowerCase():w),p!==x)return Ze(p)&&Ze(x)?0:Ze(p)?-1:Ze(x)?1:!isNaN(p)&&!isNaN(x)?Number(p)-Number(x):l.compare(p,x)}}return 0}).map(i=>{let[o]=i;return o})}const Kn=X({color:String,disableSort:Boolean,fixedHeader:Boolean,multiSort:Boolean,sortAscIcon:{type:ye,default:"$sortAsc"},sortDescIcon:{type:ye,default:"$sortDesc"},headerProps:{type:Object},sticky:Boolean,...Et(),...es()},"VDataTableHeaders"),an=fe()({name:"VDataTableHeaders",props:Kn(),setup(e,t){let{slots:n}=t;const{t:s}=ze(),{toggleSort:l,sortBy:r,isSorted:i}=zn(),{someSelected:o,allSelected:c,selectAll:h,showSelectAll:f}=ct(),{columns:m,headers:g}=dt(),{loaderClasses:v}=gn(e);function p(D,y){if(!(!(e.sticky||e.fixedHeader)&&!D.fixed))return{position:"sticky",left:D.fixed?Se(D.fixedOffset):void 0,top:e.sticky||e.fixedHeader?`calc(var(--v-table-header-height) * ${y})`:void 0}}function x(D){const y=r.value.find(B=>B.key===D.key);return y?y.order==="asc"?e.sortAscIcon:e.sortDescIcon:e.sortAscIcon}const{backgroundColorClasses:b,backgroundColorStyles:_}=fn(e,"color"),{displayClasses:w,mobile:C}=$e(e),I=E(()=>({headers:g.value,columns:m.value,toggleSort:l,isSorted:i,sortBy:r.value,someSelected:o.value,allSelected:c.value,selectAll:h,getSortIcon:x})),A=E(()=>["v-data-table__th",{"v-data-table__th--sticky":e.sticky||e.fixedHeader},w.value,v.value]),Q=D=>{let{column:y,x:B,y:M}=D;const P=y.key==="data-table-select"||y.key==="data-table-expand",J=q(e.headerProps??{},y.headerProps??{});return a(rt,q({tag:"th",align:y.align,class:[{"v-data-table__th--sortable":y.sortable&&!e.disableSort,"v-data-table__th--sorted":i(y),"v-data-table__th--fixed":y.fixed},...A.value],style:{width:Se(y.width),minWidth:Se(y.minWidth),maxWidth:Se(y.maxWidth),...p(y,M)},colspan:y.colspan,rowspan:y.rowspan,onClick:y.sortable?()=>l(y):void 0,fixed:y.fixed,nowrap:y.nowrap,lastFixed:y.lastFixed,noPadding:P},J),{default:()=>{var V;const ae=`header.${y.key}`,F={column:y,selectAll:h,isSorted:i,toggleSort:l,sortBy:r.value,someSelected:o.value,allSelected:c.value,getSortIcon:x};return n[ae]?n[ae](F):y.key==="data-table-select"?((V=n["header.data-table-select"])==null?void 0:V.call(n,F))??(f.value&&a(ut,{modelValue:c.value,indeterminate:o.value&&!c.value,"onUpdate:modelValue":h},null)):a("div",{class:"v-data-table-header__content"},[a("span",null,[y.title]),y.sortable&&!e.disableSort&&a(ee,{key:"icon",class:"v-data-table-header__sort-icon",icon:x(y)},null),e.multiSort&&i(y)&&a("div",{key:"badge",class:["v-data-table-header__sort-badge",...b.value],style:_.value},[r.value.findIndex(N=>N.key===y.key)+1])])}})},H=()=>{const D=q(e.headerProps??{}??{}),y=E(()=>m.value.filter(M=>(M==null?void 0:M.sortable)&&!e.disableSort)),B=E(()=>{if(m.value.find(P=>P.key==="data-table-select")!=null)return c.value?"$checkboxOn":o.value?"$checkboxIndeterminate":"$checkboxOff"});return a(rt,q({tag:"th",class:[...A.value],colspan:g.value.length+1},D),{default:()=>[a("div",{class:"v-data-table-header__content"},[a(Ot,{chips:!0,class:"v-data-table__td-sort-select",clearable:!0,density:"default",items:y.value,label:s("$vuetify.dataTable.sortBy"),multiple:e.multiSort,variant:"underlined","onClick:clear":()=>r.value=[],appendIcon:B.value,"onClick:append":()=>h(!c.value)},{...n,chip:M=>{var P;return a(Le,{onClick:(P=M.item.raw)!=null&&P.sortable?()=>l(M.item.raw):void 0,onMousedown:J=>{J.preventDefault(),J.stopPropagation()}},{default:()=>[M.item.title,a(ee,{class:["v-data-table__td-sort-icon",i(M.item.raw)&&"v-data-table__td-sort-icon-active"],icon:x(M.item.raw),size:"small"},null)]})}})])]})};ve(()=>C.value?a("tr",null,[a(H,null,null)]):a(oe,null,[n.headers?n.headers(I.value):g.value.map((D,y)=>a("tr",null,[D.map((B,M)=>a(Q,{column:B,x:M,y},null))])),e.loading&&a("tr",{class:"v-data-table-progress"},[a("th",{colspan:m.value.length},[a(pn,{name:"v-data-table-progress",absolute:!0,active:!0,color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0},{default:n.loader})])])]))}}),jl=X({groupBy:{type:Array,default:()=>[]}},"DataTable-group"),Wn=Symbol.for("vuetify:data-table-group");function Ul(e){return{groupBy:we(e,"groupBy")}}function Hl(e){const{disableSort:t,groupBy:n,sortBy:s}=e,l=de(new Set),r=E(()=>n.value.map(f=>({...f,order:f.order??!1})).concat(t!=null&&t.value?[]:s.value));function i(f){return l.value.has(f.id)}function o(f){const m=new Set(l.value);i(f)?m.delete(f.id):m.add(f.id),l.value=m}function c(f){function m(g){const v=[];for(const p of g.items)"type"in p&&p.type==="group"?v.push(...m(p)):v.push(p);return[...new Set(v)]}return m({items:f})}const h={sortByWithGroups:r,toggleGroup:o,opened:l,groupBy:n,extractRows:c,isGroupOpen:i};return Fe(Wn,h),h}function Gn(){const e=Ne(Wn);if(!e)throw new Error("Missing group!");return e}function $l(e,t){if(!e.length)return[];const n=new Map;for(const s of e){const l=lt(s.raw,t);n.has(l)||n.set(l,[]),n.get(l).push(s)}return n}function Qn(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"root";if(!t.length)return[];const l=$l(e,t[0]),r=[],i=t.slice(1);return l.forEach((o,c)=>{const h=t[0],f=`${s}_${h}_${c}`;r.push({depth:n,id:f,key:h,value:c,items:i.length?Qn(o,i,n+1,f):o,type:"group"})}),r}function qn(e,t){const n=[];for(const s of e)"type"in s&&s.type==="group"?(s.value!=null&&n.push(s),(t.has(s.id)||s.value==null)&&n.push(...qn(s.items,t))):n.push(s);return n}function zl(e,t,n){return{flatItems:E(()=>{if(!t.value.length)return e.value;const l=Qn(e.value,t.value.map(r=>r.key));return qn(l,n.value)})}}const Kl=X({item:{type:Object,required:!0}},"VDataTableGroupHeaderRow"),Wl=fe()({name:"VDataTableGroupHeaderRow",props:Kl(),setup(e,t){let{slots:n}=t;const{isGroupOpen:s,toggleGroup:l,extractRows:r}=Gn(),{isSelected:i,isSomeSelected:o,select:c}=ct(),{columns:h}=dt(),f=E(()=>r([e.item]));return()=>a("tr",{class:"v-data-table-group-header-row",style:{"--v-data-table-group-header-row-depth":e.item.depth}},[h.value.map(m=>{var g,v;if(m.key==="data-table-group"){const p=s(e.item)?"$expand":"$next",x=()=>l(e.item);return((g=n["data-table-group"])==null?void 0:g.call(n,{item:e.item,count:f.value.length,props:{icon:p,onClick:x}}))??a(rt,{class:"v-data-table-group-header-row__column"},{default:()=>[a(z,{size:"small",variant:"text",icon:p,onClick:x},null),a("span",null,[e.item.value]),a("span",null,[S("("),f.value.length,S(")")])]})}if(m.key==="data-table-select"){const p=i(f.value),x=o(f.value)&&!p,b=_=>c(f.value,_);return((v=n["data-table-select"])==null?void 0:v.call(n,{props:{modelValue:p,indeterminate:x,"onUpdate:modelValue":b}}))??a("td",null,[a(ut,{modelValue:p,indeterminate:x,"onUpdate:modelValue":b},null)])}return a("td",null,null)})])}}),Gl=X({expandOnClick:Boolean,showExpand:Boolean,expanded:{type:Array,default:()=>[]}},"DataTable-expand"),Jn=Symbol.for("vuetify:datatable:expanded");function Ql(e){const t=Y(e,"expandOnClick"),n=we(e,"expanded",e.expanded,o=>new Set(o),o=>[...o.values()]);function s(o,c){const h=new Set(n.value);c?h.add(o.value):h.delete(o.value),n.value=h}function l(o){return n.value.has(o.value)}function r(o){s(o,!l(o))}const i={expand:s,expanded:n,expandOnClick:t,isExpanded:l,toggleExpand:r};return Fe(Jn,i),i}function Yn(){const e=Ne(Jn);if(!e)throw new Error("foo");return e}const ql=X({index:Number,item:Object,cellProps:[Object,Function],onClick:vt(),onContextmenu:vt(),onDblclick:vt(),...Et()},"VDataTableRow"),Jl=fe()({name:"VDataTableRow",props:ql(),setup(e,t){let{slots:n}=t;const{displayClasses:s,mobile:l}=$e(e,"v-data-table__tr"),{isSelected:r,toggleSelect:i,someSelected:o,allSelected:c,selectAll:h}=ct(),{isExpanded:f,toggleExpand:m}=Yn(),{toggleSort:g,sortBy:v,isSorted:p}=zn(),{columns:x}=dt();ve(()=>a("tr",{class:["v-data-table__tr",{"v-data-table__tr--clickable":!!(e.onClick||e.onContextmenu||e.onDblclick)},s.value],onClick:e.onClick,onContextmenu:e.onContextmenu,onDblclick:e.onDblclick},[e.item&&x.value.map((b,_)=>{const w=e.item,C=`item.${b.key}`,I=`header.${b.key}`,A={index:e.index,item:w.raw,internalItem:w,value:lt(w.columns,b.key),column:b,isSelected:r,toggleSelect:i,isExpanded:f,toggleExpand:m},Q={column:b,selectAll:h,isSorted:p,toggleSort:g,sortBy:v.value,someSelected:o.value,allSelected:c.value,getSortIcon:()=>""},H=typeof e.cellProps=="function"?e.cellProps({index:A.index,item:A.item,internalItem:A.internalItem,value:A.value,column:b}):e.cellProps,D=typeof b.cellProps=="function"?b.cellProps({index:A.index,item:A.item,internalItem:A.internalItem,value:A.value}):b.cellProps;return a(rt,q({align:b.align,class:{"v-data-table__td--expanded-row":b.key==="data-table-expand","v-data-table__td--select-row":b.key==="data-table-select"},fixed:b.fixed,fixedOffset:b.fixedOffset,lastFixed:b.lastFixed,maxWidth:l.value?void 0:b.maxWidth,noPadding:b.key==="data-table-select"||b.key==="data-table-expand",nowrap:b.nowrap,width:l.value?void 0:b.width},H,D),{default:()=>{var B,M,P,J;if(b.key==="data-table-select")return((B=n["item.data-table-select"])==null?void 0:B.call(n,{...A,props:{disabled:!w.selectable,modelValue:r([w]),onClick:et(()=>i(w),["stop"])}}))??a(ut,{disabled:!w.selectable,modelValue:r([w]),onClick:et(ae=>i(w,e.index,ae),["stop"])},null);if(b.key==="data-table-expand")return((M=n["item.data-table-expand"])==null?void 0:M.call(n,{...A,props:{icon:f(w)?"$collapse":"$expand",size:"small",variant:"text",onClick:et(()=>m(w),["stop"])}}))??a(z,{icon:f(w)?"$collapse":"$expand",size:"small",variant:"text",onClick:et(()=>m(w),["stop"])},null);if(n[C]&&!l.value)return n[C](A);const y=ne(A.value);return l.value?a(oe,null,[a("div",{class:"v-data-table__td-title"},[((P=n[I])==null?void 0:P.call(n,Q))??b.title]),a("div",{class:"v-data-table__td-value"},[((J=n[C])==null?void 0:J.call(n,A))??y])]):y}})})]))}}),Xn=X({loading:[Boolean,String],loadingText:{type:String,default:"$vuetify.dataIterator.loadingText"},hideNoData:Boolean,items:{type:Array,default:()=>[]},noDataText:{type:String,default:"$vuetify.noDataText"},rowProps:[Object,Function],cellProps:[Object,Function],...Et()},"VDataTableRows"),sn=fe()({name:"VDataTableRows",inheritAttrs:!1,props:Xn(),setup(e,t){let{attrs:n,slots:s}=t;const{columns:l}=dt(),{expandOnClick:r,toggleExpand:i,isExpanded:o}=Yn(),{isSelected:c,toggleSelect:h}=ct(),{toggleGroup:f,isGroupOpen:m}=Gn(),{t:g}=ze(),{mobile:v}=$e(e);return ve(()=>{var p,x;return e.loading&&(!e.items.length||s.loading)?a("tr",{class:"v-data-table-rows-loading",key:"loading"},[a("td",{colspan:l.value.length},[((p=s.loading)==null?void 0:p.call(s))??g(e.loadingText)])]):!e.loading&&!e.items.length&&!e.hideNoData?a("tr",{class:"v-data-table-rows-no-data",key:"no-data"},[a("td",{colspan:l.value.length},[((x=s["no-data"])==null?void 0:x.call(s))??g(e.noDataText)])]):a(oe,null,[e.items.map((b,_)=>{var I;if(b.type==="group"){const A={index:_,item:b,columns:l.value,isExpanded:o,toggleExpand:i,isSelected:c,toggleSelect:h,toggleGroup:f,isGroupOpen:m};return s["group-header"]?s["group-header"](A):a(Wl,q({key:`group-header_${b.id}`,item:b},qt(n,":group-header",()=>A)),s)}const w={index:_,item:b.raw,internalItem:b,columns:l.value,isExpanded:o,toggleExpand:i,isSelected:c,toggleSelect:h},C={...w,props:q({key:`item_${b.key??b.index}`,onClick:r.value?()=>{i(b)}:void 0,index:_,item:b,cellProps:e.cellProps,mobile:v.value},qt(n,":row",()=>w),typeof e.rowProps=="function"?e.rowProps({item:w.item,index:w.index,internalItem:w.internalItem}):e.rowProps)};return a(oe,{key:C.props.key},[s.item?s.item(C):a(Jl,C.props,s),o(b)&&((I=s["expanded-row"])==null?void 0:I.call(s,w))])})])}),{}}}),Zn=X({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,...Be(),...Ct(),...kn(),..._t()},"VTable"),ln=fe()({name:"VTable",props:Zn(),setup(e,t){let{slots:n,emit:s}=t;const{themeClasses:l}=Sn(e),{densityClasses:r}=cn(e);return ve(()=>a(e.tag,{class:["v-table",{"v-table--fixed-height":!!e.height,"v-table--fixed-header":e.fixedHeader,"v-table--fixed-footer":e.fixedFooter,"v-table--has-top":!!n.top,"v-table--has-bottom":!!n.bottom,"v-table--hover":e.hover},l.value,r.value,e.class],style:e.style},{default:()=>{var i,o,c;return[(i=n.top)==null?void 0:i.call(n),n.default?a("div",{class:"v-table__wrapper",style:{height:Se(e.height)}},[a("table",null,[n.default()])]):(o=n.wrapper)==null?void 0:o.call(n),(c=n.bottom)==null?void 0:c.call(n)]}})),{}}}),Yl=X({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},rowProps:[Object,Function],cellProps:[Object,Function],returnObject:Boolean},"DataTable-items");function Xl(e,t,n,s){const l=e.returnObject?t:je(t,e.itemValue),r=je(t,e.itemSelectable,!0),i=s.reduce((o,c)=>(c.key!=null&&(o[c.key]=je(t,c.value)),o),{});return{type:"item",key:e.returnObject?je(t,e.itemValue):l,index:n,value:l,selectable:r,columns:i,raw:t}}function Zl(e,t,n){return t.map((s,l)=>Xl(e,s,l,n))}function ei(e,t){return{items:E(()=>Zl(e,e.items,t.value))}}function ti(e){let{page:t,itemsPerPage:n,sortBy:s,groupBy:l,search:r}=e;const i=Pt("VDataTable"),o=E(()=>({page:t.value,itemsPerPage:n.value,sortBy:s.value,groupBy:l.value,search:r.value}));let c=null;Te(o,()=>{Ue(c,o.value)||(c&&c.search!==o.value.search&&(t.value=1),i.emit("update:options",o.value),c=o.value)},{deep:!0,immediate:!0})}const ni=(e,t,n)=>{if(e==null||t==null)return-1;if(!t.length)return 0;e=e.toString().toLocaleLowerCase(),t=t.toString().toLocaleLowerCase();const s=[];let l=e.indexOf(t);for(;~l;)s.push([l,l+t.length]),l=e.indexOf(t,l+t.length);return s.length?s:-1};function pt(e,t){if(!(e==null||typeof e=="boolean"||e===-1))return typeof e=="number"?[[e,e+t.length]]:Array.isArray(e[0])?e:[e]}const ai=X({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function si(e,t,n){var o;const s=[],l=(n==null?void 0:n.default)??ni,r=n!=null&&n.filterKeys?Pe(n.filterKeys):!1,i=Object.keys((n==null?void 0:n.customKeyFilter)??{}).length;if(!(e!=null&&e.length))return s;e:for(let c=0;c0)&&!(n!=null&&n.noFilter)){if(typeof h=="object"){const b=r||Object.keys(f);for(const _ of b){const w=je(f,_),C=(o=n==null?void 0:n.customKeyFilter)==null?void 0:o[_];if(v=C?C(w,t,h):l(w,t,h),v!==-1&&v!==!1)C?m[_]=pt(v,t):g[_]=pt(v,t);else if((n==null?void 0:n.filterMode)==="every")continue e}}else v=l(h,t,h),v!==-1&&v!==!1&&(g.title=pt(v,t));const p=Object.keys(g).length,x=Object.keys(m).length;if(!p&&!x||(n==null?void 0:n.filterMode)==="union"&&x!==i&&!p||(n==null?void 0:n.filterMode)==="intersection"&&(x!==i||!p))continue}s.push({index:c,matches:{...g,...m}})}return s}function li(e,t,n,s){const l=be([]),r=be(new Map),i=E(()=>s!=null&&s.transform?Ke(t).map(c=>[c,s.transform(c)]):Ke(t));at(()=>{const c=typeof n=="function"?n():Ke(n),h=typeof c!="string"&&typeof c!="number"?"":String(c),f=si(i.value,h,{customKeyFilter:{...e.customKeyFilter,...Ke(s==null?void 0:s.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),m=Ke(t),g=[],v=new Map;f.forEach(p=>{let{index:x,matches:b}=p;const _=m[x];g.push(_),v.set(_.value,b)}),l.value=g,r.value=v});function o(c){return r.value.get(c.value)}return{filteredItems:l,filteredMatches:r,getMatches:o}}const ii=X({...Xn(),hideDefaultBody:Boolean,hideDefaultFooter:Boolean,hideDefaultHeader:Boolean,width:[String,Number],search:String,...Gl(),...jl(),...Cl(),...Yl(),...Ll(),...Fl(),...Kn(),...Zn()},"DataTable"),ri=X({...yl(),...ii(),...ai(),...Fn()},"VDataTable"),oi=fe()({name:"VDataTable",props:ri(),emits:{"update:modelValue":e=>!0,"update:page":e=>!0,"update:itemsPerPage":e=>!0,"update:sortBy":e=>!0,"update:options":e=>!0,"update:groupBy":e=>!0,"update:expanded":e=>!0,"update:currentItems":e=>!0},setup(e,t){let{attrs:n,slots:s}=t;const{groupBy:l}=Ul(e),{sortBy:r,multiSort:i,mustSort:o}=Nl(e),{page:c,itemsPerPage:h}=xl(e),{disableSort:f}=ts(e),{columns:m,headers:g,sortFunctions:v,sortRawFunctions:p,filterFunctions:x}=El(e,{groupBy:l,showSelect:Y(e,"showSelect"),showExpand:Y(e,"showExpand")}),{items:b}=ei(e,m),_=Y(e,"search"),{filteredItems:w}=li(e,b,_,{transform:G=>G.columns,customKeyFilter:x}),{toggleSort:C}=Ol({sortBy:r,multiSort:i,mustSort:o,page:c}),{sortByWithGroups:I,opened:A,extractRows:Q,isGroupOpen:H,toggleGroup:D}=Hl({groupBy:l,sortBy:r,disableSort:f}),{sortedItems:y}=Ml(e,w,I,{transform:G=>({...G.raw,...G.columns}),sortFunctions:v,sortRawFunctions:p}),{flatItems:B}=zl(y,l,A),M=E(()=>B.value.length),{startIndex:P,stopIndex:J,pageCount:ae,setItemsPerPage:F}=Sl({page:c,itemsPerPage:h,itemsLength:M}),{paginatedItems:V}=_l({items:B,startIndex:P,stopIndex:J,itemsPerPage:h}),N=E(()=>Q(V.value)),{isSelected:U,select:T,selectAll:d,toggleSelect:$,someSelected:k,allSelected:O}=Bl(e,{allItems:b,currentPage:N}),{isExpanded:R,toggleExpand:K}=Ql(e);ti({page:c,itemsPerPage:h,sortBy:r,groupBy:l,search:_}),nt({VDataTableRows:{hideNoData:Y(e,"hideNoData"),noDataText:Y(e,"noDataText"),loading:Y(e,"loading"),loadingText:Y(e,"loadingText")}});const L=E(()=>({page:c.value,itemsPerPage:h.value,sortBy:r.value,pageCount:ae.value,toggleSort:C,setItemsPerPage:F,someSelected:k.value,allSelected:O.value,isSelected:U,select:T,selectAll:d,toggleSelect:$,isExpanded:R,toggleExpand:K,isGroupOpen:H,toggleGroup:D,items:N.value.map(G=>G.raw),internalItems:N.value,groupedItems:V.value,columns:m.value,headers:g.value}));return ve(()=>{const G=nn.filterProps(e),te=an.filterProps(e),xe=sn.filterProps(e),le=ln.filterProps(e);return a(ln,q({class:["v-data-table",{"v-data-table--show-select":e.showSelect,"v-data-table--loading":e.loading},e.class],style:e.style},le,{fixedHeader:e.fixedHeader||e.sticky}),{top:()=>{var _e;return(_e=s.top)==null?void 0:_e.call(s,L.value)},default:()=>{var _e,Ce,Re,Ae,Qe,qe;return s.default?s.default(L.value):a(oe,null,[(_e=s.colgroup)==null?void 0:_e.call(s,L.value),!e.hideDefaultHeader&&a("thead",{key:"thead"},[a(an,te,s)]),(Ce=s.thead)==null?void 0:Ce.call(s,L.value),!e.hideDefaultBody&&a("tbody",null,[(Re=s["body.prepend"])==null?void 0:Re.call(s,L.value),s.body?s.body(L.value):a(sn,q(n,xe,{items:V.value}),s),(Ae=s["body.append"])==null?void 0:Ae.call(s,L.value)]),(Qe=s.tbody)==null?void 0:Qe.call(s,L.value),(qe=s.tfoot)==null?void 0:qe.call(s,L.value)])},bottom:()=>s.bottom?s.bottom(L.value):!e.hideDefaultFooter&&a(oe,null,[a(ie,null,null),a(nn,G,{prepend:s["footer.prepend"]})])})}),{}}}),ui={name:"SettingsLinkGenerator",data(){return{selectedItems:[],generatedLink:"",linkCopied:!1,search:"",headers:[{title:"",key:"data-table-select"},{title:"设置项",key:"description",sortable:!0},{title:"当前值",key:"value",sortable:!0},{title:"键名",key:"key",class:"d-none d-sm-table-cell",sortable:!0},{title:"状态",key:"isChanged",sortable:!0}]}},computed:{settingItems(){const e=tt(),t=[];for(const[n,s]of Object.entries(yt)){if(s.requireDeveloper&&!e["developer.enabled"])continue;const l=e[n]!==s.default;t.push({key:n,description:s.description||n,value:e[n],icon:s.icon||"mdi-cog",isChanged:l,defaultValue:s.default})}return t.sort((n,s)=>n.key.localeCompare(s.key))},filteredItems(){if(!this.search)return this.settingItems;const e=this.search.toLowerCase();return e==="已修改"?this.settingItems.filter(t=>t.isChanged):e==="是"||e==="否"?this.settingItems.filter(t=>typeof t.value=="boolean"&&(e==="是"?t.value:!t.value)):this.settingItems.filter(t=>{const n=t.description.toLowerCase(),s=t.key.toLowerCase(),l=String(t.value).toLowerCase(),r=t.isChanged?"已修改":"默认";return n.includes(e)||s.includes(e)||l.includes(e)||r.includes(e)})},hasDisplaySettings(){return this.selectedItems.some(e=>e.startsWith("display."))},hasEditSettings(){return this.selectedItems.some(e=>e.startsWith("edit."))},hasServerSettings(){return this.selectedItems.some(e=>e.startsWith("server."))},hasChangedSettings(){const e=tt();return this.selectedItems.some(t=>{const n=yt[t];return n&&e[t]!==n.default})}},methods:{handleSelectionChange(e){this.selectedItems=e.map(t=>t.key),this.generateLink()},generateLink(){const e=`${window.location.protocol}//${window.location.host}/`,t=tt(),n={};for(const s of this.selectedItems)n[s]=t[s];if(Object.keys(n).length===0){this.generatedLink=e;return}try{const s=JSON.stringify(n),r=new TextEncoder().encode(s),o={config:btoa(Array.from(r).map(m=>String.fromCharCode(m)).join(""))},h=new URLSearchParams(window.location.search).get("date");h&&(o.date=h);const f=new URLSearchParams(o).toString();this.generatedLink=`${e}?${f}`}catch(s){console.error("生成链接失败:",s),this.generatedLink="链接生成失败,请重试"}this.linkCopied=!1},async copyLink(){this.generatedLink||this.generateLink();try{await navigator.clipboard.writeText(this.generatedLink),this.linkCopied=!0,setTimeout(()=>{this.linkCopied=!1},3e3)}catch(e){console.error("复制链接失败:",e)}},resetSelection(){this.selectedItems=[],this.generatedLink="",this.linkCopied=!1},selectAll(){this.selectedItems=this.settingItems.map(e=>e.key),this.generateLink()},selectDataSourceSettings(){const e=this.settingItems.filter(t=>t.key.startsWith("server.")).map(t=>t.key);this.selectedItems=e,this.generateLink()},selectChangedSettings(){const e=this.settingItems.filter(t=>t.isChanged).map(t=>t.key);this.selectedItems=e,this.generateLink()},selectByPrefix(e){const t=this.settingItems.filter(n=>n.key.startsWith(`${e}.`)).map(n=>n.key);this.selectedItems=t},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(e){const t=this.settingItems.find(n=>n.key===e);return t?t.description:e}},watch:{selectedItems:{handler(){this.autoGenerateLink()},deep:!0}}},di={class:"d-flex mb-3 gap-2 flex-wrap"},ci={class:"d-flex align-center mt-3 mb-3 flex-wrap gap-2"},fi={class:"d-flex align-center"},hi={key:0},wi={key:1},mi={class:"text-caption text-grey"};function vi(e,t,n,s,l,r){return j(),Z(Ee,{border:"",class:"settings-link-generator mb-4"},{default:u(()=>[a(Oe,{class:"text-h6"},{default:u(()=>[a(ee,{start:"",icon:"mdi-link-variant",class:"mr-2"}),t[3]||(t[3]=S(" 设置分享 "))]),_:1}),a(De,null,{default:u(()=>[ue("div",di,[a(z,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-select-all",onClick:r.selectAll},{default:u(()=>t[4]||(t[4]=[S(" 全选 ")])),_:1},8,["onClick"]),a(z,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-server-network",onClick:r.selectDataSourceSettings},{default:u(()=>t[5]||(t[5]=[S(" 数据源设置 ")])),_:1},8,["onClick"]),a(z,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-compare",onClick:r.selectChangedSettings},{default:u(()=>t[6]||(t[6]=[S(" 已变更设置 ")])),_:1},8,["onClick"]),a(z,{size:"small",variant:"tonal",color:"error","prepend-icon":"mdi-select-remove",onClick:r.resetSelection},{default:u(()=>t[7]||(t[7]=[S(" 取消选择 ")])),_:1},8,["onClick"])]),ue("div",ci,[a(Le,{color:"primary",class:"mr-2"},{default:u(()=>[S(" 已选 "+ne(l.selectedItems.length)+" 项设置 ",1)]),_:1}),l.selectedItems.length>0?(j(!0),re(oe,{key:0},ot(l.selectedItems,i=>(j(),Z(Le,{key:i,size:"small",class:"mr-1",variant:"text"},{default:u(()=>[S(ne(r.getSettingDescription(i)),1)]),_:2},1024))),128)):me("",!0)]),a(Ie,{modelValue:l.generatedLink,"onUpdate:modelValue":t[0]||(t[0]=i=>l.generatedLink=i),label:"生成的链接",readonly:"",variant:"outlined",class:"mb-2","append-inner-icon":l.linkCopied?"mdi-check":"mdi-content-copy","onClick:appendInner":r.copyLink},null,8,["modelValue","append-inner-icon","onClick:appendInner"]),a(ds,{variant:"accordion"},{default:u(()=>[a(cs,null,{default:u(()=>[a(fs,null,{default:u(()=>t[8]||(t[8]=[S(" 显示设置列表详情 ")])),_:1}),a(hs,null,{default:u(()=>[a(oi,{"items-per-page":r.settingItems.length,headers:l.headers,items:r.filteredItems,"item-value":"key",modelValue:l.selectedItems,"onUpdate:modelValue":t[2]||(t[2]=i=>l.selectedItems=i),"show-select":"",density:"compact",class:"rounded setting-table","onUpdate:selected":r.handleSelectionChange,"sort-by":[{key:"isChanged",order:"desc"}]},{top:u(()=>[a(Ie,{modelValue:l.search,"onUpdate:modelValue":t[1]||(t[1]=i=>l.search=i),label:"搜索设置","prepend-inner-icon":"mdi-magnify","single-line":"","hide-details":"",class:"mb-4"},null,8,["modelValue"])]),"item.description":u(({item:i})=>[ue("div",fi,[a(ee,{size:"small",icon:i.icon,class:"mr-2"},null,8,["icon"]),S(" "+ne(i.description),1)])]),"item.value":u(({item:i})=>[typeof i.value=="boolean"?(j(),re("span",hi,ne(i.value?"是":"否"),1)):(j(),re("span",wi,ne(i.value),1))]),"item.key":u(({item:i})=>[ue("span",mi,ne(i.key),1)]),"item.isChanged":u(({item:i})=>[a(Le,{size:"x-small",color:i.isChanged?"warning":"success",text:i.isChanged?"已修改":"默认",density:"compact"},null,8,["color","text"])]),_:2},1032,["items-per-page","headers","items","modelValue","onUpdate:selected"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const ea=ge(ui,[["render",vi]]),gi={name:"ThemeSettingsCard",components:{SettingsCard:pe},data(){return{localTheme:W("theme.mode")}},watch:{localTheme(e){It("theme.mode",e),this.updateTheme(e)}},setup(){return{theme:ns()}},methods:{updateTheme(e){this.theme.global.name.value=e}}};function pi(e,t,n,s,l,r){const i=pe;return j(),Z(i,{title:"主题设置",icon:"mdi-palette"},{default:u(()=>[a(ke,null,{default:u(()=>[a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-theme-light-dark",class:"mr-3"})]),append:u(()=>[a(as,{modelValue:l.localTheme,"onUpdate:modelValue":t[0]||(t[0]=o=>l.localTheme=o),density:"comfortable",color:"primary"},{default:u(()=>[a(z,{value:"light"},{default:u(()=>[a(ee,{icon:"mdi-white-balance-sunny",class:"mr-2"}),t[3]||(t[3]=S(" 明亮 "))]),_:1}),a(z,{value:"dark"},{default:u(()=>[a(ee,{icon:"mdi-moon-waning-crescent",class:"mr-2"}),t[4]||(t[4]=S(" 暗黑 "))]),_:1})]),_:1},8,["modelValue"])]),default:u(()=>[a(ce,null,{default:u(()=>t[1]||(t[1]=[S("主题模式")])),_:1}),a(Ve,null,{default:u(()=>t[2]||(t[2]=[S("选择明亮或暗黑主题")])),_:1})]),_:1})]),_:1})]),_:1})}const ta=ge(gi,[["render",pi]]),bi={name:"DisplaySettingsCard",components:{SettingsCard:pe,SettingItem:Me},data(){return{}}};function yi(e,t,n,s,l,r){const i=Me,o=pe;return j(),Z(o,{title:"显示设置",icon:"mdi-monitor",border:""},{default:u(()=>[a(ke,null,{default:u(()=>[a(i,{"setting-key":"display.emptySubjectDisplay"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.dynamicSort"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.showRandomButton"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.showFullscreenButton"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.cardHoverEffect"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.enhancedTouchMode"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"display.showAntiScreenBurnCard"})]),_:1})]),_:1})}const na=ge(bi,[["render",yi]]),xi=X({...Be(),...Sa()},"VForm"),aa=fe()({name:"VForm",props:xi(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,t){let{slots:n,emit:s}=t;const l=xa(e),r=de();function i(c){c.preventDefault(),l.reset()}function o(c){const h=c,f=l.validate();h.then=f.then.bind(f),h.catch=f.catch.bind(f),h.finally=f.finally.bind(f),s("submit",h),h.defaultPrevented||f.then(m=>{var v;let{valid:g}=m;g&&((v=r.value)==null||v.submit())}),h.preventDefault()}return ve(()=>{var c;return a("form",{ref:r,class:["v-form",e.class],style:e.style,novalidate:!0,onReset:i,onSubmit:o},[(c=n.default)==null?void 0:c.call(n,l)])}),vn(l,r)}}),Si={name:"RefreshSettingsCard",components:{SettingsCard:pe},data(){return{}}};function ki(e,t,n,s,l,r){const i=Me,o=pe;return j(),Z(o,{title:"刷新设置",icon:"mdi-refresh-circle"},{default:u(()=>[a(aa,null,{default:u(()=>[a(ke,null,{default:u(()=>[a(i,{"setting-key":"refresh.auto",title:"自动刷新"}),t[0]||(t[0]=S()),a(ie,{class:"my-2"}),a(i,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const sa=ge(Si,[["render",ki]]),_i={};function Ci(e,t,n,s,l,r){const i=Me,o=pe;return j(),Z(o,{title:"编辑设置",icon:"mdi-cog"},{default:u(()=>[a(ke,null,{default:u(()=>[a(i,{"setting-key":"edit.autoSave"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"edit.blockNonTodayAutoSave"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"edit.confirmNonTodaySave"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"edit.refreshBeforeEdit"})]),_:1})]),_:1})}const la=ge(_i,[["render",Ci]]),Vi={name:"DataProviderSettingsCard",components:{SettingsCard:pe},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null}},computed:{currentProvider(){return W("server.provider")}},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;try{const e=W("server.domain");if((await ka.get(`${e}/api/test`,{method:"GET",headers:{Accept:"application/json"}})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}catch(e){this.$message.error("连接失败",e.message||"无法连接到服务器")}finally{this.loading=!1}},confirmClearLocalStorage(){this.confirmTitle="确认清除",this.confirmMessage="此操作将清除所有本地存储的数据,确定要继续吗?",this.confirmAction=this.clearLocalStorage,this.confirmDialog=!0},clearLocalStorage(){try{localStorage.clear(),this.$message.success("清除成功","本地存储数据已清除"),this.confirmDialog=!1}catch(e){this.$message.error("清除失败",e.message)}},confirmClearIndexedDB(){this.confirmTitle="确认清除",this.confirmMessage="此操作将清除所有IndexedDB中的数据,确定要继续吗?",this.confirmAction=this.clearIndexedDB,this.confirmDialog=!0},async clearIndexedDB(){try{await window.indexedDB.deleteDatabase("ClassworksDB"),this.$message.success("清除成功","数据库缓存已清除"),this.confirmDialog=!1}catch(e){this.$message.error("清除失败",e.message)}},async exportData(){try{const e="ClassworksDB",t={indexedDB:{}},n=await new Promise((c,h)=>{const f=window.indexedDB.open(e);f.onerror=()=>h(f.error),f.onsuccess=()=>c(f.result)}),s=Array.from(n.objectStoreNames);for(const c of s){const f=n.transaction(c,"readonly").objectStore(c),m=await new Promise((g,v)=>{const p=f.getAll();p.onerror=()=>v(p.error),p.onsuccess=()=>g(p.result)});t.indexedDB[c]=m}const l=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),r=URL.createObjectURL(l),i=document.createElement("a"),o=new Date().toISOString().split("T")[0];i.href=r,i.download=`homework-indexeddb-${o}.json`,i.click(),URL.revokeObjectURL(r),this.$message.success("导出成功","IndexedDB数据已导出")}catch(e){console.error("导出失败:",e),this.$message.error("导出失败",e.message||"无法导出数据库数据")}},handleConfirm(){this.confirmAction&&this.confirmAction()}}};function Ti(e,t,n,s,l,r){const i=pe;return j(),Z(i,{title:"数据源设置",icon:"mdi-database-cog"},{default:u(()=>[a(ke,null,{default:u(()=>[r.currentProvider==="server"?(j(),Z(se,{key:0},{prepend:u(()=>[a(ee,{icon:"mdi-lan-connect",class:"mr-3"})]),append:u(()=>[a(z,{loading:l.loading,variant:"tonal",onClick:r.checkServerConnection},{default:u(()=>t[3]||(t[3]=[S(" 测试连接 ")])),_:1},8,["loading","onClick"])]),default:u(()=>[a(ce,null,{default:u(()=>t[2]||(t[2]=[S("检查服务器连接")])),_:1})]),_:1})):me("",!0),r.currentProvider==="indexedDB"?(j(),re(oe,{key:1},[a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-database",class:"mr-3"})]),append:u(()=>[a(z,{color:"error",variant:"tonal",onClick:r.confirmClearIndexedDB},{default:u(()=>t[6]||(t[6]=[S(" 清除 ")])),_:1},8,["onClick"])]),default:u(()=>[a(ce,null,{default:u(()=>t[4]||(t[4]=[S("清除数据库缓存")])),_:1}),a(Ve,null,{default:u(()=>t[5]||(t[5]=[S("这将清除所有IndexedDB中的数据")])),_:1})]),_:1}),a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-database-export",class:"mr-3"})]),append:u(()=>[a(z,{variant:"tonal",onClick:r.exportData},{default:u(()=>t[8]||(t[8]=[S(" 导出 ")])),_:1},8,["onClick"])]),default:u(()=>[a(ce,null,{default:u(()=>t[7]||(t[7]=[S("导出数据库")])),_:1})]),_:1})],64)):me("",!0),a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-lan-connect",class:"mr-3"})]),append:u(()=>[a(z,{variant:"tonal",to:"/cachemanagement"},{default:u(()=>t[10]||(t[10]=[S(" 查看 ")])),_:1})]),default:u(()=>[a(ce,null,{default:u(()=>t[9]||(t[9]=[S("查看本地缓存")])),_:1})]),_:1})]),_:1}),a(rn,{modelValue:l.confirmDialog,"onUpdate:modelValue":t[1]||(t[1]=o=>l.confirmDialog=o),"max-width":"400"},{default:u(()=>[a(Ee,null,{default:u(()=>[a(Oe,null,{default:u(()=>[S(ne(l.confirmTitle),1)]),_:1}),a(De,null,{default:u(()=>[S(ne(l.confirmMessage),1)]),_:1}),a(Bt,null,{default:u(()=>[a(At),a(z,{color:"grey",variant:"text",onClick:t[0]||(t[0]=o=>l.confirmDialog=!1)},{default:u(()=>t[11]||(t[11]=[S("取消")])),_:1}),a(z,{color:"error",variant:"tonal",onClick:r.handleConfirm},{default:u(()=>t[12]||(t[12]=[S("确认")])),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const ia=ge(Vi,[["render",Ti]]),Di={name:"ServerSettingsCard",components:{SettingsCard:pe},props:{loading:Boolean},data(){return{}}};function Pi(e,t,n,s,l,r){const i=Me,o=pe;return j(),Z(o,{title:"数据源设置",icon:"mdi-database",loading:n.loading},{default:u(()=>[a(aa,null,{default:u(()=>[a(i,{"setting-key":"server.provider",title:"数据提供者"}),a(ie,{class:"my-2"}),a(i,{"setting-key":"server.domain",title:"服务器域名"}),t[0]||(t[0]=S()),a(ie,{class:"my-2"}),a(i,{"setting-key":"server.classNumber",title:"班号"})]),_:1})]),_:1},8,["loading"])}const ra=ge(Di,[["render",Pi]]),Ii={name:"Settings",components:{ServerSettingsCard:ra,EditSettingsCard:la,RefreshSettingsCard:sa,DisplaySettingsCard:na,MessageLog:un,SettingsCard:pe,StudentListCard:Ln,AboutCard:Pn,DataProviderSettingsCard:ia,ThemeSettingsCard:ta,EchoChamberCard:En,SettingsExplorer:Dn,SettingsLinkGenerator:ea},setup(){const{mobile:e}=$e();return{isMobile:e}},data(){return{settings:{server:{domain:W("server.domain"),classNumber:W("server.classNumber"),provider:W("server.provider")},refresh:{auto:W("refresh.auto"),interval:W("refresh.interval")},font:{size:W("font.size")},edit:{autoSave:W("edit.autoSave"),blockNonTodayAutoSave:W("edit.blockNonTodayAutoSave"),confirmNonTodaySave:W("edit.confirmNonTodaySave"),refreshBeforeEdit:W("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:W("display.emptySubjectDisplay"),dynamicSort:W("display.dynamicSort"),showRandomButton:W("display.showRandomButton"),showFullscreenButton:W("display.showFullscreenButton")},developer:{enabled:W("developer.enabled"),showDebugConfig:W("developer.showDebugConfig")},message:{showSidebar:W("message.showSidebar"),maxActiveMessages:W("message.maxActiveMessages"),timeout:W("message.timeout"),saveHistory:W("message.saveHistory")}},dataProviders:[{title:"服务器",value:"server"},{title:"本地数据库",value:"indexedDB"}],studentData:{list:[],text:"",advanced:!1},newStudent:"",editingIndex:-1,editingName:"",deleteDialog:!1,studentToDelete:null,numberDialog:!1,newPosition:"",studentToMove:null,touchStartTime:0,touchTimeout:null,studentsLoading:!1,studentsError:null,debugConfig:"",loading:{server:!1,students:!1},hasUnsavedChanges:!1,lastSavedData:null}},watch:{settings:{handler(e){this.handleSettingsChange(e)},deep:!0},studentData:{handler(e){this.lastSavedData&&(this.hasUnsavedChanges=JSON.stringify(e.list)!==JSON.stringify(this.lastSavedData)),this.studentData.text=e.list.join(` `)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatchSettings=yn(()=>{this.loadAllSettings()}),this.loadStudentList(),this.refreshDebugConfig(),this.settings.developer.enabled||(this.settings.developer.showDebugConfig=!1,this.handleSettingsChange(this.settings))},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings()},methods:{loadAllSettings(){Object.keys(this.settings).forEach(e=>{Object.keys(this.settings[e]).forEach(t=>{this.settings[e][t]=W(`${e}.${t}`)})})},handleSettingsChange(e){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(e).forEach(([t,n])=>{Object.entries(n).forEach(([s,l])=>{const r=`${t}.${s}`,i=W(r);l!==i&&(It(r,l)?this.showMessage("设置已更新",`${r} 已保存`):(this.showError("保存失败",`${r} 设置失败`),this.settings[t][s]=i))})})},100)},showMessage(e,t="",n="success"){this.$message[n](e,t)},showError(e,t=""){this.$message.error(e,t)},async loadStudentList(){try{this.loading.students=!0,this.studentsError=null;const e=W("server.domain"),t=W("server.classNumber"),n=W("server.provider");if(!t)throw new Error("请先设置班号");const s=n==="server"?`${e}/${t}`:t,l=await $t.loadConfig(n,s);if(!l.success)throw new Error(l.error.message);l.data&&Array.isArray(l.data.studentList)&&(this.studentData.list=l.data.studentList,this.studentData.text=l.data.studentList.join(` `),this.lastSavedData=[...l.data.studentList],this.hasUnsavedChanges=!1)}catch(e){console.error("加载学生列表失败:",e),this.studentsError=e.message||"加载失败,请检查设置",this.showError("加载失败",this.studentsError)}finally{this.loading.students=!1}},async saveStudents(){try{const e=W("server.domain"),t=W("server.classNumber"),n=W("server.provider");if(!t)throw new Error("请先设置班号");const s=n==="server"?`${e}/${t}`:t,l=await $t.saveConfig(n,s,{studentList:this.studentData.list});if(!l.success)throw new Error(l.error.message);this.lastSavedData=[...this.studentData.list],this.hasUnsavedChanges=!1,this.showMessage("保存成功","学生列表已更新")}catch(e){console.error("保存学生列表失败:",e),this.showError("保存失败",e.message||"请重试")}},handleStudentDataChange(e){JSON.stringify(e.list)!==JSON.stringify(this.studentData.list)&&(this.studentData={...e},this.hasUnsavedChanges=!0)},saveEdit(){if(this.editingIndex!==-1){const e=this.editingName.trim();e&&e!==this.studentData.list[this.editingIndex]&&(this.studentData.list[this.editingIndex]=e),this.editingIndex=-1,this.editingName=""}},startEdit(e,t){this.editingIndex=e,this.editingName=t},confirmDelete(e){this.studentToDelete={index:e,name:this.studentData.list[e]},this.deleteDialog=!0},moveStudent(e,t){const n=t==="up"?e-1:e+1;n>=0&&n=0&&e0){const t=this.studentData.list[e];this.studentData.list.splice(e,1),this.studentData.list.unshift(t)}},addStudent(){const e=this.newStudent.trim();e&&!this.studentData.list.includes(e)&&(this.studentData.list.push(e),this.newStudent="")},removeStudent(e){e!==void 0&&(this.studentData.list.splice(e,1),this.deleteDialog=!1,this.studentToDelete=null)},resetFontSize(){bn("font.size"),this.settings.font.size=W("font.size"),this.showMessage("字体已重置","字体大小已恢复默认值")},refreshDebugConfig(){const e={};Object.keys(this.settings).forEach(t=>{e[t]={},Object.keys(this.settings[t]).forEach(n=>{e[t][n]=W(`${t}.${n}`)})}),this.debugConfig=JSON.stringify(e,null,2)},async copyDebugConfig(){try{await navigator.clipboard.writeText(this.debugConfig),this.showMessage("复制成功","配置信息已复制到剪贴板")}catch(e){console.error("复制失败:",e),this.showError("复制失败","请手动复制")}},handleDeveloperChange(e){e||(this.settings.developer.showDebugConfig=!1,this.settings.message={showSidebar:!0,maxActiveMessages:5,timeout:5e3,saveHistory:!0})},resetDeveloperSettings(){this.settings.developer={enabled:!1,showDebugConfig:!1},this.settings.message={showSidebar:!0,maxActiveMessages:5,timeout:5e3,saveHistory:!0},this.handleSettingsChange(this.settings),this.showMessage("已重置","开发者设置已重置为默认值","warning")},adjustFontSize(e){const n=this.settings.font.size;e==="up"&&n<100?this.settings.font.size=n+2:e==="down"&&n>16&&(this.settings.font.size=n-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(e,t){this.showMessage("设置已更新",`${e} 已保存为 ${t}`)}}},Ei={class:"settings-page"},Ai={key:0},Li={class:"d-flex gap-2"};function Bi(e,t,n,s,l,r){const i=ra,o=ia,c=la,h=sa,f=na,m=ta,g=ea,v=pe,p=Ln,x=En,b=Pn,_=Dn,w=un;return j(),re("div",Ei,[a(Ca,{elevation:"1"},{prepend:u(()=>[a(z,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=C=>e.$router.push("/"))})]),default:u(()=>[a(_a,{class:"text-h6"},{default:u(()=>t[5]||(t[5]=[S("设置")])),_:1})]),_:1}),a(os,{class:"py-4"},{default:u(()=>[a(We,null,{default:u(()=>[a(he,{cols:"12",md:"6"},{default:u(()=>[a(i,{border:"",loading:l.loading.server,onSaved:r.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),a(he,{cols:"12",md:"6"},{default:u(()=>[a(o,{border:""})]),_:1}),a(he,{cols:"12",md:"6"},{default:u(()=>[a(c,{onSaved:r.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),a(he,{cols:"12",md:"6"},{default:u(()=>[a(h,{onSaved:r.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),a(he,{cols:"12",md:"6"},{default:u(()=>[a(f,{onSaved:r.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),a(he,{cols:"12",md:"6"},{default:u(()=>[a(m,{border:""})]),_:1}),a(he,{cols:"12"},{default:u(()=>[a(g,{border:""})]),_:1}),a(he,{cols:12,md:l.settings.developer.enabled?12:6},{default:u(()=>[a(v,{border:"",title:"开发者选项",icon:"mdi-developer-board"},{default:u(()=>[a(ke,null,{default:u(()=>[a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-code-tags",class:"mr-3"})]),append:u(()=>[a(xt,{modelValue:l.settings.developer.enabled,"onUpdate:modelValue":t[1]||(t[1]=C=>l.settings.developer.enabled=C),density:"comfortable","hide-details":"",onChange:r.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:u(()=>[a(ce,null,{default:u(()=>t[6]||(t[6]=[S("启用开发者选项")])),_:1}),a(Ve,null,{default:u(()=>t[7]||(t[7]=[S("启用后可以查看和修改开发者设置")])),_:1})]),_:1}),l.settings.developer.enabled?(j(),re(oe,{key:0},[a(ie,{class:"my-2"}),a(se,null,{prepend:u(()=>[a(ee,{icon:"mdi-file-code",class:"mr-3"})]),append:u(()=>[a(xt,{modelValue:l.settings.developer.showDebugConfig,"onUpdate:modelValue":t[2]||(t[2]=C=>l.settings.developer.showDebugConfig=C),density:"comfortable","hide-details":""},null,8,["modelValue"])]),default:u(()=>[a(ce,null,{default:u(()=>t[8]||(t[8]=[S("显示调试配置")])),_:1}),a(Ve,null,{default:u(()=>t[9]||(t[9]=[S("显示当前的调试配置信息")])),_:1})]),_:1}),a(_n,null,{default:u(()=>[l.settings.developer.showDebugConfig?(j(),re("div",Ai,[a(ie,{class:"my-2"}),a(on,{modelValue:l.debugConfig,"onUpdate:modelValue":t[3]||(t[3]=C=>l.debugConfig=C),label:"调试配置",readonly:"",rows:"10",class:"font-monospace mt-2"},null,8,["modelValue"]),ue("div",Li,[a(z,{"prepend-icon":"mdi-refresh",variant:"text",onClick:r.refreshDebugConfig},{default:u(()=>t[10]||(t[10]=[S(" 刷新 ")])),_:1},8,["onClick"]),a(z,{"prepend-icon":"mdi-content-copy",variant:"text",onClick:r.copyDebugConfig},{default:u(()=>t[11]||(t[11]=[S(" 复制 ")])),_:1},8,["onClick"])])])):me("",!0)]),_:1})],64)):me("",!0)]),_:1})]),_:1})]),_:1},8,["md"]),a(he,{cols:"12"},{default:u(()=>[a(p,{modelValue:l.studentData,"onUpdate:modelValue":[t[4]||(t[4]=C=>l.studentData=C),r.handleStudentDataChange],loading:l.loading.students,error:l.studentsError,"is-mobile":s.isMobile,"unsaved-changes":l.hasUnsavedChanges,onSave:r.saveStudents,onReload:r.loadStudentList},null,8,["modelValue","loading","error","is-mobile","unsaved-changes","onSave","onReload","onUpdate:modelValue"])]),_:1}),a(he,{cols:"12"},{default:u(()=>[a(x,{border:""})]),_:1}),a(he,{cols:"12"},{default:u(()=>[a(b)]),_:1}),l.settings.developer.enabled?(j(),Z(he,{key:0,cols:"12"},{default:u(()=>[a(Ee,{border:""},{default:u(()=>[a(Oe,{class:"d-flex align-center"},{default:u(()=>[a(ee,{icon:"mdi-cog-outline",class:"mr-2"}),t[12]||(t[12]=S(" 所有设置 "))]),_:1}),a(rs,null,{default:u(()=>t[13]||(t[13]=[S(" 浏览和修改所有可用设置 ")])),_:1}),a(De,null,{default:u(()=>[a(_,{onUpdate:r.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})]),_:1})):me("",!0)]),_:1})]),_:1}),a(w,{ref:"messageLog"},null,512)])}const Ui=ge(Ii,[["render",Bi]]);export{Ui as default};