mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-07-03 01:39:22 +00:00
13 lines
108 KiB
JavaScript
13 lines
108 KiB
JavaScript
import{g as un,u as rn,e as Te,b as Ye,h as dn,m as cn,i as hn,j as ct,k as wn,V as _t,l as fn,n as pn,p as ht,d as Ct,o as mn,q as vn,r as gn,_ as Vt,a as bn,c as yn,f as wt}from"./VTextarea-DAFozSFq.js";import{p as pe,m as xn,aE as Sn,x as Ne,aF as Le,a3 as Re,g as Se,Q as ye,S as Xe,f as j,aB as kn,t as we,j as Ce,k as n,az as _n,aG as Ze,av as Cn,s as be,r as ge,aH as Tt,T as oe,as as Vn,aw as Tn,H as he,V as q,aq as Dn,aI as En,a8 as Fe,aJ as An,u as In,ae as et,aK as Je,X as Dt,e as Et,aa as Ve,z as At,w as ft,aL as Nn,aM as $e,aN as Pn,aO as Ue,aP as Mn,L as On,h as Bn,ad as It,aQ as Ln,l as Be,N as Fn,aj as Rn,aR as Un,a5 as Nt,J as f,W as Pt,aS as jn,aT as pt,aU as Hn,aV as zn,aW as Kn,_ as de,aX as Mt,Z as O,ao as tt,aY as Qn,F as Z,D as V,B as re,E as s,K as te,G as ae,A as H,$ as U,an as qn,aZ as $n,ap as Ot,a_ as Wn,I as nt,a$ as mt,b0 as Bt,b1 as Jn,b2 as Gn,b3 as Yn,b4 as vt,a1 as gt,b5 as Xn,b6 as Zn}from"./index-5ZqSrCPy.js";import{u as es,c as fe,d as Q,a as st,m as ts,i as ns,g as X,h as ve,e as W,V as it,f as Lt}from"./VList-Dmgo-MOX.js";import{h as at,a as Ee,b as xe,i as ot,V as _e,l as lt,g as Ie,e as ie,k as Ft,f as ss,d as is}from"./VRow-DQ6wq0it.js";import{V as as}from"./VAlert-gdVOvhhW.js";import"./ssrBoot-CHBfBiKN.js";const Rt=Symbol.for("vuetify:selection-control-group"),Ut=pe({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:Re,trueIcon:Re,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:Le},...Ne(),...Sn(),...xn()},"SelectionControlGroup"),os=pe({...Ut({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");Se()({name:"VSelectionControlGroup",props:os(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:o}=t;const r=ye(e,"modelValue"),a=Xe(),u=j(()=>e.id||`v-selection-control-group-${a}`),l=j(()=>e.name||u.value),d=new Set;return _n(Rt,{modelValue:r,forceUpdate:()=>{d.forEach(c=>c())},onForceUpdate:c=>{d.add(c),Ze(()=>{d.delete(c)})}}),kn({[e.defaultsTarget]:{color:we(e,"color"),disabled:we(e,"disabled"),density:we(e,"density"),error:we(e,"error"),inline:we(e,"inline"),modelValue:r,multiple:j(()=>!!e.multiple||e.multiple==null&&Array.isArray(r.value)),name:l,falseIcon:we(e,"falseIcon"),trueIcon:we(e,"trueIcon"),readonly:we(e,"readonly"),ripple:we(e,"ripple"),type:we(e,"type"),valueComparator:we(e,"valueComparator")}}),Ce(()=>{var c;return n("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=o.default)==null?void 0:c.call(o)])}),{}}});const ut=pe({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...Ne(),...Ut()},"VSelectionControl");function ls(e){const t=Dn(Rt,void 0),{densityClasses:o}=En(e),r=ye(e,"modelValue"),a=j(()=>e.trueValue!==void 0?e.trueValue:e.value!==void 0?e.value:!0),u=j(()=>e.falseValue!==void 0?e.falseValue:!1),l=j(()=>!!e.multiple||e.multiple==null&&Array.isArray(r.value)),d=j({get(){const g=t?t.modelValue.value:r.value;return l.value?Fe(g).some(E=>e.valueComparator(E,a.value)):e.valueComparator(g,a.value)},set(g){if(e.readonly)return;const E=g?a.value:u.value;let B=E;l.value&&(B=g?[...Fe(r.value),E]:Fe(r.value).filter(L=>!e.valueComparator(L,a.value))),t?t.modelValue.value=B:r.value=B}}),{textColorClasses:c,textColorStyles:v}=An(j(()=>{if(!(e.error||e.disabled))return d.value?e.color:e.baseColor})),{backgroundColorClasses:w,backgroundColorStyles:y}=In(j(()=>d.value&&!e.error&&!e.disabled?e.color:e.baseColor)),N=j(()=>d.value?e.trueIcon:e.falseIcon);return{group:t,densityClasses:o,trueValue:a,falseValue:u,model:d,textColorClasses:c,textColorStyles:v,backgroundColorClasses:w,backgroundColorStyles:y,icon:N}}const je=Se()({name:"VSelectionControl",directives:{Ripple:Cn},inheritAttrs:!1,props:ut(),emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:o,slots:r}=t;const{group:a,densityClasses:u,icon:l,model:d,textColorClasses:c,textColorStyles:v,backgroundColorClasses:w,backgroundColorStyles:y,trueValue:N}=ls(e),g=Xe(),E=be(!1),B=be(!1),L=ge(),A=j(()=>e.id||`input-${g}`),_=j(()=>!e.disabled&&!e.readonly);a==null||a.onForceUpdate(()=>{L.value&&(L.value.checked=d.value)});function R(F){_.value&&(E.value=!0,Je(F.target,":focus-visible")!==!1&&(B.value=!0))}function P(){E.value=!1,B.value=!1}function ee(F){F.stopPropagation()}function G(F){if(!_.value){L.value&&(L.value.checked=d.value);return}e.readonly&&a&&et(()=>a.forceUpdate()),d.value=F.target.checked}return Ce(()=>{var ue,T;const F=r.label?r.label({label:e.label,props:{for:A.value}}):e.label,[ne,J]=Tt(o),Y=n("input",oe({ref:L,checked:d.value,disabled:!!e.disabled,id:A.value,onBlur:P,onFocus:R,onInput:G,"aria-disabled":!!e.disabled,"aria-label":e.label,type:e.type,value:N.value,name:e.name,"aria-checked":e.type==="checkbox"?d.value:void 0},J),null);return n("div",oe({class:["v-selection-control",{"v-selection-control--dirty":d.value,"v-selection-control--disabled":e.disabled,"v-selection-control--error":e.error,"v-selection-control--focused":E.value,"v-selection-control--focus-visible":B.value,"v-selection-control--inline":e.inline},u.value,e.class]},ne,{style:e.style}),[n("div",{class:["v-selection-control__wrapper",c.value],style:v.value},[(ue=r.default)==null?void 0:ue.call(r,{backgroundColorClasses:w,backgroundColorStyles:y}),Vn(n("div",{class:["v-selection-control__input"]},[((T=r.input)==null?void 0:T.call(r,{model:d,textColorClasses:c,textColorStyles:v,backgroundColorClasses:w,backgroundColorStyles:y,inputNode:Y,icon:l.value,props:{onFocus:R,onBlur:P,id:A.value}}))??n(he,null,[l.value&&n(q,{key:"icon",icon:l.value},null),Y])]),[[Tn("ripple"),e.ripple&&[!e.disabled&&!e.readonly,null,["center","circle"]]]])]),F&&n(un,{for:A.value,onClick:ee},{default:()=>[F]})])}),{isFocused:E,input:L}}}),us=pe({indeterminate:Boolean,indeterminateIcon:{type:Re,default:"$checkboxIndeterminate"},...ut({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),rs=Se()({name:"VCheckboxBtn",props:us(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{slots:o}=t;const r=ye(e,"indeterminate"),a=ye(e,"modelValue");function u(c){r.value&&(r.value=!1)}const l=j(()=>r.value?e.indeterminateIcon:e.falseIcon),d=j(()=>r.value?e.indeterminateIcon:e.trueIcon);return Ce(()=>{const c=Dt(je.filterProps(e),["modelValue"]);return n(je,oe(c,{modelValue:a.value,"onUpdate:modelValue":[v=>a.value=v,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:l.value,trueIcon:d.value,"aria-checked":r.value?"mixed":void 0}),o)}),{}}}),ds=pe({renderless:Boolean,...Ne()},"VVirtualScrollItem"),cs=Se()({name:"VVirtualScrollItem",inheritAttrs:!1,props:ds(),emits:{"update:height":e=>!0},setup(e,t){let{attrs:o,emit:r,slots:a}=t;const{resizeRef:u,contentRect:l}=Et(void 0,"border");Ve(()=>{var d;return(d=l.value)==null?void 0:d.height},d=>{d!=null&&r("update:height",d)}),Ce(()=>{var d,c;return e.renderless?n(he,null,[(d=a.default)==null?void 0:d.call(a,{itemRef:u})]):n("div",oe({ref:u,class:["v-virtual-scroll__item",e.class],style:e.style},o),[(c=a.default)==null?void 0:c.call(a)])})}}),hs=-1,ws=1,We=100,fs=pe({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function ps(e,t){const o=At(),r=be(0);ft(()=>{r.value=parseFloat(e.itemHeight||0)});const a=be(0),u=be(Math.ceil((parseInt(e.height)||o.height.value)/(r.value||16))||1),l=be(0),d=be(0),c=ge(),v=ge();let w=0;const{resizeRef:y,contentRect:N}=Et();ft(()=>{y.value=c.value});const g=j(()=>{var i;return c.value===document.documentElement?o.height.value:((i=N.value)==null?void 0:i.height)||parseInt(e.height)||0}),E=j(()=>!!(c.value&&v.value&&g.value&&r.value));let B=Array.from({length:t.value.length}),L=Array.from({length:t.value.length});const A=be(0);let _=-1;function R(i){return B[i]||r.value}const P=Nn(()=>{const i=performance.now();L[0]=0;const I=t.value.length;for(let h=1;h<=I-1;h++)L[h]=(L[h-1]||0)+R(h-1);A.value=Math.max(A.value,performance.now()-i)},A),ee=Ve(E,i=>{i&&(ee(),w=v.value.offsetTop,P.immediate(),m(),~_&&et(()=>{Ue&&window.requestAnimationFrame(()=>{k(_),_=-1})}))});Ze(()=>{P.clear()});function G(i,I){const h=B[i],b=r.value;r.value=b?Math.min(r.value,I):I,(h!==I||b!==r.value)&&(B[i]=I,P())}function F(i){return i=$e(i,0,t.value.length-1),L[i]||0}function ne(i){return ms(L,i)}let J=0,Y=0,ue=0;Ve(g,(i,I)=>{I&&(m(),i<I&&requestAnimationFrame(()=>{Y=0,m()}))});let T=-1;function ce(){if(!c.value||!v.value)return;const i=c.value.scrollTop,I=performance.now();I-ue>500?(Y=Math.sign(i-J),w=v.value.offsetTop):Y=i-J,J=i,ue=I,window.clearTimeout(T),T=window.setTimeout(se,500),m()}function se(){!c.value||!v.value||(Y=0,ue=0,window.clearTimeout(T),m())}let S=-1;function m(){cancelAnimationFrame(S),S=requestAnimationFrame(C)}function C(){if(!c.value||!g.value)return;const i=J-w,I=Math.sign(Y),h=Math.max(0,i-We),b=$e(ne(h),0,t.value.length),x=i+g.value+We,M=$e(ne(x)+1,b+1,t.value.length);if((I!==hs||b<a.value)&&(I!==ws||M>u.value)){const D=F(a.value)-F(b),K=F(M)-F(u.value);Math.max(D,K)>We?(a.value=b,u.value=M):(b<=0&&(a.value=b),M>=t.value.length&&(u.value=M))}l.value=F(a.value),d.value=F(t.value.length)-F(u.value)}function k(i){const I=F(i);!c.value||i&&!I?_=i:c.value.scrollTop=I}const p=j(()=>t.value.slice(a.value,u.value).map((i,I)=>{const h=I+a.value;return{raw:i,index:h,key:Pn(i,e.itemKey,h)}}));return Ve(t,()=>{B=Array.from({length:t.value.length}),L=Array.from({length:t.value.length}),P.immediate(),m()},{deep:1}),{calculateVisibleItems:m,containerRef:c,markerRef:v,computedItems:p,paddingTop:l,paddingBottom:d,scrollToIndex:k,handleScroll:ce,handleScrollend:se,handleItemResize:G}}function ms(e,t){let o=e.length-1,r=0,a=0,u=null,l=-1;if(e[o]<t)return o;for(;r<=o;)if(a=r+o>>1,u=e[a],u>t)o=a-1;else if(u<t)l=a,r=a+1;else return u===t?a:r;return l}const vs=pe({items:{type:Array,default:()=>[]},renderless:Boolean,...fs(),...Ne(),...Fn()},"VVirtualScroll"),gs=Se()({name:"VVirtualScroll",props:vs(),setup(e,t){let{slots:o}=t;const r=Mn("VVirtualScroll"),{dimensionStyles:a}=On(e),{calculateVisibleItems:u,containerRef:l,markerRef:d,handleScroll:c,handleScrollend:v,handleItemResize:w,scrollToIndex:y,paddingTop:N,paddingBottom:g,computedItems:E}=ps(e,we(e,"items"));return Bn(()=>e.renderless,()=>{function B(){var _,R;const A=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";l.value===document.documentElement?(document[A]("scroll",c,{passive:!0}),document[A]("scrollend",v)):((_=l.value)==null||_[A]("scroll",c,{passive:!0}),(R=l.value)==null||R[A]("scrollend",v))}It(()=>{l.value=Ln(r.vnode.el,!0),B(!0)}),Ze(B)}),Ce(()=>{const B=E.value.map(L=>n(cs,{key:L.key,renderless:e.renderless,"onUpdate:height":A=>w(L.index,A)},{default:A=>{var _;return(_=o.default)==null?void 0:_.call(o,{item:L.raw,index:L.index,...A})}}));return e.renderless?n(he,null,[n("div",{ref:d,class:"v-virtual-scroll__spacer",style:{paddingTop:Be(N.value)}},null),B,n("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:Be(g.value)}},null)]):n("div",{ref:l,class:["v-virtual-scroll",e.class],onScrollPassive:c,onScrollend:v,style:[a.value,e.style]},[n("div",{ref:d,class:"v-virtual-scroll__container",style:{paddingTop:Be(N.value),paddingBottom:Be(g.value)}},[B])])}),{calculateVisibleItems:u,scrollToIndex:y}}});function bs(e,t){const o=be(!1);let r;function a(d){cancelAnimationFrame(r),o.value=!0,r=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{o.value=!1})})}async function u(){await new Promise(d=>requestAnimationFrame(d)),await new Promise(d=>requestAnimationFrame(d)),await new Promise(d=>requestAnimationFrame(d)),await new Promise(d=>{if(o.value){const c=Ve(o,()=>{c(),d()})}else d()})}async function l(d){var w,y;if(d.key==="Tab"&&((w=t.value)==null||w.focus()),!["PageDown","PageUp","Home","End"].includes(d.key))return;const c=(y=e.value)==null?void 0:y.$el;if(!c)return;(d.key==="Home"||d.key==="End")&&c.scrollTo({top:d.key==="Home"?0:c.scrollHeight,behavior:"smooth"}),await u();const v=c.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(d.key==="PageDown"||d.key==="Home"){const N=c.getBoundingClientRect().top;for(const g of v)if(g.getBoundingClientRect().top>=N){g.focus();break}}else{const N=c.getBoundingClientRect().bottom;for(const g of[...v].reverse())if(g.getBoundingClientRect().bottom<=N){g.focus();break}}}return{onScrollPassive:a,onKeydown:l}}const ys=pe({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:Re,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,...ts({itemChildren:!1})},"Select"),xs=pe({...ys(),...Dt(cn({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...jn({transition:{component:dn}})},"VSelect"),Ss=Se()({name:"VSelect",props:xs(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0},setup(e,t){let{slots:o}=t;const{t:r}=Rn(),a=ge(),u=ge(),l=ge(),{items:d,transformIn:c,transformOut:v}=es(e),w=ye(e,"modelValue",[],p=>c(p===null?[null]:Fe(p)),p=>{const i=v(p);return e.multiple?i:i[0]??null}),y=j(()=>typeof e.counterValue=="function"?e.counterValue(w.value):typeof e.counterValue=="number"?e.counterValue:w.value.length),N=rn(e),g=j(()=>w.value.map(p=>p.value)),E=be(!1);let B="",L;const A=j(()=>e.hideSelected?d.value.filter(p=>!w.value.some(i=>(e.valueComparator||Le)(i,p))):d.value),_=j(()=>e.hideNoData&&!A.value.length||N.isReadonly.value||N.isDisabled.value),R=ye(e,"menu"),P=j({get:()=>R.value,set:p=>{var i;R.value&&!p&&((i=u.value)!=null&&i.ΨopenChildren.size)||p&&_.value||(R.value=p)}}),ee=j(()=>P.value?e.closeText:e.openText),G=j(()=>{var p;return{...e.menuProps,activatorProps:{...((p=e.menuProps)==null?void 0:p.activatorProps)||{},"aria-haspopup":"listbox"}}}),F=ge(),ne=bs(F,a);function J(p){e.openOnClear&&(P.value=!0)}function Y(){_.value||(P.value=!P.value)}function ue(p){pt(p)&&T(p)}function T(p){var b,x;if(!p.key||N.isReadonly.value)return;["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(p.key)&&p.preventDefault(),["Enter","ArrowDown"," "].includes(p.key)&&(P.value=!0),["Escape","Tab"].includes(p.key)&&(P.value=!1),p.key==="Home"?(b=F.value)==null||b.focus("first"):p.key==="End"&&((x=F.value)==null||x.focus("last"));const i=1e3;if(!pt(p))return;const I=performance.now();I-L>i&&(B=""),B+=p.key.toLowerCase(),L=I;const h=d.value.find(M=>M.title.toLowerCase().startsWith(B));if(h!==void 0){w.value=[h];const M=A.value.indexOf(h);Ue&&window.requestAnimationFrame(()=>{var D;M>=0&&((D=l.value)==null||D.scrollToIndex(M))})}}function ce(p){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!p.props.disabled)if(e.multiple){const I=w.value.findIndex(b=>(e.valueComparator||Le)(b.value,p.value)),h=i??!~I;if(~I){const b=h?[...w.value,p]:[...w.value];b.splice(I,1),w.value=b}else h&&(w.value=[...w.value,p])}else{const I=i!==!1;w.value=I?[p]:[],et(()=>{P.value=!1})}}function se(p){var i;(i=F.value)!=null&&i.$el.contains(p.relatedTarget)||(P.value=!1)}function S(){var p;e.eager&&((p=l.value)==null||p.calculateVisibleItems())}function m(){var p;E.value&&((p=a.value)==null||p.focus())}function C(p){E.value=!0}function k(p){if(p==null)w.value=[];else if(Je(a.value,":autofill")||Je(a.value,":-webkit-autofill")){const i=d.value.find(I=>I.title===p);i&&ce(i)}else a.value&&(a.value.value="")}return Ve(P,()=>{if(!e.hideSelected&&P.value&&w.value.length){const p=A.value.findIndex(i=>w.value.some(I=>(e.valueComparator||Le)(I.value,i.value)));Ue&&window.requestAnimationFrame(()=>{var i;p>=0&&((i=l.value)==null||i.scrollToIndex(p))})}}),Ve(()=>e.items,(p,i)=>{P.value||E.value&&!i.length&&p.length&&(P.value=!0)}),Ce(()=>{const p=!!(e.chips||o.chip),i=!!(!e.hideNoData||A.value.length||o["prepend-item"]||o["append-item"]||o["no-data"]),I=w.value.length>0,h=Te.filterProps(e),b=I||!E.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder;return n(Te,oe({ref:a},h,{modelValue:w.value.map(x=>x.props.value).join(", "),"onUpdate:modelValue":k,focused:E.value,"onUpdate:focused":x=>E.value=x,validationValue:w.externalValue,counterValue:y.value,dirty:I,class:["v-select",{"v-select--active-menu":P.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":w.value.length,"v-select--selection-slot":!!o.selection},e.class],style:e.style,inputmode:"none",placeholder:b,"onClick:clear":J,"onMousedown:control":Y,onBlur:se,onKeydown:T,"aria-label":r(ee.value),title:r(ee.value)}),{...o,default:()=>n(he,null,[n(Ye,oe({ref:u,modelValue:P.value,"onUpdate:modelValue":x=>P.value=x,activator:"parent",contentClass:"v-select__content",disabled:_.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:S,onAfterLeave:m},G.value),{default:()=>[i&&n(fe,oe({ref:F,selected:g.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:x=>x.preventDefault(),onKeydown:ue,onFocusin:C,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},ne,e.listProps),{default:()=>{var x,M,D;return[(x=o["prepend-item"])==null?void 0:x.call(o),!A.value.length&&!e.hideNoData&&(((M=o["no-data"])==null?void 0:M.call(o))??n(Q,{key:"no-data",title:r(e.noDataText)},null)),n(gs,{ref:l,renderless:!0,items:A.value,itemKey:"value"},{default:K=>{var ke;let{item:z,index:me,itemRef:$}=K;const Ae=oe(z.props,{ref:$,key:z.value,onClick:()=>ce(z,null)});return((ke=o.item)==null?void 0:ke.call(o,{item:z,index:me,props:Ae}))??n(Q,oe(Ae,{role:"option"}),{prepend:He=>{let{isSelected:Pe}=He;return n(he,null,[e.multiple&&!e.hideSelected?n(rs,{key:z.value,modelValue:Pe,ripple:!1,tabindex:"-1"},null):void 0,z.props.prependAvatar&&n(at,{image:z.props.prependAvatar},null),z.props.prependIcon&&n(q,{icon:z.props.prependIcon},null)])}})}}),(D=o["append-item"])==null?void 0:D.call(o)]}})]}),w.value.map((x,M)=>{function D($){$.stopPropagation(),$.preventDefault(),ce(x,!1)}const K={"onClick:close":D,onKeydown($){$.key!=="Enter"&&$.key!==" "||($.preventDefault(),$.stopPropagation(),D($))},onMousedown($){$.preventDefault(),$.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},z=p?!!o.chip:!!o.selection,me=z?Un(p?o.chip({item:x,index:M,props:K}):o.selection({item:x,index:M})):void 0;if(!(z&&!me))return n("div",{key:x.value,class:"v-select__selection"},[p?o.chip?n(Nt,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:x.title}}},{default:()=>[me]}):n(st,oe({key:"chip",closable:e.closableChips,size:"small",text:x.title,disabled:x.props.disabled},K),null):me??n("span",{class:"v-select__selection-text"},[x.title,e.multiple&&M<w.value.length-1&&n("span",{class:"v-select__selection-comma"},[f(",")])])])})]),"append-inner":function(){var K,z;for(var x=arguments.length,M=new Array(x),D=0;D<x;D++)M[D]=arguments[D];return n(he,null,[(K=o["append-inner"])==null?void 0:K.call(o,...M),e.menuIcon?n(q,{class:"v-select__menu-icon",color:(z=a.value)==null?void 0:z.fieldIconColor,icon:e.menuIcon},null):void 0])}})}),Pt({isFocused:E,menu:P,select:ce},a)}}),ks=pe({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...wn(),...ut()},"VSwitch"),Ge=Se()({name:"VSwitch",inheritAttrs:!1,props:ks(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:r}=t;const a=ye(e,"indeterminate"),u=ye(e,"modelValue"),{loaderClasses:l}=Hn(e),{isFocused:d,focus:c,blur:v}=hn(e),w=ge(),y=Ue&&window.matchMedia("(forced-colors: active)").matches,N=j(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),g=Xe(),E=j(()=>e.id||`switch-${g}`);function B(){a.value&&(a.value=!1)}function L(A){var _,R;A.stopPropagation(),A.preventDefault(),(R=(_=w.value)==null?void 0:_.input)==null||R.click()}return Ce(()=>{const[A,_]=Tt(o),R=ct.filterProps(e),P=je.filterProps(e);return n(ct,oe({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":a.value},l.value,e.class]},A,R,{modelValue:u.value,"onUpdate:modelValue":ee=>u.value=ee,id:E.value,focused:d.value,style:e.style}),{...r,default:ee=>{let{id:G,messagesId:F,isDisabled:ne,isReadonly:J,isValid:Y}=ee;const ue={model:u,isValid:Y};return n(je,oe({ref:w},P,{modelValue:u.value,"onUpdate:modelValue":[T=>u.value=T,B],id:G.value,"aria-describedby":F.value,type:"checkbox","aria-checked":a.value?"mixed":void 0,disabled:ne.value,readonly:J.value,onFocus:c,onBlur:v},_),{...r,default:T=>{let{backgroundColorClasses:ce,backgroundColorStyles:se}=T;return n("div",{class:["v-switch__track",y?void 0:ce.value],style:se.value,onClick:L},[r["track-true"]&&n("div",{key:"prepend",class:"v-switch__track-true"},[r["track-true"](ue)]),r["track-false"]&&n("div",{key:"append",class:"v-switch__track-false"},[r["track-false"](ue)])])},input:T=>{let{inputNode:ce,icon:se,backgroundColorClasses:S,backgroundColorStyles:m}=T;return n(he,null,[ce,n("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":se||e.loading},e.inset||y?void 0:S.value],style:e.inset?void 0:m.value},[r.thumb?n(Nt,{defaults:{VIcon:{icon:se,size:"x-small"}}},{default:()=>[r.thumb({...ue,icon:se})]}):n(ns,null,{default:()=>[e.loading?n(zn,{name:"v-switch",active:!0,color:Y.value===!1?void 0:N.value},{default:C=>r.loader?r.loader(C):n(Kn,{active:C.isActive,color:C.color,indeterminate:!0,size:"16",width:"2"},null)}):se&&n(q,{key:String(se),icon:se,size:"x-small"},null)]})])])}})}})}),{}}}),_s={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=Qn(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=O(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,o])=>({title:o,value:t})),this.hasOptions=!0}else if(this.definition.validate){const t=this.definition.validate.toString().match(/\[(.*?)\]/);if(t){const r=t[1].split(",").map(a=>{const u=a.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(u)||u,value:u}});r.length>0&&(this.selectOptions=r,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 o=e.match(/value\s*<=\s*(\d+)/);o&&(this.maxValue=Number(o[1]));const r=this.maxValue-this.minValue;r>100?this.stepValue=10:r>20?this.stepValue=5:r>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),t<this.minValue&&(t=this.minValue),t>this.maxValue&&(t=this.maxValue)),tt(this.settingKey,t)?this.$emit("update",this.settingKey,t):(this.localValue=O(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&&(Mt(this.settingKey),this.localValue=O(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(e){this.snackbarText=e,this.showSnackbar=!0}}},Cs={class:"text-caption text-grey-darken-1"},Vs={class:"d-flex flex-column flex-sm-row align-center"},Ts={key:0,class:"me-2"},Ds={key:2,class:"d-flex align-center"},Es={key:0,class:"px-4 pb-2 pt-0"};function As(e,t,o,r,a,u){return V(),Z(he,null,[n(Q,{class:"setting-item",disabled:o.disabled},{prepend:s(()=>[n(q,{icon:u.settingIcon},null,8,["icon"])]),append:s(()=>[ae("div",Vs,[a.type!=="string"||a.hasOptions?(V(),Z("div",Ts,[a.type==="boolean"?(V(),H(Ge,{key:0,modelValue:a.localValue,"onUpdate:modelValue":[t[0]||(t[0]=l=>a.localValue=l),u.updateSetting],density:"comfortable","hide-details":"",disabled:o.disabled},null,8,["modelValue","disabled","onUpdate:modelValue"])):a.type==="string"&&a.hasOptions?(V(),H(Ss,{key:1,modelValue:a.localValue,"onUpdate:modelValue":[t[1]||(t[1]=l=>a.localValue=l),u.updateSetting],items:a.selectOptions,density:"compact","hide-details":"",disabled:o.disabled,class:"setting-select",variant:"outlined","bg-color":"surface","item-title":"title","item-value":"value"},null,8,["modelValue","items","disabled","onUpdate:modelValue"])):a.type==="number"?(V(),Z("div",Ds,[n(U,{icon:"mdi-minus",size:"small",variant:"text",disabled:o.disabled||a.localValue<=a.minValue,onClick:t[2]||(t[2]=l=>u.adjustValue(-a.stepValue))},null,8,["disabled"]),n(Te,{modelValue:a.localValue,"onUpdate:modelValue":[t[3]||(t[3]=l=>a.localValue=l),u.updateSetting],modelModifiers:{number:!0},type:"number",density:"compact","hide-details":"",min:a.minValue,max:a.maxValue,step:a.stepValue,disabled:o.disabled,class:"mx-2 setting-number-field",style:{width:"80px"},variant:"outlined","bg-color":"surface"},null,8,["modelValue","min","max","step","disabled","onUpdate:modelValue"]),n(U,{icon:"mdi-plus",size:"small",variant:"text",disabled:o.disabled||a.localValue>=a.maxValue,onClick:t[4]||(t[4]=l=>u.adjustValue(a.stepValue))},null,8,["disabled"])])):re("",!0)])):re("",!0),n(Ye,{location:"bottom"},{activator:s(({props:l})=>[n(U,oe({icon:"mdi-dots-vertical",size:"small",variant:"text"},l,{class:"ml-2",disabled:o.disabled}),null,16,["disabled"])]),default:s(()=>[n(fe,{density:"compact"},{default:s(()=>[n(Q,{onClick:u.copySettingId},{prepend:s(()=>[n(q,{icon:"mdi-key",size:"small"})]),default:s(()=>[n(X,null,{default:s(()=>t[7]||(t[7]=[f("复制设置ID")])),_:1})]),_:1},8,["onClick"]),n(Q,{onClick:u.copySettingValue},{prepend:s(()=>[n(q,{icon:"mdi-content-copy",size:"small"})]),default:s(()=>[n(X,null,{default:s(()=>t[8]||(t[8]=[f("复制设置值")])),_:1})]),_:1},8,["onClick"]),n(W),n(Q,{onClick:u.resetToDefault,disabled:u.isDefaultValue},{prepend:s(()=>[n(q,{icon:"mdi-restore",size:"small"})]),default:s(()=>[n(X,null,{default:s(()=>t[9]||(t[9]=[f("重置为默认值")])),_:1})]),_:1},8,["onClick","disabled"])]),_:1})]),_:1})])]),default:s(()=>[n(X,{class:"text-wrap"},{default:s(()=>[f(te(u.displayTitle),1)]),_:1}),n(ve,{class:"d-flex align-center text-wrap"},{default:s(()=>[ae("span",Cs,te(o.settingKey),1)]),_:1})]),_:1},8,["disabled"]),a.type==="string"&&!a.hasOptions?(V(),Z("div",Es,[n(Te,{modelValue:a.localValue,"onUpdate:modelValue":[t[5]||(t[5]=l=>a.localValue=l),u.updateSetting],density:"compact","hide-details":"",disabled:o.disabled,class:"setting-text-field mt-1",variant:"outlined","bg-color":"surface"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):re("",!0),n(qn,{modelValue:a.showSnackbar,"onUpdate:modelValue":t[6]||(t[6]=l=>a.showSnackbar=l),timeout:2e3,color:"success",location:"top"},{default:s(()=>[f(te(a.snackbarText),1)]),_:1},8,["modelValue"])],64)}const De=de(_s,[["render",As],["__scopeId","data-v-d5f17fb4"]]),Is={name:"SettingsExplorer",components:{SettingItem:De},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return O("developer.enabled")},allSettings(){var t;const e=[];for(const[o,r]of Object.entries(Wn))this.searchQuery&&!o.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((t=r.description)!=null&&t.toLowerCase().includes(this.searchQuery.toLowerCase()))||e.push({key:o,...r});return e},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=Ot(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=$n()},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:"复制到剪贴板失败"})})}}},Ns={class:"settings-explorer"},Ps={class:"settings-json"};function Ms(e,t,o,r,a,u){const l=De;return V(),Z("div",Ns,[ae("div",null,[n(Te,{modelValue:a.searchQuery,"onUpdate:modelValue":t[0]||(t[0]=d=>a.searchQuery=d),label:"搜索设置","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"comfortable",class:"mb-4"},null,8,["modelValue"]),n(fe,null,{default:s(()=>[(V(!0),Z(he,null,nt(u.allSettings,d=>(V(),Z("div",{key:d.key},[(V(),H(l,{key:d.key,"setting-key":d.key,disabled:d.requireDeveloper&&!u.isDeveloperMode,onUpdate:u.onSettingUpdate,onError:u.onSettingError},null,8,["setting-key","disabled","onUpdate","onError"])),n(W,{class:"my-2"})]))),128))]),_:1}),n(_e,{border:""},{default:s(()=>[n(Ee,{class:"text-subtitle-1"},{default:s(()=>t[1]||(t[1]=[f("当前配置")])),_:1}),n(xe,null,{default:s(()=>[ae("pre",Ps,te(u.formattedSettings),1)]),_:1}),n(ot,null,{default:s(()=>[n(it),n(U,{onClick:u.copySettingsToClipboard},{default:s(()=>[t[3]||(t[3]=f(" 复制到剪贴板 ")),n(q,{right:""},{default:s(()=>t[2]||(t[2]=[f("mdi-content-copy")])),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const jt=de(Is,[["render",Ms],["__scopeId","data-v-da09fd0e"]]),Os="Classworks",Bs="module",Ls="0.0.0",Fs={dev:"vite --host",build:"vite build",preview:"vite preview",lint:"eslint . --fix"},Rs={"@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"},Us={"@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"},bt={name:Os,private:!0,type:Bs,version:Ls,scripts:Fs,dependencies:Rs,devDependencies:Us},js={name:"AboutCard",setup(){const e=ge([]),t=ge(!1),o=()=>{try{const a={...bt.dependencies||{},...bt.devDependencies||{}},u=Object.entries(a).map(([l,d])=>({name:l,version:d.replace(/[\^~]/g,""),description:r(l)}));e.value=u}catch(a){console.error("加载依赖信息失败:",a),e.value=[]}},r=a=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[a]||"";return It(()=>{o()}),{Dependencies:e,showDeps:t}}},Hs={class:"d-flex flex-column align-start"},zs={class:"d-flex gap-2 flex-wrap mb-6"},Ks={class:"text-caption text-medium-emphasis"};function Qs(e,t,o,r,a,u){return V(),H(_e,{border:""},{default:s(()=>[n(lt,null,{prepend:s(()=>[n(q,{icon:"mdi-information",size:"large",class:"mr-2"})]),default:s(()=>[n(Ee,{class:"text-h6"},{default:s(()=>t[3]||(t[3]=[f("关于")])),_:1})]),_:1}),n(xe,null,{default:s(()=>[n(Ie,null,{default:s(()=>[n(ie,{cols:"12",md:"8",class:"mx-auto"},{default:s(()=>[ae("div",Hs,[n(at,{size:"120",class:"mb-4"},{default:s(()=>[n(Ft,{src:"https://github.com/SunWuyuan.png",alt:"Sunwuyuan"})]),_:1}),t[20]||(t[20]=ae("h2",{class:"text-h5 mb-2"},"Classworks",-1)),t[21]||(t[21]=ae("p",{class:"text-body-1 mb-4"},"适用于班级大屏的作业板小工具",-1)),ae("div",zs,[n(U,{color:"red",variant:"tonal",href:"https://github.com/ClassworksDev/Classworks/issues",target:"_blank","prepend-icon":"mdi-bug"},{default:s(()=>t[4]||(t[4]=[f(" 报告问题 ")])),_:1}),n(U,{color:"primary",variant:"tonal",href:"https://qm.qq.com/q/qNBX4ZZVeg",target:"_blank","prepend-icon":"mdi-qqchat"},{default:s(()=>t[5]||(t[5]=[f(" QQ 群 ")])),_:1}),n(U,{variant:"text",href:"https://github.com/ClassworksDev/Classworks",target:"_blank","prepend-icon":"mdi-github"},{default:s(()=>t[6]||(t[6]=[f(" 前端 ")])),_:1}),n(U,{variant:"text",href:"https://github.com/ClassworksDev/ClassworksServer",target:"_blank","prepend-icon":"mdi-github"},{default:s(()=>t[7]||(t[7]=[f(" 后端 ")])),_:1})]),n(W,{class:"mb-4 w-100"}),t[22]||(t[22]=ae("h3",{class:"text-h6 mb-2"},"备注与致谢",-1)),n(fe,{class:"mb-4 bg-transparent"},{default:s(()=>[n(Q,{href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>t[8]||(t[8]=[f(" 本项目受到 HomeworkBoard 的启发而开发 ")])),_:1}),n(ve,null,{default:s(()=>t[9]||(t[9]=[f(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ")])),_:1})]),_:1}),n(Q,{href:"https://hlyun.org",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>t[10]||(t[10]=[f(" Classworks 由"),ae("strong",null,"厚浪云",-1),f("提供 ")])),_:1}),n(ve,null,{default:s(()=>t[11]||(t[11]=[f(" 长江后浪推前浪 浮事新人换旧人 ")])),_:1})]),_:1}),n(Q,{href:"https://zerocat.houlangs.com",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>t[12]||(t[12]=[f(" 感谢 ZeroCat 社区的开发者们 ")])),_:1}),n(ve,null,{default:s(()=>t[13]||(t[13]=[f(" 新一代,开源,编程社区 ")])),_:1})]),_:1}),n(W,{class:"ma-1"}),n(Q,{href:"https://github.com/HUSX100/IslandCaller",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>t[14]||(t[14]=[f(" 本项目与 IslandCaller 没有从属关系 ")])),_:1}),n(ve,null,{default:s(()=>t[15]||(t[15]=[f(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ")])),_:1})]),_:1}),n(Q,{href:"https://classisland.tech",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>t[16]||(t[16]=[f(" 本项目与 ClassIsland 没有从属关系 ")])),_:1}),n(ve,null,{default:s(()=>t[17]||(t[17]=[f(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ")])),_:1})]),_:1})]),_:1}),n(U,{variant:"text",class:"mb-4","prepend-icon":"mdi-package-variant",onClick:t[0]||(t[0]=l=>r.showDeps=!0)},{default:s(()=>t[18]||(t[18]=[f(" 查看使用的第三方库 ")])),_:1}),n(_t,{modelValue:r.showDeps,"onUpdate:modelValue":t[2]||(t[2]=l=>r.showDeps=l),transition:"dialog-bottom-transition",fullscreen:""},{default:s(()=>[n(_e,null,{default:s(()=>[n(fn,null,{default:s(()=>[n(U,{icon:"mdi-close",onClick:t[1]||(t[1]=l=>r.showDeps=!1)}),n(pn,null,{default:s(()=>t[19]||(t[19]=[f("使用的第三方库")])),_:1}),n(it)]),_:1}),n(xe,null,{default:s(()=>[n(fe,null,{default:s(()=>[(V(!0),Z(he,null,nt(r.Dependencies,l=>(V(),H(Q,{key:l.name,href:"https://www.npmjs.com/package/"+l.name,target:"_blank","append-icon":"mdi-link"},{default:s(()=>[n(X,null,{default:s(()=>[f(te(l.name),1)]),_:2},1024),n(ve,null,{default:s(()=>[f(" v"+te(l.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),ae("p",Ks," Copyright © "+te(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const Ht=de(js,[["render",Qs]]),qs={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function $s(e,t,o,r,a,u){return V(),H(_e,{elevation:"2",class:"settings-card rounded-lg"},{default:s(()=>[n(lt,null,{prepend:s(()=>[n(q,{icon:o.icon,size:"large",class:"mr-2"},null,8,["icon"])]),default:s(()=>[n(Ee,{class:"text-h6"},{default:s(()=>[f(te(o.title),1)]),_:1})]),_:1}),n(xe,null,{default:s(()=>[o.loading?(V(),H(Bt,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):re("",!0),mt(e.$slots,"default",{},void 0,!0)]),_:3}),e.$slots.actions?(V(),H(ot,{key:0,class:"pa-4"},{default:s(()=>[mt(e.$slots,"actions",{},void 0,!0)]),_:3})):re("",!0)]),_:3})}const le=de(qs,[["render",$s],["__scopeId","data-v-3e8918ff"]]);var Ws=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Js(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var zt={exports:{}};(function(e,t){(function(o,r){e.exports=r()})(typeof self<"u"?self:Ws,()=>(()=>{var o={75:function(l){(function(){var d,c,v,w,y,N;typeof performance<"u"&&performance!==null&&performance.now?l.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(l.exports=function(){return(d()-y)/1e6},c=process.hrtime,w=(d=function(){var g;return 1e9*(g=c())[0]+g[1]})(),N=1e9*process.uptime(),y=w-N):Date.now?(l.exports=function(){return Date.now()-v},v=Date.now()):(l.exports=function(){return new Date().getTime()-v},v=new Date().getTime())}).call(this)},4087:(l,d,c)=>{for(var v=c(75),w=typeof window>"u"?c.g:window,y=["moz","webkit"],N="AnimationFrame",g=w["request"+N],E=w["cancel"+N]||w["cancelRequest"+N],B=0;!g&&B<y.length;B++)g=w[y[B]+"Request"+N],E=w[y[B]+"Cancel"+N]||w[y[B]+"CancelRequest"+N];if(!g||!E){var L=0,A=0,_=[];g=function(R){if(_.length===0){var P=v(),ee=Math.max(0,16.666666666666668-(P-L));L=ee+P,setTimeout(function(){var G=_.slice(0);_.length=0;for(var F=0;F<G.length;F++)if(!G[F].cancelled)try{G[F].callback(L)}catch(ne){setTimeout(function(){throw ne},0)}},Math.round(ee))}return _.push({handle:++A,callback:R,cancelled:!1}),A},E=function(R){for(var P=0;P<_.length;P++)_[P].handle===R&&(_[P].cancelled=!0)}}l.exports=function(R){return g.call(w,R)},l.exports.cancel=function(){E.apply(w,arguments)},l.exports.polyfill=function(R){R||(R=w),R.requestAnimationFrame=g,R.cancelAnimationFrame=E}}},r={};function a(l){var d=r[l];if(d!==void 0)return d.exports;var c=r[l]={exports:{}};return o[l].call(c.exports,c,c.exports,a),c.exports}a.n=l=>{var d=l&&l.__esModule?()=>l.default:()=>l;return a.d(d,{a:d}),d},a.d=(l,d)=>{for(var c in d)a.o(d,c)&&!a.o(l,c)&&Object.defineProperty(l,c,{enumerable:!0,get:d[c]})},a.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),a.o=(l,d)=>Object.prototype.hasOwnProperty.call(l,d);var u={};return(()=>{a.d(u,{default:()=>se});var l=a(4087),d=a.n(l);const c=function(S){return new RegExp(/<[a-z][\s\S]*>/i).test(S)},v=function(S,m){return Math.floor(Math.random()*(m-S+1))+S};var w="TYPE_CHARACTER",y="REMOVE_CHARACTER",N="REMOVE_ALL",g="REMOVE_LAST_VISIBLE_NODE",E="PAUSE_FOR",B="CALL_FUNCTION",L="ADD_HTML_TAG_ELEMENT",A="CHANGE_DELETE_SPEED",_="CHANGE_DELAY",R="CHANGE_CURSOR",P="PASTE_STRING",ee="HTML_TAG";function G(S){return G=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(m){return typeof m}:function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},G(S)}function F(S,m){var C=Object.keys(S);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(S);m&&(k=k.filter(function(p){return Object.getOwnPropertyDescriptor(S,p).enumerable})),C.push.apply(C,k)}return C}function ne(S){for(var m=1;m<arguments.length;m++){var C=arguments[m]!=null?arguments[m]:{};m%2?F(Object(C),!0).forEach(function(k){T(S,k,C[k])}):Object.getOwnPropertyDescriptors?Object.defineProperties(S,Object.getOwnPropertyDescriptors(C)):F(Object(C)).forEach(function(k){Object.defineProperty(S,k,Object.getOwnPropertyDescriptor(C,k))})}return S}function J(S){return function(m){if(Array.isArray(m))return Y(m)}(S)||function(m){if(typeof Symbol<"u"&&m[Symbol.iterator]!=null||m["@@iterator"]!=null)return Array.from(m)}(S)||function(m,C){if(m){if(typeof m=="string")return Y(m,C);var k=Object.prototype.toString.call(m).slice(8,-1);return k==="Object"&&m.constructor&&(k=m.constructor.name),k==="Map"||k==="Set"?Array.from(m):k==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(k)?Y(m,C):void 0}}(S)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
||
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Y(S,m){(m==null||m>S.length)&&(m=S.length);for(var C=0,k=new Array(m);C<m;C++)k[C]=S[C];return k}function ue(S,m){for(var C=0;C<m.length;C++){var k=m[C];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(S,ce(k.key),k)}}function T(S,m,C){return(m=ce(m))in S?Object.defineProperty(S,m,{value:C,enumerable:!0,configurable:!0,writable:!0}):S[m]=C,S}function ce(S){var m=function(C,k){if(G(C)!=="object"||C===null)return C;var p=C[Symbol.toPrimitive];if(p!==void 0){var i=p.call(C,"string");if(G(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(C)}(S);return G(m)==="symbol"?m:String(m)}const se=function(){function S(k,p){var i=this;if(function(h,b){if(!(h instanceof b))throw new TypeError("Cannot call a class as a function")}(this,S),T(this,"state",{cursorAnimation:null,lastFrameTime:null,pauseUntil:null,eventQueue:[],eventLoop:null,eventLoopPaused:!1,reverseCalledEvents:[],calledEvents:[],visibleNodes:[],initialOptions:null,elements:{container:null,wrapper:document.createElement("span"),cursor:document.createElement("span")}}),T(this,"options",{strings:null,cursor:"|",delay:"natural",pauseFor:1500,deleteSpeed:"natural",loop:!1,autoStart:!1,devMode:!1,skipAddStyles:!1,wrapperClassName:"Typewriter__wrapper",cursorClassName:"Typewriter__cursor",stringSplitter:null,onCreateTextNode:null,onRemoveNode:null}),T(this,"setupWrapperElement",function(){i.state.elements.container&&(i.state.elements.wrapper.className=i.options.wrapperClassName,i.state.elements.cursor.className=i.options.cursorClassName,i.state.elements.cursor.innerHTML=i.options.cursor,i.state.elements.container.innerHTML="",i.state.elements.container.appendChild(i.state.elements.wrapper),i.state.elements.container.appendChild(i.state.elements.cursor))}),T(this,"start",function(){return i.state.eventLoopPaused=!1,i.runEventLoop(),i}),T(this,"pause",function(){return i.state.eventLoopPaused=!0,i}),T(this,"stop",function(){return i.state.eventLoop&&((0,l.cancel)(i.state.eventLoop),i.state.eventLoop=null),i}),T(this,"pauseFor",function(h){return i.addEventToQueue(E,{ms:h}),i}),T(this,"typeOutAllStrings",function(){return typeof i.options.strings=="string"?(i.typeString(i.options.strings).pauseFor(i.options.pauseFor),i):(i.options.strings.forEach(function(h){i.typeString(h).pauseFor(i.options.pauseFor).deleteAll(i.options.deleteSpeed)}),i)}),T(this,"typeString",function(h){var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(c(h))return i.typeOutHTMLString(h,b);if(h){var x=(i.options||{}).stringSplitter,M=typeof x=="function"?x(h):h.split("");i.typeCharacters(M,b)}return i}),T(this,"pasteString",function(h){var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return c(h)?i.typeOutHTMLString(h,b,!0):(h&&i.addEventToQueue(P,{character:h,node:b}),i)}),T(this,"typeOutHTMLString",function(h){var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,x=arguments.length>2?arguments[2]:void 0,M=function(me){var $=document.createElement("div");return $.innerHTML=me,$.childNodes}(h);if(M.length>0)for(var D=0;D<M.length;D++){var K=M[D],z=K.innerHTML;K&&K.nodeType!==3?(K.innerHTML="",i.addEventToQueue(L,{node:K,parentNode:b}),x?i.pasteString(z,K):i.typeString(z,K)):K.textContent&&(x?i.pasteString(K.textContent,b):i.typeString(K.textContent,b))}return i}),T(this,"deleteAll",function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"natural";return i.addEventToQueue(N,{speed:h}),i}),T(this,"changeDeleteSpeed",function(h){if(!h)throw new Error("Must provide new delete speed");return i.addEventToQueue(A,{speed:h}),i}),T(this,"changeDelay",function(h){if(!h)throw new Error("Must provide new delay");return i.addEventToQueue(_,{delay:h}),i}),T(this,"changeCursor",function(h){if(!h)throw new Error("Must provide new cursor");return i.addEventToQueue(R,{cursor:h}),i}),T(this,"deleteChars",function(h){if(!h)throw new Error("Must provide amount of characters to delete");for(var b=0;b<h;b++)i.addEventToQueue(y);return i}),T(this,"callFunction",function(h,b){if(!h||typeof h!="function")throw new Error("Callback must be a function");return i.addEventToQueue(B,{cb:h,thisArg:b}),i}),T(this,"typeCharacters",function(h){var b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!h||!Array.isArray(h))throw new Error("Characters must be an array");return h.forEach(function(x){i.addEventToQueue(w,{character:x,node:b})}),i}),T(this,"removeCharacters",function(h){if(!h||!Array.isArray(h))throw new Error("Characters must be an array");return h.forEach(function(){i.addEventToQueue(y)}),i}),T(this,"addEventToQueue",function(h,b){var x=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return i.addEventToStateProperty(h,b,x,"eventQueue")}),T(this,"addReverseCalledEvent",function(h,b){var x=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return i.options.loop?i.addEventToStateProperty(h,b,x,"reverseCalledEvents"):i}),T(this,"addEventToStateProperty",function(h,b){var x=arguments.length>2&&arguments[2]!==void 0&&arguments[2],M=arguments.length>3?arguments[3]:void 0,D={eventName:h,eventArgs:b||{}};return i.state[M]=x?[D].concat(J(i.state[M])):[].concat(J(i.state[M]),[D]),i}),T(this,"runEventLoop",function(){i.state.lastFrameTime||(i.state.lastFrameTime=Date.now());var h=Date.now(),b=h-i.state.lastFrameTime;if(!i.state.eventQueue.length){if(!i.options.loop)return;i.state.eventQueue=J(i.state.calledEvents),i.state.calledEvents=[],i.options=ne({},i.state.initialOptions)}if(i.state.eventLoop=d()(i.runEventLoop),!i.state.eventLoopPaused){if(i.state.pauseUntil){if(h<i.state.pauseUntil)return;i.state.pauseUntil=null}var x,M=J(i.state.eventQueue),D=M.shift();if(!(b<=(x=D.eventName===g||D.eventName===y?i.options.deleteSpeed==="natural"?v(40,80):i.options.deleteSpeed:i.options.delay==="natural"?v(120,160):i.options.delay))){var K=D.eventName,z=D.eventArgs;switch(i.logInDevMode({currentEvent:D,state:i.state,delay:x}),K){case P:case w:var me=z.character,$=z.node,Ae=document.createTextNode(me),ke=Ae;i.options.onCreateTextNode&&typeof i.options.onCreateTextNode=="function"&&(ke=i.options.onCreateTextNode(me,Ae)),ke&&($?$.appendChild(ke):i.state.elements.wrapper.appendChild(ke)),i.state.visibleNodes=[].concat(J(i.state.visibleNodes),[{type:"TEXT_NODE",character:me,node:ke}]);break;case y:M.unshift({eventName:g,eventArgs:{removingCharacterNode:!0}});break;case E:var He=D.eventArgs.ms;i.state.pauseUntil=Date.now()+parseInt(He);break;case B:var Pe=D.eventArgs,en=Pe.cb,tn=Pe.thisArg;en.call(tn,{elements:i.state.elements});break;case L:var rt=D.eventArgs,ze=rt.node,Ke=rt.parentNode;Ke?Ke.appendChild(ze):i.state.elements.wrapper.appendChild(ze),i.state.visibleNodes=[].concat(J(i.state.visibleNodes),[{type:ee,node:ze,parentNode:Ke||i.state.elements.wrapper}]);break;case N:var nn=i.state.visibleNodes,Qe=z.speed,Me=[];Qe&&Me.push({eventName:A,eventArgs:{speed:Qe,temp:!0}});for(var dt=0,sn=nn.length;dt<sn;dt++)Me.push({eventName:g,eventArgs:{removingCharacterNode:!1}});Qe&&Me.push({eventName:A,eventArgs:{speed:i.options.deleteSpeed,temp:!0}}),M.unshift.apply(M,Me);break;case g:var an=D.eventArgs.removingCharacterNode;if(i.state.visibleNodes.length){var qe=i.state.visibleNodes.pop(),on=qe.type,Oe=qe.node,ln=qe.character;i.options.onRemoveNode&&typeof i.options.onRemoveNode=="function"&&i.options.onRemoveNode({node:Oe,character:ln}),Oe&&Oe.parentNode.removeChild(Oe),on===ee&&an&&M.unshift({eventName:g,eventArgs:{}})}break;case A:i.options.deleteSpeed=D.eventArgs.speed;break;case _:i.options.delay=D.eventArgs.delay;break;case R:i.options.cursor=D.eventArgs.cursor,i.state.elements.cursor.innerHTML=D.eventArgs.cursor}i.options.loop&&(D.eventName===g||D.eventArgs&&D.eventArgs.temp||(i.state.calledEvents=[].concat(J(i.state.calledEvents),[D]))),i.state.eventQueue=M,i.state.lastFrameTime=h}}}),k)if(typeof k=="string"){var I=document.querySelector(k);if(!I)throw new Error("Could not find container element");this.state.elements.container=I}else this.state.elements.container=k;p&&(this.options=ne(ne({},this.options),p)),this.state.initialOptions=ne({},this.options),this.init()}var m,C;return m=S,(C=[{key:"init",value:function(){var k,p;this.setupWrapperElement(),this.addEventToQueue(R,{cursor:this.options.cursor},!0),this.addEventToQueue(N,null,!0),!window||window.___TYPEWRITER_JS_STYLES_ADDED___||this.options.skipAddStyles||(k=".Typewriter__cursor{-webkit-animation:Typewriter-cursor 1s infinite;animation:Typewriter-cursor 1s infinite;margin-left:1px}@-webkit-keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}",(p=document.createElement("style")).appendChild(document.createTextNode(k)),document.head.appendChild(p),window.___TYPEWRITER_JS_STYLES_ADDED___=!0),this.options.autoStart===!0&&this.options.strings&&this.typeOutAllStrings().start()}},{key:"logInDevMode",value:function(k){this.options.devMode&&console.log(k)}}])&&ue(m.prototype,C),Object.defineProperty(m,"prototype",{writable:!1}),S}()})(),u.default})())})(zt);var Gs=zt.exports;const yt=Js(Gs),Ys=[{text:"帝高阳之苗裔兮,朕皇考曰伯庸。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"摄提贞于孟陬兮,惟庚寅吾以降。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇览揆余初度兮,肇锡余以嘉名。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"名余曰正则兮,字余曰灵均。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷吾既有此内美兮,又重之以修能。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扈江离与辟芷兮,纫秋兰以为佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汩余若将不及兮,恐年岁之不吾与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝搴阰之木兰兮,夕揽洲之宿莽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日月忽其不淹兮,春与秋其代序。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟草木之零落兮,恐美人之迟暮。(惟 通:唯)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不抚壮而弃秽兮,何不改此度?(改此度 一作:改乎此度)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乘骐骥以驰骋兮,来吾道夫先路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"昔三后之纯粹兮,固众芳之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"杂申椒与菌桂兮,岂惟纫夫蕙茝!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"彼尧舜之耿介兮,既遵道而得路。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何桀纣之猖披兮,夫唯捷径以窘步。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟夫党人之偷乐兮,路幽昧以险隘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂余身之惮殃兮,恐皇舆之败绩!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽奔走以先后兮,及前王之踵武。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"荃不查余之中情兮,反信谗而齌怒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余固知謇謇之为患兮,忍而不能舍也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"指九天以为正兮,夫唯灵修之故也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰黄昏以为期兮,羌中道而改路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"初既与余成言兮,后悔遁而有他。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既不难夫离别兮,伤灵修之数化。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既滋兰之九畹兮,又树蕙之百亩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"畦留夷与揭车兮,杂杜衡与芳芷。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"冀枝叶之峻茂兮,愿俟时乎吾将刈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽萎绝其亦何伤兮,哀众芳之芜秽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众皆竞进以贪婪兮,凭不厌乎求索。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羌内恕己以量人兮,各兴心而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽驰骛以追逐兮,非余心之所急。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"老冉冉其将至兮,恐修名之不立。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝饮木兰之坠露兮,夕餐秋菊之落英。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟余情其信姱以练要兮,长顑颔亦何伤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"掔木根以结茝兮,贯薜荔之落蕊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"矫菌桂以纫蕙兮,索胡绳之纚纚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"謇吾法夫前修兮,非世俗之所服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽不周于今之人兮,愿依彭咸之遗则。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"长太息以掩涕兮,哀民生之多艰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余虽好修姱以鞿羁兮,謇朝谇而夕替。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既替余以蕙纕兮,又申之以揽茝。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"亦余心之所善兮,虽九死其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怨灵修之浩荡兮,终不察夫民心。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众女嫉余之蛾眉兮,谣诼谓余以善淫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之工巧兮,偭规矩而改错。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"背绳墨以追曲兮,竞周容以为度。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忳郁邑余侘傺兮,吾独穷困乎此时也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁溘死以流亡兮,余不忍为此态也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸷鸟之不群兮,自前世而固然。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何方圜之能周兮,夫孰异道而相安?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屈心而抑志兮,忍尤而攘诟。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"伏清白以死直兮,固前圣之所厚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"悔相道之不察兮,延伫乎吾将反。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"回朕车以复路兮,及行迷之未远。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"步余马于兰皋兮,驰椒丘且焉止息。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"进不入以离尤兮,退将复修吾初服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"制芰荷以为衣兮,集芙蓉以为裳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不吾知其亦已兮,苟余情其信芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"高余冠之岌岌兮,长余佩之陆离。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳与泽其杂糅兮,唯昭质其犹未亏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以游目兮,将往观乎四荒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"佩缤纷其繁饰兮,芳菲菲其弥章。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民生各有所乐兮,余独好修以为常。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽体解吾犹未变兮,岂余心之可惩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"女媭之婵媛兮,申申其詈予,曰:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鲧婞直以亡身兮,终然夭乎羽之野。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汝何博謇而好修兮,纷独有此姱节?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"薋菉葹以盈室兮,判独离而不服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众不可户说兮,孰云察余之中情?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世并举而好朋兮,夫何茕独而不予听?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"依前圣以节中兮,喟凭心而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"济沅湘以南征兮,就重华而陈词:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"启《九辩》与《九歌》兮,夏康娱以自纵。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不顾难以图后兮,五子用失乎家衖。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羿淫游以佚畋兮,又好射夫封狐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固乱流其鲜终兮,浞又贪夫厥家。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"浇身被服强圉兮,纵欲而不忍。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日康娱而自忘兮,厥首用夫颠陨。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夏桀之常违兮,乃遂焉而逢殃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"后辛之菹醢兮,殷宗用而不长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而祗敬兮,周论道而莫差。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"举贤才而授能兮,循绳墨而不颇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇天无私阿兮,览民德焉错辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫维圣哲以茂行兮,苟得用此下土。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"瞻前而顾后兮,相观民之计极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫孰非义而可用兮?孰非善而可服?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"阽余身而危死兮,览余初其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不量凿而正枘兮,固前修以菹醢。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曾歔欷余郁邑兮,哀朕时之不当。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"揽茹蕙以掩涕兮,沾余襟之浪浪。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"跪敷衽以陈辞兮,耿吾既得此中正。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驷玉虬以椉鹥兮,溘埃风余上征。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于苍梧兮,夕余至乎县圃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲少留此灵琐兮,日忽忽其将暮。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令羲和弭节兮,望崦嵫而勿迫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路曼曼其修远兮,吾将上下而求索。(曼曼 一作:漫漫)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"饮余马于咸池兮,总余辔乎扶桑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折若木以拂日兮,聊逍遥以相羊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"前望舒使先驱兮,后飞廉使奔属。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸾皇为余先戒兮,雷师告余以未具。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令凤鸟飞腾兮,继之以日夜。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"飘风屯其相离兮,帅云霓而来御。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,斑陆离其上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令帝阍开关兮,倚阊阖而望予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时暧暧其将罢兮,结幽兰而延伫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而不分兮,好蔽美而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝吾将济于白水兮,登阆风而绁马。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以流涕兮,哀高丘之无女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"溘吾游此春宫兮,折琼枝以继佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及荣华之未落兮,相下女之可诒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令丰隆乘云兮,求宓妃之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"解佩纕以结言兮,吾令謇修以为理。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,忽纬繣其难迁。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夕归次于穷石兮,朝濯发乎洧盘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"保厥美以骄傲兮,日康娱以淫游。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽信美而无礼兮,来违弃而改求。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览相观于四极兮,周流乎天余乃下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"望瑶台之偃蹇兮,见有娀之佚女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令鸩为媒兮,鸩告余以不好。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"雄鸠之鸣逝兮,余犹恶其佻巧。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"心犹豫而狐疑兮,欲自适而不可。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇既受诒兮,恐高辛之先我。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲远集而无所止兮,聊浮游以逍遥。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及少康之未家兮,留有虞之二姚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"理弱而媒拙兮,恐导言之不固。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而嫉贤兮,好蔽美而称恶。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"闺中既以邃远兮,哲王又不寤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怀朕情而不发兮,余焉能忍而与此终古?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"索琼茅以筳篿兮,命灵氛为余占之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:两美其必合兮,孰信修而慕之?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"思九州之博大兮,岂惟是其有女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉远逝而无狐疑兮,孰求美而释女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何所独无芳草兮,尔何怀乎故宇?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世幽昧以昡曜兮,孰云察余之善恶?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民好恶其不同兮,惟此党人其独异!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"户服艾以盈要兮,谓幽兰其不可佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览察草木其犹未得兮,岂珵美之能当?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苏粪壤以充帏兮,谓申椒其不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲从灵氛之吉占兮,心犹豫而狐疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"巫咸将夕降兮,怀椒糈而要之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"百神翳其备降兮,九疑缤其并迎。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇剡剡其扬灵兮,告余以吉故。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉升降以上下兮,求矩矱之所同。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而求合兮,挚咎繇而能调。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟中情其好修兮,又何必用夫行媒?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"说操筑于傅岩兮,武丁用而不疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吕望之鼓刀兮,遭周文而得举。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁戚之讴歌兮,齐桓闻以该辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及年岁之未晏兮,时亦犹其未央。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"恐鹈鴂之先鸣兮,使夫百草为之不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何琼佩之偃蹇兮,众薆然而蔽之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟此党人之不谅兮,恐嫉妒而折之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时缤纷其变易兮,又何可以淹留?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"兰芷变而不芳兮,荃蕙化而为茅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何昔日之芳草兮,今直为此萧艾也?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂其有他故兮,莫好修之害也!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余以兰为可恃兮,羌无实而容长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"委厥美以从俗兮,苟得列乎众芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"椒专佞以慢慆兮,樧又欲充夫佩帏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既干进而务入兮,又何芳之能祗?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之流从兮,又孰能无变化?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览椒兰其若兹兮,又况揭车与江离?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟兹佩之可贵兮,委厥美而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳菲菲而难亏兮,芬至今犹未沬。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"和调度以自娱兮,聊浮游而求女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及余饰之方壮兮,周流观乎上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"灵氛既告余以吉占兮,历吉日乎吾将行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折琼枝以为羞兮,精琼爢以为粻。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"为余驾飞龙兮,杂瑶象以为车。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何离心之可同兮?吾将远逝以自疏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"邅吾道夫昆仑兮,路修远以周流。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扬云霓之晻蔼兮,鸣玉鸾之啾啾。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于天津兮,夕余至乎西极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇翼其承旗兮,高翱翔之翼翼。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽吾行此流沙兮,遵赤水而容与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"麾蛟龙使梁津兮,诏西皇使涉予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路修远以多艰兮,腾众车使径待。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路不周以左转兮,指西海以为期。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屯余车其千乘兮,齐玉轪而并驰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驾八龙之婉婉兮,载云旗之委蛇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"抑志而弭节兮,神高驰之邈邈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"奏《九歌》而舞《韶》兮,聊假日以媮乐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"陟升皇之赫戏兮,忽临睨夫旧乡。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"仆夫悲余马怀兮,蜷局顾而不行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乱曰:已矣哉!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"国无人莫我知兮,又何怀乎故都!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既莫足与为美政兮,吾将从彭咸之所居!",author:"离骚",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"}],xt={quotes:Ys},St={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},kt={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},Xs={name:"EchoChamberCard",components:{SettingsCard:le},data:()=>({typewriter:null,sourceWriter:null,currentQuote:St,hasClicked:!1}),mounted(){this.initTypewriters()},methods:{initTypewriters(){this.typewriter=new yt(this.$refs.typewriter,kt.main),this.sourceWriter=new yt(this.$refs.sourceWriter,kt.source),this.typeQuote(St)},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:o,link:r}=this.currentQuote,a=[e,t&&`作者:${t}`,o&&`贡献者:${o}`,(r||o)&&`来源:${r||`https://github.com/${o}`}`].filter(Boolean);try{await navigator.clipboard.writeText(a.join(`
|
||
`))}catch(u){console.error("复制失败:",u)}}},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(e=>e==null?void 0:e.stop())}},Zs={ref:"typewriter",class:"typewriter-text"},ei={ref:"sourceWriter",class:"source-text"};function ti(e,t,o,r,a,u){const l=le;return V(),H(l,{border:"",title:"回声洞",icon:"mdi-thought-bubble",onClick:u.handleClick},{default:s(()=>[n(xe,null,{default:s(()=>[ae("div",Zs,null,512),ae("div",ei,null,512)]),_:1}),n(Jn,{name:"fade"},{default:s(()=>{var d;return[(d=e.currentQuote)!=null&&d.contributor?(V(),H(st,{key:0,class:"contributor"},{default:s(()=>[n(at,{start:""},{default:s(()=>[n(Ft,{src:`https://github.com/${e.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),f(" "+te(e.currentQuote.contributor),1)]),_:1})):re("",!0)]}),_:1})]),_:1},8,["onClick"])}const Kt=de(Xs,[["render",ti],["__scopeId","data-v-5c15976c"]]),ni={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},si={class:"warning-container"};function ii(e,t,o,r,a,u){return V(),Z("div",si,[o.show?(V(),H(st,{key:0,color:"warning",size:"small",class:"warning-chip"},{default:s(()=>[f(te(o.message),1)]),_:1})):re("",!0)])}const Qt=de(ni,[["render",ii],["__scopeId","data-v-0668f179"]]),ai=pe({disabled:Boolean,modelValue:{type:Boolean,default:null},...Yn()},"VHover"),oi=Se()({name:"VHover",props:ai(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:o}=t;const r=ye(e,"modelValue"),{runOpenDelay:a,runCloseDelay:u}=Gn(e,l=>!e.disabled&&(r.value=l));return()=>{var l;return(l=o.default)==null?void 0:l.call(o,{isHovering:r.value,props:{onMouseenter:a,onMouseleave:u}})}}}),li={name:"StudentListCard",components:{UnsavedWarning:Qt},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((o,r)=>r!==e);this.updateModelValue({list:t,text:t.join(`
|
||
`)})},moveStudent(e,t){const o=[...this.modelValue.list];let r;if(t==="top"?r=0:t==="up"?r=e-1:r=e+1,r>=0&&r<o.length){const[a]=o.splice(e,1);o.splice(r,0,a),this.updateModelValue({list:o,text:o.join(`
|
||
`)})}},startEdit(e,t){this.editState={index:e,name:t}},saveEdit(){const{index:e,name:t}=this.editState;if(e===-1||!t.trim())return;const o=[...this.modelValue.list];o[e]=t.trim(),this.updateModelValue({list:o,text:o.join(`
|
||
`)}),this.editState={index:-1,name:""}},handleClick(e,t){this.isMobile&&this.startEdit(e,t)},handleTextInput(e){const t=e.split(`
|
||
`).map(o=>o.trim()).filter(o=>o);this.updateModelValue({text:e,list:t})},sortStudentsByPinyin(){const e=[...this.modelValue.list].sort((t,o)=>{const r=ht(t,{toneType:"none",mode:"surname"}),a=ht(o,{toneType:"none",mode:"surname"});return r.localeCompare(a)});this.updateModelValue({list:e,text:e.join(`
|
||
`)})}}},ui={key:0},ri=["onClick"],di={key:1,class:"pt-2"};function ci(e,t,o,r,a,u){const l=Qt;return V(),H(_e,{border:"",color:o.unsavedChanges?"warning-subtle":void 0,class:gt({"unsaved-changes":o.unsavedChanges})},{default:s(()=>[n(lt,null,{prepend:s(()=>[n(q,{icon:"mdi-account-group",size:"large",class:"mr-2"})]),append:s(()=>[n(l,{show:o.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),n(U,{"prepend-icon":"mdi-sort-alphabetical-variant",variant:"text",class:"mr-2",onClick:u.sortStudentsByPinyin,disabled:o.modelValue.list.length===0},{default:s(()=>t[6]||(t[6]=[f(" 按姓名首字母排序 ")])),_:1},8,["onClick","disabled"]),n(U,{color:o.modelValue.advanced?"primary":void 0,variant:"text","prepend-icon":"mdi-code-braces",onClick:u.toggleAdvanced},{default:s(()=>[f(te(o.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:s(()=>[n(Ee,{class:"text-h6"},{default:s(()=>t[5]||(t[5]=[f("学生列表")])),_:1})]),_:1}),n(xe,null,{default:s(()=>[o.loading?(V(),H(Bt,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):re("",!0),o.error?(V(),H(as,{key:1,type:"error",variant:"tonal",closable:"",class:"mb-4"},{default:s(()=>[f(te(o.error),1)]),_:1})):re("",!0),n(Lt,null,{default:s(()=>[o.modelValue.advanced?(V(),Z("div",di,[n(Ct,{modelValue:u.text,"onUpdate:modelValue":t[2]||(t[2]=d=>u.text=d),label:"批量编辑学生列表",placeholder:"每行输入一个学生姓名",hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行","persistent-hint":"",variant:"outlined",rows:"10",onInput:u.handleTextInput},null,8,["modelValue","onInput"])])):(V(),Z("div",ui,[n(Ie,{class:"mb-6"},{default:s(()=>[n(ie,{cols:"12",sm:"6",md:"4"},{default:s(()=>[n(Te,{modelValue:a.newStudentName,"onUpdate:modelValue":t[0]||(t[0]=d=>a.newStudentName=d),label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined","hide-details":"",class:"mb-4",onKeyup:vt(u.addStudent,["enter"])},{append:s(()=>[n(U,{icon:"mdi-plus",variant:"text",color:"primary",disabled:!a.newStudentName.trim(),onClick:u.addStudent},null,8,["disabled","onClick"])]),_:1},8,["modelValue","onKeyup"])]),_:1})]),_:1}),n(Ie,null,{default:s(()=>[(V(!0),Z(he,null,nt(o.modelValue.list,(d,c)=>(V(),H(ie,{key:c,cols:"12",sm:"6",md:"4",lg:"3"},{default:s(()=>[n(oi,null,{default:s(({isHovering:v,props:w})=>[n(_e,oe({ref_for:!0},w,{elevation:o.isMobile?1:v?4:1,class:"student-card",border:""}),{default:s(()=>[n(xe,{class:"d-flex align-center pa-3"},{default:s(()=>[n(Ye,{location:"bottom","open-on-hover":!o.isMobile},{activator:s(({props:y})=>[n(U,oe({variant:"tonal",size:"small",class:"mr-3 font-weight-medium",ref_for:!0},y),{default:s(()=>[f(te(c+1),1)]),_:2},1040)]),default:s(()=>[n(fe,{density:"compact",nav:""},{default:s(()=>[n(Q,{"prepend-icon":"mdi-arrow-up-bold",disabled:c===0,onClick:y=>u.moveStudent(c,"top")},{default:s(()=>t[7]||(t[7]=[f(" 置顶 ")])),_:2},1032,["disabled","onClick"]),n(W),n(Q,{"prepend-icon":"mdi-arrow-up",disabled:c===0,onClick:y=>u.moveStudent(c,"up")},{default:s(()=>t[8]||(t[8]=[f(" 上移 ")])),_:2},1032,["disabled","onClick"]),n(Q,{"prepend-icon":"mdi-arrow-down",disabled:c===o.modelValue.list.length-1,onClick:y=>u.moveStudent(c,"down")},{default:s(()=>t[9]||(t[9]=[f(" 下移 ")])),_:2},1032,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),a.editState.index===c?(V(),H(Te,{key:0,modelValue:a.editState.name,"onUpdate:modelValue":t[1]||(t[1]=y=>a.editState.name=y),density:"compact",variant:"underlined","hide-details":"",class:"flex-grow-1",autofocus:"",onKeyup:vt(u.saveEdit,["enter"]),onBlur:u.saveEdit},null,8,["modelValue","onKeyup","onBlur"])):(V(),Z("span",{key:1,class:"text-body-1 flex-grow-1",onClick:y=>u.handleClick(c,d)},te(d),9,ri)),ae("div",{class:gt(["d-flex gap-1 action-buttons",{"opacity-100":v||o.isMobile}])},[n(U,{icon:"mdi-pencil",variant:"text",color:"primary",size:"small",onClick:y=>u.startEdit(c,d)},null,8,["onClick"]),n(U,{icon:"mdi-delete",variant:"text",color:"error",size:"small",onClick:y=>u.removeStudent(c)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),n(Ie,{class:"mt-6"},{default:s(()=>[n(ie,{cols:"12",class:"d-flex gap-2"},{default:s(()=>[n(U,{color:"primary","prepend-icon":"mdi-content-save",size:"large",loading:o.loading,disabled:o.loading,onClick:t[3]||(t[3]=d=>e.$emit("save"))},{default:s(()=>t[10]||(t[10]=[f(" 保存名单 ")])),_:1},8,["loading","disabled"]),n(U,{color:"error",variant:"outlined","prepend-icon":"mdi-refresh",size:"large",loading:o.loading,disabled:o.loading,onClick:t[4]||(t[4]=d=>e.$emit("reload"))},{default:s(()=>t[11]||(t[11]=[f(" 重载名单 ")])),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1})]),_:1},8,["color","class"])}const qt=de(li,[["render",ci],["__scopeId","data-v-9de1f8ce"]]),hi={name:"ThemeSettingsCard",components:{SettingsCard:le},data(){return{localTheme:O("theme.mode")}},watch:{localTheme(e){tt("theme.mode",e),this.updateTheme(e)}},setup(){return{theme:Xn()}},methods:{updateTheme(e){this.theme.global.name.value=e}}};function wi(e,t,o,r,a,u){const l=le;return V(),H(l,{title:"主题设置",icon:"mdi-palette"},{default:s(()=>[n(fe,null,{default:s(()=>[n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-theme-light-dark",class:"mr-3"})]),append:s(()=>[n(Zn,{modelValue:a.localTheme,"onUpdate:modelValue":t[0]||(t[0]=d=>a.localTheme=d),density:"comfortable",color:"primary"},{default:s(()=>[n(U,{value:"light"},{default:s(()=>[n(q,{icon:"mdi-white-balance-sunny",class:"mr-2"}),t[3]||(t[3]=f(" 明亮 "))]),_:1}),n(U,{value:"dark"},{default:s(()=>[n(q,{icon:"mdi-moon-waning-crescent",class:"mr-2"}),t[4]||(t[4]=f(" 暗黑 "))]),_:1})]),_:1},8,["modelValue"])]),default:s(()=>[n(X,null,{default:s(()=>t[1]||(t[1]=[f("主题模式")])),_:1}),n(ve,null,{default:s(()=>t[2]||(t[2]=[f("选择明亮或暗黑主题")])),_:1})]),_:1})]),_:1})]),_:1})}const $t=de(hi,[["render",wi]]),fi={name:"DisplaySettingsCard",components:{SettingsCard:le,SettingItem:De},data(){return{}}};function pi(e,t,o,r,a,u){const l=De,d=le;return V(),H(d,{title:"显示设置",icon:"mdi-monitor",border:""},{default:s(()=>[n(fe,null,{default:s(()=>[n(l,{"setting-key":"display.emptySubjectDisplay"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.dynamicSort"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.showRandomButton"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.showFullscreenButton"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.cardHoverEffect"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.enhancedTouchMode"}),n(W,{class:"my-2"}),n(l,{"setting-key":"display.showAntiScreenBurnCard"})]),_:1})]),_:1})}const Wt=de(fi,[["render",pi]]),mi=pe({...Ne(),...vn()},"VForm"),Jt=Se()({name:"VForm",props:mi(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,t){let{slots:o,emit:r}=t;const a=mn(e),u=ge();function l(c){c.preventDefault(),a.reset()}function d(c){const v=c,w=a.validate();v.then=w.then.bind(w),v.catch=w.catch.bind(w),v.finally=w.finally.bind(w),r("submit",v),v.defaultPrevented||w.then(y=>{var g;let{valid:N}=y;N&&((g=u.value)==null||g.submit())}),v.preventDefault()}return Ce(()=>{var c;return n("form",{ref:u,class:["v-form",e.class],style:e.style,novalidate:!0,onReset:l,onSubmit:d},[(c=o.default)==null?void 0:c.call(o,a)])}),Pt(a,u)}}),vi={name:"RefreshSettingsCard",components:{SettingsCard:le},data(){return{}}};function gi(e,t,o,r,a,u){const l=De,d=le;return V(),H(d,{title:"刷新设置",icon:"mdi-refresh-circle"},{default:s(()=>[n(Jt,null,{default:s(()=>[n(fe,null,{default:s(()=>[n(l,{"setting-key":"refresh.auto",title:"自动刷新"}),t[0]||(t[0]=f()),n(W,{class:"my-2"}),n(l,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const Gt=de(vi,[["render",gi]]),bi={};function yi(e,t,o,r,a,u){const l=De,d=le;return V(),H(d,{title:"编辑设置",icon:"mdi-cog"},{default:s(()=>[n(fe,null,{default:s(()=>[n(l,{"setting-key":"edit.autoSave"}),n(W,{class:"my-2"}),n(l,{"setting-key":"edit.blockNonTodayAutoSave"}),n(W,{class:"my-2"}),n(l,{"setting-key":"edit.confirmNonTodaySave"}),n(W,{class:"my-2"}),n(l,{"setting-key":"edit.refreshBeforeEdit"})]),_:1})]),_:1})}const Yt=de(bi,[["render",yi]]),xi={name:"DataProviderSettingsCard",components:{SettingsCard:le},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null}},computed:{currentProvider(){return O("server.provider")}},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;try{const e=O("server.domain");if((await gn.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:{}},o=await new Promise((c,v)=>{const w=window.indexedDB.open(e);w.onerror=()=>v(w.error),w.onsuccess=()=>c(w.result)}),r=Array.from(o.objectStoreNames);for(const c of r){const w=o.transaction(c,"readonly").objectStore(c),y=await new Promise((N,g)=>{const E=w.getAll();E.onerror=()=>g(E.error),E.onsuccess=()=>N(E.result)});t.indexedDB[c]=y}const a=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),u=URL.createObjectURL(a),l=document.createElement("a"),d=new Date().toISOString().split("T")[0];l.href=u,l.download=`homework-indexeddb-${d}.json`,l.click(),URL.revokeObjectURL(u),this.$message.success("导出成功","IndexedDB数据已导出")}catch(e){console.error("导出失败:",e),this.$message.error("导出失败",e.message||"无法导出数据库数据")}},handleConfirm(){this.confirmAction&&this.confirmAction()}}};function Si(e,t,o,r,a,u){const l=le;return V(),H(l,{title:"数据源设置",icon:"mdi-database-cog"},{default:s(()=>[n(fe,null,{default:s(()=>[u.currentProvider==="server"?(V(),H(Q,{key:0},{prepend:s(()=>[n(q,{icon:"mdi-lan-connect",class:"mr-3"})]),append:s(()=>[n(U,{loading:a.loading,variant:"tonal",onClick:u.checkServerConnection},{default:s(()=>t[3]||(t[3]=[f(" 测试连接 ")])),_:1},8,["loading","onClick"])]),default:s(()=>[n(X,null,{default:s(()=>t[2]||(t[2]=[f("检查服务器连接")])),_:1})]),_:1})):re("",!0),u.currentProvider==="indexedDB"?(V(),Z(he,{key:1},[n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-database",class:"mr-3"})]),append:s(()=>[n(U,{color:"error",variant:"tonal",onClick:u.confirmClearIndexedDB},{default:s(()=>t[6]||(t[6]=[f(" 清除 ")])),_:1},8,["onClick"])]),default:s(()=>[n(X,null,{default:s(()=>t[4]||(t[4]=[f("清除数据库缓存")])),_:1}),n(ve,null,{default:s(()=>t[5]||(t[5]=[f("这将清除所有IndexedDB中的数据")])),_:1})]),_:1}),n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-database-export",class:"mr-3"})]),append:s(()=>[n(U,{variant:"tonal",onClick:u.exportData},{default:s(()=>t[8]||(t[8]=[f(" 导出 ")])),_:1},8,["onClick"])]),default:s(()=>[n(X,null,{default:s(()=>t[7]||(t[7]=[f("导出数据库")])),_:1})]),_:1})],64)):re("",!0),n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-lan-connect",class:"mr-3"})]),append:s(()=>[n(U,{variant:"tonal",to:"/cachemanagement"},{default:s(()=>t[10]||(t[10]=[f(" 查看 ")])),_:1})]),default:s(()=>[n(X,null,{default:s(()=>t[9]||(t[9]=[f("查看本地缓存")])),_:1})]),_:1})]),_:1}),n(_t,{modelValue:a.confirmDialog,"onUpdate:modelValue":t[1]||(t[1]=d=>a.confirmDialog=d),"max-width":"400"},{default:s(()=>[n(_e,null,{default:s(()=>[n(Ee,null,{default:s(()=>[f(te(a.confirmTitle),1)]),_:1}),n(xe,null,{default:s(()=>[f(te(a.confirmMessage),1)]),_:1}),n(ot,null,{default:s(()=>[n(it),n(U,{color:"grey",variant:"text",onClick:t[0]||(t[0]=d=>a.confirmDialog=!1)},{default:s(()=>t[11]||(t[11]=[f("取消")])),_:1}),n(U,{color:"error",variant:"tonal",onClick:u.handleConfirm},{default:s(()=>t[12]||(t[12]=[f("确认")])),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const Xt=de(xi,[["render",Si]]),ki={name:"ServerSettingsCard",components:{SettingsCard:le},props:{loading:Boolean},data(){return{}}};function _i(e,t,o,r,a,u){const l=De,d=le;return V(),H(d,{title:"数据源设置",icon:"mdi-database",loading:o.loading},{default:s(()=>[n(Jt,null,{default:s(()=>[n(l,{"setting-key":"server.provider",title:"数据提供者"}),n(W,{class:"my-2"}),n(l,{"setting-key":"server.domain",title:"服务器域名"}),t[0]||(t[0]=f()),n(W,{class:"my-2"}),n(l,{"setting-key":"server.classNumber",title:"班号"})]),_:1})]),_:1},8,["loading"])}const Zt=de(ki,[["render",_i]]),Ci={name:"Settings",components:{ServerSettingsCard:Zt,EditSettingsCard:Yt,RefreshSettingsCard:Gt,DisplaySettingsCard:Wt,MessageLog:Vt,SettingsCard:le,StudentListCard:qt,AboutCard:Ht,DataProviderSettingsCard:Xt,ThemeSettingsCard:$t,EchoChamberCard:Kt,SettingsExplorer:jt},setup(){const{mobile:e}=At();return{isMobile:e}},data(){return{settings:{server:{domain:O("server.domain"),classNumber:O("server.classNumber"),provider:O("server.provider")},refresh:{auto:O("refresh.auto"),interval:O("refresh.interval")},font:{size:O("font.size")},edit:{autoSave:O("edit.autoSave"),blockNonTodayAutoSave:O("edit.blockNonTodayAutoSave"),confirmNonTodaySave:O("edit.confirmNonTodaySave"),refreshBeforeEdit:O("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:O("display.emptySubjectDisplay"),dynamicSort:O("display.dynamicSort"),showRandomButton:O("display.showRandomButton"),showFullscreenButton:O("display.showFullscreenButton")},developer:{enabled:O("developer.enabled"),showDebugConfig:O("developer.showDebugConfig")},message:{showSidebar:O("message.showSidebar"),maxActiveMessages:O("message.maxActiveMessages"),timeout:O("message.timeout"),saveHistory:O("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=Ot(()=>{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]=O(`${e}.${t}`)})})},handleSettingsChange(e){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(e).forEach(([t,o])=>{Object.entries(o).forEach(([r,a])=>{const u=`${t}.${r}`,l=O(u);a!==l&&(tt(u,a)?this.showMessage("设置已更新",`${u} 已保存`):(this.showError("保存失败",`${u} 设置失败`),this.settings[t][r]=l))})})},100)},showMessage(e,t="",o="success"){this.$message[o](e,t)},showError(e,t=""){this.$message.error(e,t)},async loadStudentList(){try{this.loading.students=!0,this.studentsError=null;const e=O("server.domain"),t=O("server.classNumber"),o=O("server.provider");if(!t)throw new Error("请先设置班号");const r=o==="server"?`${e}/${t}`:t,a=await wt.loadConfig(o,r);if(!a.success)throw new Error(a.error.message);a.data&&Array.isArray(a.data.studentList)&&(this.studentData.list=a.data.studentList,this.studentData.text=a.data.studentList.join(`
|
||
`),this.lastSavedData=[...a.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=O("server.domain"),t=O("server.classNumber"),o=O("server.provider");if(!t)throw new Error("请先设置班号");const r=o==="server"?`${e}/${t}`:t,a=await wt.saveConfig(o,r,{studentList:this.studentData.list});if(!a.success)throw new Error(a.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 o=t==="up"?e-1:e+1;o>=0&&o<this.studentData.list.length&&([this.studentData.list[e],this.studentData.list[o]]=[this.studentData.list[o],this.studentData.list[e]])},setStudentNumber(e){this.studentToMove=e,this.newPosition=String(e+1),this.numberDialog=!0},applyNewPosition(){const e=parseInt(this.newPosition)-1;if(this.studentToMove!==null&&e>=0&&e<this.studentData.list.length&&e!==this.studentToMove){const t=this.studentData.list[this.studentToMove];this.studentData.list.splice(this.studentToMove,1),this.studentData.list.splice(e,0,t)}this.numberDialog=!1,this.studentToMove=null,this.newPosition=""},moveToTop(e){if(e>0){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(){Mt("font.size"),this.settings.font.size=O("font.size"),this.showMessage("字体已重置","字体大小已恢复默认值")},refreshDebugConfig(){const e={};Object.keys(this.settings).forEach(t=>{e[t]={},Object.keys(this.settings[t]).forEach(o=>{e[t][o]=O(`${t}.${o}`)})}),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 o=this.settings.font.size;e==="up"&&o<100?this.settings.font.size=o+2:e==="down"&&o>16&&(this.settings.font.size=o-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(e,t){this.showMessage("设置已更新",`${e} 已保存为 ${t}`)}}},Vi={class:"settings-page"},Ti={key:0},Di={class:"d-flex gap-2"};function Ei(e,t,o,r,a,u){const l=Zt,d=Xt,c=Yt,v=Gt,w=Wt,y=$t,N=le,g=qt,E=Kt,B=Ht,L=jt,A=Vt;return V(),Z("div",Vi,[n(yn,{elevation:"1"},{prepend:s(()=>[n(U,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=_=>e.$router.push("/"))})]),default:s(()=>[n(bn,{class:"text-h6"},{default:s(()=>t[5]||(t[5]=[f("设置")])),_:1})]),_:1}),n(is,{class:"py-4"},{default:s(()=>[n(Ie,null,{default:s(()=>[n(ie,{cols:"12",md:"6"},{default:s(()=>[n(l,{border:"",loading:a.loading.server,onSaved:u.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),n(ie,{cols:"12",md:"6"},{default:s(()=>[n(d,{border:""})]),_:1}),n(ie,{cols:"12",md:"6"},{default:s(()=>[n(c,{onSaved:u.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),n(ie,{cols:"12",md:"6"},{default:s(()=>[n(v,{onSaved:u.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),n(ie,{cols:"12",md:"6"},{default:s(()=>[n(w,{onSaved:u.onSettingsSaved,border:""},null,8,["onSaved"])]),_:1}),n(ie,{cols:"12",md:"6"},{default:s(()=>[n(y,{border:""})]),_:1}),n(ie,{cols:12,md:a.settings.developer.enabled?12:6},{default:s(()=>[n(N,{border:"",title:"开发者选项",icon:"mdi-developer-board"},{default:s(()=>[n(fe,null,{default:s(()=>[n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-code-tags",class:"mr-3"})]),append:s(()=>[n(Ge,{modelValue:a.settings.developer.enabled,"onUpdate:modelValue":t[1]||(t[1]=_=>a.settings.developer.enabled=_),density:"comfortable","hide-details":"",onChange:u.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:s(()=>[n(X,null,{default:s(()=>t[6]||(t[6]=[f("启用开发者选项")])),_:1}),n(ve,null,{default:s(()=>t[7]||(t[7]=[f("启用后可以查看和修改开发者设置")])),_:1})]),_:1}),a.settings.developer.enabled?(V(),Z(he,{key:0},[n(W,{class:"my-2"}),n(Q,null,{prepend:s(()=>[n(q,{icon:"mdi-file-code",class:"mr-3"})]),append:s(()=>[n(Ge,{modelValue:a.settings.developer.showDebugConfig,"onUpdate:modelValue":t[2]||(t[2]=_=>a.settings.developer.showDebugConfig=_),density:"comfortable","hide-details":""},null,8,["modelValue"])]),default:s(()=>[n(X,null,{default:s(()=>t[8]||(t[8]=[f("显示调试配置")])),_:1}),n(ve,null,{default:s(()=>t[9]||(t[9]=[f("显示当前的调试配置信息")])),_:1})]),_:1}),n(Lt,null,{default:s(()=>[a.settings.developer.showDebugConfig?(V(),Z("div",Ti,[n(W,{class:"my-2"}),n(Ct,{modelValue:a.debugConfig,"onUpdate:modelValue":t[3]||(t[3]=_=>a.debugConfig=_),label:"调试配置",readonly:"",rows:"10",class:"font-monospace mt-2"},null,8,["modelValue"]),ae("div",Di,[n(U,{"prepend-icon":"mdi-refresh",variant:"text",onClick:u.refreshDebugConfig},{default:s(()=>t[10]||(t[10]=[f(" 刷新 ")])),_:1},8,["onClick"]),n(U,{"prepend-icon":"mdi-content-copy",variant:"text",onClick:u.copyDebugConfig},{default:s(()=>t[11]||(t[11]=[f(" 复制 ")])),_:1},8,["onClick"])])])):re("",!0)]),_:1})],64)):re("",!0)]),_:1})]),_:1})]),_:1},8,["md"]),n(ie,{cols:"12"},{default:s(()=>[n(g,{modelValue:a.studentData,"onUpdate:modelValue":[t[4]||(t[4]=_=>a.studentData=_),u.handleStudentDataChange],loading:a.loading.students,error:a.studentsError,"is-mobile":r.isMobile,"unsaved-changes":a.hasUnsavedChanges,onSave:u.saveStudents,onReload:u.loadStudentList},null,8,["modelValue","loading","error","is-mobile","unsaved-changes","onSave","onReload","onUpdate:modelValue"])]),_:1}),n(ie,{cols:"12"},{default:s(()=>[n(E,{border:""})]),_:1}),n(ie,{cols:"12"},{default:s(()=>[n(B)]),_:1}),a.settings.developer.enabled?(V(),H(ie,{key:0,cols:"12"},{default:s(()=>[n(_e,{border:""},{default:s(()=>[n(Ee,{class:"d-flex align-center"},{default:s(()=>[n(q,{icon:"mdi-cog-outline",class:"mr-2"}),t[12]||(t[12]=f(" 所有设置 "))]),_:1}),n(ss,null,{default:s(()=>t[13]||(t[13]=[f(" 浏览和修改所有可用设置 ")])),_:1}),n(xe,null,{default:s(()=>[n(L,{onUpdate:u.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})]),_:1})):re("",!0)]),_:1})]),_:1}),n(A,{ref:"messageLog"},null,512)])}const Bi=de(Ci,[["render",Ei]]);export{Bi as default};
|