mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2025-07-02 00:59:23 +00:00
8 lines
116 KiB
JavaScript
8 lines
116 KiB
JavaScript
import{p as Ge,_ as at,a as ot,V as zt}from"./index-ElzFk_yh.js";import{_ as H,C as b,D as h,E as s,k as t,Y as F,b3 as oe,T as q,J as u,Z as T,V as y,X as K,b4 as Ye,b5 as rt,av as pe,S as z,G as x,b6 as Kt,at as lt,aD as ut,r as Oe,ae as Qt,W as g,au as I,ao as Y,ap as L,aw as U,ax as J,a2 as ye,U as me,F as M,H as we,I as _e,b7 as dt,Q as f,R as Re,b8 as Wt,a0 as Ue,as as ct,b9 as Te,aB as wt,az as je,g as ht,p as pt,a8 as qt,ba as Jt,bb as Gt,aA as Ze,bc as Yt,b1 as He,l as Be,aG as Zt,$ as Xt,j as $t,n as en,aO as tn,z as nn,a_ as Ae,bd as Ve,ar as be,b2 as Xe,be as sn,O as an,B as on}from"./index-DpRopL3V.js";import{V as xe}from"./VChip-BTSKEMFl.js";import{a as De,V as ke}from"./VRow-CnmWQtpQ.js";import{b as rn,c as ln,V as un,a as dn}from"./VAppBarTitle-BZkfRM3W.js";import{V as mt}from"./VSwitch-ClUOf-t2.js";import{b as ft,V as cn}from"./VDataTable-DBs8j_KF.js";import{V as G,f as wn,g as hn}from"./VTextField-BILbZBCf.js";import{V as gt}from"./VMenu-CTAx5lBf.js";import{V as ce,a as $e}from"./VAlert-BS51CJh5.js";import{V as pn}from"./VTextarea-DOaAGxnK.js";import{V as mn,a as fn,b as gn,c as vn}from"./VExpansionPanels-BEW1skbM.js";import{b as bn,a as ee}from"./VTabsWindowItem-BJ_hq1yy.js";import{V as yn}from"./VContainer-SydirbBl.js";import"./VCheckboxBtn-BMVogzxc.js";const xn={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function kn(n,e,a,d,i,o){return h(),b(z,{elevation:"2",class:"settings-card rounded-lg"},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:a.icon,size:"large",class:"mr-2"},null,8,["icon"])]),default:s(()=>[t(q,{class:"text-h6"},{default:s(()=>[u(T(a.title),1)]),_:1})]),_:1}),t(K,null,{default:s(()=>[a.loading?(h(),b(rt,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):F("",!0),Ye(n.$slots,"default",{},void 0,!0)]),_:3}),n.$slots.actions?(h(),b(pe,{key:0,class:"pa-4"},{default:s(()=>[Ye(n.$slots,"actions",{},void 0,!0)]),_:3})):F("",!0)]),_:3})}const j=H(xn,[["render",kn],["__scopeId","data-v-3e8918ff"]]);var _n=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sn(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var vt={exports:{}};(function(n,e){(function(a,d){n.exports=d()})(typeof self<"u"?self:_n,()=>(()=>{var a={3146:(r,w,c)=>{for(var V=c(3491),k=typeof window>"u"?c.g:window,C=["moz","webkit"],O="AnimationFrame",N=k["request"+O],Q=k["cancel"+O]||k["cancelRequest"+O],te=0;!N&&te<C.length;te++)N=k[C[te]+"Request"+O],Q=k[C[te]+"Cancel"+O]||k[C[te]+"CancelRequest"+O];if(!N||!Q){var le=0,se=0,Z=[],ue=1e3/60;N=function(W){if(Z.length===0){var X=V(),A=Math.max(0,ue-(X-le));le=A+X,setTimeout(function(){var de=Z.slice(0);Z.length=0;for(var ie=0;ie<de.length;ie++)if(!de[ie].cancelled)try{de[ie].callback(le)}catch(ae){setTimeout(function(){throw ae},0)}},Math.round(A))}return Z.push({handle:++se,callback:W,cancelled:!1}),se},Q=function(W){for(var X=0;X<Z.length;X++)Z[X].handle===W&&(Z[X].cancelled=!0)}}r.exports=function(W){return N.call(k,W)},r.exports.cancel=function(){Q.apply(k,arguments)},r.exports.polyfill=function(W){W||(W=k),W.requestAnimationFrame=N,W.cancelAnimationFrame=Q}},3491:function(r){(function(){var w,c,V,k,C,O;typeof performance<"u"&&performance!==null&&performance.now?r.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(r.exports=function(){return(w()-C)/1e6},c=process.hrtime,k=(w=function(){var N;return 1e9*(N=c())[0]+N[1]})(),O=1e9*process.uptime(),C=k-O):Date.now?(r.exports=function(){return Date.now()-V},V=Date.now()):(r.exports=function(){return new Date().getTime()-V},V=new Date().getTime())}).call(this)}},d={};function i(r){var w=d[r];if(w!==void 0)return w.exports;var c=d[r]={exports:{}};return a[r].call(c.exports,c,c.exports,i),c.exports}i.n=r=>{var w=r&&r.__esModule?()=>r.default:()=>r;return i.d(w,{a:w}),w},i.d=(r,w)=>{for(var c in w)i.o(w,c)&&!i.o(r,c)&&Object.defineProperty(r,c,{enumerable:!0,get:w[c]})},i.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),i.o=(r,w)=>Object.prototype.hasOwnProperty.call(r,w);var o={};return(()=>{i.d(o,{default:()=>Ft});var r=i(3146),w=i.n(r);const c=function(_){return new RegExp(/<[a-z][\s\S]*>/i).test(_)},V=function(_,p){return Math.floor(Math.random()*(p-_+1))+_};var k="TYPE_CHARACTER",C="REMOVE_CHARACTER",O="REMOVE_ALL",N="REMOVE_LAST_VISIBLE_NODE",Q="PAUSE_FOR",te="CALL_FUNCTION",le="ADD_HTML_TAG_ELEMENT",se="CHANGE_DELETE_SPEED",Z="CHANGE_DELAY",ue="CHANGE_CURSOR",W="PASTE_STRING",X="HTML_TAG";function A(_){return A=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},A(_)}function de(_,p){var S=Object.keys(_);if(Object.getOwnPropertySymbols){var v=Object.getOwnPropertySymbols(_);p&&(v=v.filter(function(ne){return Object.getOwnPropertyDescriptor(_,ne).enumerable})),S.push.apply(S,v)}return S}function ie(_){for(var p=1;p<arguments.length;p++){var S=arguments[p]!=null?arguments[p]:{};p%2?de(Object(S),!0).forEach(function(v){E(_,v,S[v])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_,Object.getOwnPropertyDescriptors(S)):de(Object(S)).forEach(function(v){Object.defineProperty(_,v,Object.getOwnPropertyDescriptor(S,v))})}return _}function ae(_){return function(p){if(Array.isArray(p))return Pe(p)}(_)||function(p){if(typeof Symbol<"u"&&p[Symbol.iterator]!=null||p["@@iterator"]!=null)return Array.from(p)}(_)||function(p,S){if(p){if(typeof p=="string")return Pe(p,S);var v={}.toString.call(p).slice(8,-1);return v==="Object"&&p.constructor&&(v=p.constructor.name),v==="Map"||v==="Set"?Array.from(p):v==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(v)?Pe(p,S):void 0}}(_)||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 Pe(_,p){(p==null||p>_.length)&&(p=_.length);for(var S=0,v=Array(p);S<p;S++)v[S]=_[S];return v}function Lt(_,p){for(var S=0;S<p.length;S++){var v=p[S];v.enumerable=v.enumerable||!1,v.configurable=!0,"value"in v&&(v.writable=!0),Object.defineProperty(_,ze(v.key),v)}}function E(_,p,S){return(p=ze(p))in _?Object.defineProperty(_,p,{value:S,enumerable:!0,configurable:!0,writable:!0}):_[p]=S,_}function ze(_){var p=function(S){if(A(S)!="object"||!S)return S;var v=S[Symbol.toPrimitive];if(v!==void 0){var ne=v.call(S,"string");if(A(ne)!="object")return ne;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(S)}(_);return A(p)=="symbol"?p:p+""}const Ft=function(){function _(v,ne){var l=this;if(function(m,D){if(!(m instanceof D))throw new TypeError("Cannot call a class as a function")}(this,_),E(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")}}),E(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}),E(this,"setupWrapperElement",function(){l.state.elements.container&&(l.state.elements.wrapper.className=l.options.wrapperClassName,l.state.elements.cursor.className=l.options.cursorClassName,l.state.elements.cursor.innerHTML=l.options.cursor,l.state.elements.container.innerHTML="",l.state.elements.container.appendChild(l.state.elements.wrapper),l.state.elements.container.appendChild(l.state.elements.cursor))}),E(this,"start",function(){return l.state.eventLoopPaused=!1,l.runEventLoop(),l}),E(this,"pause",function(){return l.state.eventLoopPaused=!0,l}),E(this,"stop",function(){return l.state.eventLoop&&((0,r.cancel)(l.state.eventLoop),l.state.eventLoop=null),l}),E(this,"pauseFor",function(m){return l.addEventToQueue(Q,{ms:m}),l}),E(this,"typeOutAllStrings",function(){return typeof l.options.strings=="string"?(l.typeString(l.options.strings).pauseFor(l.options.pauseFor),l):(l.options.strings.forEach(function(m){l.typeString(m).pauseFor(l.options.pauseFor).deleteAll(l.options.deleteSpeed)}),l)}),E(this,"typeString",function(m){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(c(m))return l.typeOutHTMLString(m,D);if(m){var B=(l.options||{}).stringSplitter,R=typeof B=="function"?B(m):m.split("");l.typeCharacters(R,D)}return l}),E(this,"pasteString",function(m){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return c(m)?l.typeOutHTMLString(m,D,!0):(m&&l.addEventToQueue(W,{character:m,node:D}),l)}),E(this,"typeOutHTMLString",function(m){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,B=arguments.length>2?arguments[2]:void 0,R=function(fe){var ge=document.createElement("div");return ge.innerHTML=fe,ge.childNodes}(m);if(R.length>0)for(var P=0;P<R.length;P++){var $=R[P],he=$.innerHTML;$&&$.nodeType!==3?($.innerHTML="",l.addEventToQueue(le,{node:$,parentNode:D}),B?l.pasteString(he,$):l.typeString(he,$)):$.textContent&&(B?l.pasteString($.textContent,D):l.typeString($.textContent,D))}return l}),E(this,"deleteAll",function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"natural";return l.addEventToQueue(O,{speed:m}),l}),E(this,"changeDeleteSpeed",function(m){if(!m)throw new Error("Must provide new delete speed");return l.addEventToQueue(se,{speed:m}),l}),E(this,"changeDelay",function(m){if(!m)throw new Error("Must provide new delay");return l.addEventToQueue(Z,{delay:m}),l}),E(this,"changeCursor",function(m){if(!m)throw new Error("Must provide new cursor");return l.addEventToQueue(ue,{cursor:m}),l}),E(this,"deleteChars",function(m){if(!m)throw new Error("Must provide amount of characters to delete");for(var D=0;D<m;D++)l.addEventToQueue(C);return l}),E(this,"callFunction",function(m,D){if(!m||typeof m!="function")throw new Error("Callback must be a function");return l.addEventToQueue(te,{cb:m,thisArg:D}),l}),E(this,"typeCharacters",function(m){var D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!m||!Array.isArray(m))throw new Error("Characters must be an array");return m.forEach(function(B){l.addEventToQueue(k,{character:B,node:D})}),l}),E(this,"removeCharacters",function(m){if(!m||!Array.isArray(m))throw new Error("Characters must be an array");return m.forEach(function(){l.addEventToQueue(C)}),l}),E(this,"addEventToQueue",function(m,D){var B=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return l.addEventToStateProperty(m,D,B,"eventQueue")}),E(this,"addReverseCalledEvent",function(m,D){var B=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return l.options.loop?l.addEventToStateProperty(m,D,B,"reverseCalledEvents"):l}),E(this,"addEventToStateProperty",function(m,D){var B=arguments.length>2&&arguments[2]!==void 0&&arguments[2],R=arguments.length>3?arguments[3]:void 0,P={eventName:m,eventArgs:D||{}};return l.state[R]=B?[P].concat(ae(l.state[R])):[].concat(ae(l.state[R]),[P]),l}),E(this,"runEventLoop",function(){l.state.lastFrameTime||(l.state.lastFrameTime=Date.now());var m=Date.now(),D=m-l.state.lastFrameTime;if(!l.state.eventQueue.length){if(!l.options.loop)return;l.state.eventQueue=ae(l.state.calledEvents),l.state.calledEvents=[],l.options=ie({},l.state.initialOptions)}if(l.state.eventLoop=w()(l.runEventLoop),!l.state.eventLoopPaused){if(l.state.pauseUntil){if(m<l.state.pauseUntil)return;l.state.pauseUntil=null}var B,R=ae(l.state.eventQueue),P=R.shift();if(!(D<=(B=P.eventName===N||P.eventName===C?l.options.deleteSpeed==="natural"?V(40,80):l.options.deleteSpeed:l.options.delay==="natural"?V(120,160):l.options.delay))){var $=P.eventName,he=P.eventArgs;switch(l.logInDevMode({currentEvent:P,state:l.state,delay:B}),$){case W:case k:var fe=he.character,ge=he.node,Qe=document.createTextNode(fe),ve=Qe;l.options.onCreateTextNode&&typeof l.options.onCreateTextNode=="function"&&(ve=l.options.onCreateTextNode(fe,Qe)),ve&&(ge?ge.appendChild(ve):l.state.elements.wrapper.appendChild(ve)),l.state.visibleNodes=[].concat(ae(l.state.visibleNodes),[{type:"TEXT_NODE",character:fe,node:ve}]);break;case C:R.unshift({eventName:N,eventArgs:{removingCharacterNode:!0}});break;case Q:var At=P.eventArgs.ms;l.state.pauseUntil=Date.now()+parseInt(At);break;case te:var We=P.eventArgs,Mt=We.cb,Ot=We.thisArg;Mt.call(Ot,{elements:l.state.elements});break;case le:var qe=P.eventArgs,Ie=qe.node,Ne=qe.parentNode;Ne?Ne.appendChild(Ie):l.state.elements.wrapper.appendChild(Ie),l.state.visibleNodes=[].concat(ae(l.state.visibleNodes),[{type:X,node:Ie,parentNode:Ne||l.state.elements.wrapper}]);break;case O:var Ut=l.state.visibleNodes,Le=he.speed,Se=[];Le&&Se.push({eventName:se,eventArgs:{speed:Le,temp:!0}});for(var Je=0,jt=Ut.length;Je<jt;Je++)Se.push({eventName:N,eventArgs:{removingCharacterNode:!1}});Le&&Se.push({eventName:se,eventArgs:{speed:l.options.deleteSpeed,temp:!0}}),R.unshift.apply(R,Se);break;case N:var Ht=P.eventArgs.removingCharacterNode;if(l.state.visibleNodes.length){var Fe=l.state.visibleNodes.pop(),Bt=Fe.type,Ce=Fe.node,Rt=Fe.character;l.options.onRemoveNode&&typeof l.options.onRemoveNode=="function"&&l.options.onRemoveNode({node:Ce,character:Rt}),Ce&&Ce.parentNode.removeChild(Ce),Bt===X&&Ht&&R.unshift({eventName:N,eventArgs:{}})}break;case se:l.options.deleteSpeed=P.eventArgs.speed;break;case Z:l.options.delay=P.eventArgs.delay;break;case ue:l.options.cursor=P.eventArgs.cursor,l.state.elements.cursor.innerHTML=P.eventArgs.cursor}l.options.loop&&(P.eventName===N||P.eventArgs&&P.eventArgs.temp||(l.state.calledEvents=[].concat(ae(l.state.calledEvents),[P]))),l.state.eventQueue=R,l.state.lastFrameTime=m}}}),v)if(typeof v=="string"){var Ke=document.querySelector(v);if(!Ke)throw new Error("Could not find container element");this.state.elements.container=Ke}else this.state.elements.container=v;ne&&(this.options=ie(ie({},this.options),ne)),this.state.initialOptions=ie({},this.options),this.init()}var p,S;return p=_,(S=[{key:"init",value:function(){var v,ne;this.setupWrapperElement(),this.addEventToQueue(ue,{cursor:this.options.cursor},!0),this.addEventToQueue(O,null,!0),!window||window.___TYPEWRITER_JS_STYLES_ADDED___||this.options.skipAddStyles||(v=".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}}",(ne=document.createElement("style")).appendChild(document.createTextNode(v)),document.head.appendChild(ne),window.___TYPEWRITER_JS_STYLES_ADDED___=!0),this.options.autoStart===!0&&this.options.strings&&this.typeOutAllStrings().start()}},{key:"logInDevMode",value:function(v){this.options.devMode&&console.log(v)}}])&&Lt(p.prototype,S),Object.defineProperty(p,"prototype",{writable:!1}),_}()})(),o.default})())})(vt);var Cn=vt.exports;const et=Sn(Cn),Vn=[{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"}],tt={quotes:Vn},nt={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},st={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},Tn={name:"EchoChamberCard",components:{SettingsCard:j},data:()=>({typewriter:null,sourceWriter:null,currentQuote:nt,hasClicked:!1}),mounted(){this.initTypewriters()},methods:{initTypewriters(){this.typewriter=new et(this.$refs.typewriter,st.main),this.sourceWriter=new et(this.$refs.sourceWriter,st.source),this.typeQuote(nt)},typeQuote(n){this.typewriter.deleteAll(30).typeString(n.text).start(),n.author&&this.sourceWriter.deleteAll(20).typeString(n.author).start()},async handleClick(){this.hasClicked||(this.hasClicked=!0),await this.copyToClipboard(),this.currentQuote=this.getRandomQuote(),this.typeQuote(this.currentQuote)},getRandomQuote(){return tt.quotes[Math.floor(Math.random()*tt.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:n,author:e,contributor:a,link:d}=this.currentQuote,i=[n,e&&`作者:${e}`,a&&`贡献者:${a}`,(d||a)&&`来源:${d||`https://github.com/${a}`}`].filter(Boolean);try{await navigator.clipboard.writeText(i.join(`
|
||
`))}catch(o){console.error("复制失败:",o)}}},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(n=>n==null?void 0:n.stop())}},Dn={ref:"typewriter",class:"typewriter-text"},En={ref:"sourceWriter",class:"source-text"};function Pn(n,e,a,d,i,o){const r=j;return h(),b(r,{border:"",title:"回声洞",icon:"mdi-thought-bubble",onClick:o.handleClick},{default:s(()=>[t(K,null,{default:s(()=>[x("div",Dn,null,512),x("div",En,null,512)]),_:1}),t(Kt,{name:"fade"},{default:s(()=>{var w;return[(w=n.currentQuote)!=null&&w.contributor?(h(),b(xe,{key:0,class:"contributor"},{default:s(()=>[t(lt,{start:""},{default:s(()=>[t(ut,{src:`https://github.com/${n.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),u(" "+T(n.currentQuote.contributor),1)]),_:1})):F("",!0)]}),_:1})]),_:1},8,["onClick"])}const bt=H(Tn,[["render",Pn],["__scopeId","data-v-5c15976c"]]),In="Classworks",Nn="module",Ln="0.0.0",Fn={dev:"vite --host",build:"vite build",preview:"vite preview",lint:"eslint . --fix"},An={"@mdi/font":"7.4.47","@microsoft/clarity":"^1.0.0",axios:"^1.8.4",idb:"^8.0.2","js-base64":"^3.7.7","js-yaml":"^4.1.0","pinyin-pro":"^3.26.0","ratelimit-header-parser":"^0.1.0","roboto-fontface":"*","typewriter-effect":"^2.21.0",uuid:"^9.0.1",vue:"^3.4.31",vuetify:"^3.8.0"},Mn={"@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"},it={name:In,private:!0,type:Nn,version:Ln,scripts:Fn,dependencies:An,devDependencies:Mn},On={name:"AboutCard",setup(){const n=Oe([]),e=Oe(!1),a=()=>{try{const i={...it.dependencies||{},...it.devDependencies||{}},o=Object.entries(i).map(([r,w])=>({name:r,version:w.replace(/[\^~]/g,""),description:d(r)}));n.value=o}catch(i){console.error("加载依赖信息失败:",i),n.value=[]}},d=i=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[i]||"";return Qt(()=>{a()}),{Dependencies:n,showDeps:e}}},Un={class:"d-flex flex-column align-start"},jn={class:"d-flex gap-2 flex-wrap mb-6"},Hn={class:"text-caption text-medium-emphasis"};function Bn(n,e,a,d,i,o){return h(),b(z,{border:""},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:"mdi-information",size:"large",class:"mr-2"})]),default:s(()=>[t(q,{class:"text-h6"},{default:s(()=>e[3]||(e[3]=[u("关于")])),_:1,__:[3]})]),_:1}),t(K,null,{default:s(()=>[t(De,null,{default:s(()=>[t(ke,{cols:"12",md:"8",class:"mx-auto"},{default:s(()=>[x("div",Un,[t(lt,{size:"120",class:"mb-4"},{default:s(()=>[t(ut,{src:"https://github.com/SunWuyuan.png",alt:"Sunwuyuan"})]),_:1}),e[20]||(e[20]=x("h2",{class:"text-h5 mb-2"},"Classworks",-1)),e[21]||(e[21]=x("p",{class:"text-body-1 mb-4"},"适用于班级大屏的作业板小工具",-1)),x("div",jn,[t(g,{color:"red",variant:"tonal",href:"https://github.com/ClassworksDev/Classworks/issues",target:"_blank","prepend-icon":"mdi-bug"},{default:s(()=>e[4]||(e[4]=[u(" 报告问题 ")])),_:1,__:[4]}),t(g,{color:"primary",variant:"tonal",href:"https://qm.qq.com/q/qNBX4ZZVeg",target:"_blank","prepend-icon":"mdi-qqchat"},{default:s(()=>e[5]||(e[5]=[u(" QQ 群 ")])),_:1,__:[5]}),t(g,{variant:"text",href:"https://github.com/ClassworksDev/Classworks",target:"_blank","prepend-icon":"mdi-github"},{default:s(()=>e[6]||(e[6]=[u(" 前端 ")])),_:1,__:[6]}),t(g,{variant:"text",href:"https://github.com/ClassworksDev/ClassworksServer",target:"_blank","prepend-icon":"mdi-github"},{default:s(()=>e[7]||(e[7]=[u(" 后端 ")])),_:1,__:[7]})]),t(I,{class:"mb-4 w-100"}),e[22]||(e[22]=x("h3",{class:"text-h6 mb-2"},"备注与致谢",-1)),t(Y,{class:"mb-4 bg-transparent"},{default:s(()=>[t(L,{href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>e[8]||(e[8]=[u(" 本项目受到 HomeworkBoard 的启发而开发 ")])),_:1,__:[8]}),t(J,null,{default:s(()=>e[9]||(e[9]=[u(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ")])),_:1,__:[9]})]),_:1}),t(L,{href:"https://hlyun.org",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>e[10]||(e[10]=[u(" Classworks 由"),x("strong",null,"厚浪云",-1),u("提供 ")])),_:1,__:[10]}),t(J,null,{default:s(()=>e[11]||(e[11]=[u(" 长江后浪推前浪 浮事新人换旧人 ")])),_:1,__:[11]})]),_:1}),t(L,{href:"https://zerocat.houlangs.com",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>e[12]||(e[12]=[u(" 感谢 ZeroCat 社区的开发者们 ")])),_:1,__:[12]}),t(J,null,{default:s(()=>e[13]||(e[13]=[u(" 新一代,开源,编程社区 ")])),_:1,__:[13]})]),_:1}),t(I,{class:"ma-1"}),t(L,{href:"https://github.com/HUSX100/IslandCaller",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>e[14]||(e[14]=[u(" 本项目与 IslandCaller 没有从属关系 ")])),_:1,__:[14]}),t(J,null,{default:s(()=>e[15]||(e[15]=[u(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ")])),_:1,__:[15]})]),_:1}),t(L,{href:"https://classisland.tech",target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>e[16]||(e[16]=[u(" 本项目与 ClassIsland 没有从属关系 ")])),_:1,__:[16]}),t(J,null,{default:s(()=>e[17]||(e[17]=[u(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ")])),_:1,__:[17]})]),_:1})]),_:1}),t(g,{variant:"text",class:"mb-4","prepend-icon":"mdi-package-variant",onClick:e[0]||(e[0]=r=>d.showDeps=!0)},{default:s(()=>e[18]||(e[18]=[u(" 查看使用的第三方库 ")])),_:1,__:[18]}),t(ye,{modelValue:d.showDeps,"onUpdate:modelValue":e[2]||(e[2]=r=>d.showDeps=r),transition:"dialog-bottom-transition",fullscreen:""},{default:s(()=>[t(z,null,{default:s(()=>[t(rn,null,{default:s(()=>[t(g,{icon:"mdi-close",onClick:e[1]||(e[1]=r=>d.showDeps=!1)}),t(ln,null,{default:s(()=>e[19]||(e[19]=[u("使用的第三方库")])),_:1,__:[19]}),t(me)]),_:1}),t(K,null,{default:s(()=>[t(Y,null,{default:s(()=>[(h(!0),M(we,null,_e(d.Dependencies,r=>(h(),b(L,{key:r.name,href:"https://www.npmjs.com/package/"+r.name,target:"_blank","append-icon":"mdi-link"},{default:s(()=>[t(U,null,{default:s(()=>[u(T(r.name),1)]),_:2},1024),t(J,null,{default:s(()=>[u(" v"+T(r.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),x("p",Hn," Copyright © "+T(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const yt=H(On,[["render",Bn]]),Rn={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":{classworkscloud:"Classworks云端存储","kv-local":"KV本地存储","kv-server":"KV远程服务器"}},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 n=this.settingKey.split(".");return n[n.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=Wt(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=f(this.settingKey),this.type==="string"){if(this.isFontFamily)this.selectOptions=this.fontFamilies,this.hasOptions=!0;else if(this.settingKey in this.displayValueMappings){const n=this.displayValueMappings[this.settingKey];this.selectOptions=Object.entries(n).map(([e,a])=>({title:a,value:e})),this.hasOptions=!0}else if(this.definition.validate){const e=this.definition.validate.toString().match(/\[(.*?)\]/);if(e){const d=e[1].split(",").map(i=>{const o=i.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(o)||o,value:o}});d.length>0&&(this.selectOptions=d,this.hasOptions=!0)}}}if(this.type==="number"&&this.definition.validate){const n=this.definition.validate.toString(),e=n.match(/value\s*>=\s*(\d+)/);e&&(this.minValue=Number(e[1]));const a=n.match(/value\s*<=\s*(\d+)/);a&&(this.maxValue=Number(a[1]));const d=this.maxValue-this.minValue;d>100?this.stepValue=10:d>20?this.stepValue=5:d>10?this.stepValue=2:this.stepValue=1}},getDisplayValue(n){return this.settingKey in this.displayValueMappings&&this.displayValueMappings[this.settingKey][n]||n},updateSetting(n){let e=n;this.type==="boolean"?e=!!n:this.type==="number"&&(e=Number(n),e<this.minValue&&(e=this.minValue),e>this.maxValue&&(e=this.maxValue)),Re(this.settingKey,e)?this.$emit("update",this.settingKey,e):(this.localValue=f(this.settingKey),this.$emit("error",this.settingKey))},adjustValue(n){if(this.type!=="number")return;const e=this.localValue+n;e>=this.minValue&&e<=this.maxValue&&(this.localValue=e,this.updateSetting(e))},copySettingId(){navigator.clipboard.writeText(this.settingKey).then(()=>{this.showSnackbarMessage("设置ID已复制到剪贴板")}).catch(n=>{console.error("复制失败:",n)})},copySettingValue(){let n="";typeof this.localValue=="object"&&this.localValue!==null?n=JSON.stringify(this.localValue):n=String(this.localValue),navigator.clipboard.writeText(n).then(()=>{this.showSnackbarMessage("设置值已复制到剪贴板")}).catch(e=>{console.error("复制失败:",e)})},resetToDefault(){this.definition&&(dt(this.settingKey),this.localValue=f(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(n){this.snackbarText=n,this.showSnackbar=!0}}},zn={class:"text-caption text-grey-darken-1"},Kn={class:"d-flex flex-column flex-sm-row align-center"},Qn={key:0,class:"me-2"},Wn={key:2,class:"d-flex align-center"},qn={key:0,class:"px-4 pb-2 pt-0"};function Jn(n,e,a,d,i,o){return h(),M(we,null,[t(L,{class:"setting-item",disabled:a.disabled},{prepend:s(()=>[t(y,{icon:o.settingIcon},null,8,["icon"])]),append:s(()=>[x("div",Kn,[i.type!=="string"||i.hasOptions?(h(),M("div",Qn,[i.type==="boolean"?(h(),b(mt,{key:0,modelValue:i.localValue,"onUpdate:modelValue":[e[0]||(e[0]=r=>i.localValue=r),o.updateSetting],density:"comfortable","hide-details":"",disabled:a.disabled},null,8,["modelValue","disabled","onUpdate:modelValue"])):i.type==="string"&&i.hasOptions?(h(),b(ft,{key:1,modelValue:i.localValue,"onUpdate:modelValue":[e[1]||(e[1]=r=>i.localValue=r),o.updateSetting],items:i.selectOptions,density:"compact","hide-details":"",disabled:a.disabled,class:"setting-select",variant:"outlined","bg-color":"surface","item-title":"title","item-value":"value"},null,8,["modelValue","items","disabled","onUpdate:modelValue"])):i.type==="number"?(h(),M("div",Wn,[t(g,{icon:"mdi-minus",size:"small",variant:"text",disabled:a.disabled||i.localValue<=i.minValue,onClick:e[2]||(e[2]=r=>o.adjustValue(-i.stepValue))},null,8,["disabled"]),t(G,{modelValue:i.localValue,"onUpdate:modelValue":[e[3]||(e[3]=r=>i.localValue=r),o.updateSetting],modelModifiers:{number:!0},type:"number",density:"compact","hide-details":"",min:i.minValue,max:i.maxValue,step:i.stepValue,disabled:a.disabled,class:"mx-2 setting-number-field",style:{width:"80px"},variant:"outlined","bg-color":"surface"},null,8,["modelValue","min","max","step","disabled","onUpdate:modelValue"]),t(g,{icon:"mdi-plus",size:"small",variant:"text",disabled:a.disabled||i.localValue>=i.maxValue,onClick:e[4]||(e[4]=r=>o.adjustValue(i.stepValue))},null,8,["disabled"])])):F("",!0)])):F("",!0),t(gt,{location:"bottom"},{activator:s(({props:r})=>[t(g,Ue({icon:"mdi-dots-vertical",size:"small",variant:"text"},r,{class:"ml-2",disabled:a.disabled}),null,16,["disabled"])]),default:s(()=>[t(Y,{density:"compact"},{default:s(()=>[t(L,{onClick:o.copySettingId},{prepend:s(()=>[t(y,{icon:"mdi-key",size:"small"})]),default:s(()=>[t(U,null,{default:s(()=>e[7]||(e[7]=[u("复制设置ID")])),_:1,__:[7]})]),_:1},8,["onClick"]),t(L,{onClick:o.copySettingValue},{prepend:s(()=>[t(y,{icon:"mdi-content-copy",size:"small"})]),default:s(()=>[t(U,null,{default:s(()=>e[8]||(e[8]=[u("复制设置值")])),_:1,__:[8]})]),_:1},8,["onClick"]),t(I),t(L,{onClick:o.resetToDefault,disabled:o.isDefaultValue},{prepend:s(()=>[t(y,{icon:"mdi-restore",size:"small"})]),default:s(()=>[t(U,null,{default:s(()=>e[9]||(e[9]=[u("重置为默认值")])),_:1,__:[9]})]),_:1},8,["onClick","disabled"])]),_:1})]),_:1})])]),default:s(()=>[t(U,{class:"text-wrap"},{default:s(()=>[u(T(o.displayTitle),1)]),_:1}),t(J,{class:"d-flex align-center text-wrap"},{default:s(()=>[x("span",zn,T(a.settingKey),1)]),_:1})]),_:1},8,["disabled"]),i.type==="string"&&!i.hasOptions?(h(),M("div",qn,[t(G,{modelValue:i.localValue,"onUpdate:modelValue":[e[5]||(e[5]=r=>i.localValue=r),o.updateSetting],density:"compact","hide-details":"",disabled:a.disabled,class:"setting-text-field mt-1",variant:"outlined","bg-color":"surface"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):F("",!0),t(ct,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=r=>i.showSnackbar=r),timeout:2e3,color:"success",location:"top"},{default:s(()=>[u(T(i.snackbarText),1)]),_:1},8,["modelValue"])],64)}const re=H(Rn,[["render",Jn],["__scopeId","data-v-c47b37f3"]]),Gn={name:"SettingsExplorer",components:{SettingItem:re},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return f("developer.enabled")},allSettings(){var e;const n=[];for(const[a,d]of Object.entries(je))this.searchQuery&&!a.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((e=d.description)!=null&&e.toLowerCase().includes(this.searchQuery.toLowerCase()))||n.push({key:a,...d});return n},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=wt(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=Te()},onSettingUpdate(n,e){this.$emit("update",n,e),this.updateCurrentSettings()},onSettingError(n){this.$emit("error",n)},copySettingsToClipboard(){navigator.clipboard.writeText(JSON.stringify(this.currentSettings)).then(()=>{this.$emit("message",{type:"success",text:"设置已复制到剪贴板"})}).catch(n=>{console.error("复制到剪贴板失败:",n),this.$emit("message",{type:"error",text:"复制到剪贴板失败"})})}}},Yn={class:"settings-explorer"},Zn={class:"settings-json"};function Xn(n,e,a,d,i,o){const r=re;return h(),M("div",Yn,[x("div",null,[t(G,{modelValue:i.searchQuery,"onUpdate:modelValue":e[0]||(e[0]=w=>i.searchQuery=w),label:"搜索设置","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"comfortable",class:"mb-4"},null,8,["modelValue"]),t(Y,null,{default:s(()=>[(h(!0),M(we,null,_e(o.allSettings,w=>(h(),M("div",{key:w.key},[(h(),b(r,{key:w.key,"setting-key":w.key,disabled:w.requireDeveloper&&!o.isDeveloperMode,onUpdate:o.onSettingUpdate,onError:o.onSettingError},null,8,["setting-key","disabled","onUpdate","onError"])),t(I,{class:"my-2"})]))),128))]),_:1}),t(z,{border:""},{default:s(()=>[t(q,{class:"text-subtitle-1"},{default:s(()=>e[1]||(e[1]=[u("当前配置")])),_:1,__:[1]}),t(K,null,{default:s(()=>[x("pre",Zn,T(o.formattedSettings),1)]),_:1}),t(pe,null,{default:s(()=>[t(me),t(g,{onClick:o.copySettingsToClipboard},{default:s(()=>[e[3]||(e[3]=u(" 复制到剪贴板 ")),t(y,{right:""},{default:s(()=>e[2]||(e[2]=[u("mdi-content-copy")])),_:1,__:[2]})]),_:1,__:[3]},8,["onClick"])]),_:1})]),_:1})])])}const xt=H(Gn,[["render",Xn],["__scopeId","data-v-da09fd0e"]]),$n={};function es(n,e,a,d,i,o){const r=re,w=j;return h(),b(w,{title:"编辑设置",icon:"mdi-cog"},{default:s(()=>[t(Y,null,{default:s(()=>[t(r,{"setting-key":"randomPicker.enabled"}),t(I,{class:"my-2"}),t(r,{"setting-key":"randomPicker.mode"}),t(I,{class:"my-2"}),t(r,{"setting-key":"randomPicker.minNumber"}),t(I,{class:"my-2"}),t(r,{"setting-key":"randomPicker.maxNumber"}),t(I,{class:"my-2"}),t(r,{"setting-key":"randomPicker.defaultCount"}),t(I,{class:"my-2"}),t(r,{"setting-key":"randomPicker.animation"})]),_:1})]),_:1})}const kt=H($n,[["render",es]]),ts={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},ns={class:"warning-container"};function ss(n,e,a,d,i,o){return h(),M("div",ns,[a.show?(h(),b(xe,{key:0,color:"warning",size:"small",class:"warning-chip"},{default:s(()=>[u(T(a.message),1)]),_:1})):F("",!0)])}const _t=H(ts,[["render",ss],["__scopeId","data-v-0668f179"]]),is=pt({disabled:Boolean,modelValue:{type:Boolean,default:null},...Gt()},"VHover"),as=ht()({name:"VHover",props:is(),emits:{"update:modelValue":n=>!0},setup(n,e){let{slots:a}=e;const d=qt(n,"modelValue"),{runOpenDelay:i,runCloseDelay:o}=Jt(n,r=>!n.disabled&&(d.value=r));return()=>{var r;return(r=a.default)==null?void 0:r.call(a,{isHovering:d.value,props:{onMouseenter:i,onMouseleave:o}})}}}),os={name:"StudentListCard",components:{UnsavedWarning:_t},props:{isMobile:Boolean},data(){return{newStudentName:"",editState:{index:-1,name:""},modelValue:{list:[],text:"",advanced:!1},loading:!1,error:null,lastSavedData:null,unsavedChanges:!1}},watch:{modelValue:{handler(n){this.lastSavedData&&(this.unsavedChanges=JSON.stringify(n.list)!==JSON.stringify(this.lastSavedData)),this.modelValue.advanced||(this.modelValue.text=n.list.slice().sort((e,a)=>e.id-a.id).map(e=>e.name).join(`
|
||
`))},deep:!0}},mounted(){this.loadStudents()},methods:{async loadStudents(){var n;this.error=null;try{if(this.loading=!0,!f("server.classNumber"))throw new Error("请先设置班号");try{const a=await Ze.loadData("classworks-list-main");if(a.success!=!1&&Array.isArray(a)){this.modelValue.list=a.map((d,i)=>typeof d=="string"?{id:i+1,name:d}:{id:d.id||i+1,name:d.name||d.toString()}),this.modelValue.list.sort((d,i)=>d.id-i.id),this.modelValue.text=this.modelValue.list.map(d=>d.name).join(`
|
||
`),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1;return}}catch(a){console.warn("Failed to load student list from dedicated key, falling back to config",a)}}catch(e){console.error("加载学生列表失败:",e),this.error=e.message||"加载失败,请检查设置",(n=this.$message)==null||n.error("加载失败",this.error)}finally{this.loading=!1}},async saveStudents(){var n,e,a;try{if(!f("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.slice().sort((r,w)=>r.id-w.id).map((r,w)=>({id:w+1,name:r.name})),o=await Ze.saveData("classworks-list-main",i);if(o.success===!1)throw new Error(((n=o.error)==null?void 0:n.message)||"保存失败");this.modelValue.list=i,this.lastSavedData=JSON.parse(JSON.stringify(i)),this.unsavedChanges=!1,(e=this.$message)==null||e.success("保存成功","学生列表已更新")}catch(d){console.error("保存学生列表失败:",d),(a=this.$message)==null||a.error("保存失败",d.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced},handleTextInput(n){if(!this.modelValue.advanced)return;const e=n.split(`
|
||
`).filter(o=>o.trim()),a=new Map(this.modelValue.list.map(o=>[o.name,o.id]));let d=Math.max(0,...this.modelValue.list.map(o=>o.id));const i=e.map(o=>(o=o.trim(),a.has(o)?{id:a.get(o),name:o}:{id:++d,name:o}));this.modelValue.list=i},addStudent(){const n=this.newStudentName.trim();if(n&&!this.modelValue.list.some(e=>e.name===n)){const e=Math.max(0,...this.modelValue.list.map(a=>a.id));this.modelValue.list.push({id:e+1,name:n}),this.newStudentName=""}},startEdit(n,e){this.editState.index=n,this.editState.name=e.name},saveEdit(){if(this.editState.index!==-1){const n=this.editState.name.trim();n&&n!==this.modelValue.list[this.editState.index].name&&(this.modelValue.list[this.editState.index].name=n),this.editState.index=-1,this.editState.name=""}},removeStudent(n){n!==void 0&&this.modelValue.list.splice(n,1)},moveStudent(n,e){if(e==="top"){if(n>0){const a=this.modelValue.list[n];this.modelValue.list.splice(n,1),this.modelValue.list.unshift(a),this.modelValue.list.forEach((d,i)=>d.id=i+1)}}else{const a=e==="up"?n-1:n+1;a>=0&&a<this.modelValue.list.length&&([this.modelValue.list[n],this.modelValue.list[a]]=[this.modelValue.list[a],this.modelValue.list[n]],[this.modelValue.list[n].id,this.modelValue.list[a].id]=[this.modelValue.list[a].id,this.modelValue.list[n].id])}},handleClick(n,e){this.isMobile&&this.startEdit(n,e)},sortStudentsByPinyin(){const n=[...this.modelValue.list].sort((e,a)=>{const d=Ge(e.name,{toneType:"none"}),i=Ge(a.name,{toneType:"none"});return d.localeCompare(i)});n.forEach((e,a)=>e.id=a+1),this.modelValue.list=n}}},rs={key:0},ls=["onClick"],us={key:1,class:"pt-2"};function ds(n,e,a,d,i,o){const r=_t;return h(),b(z,{border:"",color:i.unsavedChanges?"warning-subtle":void 0,class:Be({"unsaved-changes":i.unsavedChanges})},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:"mdi-account-group",size:"large",class:"mr-2"})]),append:s(()=>[t(r,{show:i.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),t(g,{"prepend-icon":"mdi-sort-alphabetical-variant",variant:"text",class:"mr-2",onClick:o.sortStudentsByPinyin,disabled:i.modelValue.list.length===0},{default:s(()=>e[4]||(e[4]=[u(" 按姓名首字母排序 ")])),_:1,__:[4]},8,["onClick","disabled"]),t(g,{color:i.modelValue.advanced?"primary":void 0,variant:"text","prepend-icon":"mdi-code-braces",onClick:o.toggleAdvanced},{default:s(()=>[u(T(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:s(()=>[t(q,{class:"text-h6"},{default:s(()=>e[3]||(e[3]=[u("学生列表")])),_:1,__:[3]})]),_:1}),t(K,null,{default:s(()=>[i.loading?(h(),b(rt,{key:0,indeterminate:"",color:"primary",class:"mb-4"})):F("",!0),i.error?(h(),b(ce,{key:1,type:"error",variant:"tonal",closable:"",class:"mb-4"},{default:s(()=>[u(T(i.error),1)]),_:1})):F("",!0),t(Yt,null,{default:s(()=>[i.modelValue.advanced?(h(),M("div",us,[t(pn,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[2]||(e[2]=w=>i.modelValue.text=w),o.handleTextInput],label:"批量编辑学生列表",placeholder:"每行输入一个学生姓名",hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行","persistent-hint":"",variant:"outlined",rows:"10"},null,8,["modelValue","onUpdate:modelValue"])])):(h(),M("div",rs,[t(De,{class:"mb-6"},{default:s(()=>[t(ke,{cols:"12",sm:"6",md:"4"},{default:s(()=>[t(G,{modelValue:i.newStudentName,"onUpdate:modelValue":e[0]||(e[0]=w=>i.newStudentName=w),label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined","hide-details":"",class:"mb-4",onKeyup:He(o.addStudent,["enter"])},{append:s(()=>[t(g,{icon:"mdi-plus",variant:"text",color:"primary",disabled:!i.newStudentName.trim(),onClick:o.addStudent},null,8,["disabled","onClick"])]),_:1},8,["modelValue","onKeyup"])]),_:1})]),_:1}),t(De,null,{default:s(()=>[(h(!0),M(we,null,_e(i.modelValue.list,(w,c)=>(h(),b(ke,{key:c,cols:"12",sm:"6",md:"4",lg:"3"},{default:s(()=>[t(as,null,{default:s(({isHovering:V,props:k})=>[t(z,Ue({ref_for:!0},k,{elevation:a.isMobile?1:V?4:1,class:"student-card",border:""}),{default:s(()=>[t(K,{class:"d-flex align-center pa-3"},{default:s(()=>[t(gt,{location:"bottom","open-on-hover":!a.isMobile},{activator:s(({props:C})=>[t(g,Ue({variant:"tonal",size:"small",class:"mr-3 font-weight-medium"},{ref_for:!0},C),{default:s(()=>[u(T(c+1),1)]),_:2},1040)]),default:s(()=>[t(Y,{density:"compact",nav:""},{default:s(()=>[t(L,{"prepend-icon":"mdi-arrow-up-bold",disabled:c===0,onClick:C=>o.moveStudent(c,"top")},{default:s(()=>e[5]||(e[5]=[u(" 置顶 ")])),_:2,__:[5]},1032,["disabled","onClick"]),t(I),t(L,{"prepend-icon":"mdi-arrow-up",disabled:c===0,onClick:C=>o.moveStudent(c,"up")},{default:s(()=>e[6]||(e[6]=[u(" 上移 ")])),_:2,__:[6]},1032,["disabled","onClick"]),t(L,{"prepend-icon":"mdi-arrow-down",disabled:c===i.modelValue.list.length-1,onClick:C=>o.moveStudent(c,"down")},{default:s(()=>e[7]||(e[7]=[u(" 下移 ")])),_:2,__:[7]},1032,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),i.editState.index===c?(h(),b(G,{key:0,modelValue:i.editState.name,"onUpdate:modelValue":e[1]||(e[1]=C=>i.editState.name=C),density:"compact",variant:"underlined","hide-details":"",class:"flex-grow-1",autofocus:"",onKeyup:He(o.saveEdit,["enter"]),onBlur:o.saveEdit},null,8,["modelValue","onKeyup","onBlur"])):(h(),M("span",{key:1,class:"text-body-1 flex-grow-1",onClick:C=>o.handleClick(c,w)},T(w.name),9,ls)),x("div",{class:Be(["d-flex gap-1 action-buttons",{"opacity-100":V||a.isMobile}])},[t(g,{icon:"mdi-pencil",variant:"text",color:"primary",size:"small",onClick:C=>o.startEdit(c,w)},null,8,["onClick"]),t(g,{icon:"mdi-delete",variant:"text",color:"error",size:"small",onClick:C=>o.removeStudent(c)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),t(De,{class:"mt-6"},{default:s(()=>[t(ke,{cols:"12",class:"d-flex gap-2"},{default:s(()=>[t(g,{color:"primary","prepend-icon":"mdi-content-save",size:"large",loading:i.loading,disabled:i.loading,onClick:o.saveStudents},{default:s(()=>e[8]||(e[8]=[u(" 保存名单 ")])),_:1,__:[8]},8,["loading","disabled","onClick"]),t(g,{color:"error",variant:"outlined","prepend-icon":"mdi-refresh",size:"large",loading:i.loading,disabled:i.loading,onClick:o.loadStudents},{default:s(()=>e[9]||(e[9]=[u(" 重载名单 ")])),_:1,__:[9]},8,["loading","disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["color","class"])}const St=H(os,[["render",ds],["__scopeId","data-v-fe47d12d"]]),cs={name:"ThemeSettingsCard",components:{SettingsCard:j},data(){return{localTheme:f("theme.mode")}},watch:{localTheme(n){Re("theme.mode",n),this.updateTheme(n)}},setup(){return{theme:Zt()}},methods:{updateTheme(n){this.theme.global.name.value=n}}};function ws(n,e,a,d,i,o){const r=j;return h(),b(r,{title:"主题设置",icon:"mdi-palette"},{default:s(()=>[t(Y,null,{default:s(()=>[t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-theme-light-dark",class:"mr-3"})]),append:s(()=>[t(Xt,{modelValue:i.localTheme,"onUpdate:modelValue":e[0]||(e[0]=w=>i.localTheme=w),density:"comfortable",color:"primary"},{default:s(()=>[t(g,{value:"light"},{default:s(()=>[t(y,{icon:"mdi-white-balance-sunny",class:"mr-2"}),e[3]||(e[3]=u(" 明亮 "))]),_:1,__:[3]}),t(g,{value:"dark"},{default:s(()=>[t(y,{icon:"mdi-moon-waning-crescent",class:"mr-2"}),e[4]||(e[4]=u(" 暗黑 "))]),_:1,__:[4]})]),_:1},8,["modelValue"])]),default:s(()=>[t(U,null,{default:s(()=>e[1]||(e[1]=[u("主题模式")])),_:1,__:[1]}),t(J,null,{default:s(()=>e[2]||(e[2]=[u("选择明亮或暗黑主题")])),_:1,__:[2]})]),_:1})]),_:1})]),_:1})}const Ct=H(cs,[["render",ws]]),hs={name:"DisplaySettingsCard",components:{SettingsCard:j,SettingItem:re},data(){return{}}};function ps(n,e,a,d,i,o){const r=re,w=j;return h(),b(w,{title:"显示设置",icon:"mdi-monitor",border:""},{default:s(()=>[t(Y,null,{default:s(()=>[t(r,{"setting-key":"display.emptySubjectDisplay"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.dynamicSort"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.showRandomButton"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.showFullscreenButton"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.cardHoverEffect"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.enhancedTouchMode"}),t(I,{class:"my-2"}),t(r,{"setting-key":"display.showAntiScreenBurnCard"})]),_:1})]),_:1})}const Vt=H(hs,[["render",ps]]),ms={};function fs(n,e,a,d,i,o){const r=re,w=j;return h(),b(w,{title:"编辑设置",icon:"mdi-cog"},{default:s(()=>[t(Y,null,{default:s(()=>[t(r,{"setting-key":"edit.autoSave"}),t(I,{class:"my-2"}),t(r,{"setting-key":"edit.blockNonTodayAutoSave"}),t(I,{class:"my-2"}),t(r,{"setting-key":"edit.confirmNonTodaySave"}),t(I,{class:"my-2"}),t(r,{"setting-key":"edit.refreshBeforeEdit"})]),_:1})]),_:1})}const Tt=H(ms,[["render",fs]]),gs=pt({...nn(),...hn()},"VForm"),Ee=ht()({name:"VForm",props:gs(),emits:{"update:modelValue":n=>!0,submit:n=>!0},setup(n,e){let{slots:a,emit:d}=e;const i=wn(n),o=Oe();function r(c){c.preventDefault(),i.reset()}function w(c){const V=c,k=i.validate();V.then=k.then.bind(k),V.catch=k.catch.bind(k),V.finally=k.finally.bind(k),d("submit",V),V.defaultPrevented||k.then(C=>{var N;let{valid:O}=C;O&&((N=o.value)==null||N.submit())}),V.preventDefault()}return $t(()=>{var c;return x("form",{ref:o,class:Be(["v-form",n.class]),style:en(n.style),novalidate:!0,onReset:r,onSubmit:w},[(c=a.default)==null?void 0:c.call(a,i)])}),tn(i,o)}}),vs={name:"RefreshSettingsCard",components:{SettingsCard:j},data(){return{}}};function bs(n,e,a,d,i,o){const r=re,w=j;return h(),b(w,{title:"刷新设置",icon:"mdi-refresh-circle"},{default:s(()=>[t(Ee,null,{default:s(()=>[t(Y,null,{default:s(()=>[t(r,{"setting-key":"refresh.auto",title:"自动刷新"}),e[0]||(e[0]=u()),t(I,{class:"my-2"}),t(r,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1,__:[0]})]),_:1})]),_:1})}const Dt=H(vs,[["render",bs]]),ys={name:"SettingsLinkGenerator",data(){return{selectedItems:[],generatedLink:"",linkCopied:!1,search:"",headers:[{title:"",key:"data-table-select"},{title:"设置项",key:"description",sortable:!0},{title:"当前值",key:"value",sortable:!0},{title:"键名",key:"key",class:"d-none d-sm-table-cell",sortable:!0},{title:"状态",key:"isChanged",sortable:!0}]}},computed:{settingItems(){const n=Te(),e=[];for(const[a,d]of Object.entries(je)){if(d.requireDeveloper&&!n["developer.enabled"])continue;const i=n[a]!==d.default;e.push({key:a,description:d.description||a,value:n[a],icon:d.icon||"mdi-cog",isChanged:i,defaultValue:d.default})}return e.sort((a,d)=>a.key.localeCompare(d.key))},filteredItems(){if(!this.search)return this.settingItems;const n=this.search.toLowerCase();return n==="已修改"?this.settingItems.filter(e=>e.isChanged):n==="是"||n==="否"?this.settingItems.filter(e=>typeof e.value=="boolean"&&(n==="是"?e.value:!e.value)):this.settingItems.filter(e=>{const a=e.description.toLowerCase(),d=e.key.toLowerCase(),i=String(e.value).toLowerCase(),o=e.isChanged?"已修改":"默认";return a.includes(n)||d.includes(n)||i.includes(n)||o.includes(n)})},hasDisplaySettings(){return this.selectedItems.some(n=>n.startsWith("display."))},hasEditSettings(){return this.selectedItems.some(n=>n.startsWith("edit."))},hasServerSettings(){return this.selectedItems.some(n=>n.startsWith("server."))},hasChangedSettings(){const n=Te();return this.selectedItems.some(e=>{const a=je[e];return a&&n[e]!==a.default})}},methods:{handleSelectionChange(n){this.selectedItems=n.map(e=>e.key),this.generateLink()},generateLink(){const n=`${window.location.protocol}//${window.location.host}/`,e=Te(),a={};for(const d of this.selectedItems)a[d]=e[d];if(Object.keys(a).length===0){this.generatedLink=n;return}try{const d=JSON.stringify(a),o=new TextEncoder().encode(d),w={config:btoa(Array.from(o).map(C=>String.fromCharCode(C)).join(""))},V=new URLSearchParams(window.location.search).get("date");V&&(w.date=V);const k=new URLSearchParams(w).toString();this.generatedLink=`${n}?${k}`}catch(d){console.error("生成链接失败:",d),this.generatedLink="链接生成失败,请重试"}this.linkCopied=!1},async copyLink(){this.generatedLink||this.generateLink();try{await navigator.clipboard.writeText(this.generatedLink),this.linkCopied=!0,setTimeout(()=>{this.linkCopied=!1},3e3)}catch(n){console.error("复制链接失败:",n)}},resetSelection(){this.selectedItems=[],this.generatedLink="",this.linkCopied=!1},selectAll(){this.selectedItems=this.settingItems.map(n=>n.key),this.generateLink()},selectDataSourceSettings(){const n=this.settingItems.filter(e=>e.key.startsWith("server.")).map(e=>e.key);this.selectedItems=n,this.generateLink()},selectChangedSettings(){const n=this.settingItems.filter(e=>e.isChanged).map(e=>e.key);this.selectedItems=n,this.generateLink()},selectByPrefix(n){const e=this.settingItems.filter(a=>a.key.startsWith(`${n}.`)).map(a=>a.key);this.selectedItems=e},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(n){const e=this.settingItems.find(a=>a.key===n);return e?e.description:n}},watch:{selectedItems:{handler(){this.autoGenerateLink()},deep:!0}}},xs={class:"d-flex mb-3 gap-2 flex-wrap"},ks={class:"d-flex align-center mt-3 mb-3 flex-wrap gap-2"},_s={class:"d-flex align-center"},Ss={key:0},Cs={key:1},Vs={class:"text-caption text-grey"};function Ts(n,e,a,d,i,o){return h(),b(z,{border:"",class:"settings-link-generator mb-4"},{default:s(()=>[t(q,{class:"text-h6"},{default:s(()=>[t(y,{start:"",icon:"mdi-link-variant",class:"mr-2"}),e[3]||(e[3]=u(" 设置分享 "))]),_:1,__:[3]}),t(K,null,{default:s(()=>[x("div",xs,[t(g,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-select-all",onClick:o.selectAll},{default:s(()=>e[4]||(e[4]=[u(" 全选 ")])),_:1,__:[4]},8,["onClick"]),t(g,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-server-network",onClick:o.selectDataSourceSettings},{default:s(()=>e[5]||(e[5]=[u(" 数据源设置 ")])),_:1,__:[5]},8,["onClick"]),t(g,{size:"small",variant:"tonal",color:"primary","prepend-icon":"mdi-compare",onClick:o.selectChangedSettings},{default:s(()=>e[6]||(e[6]=[u(" 已变更设置 ")])),_:1,__:[6]},8,["onClick"]),t(g,{size:"small",variant:"tonal",color:"error","prepend-icon":"mdi-select-remove",onClick:o.resetSelection},{default:s(()=>e[7]||(e[7]=[u(" 取消选择 ")])),_:1,__:[7]},8,["onClick"])]),x("div",ks,[t(xe,{color:"primary",class:"mr-2"},{default:s(()=>[u(" 已选 "+T(i.selectedItems.length)+" 项设置 ",1)]),_:1}),i.selectedItems.length>0?(h(!0),M(we,{key:0},_e(i.selectedItems,r=>(h(),b(xe,{key:r,size:"small",class:"mr-1",variant:"text"},{default:s(()=>[u(T(o.getSettingDescription(r)),1)]),_:2},1024))),128)):F("",!0)]),t(G,{modelValue:i.generatedLink,"onUpdate:modelValue":e[0]||(e[0]=r=>i.generatedLink=r),label:"生成的链接",readonly:"",variant:"outlined",class:"mb-2","append-inner-icon":i.linkCopied?"mdi-check":"mdi-content-copy","onClick:appendInner":o.copyLink},null,8,["modelValue","append-inner-icon","onClick:appendInner"]),t(mn,{variant:"accordion"},{default:s(()=>[t(fn,null,{default:s(()=>[t(gn,null,{default:s(()=>e[8]||(e[8]=[u(" 显示设置列表详情 ")])),_:1,__:[8]}),t(vn,null,{default:s(()=>[t(cn,{"items-per-page":o.settingItems.length,headers:i.headers,items:o.filteredItems,"item-value":"key",modelValue:i.selectedItems,"onUpdate:modelValue":e[2]||(e[2]=r=>i.selectedItems=r),"show-select":"",density:"compact",class:"rounded setting-table","onUpdate:selected":o.handleSelectionChange,"sort-by":[{key:"isChanged",order:"desc"}]},{top:s(()=>[t(G,{modelValue:i.search,"onUpdate:modelValue":e[1]||(e[1]=r=>i.search=r),label:"搜索设置","prepend-inner-icon":"mdi-magnify","single-line":"","hide-details":"",class:"mb-4"},null,8,["modelValue"])]),"item.description":s(({item:r})=>[x("div",_s,[t(y,{size:"small",icon:r.icon,class:"mr-2"},null,8,["icon"]),u(" "+T(r.description),1)])]),"item.value":s(({item:r})=>[typeof r.value=="boolean"?(h(),M("span",Ss,T(r.value?"是":"否"),1)):(h(),M("span",Cs,T(r.value),1))]),"item.key":s(({item:r})=>[x("span",Vs,T(r.key),1)]),"item.isChanged":s(({item:r})=>[t(xe,{size:"x-small",color:r.isChanged?"warning":"success",text:r.isChanged?"已修改":"默认",density:"compact"},null,8,["color","text"])]),_:2},1032,["items-per-page","headers","items","modelValue","onUpdate:selected"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Et=H(ys,[["render",Ts]]),Me=()=>{const n={Accept:"application/json"},e=f("server.siteKey"),a=f("namespace.password");return e&&(n["x-site-key"]=e),a&&(n["x-namespace-password"]=a),n},Ds={name:"NamespaceSettingsCard",components:{SettingsCard:j,NamespaceAccess:at},data(){return{loading:!1,passwordLoading:!1,hintLoading:!1,verifyLoading:!1,showSnackbar:!1,showDeleteConfirm:!1,showHintDialog:!1,showVerifyDialog:!1,snackbarText:"",snackbarColor:"success",namespaceInfo:{uuid:"",name:"",accessType:"PUBLIC",hasPassword:!1,passwordHint:null},namespaceForm:{name:"",accessType:"PUBLIC"},passwordForm:{newPassword:"",oldPassword:"",confirmPassword:""},passwordHintForm:{hint:""},verifyForm:{password:"",error:"",action:null,onSuccess:null},originalForm:{name:"",accessType:"PUBLIC"},accessTypeOptions:[{title:"公开(无需密码)",value:"PUBLIC",icon:"mdi-lock-open"},{title:"受保护(需要密码写入)",value:"PROTECTED",icon:"mdi-lock"},{title:"私有(需要密码读写)",value:"PRIVATE",icon:"mdi-lock-alert"}]}},computed:{shouldShowCard(){const n=f("server.provider");return n==="kv-server"||n==="classworkscloud"},deviceUuid(){return this.namespaceInfo.uuid},isFormChanged(){return this.namespaceForm.name!==this.originalForm.name||this.namespaceForm.accessType!==this.originalForm.accessType},isPasswordFormValid(){if(!this.passwordForm.newPassword)return!0;const n=this.passwordForm.newPassword===this.passwordForm.confirmPassword;return this.namespaceInfo.hasPassword?n&&!!this.passwordForm.oldPassword:n}},async created(){this.shouldShowCard&&(await this.loadNamespaceInfo(),await this.loadPasswordHint())},methods:{async loadNamespaceInfo(){this.loading=!0;try{const n=await Ve.loadNamespaceInfo();n.status==200&&n.data&&(this.namespaceInfo=n.data,this.namespaceForm.name=n.data.name,this.namespaceForm.accessType=n.data.accessType,this.passwordForm.passwordHint=n.data.passwordHint||"",this.originalForm={...this.namespaceForm})}catch(n){console.error("加载命名空间信息失败:",n),this.showError("加载命名空间信息失败")}finally{this.loading=!1}},async saveNamespaceInfo(){if(this.isFormChanged){this.loading=!0;try{const n=await Ve.updateNamespaceInfo({name:this.namespaceForm.name,accessType:this.namespaceForm.accessType});if(console.log(n),n.status==200)this.originalForm={...this.namespaceForm},this.showSuccess("命名空间信息已更新");else throw new Error(n.error.message||"保存失败")}catch(n){console.error("保存命名空间信息失败:",n),this.showError(n.message||"保存命名空间信息失败")}finally{this.loading=!1}}},async copyUuid(){try{await navigator.clipboard.writeText(this.namespaceInfo.uuid),this.showSuccess("命名空间标识符已复制到剪贴板")}catch(n){console.error("复制失败:",n),this.showError("复制失败")}},async savePassword(){var n,e,a;if(this.isPasswordFormValid){this.passwordLoading=!0;try{const d=await Ve.updatePassword(this.passwordForm.newPassword||null,this.passwordForm.oldPassword||null);if(d.status===200)this.namespaceInfo.hasPassword=!!this.passwordForm.newPassword,this.passwordForm={newPassword:"",oldPassword:"",confirmPassword:""},this.showSuccess("密码已更新"),this.$router.push("/");else throw new Error(((n=d.error)==null?void 0:n.message)||"保存失败")}catch(d){console.error("保存密码失败:",d),this.showError(((a=(e=d.response)==null?void 0:e.data)==null?void 0:a.message)||"保存密码失败")}finally{this.passwordLoading=!1}}},async confirmDeletePassword(){this.verifyForm={password:"",error:"",action:"delete",onSuccess:()=>{this.showDeleteConfirm=!0}},this.showVerifyDialog=!0},async deletePassword(){var n,e,a;this.passwordLoading=!0;try{const d=await Ve.deletePassword();if(d.status===200)this.namespaceInfo.hasPassword=!1,this.namespaceInfo.passwordHint=null,this.passwordForm={newPassword:"",oldPassword:"",confirmPassword:""},this.showDeleteConfirm=!1,this.showSuccess("密码已删除");else throw new Error(((n=d.error)==null?void 0:n.message)||"删除失败")}catch(d){console.error("删除密码失败:",d),this.showError(((a=(e=d.response)==null?void 0:e.data)==null?void 0:a.message)||"删除密码失败")}finally{this.passwordLoading=!1}},async loadPasswordHint(){try{const n=f("server.domain"),e=f("device.uuid"),a=await Ae.get(`${n}/${e}/_hint`,{headers:Me()});a.data&&a.data.passwordHint!==void 0&&(this.namespaceInfo.passwordHint=a.data.passwordHint,this.passwordHintForm.hint=a.data.passwordHint||"")}catch(n){console.error("加载密码提示失败:",n),this.showError("加载密码提示失败")}},async savePasswordHint(){var n,e;this.hintLoading=!0;try{const a=f("server.domain"),d=f("device.uuid"),i=await Ae.put(`${a}/${d}/_hint`,{hint:this.passwordHintForm.hint||null},{headers:Me()});i.data&&(this.namespaceInfo.passwordHint=i.data.passwordHint,this.showSuccess("密码提示已更新"),this.showHintDialog=!1)}catch(a){console.error("保存密码提示失败:",a),this.showError(((e=(n=a.response)==null?void 0:n.data)==null?void 0:e.message)||"保存密码提示失败")}finally{this.hintLoading=!1}},async openHintDialog(){this.verifyForm={password:"",error:"",action:"hint",onSuccess:()=>{this.showHintDialog=!0}},this.showVerifyDialog=!0},cancelVerify(){this.showVerifyDialog=!1,this.verifyForm={password:"",error:"",action:null,onSuccess:null}},async verifyPassword(){if(this.verifyForm.password){this.verifyLoading=!0,this.verifyForm.error="";try{(await Ae.post(`${f("server.domain")}/${f("device.uuid")}/_checkpassword`,{password:this.verifyForm.password},{headers:Me()})).status==200?(this.showVerifyDialog=!1,this.verifyForm.onSuccess&&this.verifyForm.onSuccess()):this.verifyForm.error="密码错误"}catch(n){console.error("密码验证失败:",n),this.verifyForm.error="密码验证失败"}finally{this.verifyLoading=!1}}},showSuccess(n){this.snackbarColor="success",this.snackbarText=n,this.showSnackbar=!0},showError(n){this.snackbarColor="error",this.snackbarText=n,this.showSnackbar=!0},modifyLocalPassword(){const n=this.$refs.namespaceAccess;n&&n.openPasswordDialog()}}},Es={class:"d-flex align-center mt-2"},Ps={class:"text-body-1"},Is={class:"d-flex justify-end"},Ns={class:"d-flex justify-space-between align-center"},Ls={class:"text-caption text-grey"};function Fs(n,e,a,d,i,o){const r=at,w=j;return o.shouldShowCard?(h(),b(w,{key:0,title:"命名空间设置",icon:"mdi-database-lock",loading:i.loading},{default:s(()=>[t(r,{ref:"namespaceAccess"},null,512),t(z,{variant:"tonal",class:"rounded-lg mb-4"},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:"mdi-identifier",size:"large",class:"mr-3",color:"primary"})]),default:s(()=>[t(q,null,{default:s(()=>e[14]||(e[14]=[u("命名空间标识符")])),_:1,__:[14]}),t(be,null,{default:s(()=>[x("div",Es,[x("code",Ps,T(i.namespaceInfo.uuid),1),t(g,{icon:"mdi-content-copy",variant:"text",size:"small",class:"ml-2",onClick:o.copyUuid},null,8,["onClick"])])]),_:1})]),_:1})]),_:1}),t(z,{variant:"tonal",class:"rounded-lg mb-4"},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:"mdi-form-textbox",size:"large",class:"mr-3",color:"primary"})]),default:s(()=>[t(q,null,{default:s(()=>e[15]||(e[15]=[u("命名空间信息")])),_:1,__:[15]})]),_:1}),t(K,null,{default:s(()=>[t(Ee,{ref:"form",onSubmit:Xe(o.saveNamespaceInfo,["prevent"])},{default:s(()=>[t(G,{modelValue:i.namespaceForm.name,"onUpdate:modelValue":e[0]||(e[0]=c=>i.namespaceForm.name=c),label:"命名空间名称",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.loading,rules:[c=>!!c||"请输入命名空间名称"]},{"prepend-inner":s(()=>[t(y,{icon:"mdi-tag-text"})]),_:1},8,["modelValue","loading","rules"]),t(ft,{modelValue:i.namespaceForm.accessType,"onUpdate:modelValue":e[1]||(e[1]=c=>i.namespaceForm.accessType=c),items:i.accessTypeOptions,label:"访问权限",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-6",loading:i.loading},{"prepend-inner":s(()=>[t(y,{icon:"mdi-shield-lock"})]),_:1},8,["modelValue","items","loading"]),x("div",Is,[t(g,{color:"primary",loading:i.loading,disabled:!o.isFormChanged,onClick:o.saveNamespaceInfo},{prepend:s(()=>[t(y,{icon:"mdi-content-save"})]),default:s(()=>[e[16]||(e[16]=u(" 保存更改 "))]),_:1,__:[16]},8,["loading","disabled","onClick"])])]),_:1},8,["onSubmit"])]),_:1})]),_:1}),t(z,{variant:"tonal",class:"rounded-lg"},{default:s(()=>[t(oe,null,{prepend:s(()=>[t(y,{icon:"mdi-key",size:"large",class:"mr-3",color:"primary"})]),default:s(()=>[t(q,null,{default:s(()=>e[17]||(e[17]=[u("访问密码")])),_:1,__:[17]}),t(be,{class:"mt-2"},{default:s(()=>e[18]||(e[18]=[u(" 设置访问密码以保护数据安全,可以将老师、电教的名字、学号等作为密码 ")])),_:1,__:[18]})]),_:1}),t(K,null,{default:s(()=>[t(Ee,{ref:"passwordForm",onSubmit:Xe(o.savePassword,["prevent"])},{default:s(()=>[i.namespaceInfo.hasPassword?(h(),b(G,{key:0,modelValue:i.passwordForm.oldPassword,"onUpdate:modelValue":e[2]||(e[2]=c=>i.passwordForm.oldPassword=c),label:"当前密码",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.passwordLoading,rules:[c=>!!c||"请输入当前密码"]},{"prepend-inner":s(()=>[t(y,{icon:"mdi-lock"})]),_:1},8,["modelValue","loading","rules"])):F("",!0),t(G,{modelValue:i.passwordForm.newPassword,"onUpdate:modelValue":e[3]||(e[3]=c=>i.passwordForm.newPassword=c),label:"新密码",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.passwordLoading},{"prepend-inner":s(()=>[t(y,{icon:"mdi-lock-plus"})]),_:1},8,["modelValue","loading"]),t(G,{modelValue:i.passwordForm.confirmPassword,"onUpdate:modelValue":e[4]||(e[4]=c=>i.passwordForm.confirmPassword=c),label:"确认新密码",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.passwordLoading,rules:[c=>!i.passwordForm.newPassword||c===i.passwordForm.newPassword||"两次输入的密码不一致"]},{"prepend-inner":s(()=>[t(y,{icon:"mdi-lock-check"})]),_:1},8,["modelValue","loading","rules"]),x("div",Ns,[x("div",null,[i.namespaceInfo.hasPassword?(h(),b(g,{key:0,color:"error",variant:"tonal",loading:i.passwordLoading,onClick:o.confirmDeletePassword,class:"mr-2"},{prepend:s(()=>[t(y,{icon:"mdi-lock-remove"})]),default:s(()=>[e[19]||(e[19]=u(" 删除密码 "))]),_:1,__:[19]},8,["loading","onClick"])):F("",!0),i.namespaceInfo.hasPassword?(h(),b(g,{key:1,color:"primary",variant:"tonal",loading:i.hintLoading,onClick:o.openHintDialog,class:"mr-2"},{prepend:s(()=>[t(y,{icon:"mdi-lightbulb-outline"})]),default:s(()=>[e[20]||(e[20]=u(" 设置密码提示 "))]),_:1,__:[20]},8,["loading","onClick"])):F("",!0),t(g,{color:"primary",variant:"tonal",onClick:o.modifyLocalPassword},{prepend:s(()=>[t(y,{icon:"mdi-key-variant"})]),default:s(()=>[e[21]||(e[21]=u(" 修改本地密码 "))]),_:1,__:[21]},8,["onClick"])]),t(g,{color:"primary",loading:i.passwordLoading,disabled:!o.isPasswordFormValid,onClick:o.savePassword},{prepend:s(()=>[t(y,{icon:"mdi-content-save"})]),default:s(()=>[e[22]||(e[22]=u(" 保存密码 "))]),_:1,__:[22]},8,["loading","disabled","onClick"])])]),_:1},8,["onSubmit"])]),_:1})]),_:1}),t(ye,{modelValue:i.showHintDialog,"onUpdate:modelValue":e[7]||(e[7]=c=>i.showHintDialog=c),"max-width":"400"},{default:s(()=>[t(z,null,{default:s(()=>[t(oe,null,{default:s(()=>[t(q,null,{default:s(()=>e[23]||(e[23]=[u("设置密码提示")])),_:1,__:[23]}),t(be,{class:"mt-2"},{default:s(()=>e[24]||(e[24]=[u(" 设置一个提示帮助记忆密码 ")])),_:1,__:[24]})]),_:1}),t(K,null,{default:s(()=>[t(G,{modelValue:i.passwordHintForm.hint,"onUpdate:modelValue":e[5]||(e[5]=c=>i.passwordHintForm.hint=c),label:"密码提示",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.hintLoading,placeholder:"例如:我的生日"},{"prepend-inner":s(()=>[t(y,{icon:"mdi-lightbulb-outline"})]),_:1},8,["modelValue","loading"]),x("div",Ls," 当前提示:"+T(i.namespaceInfo.passwordHint||"未设置"),1)]),_:1}),t(pe,null,{default:s(()=>[t(me),t(g,{color:"grey-darken-1",variant:"text",onClick:e[6]||(e[6]=c=>i.showHintDialog=!1),disabled:i.hintLoading},{default:s(()=>e[25]||(e[25]=[u(" 取消 ")])),_:1,__:[25]},8,["disabled"]),t(g,{color:"primary",variant:"text",loading:i.hintLoading,onClick:o.savePasswordHint},{default:s(()=>e[26]||(e[26]=[u(" 保存 ")])),_:1,__:[26]},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(ye,{modelValue:i.showDeleteConfirm,"onUpdate:modelValue":e[9]||(e[9]=c=>i.showDeleteConfirm=c),"max-width":"400"},{default:s(()=>[t(z,null,{default:s(()=>[t(oe,null,{default:s(()=>[t(q,null,{default:s(()=>e[27]||(e[27]=[u("确认删除密码")])),_:1,__:[27]}),t(K,{class:"mt-4"},{default:s(()=>e[28]||(e[28]=[u(" 删除密码后,任何人都可以访问和修改此命名空间的数据。确定要继续吗? ")])),_:1,__:[28]})]),_:1}),t(pe,null,{default:s(()=>[t(me),t(g,{color:"grey-darken-1",variant:"text",onClick:e[8]||(e[8]=c=>i.showDeleteConfirm=!1)},{default:s(()=>e[29]||(e[29]=[u(" 取消 ")])),_:1,__:[29]}),t(g,{color:"error",variant:"text",loading:i.passwordLoading,onClick:o.deletePassword},{default:s(()=>e[30]||(e[30]=[u(" 确认删除 ")])),_:1,__:[30]},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(ye,{modelValue:i.showVerifyDialog,"onUpdate:modelValue":e[11]||(e[11]=c=>i.showVerifyDialog=c),"max-width":"400",persistent:""},{default:s(()=>[t(z,null,{default:s(()=>[t(oe,null,{default:s(()=>[t(q,null,{default:s(()=>e[31]||(e[31]=[u("验证密码")])),_:1,__:[31]}),t(be,{class:"mt-2"},{default:s(()=>e[32]||(e[32]=[u(" 请输入当前密码以继续操作 ")])),_:1,__:[32]})]),_:1}),t(K,null,{default:s(()=>[t(G,{modelValue:i.verifyForm.password,"onUpdate:modelValue":e[10]||(e[10]=c=>i.verifyForm.password=c),label:"当前密码",variant:"outlined",density:"comfortable","hide-details":"auto",class:"mb-4",loading:i.verifyLoading,error:!!i.verifyForm.error,"error-messages":i.verifyForm.error,onKeyup:He(o.verifyPassword,["enter"])},{"prepend-inner":s(()=>[t(y,{icon:"mdi-lock"})]),_:1},8,["modelValue","loading","error","error-messages","onKeyup"])]),_:1}),t(pe,null,{default:s(()=>[t(me),t(g,{color:"grey-darken-1",variant:"text",onClick:o.cancelVerify,disabled:i.verifyLoading},{default:s(()=>e[33]||(e[33]=[u(" 取消 ")])),_:1,__:[33]},8,["onClick","disabled"]),t(g,{color:"primary",variant:"text",loading:i.verifyLoading,disabled:!i.verifyForm.password,onClick:o.verifyPassword},{default:s(()=>e[34]||(e[34]=[u(" 确认 ")])),_:1,__:[34]},8,["loading","disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(ct,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[13]||(e[13]=c=>i.showSnackbar=c),timeout:3e3,color:i.snackbarColor,location:"top"},{actions:s(()=>[t(g,{variant:"text",onClick:e[12]||(e[12]=c=>i.showSnackbar=!1)},{default:s(()=>e[35]||(e[35]=[u(" 关闭 ")])),_:1,__:[35]})]),default:s(()=>[u(T(i.snackbarText)+" ",1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])):F("",!0)}const Pt=H(Ds,[["render",Fs]]),As={name:"DataProviderSettingsCard",components:{SettingsCard:j},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null,machineId:null,migrateLoading:!1}},computed:{currentProvider(){return f("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"}},async created(){this.machineId=f("device.uuid")},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;try{const n=f("server.domain"),e=f("server.siteKey"),a={Accept:"application/json"};if(e&&(a["x-site-key"]=e),(await sn.get(`${n}/check`,{method:"GET",headers:a})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}catch(n){this.$message.error("连接失败",n.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(n){this.$message.error("清除失败",n.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,this.isKvProvider&&setTimeout(()=>{window.location.reload()},1500)}catch(n){this.$message.error("清除失败",n.message)}},async exportData(){try{const n="ClassworksDB",e={indexedDB:{}},a=await new Promise((c,V)=>{const k=window.indexedDB.open(n);k.onerror=()=>V(k.error),k.onsuccess=()=>c(k.result)}),d=Array.from(a.objectStoreNames);for(const c of d){const k=a.transaction(c,"readonly").objectStore(c),C=await new Promise((O,N)=>{const Q=k.getAll();Q.onerror=()=>N(Q.error),Q.onsuccess=()=>O(Q.result)});e.indexedDB[c]=C}const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),o=URL.createObjectURL(i),r=document.createElement("a"),w=new Date().toISOString().split("T")[0];r.href=o,r.download=`homework-indexeddb-${w}.json`,r.click(),URL.revokeObjectURL(o),this.$message.success("导出成功","IndexedDB数据已导出")}catch(n){console.error("导出失败:",n),this.$message.error("导出失败",n.message||"无法导出数据库数据")}},async migrateData(){this.migrateLoading=!0,this.$router.push("/datamigration"),this.migrateLoading=!1},handleConfirm(){this.confirmAction&&this.confirmAction()}}};function Ms(n,e,a,d,i,o){const r=j;return h(),b(r,{title:"数据源设置",icon:"mdi-database-cog"},{default:s(()=>[t(Y,null,{default:s(()=>[o.currentProvider==="kv-server"||o.currentProvider==="classworkscloud"?(h(),b(L,{key:0},{prepend:s(()=>[t(y,{icon:"mdi-lan-connect",class:"mr-3"})]),append:s(()=>[t(g,{loading:i.loading,variant:"tonal",onClick:o.checkServerConnection},{default:s(()=>e[3]||(e[3]=[u(" 测试连接 ")])),_:1,__:[3]},8,["loading","onClick"])]),default:s(()=>[t(U,null,{default:s(()=>e[2]||(e[2]=[u("检查服务器连接")])),_:1,__:[2]})]),_:1})):F("",!0),o.currentProvider==="kv-local"?(h(),M(we,{key:1},[t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-database",class:"mr-3"})]),append:s(()=>[t(g,{color:"error",variant:"tonal",onClick:o.confirmClearIndexedDB},{default:s(()=>e[6]||(e[6]=[u(" 清除 ")])),_:1,__:[6]},8,["onClick"])]),default:s(()=>[t(U,null,{default:s(()=>e[4]||(e[4]=[u("清除数据库缓存")])),_:1,__:[4]}),t(J,null,{default:s(()=>e[5]||(e[5]=[u("这将清除所有本地数据库中的数据")])),_:1,__:[5]})]),_:1}),t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-database-export",class:"mr-3"})]),append:s(()=>[t(g,{variant:"tonal",onClick:o.exportData},{default:s(()=>e[8]||(e[8]=[u(" 导出 ")])),_:1,__:[8]},8,["onClick"])]),default:s(()=>[t(U,null,{default:s(()=>e[7]||(e[7]=[u("导出数据库")])),_:1,__:[7]})]),_:1})],64)):F("",!0),t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-database-import",class:"mr-3"})]),append:s(()=>[t(g,{loading:i.migrateLoading,variant:"tonal",onClick:o.migrateData},{default:s(()=>e[11]||(e[11]=[u(" 迁移 ")])),_:1,__:[11]},8,["loading","onClick"])]),default:s(()=>[t(U,null,{default:s(()=>e[9]||(e[9]=[u("迁移旧数据")])),_:1,__:[9]}),t(J,null,{default:s(()=>e[10]||(e[10]=[u("将旧的存储格式数据转移到新的KV存储")])),_:1,__:[10]})]),_:1}),t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-identifier",class:"mr-3"})]),default:s(()=>[t(U,null,{default:s(()=>e[12]||(e[12]=[u("本机唯一标识符")])),_:1,__:[12]}),i.machineId?(h(),b(J,{key:0},{default:s(()=>[u(T(i.machineId),1)]),_:1})):(h(),b(J,{key:1},{default:s(()=>e[13]||(e[13]=[u("正在加载...")])),_:1,__:[13]}))]),_:1}),t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-lan-connect",class:"mr-3"})]),append:s(()=>[t(g,{variant:"tonal",to:"/cachemanagement"},{default:s(()=>e[15]||(e[15]=[u(" 查看 ")])),_:1,__:[15]})]),default:s(()=>[t(U,null,{default:s(()=>e[14]||(e[14]=[u("查看本地缓存")])),_:1,__:[14]})]),_:1})]),_:1}),t(ye,{modelValue:i.confirmDialog,"onUpdate:modelValue":e[1]||(e[1]=w=>i.confirmDialog=w),"max-width":"400"},{default:s(()=>[t(z,null,{default:s(()=>[t(q,null,{default:s(()=>[u(T(i.confirmTitle),1)]),_:1}),t(K,null,{default:s(()=>[u(T(i.confirmMessage),1)]),_:1}),t(pe,null,{default:s(()=>[t(me),t(g,{color:"grey",variant:"text",onClick:e[0]||(e[0]=w=>i.confirmDialog=!1)},{default:s(()=>e[16]||(e[16]=[u("取消")])),_:1,__:[16]}),t(g,{color:"error",variant:"tonal",onClick:o.handleConfirm},{default:s(()=>e[17]||(e[17]=[u("确认")])),_:1,__:[17]},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const It=H(As,[["render",Ms]]),Os={name:"ServerSettingsCard",components:{SettingsCard:j,SettingItem:re},props:{loading:Boolean},data(){return{}},computed:{currentProvider(){return f("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"},isClassworksCloud(){return this.currentProvider==="classworkscloud"},useServer(){return this.currentProvider==="server"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"}}},Us={key:0};function js(n,e,a,d,i,o){const r=re,w=j;return h(),b(w,{title:"数据源设置",icon:"mdi-database",loading:a.loading},{default:s(()=>[t(Ee,null,{default:s(()=>[t(r,{"setting-key":"server.provider",title:"数据提供者"}),o.isKvProvider?(h(),b(ce,{key:0,type:"info",variant:"tonal",class:"my-2"},{default:s(()=>[t($e,null,{default:s(()=>e[0]||(e[0]=[u("KV 存储系统")])),_:1,__:[0]}),e[2]||(e[2]=x("p",null,"KV存储系统使用本机唯一标识符(UUID)来区分不同设备的数据。",-1)),o.currentProvider==="kv-server"?(h(),M("p",Us,e[1]||(e[1]=[u(" 服务器端点格式: "),x("code",null,"http(s)://服务器域名/",-1),x("br",null,null,-1),u(" 在服务器域名处仅填写基础URL,不需要任何路径。 ")]))):F("",!0)]),_:1,__:[2]})):F("",!0),o.isClassworksCloud?(h(),b(ce,{key:1,type:"info",color:"success",variant:"tonal",class:"my-2"},{default:s(()=>[t($e,null,{default:s(()=>e[3]||(e[3]=[u("Classworks云端存储")])),_:1,__:[3]}),e[4]||(e[4]=x("p",null,"Classworks云端存储是官方提供的存储解决方案,自动配置了最优的访问设置。",-1)),e[5]||(e[5]=x("p",null,"使用此选项时,服务器域名和网站令牌将自动配置,无需手动设置。",-1))]),_:1,__:[4,5]})):F("",!0),t(I,{class:"my-2"}),t(r,{"setting-key":"server.domain",title:"服务器域名",disabled:o.isClassworksCloud},null,8,["disabled"]),t(I,{class:"my-2"}),t(r,{"setting-key":"server.classNumber",title:"班号"}),t(I,{class:"my-2"}),t(r,{"setting-key":"server.siteKey",title:"网站令牌",disabled:o.isClassworksCloud},{description:s(()=>e[6]||(e[6]=[u(" 用于后端验证请求的安全令牌。如需要,请从系统管理员获取。 ")])),_:1},8,["disabled"]),o.useServer?(h(),b(ce,{key:2,type:"info",variant:"tonal",class:"my-2"},{default:s(()=>[t(y,{icon:"mdi-information-outline",class:"mr-2"}),e[7]||(e[7]=x("span",null,[u("网站令牌将作为 "),x("code",null,"x-site-key"),u(" 请求头发送给服务器,用于验证请求的合法性。如果您的服务器需要此验证,请在上方输入有效的令牌。")],-1))]),_:1,__:[7]})):F("",!0),t(I,{class:"my-2"}),t(r,{"setting-key":"device.uuid",title:"设备UUID"})]),_:1})]),_:1},8,["loading"])}const Nt=H(Os,[["render",js]]),Hs={name:"Settings",components:{ServerSettingsCard:Nt,EditSettingsCard:Tt,RefreshSettingsCard:Dt,DisplaySettingsCard:Vt,MessageLog:ot,SettingsCard:j,StudentListCard:St,AboutCard:yt,DataProviderSettingsCard:It,ThemeSettingsCard:Ct,EchoChamberCard:bt,SettingsExplorer:xt,SettingsLinkGenerator:Et,NamespaceSettingsCard:Pt,RandomPickerCard:kt},setup(){const{mobile:n}=on();return{isMobile:n}},data(){const n=f("server.provider"),e=n==="kv-server"||n==="classworkscloud";return{settings:{server:{domain:f("server.domain"),classNumber:f("server.classNumber"),provider:f("server.provider")},namespace:{name:f("namespace.name"),accessType:f("namespace.accessType"),password:f("namespace.password")},refresh:{auto:f("refresh.auto"),interval:f("refresh.interval")},font:{size:f("font.size")},edit:{autoSave:f("edit.autoSave"),blockNonTodayAutoSave:f("edit.blockNonTodayAutoSave"),confirmNonTodaySave:f("edit.confirmNonTodaySave"),refreshBeforeEdit:f("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:f("display.emptySubjectDisplay"),dynamicSort:f("display.dynamicSort"),showRandomButton:f("display.showRandomButton"),showFullscreenButton:f("display.showFullscreenButton")},developer:{enabled:f("developer.enabled"),showDebugConfig:f("developer.showDebugConfig")},message:{showSidebar:f("message.showSidebar"),maxActiveMessages:f("message.maxActiveMessages"),timeout:f("message.timeout"),saveHistory:f("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,settingsTab:"index",settingsTabs:[{title:"首页",icon:"mdi-home",value:"index"},{title:"服务器",icon:"mdi-server",value:"server"},...e?[{title:"命名空间",icon:"mdi-database-lock",value:"namespace"}]:[],{title:"分享设置",icon:"mdi-share",value:"share"},{title:"刷新",icon:"mdi-refresh",value:"refresh"},{title:"编辑",icon:"mdi-pencil",value:"edit"},{title:"显示",icon:"mdi-eye",value:"display"},{title:"主题",icon:"mdi-theme-light-dark",value:"theme"},{title:"学生列表",icon:"mdi-account-group",value:"student"},{title:"随机点名",icon:"mdi-dice-multiple",value:"randomPicker"},{title:"开发者",icon:"mdi-developer-board",value:"developer"},{title:"关于",icon:"mdi-information",value:"about"}]}},watch:{settings:{handler(n){this.handleSettingsChange(n)},deep:!0},studentData:{handler(n){this.lastSavedData&&(this.hasUnsavedChanges=JSON.stringify(n.list)!==JSON.stringify(this.lastSavedData)),this.studentData.text=n.list.join(`
|
||
`)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatchSettings=wt(()=>{this.loadAllSettings()})},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings()},methods:{loadAllSettings(){Object.keys(this.settings).forEach(n=>{Object.keys(this.settings[n]).forEach(e=>{this.settings[n][e]=f(`${n}.${e}`)})})},handleSettingsChange(n){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(n).forEach(([e,a])=>{Object.entries(a).forEach(([d,i])=>{const o=`${e}.${d}`,r=f(o);i!==r&&(Re(o,i)?this.showMessage("设置已更新",`${o} 已保存`):(this.showError("保存失败",`${o} 设置失败`),this.settings[e][d]=r))})})},100)},showMessage(n,e="",a="success"){this.$message[a](n,e)},showError(n,e=""){this.$message.error(n,e)},saveEdit(){if(this.editingIndex!==-1){const n=this.editingName.trim();n&&n!==this.studentData.list[this.editingIndex]&&(this.studentData.list[this.editingIndex]=n),this.editingIndex=-1,this.editingName=""}},startEdit(n,e){this.editingIndex=n,this.editingName=e},confirmDelete(n){this.studentToDelete={index:n,name:this.studentData.list[n]},this.deleteDialog=!0},moveStudent(n,e){const a=e==="up"?n-1:n+1;a>=0&&a<this.studentData.list.length&&([this.studentData.list[n],this.studentData.list[a]]=[this.studentData.list[a],this.studentData.list[n]])},applyNewPosition(){const n=parseInt(this.newPosition)-1;if(this.studentToMove!==null&&n>=0&&n<this.studentData.list.length&&n!==this.studentToMove){const e=this.studentData.list[this.studentToMove];this.studentData.list.splice(this.studentToMove,1),this.studentData.list.splice(n,0,e)}this.numberDialog=!1,this.studentToMove=null,this.newPosition=""},moveToTop(n){if(n>0){const e=this.studentData.list[n];this.studentData.list.splice(n,1),this.studentData.list.unshift(e)}},addStudent(){const n=this.newStudent.trim();n&&!this.studentData.list.includes(n)&&(this.studentData.list.push(n),this.newStudent="")},removeStudent(n){n!==void 0&&(this.studentData.list.splice(n,1),this.deleteDialog=!1,this.studentToDelete=null)},resetFontSize(){dt("font.size"),this.settings.font.size=f("font.size"),this.showMessage("字体已重置","字体大小已恢复默认值")},handleDeveloperChange(n){n||(this.settings.message={showSidebar:!0,maxActiveMessages:5,timeout:5e3,saveHistory:!0})},resetDeveloperSettings(){this.settings.developer={enabled:!1},this.settings.message={showSidebar:!0,maxActiveMessages:5,timeout:5e3,saveHistory:!0},this.handleSettingsChange(this.settings),this.showMessage("已重置","开发者设置已重置为默认值","warning")},adjustFontSize(n){const a=this.settings.font.size;n==="up"&&a<100?this.settings.font.size=a+2:n==="down"&&a>16&&(this.settings.font.size=a-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(n,e){this.showMessage("设置已更新",`${n} 已保存为 ${e}`)}}},Bs={class:"settings-page"};function Rs(n,e,a,d,i,o){const r=Nt,w=It,c=Pt,V=Et,k=Dt,C=Tt,O=Vt,N=Ct,Q=St,te=kt,le=j,se=an("developer-settings-card"),Z=xt,ue=yt,W=bt,X=ot;return h(),M("div",Bs,[t(dn,{elevation:"1"},{prepend:s(()=>[t(g,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=A=>n.$router.push("/"))})]),default:s(()=>[t(un,{class:"text-h6"},{default:s(()=>e[3]||(e[3]=[u("设置")])),_:1,__:[3]})]),_:1}),t(yn,{fluid:""},{default:s(()=>[t(zt,null,{default:s(()=>[t(Y,null,{default:s(()=>[(h(!0),M(we,null,_e(i.settingsTabs,A=>(h(),b(L,{key:A.value,onClick:de=>i.settingsTab=A.value,active:i.settingsTab===A.value,"prepend-icon":A.icon,class:"rounded-e-xl",color:i.settingsTab===A.value?"primary":"default"},{default:s(()=>[t(U,null,{default:s(()=>[u(T(A.title),1)]),_:2},1024)]),_:2},1032,["onClick","active","prepend-icon","color"]))),128))]),_:1})]),_:1}),t(bn,{modelValue:i.settingsTab,"onUpdate:modelValue":e[2]||(e[2]=A=>i.settingsTab=A),style:{width:"100%"},direction:"vertical"},{default:s(()=>[t(ee,{value:"index"},{default:s(()=>[t(z,{title:"Classworks",subtitle:"设置",class:"rounded-xl",border:""},{default:s(()=>[t(K,null,{default:s(()=>[t(ce,{color:"error",variant:"tonal",icon:"mdi-alert-circle",class:"rounded-xl"},{default:s(()=>e[4]||(e[4]=[u("Classworks 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 "),x("a",{href:"https://github.com/ZeroCatDev/Classworks",target:"_blank"},"https://github.com/ZeroCatDev/Classworks",-1),u("。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。")])),_:1,__:[4]}),t(ce,{class:"mt-4 rounded-xl",color:"info",variant:"tonal",icon:"mdi-information"},{default:s(()=>e[5]||(e[5]=[u("请不要使用浏览器清除缓存功能,否则会导致配置丢失。"),x("del",null,"恶意的操作可能导致您受到贵校教师的处理",-1)])),_:1,__:[5]}),t(ce,{class:"mt-4 rounded-xl",color:"warning",variant:"tonal",icon:"mdi-information"},{default:s(()=>[e[7]||(e[7]=x("p",null," 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 Classworks ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 Microsoft Edge 浏览器是最推荐的选择。 ",-1)),e[8]||(e[8]=x("p",{style:{color:"#666"}}," 上述浏览器商标为其所属公司所有,Classworks™ 与上述浏览器所属公司暂无竞争关系。 ",-1)),e[9]||(e[9]=x("br",null,null,-1)),t(g,{href:"https://www.microsoft.com/zh-cn/windows/microsoft-edge",target:"_blank",color:"warning",variant:"tonal",class:"text-none rounded-xl","append-icon":"mdi-open-in-new"},{default:s(()=>e[6]||(e[6]=[u("下载 Microsoft Edge(微软边缘浏览器)")])),_:1,__:[6]})]),_:1,__:[7,8,9]})]),_:1})]),_:1})]),_:1}),t(ee,{value:"server"},{default:s(()=>[t(r,{border:"",loading:i.loading.server,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"]),t(w,{border:"",class:"mt-4"})]),_:1}),t(ee,{value:"namespace"},{default:s(()=>[t(c,{border:"",loading:i.loading.namespace,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(ee,{value:"share"},{default:s(()=>[t(V,{border:"",class:"mt-4"})]),_:1}),t(ee,{value:"refresh"},{default:s(()=>[t(k,{border:"",loading:i.loading.refresh,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(ee,{value:"edit"},{default:s(()=>[t(C,{border:"",loading:i.loading.edit,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(ee,{value:"display"},{default:s(()=>[t(O,{border:"",loading:i.loading.display,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(ee,{value:"theme"},{default:s(()=>[t(N,{border:"",loading:i.loading.theme,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(ee,{value:"student"},{default:s(()=>[t(Q,{border:"","is-mobile":d.isMobile},null,8,["is-mobile"])]),_:1}),t(ee,{value:"randomPicker"},{default:s(()=>[t(te,{border:"","is-mobile":d.isMobile},null,8,["is-mobile"])]),_:1}),t(ee,{value:"developer"},{default:s(()=>[t(le,{border:"",title:"开发者选项",icon:"mdi-developer-board"},{default:s(()=>[t(Y,null,{default:s(()=>[t(L,null,{prepend:s(()=>[t(y,{icon:"mdi-code-tags",class:"mr-3"})]),append:s(()=>[t(mt,{modelValue:i.settings.developer.enabled,"onUpdate:modelValue":e[1]||(e[1]=A=>i.settings.developer.enabled=A),density:"comfortable","hide-details":"",onChange:o.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:s(()=>[t(U,null,{default:s(()=>e[10]||(e[10]=[u("启用开发者选项")])),_:1,__:[10]}),t(J,null,{default:s(()=>e[11]||(e[11]=[u("启用后可以查看和修改开发者设置")])),_:1,__:[11]})]),_:1})]),_:1})]),_:1}),t(se,{border:"",loading:i.loading.developer,onSaved:o.onSettingsSaved},null,8,["loading","onSaved"]),i.settings.developer.enabled?(h(),b(z,{key:0,border:"",class:"mt-4 rounded-lg"},{default:s(()=>[t(q,{class:"d-flex align-center"},{default:s(()=>[t(y,{icon:"mdi-cog-outline",class:"mr-2"}),e[12]||(e[12]=u(" 所有设置 "))]),_:1,__:[12]}),t(be,null,{default:s(()=>e[13]||(e[13]=[u(" 浏览和修改所有可用设置 ")])),_:1,__:[13]}),t(K,null,{default:s(()=>[t(Z,{onUpdate:o.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})):F("",!0),i.settings.developer.enabled?(h(),b(ke,{key:1,cols:"12"})):F("",!0)]),_:1}),t(ee,{value:"about"},{default:s(()=>[t(ue),t(W,{border:"",class:"mt-4"})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(X,{ref:"messageLog"},null,512)])}const ii=H(Hs,[["render",Rs]]);export{ii as default};
|